- советы от alexy по созданию скриптов
- мы с alexy решили устроить маленький ликбез по самостоятельному созданию
скриптов -- таких маленьких друзей, которые очень сильно облегчают жизнь
в игре
|
|
- вступление
- скрипты, в общем, это маленькие проги, которые делают за вас "грязную"
работу (вовремя автоматически лечат, при виде тролля пуляют fire arrow
или acid arrow, при нажатии на одну(!) кнопочку каcтуют кучу защит и
т. д., если конечно у вас такая магия есть и запомнена).
в играх от black isle и interplay имеется набор скриптов изначально,
но они откровено тупы и бесполезны (например маг при виде пары гоблинов
колдует прямо в них fireball и от взрыва благополучно гибнет пол-партии).
писать скрипты самому занятие несколько тяжеловатое (предполагает знание
английского и хотя бы основ программирования), но всё же очень увлекатальное
и полезное. овладев искуством написания скриптов, некоторые умельцы
обманывают саму игру и делают своих персонажей едва ли не богами, давая
им магию и умения им совершенно чуждые (бэкстаб + магия клерика + магия
мага для воина, причём без запоминания сколько хочешь раз в день). я
пробовал, получилось, но играть совершенно не интересно. а вот сделать
НАСТОЯЩИЙ скрипт -- полезный, удобный, свой, в конце концов, это уже
целое искусство.
писать скрипты можно с помощью scriptcompiler (так делал я) от производителей
iwd и bg'ов или с помощью других программ (scriptw). я выбрал sc, так
как к нему прилагается объёмная инструкция по написанию скриптов со
всеми командами и примерами (правда на английском ;) очень удобно.
|
|
- урок 1
- мы начнём осваивать написание скриптов с самых азов.
самый первый вопрос -- как создавать скрипт. в принципе тут всё просто.
вы берёте любой текстовый редактор и пишите. теперь необходимо вставить
скрипт в игру. для этого нужны программы-компиляторы (scriptcompiler,
scriptor, scriptw и др.). вставляйте свои записи в программу или копируете
файл с оными и запускайте компиляцию. скрипт готов.
но это всё теория. перейдём к непосредственному написанию скриптов.
первая команда, с которой мы познакомимся, это 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
вот пока и всё, дальше мы будем делать составные команды с несколькими
вариантами действий, зависящих от различных параметров. пишите отзывы
и предложения на [ форум ].
|
|
| [
вернуться на заглавную страницу ] |