32

» WarCraft 3 / Запрет выбора юнита

Инвизы, просто настраиваем аспекты союзов, юниты невидимые и всё.
32

» WarCraft 3 / Как использовать тип ability? Jass. MemoryHack.

Принятый ответ
LastUchiha, да, GetUnitAbility для получения адреса pAbil, и всё. Адресс всю игру у одного юнита будет один и тот же, поэтому адресс абилки можно сохранять в хештаблицу к примеру.
32

» WarCraft 3 / Как использовать тип ability? Jass. MemoryHack.

LastUchiha, есть, не так выглядят, там есть для абилки и для адреса, тебе нужны для адреса.
32

» WarCraft 3 / Как использовать тип ability? Jass. MemoryHack.

Снова схватил что попало не глядя, тебе нужен указатель на абилку - это integer, в мемхаке есть функция GetUnitAbility( unit, integer id) returns integer
Обязательно проверять на наличиее абилки и чему равен указатель, если он меньше 1 то абилки у юнита нету.

function ShowAbilityById_Main takes integer ConvertedHandle, integer d returns nothing
	if ConvertedHandle>0 and RMem(ConvertedHandle)>0 then
		call WMem(ConvertedHandle + 0x40,RMem(ConvertedHandle + 0x40)+d)
	endif
endfunction

function HideAbilityButton takes unit u, integer id, boolean hide returns nothing
	local integer offset
	if u!=null and id!=0 then
		set offset=GetUnitAbility(u,id)
		if offset!=0 then
			if hide then
				call ShowAbilityById_Main(offset,1)
			else
				call ShowAbilityById_Main(offset,-1)
			endif
		endif
	endif
endfunction
Все просто, находишь у юнита указатель на абилку, если он не равен нулю, то записываешь в адрес абилки +0x40 значение, любое выше 0 это абилка скрыта, это счетчик.
Внимательно смотри на список функций, там наделаны на все случаи жизни, выбирай не первую попавшуюся.
32

» WarCraft 3 / нужен эффект ауры аганима для карты iccup dota

Ну нужен так пусть делают разработчики айкап доты, они же там вроде как работаю не за спасибо (но это неточно).
Потом в какую из их доток, у них их 2.

Ах да, и какую такую ауру, у аганима же ауры нету? Не?
32

» WarCraft 3 / Повелитель Могил

У него анимации закопки, выкопки и атаки из под земли сделаны для ролика в кампании нежити. Там Анубарак всегда из подземли вылазит.
32

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

LastUchiha, я бы взял мемхак 1.6 к примеру и перенес, хз правда для чего именно он вам нужен. но откуда код функции выше?
Во первых нет определения версии игры, во вторых проверки входных аргументов, в теме с мемхаком обсуждалось раз 10.
Не все выложенные функции - рабочие, многие демонстрационные и не годятся для игровых карт из за изьянов.
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
Я думаю этот код сразу даёт понять, сингл плеер онли!
Для игр по сети там другой код используется...