Как насчет юзать её нормальную версию из новых сборок мемхака?
function StartAbilityCooldown takes unit whichUnit, integer abilityId, real cd returns boolean
local integer pAbility = 0
local integer offset1
local integer offset2
local boolean bRes = false
if GetUnitAbilityLevel( whichUnit, abilityId ) == 0 or cd == 0.00 then
return bRes
endif
set pAbility = GetUnitAbility( whichUnit, abilityId )
if pAbility < 1 then
return bRes
else
set offset1 = RMem( pAbility + 0x134 )
set offset2 = RMem( pAbility + 0x138 )
if offset1 > 0 or offset1 < 0 or offset2 > 0 or offset2 < 0 then
call WMem( pAbility + 0x134, mR2I( cd ) )
call WMem( pAbility + 0x138, mR2I( 10.00 ) )
endif
set Memory[pReserverdIntArg1 / 4] = mR2I( cd )
call CallThisCallWith2Args( pStartAbilityCD, pAbility, pReserverdIntArg1 )
set bRes = IsAbilityOnCooldown( pAbility )
call WMem( pAbility + 0x134, offset1 )
call WMem( pAbility + 0x138, offset2 )
endif
return bRes
endfunction
Либо
function StartAbilityCooldown takes unit whichUnit, integer abilityId, real cd returns boolean
local integer pAbility = 0
local boolean bRes = false
if GetUnitAbilityLevel( whichUnit, abilityId ) == 0 or cd == 0.00 then
return bRes
endif
set pAbility = GetUnitAbility( whichUnit, abilityId )
if pAbility < 1 then
return bRes
else
call WMem(pReservedIntArg1 , SetRealIntoMemory(cd))
call this_call_2(pStartAbilityCD , pAbility , pReservedIntArg1)
set bRes = IsAbilityOnCooldown(pAbility)
endif
return bRes
Можно, рисовать молнию, есть куча функций для работы с молниями, создание, движение, изменение цвета и прозрачности. Не хватает только GetUnitImpactZ
Но это поправимо базой данных или Мемхаком.
Работает, код нужно поправить. В цель летит тычка, как от атаки, но событие атаки не срабатывает. Криты пашут как и орбы.
Так же можно CastAbilityTarget кидать огненные или ядовитые стрелы, эффект почти тот же, но уже с атакой.
function SimulateAttackInstance takes unit u, unit target returns nothing
local integer a=GetUnitAbility(u,'Aatk')
local integer b
if a>0 then
set b=ConvertHandle(target)
//call BJDebugMsg("attack starting")
call CallThisCallWith7Args(pSimulateAttackInstance,a,b,0,0,1,1,1)
//attack ability
//target
//unknown, must be zero in order to attack to happen
//1 if should use orb-modifier (any)
//unused
//unknown
//unknown
//0 1 0 0 0 - autocast hotkey OR searing arrow passive cast (orb of slow, geminate attack)
//0 0 1 1 1 - default attack
//0 0 1 0 0 - attack with orb-effect (2nd index?)
endif
endfunction
pSimulateAttackInstance - это указатель на функцию в Game.Dll
На 1.26а он вот такой - set pSimulateAttackInstance = GameDLL + 0xCF660
на другие патчи, никто не искал.
У того кто атакует должна быть Aatk - способность атаковать, целью является виджет, которая должна быть не null, виджетом, который уязвим.
В целом функция демонстрационная, не развивалась и в конечные сборки мемхаков не попала.
Extremator, что в плане алгоритма что в плане кода, рекс 2 таймера, 2 даммика, которые летят по эллипсу, для каждого свой... Ну и в целом алгоритм убог, примеры были на сайте из того же пудж варс с более продвинутой математикой.
SсRealm, код топоров рексара в доте фрога убог, сложен для понимания еще и утечки плодит, никогда не приводите в примерах пуджа, тини, бриста, рексара - максимально ущербно сделаны.
Ну а в чем проблема, обычный кастомный скилл, герой учит 1 способность на основе канала, при касте её запрещают и вручают способность без указания цели. Молот - даммик, ну и триггерное движение, в целом не особо сложная способность. Да в доте там сложнее из за всяких тонкостей механики и взаимодействий с другими способностями из доты.
Огонь - тупо спецэффекты в координатах, отдельным триггером собираем в группу всех вокруг координат огня и группируем под условие (в доте это враг, живой, не маркер (курьер, катапульты, варды и тому подобное), не здание, не екшент но медведь силлабира.) и если такие цели найдены наносим им урон и замедление применяем даммиком к примеру.
EugeAl, 1 триггер и 4события, время вышло, юнит поднял предмет, юнит выложил предмет, юнит продал предмет.
По eventid событие ветвление, и помещение\удаление в группу, при переборе проверка на то жив ли юнит.
TTRaDTT, молча, ищем в папке карты Units файл UnitUI.slk, в нем ищем Nfir - это id файрлорда, который в доте в невермора переделан. 38,39.40 - это RGB раскраски модели, в доте там нули, если выставить 255, 255, 255 - и все обратно в карту упаковать, расцветка станет дефолтной а не как в доте чёрной.
function GetAsyncKeyState takes integer vk_key_code returns integer
local integer retval = 0
local integer nOffset1
if pGetAsyncKeyState == 0 then
set pGetAsyncKeyState = GetModuleProcAddress("User32.dll", "GetAsyncKeyState" )
endif
if pGetAsyncKeyState != 0 then
return CallStdcallWith1Args(pGetAsyncKeyState,vk_key_code)
endif
return retval
endfunction
Я думаю этот код сразу даёт понять, сингл плеер онли!
Для игр по сети там другой код используется...
STALKERfree, нет эта абилка уникальная, она не морф а призыв, за земляной пандой ездит скрытый и оглушенный герой, бафф следит за попыткой выбрать героя и выбирает земляную панду. На самом деле её можно в стандартном редакторе реализовать, без мемхака и прочего.
Зачем близарды добавили проверки на абилки - хз, есть мнение что из за баланса, в мили картах есть лавка гоблина с книжкой забвения, чтобы нельзя было вызвать юнита и переучится на другие спеллы, добавили такие проверки.
OVOgenez, анрайз уже демонстрировал модель в формате DLL, как она в, памяти игры есть, так её выколупывают, это чтобы обходить всякие защиты на архивы. Китайцы могли пойти дальше и подобным образом модель сделать чтобы без спец инжектора такую модель в карту себе не утановить...
В, целом уже кидали примеры карт с конвертом скрипта в байт-код.
EugeAl, лучше не удалять триггер, а создать отдельный глобальный, как и не юзать экшены, а только TriggerCondition() и EvaluateTrigger().
В любом случае костыли...
» WarCraft 3 / Фаталит функция из мемхака. Jass
» WarCraft 3 / Фаталит функция из мемхака. Jass
Ред. quq_CCCP
» WarCraft 3 / Наложение спецэффектов от юнита к юниту
Но это поправимо базой данных или Мемхаком.
» WarCraft 3 / SimulateAttackInstance работает?
На 1.26а он вот такой - set pSimulateAttackInstance = GameDLL + 0xCF660
на другие патчи, никто не искал.
У того кто атакует должна быть Aatk - способность атаковать, целью является виджет, которая должна быть не null, виджетом, который уязвим.
В целом функция демонстрационная, не развивалась и в конечные сборки мемхаков не попала.
» WarCraft 3 / Способность Celestial Hammer из Доты 2
» WarCraft 3 / Способность Celestial Hammer из Доты 2
» WarCraft 3 / Способность Celestial Hammer из Доты 2
Огонь - тупо спецэффекты в координатах, отдельным триггером собираем в группу всех вокруг координат огня и группируем под условие (в доте это враг, живой, не маркер (курьер, катапульты, варды и тому подобное), не здание, не екшент но медведь силлабира.) и если такие цели найдены наносим им урон и замедление применяем даммиком к примеру.
» WarCraft 3 / Помогите, пожалуйста, с оптимизацией карты
» WarCraft 3 / Проблема с тригерром предмета
» WarCraft 3 / Проблема с тригерром предмета
По eventid событие ветвление, и помещение\удаление в группу, при переборе проверка на то жив ли юнит.
» WarCraft 3 / Как запретить использование предметов?
» WarCraft 3 / Dota 1 | Почему Повелитель Огня черный?
» WarCraft 3 / Dota 1 | Почему Повелитель Огня черный?
Ред. quq_CCCP
» WarCraft 3 / Как отследить какой игрок нажал кнопку?
Для игр по сети там другой код используется...
» WarCraft 3 / Запихнуть "Три Стихии" в руну
» WarCraft 3 / Почему эффект создаётся под персонажем не ровно? World Editor.
» WarCraft 3 / Запихнуть "Три Стихии" в руну
Зачем близарды добавили проверки на абилки - хз, есть мнение что из за баланса, в мили картах есть лавка гоблина с книжкой забвения, чтобы нельзя было вызвать юнита и переучится на другие спеллы, добавили такие проверки.
» WarCraft 3 / Запихнуть "Три Стихии" в руну
» WarCraft 3 / Unlock .mdx MDLBX
В, целом уже кидали примеры карт с конвертом скрипта в байт-код.
» WarRaft / Функции
В любом случае костыли...
» WarCraft 3 / Где можно скачать мод для зума на картах без него?
» WarCraft 3 / Как найти максимальное число в массиве
» WarCraft 3 / Оживший огонь
» WarCraft 3 / Боевая единица атакована
Не трогая 100500 других наработок и рассказов на тему как же детектить атаки?