В общем это благополучно не работает
Ятп по сабжевой причине вопроса
Есть идеи как сделать чтобы работало?
Кто не понимает, что это - вопрос не для вас
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
if GetAbilityMaxLevel(GetHeroAbilityFromList(u6 , GetForLoopIndexA())) == 2 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
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
endif
endif
set bj_forLoopBIndex = bj_forLoopBIndex + 1
endloop
set mainstat = 1
endif
endif
endif
set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
if mainstat == 0 then
call AddUnitAttackSpeed(u5 , GetUnitAttackSpeed(u6) * 0.05)
endif
endif
endif

UPD: пока родилась собственная дико костыльная
А можно просто поискать на сайте, а потом почитать про форматирование.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
30
Эту нечитаемую кашу даже читать лень, на вопрос вам выше ответили, могу только посоветовать Типы и приведение типов.
21
NazarPunk, над этой нечитаемой кашей долго трещали мозги и хочется ее действенной сделать
там было самодокументирование но перед публикацией тут было решение выпилить за предположением что с ним будет хуже
Короче, предельно упрощаю вопрос для знатоков мемхака:
GetHeroAbilityFromList(u5, 1) - например - именно так правильно функция принимает в мемхаке, это точно - возвращает ЧТО?
Если, допустим, нечто типа 'A000' - тогда не понятно, какого рожна код не работает, потому что он загонялся в редактор для проверки куском (просто в чистую карту без мх) - и единственное, на что ругался - на несуществующие функции.
//////Вот функции эти кстати
function GetHeroAbilityFromList takes unit uHero, integer list returns integer
set LastConvertedHandle = ConvertHandle( uHero )
if IsUnitType( uHero, UNIT_TYPE_HERO ) and LastConvertedHandle > 1 and list > 0 then
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 )
if IsUnitType( uHero, UNIT_TYPE_HERO ) and LastConvertedHandle > 1 and list > 0 then
call WriteMemory( ReadMemory( LastConvertedHandle + 496 ) + 240 + 4 * list, abi )
endif
endfunction
/////
Я все-таки так понимаю что он абилу в каком-то цифровом формате выводит
Вот как бы и через что ее перевести в 'A000'
ну понятно в смысле не именно в 'A000' а в формат равкода
2 пункта от Raised: 1.4 (злоупотребление форматированием) Неиспользование форматирования. Как это читать?!
21
/////////////////
UPD: пока родилась собственная дико костыльная, но способная работать идея. Создать героя-даммика с пустым полем, добавить его в особую группу "боты", записать ему искомую абилу в поле через функцию и сразу же повысить ему уровень и отследить триггерно, что он выучит. У меня боты автоматически, просто в определенной последовательности, учат все геройские абилы, а так как абила у него будет единственной, она и будет искомой.
Это дичайший костыль, но это лично мне ща понятно как работать будет
Разумеется, если буду реализовывать, выведу в функцию
PT153, ну хотя бы бы инфа о нем в новой вкладке браузера открывалась, что ли.
А то дико неудобно
30
UPD: пока родилась собственная дико костыльная
А можно просто поискать на сайте, а потом почитать про форматирование.
Принятый ответ
21
NazarPunk, о, благодарю
насчет форматирования см. выше
ну т. е. мне наоборот строку в равкод ок
32
ClotPh, ну равкод - то целое число, только в 256ричной, а дебагом ты выводишь в десятичной.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.