Скриптовые процедуры |
Здесь описаны
скриптовые процедуры "Проклятых Земель".
Перед продолжением чтения полезно
ознакомиться с введением
в скрипты. С некоторыми процедурами мне
разобраться так и не удалось - их список вы
можете увидеть здесь.
Для выполнения вызова процедуры в консоли
следует воспользоваться консольной
командой @.
Процедуры
управления юнитами
- Attack
( objUnitA , objUnitB
)
Юнит objUnitA
начинает атаковать юнит objUnitB.
- BlockUnit
( objUnit , bfBlock )
Если bfBlock
- истина, то блокирует юнит, лишая его
возможности передвигаться и применять
заклинания, в противном случае
разблокирует его. См. также IsUnitBlocked().
- Crawl
( objUnit )
Изменяет режим
перемещения юнита objUnit на
присядь.
- Guard
( objUnit , x , y
, rad )
Юнит objUnit
начинает охранять территорию радиуса rad
с центром в точке (x,y),
патрулируя ее и уничтожая врагов в поле
зрения. См. также Sentry()
и UMSentry().
- Follow
( objUnitA , objUnitB
)
Юнит objUnitA
начинает следовать за юнитом objUnitB.
См. также UMFollow().
- Lie
( objUnit )
Изменяет режим
перемещения юнита objUnit на
ползание.
- MoveToObject
( objUnitA , objUnitB
)
Заставляет юнит objUnitA
двигаться в текущем режиме перемещения
к той точке, в которой на момент
выполнения команды находился юнит objUnitB.
- MoveToPoint
( objUnit , x , y
)
Заставляет юнит objUnit
двигаться в текущем режиме перемещения
к точке (x,y).
- Rest
( objUnit )
Переводит юнит objUnit
в режим "отдыха", если это возможно,
- юнит усаживается на землю.
- RotateTo
( objUnit , x , y
)
Ориентирует юнит objUnit
по направлению на точку (x,y).
- Run
( objUnit )
Изменяет режим
перемещения юнита objUnit на
бег.
- SetCP
( objUnit , x , y
, h )
Перемещает юнит objUnit
в точку с координатами (x,y)
на высоту h над
поверхностью земли. У этой команды есть
несколько тонкостей: дело в том, что ПЗ
при определении возможности юнита
перейти в некоторую точку использует
лишь двумерные координаты юнита,
физическая же модель в ПЗ
отсутствует полностью. Иными словами
координата z объекта
используется исключительно для его
рисования на нужной высоте. Так что хотя
вы и можете заставить юнит "взлететь"
в воздух, для игры он будет по прежнему
оставаться на уровне земли - отличие
будет только визуальным. Если h
отлично от нуля, то юнит так и продожит
ходить по воздуху. Для того, чтобы
вернуть его к нормальному режиму
перемещения, h нужно
задать равной нулю. По видимому, синоним SetCPFast().
- SetCPFast
( objUnit , x , y
, h )
Перемещает юнит objUnit
в точку с координатами (x,y)
на высоту h над
поверхностью земли. По видимому, синоним
SetCP().
- Stand
( objUnit )
Изменяет режим
перемещения юнита objUnit на
шаг. Синоним Walk().
- Sentry
( objUnit , x , y
)
Юнит objUnit
охраняет точку (x,y),
атакуя врагов в области видимости. После
уничтожения противника возвращается в
указанную точку. Синоним UMSentry().
См. также Guard().
- UMAg ( objUnit
, float )
Юнит objUnit
пытается избежать врагов (должно быть
сброшено агрессивное поведение при
помощи UMClear() ).
- UMAggression ( objUnit
)
Юнит objUnit
автоматически атакует цели в пределах
видимости.
- UMClear
( objUnit )
Для юнита objUnit
сбрасываются режимы поведения - он
игнорирует все. Юнит игрока-человека все
же сохраняет способность изменять
способ передвижения при нажатии
соответствующих клавиш (по умолчанию - Z,
X, C, V).
- UMFollow
( objUnitA , objUnitB
)
Юнит objUnitA
начинает следовать за юнитом objUnitB.
См. также Follow().
Примечание игрока nexys:
Применяя процедуру Follow мы заставляем
обьект двигаться за другим, но после
сражения или другой смены поведения он
возвращается на круги своя (в смысле к
предыдущей команде, до follow), а после UMFollow
он будет идти за объектом неустанно :-)
- UMPlayer ( objUnit
)
Юнит objUnit
подчиняется своему игроку, не
предпринимая самостоятельных действий (монстры
не атакуют). Этот режим используется для
юнитов игрока-человека.
- UMSuspection ( objUnit
)
Юнит objUnit
идет к любому врагу в пределах области
видимости, но не атакует его.
- UMStandard ( objUnit
)
Юнит objUnit
идет к любому врагу в пределах области
видимости и атакует его. Это режим по
умолчанию для монстров.
- UMSentry
( objUnit , x , y
)
Юнит objUnit
охраняет точку (x,y),
атакуя врагов в области видимости. После
уничтожения противника возвращается в
указанную точку. Синоним Sentry().
См. также Guard().
- Walk
( objUnit )
Изменяет режим
перемещения юнита objUnit на
шаг. Синоним Stand().
Процедуры
изменения параметров юнита
- GiveDexterity
( objUnit , flAmount )
Добавляет юниту objUnit
flAmount пунктов ловкости.
Отдавать команду следует вне магазина.
- GiveIntelligence
( objUnit , flAmount )
Добавляет юниту objUnit
flAmount пунктов разума.
Отдавать команду следует вне магазина.
- GiveSkill
( objUnit , strSkill ,
flAmount )
Добавляет юниту objUnit
flAmount пунктов в навыке strSkill.
Возможные значения строки strSkill:
- melee -
ближний бой
- archery -
стрельба
- science -
ловкость рук
- elemental -
магия стихий
- sense -
магия чувств
- astral -
магия астрала
Отдавать команду
следует вне магазина.
- GiveStrength
( objUnit , flAmount )
Добавляет юниту objUnit
flAmount пунктов силы.
Отдавать команду следует вне магазина.
- GodMode
( 0 , nMode )
Переключает режим "бога"
для лидера команды игрока-человека.
Возможные значения nMode:
- 0 -
отключить режим "бога"
- 1 -
лидер неуничтожим, при беге мана не
расходуется
- 2 -
лидер неуничтожим, при беге мана не
расходуется, все противники убиваются
с одного удара
Дополнительные
процедуры воздействия
- AddMob
( strMob )
Загружает .mob-файл strMob
из подкаталога MAPS. Имя файла указывается
с расширением. В этих файлах в частности
задаются юниты и их позиции на карте. При
загрузке файла юниты появляются на
карте. Именно таким образом в ПЗ
реализуются засады - например, засада у
главных ворот на сингл-карте "Портал".
- CastSpellPoint
( strSpell , x1 , y1
, x2 , y2 )
Применяет спелл strSpell
из точки (x1,y1)
в точку (x2,y2).
В данной процедуре могут использоваться
только спеллы, действующие на область.
См. также CastSpellUnit().
- CastSpellUnit
( strSpell , x , y
, objUnit )
Применяет спелл strSpell
из точки (x,y)
на юнит objUnit. В данной
процедуре могут использоваться спеллы,
действующие как на область, так и на цель.
См. также CastSpellPoint().
- InflictDamage ( objUnit
, flAmount )
Наносит юниту objUnit
повреждения в flAmount
пунктов. При этом учитываются
показатели брони юнита и наложенные на
него защиты.
- KillUnit
( objUnit )
Наносит повреждения
юниту objUnit, убивая его.
- RemoveUnitFromServer
( objUnit )
Удаляет юнит objUnit
с сервера. Эту процедуру не следует
путать с консольными командами ban
и kick:
при применении RemoveUnitFromServer()
для юнита игрока-человека исчезнет лишь
юнит, но сам игрок останется
подключенным к серверу - довольно
забавная ситуация.
Процедуры AI
- SetDiplomacy
( nPlayerA , nPlayerB
, flDiplomacy )
Изменяет дипломатию -
кем является игрок nPlayerB
для игрока nPlayerA.
Возможные значения flDiplomacy:
- 1 -
союзник
- 0 -
нейтрал
- -1 -
враг
См. также SetPlayer(),
GetDiplomacy()
и GetPlayer().
- SetPlayer
( objUnit , nPlayer )
Процедуры
управления областями
- AddRectToArea
( idArea , x1 , y1
, x2 , y2 )
Добавляет к области idArea
прямоугольник (x1,y1)-(x2.
- AddRoundToArea ( idArea
, x , y , rad
)
Добавляет к области idArea
круг радиуса rad с центром
в точке (x,y).
- DeleteArea ( idArea
)
Процедуры
динамического задания целей квеста
- QFinish
()
Завершает текущее
перечисление целей. См. также QStart
- QuestComplete ( nPlayer
, strQuestName )
Заявляет квест strQuestName
выполненным (это не отражается в окнах
квестов), см. *.mq .
- QObjGetItem ( idItem
)
Добавляет цель:
получение предмета idItem.
- QObjUse ( strObject
, bfState )
Добавляет цель:
перевести "рычаг" strObject
в состояние bfState.
Пример:
- QObjUse("GetObject(44456)",1)
- включить "рычаг" с
идентификатором 44456.
- QObjKillGroup ( strGroupName
)
Добавляет цель:
уничтожить группу с именем strGroupName.
- QObjKillUnit ( strUnitName
)
Добавляет цель:
уничтожить юнит с именем strUnitName.
Пример:
- QObjKillUnit("GetObject(1001936)")
- убить юнит с идентификатором 1001936.
- QObjSeeUnit ( strUnitName
)
Добавляет цель: увидеть
юнит с именем strUnitName.
Пример:
- QObjSeeUnit("GetObject(4517)")
- увидеть юнит с идентификатором 4517.
- QObjArea ( idArea
)
Добавляет цель: попасть
в область с идентификатором idArea.
- QStart
( strQuestName )
Начинает перечисление
целей для квеста strQuestName.
См. также QFinish
Различные
процедуры воспроизведения
- PlayAnimation
( objUnit , strAnimation
)
Воспроизводит
анимационно-звуковую
последовательность модели для юнита objUnit.
Названия последовательностей и их
содержание различны для разных видов
юнитов - см. res\database.res\*.adb .
Пример:
- PlayAnimation(GetLeader(),"uattack01")
- PlayCamera ( strName
)
Воспроизводит
последовательность перемещений камеры
файла с именем strName из
подкаталога CAMERA. Имя файла указывается с
расширением.
- PlayCamera ( strName
)
Воспроизводит
видеоролик с именем strName
из подкаталога MOVIES. Имя файла
указывается с расширением.
- PlayMusic ( 0
, strName )
Начинает
воспроизведение мелодии с именем strName
из подкаталога MOVIES. Имя файла
указывается без расширения.
Генерация
предметов и заклинаний
- EraseQuestItem
( 0 , idQItem )
Убирает из обоза игрока
квестовый предмет с кодом idQItem.
Список квестовых предметов и их кодов вы
можете увидеть здесь.
См. также GiveQuestItem().
- FixItems
()
Чинит все предметы в
обозе и на юнитах команды игрока-человека.
- GiveItem
( 0 , strItem )
Помещает в обоз предмет,
описываемый строкой strItem.
- GiveMoney
( 0 , flAmount )
Дает игроку flAmount
денег. См. также give.
- GiveQuestItem
( 0 , strQItem )
Дает игроку квестовый
предмет с именем strQItem.
Список квестовых предметов вы можете
увидеть здесь.
См. также EraseQuestItem().
- GiveUnitSpell
( objUnit , strSpell )
Дает юниту objUnit
спелл, описываемый строкой strSpell.
Спелл помещается не в обоз, а в набор
активных спеллов - если он полон, то
ничего не происходит. В магазине эта
процедура не действует, а в игровой зоне,
хотя фактически спелл дается игроку, не
обновляет набор спеллов.
Аудиовизуальные
эффекты: источники частиц, освещение,
молнии
- CreateLightning
( id , x1 , y1
, z1 , x2 , y2
, z2 , flIntensity )
создает молнию с
идентификатором id, бьющую
из точки (x1,y1,z1)
в точку (x2,y2,z2).
При параметре flIntensity
отличном от нуля молния имеет вид спелла
"молния" и бьет с интенсивностью flIntensity.
Если же flIntensity равно нулю,
то молния имеет вид спелла "стена
молний" и интенсивность по умолчанию.
- CreateParticleSource
( id , x , y
, z , rad , strType
)
Создает источник частиц
типа strType с радиусом rad
и идентификатором id в
точке (x,y,z).
Возможны следующие типы источника
частиц:
- transform
- portalstar
- portal
- mushroom
- nuke
- geyser
- poisonfog
- smoke
- fire
- lightningblast
- fireblast
- campfire
- fireball
- firearrow
- CreatePointLight
( id , x , y
, z , rad , flR
, flG , flB )
Создает источник света
с идентификатором id,
радиусом rad и цветом (flR,flG,flB)
в точке (x,y,z).
- DeleteLightning (
id )
Удаляет молнию с
идентификатором id.
- DeleteParticleSource
( id )
Удаляет источник частиц
с идентификатором id.
- DeletePointLight
( id )
Удаляет источник света
с идентификатором id.
- MoveParticleSource
( id , x , y
, z , flTime , bfRemove
)
Перемещает источник
частиц с идентификатором id
в точку (x,y,z)
за время flTime (измеряется в
1/15 секунды). Если bfRemove -
истина, то после перемещения удаляет
источник.
- MovePointLight ( id
, x , y , z
, flTime , bfRemove )
Перемещает источник
света с идентификатором id
в точку (x,y,z)
за время flTime (измеряется в
1/15 секунды). Если bfRemove -
истина, то после перемещения удаляет
источник.
- SetParticleSourceSize
( id , rad )
Изменяет радиус
источника частиц с идентификатором id
на rad.
Прочие
процедуры
- ConsoleString
( str )
- ConsoleFloat
( fl )
- FixWorldTime
( flTime )
- LeaveToZone
( 0 , strZone , 0
)
Перемещает партию в
локацию с именем strZone.
Следует, однако, учитывать, что эта
команда не взаимодействует с логикой
квестов, поэтому ее использование может
привести к непредвиденным последствиям.
См. также список
локаций.
- RunWorldTime
( flTime )
- SetBackgroudColor
( flR , flG , flB
)
Устанавливает фоновый
цвет на карте в (flR,flG,flB)
(фон перекрывается текстурами неба,
поэтому результат будет заметен лишь в
пещерных картах).
|
|
|