В общем это благополучно не работает
Ятп по сабжевой причине вопроса
Есть идеи как сделать чтобы работало?
Кто не понимает, что это - вопрос не для вас
Ятп по сабжевой причине вопроса
Есть идеи как сделать чтобы работало?
Кто не понимает, что это - вопрос не для вас
if LoadReal(udg_Hash, GetHandleId(udg_Circle[GetConvertedPlayerId(GetOwningPlayer(u5))]), StringHash("waterbecomeother")) == 1 and IsUnitType(u5, UNIT_TYPE_HERO) == true then
set mainstat = 0
if IsUnitType(u6, UNIT_TYPE_HERO) == true then
set bj_forLoopAIndex=1
set bj_forLoopAIndexEnd=5
loop
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
set mainstat = 0
if IsUnitType(u6, UNIT_TYPE_HERO) == true then
set bj_forLoopAIndex=1
set bj_forLoopAIndexEnd=5
loop
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
if GetAbilityMaxLevel(GetHeroAbilityFromList(u6 , GetForLoopIndexA())) == 2 then
if GetAbilityCD(GetHeroAbilityFromList(u6 , GetForLoopIndexA())) >= 1 then
if GetAbilityCD(GetHeroAbilityFromList(u6 , GetForLoopIndexA())) >= 1 then
if ( GetHeroAbilityFromList(u6 , GetForLoopIndexA()) != 'A0ID' ) and ( GetHeroAbilityFromList(u6 , GetForLoopIndexA()) != 'A1TD' ) and ( GetHeroAbilityFromList(u6 , GetForLoopIndexA()) != 'A1TG' ) and ( GetHeroAbilityFromList(u6 , GetForLoopIndexA()) != 'A1TF' ) and ( GetHeroAbilityFromList(u6 , GetForLoopIndexA()) != 'A01A' ) and ( GetHeroAbilityFromList(u6 , GetForLoopIndexA()) != 'A0SS' ) and ( GetHeroAbilityFromList(u6 , GetForLoopIndexA()) != 'A1VT' ) and ( GetHeroAbilityFromList(u6 , GetForLoopIndexA()) != 'A1VS' ) and ( GetHeroAbilityFromList(u6 , GetForLoopIndexA()) != 'A11С' ) and ( GetHeroAbilityFromList(u6 , GetForLoopIndexA()) != 'A1H5' ) and ( GetHeroAbilityFromList(u6 , GetForLoopIndexA()) != 'A21Y' ) then
set bj_forLoopBIndex=1
set bj_forLoopBIndexEnd=5
loop
exitwhen bj_forLoopBIndex > bj_forLoopBIndexEnd
set bj_forLoopBIndexEnd=5
loop
exitwhen bj_forLoopBIndex > bj_forLoopBIndexEnd
if GetAbilityMaxLevel(GetHeroAbilityFromList(u5 , GetForLoopIndexB())) == 2 then
if GetAbilityCD(GetHeroAbilityFromList(u5 , GetForLoopIndexB())) >= 1 then
call SetPlayerAbilityAvailableBJ(false, GetHeroAbilityFromList(u5 , GetForLoopIndexB()), GetOwningPlayer(u5))
call SetHeroAbilityFromList(u5 , GetForLoopIndexB() , GetHeroAbilityFromList(u6 , GetForLoopIndexA()))
ВНИМАНИЕ! ЕСЛИ АБИЛА УЖЕ ЕСТЬ, РАЗБЛОК ЕЕ, ЕСЛИ НЕТ - АНЛОК 2 СКИЛЛПОИНТА И КАЧАЕМ
if GetUnitAbilityLevelSwapped(GetHeroAbilityFromList(u6 , GetForLoopIndexA()), u5) != 0 then
call SetPlayerAbilityAvailableBJ( true, GetHeroAbilityFromList(u5 , GetForLoopIndexB()), GetOwningPlayer(u5) )
else
call ModifyHeroSkillPoints(u5, bj_MODIFYMETHOD_ADD, 1)
call ModifyHeroSkillPoints(u5, bj_MODIFYMETHOD_ADD, 1)
call SelectHeroSkill(u5, GetHeroAbilityFromList(u5 , GetForLoopIndexB()) )
call SelectHeroSkill(u5, GetHeroAbilityFromList(u5 , GetForLoopIndexB()) )
endif
if GetAbilityCD(GetHeroAbilityFromList(u5 , GetForLoopIndexB())) >= 1 then
call SetPlayerAbilityAvailableBJ(false, GetHeroAbilityFromList(u5 , GetForLoopIndexB()), GetOwningPlayer(u5))
call SetHeroAbilityFromList(u5 , GetForLoopIndexB() , GetHeroAbilityFromList(u6 , GetForLoopIndexA()))
ВНИМАНИЕ! ЕСЛИ АБИЛА УЖЕ ЕСТЬ, РАЗБЛОК ЕЕ, ЕСЛИ НЕТ - АНЛОК 2 СКИЛЛПОИНТА И КАЧАЕМ
if GetUnitAbilityLevelSwapped(GetHeroAbilityFromList(u6 , GetForLoopIndexA()), u5) != 0 then
call SetPlayerAbilityAvailableBJ( true, GetHeroAbilityFromList(u5 , GetForLoopIndexB()), GetOwningPlayer(u5) )
else
call ModifyHeroSkillPoints(u5, bj_MODIFYMETHOD_ADD, 1)
call ModifyHeroSkillPoints(u5, bj_MODIFYMETHOD_ADD, 1)
call SelectHeroSkill(u5, GetHeroAbilityFromList(u5 , GetForLoopIndexB()) )
call SelectHeroSkill(u5, GetHeroAbilityFromList(u5 , GetForLoopIndexB()) )
endif
endif
endif
endif
set bj_forLoopBIndex = bj_forLoopBIndex + 1
endloop
set mainstat = 1
endif
endif
endif
endloop
set mainstat = 1
endif
endif
endif
set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
endloop
if mainstat == 0 then
call AddUnitAttackSpeed(u5 , GetUnitAttackSpeed(u6) * 0.05)
endif
call AddUnitAttackSpeed(u5 , GetUnitAttackSpeed(u6) * 0.05)
endif
endif
endif
endif
Принятый ответ
UPD: пока родилась собственная дико костыльная
А можно просто поискать на сайте, а потом почитать про форматирование.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Если такая абила нашлась, то запускается другой цикл, где точно так же проверяются все абилы изучаемого поля юнита u5.
Если две такие абилы нашлись, то нужно переписать первую на место второй в изучаемом поле
там было самодокументирование но перед публикацией тут было решение выпилить за предположением что с ним будет хуже
Если, допустим, нечто типа 'A000' - тогда не понятно, какого рожна код не работает, потому что он загонялся в редактор для проверки куском (просто в чистую карту без мх) - и единственное, на что ругался - на несуществующие функции.
//////Вот функции эти кстати
set LastConvertedHandle = ConvertHandle( uHero )
return ReadMemory( ReadMemory( LastConvertedHandle + 496 ) + 240 + 4 * list )
endif
return 0
endfunction
function SetHeroAbilityFromList takes unit uHero, integer list, integer abi returns nothing
set LastConvertedHandle = ConvertHandle( uHero )
call WriteMemory( ReadMemory( LastConvertedHandle + 496 ) + 240 + 4 * list, abi )
endif
endfunction
/////
Вот как бы и через что ее перевести в 'A000'
ну понятно в смысле не именно в 'A000' а в формат равкода
UPD: пока родилась собственная дико костыльная, но способная работать идея. Создать героя-даммика с пустым полем, добавить его в особую группу "боты", записать ему искомую абилу в поле через функцию и сразу же повысить ему уровень и отследить триггерно, что он выучит. У меня боты автоматически, просто в определенной последовательности, учат все геройские абилы, а так как абила у него будет единственной, она и будет искомой.
Это дичайший костыль, но это лично мне ща понятно как работать будет
Разумеется, если буду реализовывать, выведу в функцию
PT153, ну хотя бы бы инфа о нем в новой вкладке браузера открывалась, что ли.
А то дико неудобно
Ред. nazarpunk
насчет форматирования см. выше
ну т. е. мне наоборот строку в равкод ок