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