Камрад
|
вступление
скрипты, в общем, это маленькие проги, которые делают за вас "грязную" работу (вовремя автоматически лечат, при виде тролля пуляют fire arrow или acid arrow, при нажатии на одну(!) кнопочку каcтуют кучу защит и т. д., если конечно у вас такая магия есть и запомнена).
в играх от black isle и interplay имеется набор скриптов изначально, но они откровено тупы и бесполезны (например маг при виде пары гоблинов колдует прямо в них fireball и от взрыва благополучно гибнет пол-партии). писать скрипты самому занятие несколько тяжеловатое (предполагает знание английского и хотя бы основ программирования), но всё же очень увлекатальное и полезное. овладев искуством написания скриптов, некоторые умельцы обманывают саму игру и делают своих персонажей едва ли не богами, давая им магию и умения им совершенно чуждые (бэкстаб + магия клерика + магия мага для воина, причём без запоминания сколько хочешь раз в день). я пробовал, получилось, но играть совершенно не интересно. а вот сделать НАСТОЯЩИЙ скрипт -- полезный, удобный, свой, в конце концов, это уже целое искусство.
писать скрипты можно с помощью sсriptcompiler (так делал я) от производителей iwd и bg'ов или с помощью других программ (sсriptw). я выбрал sc, так как к нему прилагается объёмная инструкция по написанию скриптов со всеми командами и примерами (правда на английском очень удобно.
урок 1
мы начнём осваивать написание скриптов с самых азов.
самый первый вопрос -- как создавать скрипт. в принципе тут всё просто. вы берёте любой текстовый редактор и пишите. теперь необходимо вставить скрипт в игру. для этого нужны программы-компиляторы (sсriptcompiler, sсriptor, sсriptw и др.). вставляйте свои записи в программу или копируете файл с оными и запускайте компиляцию. скрипт готов.
но это всё теория. перейдём к непосредственному написанию скриптов.
первая команда, с которой мы познакомимся, это See. перевода, думаю не надо. вот простейший пример:
See(Whom)
это простейшая команда:
Увидеть(Кого)
именно с этой команды начинаются 2/3 всех скриптов. теперь рассмотрим кого же, собственно можно видеть:
LastAttackerOf (тот, кто последним атаковал данного персонажа),
NearestEnemyOf (собственно, ближайшее недружелюбное существо),
Leader (лидер партии на данный момент) и т. д.
более полный список можно найти в документации к компайлеру (за это он мне и нравится). ну вот, теперь вы уже знаете, как написать первую команду:
See(NearestEnemyOf(Myself)
Myself писать обязательно в скобочках (значит, себя).
но это только команда. в скрипте это должно выглядеть так:
IF See(NearestEnemyOf(Myself) THEN….
таким образом, мы плавно переходим к логическому продолжению команды IF -- THEN: соответственно IF -- если, а THEN -- тогда, т. е. сначала вы пишите предпосылку к действию, а потом и само действие. у нас предпосылкой будет то, что ваш персонаж увидел врага.
итак, вы видите врага. что дальше? здесь возможно множество вариантов: маг ли вы, есть ли у вас дистанционное оружие, сколько у вас здоровья. я не буду загружать вас нудным списком команд, в этом, если надо вы разберётесь и без меня (при помощи того же манула к компайлеру). я дам лишь описание пары простейших команд:
атака магией (предполагает, что вы такую магию знаете, и она запомнена):
IF See(NearestEnemyOf(Myself) HaveSpell(WIZARD_MAGIC_MISSLE)
это проверка наличия спелла, все спеллы в скрипте пишутся большими буквами, названия спеллов можно опять-таки почерпнуть в мануале компайлера ( я же говорил, качайте )
THEN Spell(NearestEnemyOf(Myself),WIZARD_MAGIC_MISSLE).
команда Spell -- кастовать магию -- имеет формат Spell(кого,чем), где кого -- существо, на которое направлена магия (союзник, враг, вы) и чем -- название непосредственно магии.
END
конец данного куска скрипта (IF -- начало)
итак, мы уже можем составлять первый участок скрипта: если мы видим врага, имеем нужную магию, то атакуем его ей.
IF See(NearestEnemyOf(Myself) HaveSpell(WIZARD_MAGIC_MISSLE)
THEN RESPONSE #100 (надо писать после каждого THEN)
Spell(NearestEnemyOf(Myself), WIZARD_MAGIC_MISSLE)
END
урок 2
итак, с магией мы вроде разобрались. теперь пора перейти к оружию дальнего и ближнего боя.
запишем команду для атаки ближайшего монстра из лука:
IF See(NearestEnemyOf(Myself)) Range(NearestEnemyOf(Myself),4)
(4 -- это расстояние до монстра)
THEN RESPONSE #100 EquipRanged()
(команда equip (одеть) необходима для того, чтобы чем-либо вооружиться, ranged -- это дистанционное, melee -- оружие ближнего боя)
AttackReevaluate(NearestEnemyOf(Myself),30)
(атаковать монстра оружием, которое находится у вас в руках каждые 30 секунд раунда)
END
также можно написать скрипт для воина чтобы он атаковал противников оружием ближнего боя:
IF See(NearestEnemyOf(Myself)) Range(NearestEnemyOf(Myself),4)
THEN RESPONSE #100 EquipMostDamagingMelee()
(команда вооружится самым мощным оружием из quick weapons)
AttackReevaluate(NearestEnemyOf(Myself),30)
END
вот пока и всё, дальше мы будем делать составные команды с несколькими вариантами действий, зависящих от различных параметров.
(c)http://icewinddale.narod.ru
|