Mefist
Is it cocktail hour yet?
offline
Опыт:
98,240Активность: |
Даем басу под ДжаЗс
Стандартных функций ВЕ мне стало мало, и я полный оптимизма и решимости решил занятся изучением джасса.
Вопрос такой возник: можно ли использовать параметры функции в названии локальной переменной?
Тоесть примерно так: function XxX takes integer n returns nothing
set c(n) = GetLastCreatedUnit() и тд и тп endfunction Просто у меня несколько дамми кастеров, каждый в своей лок переменной с1 с2 с3 и тд, выполняют одни и теже действия, хотел так сократить код. Отредактировано Mefist, 08.12.2005 в 22:52. |
08.12.2005, 22:45 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,762Активность: |
Что-то не разу не видел, да и фичу не понял, если в С такого нет, то в Жассе и подавно... |
08.12.2005, 23:45 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sergey
Старейший
offline
Опыт:
43,563Активность: |
Mefist, некорректно ставишь вопрос. Не понимаю, что ты имеешь ввиду.
Переменная есть переменная. Ее название нужно только для того, чтобы к ее содержимому можно было обратиться. Больше с названием ничего делать нельзя.
В твоем примере вообще нету локальных переменных, а c(n) - я вообще не понял, что это такое. То ли массив, то ли функция... |
09.12.2005, 15:39 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Mefist
Is it cocktail hour yet?
offline
Опыт:
98,240Активность: |
Не привык я еще ко всему этому ...
Это я написал функцию изковерканную и не полною Вообщем так: у меня есть 4 лок переменные: c1 c2 c3 c4. Можно ли сделать так, чтобы цифра ставилась в зависимости от аргумента? Тоесть, если аргумент 1 была переменная с1, если 2 - с2 и тд. Только не if/then |
09.12.2005, 15:45 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
tysch_tysch
Работаем
offline
Опыт: отключен
|
аргумент чего? Если я правильно понял, то в данном примере : c(n) у тебя н "аргумент" массив или if\then, других вариантов нет интересно что я такой вопрос ставил года полтора назад. только про названия регионов=) |
09.12.2005, 15:50 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sergey
Старейший
offline
Опыт:
43,563Активность: |
Mefist, я понял о чем ты. Нет, такого нельзя. В лучшем случае, можно обращаться к функции по имени, да и то только в некоторых случаях.
Проще сделать локальный массив с b и в зависимости от переменной i обращаться к c[i] |
09.12.2005, 16:12 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Mefist
Is it cocktail hour yet?
offline
Опыт:
98,240Активность: |
Эм, а как массив создать? И где есть список функций? В Blizzard.j? |
09.12.2005, 16:22 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sergey
Старейший
offline
Опыт:
43,563Активность: |
Блин, кому я статьи писал? :) Там все это есть. local array integer c
c[1] c[2] c[3] ... Целую кучу переменных с индексом. |
09.12.2005, 16:26 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Mefist
Is it cocktail hour yet?
offline
Опыт:
98,240Активность: |
сенкс, я только первую половину статьи прочитал =) |
09.12.2005, 17:10 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Iron
Листовой
offline
Опыт:
23,587Активность: |
Цитата:
Насколько я понял, ты несовсем понимаешь что такое локальная переменная. Если у тебя есть функция с локальной переменной, то при 2-ом 3-ем и т.д. запусках функции будет создаваться новая C, причем если 2-ой 3-ий и т.д. запуск функции будет производится еще до завершения работы функции предыдущих запусков, то всеравно C каждого запуска будут не равны. Локальная переменная она на то и локальная, чтобы работать в пределах одного запуска функции, а на все остальное ей начхать. А если ты имел ввиду, что тебе нужно в одной функции создать N-ное число локальных переменных, то лучше делать не одной функцией, а разбить на 2-е, тогда 1-ая будет получать число N и запускать 2-ую N раз, причем сделать так, чтобы на первый запуск она передала 2-ой функции 1-ого кастера, на 2-ой второго, ... ,на N-ный N-ного. И все будет тип-топ. PS: Если я просто чего-то не понял, то не обижайся. |
|
09.12.2005, 17:13 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Mefist
Is it cocktail hour yet?
offline
Опыт:
98,240Активность: |
Да не, это я понимаю, там другая фигня была. Щас уже подругому думаю сделать
Mefist добавил: Хм, а что это за ошибка? Ругается на строки объявления переменной в Custom Script Code function FNCast takes nothing returns nothing local array integer c local unit target endfunction Говорит: Expected a reserved type or handle type |
09.12.2005, 20:00 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
exploder
iOS zealot
offline
Опыт:
19,394Активность: |
Насчет первого вопроса:
такое есть в Pascal - работа с пееременной "по адресу" local integer array а не наоборот |
09.12.2005, 21:54 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Mefist
Is it cocktail hour yet?
offline
Опыт:
98,240Активность: |
С этим разобрался, но чертов скрипт всеравно не хочет нормально работать :) Хорошее начало.
Такой спелл: Не геройский, 3 уровня. Кастуешь пустышку, и на <уровень+1> юнитов кастуется фрост нова, если цель простой юнит, то он умирает полюбому, если герой - только наносятся повреждение. Делал так: Отлавливаешь каст, в переменную группа юнитов заносятся все потенциальные жертвы, поочереди создается <уровень+1> дамми кастеров, каждый выбирает себе цель, кастует нову и эта цель убирается из группы (чтобы несколько кастеров не выбрали одну и туже цель). При касте новы негерои убиваются. Сам код Код:
На первом уровне все работает как часы, а на втором и третем создаются то 4 то 3 то 2 кастера, раз на раз. В чем проблема? |
10.12.2005, 00:50 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,762Активность: |
советую еще добавить функцию DestroyGroup куда надо
в структурах Код:
не обязательно писать else по сабжу - попробуй заносить GetSpellAbilityUnit() в переменную в самом начале триггера - ибо во время выполнения она может измениться, то же и с GetSpellAbilityId() - кажется трабла именно в этом, если не получится, кидай мапу, проверим вместо Код:
лучше писать Код:
|
10.12.2005, 02:48 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Mefist
Is it cocktail hour yet?
offline
Опыт:
98,240Активность: |
Епрст, там такая тупая ошибка, я просто забыл для для 2 и 3 юнита действие создания кастера. |
10.12.2005, 13:53 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Mefist
Is it cocktail hour yet?
offline
Опыт:
98,240Активность: |
А как правильно оформлять Conditions And?
Я наверно тупой, но в BJ и CJ я просто ничего не понимаю |
30.01.2006, 18:42 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
vlad_C0M
Босс DarkSkyTeam
offline
Опыт:
10,459Активность: |
держи , возможно это писалось откровенно мне. Но думаю ты найдешь там некоторую систематизацию знаний в джасс.
|
31.01.2006, 06:26 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Mefist
Is it cocktail hour yet?
offline
Опыт:
98,240Активность: |
это все я читал встатье |
31.01.2006, 16:25 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Mefist
Is it cocktail hour yet?
offline
Опыт:
98,240Активность: |
тук тук тук, ответте плз :) |
31.01.2006, 22:35 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
vlad_C0M
Босс DarkSkyTeam
offline
Опыт:
10,459Активность: |
if (true==true and true==true)
--- Так и будет : Суффикс "and" - Суффикс or , так и звучит : "or" vlad_C0M добавил: Mefist , это есть кстати в Серегиной статье. |
02.02.2006, 12:31 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|