Ну мемхак позволяет получить доступ к стандартному winapi, т.е ты можешь создать файл и написать в него строчку символов, или байты, так же все это дело их прочитать, в одном файле можно хранить сразу все сейвы игрока а не только 1. С помощью тех же пасскодов или шифрованию методом исключающего или ты можешь сделать так чтобы никто сейвы не ломанул.
У меня эта система сейвов даже не открывается, какое то кастом гуи?
Если это генератор сейв кодов, то уже баян, т.к ты взялся за мемхак, мб на нем и будешь сохранять данные.
Мб переписать нужный тебе функционал под мх второй версии?
Я перенес минимум функций, т.к их вопервых овер дохрена, вовторых переносил самые популярные и простые, надо дллок тогда было.
Разумеется нет, Юнит где был там и остался, у разложившихся вовсе координаты в нуля, т.е центр карты, поэтому игровой рект они немогут покинуть при смерти.
Ну перепиши функцию старта абилки, 0х126990 Адресс функции restore mana are, от абилки восстановление маны, оно требует структуру и кол-во маны, поэтому стоят проверки на оферты 0х134 и 0х138, другой оффсет не требует ничего, и ненужны в теории эти проверки.
Ну только в режиме киниматика курсор пропадает, иначе никак, в гуи есть функции в разделе "спецэффекты".
Так чтобы прям на ровном месте удалить курсор по средь игры, стандартными средсвами никак...
Сохранить игру насколько помню можно только в кампании.
оффсет на функцию запуска кд верный?
set pStartAbilityCD = (GameDLL + 0x050B70) GameDLL + 0x126990
Вот тут две версии, первая от IceFog вторая от DracoL1ch, обе работают, 1.26а
То в старой версии часть абилок баговали...
Mate, очевидно что прежде чем триггеру добавить действие, его нужно сначала написать, у этой функции, назовем её TriggerAction не должно быть аргументов,
function TriggerActions takes nothing returns nothing
Функцию эту нужно обьвить выше того места где ты собрался добавлять триггеру действие.
А уже в самой функции ты будешь удалять юнитов, ссылаясь на GetTriggerUnit() - это тот на кого сработало событие триггера, разумеется это работает на те события, которые напрямую связанны с юнитом.
Mate, а почему вы пытаетесь добавить триггеру действие, ссылаясь на нативную функцию которая требует аргументы.
функция TriggerAddAction требует триггера и code, ссылку на функцию, при этом у этой функции не должно быть ни входных аргументов.
Блин я в этом рус гуи нихрена понять немогу, спелл примитив, если как в доте без изисков и по простому - опен дота, там он есть на ретурнбаге (изи меняется на хт).
Frzctions, ну ты не представляешь синтаксис jaas'a? Или что тебе непонятно, функция может принимать аргументы или возвращать, но возвращает всегда лишь 1 аргумент.
Frzctions, вот примерно так можно сделать, но для этого нужно включать думалку.
код jass
globals
group TempGroup = CreateGroup()
unit bj_lastFilterUnit = null
endglobals
function Trig_Dark_Explosion_Copy_Conditions takes nothing returns boolean
return ( GetSpellAbilityId() == 'A005' )
endfunction
function Ally_Filter takes nothing returns boolean
set bj_lastFilterUnit = GetFilterUnit()
return GetWidgetLife(bj_lastFilterUnit) > 0.405 and IsUnitAlly( bj_lastFilterUnit, bj_groupEnumOwningPlayer) and GetUnitState( bj_lastFilterUnit, UNIT_STATE_LIFE ) < GetUnitState( bj_lastFilterUnit, UNIT_STATE_MAX_LIFE ) and not IsUnitType( bj_lastFilterUnit, UNIT_TYPE_STRUCTURE ) // через and можно дополнить критерии отбора союзников
endfunction
function Enemy_Filter takes nothing returns boolean
set bj_lastFilterUnit = GetFilterUnit()
return GetWidgetLife(bj_lastFilterUnit) > 0.405 and IsUnitEnemy(bj_lastFilterUnit, bj_groupEnumOwningPlayer) and not IsUnitType( bj_lastFilterUnit, UNIT_TYPE_STRUCTURE ) // через and можно дополнить критерии отбора противников
endfunction
function Trig_Dark_Explosion_Copy_Actions takes nothing returns nothing
local unit caster = GetSpellAbilityUnit()
local real cx = GetUnitX(caster)
local real cy = GetUnitY(caster)
local real heal = RMaxBJ( 25.00, GetHeroStr( caster, true ) * 3.00 )
local real damage = RMaxBJ( 25.00, GetHeroStr( caster, true) * 25.00 )
local unit enumunit = null
set bj_groupEnumOwningPlayer = GetOwningPlayer( caster )
// союзники
call GroupClear(TempGroup)
call GroupEnumUnitsInRange( TempGroup, cx, cy, 650.00, Condition( function Ally_Filter) )
loop
set enumunit = FirstOfGroup( TempGroup )
exitwhen enumunit == null
call GroupRemoveUnit( TempGroup, enumunit )
call SetUnitState( enumunit, UNIT_STATE_LIFE, GetUnitState( enumunit, UNIT_STATE_LIFE ) + heal )
call DestroyEffect(AddSpecialEffectTarget( "Abilities\\Spells\\Undead\\VampiricAura\\VampiricAuraTarget.mdl", enumunit, "chest" ))
endloop
// враги
call GroupClear(TempGroup)
call GroupEnumUnitsInRange( TempGroup, cx, cy, 650.00, Condition( function Enemy_Filter) )
loop
set enumunit = FirstOfGroup( TempGroup )
exitwhen enumunit == null
call GroupRemoveUnit( TempGroup, enumunit )
call UnitDamageTarget( caster, enumunit, damage, false, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_FIRE, WEAPON_TYPE_WHOKNOWS )
call DestroyEffect(AddSpecialEffectTarget( "Abilities\\Spells\\Undead\\VampiricAura\\VampiricAuraTarget.mdl", enumunit, "chest" ))
endloop
set enumunit = null
set caster = null
endfunction
//===========================================================================
function InitTrig_Dark_Explosion_Copy takes nothing returns nothing
set gg_trg_Dark_Explosion_Copy = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Dark_Explosion_Copy, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_Dark_Explosion_Copy, Condition( function Trig_Dark_Explosion_Copy_Conditions ) )
call TriggerAddAction( gg_trg_Dark_Explosion_Copy, function Trig_Dark_Explosion_Copy_Actions )
endfunction
Frzctions, еще раз, для переноса неких данных из одной функции в другую, которая не вызывается напрямую через call юзают либо хештаблицы, либо глобальные переменные, они если что для этого и созданы, ну либо строят код так чтобы переносить ничего не потребовалось...
» WarCraft 3 / Ломается система сейвов
» WarCraft 3 / Ломается система сейвов
» WarCraft 3 / Ломается система сейвов
Если это генератор сейв кодов, то уже баян, т.к ты взялся за мемхак, мб на нем и будешь сохранять данные.
» WarCraft 3 / Морф
» WarCraft 3 / Мемхак, сломался старт перезарядки способности (StartAbilityCD)
Я перенес минимум функций, т.к их вопервых овер дохрена, вовторых переносил самые популярные и простые, надо дллок тогда было.
» WarCraft 3 / Войти в игровую область 2 раз
» WarCraft 3 / Мемхак, сломался старт перезарядки способности (StartAbilityCD)
» WarCraft 3 / Мемхак, сломался старт перезарядки способности (StartAbilityCD)
» WarCraft 3 / 2 в 1 как сохранить игру через тригер? и как скрыть курсор?
Так чтобы прям на ровном месте удалить курсор по средь игры, стандартными средсвами никак...
Сохранить игру насколько помню можно только в кампании.
» WarCraft 3 / Мемхак, сломался старт перезарядки способности (StartAbilityCD)
set pStartAbilityCD = (GameDLL + 0x050B70) GameDLL + 0x126990
Вот тут две версии, первая от IceFog вторая от DracoL1ch, обе работают, 1.26а
То в старой версии часть абилок баговали...
» WarCraft 3 / Если unit == null
» WarCraft 3 / Новый тип переменной
» WarCraft 3 / Вопрос по поводу отлова точки
» WarCraft 3 / Проблема с мультибоардом
» WarCraft 3 / Syntax Error, unexpected: "(" ? - Ошибка в Jass.
А уже в самой функции ты будешь удалять юнитов, ссылаясь на GetTriggerUnit() - это тот на кого сработало событие триггера, разумеется это работает на те события, которые напрямую связанны с юнитом.
» WarCraft 3 / Проблема с мультибоардом
» WarCraft 3 / Syntax Error, unexpected: "(" ? - Ошибка в Jass.
функция TriggerAddAction требует триггера и code, ссылку на функцию, при этом у этой функции не должно быть ни входных аргументов.
» WarCraft 3 / ZinC: Похищение жизни
» WarCraft 3 / Помогите со спелом типа waveform морфа
» WarCraft 3 / Помогите со спелом типа waveform морфа
» WarCraft 3 / ZinC: Похищение жизни
» WarCraft 3 / Передача локальной переменной
» WarCraft 3 / Передача локальной переменной
» WarCraft 3 / Передача локальной переменной
» WarCraft 3 / Передача локальной переменной