Зевс
Адская Зверюга
offline
Опыт:
152,154Активность: |
Переход с функции на функцию
Мучаю Джасс... Вопрос: как правильно переносить уже заданные переменные из одной функции в другую без udg_..., RB, SCV. Листал мануал джассовский но там как-то вокруг да около...
Текст в функциях используется для проверки работоспособности триггера. Код:
з.ы: еще каким образом можно повторить функцию, скажем WSfunc2. Я видел во многих джасс триггерах есть return (из гуи Skip Remaning Actions)... хз как работает. В примере показан вариант того как циклю я хD научите правильно (тут вроде тоже можно без таймеров, лишних триггеров, RB и SCV) |
11.08.2008, 18:43 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Зевс скажи чего именно ты хочеш добится...
пободный вариант в корне не верен, и вообще советую избегать рекурсию с ваитами по поводу смысла кода - непойму, он передает ws_cu и ws_tu только раз, в функции WSfunc2 они обнуляются и дальше рекурсируют null'ы, зачем? в джазе есть правило - необходимо(!).... э нет... нельзя(!), использовать обьявленые переменые без их инициализации, ты обьявил переменные ws_cup и ws_mtur, но не дал им начального значения, и используеш как параметры, это приводит к крашу вара совет №1 неиспользуй бж функции, пользуйся програмой JassCraft, она предоставляет удобный интерфейс просмотра бж функций и заменить или понять чтонибудь не составляет труда совет №2 пока это не вошло в привычку, не используй прификсы к локальным переменых хорактеризующих их область применения, это локальные переменые, и имена у них тоже должны быть локальными (это просто совет, поступай кк хочеш) совет №3 неиспользуй точки (location), используй напрямую координаты, почти к каждой функции работающей на точках есть аналог которая работает с их координатами совет №4 задавай эти вопросы в джас разделе Цитата:
return - это просто выход из функции, если функция ничего не возвращает то выход делается просто - return, если же чтото возвращает то при выходе надо обязательно чтото вернуть, например если возвращает integer то выход - return 0 Отредактировано Jon, 11.08.2008 в 19:09. |
|
11.08.2008, 18:57 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
Зевс, то, как ты делаешь рекурсию, заставляет меня выглядеть немного глупым ^_^
В коде есть логические ошибки. Как переносить без вышеуказанного - никак, так или инчае придется использовать либо глобальные переменные, либо РБ, либо и то, и другое. Как вариант, можно аттачить структуру на таймер и делать дела. |
11.08.2008, 18:59 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Зевс
Адская Зверюга
offline
Опыт:
152,154Активность: |
Ну вот по мануалу переносят.
Код:
2Jon: по поводу смысла кода... суть не в том... мне главное было перенести, а там не важно. Для этого я и втыкал дисплей текст, чтобы поглядеть какой я криворукий( |
11.08.2008, 19:14 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Зевс ну все правельно, ты обьявил функцию Bar которая принимает пораметр типа unit
ну и гдето из другой части кода (ниже) при вызове этой функции передаеш этот пораметр в чем проблема? |
11.08.2008, 19:18 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Зевс
Адская Зверюга
offline
Опыт:
152,154Активность: |
Пошел метод тыка... текст отображается но походу переменные не приравнялись ^^
Код:
|
11.08.2008, 19:51 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
чет фигня какаято, короче если я правельно понял смысл всего этого, и если _допустить_ что я поддержываю идею о рекурсии с ваитами, то лучше так:
Код:
|
11.08.2008, 20:04 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Зевс
Адская Зверюга
offline
Опыт:
152,154Активность: |
Спасибо, Jon заработало хD |
11.08.2008, 20:54 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Цитата:
сабж, в последних ген паках с подсветкой оно сразу подсвечивает бж красным, натив таким приятно гламурным фиалетавым, так что сраху бж нехочеться юзить) Цитата:
я бы не был так катигоричен (хотя и поступил бы также, т.е. минималистические имена рулят) но опять же главное в именах меток - что бы они были понятны и удобны тому, кто работает с кодом Цитата:
нету только аналогов GetSpellTargetLoc & GetLocationZ(location) Цитата:
мне сама такая идея противна (ну насчет рекурсии и вейтов) имхо даже цикл с вейтом бмл бм не таким уродливым (а поскольку циклы с вейтами вселенское зло то описываемый код ммм, даже слов нету какое зло) почему не юзать нормально таймер?! |
||||
12.08.2008, 11:40 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Зевс
Адская Зверюга
offline
Опыт:
152,154Активность: |
"почему не юзать нормально таймер?!" будет много лишних букав...))
Правда хз баг возник... Код:
|
12.08.2008, 19:20 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Цитата:
ктомуже, много бкф не будет, там несколько строк добавятся и все... проверка на негероя (not IsUnitType(ws_tu, UNIT_TYPE_HERO)) IsUnitDeadBJ(ws_tu) - бж о чем реч шла выше, заменить на GetUnitState(ws_tu, UNIT_STATE_LIFE) <= 0 |
|
12.08.2008, 20:01 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Зевс
Адская Зверюга
offline
Опыт:
152,154Активность: |
Цитата:
дык а я то кто сейчас... джасс я только начал учить... ;) про героя... мне нужно чтобы оно выполнялось и с героями и не с героями... при этом если я кастую первый раз на героя, то все выполняется нормально, но если второй раз - то всесбрасывается, хотя при этом я могу кастовать на обычных юнитов и все будет происходить как надо.(( GetUnitState(ws_tu, UNIT_STATE_LIFE) <= 0 ставил... даже ставил GetUnitState(ws_tu, UNIT_STATE_LIFE) <= 0.50 ....... не работает(((((( Зевс добавил: Проверил текстом... у убитого Героя меньше 20 хп не бывает О_О |
|
12.08.2008, 20:49 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
Зевс, а ты когда дебаг вывод делал? При событии смерти юнита? Тогда понятно... Оно происходит немного раньше, чем отнимаются жизни.
В соседней теме я советовал использовать такую проверку мертовго/живого: Код:
|
13.08.2008, 19:13 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Зевс
Адская Зверюга
offline
Опыт:
152,154Активность: |
Цитата:
спс... то что нужно |
|
13.08.2008, 21:40 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|