loki
Автор

На форумах с октября 2001
Местонахождение: Питер
Сообщений: 593 |
Курс лекций по Ai-скриптингу :-)
Как писать свои AI-скрипты для StarCraft:
Команды AI зашиты в числе прочих ресурсов в архивах StarDat.mpq, BrooDat.mpq, Patch_rt.mpq по виртуальным путям scripts\aiscript.bin, scripts\bwscript.bin, rez\stat_txt.tbl
aiscript.bin - коллекция базовых AI-скриптов и скриптов кампаний SC
bwscript.bin - коллекци скриптов кампаний BW
stat_txt.tbl - вспомогательная таблица, помогающая AI-интерпретатору отыскивать нужный скрипт
В Patch_rt.mpq находятся последние версии ресурсов для SC, соответственно и скрипты берутся Стариком оттуда
Как расфигачить Patch_rt.mpq:
Вообще-то есть прога StarDraft by CamelotSystems, которая патчит .mpq прямо в памяти при загрузке Старика, используя патч-архивы собственного формата CWAD. Таким образом оригинальные файлы .mpq в каталоге Старика остаются нетронутыми, избавляя нас от унылой работы по бэкапу/перезаписи Patch_rt.mpq и иже с ним
Однако, она не пашет с 1.08b
Поэтому мы пойдем другим путем.
Для редактирования .mpq существует прога mpq2k (я пользуюсь версией 2.0)
необходимые файлы:
lmpqapi.dll 040 960 bytes
listfile.dat 070 590 bytes
Storm.dll 262 144 bytes
mpq2k.exe 217 148 bytes
staredit.exe 001 012 224 bytes
можно взять с http://blakflare.virtualave.net/dwnload.html
или
с kernigan.narod.ru каталог scripting. Там же лежит примерчик в виде перефигаченной карты LT и пропатченного Patch_rt.mpq (я попробовал закодить быстрый раш с 7 дрона)
ВНИМАНИЕ: каталог с mpq2k должен лежать в корне !!! (Криворучки, млин)
примеры команд mpq2k:
список файлов в архиве: mpq2k l patch_rt.mpq > out.txt
положить в архив: mpq2k a patch_rt.mpq patched_aiscript.bin scripts\aiscript.bin
взять из архива: mpq2k e patch_rt.mpq scripts\aiscript.bin C:\temp\
выполнить командник: mpq2k s packing.mps
командник mpq2k выглядит примерно так:
; command file packing.mps : add aiscript.bin and stat_txt.tbl to Patch_rt.mpq
o Patch_rt.mpq
a "E:\Program Files\Camelot Systems\ScAIEdit\My Scripts\SZRS\aiscript.bin" scripts\aiscript.bin
a "E:\Program Files\Camelot Systems\ScAIEdit\My Scripts\SZRS\stat_txt.tbl" rez\stat_txt.tbl
c
Ок, мы умеем брат/класть файлы AI из Patch_rt.mpq
Как их редактировать ?
Для этого существует прога ScAIEdit (http://www.camsys.org/softwares/sta.../scaiedit31.zip)
Порядок работы с ScAIEdit:
В HDDNavigator window создать новый script directory, тип указать default
В AIScriptNavigator window добавить новый скрипт в aiscript.bin или в bwscript.bin
Написать тело скрипта в AIScriptCodeEditor (Собственно, это самое главное), нажать "Save in AI file"
Скомпилировать AI file в AIScriptNavigator
С помошью mpq2k зафигачить aiscript.bin, [bwscript.bin,] stat_txt.tbl в Patch_rt.mpq
Перезаписать Patch_rt.mpq в каталоге StarCraft (сохранив бэкап оригинального естественно)
добавить в карту триггер ForPlayerX/ALWAYS/RunAIScriptAtLocation 'Твой скрипт' 'some_location'
Запустить карту с UMS
Наслаждаться.
Примечание: bwscript.bin в Patch_rt.mpq нет. Так, что не стоит в него вписывать никакие скрипты, и засовывать его в Patch_rt.mpq. Вполне хватит и aiscript.bin.
Что полезно помнить:
Для корректной совместной работы коллекции aiscript.bin, bwscript.bin, stat_txt.tbl должны быть из одного источника, например вытащены из .mpq, или сгенерированы ScAIEdit
ScAIEdit.HDDNavigator: можно импортировать aiscript.bin, bwscript.bin, stat_txt.tbl из .mpq, не парясь с mpq2k
ScAIEdit.AIScriptNavigator: предназначен для редактирования файлов aiscript.bin, bwscript.bin, stat_txt.tbl, лежащих в отдельном каталоге (он указывается при создании или импортировании из .mpq AI-коллекций)
ScAIEdit.AIScriptNavigator: можно импортировать/экспортировать скрипты в формате ASC3 (Это собственный формат ScAIEdit)
ScAIEdit.AIScriptNavigator: есть кнопка опций скрипта. Весьма важная.
ScAIEdit.AIScriptNavigator: иногда AI-файл перестает компилироваться (окошко "Script compilation done!"
больше не выскакивает). В этом случае надо:
удалить подкаталог scripts из каталога, содержащего AI-файл
перезапустить ScAIEdit
(очень важно) попрыгать вокруг компа с бубном
ScAIEdit.AIScriptCodeEditor: не забудьте вставить следующее в начало вашего скрипта:
script_name PorvatVseh AI-scr [это имя будет видно в StarEdit]
script_id Demo [уникальное слово ровно из 4 символов, для внутренних нужд ScAIEdit]
!custom_header [! означает макрос из каталога ScAIEdit\macros]
[макрос custom_header выполняет инициализацию AI для UMS карты (а есть еще !campaign_header) ]
define_max 15 scv [определите макс. количество боевых юнитов каждого типа, ]
[которые собираетесь исользовать, а то без этого AI иногда переклинивает]
define_max 8 marine
define_max 4 firebat
ScAIEdit.AIScriptCodeEditor: мы используем build чтобы построить здание, оверлорда или раба, и train - для всех остальных юнитов
ScAIEdit.AIScriptCodeEditor: Если AI что-то не хватает, чтобы выполнить твою команду, он делает все нужные приготовления сам. Достаточно сказать train 1 ultralisk чтобы AI сам развился до Улья, построил ultralisk_cavern и наконец - 1 ультрала.
ScAIEdit.AIScriptCodeEditor: F2 помошь по команде
ScAIEdit.AIScriptCodeEditor: F4 перейти к блоку по имени метки
ScAIEdit.AIScriptCodeEditor: некоторые команды (типа expand) используют код других AI-скриптов,
которые парни из CamelotSys бодро грохнули в темплейтном наборе AI-коллекций.
Отсюда мораль: не используйте опцию template при создании нового каталога скриптов,
а используйте default, если не хотите внезапных зависаний SC на сложных командах типа expand
и последнее: читайте мануал ScAIEdit\help\scaiedit.chm 
Вот полезные линки:
Описание SCAIEdit и команд AI на русском http://starcraft.blizzard.ru/ai/chapter1.shtml
Библия маппера/скриптера: http://www.camsys.org/tutors/bible/chap1_cwad.shtml
Всякие мапперские тулзы: http://kzleague.r2.ru/file.htm
ЗЫ: А когда видишь, как зерги развиваются и бьются по твоему алгоритму, чувствуешь себя немного Ксел'Нага 
Особенное, когда твое родное дитяте мочит тебя, чуть зазеваешься ))
__________________
Но если есть Тёмный Властелин, то есть и Светлые Партизаны (с) Lionking[st91]
Last edited by loki on 17.11.2001 at 09:47
Адрес поста | Наябедничать | IP: Logged
|