Было бы неплохо перед показом кода расставить все отступы, ибо порой читать сложновато.
Однако я быстренько глянул и могу сказать, что код должен работать адекватно.
Но хочу придраться к самому созданию всплывающего текста. При каждом поднятии любого предмета будет создаваться этот текст (без записей и т.д.) и будет тупо висеть всю игру. Не проверял, действительно ли так, так что могу ошибаться. NekoriDes:
но показывает оба тексттага с варнингом.
А чего пишет то? Случаем не "Доступно с 0 уровня"?
Событие - Герой изучил способность
Условия - Изученная способность == нашей, И ( ее уровень == 7 или 14 или 21)
Действия - данные действия в этом вопросе.
ssbbssc, умничка, правильно пишет. Zhan10, тебе обязательно нужно делать расчеты в реальной, а потом переводить ее в целочисленную. Ибо с десятичными числами характеристики не желают работать.
И насчет бонуса... сия бонус добавляет % даже от предметов. И при каждом действии не учитывается прошлый бонус. К тому же если таких героев 3 или более они же тоже могут изучить сия способность и тут выйдет баг. Ибо каждый добавленный в группу прибавит процент к характеристикам. А это на 7 уровне у последнего изучившего способность героя будет 45% добавки к характеристикам.
Делай выводы и исправляй.
Вот ты блин... придрался к этому евенту... Пока не проверю лично, что лучше, я не признаю твою правоту.
И меня не евенты интересуют, а функции и их корешки...
Sucsonius: насколько понимаю ты редактируешь чужую карту и в ней создал своего героя. Дабы не мучаться с слк таблицами и с .j, пройдись прогой X-Deprotect да и редактируй в обычном редакторе, только я не помню как обратно слк таблицы в читабельный вид для РО зашаманить - поиск в твоем распоряжении.
Блин... я не противоречу, просто не так выражаю мысль и работу способности. Ошибка с моей стороны при которой ты не можешь понять, что мне действительно нужно.
Пробну еще раз...
SkillW_Func_Init - функция, что вызывается после создания героя. В ней:
временный отлов урона. пассивка многократного урона, триггер уничтожается после использования
SkillW_E_Func_Condition - функция, отлавливает использование способности. начало того, что мне желанно оптимизировать. SkillW_E_Func_Periodic - функция, что вызывается каждый период времени. SkillW_E_Func_AreaActions - функция, что отвечает за поиск цели. Эту же функцию мне хочется вызывать после нанесения урона. В ней:
Теперь разберу последнюю функцию, ибо без этого не понять основу моего выбора сия способа.
Первым делом функция срабатывает после того как цель способности (выбирается случайно в области действия) была атакована. Далее проверка на атакующего
local trigger tr=GetTriggeringTrigger()
local integer index=SkillW_E_Func_GetTriggerIndex(tr)
local unit u=SkillW_E__Unit[index]
local unit t=SkillW_E__Target[index]
...
if GetTriggerUnit()==t and GetAttacker()==u then
Т.е. проверяем наш герой ли атаковал.
Далее проверяем
if IsUnitType(t,UNIT_TYPE_HERO) then
атакованный герой?
Да.
Даем дополнительную атаку на один удар.
Нет
Даем способность, что уменьшает наносимый урон нашим Героем.
Далее...
call SetUnitAnimation( u, "slam" )
call TriggerRegisterUnitEvent( SkillW_E__Trigger[index], t, EVENT_UNIT_DAMAGED)
даем триггеру евент на отлов урона. После того как цель способности получит урон пойдет опять проверка на "вшивость"
local trigger tr=GetTriggeringTrigger()
local integer index=SkillW_E_Func_GetTriggerIndex(tr)
local unit u=SkillW_E__Unit[index]
local unit t=SkillW_E__Target[index]
...
elseif GetTriggerEventId()==EVENT_UNIT_DAMAGED then
if GetTriggerUnit()==t and GetEventDamageSource()==u and RegisterDamage then
извиняюсь за каламбур с названной переменной, ибо по началу я даже не знал как обозвать ее, а потом было лениво переименовывать
Если получивший урон и есть наша цель способности, нанесший урон и есть наш Герой, полученный урон не от способности, то
call DisableTrigger(tr)
set b=true
...
if b then
call UnitRemoveAbility(u,Custom_SkillW_Ability_E)
set STATS_UNIT=u
set STATS_VALUE=-SkillW_E__Bonus[index]
set STATS_ADDER=0
call TriggerEvaluate(gg_trg_Stats)
set SkillW_E__Target[index]=null
call DestroyTrigger(tr)
set SkillW_E__Trigger[index]=null
endif
Иными словами уничтожаем триггер и убираем доп. атаку и способность по уменьшению урона по не героям.
Надеюсь уже совсем хорошо пояснил, что за что отвечает. И понятно почему нужно отлавливать как атаку так и урон.
Теперь задача:
Как реализовать вызов функции SkillW_E_Func_AreaActions из функции SkillW_E_Func_TargetActions после уничтожение триггера в последней функции?
» WarCraft 3 / Почему появляется два тексттага?
Однако я быстренько глянул и могу сказать, что код должен работать адекватно.
Но хочу придраться к самому созданию всплывающего текста. При каждом поднятии любого предмета будет создаваться этот текст (без записей и т.д.) и будет тупо висеть всю игру. Не проверял, действительно ли так, так что могу ошибаться.
NekoriDes:
» WarCraft 3 / Просьба
» WarCraft 3 / Просьба
» WarCraft 3 / Не хочет в отряд
Условия - Изученная способность == нашей, И ( ее уровень == 7 или 14 или 21)
Действия - данные действия в этом вопросе.
И насчет бонуса... сия бонус добавляет % даже от предметов. И при каждом действии не учитывается прошлый бонус. К тому же если таких героев 3 или более они же тоже могут изучить сия способность и тут выйдет баг. Ибо каждый добавленный в группу прибавит процент к характеристикам. А это на 7 уровне у последнего изучившего способность героя будет 45% добавки к характеристикам.
Делай выводы и исправляй.
» WarCraft 3 / Не хочет в отряд
» WarCraft 3 / Способности и алгоритмы на заказ
» WarCraft 3 / Способности и алгоритмы на заказ
» WarCraft 3 / Способности и алгоритмы на заказ
Да и другим дадим поиграться.
» WarCraft 3 / Способности и алгоритмы на заказ
» WarCraft 3 / Способности и алгоритмы на заказ
Да и другим дадим поиграться.
» WarCraft 3 / Способности и алгоритмы на заказ
Да и другим дадим поиграться.
» WarCraft 3 / Способности и алгоритмы на заказ
Да и другим дадим поиграться.
За слишком много функций, дядьки, не ругайтесь.
» WarCraft 3 / В чем тут проблема?
Ошибка в
» WarCraft 3 / В чем тут проблема?
Однако советик: сделай лучше через цикл, так проще и меньше места занимает код.
» WarCraft 3 / Замена юнитов в таверне не работает должным образом
» WarCraft 3 / [JASS] Оптимизация
И меня не евенты интересуют, а функции и их корешки...
» WarCraft 3 / Замена юнитов в таверне не работает должным образом
» WarCraft 3 / [JASS] Оптимизация
SkillW_E_Func_Periodic - функция, что вызывается каждый период времени.
SkillW_E_Func_AreaActions - функция, что отвечает за поиск цели. Эту же функцию мне хочется вызывать после нанесения урона. В ней:
Первым делом функция срабатывает после того как цель способности (выбирается случайно в области действия) была атакована. Далее проверка на атакующего
Далее проверяем
Даем дополнительную атаку на один удар.
Даем способность, что уменьшает наносимый урон нашим Героем.
Если получивший урон и есть наша цель способности, нанесший урон и есть наш Герой, полученный урон не от способности, то
Надеюсь уже совсем хорошо пояснил, что за что отвечает. И понятно почему нужно отлавливать как атаку так и урон.
Теперь задача:
Как реализовать вызов функции SkillW_E_Func_AreaActions из функции SkillW_E_Func_TargetActions после уничтожение триггера в последней функции?
Ред. DazzleFirst
» WarCraft 3 / [JASS] Оптимизация
» WarCraft 3 / В чем моя ошибка?
Вот тебе примерчиГ:
» WarCraft 3 / Невидимые карты
Друг любезный, ищи проблему не в компьютере, а в себе.
» WarCraft 3 / Приказы
TAHK90:
TAHK90:
» WarCraft 3 / [JASS] Оптимизация