Ладно, достало, уже все нервы выжжены и нет времени разбираться, абиле просто сделан частично упрощенный реворк (вместо вычитания белого урона вычитается минус бонусом через многоуровневую абилу).
DracoL1ch, а новый мемхак безопасный именно потому, что они там уже есть?
////////////
O_O shit. Что за прикол?! Тут причина та же самая?
Это из другой карты для игры... Но вроде бы код уже исправленный туда всунут!!! Сейчас офк перепроверю.
Но в русской три Кратоса друг друга 20 минут долбали - все норм было. В англ. ща очень быстро даже с одного фатал вылетел.
upd: да, округление есть, это точно в ENG.w3x war3map.j....
function Suppression takes nothing returns nothing ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u6
local timer t= CreateTimer()
local unit u5= GetAttackedUnitBJ()
local unit u6= GetAttacker() ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
local real Suppressionhash= 0
local real damagedebuff= 0
local integer damagedebuffconvert= 0
set Suppressionhash=LoadReal(udg_Hash, GetHandleId(u6), StringHash("Suppressionhash"))
if ( IsUnitEnemy(u6, GetOwningPlayer(u5)) == true ) and ( IsUnitType(( u6 ), UNIT_TYPE_ANCIENT) != true ) and ( IsUnitType(( u6 ), UNIT_TYPE_STRUCTURE) != true ) and Suppressionhash == 0 then
if GetUnitBaseDamage(u6) <= GetUnitBaseDamage(u5) then
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u6
set t=null
set u5=null
set u6=null ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
endfunction
Ну так это понятно, что функции урона в этот момент были
там два clawbfs.ucoz.ru/forum/3-1839-1 с двумя прокачанными пассивками били друг друга
"Спарта!" действует с шансом, а Подавление - гарантированно
Но вопрос, что именно вызывает фатал (точно что-то из этого, там фатал был потом еще раз, ульты в этот момент прокачано не было, Qшка во второй раз тоже 90%, что не юзалась).
Вот см. по ссылке че абилы делают и выше коды
Там да, или как-то связанный с атакой бесконечный цикл создается, или пытается записаться что-то, что записаться не может
///////////////////////////
Вот так да, если посмотреть, допустим, у первого 100 атака, у второго 100 тоже
первый второму пассивкой режет, второй в обратку первому...
ммм... может, попытка записать в атаку дробную реалку вызывает фатал? Но тоже бред, дробные реалки в броню же норм пишутся
//////////
Кстати, да, енейбл-дизейбл Спарты фактически уже есть сохраняемым в хэш числом, так что дело не в этом... =/ ну блииин
///////
так, ладно, пока карта грузится, знаю, что делать
протестирую с ботом, прокачав себе только Подавление, Спарта! на одного себя гарантированно фатала не вызывает, в тест-карте Спарта! и Подавление нормально работали в окружении. Прокачаю Подавление, поставлю бота, он раскачается, прокачает Спарта! и Подавление, себе прокачаю только Подавление, пойду его бить. Если зафаталит - 95%, что проблема в способности "Подавление".
//
done
Ага. Со Спартой (пассивка на шанс дать себе вамп при атаке и рефрешнуть ее кд) все ок.
Значит, ща Подавлению пропишу дополнительно в нужных местах:
local real Suppressionhash2 = 0
set Suppressionhash2 = LoadReal(udg_Hash,GetHandleId(u5),StringHash("Suppressionhash"))
and Suppressionhash2 == 0
так по идее у двух сражающихся с Подавлением оно сразу триггериться будет не должно.
Проверим.
////////////
upd: МЛЯТЬ, вот сейчас выхожу и снова фатал.
Все-таки попробую еще помимо этого прописать, чтобы damagedebuff округлялась до целых...
Ну расклад тот, что это, крч, в любом случае 95%, что способность "Подавление"
При вэшке спок без Подавления у второго несколько секунд два Спартанца друг друга били, а когда W и E были и у того и того прокачаны - фатал вылетал почти сразу
Ща вот фатал в конце вылетел, когда они вообще в разных местах карты были и уже игра выключалась после тестирования, но у второго-то E была
там вот как-то видимо все-таки че-то ухитряется недопустимое писаться, мб атака продрачивается до тысячных долей, что ли, и вылетает фатал
да, скорее всего проблема в тысячных долях атаки
у Психопомпы как-то так вроде с кд было
ща округление крч мутить надо лучше и проще, да
///
local integer damagedebuffconvert = 0
///
И ПОСЛЕ ЭТОЙ (она уже есть) строчки:
set damagedebuff = (0.02 + (0.08 * (GetUnitAbilityLevelSwapped ('A31D', u5))) ) * (GetUnitBaseDamage(u6))
/////////////
set damagedebuffconvert = R2I(damagedebuff)
set damagedebuff = I2R(damagedebuffconvert)
///////////////
попробую так
//
а доп. ифзенэлсы хэша пока писать все-таки не буду
потому что в первом ифзенэлсе все равно только целые числа участвуют, а при втором хэш все равно на одного вешается и цикла быть не должно
/
ВРОДЕ ОК. В игре было аж 3 Кратоса, фатала не было.
Про тот-то все ок уже, просто в др. теме
Так. Ладно, спок, спок, релаксим, все хорошо
По тесту ингейм уже видно, что сила героя ок
Это явно какая-то из этих пассивок, Я НЕ БУДУ ВСТАВЛЯТЬ ЭТОТ **** КАТ, потому что это трата усилий, и так ща *** срыв нервный будет
///////////////////
**
function Sparta takes nothing returns nothing ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: it, u5, p
local item it
local unit u5 = GetAttackedUnitBJ()
local location p = GetUnitLoc(GetAttackedUnitBJ()) ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
local real Spartahash = 0
set Spartahash = LoadReal(udg_Hash,GetHandleId(u5),StringHash("Spartahash"))
if (10 + ( GetUnitAbilityLevelSwapped('A31C', u5) * 5) >= GetRandomInt(1,100)) and Spartahash == 0 then
СБРОС ПЕРЕЗАРЯДКИ АТАКИ
call ResetAttackCooldown(u5) СБРОС ПЕРЕЗАРЯДКИ АТАКИ - ЗАКРЫТО.
ЗАНОСИМ ПРЕДМЕТ В ПЕРЕМЕННУЮ СРАЗУ ПОСЛЕ СОЗДАНИЯ, ПОТОМ ОБЯЗ РЕМУВ
call CreateItemLoc( 'I01W', p )
set it = GetLastCreatedItem()
call UnitAddItemSwapped( it, GetAttackedUnitBJ() )
call RemoveItem (it) ЗАНОСИМ ПРЕДМЕТ В ПЕРЕМЕННУЮ СРАЗУ ПОСЛЕ СОЗДАНИЯ, ПОТОМ ОБЯЗ РЕМУВ - ЗАКРЫТО.
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: it, u5, p
set it = null
set u5 = null
set p = null ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
endfunction
function Suppression2 takes nothing returns nothing ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u6
local timer t = GetExpiredTimer()
local unit u5 = LoadUnitHandle(udg_Hash,GetHandleId(t),2)
local unit u6 = LoadUnitHandle(udg_Hash,GetHandleId(t),1) ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
local real Suppressionhash = 0
set Suppressionhash = LoadReal(udg_Hash,GetHandleId(u6),StringHash("Suppressionhash"))
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u6
set t=null
set u5=null
set u6=null ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
endfunction
function Suppression takes nothing returns nothing ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u6
local timer t = CreateTimer()
local unit u5 = GetAttackedUnitBJ()
local unit u6 = GetAttacker() ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
local real Suppressionhash = 0
local real damagedebuff = 0
set Suppressionhash = LoadReal(udg_Hash,GetHandleId(u6),StringHash("Suppressionhash"))
if (IsUnitEnemy(u6,GetOwningPlayer(u5)) == true) and ( IsUnitType((u6), UNIT_TYPE_ANCIENT) != true ) and ( IsUnitType((u6), UNIT_TYPE_STRUCTURE) != true ) and Suppressionhash == 0 then
if GetUnitBaseDamage(u6) <= GetUnitBaseDamage(u5) then
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u6
set t = null
set u5 = null
set u6 = null ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
endfunction
////////////
так
ну и чо мы тут видим
допустим, Sparta может вызывать перезарядку атаки, когда тебя атакует враг
т. е. тебя атакует враг, у него тоже Спарта, у тебя сброс кд ты сразу его у него сброс он сразу тебя --- цикл? Но хм, ведь там ШАНС!
Однако попробую просто при переносе отключать триг в начале и вкл в конце
По Подавлению есть сомнения, но ведь там первое действие не может создать цикл, а второе имеет кд на 2 секунды...
Ладно, крч, пока идея Спарту отключить, посмотрим
DracoL1ch, ну апгрейдом понятно, идет.
А хил с заклинания? Если вот накинули омоложение, то его хил будет считаться хп регеном этого юнита на время действия омоложения?
function GetUnitHPRegen takes unit u returns real
return GetUnitHPRegenForAddress(ConvertHandle(u))
endfunction
все давно хотелось спросить, что точно это считает
что поле из РО хп регена и что в него аналогичная функция пишет - это ок, давно понятно
а если там реген апгрейдом добавлен?
а если с ауры идет?
а если баффом каким-то?
а если какое-нить омоложение мишек лечит?
Проще сделать пустые руны, а при их поднятии проверять, герой ли поднял, если да - давать статы, если нет - камбекать деньги или предмет обратно ресоздавать
Ладно, зел дамаг проехали, подскажите плз адреса полей для абилок длительность воздействия герой и длительность воздействия нормальная, желательно в формате старого мемхака
ScorpioT1000, что сломается? Мной использована, допустим, функция SetUnitGreenBonusDamage - присчитать текущий бонусный урон и добавить, скажем, 20. В синглплеере эти 20 добавляются к белому. Что будет в сетевой?
Десинк? Но почему? Ведь юнит-то изменяется глобально.
Лаги? Но ведь операция одноразовая...
/
крч, ладно, ппц, выпилена эта функция, раз она все равно норм не действует и фактически белый меняет, можно не отвечать
по старинке зеленый многлвльными абилами на прелоаде буду и/или там еще систему по идее можно запилить как с увеличением макс хп через предметную, мб будет пахать
function SetUnitGreenBonusDamage takes unit u, integer i returns nothing
set Memory[GetUnitAttackAbility(u)/4 + 0xAC/4]=i
endfunction
У меня изменения почему-то происходят не с зеленым уроном, а с белым
/////////
Upd: ну перепроверено - благо хоть считается бонусный урон нормально, а вот при попытке задать зеленый у меня почему-то меняется белый на заданное значение зеленого
DracoL1ch, "множество"? А нельзя в mdlvis вообще какое угодно анимации имя дать, хоть xgm? По-моему, она будет доступна в редакторе (проигрываться, естественно, только триггерно). Или все-таки есть некоторый список доступных имен?
Nosferoh, по дефолту давно аллпик с одним баном, каждый может ввести -ban xxx, где вместо xxx номер героя (clawbfs.ucoz.ru/forum/3-2-1 тут посмотреть можно) и этот герой пропадет из таверны (нарандомить все равно можно, но шанс < 0.5%).
Это да, заодно на случай, если кто вдруг играет по сети (давно не тестировалось, но должно быть можно, если не мешает мх) и вылезет какой критичный баг, чтобы героя можно было просто заблокировать, а вообще банить и по предпочтениям можно просто.
Там с Викингами вообще кучу костылей в систему вошло, потому что они три героя сразу, а не один. Реализовано это так: в таверне для найма пикается даммик - юнит без модели с отрицательной регенерацией здоровья (умирает буквально через долю секунды) и дефолтной абилой гидры на спавн после смерти, а юниты после спавна, поставленные в РО - три викинга (вот в последней большой версии как раз им поставлены прямо модели из HotS). Но это только после пика, а вот блокировка этого даммика в таверне, репики, свапы, разные моды - во все это их ппц вписывать пришлось, ну вот ща вроде пока ошибок больше не замечено.
Действия - список из всех твоих способностей для всех героев и задавать их уровни равными его уровню
Все
Проверять, есть ли у него эта способность, не надо: если ее нет, то она не появится
KingMaximax, ОаД с ней не смог конкурировать даже в глазах Дуоса? Даже в идеальном видении, а не в том, который позволили его силы и желание? Просто представить себе идеальный оад - на своем движке, с разрабами профессионалами на не-варкрафтовском коде, с суперграфикой, но и с супероптимизацией, чтоб даже на вёдрах работало... Даже такой оад для него лучше лиги не был бы? Просто интересно.
» WarCraft 3 / Срочно прошу причины фатала
Но про то, что функция кулдауна может фаталить, плз поподробнее
» WarCraft 3 / Срочно прошу причины фатала
Ред. ClotPh
» WarCraft 3 / Срочно прошу причины фатала
////////////
O_O shit. Что за прикол?! Тут причина та же самая?
Это из другой карты для игры... Но вроде бы код уже исправленный туда всунут!!! Сейчас офк перепроверю.
Но в русской три Кратоса друг друга 20 минут долбали - все норм было. В англ. ща очень быстро даже с одного фатал вылетел.
upd: да, округление есть, это точно в ENG.w3x war3map.j....
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u6
local timer t= CreateTimer()
local unit u5= GetAttackedUnitBJ()
local unit u6= GetAttacker()
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
local real Suppressionhash= 0
local real damagedebuff= 0
local integer damagedebuffconvert= 0
set Suppressionhash=LoadReal(udg_Hash, GetHandleId(u6), StringHash("Suppressionhash"))
call ConditionalTriggerExecute(gg_trg_destroyspeceffect)
set damagedebuff=( 0.02 + ( 0.08 * ( GetUnitAbilityLevelSwapped('A31D', u5) ) ) ) * ( GetUnitBaseDamage(u6) )
set damagedebuffconvert=R2I(damagedebuff)
set damagedebuff=I2R(damagedebuffconvert)
call SetUnitBaseDamage(u6 , GetUnitBaseDamage(u6) - R2I(damagedebuff))
call SaveReal(udg_Hash, GetHandleId(u6), StringHash("Suppressionhash"), damagedebuff)
СЧИТАЕМ, СКОЛЬКО МИНУСОВАТЬ, МИНУСУЕМ И СЭЙВИМ В ХЭШ - ЗАКРЫТО.
call SaveUnitHandle(udg_Hash, GetHandleId(t), 1, u6)
call TimerStart(t, 2, false, function Suppression2)
call SetUnitBaseDamage(u5 , GetUnitBaseDamage(u5) + ( GetUnitAbilityLevelSwapped('A31D', u5) ))
ПРОСТО ДОБАВЛЯЕМ АТАКУ ГЕРОЮ - ЗАКРЫТО.
call DestroyTimer(t)
call FlushChildHashtable(udg_Hash, GetHandleId(t))
call DestroyTimer(t)
call FlushChildHashtable(udg_Hash, GetHandleId(t))
set t=null
set u5=null
set u6=null
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
endfunction
Ред. ClotPh
» WarCraft 3 / Срочно прошу причины фатала
там два clawbfs.ucoz.ru/forum/3-1839-1 с двумя прокачанными пассивками били друг друга
"Спарта!" действует с шансом, а Подавление - гарантированно
Но вопрос, что именно вызывает фатал (точно что-то из этого, там фатал был потом еще раз, ульты в этот момент прокачано не было, Qшка во второй раз тоже 90%, что не юзалась).
Вот см. по ссылке че абилы делают и выше коды
Там да, или как-то связанный с атакой бесконечный цикл создается, или пытается записаться что-то, что записаться не может
///////////////////////////
первый второму пассивкой режет, второй в обратку первому...
ммм... может, попытка записать в атаку дробную реалку вызывает фатал? Но тоже бред, дробные реалки в броню же норм пишутся
//////////
Кстати, да, енейбл-дизейбл Спарты фактически уже есть сохраняемым в хэш числом, так что дело не в этом... =/ ну блииин
///////
так, ладно, пока карта грузится, знаю, что делать
протестирую с ботом, прокачав себе только Подавление, Спарта! на одного себя гарантированно фатала не вызывает, в тест-карте Спарта! и Подавление нормально работали в окружении. Прокачаю Подавление, поставлю бота, он раскачается, прокачает Спарта! и Подавление, себе прокачаю только Подавление, пойду его бить. Если зафаталит - 95%, что проблема в способности "Подавление".
//
Ага. Со Спартой (пассивка на шанс дать себе вамп при атаке и рефрешнуть ее кд) все ок.
Значит, ща Подавлению пропишу дополнительно в нужных местах:
Проверим.
////////////
upd: МЛЯТЬ, вот сейчас выхожу и снова фатал.
Все-таки попробую еще помимо этого прописать, чтобы damagedebuff округлялась до целых...
Ну расклад тот, что это, крч, в любом случае 95%, что способность "Подавление"
При вэшке спок без Подавления у второго несколько секунд два Спартанца друг друга били, а когда W и E были и у того и того прокачаны - фатал вылетал почти сразу
Ща вот фатал в конце вылетел, когда они вообще в разных местах карты были и уже игра выключалась после тестирования, но у второго-то E была
там вот как-то видимо все-таки че-то ухитряется недопустимое писаться, мб атака продрачивается до тысячных долей, что ли, и вылетает фатал
да, скорее всего проблема в тысячных долях атаки
у Психопомпы как-то так вроде с кд было
ща округление крч мутить надо лучше и проще, да
set damagedebuff = (0.02 + (0.08 * (GetUnitAbilityLevelSwapped ('A31D', u5))) ) * (GetUnitBaseDamage(u6))
set damagedebuff = I2R(damagedebuffconvert)
//
а доп. ифзенэлсы хэша пока писать все-таки не буду
потому что в первом ифзенэлсе все равно только целые числа участвуют, а при втором хэш все равно на одного вешается и цикла быть не должно
/
ВРОДЕ ОК. В игре было аж 3 Кратоса, фатала не было.
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / Срочно прошу причины фатала
Так. Ладно, спок, спок, релаксим, все хорошо
По тесту ингейм уже видно, что сила героя ок
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: it, u5, p
local item it
local unit u5 = GetAttackedUnitBJ()
local location p = GetUnitLoc(GetAttackedUnitBJ())
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
local real Spartahash = 0
set Spartahash = LoadReal(udg_Hash,GetHandleId(u5),StringHash("Spartahash"))
call ConditionalTriggerExecute( gg_trg_destroyspeceffect )
call ResetAttackCooldown(u5)
СБРОС ПЕРЕЗАРЯДКИ АТАКИ - ЗАКРЫТО.
call CreateItemLoc( 'I01W', p )
set it = GetLastCreatedItem()
call UnitAddItemSwapped( it, GetAttackedUnitBJ() )
call RemoveItem (it)
ЗАНОСИМ ПРЕДМЕТ В ПЕРЕМЕННУЮ СРАЗУ ПОСЛЕ СОЗДАНИЯ, ПОТОМ ОБЯЗ РЕМУВ - ЗАКРЫТО.
set it = null
set u5 = null
set p = null
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
endfunction
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u6
local timer t = GetExpiredTimer()
local unit u5 = LoadUnitHandle(udg_Hash,GetHandleId(t),2)
local unit u6 = LoadUnitHandle(udg_Hash,GetHandleId(t),1)
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
local real Suppressionhash = 0
set Suppressionhash = LoadReal(udg_Hash,GetHandleId(u6),StringHash("Suppressionhash"))
call DestroyTimer (t)
call FlushChildHashtable (udg_Hash, GetHandleId(t))
set t=null
set u5=null
set u6=null
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
endfunction
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u6
local timer t = CreateTimer()
local unit u5 = GetAttackedUnitBJ()
local unit u6 = GetAttacker()
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
local real Suppressionhash = 0
local real damagedebuff = 0
set Suppressionhash = LoadReal(udg_Hash,GetHandleId(u6),StringHash("Suppressionhash"))
call ConditionalTriggerExecute( gg_trg_destroyspeceffect )
set damagedebuff = (0.02 + (0.08 * (GetUnitAbilityLevelSwapped ('A31D', u5))) ) * (GetUnitBaseDamage(u6))
call SetUnitBaseDamage (u6,GetUnitBaseDamage(u6) - R2I(damagedebuff))
call SaveReal(udg_Hash,GetHandleId(u6),StringHash("Suppressionhash"),damagedebuff)
СЧИТАЕМ, СКОЛЬКО МИНУСОВАТЬ, МИНУСУЕМ И СЭЙВИМ В ХЭШ - ЗАКРЫТО.
call SaveUnitHandle(udg_Hash,GetHandleId(t),1,u6)
call TimerStart(t,2,false,function Suppression2)
call SetUnitBaseDamage (u5,GetUnitBaseDamage(u5) + (GetUnitAbilityLevelSwapped ('A31D', u5)))
ПРОСТО ДОБАВЛЯЕМ АТАКУ ГЕРОЮ - ЗАКРЫТО.
call DestroyTimer (t)
call FlushChildHashtable (udg_Hash, GetHandleId(t))
call DestroyTimer (t)
call FlushChildHashtable (udg_Hash, GetHandleId(t))
set t = null
set u5 = null
set u6 = null
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
endfunction
////////////
т. е. тебя атакует враг, у него тоже Спарта, у тебя сброс кд ты сразу его у него сброс он сразу тебя --- цикл? Но хм, ведь там ШАНС!
Однако попробую просто при переносе отключать триг в начале и вкл в конце
По Подавлению есть сомнения, но ведь там первое действие не может создать цикл, а второе имеет кд на 2 секунды...
Ладно, крч, пока идея Спарту отключить, посмотрим
» WarCraft 3 / Хак на память Warcraft3
А хил с заклинания? Если вот накинули омоложение, то его хил будет считаться хп регеном этого юнита на время действия омоложения?
» WarCraft 3 / Хак на память Warcraft3
return GetUnitHPRegenForAddress(ConvertHandle(u))
endfunction
что поле из РО хп регена и что в него аналогичная функция пишет - это ок, давно понятно
а если там реген апгрейдом добавлен?
а если с ауры идет?
а если баффом каким-то?
а если какое-нить омоложение мишек лечит?
» WarCraft 3 / Как запретить юниту поднимать книжки?
» WarCraft 3 / Как показать заклинаний нейтрального/союзного юнита при выборе
» WarCraft 3 / Причины Fatal Erorr-ов?
по логу можно попытаться найти причину фатала
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / Хак на память Warcraft3
Десинк? Но почему? Ведь юнит-то изменяется глобально.
Лаги? Но ведь операция одноразовая...
/
крч, ладно, ппц, выпилена эта функция, раз она все равно норм не действует и фактически белый меняет, можно не отвечать
по старинке зеленый многлвльными абилами на прелоаде буду и/или там еще систему по идее можно запилить как с увеличением макс хп через предметную, мб будет пахать
» Администрация XGM / Не отвечает менеджер проекта
» WarCraft 3 / Хак на память Warcraft3
set Memory[GetUnitAttackAbility(u)/4 + 0xAC/4]=i
endfunction
/////////
» WarCraft 3 / Анимация Stand hit
» WarCraft 3 / Battle for Souls 3.2b
Это да, заодно на случай, если кто вдруг играет по сети (давно не тестировалось, но должно быть можно, если не мешает мх) и вылезет какой критичный баг, чтобы героя можно было просто заблокировать, а вообще банить и по предпочтениям можно просто.
» WarCraft 3 / Battle for Souls 3.2b
» WarCraft 3 / Повышение уровня всех способностей сразу
Все
Проверять, есть ли у него эта способность, не надо: если ее нет, то она не появится
Ред. ClotPh
» WarCraft 3 / Хак на память Warcraft3
но редактирование и считывание поля в любом случае было бы интересным
просто я самостоятельно все еще адреса не определяю
Ред. ClotPh
» WarCraft 3 / Хак на память Warcraft3
Просто DracoL1ch же как-то cdn.dota2.com/apps/dota2/images/items/combo_breaker_lg.png делать надо?
» WarCraft 3 / Модель драгуна (dragoon) из старкрафт 1 или 2
А сейчас что-то не могу быстро найти...
Ну вот что-то www.hiveworkshop.com/threads/cinematic-ish-protoss-dragoon.27984...
Ред. ClotPh
» Мир безумного / Зои Звездная посланница – тизер (League of Legends)