mm0zzy
offline
Опыт:
1,256Активность: |
Рандомные области
Здравствуйте! В общем, я когда то же задавал уже этот вопрос: "как сделать чтобы при перемещении юнита он попадал в случайную область?" и как я нашел к нему тогда решение:
Сделал это так:
-Сначала добавил все области в массив; -Создал переменную типа "Целочисленная" дал ей преимущество (значение) "случайное целое число диапазоне от 1 до 12"; -И сделал триггер, что каждые 0,50 сек. будет устанавливаться все выше указано. Потом при создании или перемещении юнита делал это так Пример: Создать 1 Тиренд для "Выбраный игрок"( или игрок, без разницы) в центр, (переменную типа область, с масивом указанного рандома). лицом там к чемуто и тд.
В общем к чему веду....Как сделать на гуи, чтобы перемещенный юнит, уже ниходящийся в области, в которую попал рандомно, нельзя было переместить рандомно еще 1 или больше героев пока сам герой не выйдет из области.
Если есть у кого время все сделать, и выложить на гуи, буду очень признателен!! Прошу не писать типа "библиотеку скорпа" или что то еще, перед написанием темы перелазил по поиску и пересмотрел. Если чесно не очень "прохаванный в Jass", понять могу только если хорошо прокомментировано... |
14.11.2012, 01:39 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MicroElf
offline
Опыт:
4,288Активность: |
При перемещении проверять наличие юнитов в области.
Вообще по сабжу я бы делал так:
Занести области в массив Перед тем как нужно переместить кого-то в случайную область, давай созданной для этих целей целочисленной переменной значение от 1 до n (где n очевидно число областей) После чего перемещать юнита в область по этому числу с проверкой условия на наличие юнитов. При присвоения значение переменной можно сразу проверить условие и при необходимости заново присвоить ей другое значение.
Если хочется сделать совсем хорошо, то надо изначально исключить все области, в которых есть юнит. Т.е. чтобы не переприсываивать в некоторых случаях переменной значение по 10 раз. Но это чуть сложнее, и если вероятность и количество "занятых" областей мало, то можно забить.
MicroElf добавил: Если не получится, выкладывай скрин ГУИ, я помогу довести до ума. Задача простая и на ГУИ точно решается без проблем. |
14.11.2012, 10:46 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
в данном конкретном случае проще при телепорте проверять нет ли когонить в области и если есть вызывать рандом еще разок, шанс что многократно выпадет область в которой ктото есть стремится к нулю. |
14.11.2012, 10:54 | #3
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DemoN2099
annihilator
offline
Опыт:
4,418Активность: |
Ты хочешь, чтобы триггер не думал, что герой, телепортировавшись в область, вошёл в неё для телепорта? Область для последующих телепортаций свободна? (вышел - зашёл - телепорт) lol'd |
14.11.2012, 11:08 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
online
Опыт: отключен
|
Всем должно быть известно, что при определённых условиях вполне может выпасть много раз подряд. А вот если бы вы использовали библиотеку скорпа, то ... добавляешь это в нестандартный код карты
смотри, я даже пример сделал:
дальше вызываешь что-то вроде
и не надо НИЧЕГО проверять, он не будет повторяться |
14.11.2012, 12:21 | #5
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
mm0zzy
offline
Опыт:
1,256Активность: |
ScorpioT1000, закинул в нестандартный код карты, что-то нужно изменять в самом коде??
Так то все сделал, вот только там получается: call ClearRandomIntMem() - это очистить (обнулить как я понял) а set udg_RandomR = GetRandomIntMem(0,9) где 0 и 9 это значение между которым будет происходить шанс на выпдение того или иного числа так? ну как примерно случайное целое число в дипазоне...?? Вот только у меня выметает чегото много ошибок... |
14.11.2012, 19:32 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
online
Опыт: отключен
|
ScorpioT1000 добавил:
да, границы включительно |
14.11.2012, 19:51 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
mm0zzy
offline
Опыт:
1,256Активность: |
ScorpioT1000, вродебы все сдлелал, и jngp поставил и код вроде бы нормальный, не вылетает ошибки...хз все равно в меню кидает, загрзка карты не происходит. Что может быть?
З.Ы. говорил что jasse не понимаю... |
14.11.2012, 20:15 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
влад10011
offline
Опыт:
2,337Активность: |
ScorpioT1000, А не легче сделать ему настройку под гуй в виде дефайна?
например никому из гуишников не нужна функция Min: define IMinBJ(i,ii)=GetRandomIntMem(i,ii) в гуй триггере: Переменная типа целочисленная Random Переменная типа область массив Rect От 1 до N делать действия: Set Variable: Random=Min(1,N) создать юнита в Rect[Random] |
14.11.2012, 20:25 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
mm0zzy
offline
Опыт:
1,256Активность: |
влад10011, тогда там только 1 область будет срабатывать, та, что указана самой первой, вроде бы... |
14.11.2012, 20:39 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
влад10011
offline
Опыт:
2,337Активность: |
Цитата:
цикл(да и с чего ты взял будет только 1вая если это рандом? Оо) |
|
14.11.2012, 20:57 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
mm0zzy
offline
Опыт:
1,256Активность: |
влад10011, не знаю так ли |
14.11.2012, 21:02 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
online
Опыт: отключен
|
|
14.11.2012, 21:03 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
mm0zzy
offline
Опыт:
1,256Активность: |
ScorpioT1000, так я его удалял перед установкой jngp, и редактировал файл вихак луа.
Я вообще понять не могу ничего...скрипт кинул в нестандартный код карты, все сделал как надо, перед перемещением героя, точнее в тригере...вот что и как у меня выходит и все триггеры что и как: |
14.11.2012, 21:14 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
влад10011
offline
Опыт:
2,337Активность: |
ScorpioT1000, Ну просто ему так будет удобней.
mm0zzy, так, но для начала: 1) сделай так чтобы система ScorpioT1000 работала(разберись с JNGP) 2)в самый вверх его кода вставь строчку: define IMinBJ(i,ii)=GetRandomIntMem(i,ii) 3)И сделай как ты делал на скрине можно сразу при создании указывать в качестве индекса массива Min, я это вообще просто как пример привёл |
14.11.2012, 21:16 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
mm0zzy
offline
Опыт:
1,256Активность: |
|
14.11.2012, 21:17 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
влад10011
offline
Опыт:
2,337Активность: |
mm0zzy, Судя по подсветке кода, у тебя выключен синтаксис vJass, поставь галочку в "Enable JassHelper" и он заработает.
Функция Min не даёт рандом!!! Я предложил замену CS вставок на Min(путём define) |
14.11.2012, 21:21 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
online
Опыт: отключен
|
все верно,но у тебя видимо жнгп не запустился. ты точно запускаешь New Gen WE.exe ? |
14.11.2012, 21:22 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
mm0zzy
offline
Опыт:
1,256Активность: |
ScorpioT1000, нет то был через обычный, щяс залю скрины из jngp
mm0zzy добавил: просто по сути если есть ошибки в коде то он ответственно должен показать где именно ошибка а он просто кидает в меню варика. Если удалить код то загружает карту...без проблем. |
14.11.2012, 21:27 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
online
Опыт: отключен
|
обычный не сможет скомпилировать, т.к. код на vJass |
14.11.2012, 21:30 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|