Что мешает вешать дефолт руну спелл нигейшина, отследить срабатывания руны негейшина можно по урону в 0.00 ед и наличию баффа нигейшина, а потом запустить таймер на 0.00 сек, если баффа по истечению таймера не будет - спеллнигейшин сработал (блокнул некий спелл).
А какой спел ты в кд запускаешь? Написано же юзать:
function StartAbilityCooldown takes unit whichUnit, integer abilityId, real cd returns boolean
local integer pAbility = 0
if whichUnit == null or GetUnitAbilityLevel( whichUnit, abilityId ) < 1 or cd == 0.00 then
return false
endif
set pAbility = GetUnitAbility(whichUnit, abilityId)
if pAbility < 1 then
return false
else
if ReadRealMemory(pAbility+0x134)==-1 and ReadRealMemory(pAbility+0x138)==-1 then
call WriteRealMemory(pAbility+0x134,0)
call WriteRealMemory(pAbility+0x138,0)
endif
set Memory[pReserverdIntArg1 / 4] = SetRealIntoMemory(cd)
call CallThisCallWith2Args( pStartAbilityCD, pAbility, pReserverdIntArg1 )
return IsAbilityOnCooldown( pAbility )
endif
return false
endfunction
Тут защита от неверных аргументов или баганых абликов, пассивки в кд не пускает...
Как рассказал личь может помочь баг с морфом в медведя, его нужно вручить иллюзии и тут же его удалить, в настройках морфа указать нормальную форму боевой единицы - тот юнит в кого мы хотим морфнуть иллюзию, должно сработать.
DemonoiD, Нет, да и лимит не всегда был 8 мб, недавно с четырёх подняли (относительно времени жизни варкравта).
Снова есть ретурн баг, подгружаешь микс архив всем кто запустил карту без их ведома и подключаешь, пусть улыбаются.
Правда могут быть проблемы с некоторыми античитами.
Иллюзии не морфятся, насколько я помню даже способность "темный у них не работает", так что тупо меняем иллюзии другими, ну или если там тока модель сменилась - применяем тег альтернейт анимациии ( в теории ретурн багом получится менять данные об атаке иллюзиями).
Я проверял таблицу строк в момент загрузки, если по адресу N Находится не та строка, значит карту ломанули ( в таблицу строк попадают даже имена кастом функций) итого мы видим меняли ли код или нет, стоит добавить в main хоть одну функцию и все, это тут же детектится.
Я писал полностью кастомного инит, довольно геморно, нужно запороть карту так чтобы читер грешил на Читы а не на защиту.
Забудь- они оба коверкают заголовок и смещяют на N байт, это не спасет от мпк эдитора...
То что поотектит в 1 кнопку научились открывать так же в кнопку, щяс реальный вариант не гадить заголовок ибо его уже ни один редактор не смотрит ибо предсказуемо что там ахинея и нужно рассчитывать длинну архива и конец заголовка самостоятельно...
Изгадить хештаблицу и внести в нее лже файлы, увы об этом мало подробной инфы а тулы вовсе никто не писал, так выложили пару примеров с уже протектнутыми картами и все.
Ну боба протектор (somji) но. Его научились обходить, прочие защиты уникальны и не "слиты" в паблик, эмитировать их можно только руками, глядя на защищенную им карту.
Есть способ защиты кода с помощью ретурн бага, который я уже описывал - но там нужно хорошое познание jass.
Pro100Gaus, Особо не защитишь, ну только если от идиотов. Суть защиты? Есть что то что не хочется показывать другим? Остачертели читоры? Решил торговать пикселями по образу и подобию велв?
Очередная ахинея, чувак не ищет легких путей.
Собственно от не героя героя и отличает опыт со статами, ненужны статы - ненужен герой, некоторые вещи можно сделать куда проще если хорошенько подумать.
Не boolean а booexpr - это фильтр для группы, там никакие локалка не нужны.
Саму группу можно перебирать в цикле что правда дает шанс попасть в лимит операций и грохнуть поток.
Делать нужно примерно вот так :
function OnlyEnemyGroundAlive takes nothing returns boolean
return GetUnitState( GetFilterUnit(), UNIT_STATE_LIFE )> 0.405 and IsUnitEnemy( GetFilterUnit(), bj_groupEnumOwningPlayer ) and IsUnitType( GetFilterUnit(), UNIT_TYPE_GROUND )
endfunction
function DamageEnemy takes nothing returns nothing
call UnitDamageTarget( bj_lastReplacedUnit, GetEnumUnit(), 100.00, false, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_COLD, WEAPON_TYPE_WHOKNOWS )
endfunction
function Temp takes nothing returns nothing
local group grp = CreateGroup( ) //создаём группу юнитов
local real dx = 0.00 // координата x
local real dy = 0.00 // координата y
set bj_groupEnumOwningPlayer == Player(0) // глобальная переменная чтобы передать данные в фильтр
call GroupEnumUnitsInRange( grp, dx, dy, 512.00, Condition( function OnlyEnemyGroundAlive) )
set bj_lastReplacedUnit = GetTriggerUnit( )// глобальная переменная чтобы передать данные в другую функцию.
call ForGroup( grp, function DamageEnemy )
call DestroyGroup( grp )
set grp = null
endfunction
David8, какой же ты наивный, лич ломанул доту, исправил данные в слк редакторе и переписал часть (только часть) кода доты в жасскравте, нету у лича полностью опен версии для редактора как и у остальных.
Так что ломаем и востанавоиваем, с вопросами что за и почему так мы постараемся помочь.
Extremator, через глобальную не подходит, так как несколько юнитов могут умереть одновременно. С координатами и JASS, на мой взгляд, лучше всего - точка вообще не нужна. Буду так делать (только через Custom Script).
Если правильно применять глобалки - ничего страшного, что сдохнет 10000 юнитов разом.
Просто в действиях с глобалками низя юзать вейты и действия которые создают новый поток, где юзается эти же глобалки
Яркий пример бы заносим юнита в глобалку, наносим ему урон и вручаем ауру замедления для эмитации баффа, а на юните висит событие = "Юнит получает урон" и там тоже юзаеся эта же глобалка но уже в неё записывается даммик который скажем кастует кислотную бомбу в источник урона если это враг и не дамми юнит...
Результатом будет то что не герой а дамми юнит получит ауру торнадо, из за неправильно организованного кода.
Посему использовать глобалки можно, но нужно с умом.
» WarCraft 3 / Хак на память Warcraft3
Ред. quq_CCCP
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / Там 1.27b вышел
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / кто желает заработать? jass
» WarCraft 3 / Увеличилось ли значение памяти для мультиплеерных карт?
» WarCraft 3 / Морф иллюзии (или альтернатива)
» WarCraft 3 / Увеличилось ли значение памяти для мультиплеерных карт?
Снова есть ретурн баг, подгружаешь микс архив всем кто запустил карту без их ведома и подключаешь, пусть улыбаются.
Правда могут быть проблемы с некоторыми античитами.
» WarCraft 3 / Морф иллюзии (или альтернатива)
» WarCraft 3 / Защита
Я писал полностью кастомного инит, довольно геморно, нужно запороть карту так чтобы читер грешил на Читы а не на защиту.
» WarCraft 3 / Защита
То что поотектит в 1 кнопку научились открывать так же в кнопку, щяс реальный вариант не гадить заголовок ибо его уже ни один редактор не смотрит ибо предсказуемо что там ахинея и нужно рассчитывать длинну архива и конец заголовка самостоятельно...
Изгадить хештаблицу и внести в нее лже файлы, увы об этом мало подробной инфы а тулы вовсе никто не писал, так выложили пару примеров с уже протектнутыми картами и все.
» WarCraft 3 / Защита
Есть способ защиты кода с помощью ретурн бага, который я уже описывал - но там нужно хорошое познание jass.
» WarCraft 3 / Защита
» WarCraft 3 / Как убрать характеристики у героя
» WarCraft 3 / Как убрать характеристики у героя
Собственно от не героя героя и отличает опыт со статами, ненужны статы - ненужен герой, некоторые вещи можно сделать куда проще если хорошенько подумать.
» WarCraft 3 / Строются Пушки из башен
» WarCraft 3 / Разбойник
» WarCraft 3 / Строются Пушки из башен
» WarCraft 3 / Действие с группой в одну строку
Саму группу можно перебирать в цикле что правда дает шанс попасть в лимит операций и грохнуть поток.
Делать нужно примерно вот так :
» WarCraft 3 / Время действия ауры
» WarCraft 3 / Исходники дота 6.84
Так что ломаем и востанавоиваем, с вопросами что за и почему так мы постараемся помочь.
» WarCraft 3 / Восстановление кампании
» WarCraft 3 / Здание, приносящее инком
» WarCraft 3 / Утечка памяти или нет?
Просто в действиях с глобалками низя юзать вейты и действия которые создают новый поток, где юзается эти же глобалки
Яркий пример бы заносим юнита в глобалку, наносим ему урон и вручаем ауру замедления для эмитации баффа, а на юните висит событие = "Юнит получает урон" и там тоже юзаеся эта же глобалка но уже в неё записывается даммик который скажем кастует кислотную бомбу в источник урона если это враг и не дамми юнит...
Результатом будет то что не герой а дамми юнит получит ауру торнадо, из за неправильно организованного кода.
Посему использовать глобалки можно, но нужно с умом.
» WarCraft 3 / Заблокировать урон, больше максимума здоровья (без неуязвимости)