А во, нашёл - атвор нафига пихать юнитов за границу обзора? От того и вылетает, убери всех юнитов с краёв карты, ваще чтобы даже близко не было. Так же увеличь границы карты, чтобы всё влезло.
По-моему дело в юнитах красного игрока. Удалив этот отряд орков с огром все ок работает. Перемещение не помогает.
Странно, зависает при создании декора\юнитов и вылетает. Но тут не классический FattalError а просто виндовс ищет способ устранения ошибки.
Мб багнутый импорт? Но ничего особенного не увидел, вроде нету краш моделек.
А во, нашёл - атвор нафига пихать юнитов за границу обзора? От того и вылетает, убери всех юнитов с краёв карты, ваще чтобы даже близко не было. Так же увеличь границы карты, чтобы всё влезло.
Аура выносливости, меняем её на пустую (у найтсталкера 5 уровней у пассивки, днем всегда 5 уровень и нулевой бонус, а по ночам реальный уровень)
Либо берешь за основу способности без иконки, либо засовываешь её в спеллбук и запрещяешь его для игрока, либо хак на память (лежит в барахолке) и прятать абилку.
16GB, Как они выпилят если они о нем не знают, а когда узнают то уже начнется трешь и угар, там не до варкравта будет. Прикинь тебе вирус зашифровал все данные на диски и выдал сообщение о том что ты вшивый читер, прощайся со своими данными?
Надеюсь щяс не проснутся юнные вирусописатели? Какой нить обновлённый OneHalf поймать играя в вар будет не лучшей перспективой, хотя с другой стороны авторам всяких гоблинов должно быть радостно, появилась возможность наказывать читеров очень жеско, так что больше читерить не захочется (да и вовсе не до варкравта будет).
quq_CCCP, дык вроде как написали, что можно ретурнбагом юзеру вредить, так они и зашевелились по поводу фикса.
Вредить можно и сейчас, путей там много, от скачать ехе файлик в папку автозагрузки до создания ддлки средствами вара, тока нужно знать о дырках в винде побольше, иначе эти доморощенные вирусы обречены на провал с нынешним развитием софта.
quq_CCCP, хм, значит близзы должны скоро всё это зарубить -_- Интересно, дадут ли что взамен, как с предыдущим ретурнбагом?
Думаю они не знают об этом, вирусописателей то поубавилось как и юзеров которым это интересно, открыть страничку в браузере вроде у нас на XGM выкладывали на ретурн баге еще во времена патча 1.21...
Они кое как сделали 27 патч и все, пропали... видимо до вк 4.
чет полная жесть уже начинает с этой штуковиной :(
страшно становится после этого запускать. А то еще вирусняки начнет качать. Интересно было бы почитать как эта штука работает
в гите и на хайве не удалось увидеть
Кстати там есть функции создания файла на машине юзера и открывания ссылки в браузере, а так же сколачивание с указанного сайта указанного файла на пк юзера (юзается для обновление версии карты у лича)
Очень даже можно загнать читерам, ломающим карты вирус позлее вроде Neshta чтобы потом мучились.
quq_CCCP, хеш таблицы сами по себе медленнее хромого коня, или они все таки перегоняют эту функцию в скорости?
Ну вот как раз хештаблицы то не медленные, а быстрее чем каждый раз искать, да и это грубый пример оптимизации, как будто вы забыли про системы хранения данных на массивах?
Думаю все в курсе что GetUnitAbilityForAddresss довольно медленная функция ( по тестам лича в 15 раз медленее чем GetUnitAbilityLevel )
По этому стоит проверять наличие аблики у цели по GetUnitAbilityLevel а так же заносить результаты в хештаблицу или массив для более быстрой работы.
Поэтому вот 1 из вариантов оптимизации:
код
function GetUnitAbilityForAddresss takes integer pConvertedHandle, integer abilid returns integer
local integer pAddr1 = pConvertedHandle + 476
local integer pAddr2 = pConvertedHandle + 480
local integer pOff1 = LoadInteger( gg_htb_HashData, abilid, pConvertedHandle )
if pOff1 > 1 then
call BJDebugMsg("Значение уже записано!")
return pOff1
endif
set pAddr1 = Memory[pAddr1 / 4]
set pAddr2 = Memory[pAddr2 / 4]
if pAddr1 == 0 or pAddr2 == 0 or BitwiseAnd( pAddr1, pAddr2 ) == -1 then
return 0
endif
set pOff1 = GetSomeAddressForAbility( pAddr1, pAddr2 )
if pOff1 == 0 then
return 0
endif
loop
exitwhen pOff1 == 0
if Memory[pOff1 / 4 + 52 / 4] == abilid then
call SaveInteger( gg_htb_HashData, abilid, pConvertedHandle, pOff1 )
return pOff1
endif
set pOff1 = GetSomeAddressForAbility( Memory[pOff1 / 4 + 36 / 4], Memory[pOff1 / 4 + 40 / 4] )
endloop
return pOff1
endfunction
Ии небудет никогда юзать негативные заклинание ( по его мнению) в союзников, а в противников не может из за установленных целей в настройках способности. Цепь молний с отрец уроном будет лечить здоровье, самый простой вариант без кода.
Канал кстати какой ему ид приказа не укажи Ии тоже не юзает.
16GB, не проверял но лучше синкать строки ибо может быть десинх если ты будешь брать инфу у абилок.
В теории локальное изменение строк прокатит, ибо это все лишь ссылка на разное содержимое.
Нужно будет протестить.
quq_CCCP, дык я имел в виду динамическое описание у предметов, а не блокировку.
А он не блокиурет а меняет один предмет другим, правда перетаскивая способности от другого. Сделай N одинаковых предметов с разными описаниями и меняй их этой функцией.
Я проверял на талисмане жизни и предмету с активкой добавляющим броню, в результате описание и иконка сменились а нажимать низя, бонус хп остялся и добавилась защита.
Кастом стун увы кривой, нужно переписывать функцию.
Нужно обязательно следить за смертью юнита, даже если у него есть крест перерождения - стоит затунить мертвого и на него не будет действовать ни 1 стун. Кет:
Она уже есть!
Для предметов вроде нет. Эх =(
Зато есть:
function ChangeItemId takes item it, integer targetID returns nothing
local integer cid=ConvertHandle(it)/4
local integer curID
if cid == 0 then
return
endif
set curID=Memory[cid+0x30/4]
set Memory[cid+0x30/4]=targetID
endfunction
Назначает одному предмету описание и иконку другого, кликабельность и все бонусы нет, просто добавляет в бонусы первого бонусы от второго, если они влезут (4 способности лимит так и остался), тоже неплохо для реализации блокировки предметов.
l_Avenger_l, копировать - это сам хак и пару функций для теста, остальные копируем с гитхаба и вносим в свою карту, функций очень много я не вносил их все + дебаги лича, копируй самостоятельно или пиши функции сам лич уже выложил гайд про устройство структуры юнитов.
А как выяснить тип нанесенного урона(с руки или спелл)?
Нужно триггер на событие получения урона и смотреть тип атаки и урона, и гадать.
вот код
// WARNING!! IT CAN BE USED ONLY IN FIRST CONDITION AT FIRST POSITION
function GJ_GetRealDmg126a takes nothing returns real
return cleanReal(indexToReal(ReadEBP_offset(0x380)))
endfunction
// WARNING!! IT CAN BE USED ONLY IN FIRST CONDITION AT FIRST POSITION
function GJ_GetRealDmg127a takes nothing returns real
return cleanReal(indexToReal(ReadEBP_offset(0x400)))
endfunction
function GJ_SaveLastDmg126a takes nothing returns boolean
if GetTriggerEventId()!=EVENT_UNIT_DAMAGED then
return true
endif
set GJ_LastDmg = GJ_GetRealDmg126a( )
set GJ_LastAttackType=ReadEBP_offset(0x37C)
if ReadEBP_offset(0x368)!=0 or ReadEBP_offset(0x378)==0x3F800000 then
set GJ_LastDamageType=0
else
set GJ_LastDamageType=ReadEBP_offset(0x378)
endif
// call BJDebugMsg("rewrote with "+R2S(GJ_LastDmg))
return true
endfunction
function GJ_SaveLastDmg127a takes nothing returns boolean
if GetTriggerEventId()!=EVENT_UNIT_DAMAGED then
return true
endif
set GJ_LastDmg = GJ_GetRealDmg127a( )
set GJ_LastAttackType=ReadEBP_offset(0x3B0)
if ReadEBP_offset(0x3CC)!=0 then
set GJ_LastDamageType=0
else
set GJ_LastDamageType=ReadEBP_offset(0x3F0)
endif
return true
endfunction
нужно еще 3 глобалки, эту функцию в условие триггера и все.
Далее смотрим на тип урона.
» WarCraft 3 / Краш игры во время загрузки
» WarCraft 3 / Краш игры во время загрузки
Мб багнутый импорт? Но ничего особенного не увидел, вроде нету краш моделек.
А во, нашёл - атвор нафига пихать юнитов за границу обзора? От того и вылетает, убери всех юнитов с краёв карты, ваще чтобы даже близко не было. Так же увеличь границы карты, чтобы всё влезло.
» WarCraft 3 / Как сделать юнита невыделяемым,но уязвимым
» WarCraft 3 / Как сделать, чтобы здание не было видно в тумане войны?
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / Каст через предмет с проигрыванием анимации?
» WarCraft 3 / способность night hunter + способность без иконки
Либо берешь за основу способности без иконки, либо засовываешь её в спеллбук и запрещяешь его для игрока, либо хак на память (лежит в барахолке) и прятать абилку.
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / Хак на память Warcraft3
Они кое как сделали 27 патч и все, пропали... видимо до вк 4.
» WarCraft 3 / Хак на память Warcraft3
Очень даже можно загнать читерам, ломающим карты вирус позлее вроде Neshta чтобы потом мучились.
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / Хак на память Warcraft3
Ред. quq_CCCP
» WarCraft 3 / Хак на память Warcraft3
По этому стоит проверять наличие аблики у цели по GetUnitAbilityLevel а так же заносить результаты в хештаблицу или массив для более быстрой работы.
Поэтому вот 1 из вариантов оптимизации:
Ред. nvc123
» WarCraft 3 / Аналог способности канал
Канал кстати какой ему ид приказа не укажи Ии тоже не юзает.
» WarCraft 3 / Хак на память Warcraft3
В теории локальное изменение строк прокатит, ибо это все лишь ссылка на разное содержимое.
Нужно будет протестить.
» WarCraft 3 / Аналог способности канал
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / Хак на память Warcraft3
Я проверял на талисмане жизни и предмету с активкой добавляющим броню, в результате описание и иконка сменились а нажимать низя, бонус хп остялся и добавилась защита.
» WarCraft 3 / Хак на память Warcraft3
Нужно обязательно следить за смертью юнита, даже если у него есть крест перерождения - стоит затунить мертвого и на него не будет действовать ни 1 стун.
Кет: Зато есть:
Ред. quq_CCCP
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / Хак на память Warcraft3
вот код
Далее смотрим на тип урона.