PT153 говорил, что во всех случаях, где можно вставить аргумент на прямую, можно заменить на code, если же вместо этого используется переменная типа code, тогда не робит. Сам этим не пользуюсь, но PT153, думаю, может рассказать больше об этом.
Только сейчас заметил, что данный код возвращает тоже самое, что и GetEventDamage( ).
local real Amount = mI2R( RMem(Data + $10) )
Урон без учета резиста, все просто...
Но при этом, если пройтись функцией SetEventDamage( ), то GetEventDamage( ) начинает возвращать новое значение, а эта функция продолжает возвращать старые значения.
function SetEventDamage takes real r returns nothing
local integer a = CallThisCallWith1Args( GameDLL + 0x3C1D40, 0 )
if ( a != 0 ) then
set a = CallThisCallWith1Args( GameDLL + 0x3C1D60, 0 )
if ( a != 0 ) then
call WMem( a + 0x30, mR2I( r ) )
endif
endif
endfunction
там, где AllocateExecutableMemory вызывается, указан объем выделяемой памяти
поставь туда 70000 и вперед, остальное набирай дальше
пример использования
А можно меньше 70000 сделать, если мне столько не нужно.
Внизу set pCustomChargesDisplayer = pCallFastCallWith1Args + 35000.
set pCallFastCallWith1Args = AllocateExecutableMemory( 40000 )
set pCallFastCallWith2Args = pCallFastCallWith1Args + 1000
set pCallFastCallWith3Args = pCallFastCallWith1Args + 2000
set pCallFastCallWith4Args = pCallFastCallWith1Args + 3000
set pFUCKINGCallWith4Args = pCallFastCallWith1Args + 4000
set pCallFastCallWith5Args = pCallFastCallWith1Args + 5000
set pCallFastCallWith6Args = pCallFastCallWith1Args + 6000
set pCallFastCallWith7Args = pCallFastCallWith1Args + 7000
set pCallFastCallWith8Args = pCallFastCallWith1Args + 8000
set pCallStdcallWith1Args = pCallFastCallWith1Args + 9000
set pCallStdcallWith2Args = pCallFastCallWith1Args + 10000
set pCallStdcallWith3Args = pCallFastCallWith1Args + 11000
set pCallStdcallWith4Args = pCallFastCallWith1Args + 12000
set pCallStdcallWith5Args = pCallFastCallWith1Args + 13000
set pCallStdcallWith6Args = pCallFastCallWith1Args + 14000
set pCallCdeclWith1Args = pCallFastCallWith1Args + 15000
set pCallCdeclWith2Args = pCallFastCallWith1Args + 16000
set pCallCdeclWith3Args = pCallFastCallWith1Args + 17000
set pCallCdeclWith4Args = pCallFastCallWith1Args + 18000
set pCallCdeclWith5Args = pCallFastCallWith1Args + 19000
set pCallCdeclWith6Args = pCallFastCallWith1Args + 20000
// set pReadStack = pCallFastCallWith1Args + 21000
set pBitwiseOR_ExecutableMemory = pCallFastCallWith1Args + 22000
set pBitwiseXOR_ExecutableMemory = pCallFastCallWith1Args + 23000
set pBitwiseAND_ExecutableMemory = pCallFastCallWith1Args + 24000
set pReservedMemoryForMissileHandler = pCallFastCallWith1Args + 25000
// set pReservedMemoryForDamageHandler = pCallFastCallWith1Args + 26000
set pGetAbilityOrderID = pCallFastCallWith1Args + 27000
// set pReservedMemoryForPacketHandler = pCallFastCallWith1Args + 28000
// set pReservedMemoryForPacketHandler2 = pCallFastCallWith1Args + 29000
set pCallFastCallWith11Args = pCallFastCallWith1Args + 30000
set pCallFastCallWith12Args = pCallFastCallWith1Args + 31000
// set pReservedMemoryForBerserkHook = pCallFastCallWith1Args + 32000
// set pReservedMemoryForAttackPrepareHandler = pCallFastCallWith1Args + 34000
set pCustomChargesDisplayer = pCallFastCallWith1Args + 35000
Было бы неплохо, если бы была возможность применять все стандартные способности триггерно. То есть не придётся создавать кучу дополнительных дамми способностей для основной способности. Например: StunUnit( caster, target, dur ), SlowUnit( caster, target, percent, dur ), CurseUnit( caster, target, percent, dur ). Или что-то похожее на xecast Vexorian'a.
PT153, чего не знаю, того не знаю..) Видимо не наименьший ID, но это не делает счётчик неправильным, ведь роли играет не значение счётчика, а его изменение со временем. Я скорее неправильно выразился, сказав что это примерное количество объектов, это скорее разница ID.
В каждой карте, когда создаётся объект, ей даётся свой ID, который на 1 больше предыдущего ID. Так вот, если коротко, то там создаётся объект и его ID вычитается от наименьшей возможной ID ( 0x100000 ), то есть если ID нового объекта - 0x100512, то разница будет равна 0x512. Значит на карте примерно 0x512 объектов. Вот таким нехитрым образом и работает данный счётчик.
Ред. scopterectus
» Мир безумного / WarCraft III Reforged - WE (что хотите увидеть?)
» WarCraft 3 / Показатель заряда у способности
» WarCraft 3 / Jass Сложный скилл
Вот так
» WarCraft 3 / Какие типы карт вы предпочитаете?
» WarCraft 3 / JASS GroupEnumUnitsInRange фильтр
» WarCraft 3 / JASS GroupEnumUnitsInRange фильтр
» WarCraft 3 / JASS GroupEnumUnitsInRange фильтр
call GroupEnumUnitsInRange( g, x, y, range, filter )
» WarCraft 3 / Герой
» WarCraft 3 / Новый детект физического урона на мемхаке
» WarCraft 3 / Новый детект физического урона на мемхаке
Ред. scopterectus
» WarCraft 3 / Поворот dummy к цели
Ред. scopterectus
» WarCraft 3 / Где хранятся TRIGSTR строки?
Нужно искать только цифру. Если TRIGSTR 212, тот ищем STRING 212.
» WarCraft 3 / Хак на память Warcraft3
Внизу set pCustomChargesDisplayer = pCallFastCallWith1Args + 35000.
» WarCraft 3 / Почему происходит десинхронизация?
Ред. scopterectus
» Мир безумного / WarCraft III Reforged - WE (что хотите увидеть?)
» WarCraft 3 / [Мемхак] Можно ли заменить "Нет расходов"?
» WarCraft 3 / [Мемхак] Можно ли заменить "Нет расходов"?
» WarCraft 3 / Region comparison?
» WarCraft 3 / Оптимизация кода на создание юнитов для МОБА игры
Ред. scopterectus
» WarCraft 3 / Оптимизация кода на создание юнитов для МОБА игры
» WarCraft 3 / Запрет способности?
» WarCraft 3 / Jass тригеры
Ред. scopterectus
» WarCraft 3 / Способность: повышение атаки при каждом ударе
» WarCraft 3 / Способность: повышение атаки при каждом ударе