XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
pAxsIs

offline
Опыт: 2,389
Активность:
Локальная переменная
Можно ли как нибудь использовать локальную переменную, включенную через cs, в триггерах не используя cs.
Т.е. Допустим я объявил локалку и хочу использовать в формулах триггеров например дамаг.
Старый 27.09.2012, 21:24
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
приравнивать значение локалки к глобалке и юзать уже глобалку в формулах
Старый 27.09.2012, 21:27
влад10011

offline
Опыт: 2,337
Активность:
никак(в ГУЙ не предусмотрены локальные переменные)
а в формулах:
Делаешь глобальную(любую где ты будешь делать свою формулу)
и через cs пишешь например:
udg_Formula=150+(5*GetUnitLvl(u)) (тут можно было поставить вместо u локального юнита и потом обнулить, чтобы ссылка на него не потерялась, например local unit u=GetSpellAbilityUnit())
udg_ приставка к глобальным переменным сделанных в ГУЙ(в редакторе переменных)

Отредактировано влад10011, 27.09.2012 в 21:35.
Старый 27.09.2012, 21:29
pAxsIs

offline
Опыт: 2,389
Активность:
Азы то я знаю) просто если локальную приравнивать к глобальной разве не может быть такого что при не однократном использовании триггера локальная успеет присвоить 2 разных значения к глобальной и в результате ничего не получиться...
Старый 27.09.2012, 21:36
Doc

offline
Опыт: 63,163
Активность:
В UMWSE можно. Без него нет.
Старый 27.09.2012, 21:37
влад10011

offline
Опыт: 2,337
Активность:
Цитата:
Сообщение от pAxsIs
присвоить 2 разных значения

Локальная переменная не может перезаписываться(только в пределах функции, а в случае гуй- триггере(исключение выбор юнитов) ) после выхода из функции(она уже не нужна) перезаписывается.
при каждом вызове триггера создаётся новая локальная переменная
вот на статью Сергея и Адольфа там всё понятно описано
http://xgm.guru/p/wc3/jass_introduction
http://xgm.guru/p/wc3/ex_jass
Старый 27.09.2012, 21:43
pAxsIs

offline
Опыт: 2,389
Активность:
Еще сюда же вопрос... Даже если делать все на jass, то локальная переменная как я понимаю действует в 1 триггере, но если мы его используем снова, то там новая локальная переменная не связанная с прошлой, а мне нужно, чтобы когда я юзал скил то противник получал эффект. Если на нем его небыло то он получает такой-то урон, если есть то ему сносить урон в 2 раза больше и в локальную переменную добавляется +1, она была равна 0. И так с каждым разом в дамаг больше, то есть формула такова. Количество_ударов*урон_способности_за_удар + (Количество_ударов*урон_способности_за_удар*0.2 в течении 5 сек)...
pAxsIs добавил:
Локальная переменная не может перезаписываться
Так я говорю что не она перезапишется а глобальная которая получит значение от двух локальных, почитай внимательнее то что. Я написал.
Старый 27.09.2012, 21:52
влад10011

offline
Опыт: 2,337
Активность:
для этого есть глобальная переменная чтобы сохранять значения...
локальные переменные нужны для мгновенных действий и оптимизации

влад10011 добавил:
Цитата:
Сообщение от pAxsIs
Так я говорю что не она перезапишется а глобальная которая получит значение от двух локальных, почитай внимательнее то что. Я написал.

локальная никак не может присвоить 2 значения сама по себе если ты этого не сделал сам(в этом случае она перезакрепиться и как я уже сказал только в пределах 1 функции)
Старый 27.09.2012, 21:56
pAxsIs

offline
Опыт: 2,389
Активность:
Если можно то скиньте пример той формулы которую я написал... Тогда станет гораздо понятней
P.s. Формула идет к огненным стрелам чтобы складывать дамаг от них...
Старый 27.09.2012, 21:58
влад10011

offline
Опыт: 2,337
Активность:
короче у меня бошка не варит сейчас прочитай те статьи которые я тебе дал, там всё написано
если никто не даст пример завтра сделаю тебе
Старый 27.09.2012, 21:58
pAxsIs

offline
Опыт: 2,389
Активность:
Я уже писал выше что я азы знаю, т. е. Читал эти статьи.
Старый 27.09.2012, 21:59
adic3x

offline
Опыт: 108,439
Активность:
Даже если делать все на jass, то локальная переменная как я понимаю действует в 1 триггере, но если мы его используем снова
Нет, она существует только в одной функции. И при этом, при каждом новом вызове функции будет созданы новые переменные.
Старый 27.09.2012, 23:10
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт: 8,073
Активность:
pAxsIs:
Т.е. Допустим я объявил локалку и хочу использовать в формулах триггеров например дамаг.
((код jass
local real dmg = 50+50*I2R(GetUnitAbilityLevel(caster,'A00A')) задаёшь урон нужный в кс
set udg_dmg = dmg в кс же приравниваешь локалку к глобалке
call DamageTarget(caster,target,udg_dmg,true,false,null,null,null) ну в гуи наносишь урон от глобалки
set udg_dmg = .0 обнулили глобальную
))
Вроде этот вариант в 95% случаев муи. А если без глобалок, то на все 100.
Старый 28.09.2012, 13:15
adic3x

offline
Опыт: 108,439
Активность:
set udg_dmg = .0 обнулили глобальную
Если коротко - обнулять int, real, bool и string не нужно. MUI тут вообще не причем.
Старый 28.09.2012, 14:07
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
pAxsIs:
Локальная переменная
Можно ли как нибудь использовать локальную переменную, включенную через cs, в триггерах не используя cs.
Т.е. Допустим я объявил локалку и хочу использовать в формулах триггеров например дамаг.
Используйте глобалки, один фиг скорость работы одинаковая, более того, хотя бы хендлы сеить не будете
Старый 28.09.2012, 14:45
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт: 8,073
Активность:
ADOLF:
set udg_dmg = .0 обнулили глобальную
Если коротко - обнулять int, real, bool и string не нужно. MUI тут вообще не причем.
а ну хотя да можно и не обнулять
Старый 28.09.2012, 15:10
влад10011

offline
Опыт: 2,337
Активность:
Цитата:
Сообщение от ADOLF
Если коротко - обнулять int, real, bool и string не нужно. MUI тут вообще не причем.

а короче всё что не имеет тип хэндел
Старый 28.09.2012, 16:11
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт: 8,073
Активность:
ADOLF:
Если коротко - обнулять int, real, bool и string не нужно. MUI тут вообще не причем.
ну я вообще в коде не обнуляю, но вдруг у автора ещё глобалка где-то юзается одна и та же, тогда стоит обнулить скорее всего
Старый 28.09.2012, 18:14
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
asesmo, ну это как написан код, может быть такой баг, но перед использованием переменную так то можно проверить if then else... или просто всегда приравнивать новому рельно существующему объекту.... (если это переменная ссылочного типа)
quq_CCCP добавил:
влад10011, некоторые хендлы тоже обнулять не нид, а именно player, force...
расспросите ADOLF, то все перечислит, которые не нужно обнулять/
Старый 28.09.2012, 18:38
adic3x

offline
Опыт: 108,439
Активность:
Я скажу по секрету, бета сЖасса, та, что на гуглокоде вообще творит чистую магию: обнуляет сама все, что нужно.
Старый 28.09.2012, 23:08
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 20:41.