3

» Unryze Jass API / UjAPI

nazarpunk,
Я не знаю, всегда ли ты так пишешь\писал - но твои сообщения очень странные.
  1. Я не жаловался, что меня кто-то останавливает.
Но, скорее всего, у тебя такая манера общения, которую я могу назвать бескультурной\провокационной. И на самом деле, ты имел в виду это "Если у тебя есть желание, то ты можешь сделать это. Мы бы были тебе благодарны!".
Если это так, то на это я уже ответил, вот тут "Для развития проекта неплохо бы сделать подробную документацию по функциям. Так как отсутствие таковой отталкивает новичков, а старички рано или поздно закончатся.".
  1. Я новичок, который 3 дня тыкается в документацию и у него с трудом получается что-либо.
Я тот, кому нужна помощь, а не тот, кто может оказать её (по крайней мере в оформлении документации я точно не могу помочь).
3

» Unryze Jass API / UjAPI

Мне нравится эта идея.
Проект может решить проблему ванильного варкрафта с недостающим функционалом.
Надеюсь у автора не опустятся руки.
Для развития проекта неплохо бы сделать подробную документацию по функциям. Так как отсутствие таковой отталкивает новичков, а старички рано или поздно закончатся.
3

» WarCraft 3 / Использование кастомного кода

EugeAl,
Хорошо. В таком случае, я ведь могу просто не инициализировать стандартный ИИ, и запустить свой кастомный?
3

» WarCraft 3 / Использование кастомного кода

EugeAl, я не могу управлять юнитами на карте через нестандартный код?
Кажется, это должно быть возможно.
И если я могу ими управлять, то я могу написать скрипт ИИ в обход стандартным функциям написания ИИ
3

» WarCraft 3 / Использование кастомного кода

Tredor46,
Ну да. Это если я импортирую этот код в виде .j файла, а потом триггере пытаюсь вызвать основную функцию ИИ оттуда - то ошибка, что нет такой функции.
А если импортировать код в карту, в нестандартный код целиком - то сыпятся ошибки для каждой строчки.
Но суть одна - попытка импортирования кода проваливается
3

» WarCraft 3 / Использование кастомного кода

Tredor46,
Гарантировать я ничего не могу конечно.
Но читал что мили АИ имеет доступ только к функциям common.ai.
Но если кастомный код подгружать в карту для управления игроком-компьютером - то этот код имеет доступ ко всем функциям в карте.
3

» WarCraft 3 / Душа Демона 2

Классный обрыв концовки, причём на самом интересном месте в этом сыром, унылом, кринжовом ТВОРЕНИИ автора. Сама по себе кампания - это пытки игрока, особенно где надо за эльфийку оборонять деревню с максимальными 20 пищи.
И ворота да, это просто отвратительно:
Полностью согласен с оценкой Паши этой кампании: 2/10.
Надеюсь автор не будет тратить время на создание Души Демона 3.
Самый мерзкий и ужасный комментарий.
Публикуя эту кампанию - автор не обещал тебе что это будет кампания AAA класса. И не взял с тебя 17 000 рублей за возможность игры в неё.
Он сделал её так, как его скилл позволял ему сделать это. Если тебе не понравилось - ты можешь не играть.
Надеюсь автор этого комментария больше никогда не будет публиковать свои оценки.
3

» WarCraft 3 / Работает ли функция GetGold() в .ai скрипте?

Makeba,
Благодарю! Я видел эту переменную, пытался её объявить или вызвать (до публикации этой темы), но редактор JASS кода выдавал ошибку. Так как она уже объявлена. Поэтому я ничего не смог сделать с ней.
Кроме того, посчитал, что World Edit, Сценарий, Свойства игрока. Игрока 2 Компьютер средний - это и будет являться инициализацией ИИ.
В стандартном ИИ human.ai также нет вызова этой переменной или функции.
Но (после твоего сообщения) посмотрел кастомный ИИ выгруженный из гуи - она там есть.
Решил проблему простым вызовом этой функции:
call InitAI ()
После этого количество золота возвращается как надо.
3

» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)

Tredor46,
Да, заметил, спасибо!
Но я не стал публиковать вторую функцию - не понимаю как она работает. Хотя она действительно работает с числами больше 10.
3

» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)

Я нашёл ответ на забугорном форуме: www.hiveworkshop.com/threads/i2s-without-natives-for-use-in-ai-s...
Суть такова, что по каким-то причинам I2S не работает в ИИ (.ai файле).
Выход из ситуации - написать свою функцию конвертации integer в string
Сама функция:
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
Теперь я использую I2C2 вместо I2S.
После этого мой код работает как надо, возвращая 4.
Благодарю за помощь пользователя Tredor46. Этот пользователь, вроде, разбирается хуже всех среди ответивших в JASS. Но польза от его ответов была больше, чем от кого-либо среди ответивших.
3

» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)

Tredor46,
Функция GetUnitCount - получить количество единиц.
В ней я указываю название юнита, которое нужно посчитать GetUnitCount('hpea'). hpea - название рабочего Альянса, в редакторе войск.
Эта функция и должна делать подсчёт количества юнитов, которое я потом пытаюсь вывести
3

» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)

Tredor46,
хотя функция GetUnitCount принимает только integer.
Будто бы вызывать её так "GetUnitCount('hpea')" неправильно. Но и найти айди юнитов в формате integer я не смог пока
3

» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)

Tredor46,
Спасибо, я понял, что сам он не конвертирует. Нужно вызывать функцию конвертации I2S.
Но как и ранее, оно возвращает (null).
Это будет грустно, если вывод количества юнитов определённого типа может делать только через добавление их в группу...
3

» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)

EugeAl,
Я знаю, что строке присвоил число. Но разве стринг не может принять число? Число - всё ещё является символом, который стринг может принимать. Стринг ведь может принимать число в виде символа, а не в виде числа.
Учитывая что я не собираюсь совершать арифметические манипуляции, то вывод числа в виде символа меня устраивает.
Кроме того DisplayTimedTextToPlayer принимает стринг. Я так понимаю, я не могу передать туда integer.
3

» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)

Tredor46,
Открываю JassCraft, создаю файл с расширением .ai и пишу там код для ИИ
Примеры реализации из этой статьи: xgm.guru/p/wc3/melee_ai_creating2
Решил написать своё логирование для каждой функции, чтобы не искать ошибок во всём коде.
3

» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)

Tredor46,
Я через кастомный код пишу. Написание кода таким образом, я так понимаю, отличается от написания кода через гуи.
3

» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)

Tredor46,
function main takes nothing returns nothing
local group workersGroup = CreateGroup
GroupAddUnit takes group workersGroup unit UnitAlive('hpea')
CountUnitsInGroup takes group workersGroup returns integer
local string workerGroup1 = workersGroup
loop
call Sleep( 3.0 )
call DisplayTimedTextToPlayer( GetLocalPlayer(), 0.0, 0.0, 10, workerGroup1 )
endloop
endfunction
не знаю, на сколько это правильно или нет. Не крашит, но и не выводит инфу
3

» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)

nazarpunk,
function main takes nothing returns nothing
local string mytextMessage = UnitAlive('hpea')
loop
call Sleep( 3.0 )
call DisplayTimedTextToPlayer( GetLocalPlayer(), 0.0, 0.0, 10, mytextMessage )
endloop
endfunction
не срабатывает
3

» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)

Tredor46,
function main takes nothing returns nothing
local string mytextMessage = GetPlayerUnitTypeCount(Player 1,('hpea'))
loop
call Sleep( 3.0 )
call DisplayTimedTextToPlayer( GetLocalPlayer(), 0.0, 0.0, 10, mytextMessage )
endloop
endfunction
Не работает