32

» WarCraft 3 / Фаталит функция из мемхака. Jass

LastUchiha, это не проблема а чепуха какая то, все одно и то же, просто думаем головой.
32

» WarCraft 3 / Фаталит функция из мемхака. Jass

Как насчет юзать её нормальную версию из новых сборок мемхака?

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
32

» WarCraft 3 / Наложение спецэффектов от юнита к юниту

Можно, рисовать молнию, есть куча функций для работы с молниями, создание, движение, изменение цвета и прозрачности. Не хватает только GetUnitImpactZ
Но это поправимо базой данных или Мемхаком.
32

» WarCraft 3 / SimulateAttackInstance работает?

Работает, код нужно поправить. В цель летит тычка, как от атаки, но событие атаки не срабатывает. Криты пашут как и орбы.

Так же можно 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, виджетом, который уязвим.
В целом функция демонстрационная, не развивалась и в конечные сборки мемхаков не попала.
32

» WarCraft 3 / Способность Celestial Hammer из Доты 2

Extremator, что в плане алгоритма что в плане кода, рекс 2 таймера, 2 даммика, которые летят по эллипсу, для каждого свой... Ну и в целом алгоритм убог, примеры были на сайте из того же пудж варс с более продвинутой математикой.
32

» WarCraft 3 / Способность Celestial Hammer из Доты 2

SсRealm, код топоров рексара в доте фрога убог, сложен для понимания еще и утечки плодит, никогда не приводите в примерах пуджа, тини, бриста, рексара - максимально ущербно сделаны.
32

» WarCraft 3 / Способность Celestial Hammer из Доты 2

Ну а в чем проблема, обычный кастомный скилл, герой учит 1 способность на основе канала, при касте её запрещают и вручают способность без указания цели. Молот - даммик, ну и триггерное движение, в целом не особо сложная способность. Да в доте там сложнее из за всяких тонкостей механики и взаимодействий с другими способностями из доты.
Огонь - тупо спецэффекты в координатах, отдельным триггером собираем в группу всех вокруг координат огня и группируем под условие (в доте это враг, живой, не маркер (курьер, катапульты, варды и тому подобное), не здание, не екшент но медведь силлабира.) и если такие цели найдены наносим им урон и замедление применяем даммиком к примеру.
32

» WarCraft 3 / Помогите, пожалуйста, с оптимизацией карты

Боюсь придется весь код с нуля писать, попутно думая о том что пишешь, то какие то бесполезные действия 100500 утечек.
32

» WarCraft 3 / Проблема с тригерром предмета

А стандартная аура регена фонтана не канает? Цели установить на только сам воин?
32

» WarCraft 3 / Проблема с тригерром предмета

EugeAl, 1 триггер и 4события, время вышло, юнит поднял предмет, юнит выложил предмет, юнит продал предмет.
По eventid событие ветвление, и помещение\удаление в группу, при переборе проверка на то жив ли юнит.
32

» WarCraft 3 / Как запретить использование предметов?

Надожить дум, удалять у предметов способности, мемхаком сайленс накладывать...
32

» WarCraft 3 / Dota 1 | Почему Повелитель Огня черный?

TTRaDTT, молча, ищем в папке карты Units файл UnitUI.slk, в нем ищем Nfir - это id файрлорда, который в доте в невермора переделан. 38,39.40 - это RGB раскраски модели, в доте там нули, если выставить 255, 255, 255 - и все обратно в карту упаковать, расцветка станет дефолтной а не как в доте чёрной.
32

» WarCraft 3 / Как отследить какой игрок нажал кнопку?

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
Я думаю этот код сразу даёт понять, сингл плеер онли!
Для игр по сети там другой код используется...
32

» WarCraft 3 / Запихнуть "Три Стихии" в руну

STALKERfree, нет эта абилка уникальная, она не морф а призыв, за земляной пандой ездит скрытый и оглушенный герой, бафф следит за попыткой выбрать героя и выбирает земляную панду. На самом деле её можно в стандартном редакторе реализовать, без мемхака и прочего.
Зачем близарды добавили проверки на абилки - хз, есть мнение что из за баланса, в мили картах есть лавка гоблина с книжкой забвения, чтобы нельзя было вызвать юнита и переучится на другие спеллы, добавили такие проверки.
32

» WarCraft 3 / Запихнуть "Три Стихии" в руну

Увы не получится,три стихии как и вызов волков проверяет наличие абилки, поэтому она падает если её удалить.
32

» WarCraft 3 / Unlock .mdx MDLBX

OVOgenez, анрайз уже демонстрировал модель в формате DLL, как она в, памяти игры есть, так её выколупывают, это чтобы обходить всякие защиты на архивы. Китайцы могли пойти дальше и подобным образом модель сделать чтобы без спец инжектора такую модель в карту себе не утановить...
В, целом уже кидали примеры карт с конвертом скрипта в байт-код.
32

» WarRaft / Функции

EugeAl, лучше не удалять триггер, а создать отдельный глобальный, как и не юзать экшены, а только TriggerCondition() и EvaluateTrigger().
В любом случае костыли...
32

» WarCraft 3 / Как найти максимальное число в массиве

Просто перебираешь все игроков в массиве, сравнивая количество золота и записывая в переменную того у кого больше всех золота.
32

» WarCraft 3 / Боевая единица атакована

Ну как насчет xgm.guru/p/wc3/fervor-criticalstrike-evade ?
Не трогая 100500 других наработок и рассказов на тему как же детектить атаки?