nazarpunk,
Я не знаю, всегда ли ты так пишешь\писал - но твои сообщения очень странные.
Я не жаловался, что меня кто-то останавливает.
Но, скорее всего, у тебя такая манера общения, которую я могу назвать бескультурной\провокационной. И на самом деле, ты имел в виду это "Если у тебя есть желание, то ты можешь сделать это. Мы бы были тебе благодарны!".
Если это так, то на это я уже ответил, вот тут "Для развития проекта неплохо бы сделать подробную документацию по функциям. Так как отсутствие таковой отталкивает новичков, а старички рано или поздно закончатся.".
Я новичок, который 3 дня тыкается в документацию и у него с трудом получается что-либо.
Я тот, кому нужна помощь, а не тот, кто может оказать её (по крайней мере в оформлении документации я точно не могу помочь).
Мне нравится эта идея.
Проект может решить проблему ванильного варкрафта с недостающим функционалом.
Надеюсь у автора не опустятся руки.
Для развития проекта неплохо бы сделать подробную документацию по функциям. Так как отсутствие таковой отталкивает новичков, а старички рано или поздно закончатся.
EugeAl, я не могу управлять юнитами на карте через нестандартный код?
Кажется, это должно быть возможно.
И если я могу ими управлять, то я могу написать скрипт ИИ в обход стандартным функциям написания ИИ
Tredor46,
Ну да. Это если я импортирую этот код в виде .j файла, а потом триггере пытаюсь вызвать основную функцию ИИ оттуда - то ошибка, что нет такой функции.
А если импортировать код в карту, в нестандартный код целиком - то сыпятся ошибки для каждой строчки.
Но суть одна - попытка импортирования кода проваливается
Tredor46,
Гарантировать я ничего не могу конечно.
Но читал что мили АИ имеет доступ только к функциям common.ai.
Но если кастомный код подгружать в карту для управления игроком-компьютером - то этот код имеет доступ ко всем функциям в карте.
Классный обрыв концовки, причём на самом интересном месте в этом сыром, унылом, кринжовом ТВОРЕНИИ автора. Сама по себе кампания - это пытки игрока, особенно где надо за эльфийку оборонять деревню с максимальными 20 пищи.
И ворота да, это просто отвратительно:
Полностью согласен с оценкой Паши этой кампании: 2/10.
Надеюсь автор не будет тратить время на создание Души Демона 3.
Самый мерзкий и ужасный комментарий.
Публикуя эту кампанию - автор не обещал тебе что это будет кампания AAA класса. И не взял с тебя 17 000 рублей за возможность игры в неё.
Он сделал её так, как его скилл позволял ему сделать это. Если тебе не понравилось - ты можешь не играть.
Надеюсь автор этого комментария больше никогда не будет публиковать свои оценки.
Makeba,
Благодарю! Я видел эту переменную, пытался её объявить или вызвать (до публикации этой темы), но редактор JASS кода выдавал ошибку. Так как она уже объявлена. Поэтому я ничего не смог сделать с ней.
Кроме того, посчитал, что World Edit, Сценарий, Свойства игрока. Игрока 2 Компьютер средний - это и будет являться инициализацией ИИ.
В стандартном ИИ human.ai также нет вызова этой переменной или функции.
Но (после твоего сообщения) посмотрел кастомный ИИ выгруженный из гуи - она там есть.
Решил проблему простым вызовом этой функции:
call InitAI ()
После этого количество золота возвращается как надо.
Tredor46,
Да, заметил, спасибо!
Но я не стал публиковать вторую функцию - не понимаю как она работает. Хотя она действительно работает с числами больше 10.
Суть такова, что по каким-то причинам 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. Но польза от его ответов была больше, чем от кого-либо среди ответивших.
Tredor46,
Функция GetUnitCount - получить количество единиц.
В ней я указываю название юнита, которое нужно посчитать GetUnitCount('hpea'). hpea - название рабочего Альянса, в редакторе войск.
Эта функция и должна делать подсчёт количества юнитов, которое я потом пытаюсь вывести
Tredor46,
хотя функция GetUnitCount принимает только integer.
Будто бы вызывать её так "GetUnitCount('hpea')" неправильно. Но и найти айди юнитов в формате integer я не смог пока
EugeAl,
Я знаю, что строке присвоил число. Но разве стринг не может принять число? Число - всё ещё является символом, который стринг может принимать. Стринг ведь может принимать число в виде символа, а не в виде числа.
Учитывая что я не собираюсь совершать арифметические манипуляции, то вывод числа в виде символа меня устраивает.
Кроме того DisplayTimedTextToPlayer принимает стринг. Я так понимаю, я не могу передать туда integer.
Ред. Svintus
» Unryze Jass API / UjAPI
Я не знаю, всегда ли ты так пишешь\писал - но твои сообщения очень странные.
Если это так, то на это я уже ответил, вот тут "Для развития проекта неплохо бы сделать подробную документацию по функциям. Так как отсутствие таковой отталкивает новичков, а старички рано или поздно закончатся.".
» Unryze Jass API / UjAPI
Проект может решить проблему ванильного варкрафта с недостающим функционалом.
Надеюсь у автора не опустятся руки.
Ред. Svintus
» WarCraft 3 / Использование кастомного кода
Хорошо. В таком случае, я ведь могу просто не инициализировать стандартный ИИ, и запустить свой кастомный?
» WarCraft 3 / Использование кастомного кода
Кажется, это должно быть возможно.
И если я могу ими управлять, то я могу написать скрипт ИИ в обход стандартным функциям написания ИИ
Ред. Svintus
» WarCraft 3 / Использование кастомного кода
Ну да. Это если я импортирую этот код в виде .j файла, а потом триггере пытаюсь вызвать основную функцию ИИ оттуда - то ошибка, что нет такой функции.
А если импортировать код в карту, в нестандартный код целиком - то сыпятся ошибки для каждой строчки.
» WarCraft 3 / Использование кастомного кода
Гарантировать я ничего не могу конечно.
Но читал что мили АИ имеет доступ только к функциям common.ai.
Но если кастомный код подгружать в карту для управления игроком-компьютером - то этот код имеет доступ ко всем функциям в карте.
Ред. Svintus
» WarCraft 3 / Душа Демона 2
Публикуя эту кампанию - автор не обещал тебе что это будет кампания AAA класса. И не взял с тебя 17 000 рублей за возможность игры в неё.
Он сделал её так, как его скилл позволял ему сделать это. Если тебе не понравилось - ты можешь не играть.
Ред. Svintus
» WarCraft 3 / Работает ли функция GetGold() в .ai скрипте?
Благодарю! Я видел эту переменную, пытался её объявить или вызвать (до публикации этой темы), но редактор JASS кода выдавал ошибку. Так как она уже объявлена. Поэтому я ничего не смог сделать с ней.
Кроме того, посчитал, что World Edit, Сценарий, Свойства игрока. Игрока 2 Компьютер средний - это и будет являться инициализацией ИИ.
В стандартном ИИ human.ai также нет вызова этой переменной или функции.
Решил проблему простым вызовом этой функции:
call InitAI ()
После этого количество золота возвращается как надо.
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
Ред. Svintus
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
Да, заметил, спасибо!
Но я не стал публиковать вторую функцию - не понимаю как она работает. Хотя она действительно работает с числами больше 10.
Ред. Svintus
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
Выход из ситуации - написать свою функцию конвертации integer в string
После этого мой код работает как надо, возвращая 4.
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
Ред. Svintus
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
Функция GetUnitCount - получить количество единиц.
В ней я указываю название юнита, которое нужно посчитать GetUnitCount('hpea'). hpea - название рабочего Альянса, в редакторе войск.
Эта функция и должна делать подсчёт количества юнитов, которое я потом пытаюсь вывести
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
хотя функция GetUnitCount принимает только integer.
Будто бы вызывать её так "GetUnitCount('hpea')" неправильно. Но и найти айди юнитов в формате integer я не смог пока
Ред. Svintus
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
Спасибо, я понял, что сам он не конвертирует. Нужно вызывать функцию конвертации I2S.
Но как и ранее, оно возвращает (null).
Ред. Svintus
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
Я знаю, что строке присвоил число. Но разве стринг не может принять число? Число - всё ещё является символом, который стринг может принимать. Стринг ведь может принимать число в виде символа, а не в виде числа.
Учитывая что я не собираюсь совершать арифметические манипуляции, то вывод числа в виде символа меня устраивает.
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
Так я же код скинул. Другого кода там нет
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
Да.
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
Открываю JassCraft, создаю файл с расширением .ai и пишу там код для ИИ
Примеры реализации из этой статьи: xgm.guru/p/wc3/melee_ai_creating2
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
Я через кастомный код пишу. Написание кода таким образом, я так понимаю, отличается от написания кода через гуи.
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
Я так понял, ты только через гуи делаешь что-то?
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
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
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
Я ещё не дошёл до работы с группами и не знаю как это сделать
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
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
» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)
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