Который час пытаюсь получить количество золота или дерева у ИИ.
function I2C2 takes integer i returns string
    if i == 0 then
        return "0"
    elseif i == 1 then
        return "1"
    elseif i == 2 then
        return "2"
    elseif i == 3 then
        return "3"
    elseif i == 4 then
        return "4"
    elseif i == 5 then
        return "5"
    elseif i == 6 then
        return "6"
    elseif i == 7 then
        return "7"
    elseif i == 8 then
        return "8"
    elseif i == 9 then
        return "9"
    endif
    return ""
endfunction


function I2S2 takes integer i returns string
    local integer j = i
    local string s = ""
    local integer k = 0
    local boolean is_negative = false
    local integer MAX_DIGITS = 20
    if i < 0 then
        set is_negative = true
        set j = -j
    endif
    loop
        set s = I2C2(j - (j / 10) * 10) + s
        set j = j / 10
        set k = k + 1
        exitwhen j == 0 or k >= MAX_DIGITS
    endloop
    if is_negative then
        set s = "-" + s
    endif
    return s
endfunction


function main takes nothing returns nothing
loop
call DisplayTimedTextToPlayer (GetLocalPlayer(), 0.0, 0.0, 10, I2S2(GetGold())+" gold")   
call Sleep (0.3)    
endloop
endfunction
После инициализации карты ИИ выдаётся 5 000 золота.
Но эта функция не срабатывает совсем.
Я смотрел создание ИИ в гуи, там её можно использовать. То есть, она должна работать. Но ничего не выходит
Warcraft 3, 1.27, не Reforged

Смотрим код функции GetGold
    function GetGold takes nothing returns integer
        return GetPlayerState(ai_player,PLAYER_STATE_RESOURCE_GOLD)
    endfunction
Видим, что этой функции нужна переменная ai_player, я не вижу, что она в коде где-то объявлена.
Попробуй начать с вызова функции InitAI.
`
ОЖИДАНИЕ РЕКЛАМЫ...
26
Смотрим код функции GetGold
    function GetGold takes nothing returns integer
        return GetPlayerState(ai_player,PLAYER_STATE_RESOURCE_GOLD)
    endfunction
Видим, что этой функции нужна переменная ai_player, я не вижу, что она в коде где-то объявлена.
Попробуй начать с вызова функции InitAI.
Принятый ответ
Ответы (2)
3
Makeba,
Благодарю! Я видел эту переменную, пытался её объявить или вызвать (до публикации этой темы), но редактор JASS кода выдавал ошибку. Так как она уже объявлена. Поэтому я ничего не смог сделать с ней.
Кроме того, посчитал, что World Edit, Сценарий, Свойства игрока. Игрока 2 Компьютер средний - это и будет являться инициализацией ИИ.
В стандартном ИИ human.ai также нет вызова этой переменной или функции.
Но (после твоего сообщения) посмотрел кастомный ИИ выгруженный из гуи - она там есть.
Решил проблему простым вызовом этой функции:
call InitAI ()
После этого количество золота возвращается как надо.
26
Svintus, ну она таки объявлена прямо в common.ai, просто значение ей нужно присвоить в своём ai скрипте, чтобы использовать эти функции, вроде GetGold.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.