3

» WarCraft 3 / Как начать писать свой код ИИ?

Tredor46, разве я не пытаюсь на JASS писать? Суть топика в том и заключается, чтобы выяснить как писать ИИ на JASS
3

» WarCraft 3 / Как начать писать свой код ИИ?

Опытным путём пытаюсь выяснить в чём дело.
Если подгружать файл с кодом
function main takes nothing returns nothing
call Sleep( 2 ) <--- Чтобы удостовериться, что игра готова записать приветствие.
call DisplayTimedTextToPlayer( GetLocalPlayer(), 0.0, 0.0, 3600, "Hello World!" )
endfunction
То краш при инициализации карты.
Если подгружать этот файл пустым - краша нет. Крестьяне просто начинают добывать золото.
Если подгрузить в этот файл извлечённый из mpq код humans.ai - то он работает, краша нет.
Если в этот же файл в конце добавить код, что написан выше - игра крашится.
Значит дело в коде, а не в принципе его интеграции.
Я попытался вызвать просто:
call Sleep( 2 ) <--- Чтобы удостовериться, что игра готова записать приветствие.
Но получил краш. Добавил его к human.ai оригинальный - краш (хотя функция слипа там используется, и она не крашит).
Стерев русский текст - игра крашится перестала.
Теперь этот код:
function main takes nothing returns nothing
call Sleep( 2 )
call DisplayTimedTextToPlayer( GetLocalPlayer(), 0.0, 0.0, 3600, "Hello World!" )
endfunction
Не крашится.
Но и не исполняется.
Я не уверен, но возможно файл .ai не имеет доступа к функциям common.j. Ведь функция DisplayTimedTextToPlayer расположена там.
Теперь этот работает. Не знаю в чём магия была.
3

» WarCraft 3 / Как начать писать свой код ИИ?

Опытным путём пытаюсь выяснить в чём дело.
Если подгружать файл с кодом
function main takes nothing returns nothing
call Sleep( 2 ) <--- Чтобы удостовериться, что игра готова записать приветствие.
call DisplayTimedTextToPlayer( GetLocalPlayer(), 0.0, 0.0, 3600, "Hello World!" )
endfunction
То краш при инициализации карты.
Если подгружать этот файл пустым - краша нет. Крестьяне просто начинают добывать золото.
Если подгрузить в этот файл извлечённый из mpq код humans.ai - то он работает, краша нет.
Если в этот же файл в конце добавить код, что написан выше - игра крашится.
Значит дело в коде, а не в принципе его интеграции.
Я попытался вызвать просто:
call Sleep( 2 ) <--- Чтобы удостовериться, что игра готова записать приветствие.
Но получил краш. Добавил его к human.ai оригинальный - краш (хотя функция слипа там используется, и она не крашит).
Стерев русский текст - игра крашится перестала.
Теперь этот код:
function main takes nothing returns nothing
call Sleep( 2 )
call DisplayTimedTextToPlayer( GetLocalPlayer(), 0.0, 0.0, 3600, "Hello World!" )
endfunction
Не крашится.
Но и не исполняется.
Я не уверен, но возможно файл .ai не имеет доступа к функциям common.j. Ведь функция DisplayTimedTextToPlayer расположена там.
замечание от EugeAl: 1.5 Злоупотребление форматированием. Здесь нужно код всегда писать в формате кода, чтобы другие люди, если что, могли скопировать код через кнопку.
3

» WarCraft 3 / Как начать писать свой код ИИ?

quq_CCCP,
Так я именно это и делаю, что изучаю как работает ИИ. Нашёл статью, и по ней пытаюсь запустить первые функции. Которые не работают
3

» WarCraft 3 / Как начать писать свой код ИИ?

fenathesnake, Этот момент для меня непонятный.
common.ai есть в war3.mpq, в War3Patch.mpq, в War3x.mpq и все они разные. Какой из них используется?
3

» WarCraft 3 / Как начать писать свой код ИИ?

fenathesnake,
А как мне понять, что такой функции нет? Я импортировал список функций из движка в JassCraft, и там отображается, что она есть
3

» WarCraft 3 / Как начать писать свой код ИИ?

fenathesnake,
Жаль что не получилось добиться нужного результата, но спасибо за проявленный интерес!
3

» WarCraft 3 / Как начать писать свой код ИИ?

IzobretatelBoom, в JassCraft в поиск я вбил Sleep(), он выдал, что такая функция есть. Поэтому вариант что в игре нет такой функции - отпал.
3

» WarCraft 3 / Как начать писать свой код ИИ?

Кажется очевидным, что это не работает, так как ИИ компьютера начинает обычное строительство.
То есть стандартный ИИ переписывает мой ИИ.
Но в случае если я уберу код из mpq архива в файле human.ai и заменю на эти строки, то карта просто не запускается.

Если создать папку Scripts, которой по умолчанию нету, и туда закинуть файл human.ai, а в пути убрать слэш с “\Scripts\human.ai” на “Scripts\human.ai”, то при выборе расы компьютеру альянса - игра просто крашит при завершении загрузки карты.
При выборе другой расы - всё нормально.
Можно предположить, что теперь происходит чтение этого ai файла. Но происходит краш
3

» WarCraft 3 / Запрос актуальной информация по моддингу warcraft 3 TFT

EugeAl, я заменил, но он не обновляет даже стандартные функции из файла
Разобрался.
В правой колонке, которая называется Native List в самом низу есть кнопка "Show Options". Там нужно поставить галочку на обновлённый файл "common.ai". С другими, наверное также будет
3

» WarCraft 3 / Запрос актуальной информация по моддингу warcraft 3 TFT

Существует ли где-то описание функций скриптов из коробки?
Или предстоит самостоятельно изучать их?
3

» WarCraft 3 / Запрос актуальной информация по моддингу warcraft 3 TFT

IzobretatelBoom, Многий, это какой?
Я читал статью перед публикацией этой темы, и там вроде речь шла только про утечку из глобальных переменных. В редакторе триггеров локальную не создать