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

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

Ответ
 
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
статья, создаем способность на хеше

Шаг I

сначала создаем триггер, называем его как хотим и конвертируем в Jass. все стираем и вставляем
» код
function AbilityIdMath takes nothing returns boolean
    return GetSpellAbilityId() == РАВ КОД СПОСОБНОСТИ
endfunction

function OnSpellCast takes nothing returns nothing
endfunction

function InitTrig_<имя> takes nothing returns nothing
    local trigger t = CreateTrigger()
    
    call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SPELL_EFFECT)
    call TriggerAddCondition(t, Condition(function AbilityIdMath))
    call TriggerAddAction(t, function OnSpellCast)
    
    set t = null
endfunction
для того, чтобы узнать рав-код способности, нажми в РО, в разделе способности `Ctrl + D`

Шаг II

Добавляем глобальную переменную типа hashtable с произвольным именем и инитиализируем ее гденибудь ТОЛЬКО 1 РАЗ!
таким кодом:
set <name> = InitHashtable()
блин дальше лень писать..
короче надо тебе установить Jass New Gen Pack, почитать статьи про оптимизацию и
делать крутые абилки
Старый 13.05.2010, 18:59
BesitzeRuf

offline
Опыт: 560
Активность:
у меня установлен модиффицированный JNGP
BesitzeRuf добавил:
и все же, кто-то сказал куча утечек, где они???
Старый 13.05.2010, 21:49
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
во-первых: никогда не юзай точки (location), так как они кривые, они нужны в некоторых случаях, для отловли z террайна, но это другое дело. прекрасная замена им - это координаты икс и игрек (x/y)
вот нашел пару статей, почитай, про формулы передвижения по им. сначала это кажется сложным, но потом будешь опытным и будешь покланяться им.
так же, с помощью JNGP, при наведении на BJ функцию (красный текст, по дефолту) и нажатии ctrl + лкм, то он показывает ее начинку, и с помощью этого можно спокойно оптимизировать код.
+ для оптимизации кода, полезно установить парсер адика, при добавлении некоторых библиотек, с помощью include, он автоматически избавляется от большинства плохих вещей.
чтоб меньше лагало, используйте меньше вызовов одной и тойже функции, например при применении способности, кастер - GetTriggerUnit(). тебе например нужно посчитать дамаг, который надо будет нанести кому-то нужен уровень абилки. GetUnitAbilityLevel(GetTriggerUnit(),<raw>) но, если у тебя уже вызывалась функция GetTriggerUnit() то будет снова тратиться время на обращение к ней. лучше один раз вызвать ее, занеся ее в локалку вот так: local unit c = GetTriggerUnit() и уже в последующих случаях делать вот так: GetUnitAbilityLevel(c,<raw>)
Старый 13.05.2010, 23:10
BesitzeRuf

offline
Опыт: 560
Активность:
спасибо, учту)) , я склоняюсь к векторам все таки... для перемещения )
Старый 13.05.2010, 23:18
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
BesitzeRuf:
спасибо, учту)) , я склоняюсь к векторам все таки... для перемещения )
правильно делаешь, это я то нуб, по поляркам все двигаю. будущее в векторах, так держать
Старый 13.05.2010, 23:27
Ответ

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

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

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

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



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