Ige, смотрим кат Сам хак
Там сама наработка, это хук на событие внутри движка.
Собственно нам потребуется триггер, функцией InitializeDamageHandler мы лезим в структуру триггерна и ставим коверкаем его чтобы мы могли получать нужные нам данные.
Массив - дота код, рассчитан на то что юнитов получающих урон будет овер дофига как и кол-во инстансов урона, таким образом он гарантирует что при срабатывании 1 триггера, во время его потока, данные полученные с помощью функций не перезапишутся. Т.е представь что ты юзаешь GetTriggerUnit() в потоке триггера, первый раз оно вернет одного юнита, второй раз другое? Тебе оно надо, массив это вроде фикс этого эффекта.
В потоке триггера (в кондишине) ты получаешь всех кого хочешь, а значение урона берешь из глобалок, все ок?
Оффсет это офсет, не трогай чего не понимаешь - Barrage missiles always have 0x8 == 0x10000000 call BJDebugMsg("Target" + Int2Hex(RMem(pDamageTarget))) адресс цели, не путать с хендлом и прочим говном, это адресс юнита в памяти игры, нужно для работы с адресом а не с юнитом. call BJDebugMsg(Int2Hex(RMem(RMem(RMem(pDamageEspData)+0x8)+0x0)))source адресс источника урона, тоже самое. call BJDebugMsg(Int2Hex(RMem(RMem(RMem(pDamageEspData)+0x8)+0x8)))proj or link onto something// адрес куда пишут флаги всякие орбы, или что то еще..
call BJDebugMsg(Int2Hex(RMem(RMem(RMem(pDamageEspData)+0x8)+0xC)))0x101 == ranged, 0x100 == melee адресс в котором хранится значение, 0x101, что означет что урон является уроном дальнего боя (UnitDamageTarget(a,b,100, false, true, null,null,null )), 0x100 урон от ближнего боя (UnitDamageTarget(a,b,100, true, false, null,null,null )) call BJDebugMsg("Damage:" + R2S(mI2R(RMem(RMem(RMem(pDamageEspData)+0x8)+0x10))))damage val кол-во урона без учета брони, сколько было на момент успешного завершения снаряда или указанно в настройках способности которая нанесла урон.
Можно насколько я помню проигрывать звуки локально, как и его останавливать... Звук а не музыку, учтите это при импорте и создании звуковых переменных.
Будет всегда десинх, типы юнитов проверяются практически постоянно, у тебя будет несоответствие типов.
Локально создавать не локальные объекты не получится, будет десинх.
Максимум что можно, это сменить модельку с помощью мемхака.
Всякие там примеры про карты типа мафия, там юнитов создают как куклу, её не трогать ниче делать с ней низя...
Steal nerves, Не проверял, но знаю что эта бага есть - яркий пример дота фрога, аура леорика сделана для мили обычной вампирик аурой, и триггерной для ренж юнитов (им вручали руну с абилкой зелья вампиризма, иконку баффа сменили под вампирик ауру) ну дык вот, там герои с орбами получали 2 баффа сразу.
ScopteRectuS, в поиск вбиваем "Передача и хранение данных"
И ищем,подобное жевали уже не раз, помнится даже была древняя статья где все это описывалась, я привел краткое содержание.
avuremybe, ну а типо вы не знали что создание локальной переменной это действие, да и внезапно обнуление тоже действие...
Поэтому лепить 1005000 локалок, особенно в таких примитивных функциях не стоит, лучше по возможности использовать 1 темповую глобалку на много функций.
ENAleksey, ну стоит подумать, синк через кешь увы не быстрый, а так в мультиплеере это работать не будет. Очень многие хотели сделать шутер от первого лица.
ArchOracle, вы дурные или как? Это способность флаг 0 их 100500 подобных, они указаны в стаблице для того чтобы вы могли ссылатся на их ро код и добавлять юнитам в редакторе обьектов, редактировать там нечего, способность либо есть либо нет, там нет никаких настроек и что бы вы не писали - ничего не изменится, москиты есть - движок добавляет эффект, нет - снимает.
Настроить служебные способности нельзя, они сделаны целиком в движке игры, avuremybe,
Зачем? Все бонусы от апгрейдов это такая способность, всякие там неуязвимости, состояния юнитов, ходить, стоять, атаковать - тоже способности, их нет в РО, там нечего настраивать.
IcE_PLayER, Кароче у всех инвизов фейд тамй не стакается, если один начался, второй не начнется.
Добавляйте 'Amin' с временем перехода в инвиз когда вздумается, а не при создании мины.
Так же можно паузить юнита (точно помню что работало с инвизами волков) и юнит становится видим, минам же ненужно ходить или кастовать спеллы, на них не распространяются никакие баффы (как на все варды), так что пауза тоже зайдет без проблем...
ADOLF, Нет, я не прошу перерабатывать весь сjass, а просто прошу пофиксить накопленные баги, и сделать совместимость с мемхаком, добавить настройку - исключить из оптимизации переменные (список).
Так же чтобы cjass переваривал базовые функции мемхака.
Мб прикрутить какой-нибудь набор, функций мемхака.
ClotPh, можно, но это несколько не очень, клонировать данные спелла и изменять, помню в начале ты жаловался что оно фаталило через раз.
Сделай лучше нулевой кулдаун, а стартом кулдауна делай нужный тебе кд. А так есть функции редактирования кулдауна, уже не помню фиксились ли их проблемы или нет.
FrigatPlay, он умереть может черт знает от чего, ибо урон на носитя при касте способности далеко не сразу, потом юнита могут бить, на нем может бытьб 100500 дебаффов и так далее..
» WarCraft 3 / Ловим урон с Мемхаком
Там сама наработка, это хук на событие внутри движка.
Собственно нам потребуется триггер, функцией InitializeDamageHandler мы лезим в структуру триггерна и ставим коверкаем его чтобы мы могли получать нужные нам данные.
Массив - дота код, рассчитан на то что юнитов получающих урон будет овер дофига как и кол-во инстансов урона, таким образом он гарантирует что при срабатывании 1 триггера, во время его потока, данные полученные с помощью функций не перезапишутся. Т.е представь что ты юзаешь GetTriggerUnit() в потоке триггера, первый раз оно вернет одного юнита, второй раз другое? Тебе оно надо, массив это вроде фикс этого эффекта.
Оффсет это офсет, не трогай чего не понимаешь -
Barrage missiles always have 0x8 == 0x10000000
call BJDebugMsg("Target" + Int2Hex(RMem(pDamageTarget))) адресс цели, не путать с хендлом и прочим говном, это адресс юнита в памяти игры, нужно для работы с адресом а не с юнитом.
call BJDebugMsg(Int2Hex(RMem(RMem(RMem(pDamageEspData)+0x8)+0x0)))source адресс источника урона, тоже самое.
call BJDebugMsg(Int2Hex(RMem(RMem(RMem(pDamageEspData)+0x8)+0x8)))proj or link onto something// адрес куда пишут флаги всякие орбы, или что то еще..
call BJDebugMsg(Int2Hex(RMem(RMem(RMem(pDamageEspData)+0x8)+0xC)))0x101 == ranged, 0x100 == melee адресс в котором хранится значение, 0x101, что означет что урон является уроном дальнего боя (UnitDamageTarget(a,b,100, false, true, null,null,null )), 0x100 урон от ближнего боя (UnitDamageTarget(a,b,100, true, false, null,null,null ))
call BJDebugMsg("Damage:" + R2S(mI2R(RMem(RMem(RMem(pDamageEspData)+0x8)+0x10))))damage val кол-во урона без учета брони, сколько было на момент успешного завершения снаряда или указанно в настройках способности которая нанесла урон.
» WarCraft 3 / Атака (запуск снаряда)
» WarCraft 3 / Музыка с папкой
» WarCraft 3 / Создание юнита для локального игрока
Локально создавать не локальные объекты не получится, будет десинх.
Максимум что можно, это сменить модельку с помощью мемхака.
Всякие там примеры про карты типа мафия, там юнитов создают как куклу, её не трогать ниче делать с ней низя...
» WarCraft 3 / Как сделать проверку Дальний/Ближний бой?
» WarCraft 3 / Перезапись глобальных переменных
И ищем,подобное жевали уже не раз, помнится даже была древняя статья где все это описывалась, я привел краткое содержание.
» WarCraft 3 / Перезапись глобальных переменных
» WarCraft 3 / Есть ли утечка?
Поэтому лепить 1005000 локалок, особенно в таких примитивных функциях не стоит, лучше по возможности использовать 1 темповую глобалку на много функций.
» WarCraft 3 / Не сохраняет позиция
» WarCraft 3 / Как сделать проверку Дальний/Ближний бой?
» WarCraft 3 / Есть ли утечка?
» WarCraft 3 / Есть ли утечка?
» WarCraft 3 / Как сравнить структуру???
Ред. quq_CCCP
» WarCraft 3 / Есть ли утечка?
» WarCraft 3 / Иконка способности в сфере замедления
» RenderEdge / [RenderEdge] Memory Hack
» WarCraft 3 / Москиты
» WarCraft 3 / Москиты
Настроить служебные способности нельзя, они сделаны целиком в движке игры, avuremybe,
Зачем? Все бонусы от апгрейдов это такая способность, всякие там неуязвимости, состояния юнитов, ходить, стоять, атаковать - тоже способности, их нет в РО, там нечего настраивать.
» WarCraft 3 / Москиты
» WarCraft 3 / Как сделать мину невидимой, когда мне надо?
Добавляйте 'Amin' с временем перехода в инвиз когда вздумается, а не при создании мины.
Так же можно паузить юнита (точно помню что работало с инвизами волков) и юнит становится видим, минам же ненужно ходить или кастовать спеллы, на них не распространяются никакие баффы (как на все варды), так что пауза тоже зайдет без проблем...
Ред. quq_CCCP
» RenderEdge / [RenderEdge] Memory Hack
Так же чтобы cjass переваривал базовые функции мемхака.
Мб прикрутить какой-нибудь набор, функций мемхака.
» WarCraft 3 / Хак на память Warcraft3
Сделай лучше нулевой кулдаун, а стартом кулдауна делай нужный тебе кд. А так есть функции редактирования кулдауна, уже не помню фиксились ли их проблемы или нет.
» WarCraft 3 / Модели варкрафт 3
Разумеется нет, они выпустили конверты множества дефолтных моделей варкравта...
» WarCraft 3 / Убийство способностю
» WarCraft 3 / Убийство способностю