denonlink
offline
Опыт:
1,112Активность: |
Multiple Functions на JASS (unit group/for each integer)
У меня возникла проблема.
Создаю спелл, который будет в течении десяти секунд демажить всех окружающий врагов раз в секунду. На триггерах все работает. Код:
Все это в лупе 10 раз с задержкой 1 секунду. Работает. Решил испробовать локальные переменные. Код:
Работает. В локальной переменной u теперь хранится наш кастинг юнит. Теперь самое сложное - использовать его в самом триггере.ъ Я использую WEU, всемто Casting Unit использую Advanced - JASS code(u). в обычных действиях все всегда отлично работало, но в цикле Pick every unit появляется ошибка. Я пока в Jass'е не мастер, но конвертировал триггер в текст. Цикл Pick every unit описывается как отдельная функция, к которой обращается основная: Код:
И в этой функции используется переменная u. Но она локальная. и в этой функции не работает. Я знаком с программированием, программировал в delphi и понимаю суть проблемы, но не знаю как это реализовать на Jass'е. Я так понимаю что нужно создать функцию с внутренними параметрами. Как это сделать? Как реализовать? Что сделать чтобы все нормально работало? Подскажите, желательно готовый код(в ответ на форуме) и обьяснения что к чему. И еще: 1. Триггер - If/then/else - multiple functions - как эти multiple functions сделать на джассе, сразу несколько условий(действия и else я разобрался). 2. Как описать вот эти два условия на конкретном примере? Причем как впихнуть второе условие - я с ним долго голову ломал? Я видел какое оно в джасс-коде? Как return ((Picked unit) is A structure) присвоить в какую-нить болеан(естественно)-переменную? Код:
3. loop - endloop(или как там его?:) Как описывать условия эндлупа? Допустим при а=10? или если булеан-переменная равна false(если юнит умер - прекратить цикл)? 4. Что значит takes nothing returns nothing? Какие варианты кроме этого могут быть при описании функции? takes - это параметры функции, которые берутся извне? returns - это чтобы функция возвращала значение? Как это описать в функции чтобы эти takes и returns работали как положено? Все напишите на джассе, пожалуйста, я думаю что это поможет многим, не только мне, разобраться с функциями. Заранее спасибо. |
27.02.2008, 11:12 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
Код:
|
27.02.2008, 11:50 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
denonlink, советую в первую очередь прочитать Осваиваем JASS, для того, чтобы получить основные знания по джассу.
Насчет переноса значений локальных переменных в другие функции - Game Cache + JASS |
27.02.2008, 11:54 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
denonlink
offline
Опыт:
1,112Активность: |
ADOLF
А можно первый и второй пункты немного обьяснить - я не совсем понял... |
27.02.2008, 12:11 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,747Активность: |
1)
Код:
2) Нативе функция Код:
эта функция возвращает бул. Первый параметр это юнит которого проверяем, а второй пораметр это любая из этих переменных Код:
|
27.02.2008, 14:13 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
df Hunter
Нападатель
offline
Опыт:
5,749Активность: |
Код:
при использовании сравнивать с true обязательно, то есть: Код:
|
27.02.2008, 16:26 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DFlyer
<3 MJ
offline
Опыт:
44,079Активность: |
df Hunter
Обязательно? Почему? |
27.02.2008, 16:38 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
denonlink
offline
Опыт:
1,112Активность: |
Jon
elseif так и пишется вместе? и хватит ли одного endif на все if? я еще: как вот этот бул, который возвращает функция constant native IsUnitType takes unit whichUnit, unittype whichUnitType returns boolean записать в какую-нить переменную? мож я торможу но вре равно не понял) |
27.02.2008, 17:04 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
df Hunter
Нападатель
offline
Опыт:
5,749Активность: |
Цитата:
баг такой, если будешь сравнивать без тру, то есть if IsUnitType(u,type) then то он false возвращает |
|
27.02.2008, 17:21 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DFlyer
<3 MJ
offline
Опыт:
44,079Активность: |
denonlink
elseif пишется вместе. endif - всегда один. Чтоб записать в переменную: Код:
|
27.02.2008, 17:32 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
denonlink
offline
Опыт:
1,112Активность: |
О. Вот так понятно сразу. Огромное спасибо, буду делать спелл и читать мануалы) Скоро и скришоты карты покажу:) Скучно точно не будет ;) |
27.02.2008, 17:39 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
df Hunter
Нападатель
offline
Опыт:
5,749Активность: |
Цитата:
Цитата:
!!! |
||
27.02.2008, 18:52 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|