Который час пытаюсь получить количество золота или дерева у ИИ.
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.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. Svintus
Благодарю! Я видел эту переменную, пытался её объявить или вызвать (до публикации этой темы), но редактор JASS кода выдавал ошибку. Так как она уже объявлена. Поэтому я ничего не смог сделать с ней.
Кроме того, посчитал, что World Edit, Сценарий, Свойства игрока. Игрока 2 Компьютер средний - это и будет являться инициализацией ИИ.
В стандартном ИИ human.ai также нет вызова этой переменной или функции.
Решил проблему простым вызовом этой функции:
call InitAI ()
После этого количество золота возвращается как надо.