Список всех команд

001 ActivateTrap
002 Add
003 AddLoot
004 AddMob
005 AddObject
006 AddRectToArea
007 AddRoundToArea
008 AddUnitToParty
009 AddUnitToServer
010 AddUnitUnderControl
011 AlarmPosX
012 AlarmPosY
013 AlarmTime
014 Any
015 AttachParticles
016 AttachParticleSource
017 Attack
018 BlockUnit
019 Cast
020 CastSpellPoint
021 CastSpellUnit
022 ConsoleFloat
023 ConsoleString
024 CopyItems
025 CopyLoot
026 CopyStats
027 Crawl
028 CreateFX
029 CreateFXSource
030 CreateLightning
031 CreateParticleSource
032 CreateParty
033 CreatePointLight
034 CreateRandomizedFXSource
035 DeleteArea
036 DeleteFXSource
037 DeleteLightning
038 DeleteParticleSource
039 DeletePointLight
040 DistanceUnitPoint
041 DistanceUnitUnit
042 Div
043 EnableLever
044 EraseQuestItem
045 Every
046 FixItems
047 FixWorldTime
048 Follow
049 For
050 ForIf
051 GetAIClass
052 GetBSZValue
053 GetDiplomacy
054 GetFutureX
055 GetFutureY
056 GetLeader
057 GetLeverState
058 GetLootItemsCount
059 GetMercsNumber
060 GetMoney
061 GetObject
062 GetObjectByID
063 GetObjectByName
064 GetObjectID
065 GetPlayer
066 GetPlayerUnits
067 GetUnitOfPlayer
068 GetWorldTime
069 GetX
070 GetY
071 GetZ
072 GetZValue
073 GiveDexterity
074 GiveIntelligence
075 GiveItem
076 GiveMoney
077 GiveQuestItem
078 GiveSkill
079 GiveStrength
080 GiveUnitQuestItem
081 GiveUnitSpell
082 GodMode
083 GroupAdd
084 GroupCross
085 GroupHas
086 GroupSee
087 GroupSize
088 GroupSub
089 GSDelVar
090 GSGetVar
091 GSSetVar
092 GSSetVarMax
093 Guard
094 HaveItem
095 HideObject
096 HP
097 Idle
098 InflictDamage
099 InvokeAlarm
100 IsAlarm
101 IsAlive
102 IsCameraPlaying
103 IsDead
104 IsEnemy
105 IEqual
106 IsEqualString
107 IsGreater
108 IsInArea
109 IsInSquare
110 IsLess
111 IsNight
112 IsPlayerInDanger
113 IsPlayerInSafety
114 IsUnitBlocked
115 IsUnitInWater
116 IsUnitVisible
117 KillScript
118 KillUnit
119 LeaveToZone
120 Lie
121 Mana
122 MaxHP
123 MaxMana
124 MoveParticleSource
125 MovePointLight
126 MoveToObject
127 MoveToPoint
128 Mul
129 Not
130 PlayAnimation
131 PlayCamera
132 PlayerSee
133 PlayFX
134 PlayMovie
135 PlayMusic
136 Qfinish
137 QObjArea
138 QObjGetItem
139 QObjKillGroup
140 QObjKillUnit
141 QObjSeeObject
142 QObjSeeUnit
143 QObjUse
144 QStart
145 QuestComplete
146 Random
147 RecalcMercBriefings
148 RedeployParty
149 RemoveObject
150 RemoveObjectFromServer
151 RemoveParty
152 RemoveQuestItem
153 RemoveUnitFromControl
154 RemoveUnitFromParty
155 RemoveUnitFromServer
156 ResetTarget
157 Rest
158 RotateTo
159 Run
160 RunWorldTime
161 SendEvent
162 SendStringEvent
163 Sentry
164 SetBackgroudColor
165 SetCameraOrientation
166 SetCameraPosition
167 SetCP
168 SetCPFast
169 SetCurrentParty
170 SetDiplomacy
171 SetDirectionToObject
172 SetEnemy
173 SetParticleSourceSize
174 SetPlayer
175 SetPlayerAggression
176 SetScience
177 SetSpellAggression
178 SetSunLight
179 SetWaterLevel
180 SetWind
181 ShowBitmap
182 ShowCredits
183 Sleep
184 SleepUntil
185 SleepUntilIdle
186 Standt
187 StartAnimation
188 Sub
189 Sum
190 SwitchLeverState
191 SwitchLeverStateEx
192 UMAg
193 UMAggression
194 UMClear
195 UMCorpseWatcher
196 UMFear
197 UMFollow
198 UMGuard
199 UMGuardEx
200 UMPatrol
201 UMPatrolAddPoint
202 UMPatrolAddPointLook
203 UMPatrolClear
204 UMPlayer
205 UMRevenge
206 UMSentry
207 UMStandard
208 UMSuspection
209 UnitInSquare
210 UnitSee
211 WaitEndAnimation
212 WaitSegment
213 Walk
214 WasLooted


001 ActivateTrap

 ActivateTrap( Trap : object , Activate : float )

Команда: ActivateTrap - деактивирует: Activate - 0 и активирует: Activate<>0 ловушку: Trap на игровой зоне. Например, на игровой зоне карты: Предгорья следует набрать в консоли команду: @ActivateTrap( GetObjectByID( "4515" ) , 1 ) будет активирована пирамида Орковского племени. Данная ловушка-Пирамида атакует только Дипломатическую группу - 0. Невозможно перенастроить дипломатию для объектов Ловушек с помощью команды: SetDiplomacy.


002 Add

 Add( A : float , B : float ) : float

Функция: Add - возвращает сумму из двух чисел типа Float: A и В.


003 AddLoot

 AddLoot( nPlayer : float , PartyNameSend : string , PartyNameRecv : string )

Команда: AddLoot - добавляет предметы и деньги из обоза "Партии": PartyNameSend в обоз НЕ текущей "Партии": PartyNameRecv. Обе "Партии" принадлежат "Игроку": nPlayer. Не путать "Обоз" и "Рюкзак". В случае если изменение текущей партии будет происходить на игровой зоне, то предметы из набора "Рюкзак" всегда входящие в набор "Обоза" будут так же скопированы в обоз "Партии": PartyNameRecv. При выполнении команды: RedeployParty "Рюкзак Партии": PartyNameSend обнулится. "Рюкзак" новой партии будет так же пуст, хотя в инфоокне рюкзака останутся предметы, но на самом деле рюкзак предыдущей и текущей Партий будут пусты. Функция: GetLootItemsCount вернет значение 0.


004 AddMob

 AddMob( FileNameMob : string )

Команда: AddMob - загружает файл "Mob" с именем FileNameMob из подкаталога …\MAPS\. Имя файла указывается с расширением и в кавычках. Файл должен иметь структуру Maps Object (*.mob) из проекта игры ПЗ. \Принадлежность: Система.


005 AddObject

 AddObject( grp : group , UnitMap : object )

Команда: AddObject - добавляет объект: Unit в "Игровую" группу, инициализируя глобальную переменную: grp. Команду: AddObject нельзя применять из консоли, так как в ПЗ нет консольных команд создания глобальных переменных групп. \Принадлежность: Игровые Группы.


006 AddRectToArea

 AddRectToArea( idArea : float , x1 : float , y1 : float , x2 : float , y2 : float )

Команда: AddRectToArea - добавляет принадлежность участка игровой зоны в квестовую область под кодом: idArea. Область описывается в виде прямоугольника, где (X1,Y1) и (X2,Y2) координаты его двух противоположных углов. (Левый - нижний и верхний - правый) (юго-западный и северо-восточный угол). Стороны прямоугольника всегда расположены параллельно к сторонам света. Если координаты второй точки меньше первой, то зоны не будет. На игровой зоне может существовать множество областей с одинаковым кодом: idArea. Например, команда: QObjArea может установить задачу "Игроку" (команде Игроков): попасть в область под кодом: idArea - как одно из условий выполнения задания объявленного командой: QStart. В таком случае "Игрок", должен попасть в любой из участков области с кодом: idArea.


007 AddRoundToArea

 AddRoundToArea( idArea : float , x : float , y : float , rad : float )

Команда: AddRoundToArea - добавляет принадлежность участка игровой зоны в квестовую область под кодом: idArea. Участок области находится в точке: (x,y) с радиусом: rad. На игровой зоне может существовать множество областей с одинаковым кодом: idArea. Например, команда: QObjArea может установить задачу "Игроку": попасть в область под кодом: idArea как одно из условий выполнения задания объявленного командой: QStart - в таком случае "Игрок" должен попасть в любой из участков области с кодом: idArea.


008 AddUnitToParty

 AddUnitToParty(nPlayer : float , "PartyName::NamePersRes" : String , NameUnitRes : String )

Команда: AddUnitToParty - добавляет игроку: nPlayer, в указанную партию: PartyName локализованного (озвученного) персонажа: NamePersRes из базы данных: texts.res. фактически добавляется персонаж: NameUnitRes из базы данных ресурсов игры. К текущей Партии можно добавить Персонаж без явного указания Партии: AddUnitToParty(nPlayer, NamePersRes : String, NameUnitRes : String). Не путать! Если нужно работать не с текущей группой или с вновь созданной, то всегда нужно указывать второй параметр как два параметра через делитель"PartyName::NamePersRes".


009 AddUnitToServer

 AddUnitToServer( NameUnitMap : string , NameUnitRes : string , NameUnitControl : string , x : float , y : float , z : float )

Команда: AddUnitToServer - устанавливает заготовку-объект: NameUnitRes на текущую карту в точку (x,y,z) из базы данных ресурсов игры. Объект будет иметь внутреннее имя: NameUnitMap и имя, отображаемое в инфоокнах: NameUnitControl. Большие и маленькие буквы внутреннего имени: NameUnitMap не различаются. Системная функция преобразования имени: (NameUnitMap : string) в код (idUnit : float) представляет все строчные символы имени как прописные - к верхнему регистру. Не рекомендуется возвращать код: idUnit от объекта добавленного на карту командой: AddUnitToServer с помощью функции: GetObjectId. Полученный на карте объект командой: AddUnitToServer будет иметь код - 10 символов, а команда: GetObjectId работает с ошибкой с десятизначными силами.


010 AddUnitUnderControl

 AddUnitUnderControl( nPlayer : float , Unit : object )

Команда: AddUnitUnderControl - добавляет в контроль панель игрока: nPlayer иконку объекта: Unit. Не изменяет дипломатии в группах и не вызывает никаких изменений в присоединенном объекте: Unit. Игрок получает возможность выделить в коллекции управляемых объектов присоединенный объект: Unit. Видимо команда была предназначена для возможности захвата в плен на игровой зоне врагов, но не была реализована в игре.


011 AlarmPosX

 AlarmPosX( nAlarm : float ) : float

Функция: AlarmPosX - возвращает позицию точки тревоги по оси: x установленной командой: InvokeAlarm, для переменной: nAlarm.


012 AlarmPosY

 AlarmPosY( nAlarm : float ) : float

Функция: AlarmPosY - возвращает позицию точки тревоги по оси: y установленной командой: InvokeAlarm, для переменной: nAlarm.


013 AlarmTime

 AlarmTime( nAlarm : float ) : float

Функция: AlarmTime - возвращает значение переменной: nAlarm. При активации переменной: nAlarm командой: InvokeAlarm, ей присваивается стартовое значение. Стартовое значение - есть сумма количества времени всех промежутков времени, между активаций и деактиваций всех предыдущих переменных: nAlarm с начала игры. Активным может быть только один номер переменной. В переменную: nAlarm после активации, постоянно добавляется значение счетчика времени (1/15 сек). Активируя следующий номер переменной: nAlarm командой: InvokeAlarm одновременно деактивируется предыдущая переменная, но не обнуляется. Номер переменной необязательно должен быть по порядку и можно повторно инициализировать тот же номер переменной. Чтобы сбросить все значения переменных: nAlarm в ноль и остановить счетчик в глобальной переменной, нужно вызвать команду: InvokeAlarm с первым параметром = 0 : InvokeAlarm(0,0,0)


014 Any

 Any( GlobalVariable : object , grp : group , bool : float ) : float

Функция: Any - Теоретически: Возвращает истину или ложь, если в группе: grp какой-нибудь объект-юнит: Unit будет соответствовать условию сравнения в параметре: bool. Процедура работает как цикл, перебирая по очереди все объекты в группе: grp устанавливая в переменную: Unit экземпляр - объект из группы: grp. Параметр: grp может быть введен указатель на любой набор групп: Дипломатическая группа, Игровая или смешанная - командами: GroupAdd или GroupCross.


015 AttachParticles

 AttachParticles( id : float , Object : object )

Команда: AttachParticles - присоединяет источник частиц с идентификатором: id к юниту: Object . Источник будет двигаться с постоянным смещением от юнита. Это смещение равно координатам( x , y , z ) , взятым в процедуре CreateParticleSource при создании данного источника. Пример: @CreateParticleSource( 1234 , 1 , -2 , 2 , -1 , "fire" ) ; @AttachParticles( 1234 , GetLeader( ) ) ; Перевёрнутый вверх тормашками огонь радиусом 1 будет перемещаться около Зака на расстоянии 1 по: x , -2 по: y и 2 по: z . \Принадлежность: Спецэффекты.


016 AttachParticleSource

 AttachParticleSource( id : float , idObject : float )

Команда: AttachParticleSource - присоединяет источник частиц с идентификатором: id к юниту с идентификатором: idObject. Источник будет двигаться с постоянным смещением от юнита. Это смещение равно координатам( x , y , z ) , взятым в процедуре CreateParticleSource при создании данного источника.


017 Attack

 Attack( UnitA : object , UnitB : object )

Команда: Attack - заставляет юнит: UnitA атаковать юнит: UnitB.


018 BlockUnit

 BlockUnit( Unit : object , Block : float )

Команда: BlockUnit - устанавливает режим управление Игроком персонажа: Unit. Персонаж не подчиняется Игроку: Block - 1, Персонаж подчиняется Игроку: Block - 0. По умолчанию: Персонажи доступны к управлению Игроком в момент добавления в партию. Устанавливать команду: BlockUnit на врагов бесполезно, так как враги не подчиняются Игроку.


019 Cast

 Cast( Unit : object , x : float , y : float )

Команда: Cast - заставляет объект: Unit применять активное заклинание, находящееся у объекта: Unit в точку: ( x , y ) на карте. Активное заклинание у объекта должно быть предназначено для места, а не для целей. Активное заклинание можно установить командой: SetSpellAggression.? В игре команда: Cast не используется. Для замены команды: Cast существуют расширенные команды аналоги: CastSpellPoint и CastSpellUnit.


020 CastSpellPoint

 CastSpellPoint( constSpell : string , x1 : float , y1 : float , x2 : float , у : float )

Команда: CastSpellPoint - применяет заклинание на местность игровой зоны. Заклинания: constSpell следует писать в кавычках, и только те, что действуют на область (не на цель). Конструкция заклинания: constSpell имеет такую же каноническую форму, как и в других местах игры, где применяется заклинания. Переменные: (x1,y1) указывают координаты на карте игровой зоны откуда будет стартовать визуальный эффект заклинания, переменные: (x2,у2) указывают координаты на карте игровой зоны, место на которое будет применено заклинание: constSpell.


021 CastSpellUnit

 CastSpellUnit( constSpell : string , x : float , y : float , Unit : object )

Команда: CastSpellUnit - применяет заклинание на объект: Unit. Заклинания: constSpell следует писать в кавычках. Конструкция заклинания: constSpell имеет такую же каноническую форму, как и в других местах игры, где применяется заклинания. Переменные: (x, y) указывают координаты на карте игровой зоны откуда будет стартовать визуальный эффект заклинания: constSpell.


022 ConsoleFloat

 ConsoleFloat( float )

Команда: ConsoleFloat - предназначена для отладки игры. Выводит в консоли число, возвращаемое функциями. Синоним #


023 ConsoleString

 ConsoleString( string )

Команда: ConsoleString - предназначена для отладки игры. Выводит в консоли текстовые строки, возвращаемые функциями. Синоним $


024 CopyItems

 CopyItems(nPlayer : float , NameSendRES : String , "PartyName::NameRecvRES" : String )

Команда: CopyItems - копирует все снаряжение (не обоз и не рюкзак) объекта-юнита: NameSendRES из текущей партии в объект-юнит: NameRecvRES принадлежащий НЕ текущей Партии. Обе Партии принадлежат игроку под номером: nPlayer. Имена объектов-юнитов - это внутренние имена в партиях. В третьем параметре нужно явно указать принадлежность объекта: NameRecvRES к Партии: PartyName, указать в кавычках и с разделителем два двоеточия: "PartyName::NameRecvRES"


025 CopyLoot

 CopyLoot( nPlayer : float , PartyNameSend : string , PartyNameRecv : string )

Команда: CopyLoot - копирует обоз: PartyNameSend (предметы и деньги) в обоз НЕ текущей Партии: PartyNameRecv. При этой операции предварительно обоз: PartyNameRecv полностью обнуляется. Копирование происходит между партиями принадлежащим игроку под номером: nPlayer. Не путать обоз и рюкзак. В случае если изменение текущей партии будет происходить на игровой зоне, то предметы из набора Рюкзак всегда входящие в набор Обоза будут также скопированы в обоз Партии: PartyNameRecv. При выполнении команды: RedeployParty Рюкзак Партии: PartyNameSend обнулится. Рюкзак новой партии будет так же пуст, хотя в инфоокне рюкзака останутся предметы, но на самом деле рюкзак предыдущей и текущей Партий будут пусты. Функция: GetLootItemsCount вернет значение 0.


026 CopyStats

 CopyStats( nPlayer , PartyNameSend : string , PartyNameRecv : string )

Команда: CopyStats - копирует всю статистику (навыки, умения, параметры) объекта-юнита: NameSendRES из текущей партии в объект-юнит: NameRecvRES, который принадлежит НЕ текущей Партии. Обе Партии принадлежат игроку под номером: nPlayer. Имена объектов-юнитов - это внутренние имена в партиях. В третьем параметре нужно явно указать принадлежность объекта: NameRecvRES к Партии: PartyName, указать в кавычках и с разделителем два двоеточия: "PartyName::NameRecvRES"


027 Crawl

 Crawl( Unit : object )

Команда: Crawl - отдает команду объекту: Unit присесть.


028 CreateFX

 CreateFX( x : float , y : float , z : float , Volume : float , rad : float , NameWav : string )

Команда: CreateFX - один раз воспроизводит звук из WAV файла: NameWav в точке: (x,y,z) с радиусом слышимости: rad громкостью: Volume.


029 CreateFXSource

 CreateFXSource( id : float , x : float , y : float , z : float , Volume : float , rad : float , NameWav : string )

Команда: CreateFXSource - устанавливает зацикленный звуковой источник: NameWav под кодом: id в точке: (X,Y,Z) с радиусом слышимости: rad и громкостью: Volume. Зацикленный звук можно удалить с помощью команды: DeleteFXSource по его : id.


030 CreateLightning

 CreateLightning( id : float , x1 : float , y1 : float , z1 : float , x2 : float , y2 : float , z2 : float , Intensity : float )

Команда: CreateLightning - создает постоянно действующую застывшую молнию, бьющую из точки: (x1,y1,z1) в (x2,y2,z2) с интенсивностью: Intensity. При положительном значении: Intensity точка: (x2,y2,z2) - представляет собой шар - как результат удара молнии в объект. При отрицательном значении: Intensity молния представляет собой застывшую молнию природного происхождения. При значении: Intensity = 0 молния представляет собой вид заклинания: Преграда из молний с интенсивностью (толщиной разрядов) по умолчанию. Значение интенсивность: Intensity отличное от нуля, графически представляется как толщина разрядов. Не следует устанавливать значение Intensity большее 20, так как это сильно замедляет игру на игровой зоне. Если установить значение: Intensity = 100, то получится как бы эффект северного сияния. Повторное создание молнии командой: CreateLightning с одинаковым кодом: id молнию не удаляет. Таким образом, можно создать множество молний на игровой зоне с одним и тем же кодом: id. Координаты точек: (x1,y1,z1) и (x2,y2,z2) в команде: CreateLightning находятся в МСК и не зависят от поверхности и рельефа игровой зоны, следует это учесть, устанавливая значение координат: z1 и z2. Удалить все подмножество молний с одинаковым кодом можно командой: DeleteLightning.


031 CreateParticleSource

 CreateParticleSource( id : float , x : float , y : float , z : float , R : float , сonstParticleSource : string )

Команда: CreateParticleSource - создает источник частиц типа: constParticleSource с радиусом: R и идентификатором: id в точке (x,y,z) . При отрицательном значении радиуса источник частиц переворачивается по вертикали. На данный момент известны следующие константы источника частиц (в процедуре пишутся в кавычках): transform; portalstar; portal; mushroom; nuke; geyser; poisonfog; smoke; fire; lightningblast; fireblast; campfire; fireball; firearrow; teleport; vulcansmoke; tornado; clayring; zoneexit; link.


032 CreateParty

 CreateParty( nPlayer : float , PartyName : string )

Команда: CreateParty - создает новую Партию под именем: PartyName (или замещает существующую партию, с таким же именем) в наборе партий игрока под номером: nPlayer. Строчные и прописные буквы в имени партии: PartyName отличаются.


033 CreatePointLight

 CreatePointLight( id : float , x : float , y : float , z : float , rad : float , R : float , G : float , B : float )

Команда: CreatePointLight - создает источник света с идентификатором: id, радиусом: rad и цветом (R,G,B) в точке (x,y,z). С помощью этой команды можно установить освещение от костра или факела ночью или незначительное затемнение днем - густой лес. Положительное значение: rad - освещение, отрицательное значение - затемнение. Точку освещения по высоте: z нужно рассчитывать, относительно Мировой системы координат (МСК), а не с поверхности карты.


034 CreateRandomizedFXSource

 CreateRandomizedFXSource( id : float , x1 : float , x2 : float , y1 : float , y2 : float , z1 : float , z2 : float , Volume : float , rad : float , NameWav : string )

Команда: CreateRandomizedFXSource -


035 DeleteArea

 DeleteArea( idArea : float )

Команда: DeleteArea - удаляет все участки областей на карте с идентификатором: idArea.


036 DeleteFXSource

 DeleteFXSource( id : float )

Команда: DeleteFXSource - удаляет все звуковые участки на игровой зоне имеющие идентификатор: id.


037 DeleteLightning

 DeleteLightning( id : float )

Команда: DeleteLightning - удаляет все молнии на игровой зоне имеющие идентификатор: id.


038 DeleteParticleSource

 DeleteParticleSource( id : float )

Команда: DeleteParticleSource - удаляет все источники частиц на игровой зоне имеющие идентификатор: id.


039 DeletePointLight

 DeletePointLight( id : float )

Команда: DeletePointLight - удаляет с игровой зоны множество источников света с идентификатором: id.


040 DistanceUnitPoint

 DistanceUnitPoint( Unit : object , x : float , y : float ) : float

Функция: DistanceUnitPoint - возвращает прямое расстояние между объектом: Unit и точкой на карте: (x,y).


041 DistanceUnitUnit

 DistanceUnitUnit( UnitA : object , UnitB : object ) : float

Функция: DistanceUnitUnit - возвращает прямое расстояние между объектами: UnitA и UnitB.


042 Div

 Div( A : float , B : float ) : float

Функция: Div - возвращает результат деления числа: A деленное на B.


043 EnableLever

 EnableLever( Lever : object , Enable : float )

Команда: EnableLever - устанавливает доступность для игрока к управлению механизмом: Lever. Недоступно: Enable = 0 и доступно: Enable = 1. Доступность к использованию рычага отображаются графически изменением курсора на мацающую руку при наведении его на объект: Lever. На карте Предгорья можно установить доступ даже к выключенному рычагу от пирамиды: @EnableLever(GetObjectByID( "4636" ),1)


044 EraseQuestItem

 EraseQuestItem( nPlayer : float , idQuestItem : float )

Команда: EraseQuestItem - удаляет из обоза игрока с номером: nPlayer квестовый предмет под кодом: id


045 Every

 Every( GlobalVariable : object , grp : group , bool : float ) : float

Функция: Every - Теоретически: Возвращает истину или ложь, если в группе: grp все объекты-юниты: Unit будут соответствовать условию сравнения в параметре: bool. Процедура работает как цикл, перебирая по очереди все объекты в группе: grp устанавливая в переменную: Unit экземпляр - объект из группы: grp. Параметр: grp может быть введен указатель на любой набор групп: Дипломатическая группа, Игровая или смешанная - командами: GroupAdd или GroupCross.


046 FixItems

 FixItems( )

Команда: FixItems - чинит все предметы в обозе, в рюкзаке, одежду на теле персонажа и оружие, но только у текущей Партии.


047 FixWorldTime

 FixWorldTime( Time : float )

Команда: FixWorldTime - устанавливает фиксированное время: Time на игровой зоне. Часы в ПЗ не идут.


048 Follow

 Follow( UnitA : object , UnitB : object )

Команда: Follow - одноразово отдает команду объекту: UnitA следовать за объектом: UnitB. После боя команда отменяется. Сходные свойства поведения у команды: UMFollow.


049 For

 For( GlobalVariable : object , grp : group ) ( Command )

Команда: For - безусловный перебор элементов объектов в игровой группе: grp. Каждый цикл инициализирует глобальную переменную, устанавливая в нее экземпляр: object из коллекции группы: grp. В теле цикла, безусловно, исполняется весь список команд: Command. Процедура работает как цикл, перебирая по очереди все объекты в группе: grp устанавливая в переменную: Unit экземпляр - объект из группы: grp. Параметр: grp может быть введен указатель на любой набор групп: Дипломатическая группа, Игровая или смешанная - командами: GroupAdd или GroupCross.


050 ForIf

 ForIf( цикл )

Команда: ForIf -


051 GetAIClass

 GetAIClass( Unit : object ) : float

Функция: GetAIClass - возвращает класс групп рас: AI для объекта: Unit. В ПЗ все объекты: Unit принадлежат к расам, расы группируются по классам. Значение принадлежности объектов к расам можно найти в таблице: RaceModels, по классам в поле: AI Class Stay. Для несуществующего объекта на карте результат всегда - (-1) ( минус один ).


052 GetBSZValue

 GetBSZValue( x : float , y : float ) : float

Функция: GetBSZValue - возвращает высоту местности на карте в точке с горизонтальными координатами: ( x , y ) . Отличие от команды: GetZValue в том, что если в точке: (х,у) находится незамёрзший водоём ( озеро лавы ), то выводится высота поверхности воды ( лавы ), а не дна. В остальных случаях выводимые значения совпадают с командой: GetZValue.


053 GetDiplomacy

 GetDiplomacy( nDiplomacyGroupA : float , nDiplomacyGroupB : float ) : float

Функция: GetDiplomacy - возвращает тип дипломатии : кем является Дипломатическая группа юнитов под номер nDiplomacyGroupA для Дипломатической группы: nDiplomacyGroupB, в наборе Дипломатических групп на текущей игровой зоне. Возможные значения: 1 - союзник ; 0 - нейтрал ; -1 - враг.


054 GetFutureX

 GetFutureX( UnitMap : object , Time : float ) : float

Функция: GetFutureX - возвращает значение координаты: Х объекта: UnitMap предсказанное через время: Time. Время: Time измеряется в единицах, равных 1/15 секунды на нормальной скорости игры. Чем меньше значение времени: Time тем точнее результат. В скриптах эта функция применяется для реалистичного отображения атаки заклинаниями у врагов. Враги могут ставить заклинания, атаковать на опережение. В движке ПЗ метод предсказания может быть использован в сетевой игре на слобопропускных каналах сети.


055 GetFutureY

 GetFutureY( UnitMap : object , Time : float ) : float

Функция: GetFutureY - возвращает значение координаты: y объекта: UnitMap предсказанное через время: Time. Время: Time измеряется в единицах, равных 1/15 секунды на нормальной скорости игры. Чем меньше значение времени: Time тем точнее результат. В скриптах эта функция применяется для реалистичного отображения атаки заклинаниями у врагов. Враги могут ставить заклинания, атаковать на опережение. В движке ПЗ метод предсказания может быть использован в сетевой игре на слобопропускных каналах сети.


056 GetLeader

 GetLeader( ) : object

Функция: GetLeader - возвращает объект юнита - лидера команды текущей Партии. В сингле это будет Зак, а в мультиплеере - действующий персонаж игрока. Видимо в этой функции не хватает параметра: nPlayer.


057 GetLeverState

 GetLeverState( Lever : object ) : float

Функция: GetLeverState - возвращает значение: float - 0, если механизм не приведен в действие и значение: float - 1, если механизм приведен в действие. Команда, устанавливающая состояние механизма: SwitchLeverState. На карте Предгорья можно проверить состояние рычага от Пирамиды: #GetLeverState(GetObjectByID( "4636" )).


058 GetLootItemsCount

 GetLootItemsCount( nPlayer : float ) : float

Функция: GetLootItemsCount - возвращает количество удачных краж и количество взятых бонусов (не денег, не всего предметов) найденных, украденных, снятых с врагов или трупов на игровой зоне, в то числе и квестовых предметов. Фактически показывает количество строк предметов в «Текстовом инфоокне» рюкзака на игровой зоне у текущей Партии, принадлежащих игроку под номером: nPlayer.
Если в одиночной игре убить Атаманшу, у которой есть два предмета: руна «Усиление» и квестовый предмет: «Шило», в задании «Инструменты», предварительно не обворовывая её то, после поднятия трупа Атаманши функция: GetLootItemsCount вернет значение = 2, так как за один раз с трупа Атаманши будет снято два предмета. Если убить два одинаковых кабана и поднять два идентичных предмета: «Тонкая кожа» с каждого кабана, то после поднятия, функция: GetLootItemsCount так же вернет значение=2, хоть и предметы одинаковые. Новый вход на игровую зону обнуляет рюкзак и «Текстовое инфоокно». Если изменить текущую партию на игровой зоне, то количество строк предметов в «Текстовом инфоокне» не будет совпадать со значением возвращаемым функцией: GetLootItemsCount. В таком случае, функция: GetLootItemsCount будет возвращать значение меньшее, чем количество строк предметов в «Текстовом инфоокне». Так как смена текущей Партии очищает рюкзак, но не очищает «Текстовое инфоокно».


059 GetMercsNumber

 GetMercsNumber( nPlayer : float ) : float

Функция: GetMercsNumber - возвращает число наемников в текущей Партии Игрока под номером: nPlayer не включает лидера текущей Партии.


060 GetMoney

 GetMoney( nPlayer : float ) : float

Функция: GetMoney - возвращает количество денег у текущей Партии игрока номер nPlayer. Фактически, команда показывает кошелек текущей "Партий" игрока: nPlayer на игровой зоне. Кошелек текущей Партии на игровой зоне и в лагере - всегда равны. Можно сказать, что партия таскает с собой все свои деньги.


061 GetObject

 GetObject( idObject : float ) : object

Функция: GetObject - возвращает экземпляр: object для объекта с идентификатором: idObject. Не работает с десятизначными числами. Если код: idObject десятизначное число, то следует использовать функцию: GetObjectByID.


062 GetObjectByID

 GetObjectByID( idObject : string ) : object

Функция: GetObjectByID - возвращает экземпляр: object для объекта с идентификатором: idObject , Цифровое значение: idObject должно быть заключено в кавычки. В отличие от функции: GetObject, функция: GetObjectByID допускает числовое значение, состоящее из десяти цифр.


063 GetObjectByName

 GetObjectByName( NameUnitMap : string ) : object

Функция: GetObjectByName - возвращает экземпляр: object для объекта с внутреигровым именем: NameUnitMap.


064 GetObjectID

 GetObjectID( Object : object ) : float

Функция: GetObjectID - возвращает идентификатор объекта: idObject. К классу Objects относятся не только Units, но и предметы, например: сундуки, ящики....? Функция: GetObjectID - возвращает правильно только те идентификаторы объектов, которые имеют код: idObject не более 10 цифр, Так как системная функция ПЗ, при получения кода: idObject из внутреннего имени объекта, использует десятизначный, целочисленный формат. Нельзя использовать эту функцию для возврата идентификатора объекта-юнита созданного на карте с помощью команды: AddUnitToServer или не присвоенного в модуле файла: Maps Object (*.mob) кода: idUnit меньшего, чем 10 цифр - в этом случае функция: GetObjectID будет возвращать округленные значения.


065 GetPlayer

 GetPlayer( Unit : object ) : float

Функция: GetPlayer - возвращает номер дипломатической группы, к которой принадлежит объект юнит: Unit.


066 GetPlayerUnits

 GetPlayerUnits( nDiplomacyGroup : float ) : group

Функция: GetPlayerUnits - возвращает Дипломатическую группу юнитов, состоящую в наборе Дипломатических групп под номером nDiplomacyGroup.


067 GetUnitOfPlayer

 GetUnitOfPlayer( nPlayer : float , nUnitInCurrentParty : float ) : object

Функция: GetUnitOfPlayer - возвращает экземпляр объекта персонажа из набора текущей Партии игрока: nPlayer. Выбор объекта происходит по номеру: nUnitInCurrentParty в наборе текущей Партии. Номер: nUnitInCurrentParty присваивается объекту по номеру очередности добавления в Партию и сортируется (сдвигается) в случае смерти или удаления юнитов с меньшим значением: nUnitInCurrentParty. Второй параметр: nUnitInCurrentParty функции: GetUnitOfPlayer - номер, а не код. Не путать Партию с Дипломатической группой или Игровой группой.


068 GetWorldTime

 GetWorldTime( ) : float

Функция: GetWorldTime - возвращает текущее время внутриигровых суток ( в часах ).


069 GetX

 GetX( Object : object ) : float

Функция: GetX - возвращает текущую координату: "x", соответственно, для юнита или предмета (Object) на карте относительно МСК системы координат. Во всех функциях ПЗ, системы координат МСК и ОСК по координате: "x" совпадают.


070 GetY

 GetY( Object : object ) : float

Функция: GetY - возвращает текущую координату: "y", соответственно, для юнита или предмета (Object) на карте относительно МСК системы координат. Во всех функциях ПЗ, системы координат МСК и ОСК по координате: "y" совпадают.


071 GetZ

 GetZ( Object : object ) : float

Функция: GetZ - возвращает текущую координату: "z", соответственно, для юнита или предмета (Object) на карте относительно МСК системы координат. Системы координат МСК и ОСК по координате: z практически никогда не совпадают. Начало отсчета по координате: "z" в ОСК - это точка на поверхности карты, где в данный момент находится объект.


072 GetZValue

 GetZValue( x : float , y : float ) : float

Функция: GetZValue - возвращает высоту твёрдой поверхности карты (независимо от наличия над ней слоя воды или лавы ) в точке с горизонтальными координатами( x , y ), но по команде в консоли: filter graphics 1 всегда выводится чуть меньшая третья координата. Функция: GetZValue несколько отличия от функции: GetBSZValue.


073 GiveDexterity

 GiveDexterity( Unit : object , Amount : float )

Команда: GiveDexterity - добавляет объекту юниту: Unit пунктов ловкости: Amount. Работает только на игровых зонах. Функция одинаково воздействует как на врагов, так и для персонажей игроков.


074 GiveIntelligence

 GiveIntelligence( Unit : object , Amount : float )

Команда: GiveIntelligence - добавляет объекту юниту: Unit пунктов разума: Amount . Работает только на игровых зонах. Функция одинаково воздействует как на врагов, так и на персонажей в Партии Игрока.


075 GiveItem

 GiveItem( nPlayer : float , Item : string )

Команда: GiveItem - помещает игроку: nPlayer в Рюкзак (не только в обоз) текущей Партии предмет (не квестовый), описываемый строкой Items . Предмет описывается строкой одного из следующих форматов : ". [[ ]]" - для доспеха или оружия ( описание заклинания пишется в квадратных скобках, и эта часть строки необязательна ) ; "instruction weapon . " - для чертежа оружия ; "instruction armor . " - для чертежа доспеха ; "instruction quick item . " - для чертежа жезла ; "prototype . " - для основы заклинания ; "rune . " - для руны ; "material . [[]] " - для материала ( количество пишется в квадратных скобках, и эта часть строки необязательна ) ; Примеры : "bone spear . dragon green bones" - копье из кости зеленого дракона ; "crystal crossbow . diamond[weak{it;d2;d2;m2;m2;m2}]" - алмазный арбалет с ослаблением ; "material . steel[25]" - 25 кусков стали.


076 GiveMoney

 GiveMoney( nPlayer : float , Money : float )

Команда: GiveMoney - добавляет в кошелек объекта количество денег: Money. Команда: GiveMoney не работает в магазине. У объектов принадлежащих Партиям индивидуальный кошелек пуст.


077 GiveQuestItem

 GiveQuestItem( nPlayer : float , QuestItem : strin )

Команда: GiveQuestItem - добавляет квестовый предмет в рюкзак текущей Партии Игрока. Рюкзак имеет четыре места. Переполнение квестовых предметов в рюкзаке не взывает ошибки, в случае переполнения рюкзака, квестовые предметы добавляются в обоз.


078 GiveSkill

 GiveSkill( Unit : object , Skill : string , Amount : float )

Команда: GiveSkill - добавляет количество пунктов: Amount параметру навык: Skill объекту: Unit. Механизм добавления пунктов навыка командой: GiveSkill делится на три этапа: 1- вычисление необходимого количество опыта для текущего добавления пунктов навыка, 2 - добавление вычисленного количества опыта объекту: Unit (не Партии!). 3 - добавления навыка за счет добавленного опыта, тем самым увеличивается значения переменных объекта зависимых от количества опыта - это параметры: "Здоровье" и "Выносливость" объекта.


079 GiveStrength

 GiveStrength( Unit : object , Amount : float )

Команда: GiveStrength - добавляет объекту юниту: Unit пунктов силы: Amount . Работает только на игровых зонах. Функция одинаково воздействует как на врагов, так и для персонажей игроков.


080 GiveUnitQuestItem

 GiveUnitQuestItem( Unit : object , QuestItem : string )

Команда: GiveUnitQuestItem - добавляет квестовый предмет под именем: QuestItem в рюкзак объекта: Unit (сундук). Если объект член "Партии" Игрока, то квестовый предмет добавляется в обоз партии.


081 GiveUnitSpell

 GiveUnitSpell( Unit : object , sSpell : string )

Команда: GiveUnitSpell - дает объекту: Unit Заклинание, описанное строкой Spell. Заклинание помещается не в обоз, а в набор активных заклинаний - если он полон, то ничего не происходит. В магазине эта процедура не действует, а в игровой зоне, хотя фактически заклинание дается игроку, не обновляет набор заклинаний.


082 GodMode

 GodMode( nPlayer : float , Mode : float )

Команда: GodMode - устанавливает текущей партии игрока под номером: nPlayer режим: Mode - 0 значение по умолчанию, Mode - 1 партия неубиваемы при беге мана нерасходуется, Mode - 2 члены партии неубиваемы, при беге мана нерасходуется и любой юнит из партии убивает врага с одного удара.


083 GroupAdd

 GroupAdd( grpA : group , grpB : group ) : group

Функция: GroupAdd - возвращает группу как набор, из объектов полученный в результате сравнения двух групп объектов, которые есть хотя бы в одной из групп: grpA или grpB. Работает с любыми экземплярами групп: "Составными ", "Дипломатическими" и "Игровыми". Для "Игровых" групп можно использовать эту функцию только в скриптах на уровне модуля карты, так как параметры: grpA и grpB следует вводить только как глобальные переменные.?


084 GroupCross

 GroupCross( grpA : group , grpB : group ) : group

Функция: GroupCross - возвращает группу как набор из объектов пересечения групп объектов, которые есть как в группе: grpA, так и в группе: grpB. Работает с любыми экземплярами групп: "Составными ", "Дипломатическими" и "Игровыми". Для "Игровых" групп можно использовать эту функцию только в скриптах на уровне модуля карты, так как параметры: grpA и grpB следует вводить только как глобальные переменные.?


085 GroupHas

 GroupHas( grp : group , Unit : object ) : float

Функция: GroupHas - возвращает значения: истину = 1 - если в группе: grp содержится объект: Unit. Работает с любыми экземплярами групп: "Составными ", "Дипломатическими" и "Игровыми". Для "Игровых" групп можно использовать эту функцию только в скриптах на уровне модуля карты, так как параметры: grp следует вводить только как глобальные переменные.?


086 GroupSee

 GroupSee( grp : group ) : group

Функция: GroupSee - глаза какой-либо группы, возвращает группу как набор из объектов, видимый в текущий момент из глаз группы: grp. Члены группы: : grp могут видеть друг друга. Соответственно, в этом случае в группу войдут и юниты из группы: grp. Если юниты из группы не видят друг друга и не видят никого, то функция возвращает пустое значение. Работает с любыми экземплярами групп: Составными , Дипломатическими и Игровыми. Для Игровых групп можно использовать эту функцию только в скриптах на уровне модуля карты, так как параметры: grp следует вводить только как глобальные переменные.?


087 GroupSize

 GroupSize( grp : group ) : float

Функция: GroupSize - возвращает число юнитов в группе: grp. Работает с любыми экземплярами групп: "Составными ", "Дипломатическими" и "Игровыми". Для "Игровых" групп можно использовать эту функцию только в скриптах на уровне модуля карты, так как параметры: grp следует вводить только как глобальные переменные.?


088 GroupSub

 GroupSub( grpA : group , grpB : group ) : group

Функция: GroupSub - возвращает группу как набор из объектов, состоящую из тех юнитов группы grpA, которых нет в grpB. Работает с любыми экземплярами групп: "Составными ", "Дипломатическими" и "Игровыми". Для "Игровых" групп можно использовать эту функцию только в скриптах на уровне модуля карты, так как параметры: grpA и grpB следует вводить только как глобальные переменные.?


089 GSDelVar

 GSDelVar( nPlayer : float , Var : string )

Команда: GSDelVar - удаляет переменные с именем: Var у игрока номер: nPlayer.


090 GSGetVar

 GSGetVar( nPlayer : float , Var : string ) : float

Функция: GSGetVar - возвращает значение переменной с именем: Var у игрока номер: nPlayer.


091 GSSetVar

 GSSetVar( nPlayer : float , Var : string , nVar : float )

Команда: GSSetVar - устанавливает значение: nVar в переменную с именем: Var у игрока номер: nPlayer. ?


092 GSSetVarMax

 GSSetVarMax( nPlayer : float , Var : string , nVar : float )

Команда: GSSetVarMax - устанавливает значение: nVar в переменную с именем: Var у игрока номер: nPlayer. ?


093 Guard

 Guard( Unit : object , x : float , y : float , rad : float )

Команда: Guard - отдает команду юниту: Unit, охранять территорию с радиусом: rad с центром в точке: (x,y). Юнит самостоятельно передвигается по указанной зоне, патрулируя ею.


094 HaveItem

 HaveItem( nPlayer : float , idQuestItem : float ) : float

Функция: HaveItem - возвращает истина: 1, если у Игрока под номером: nPlayer в обозе или в рюкзаке есть квестовых предмет под кодом: idQuestItem, в противном случае ложь - 0


095 HideObject

 HideObject( Unit : object , Hide : float )

Команда: HideObject - работает только на брифинг зонах. Объект-юнит: Значение параметра: Hide - 1 делает: Unit невидимым на брифинг зоне, значение параметра: Hide - 0 делает объект: Unit видимым на брифинг зоне.


096 HP

 HP( Unit : object ) : float

Функция: HP - возвращает текущее значение параметра: здоровье у объекта Unit. Это число учитывает эффекты заклинаний ослабления и усиления, наложенных на объект.


097 Idle

 Idle( Unit : object )

Команда: Idle -


098 InflictDamage

 InflictDamage( Unit : object , Amount : float )

Команда: InflictDamage - наносит повреждения в количестве: Amount без учета показателя брони объекту-юниту: Unit. Если уничтожить врага с помощью этой команды, то опыт за убийство все равно достанется текущей партии и группе?


099 InvokeAlarm

 InvokeAlarm( nAlarm , x : float , y : float )

Команда: InvokeAlarm - многофункциональная команда. Активирует переменную: nAlarm. Устанавливает значение переменной: nAlarm равной сумме времени всех предыдущих промежутков активаций и деактиваций этих переменных с момента начала игры. В переменную: nAlarm после активации, постоянно добавляется значение счетчика времени (1/15 сек). Активным может быть только один номер переменной. Активируя следующий номер переменной: nAlarm, команда: InvokeAlarm одновременно деактивируется предыдущую переменную, но не обнуляет ее. Номер следующей инициализируемой переменной необязательно должен быть по порядку, можно повторно инициализировать тот же номер переменной или предыдущий. Чтобы сбросить все значения переменных: nAlarm в ноль и остановить счетчик в глобальной переменной, нужно вызвать команду: InvokeAlarm с первым параметром = 0 : InvokeAlarm(0,0,0). Глобальная переменная не обнуляется. Так же эта команда устанавливает место на карте в точке: (x,y) с номером текущей, инициализируемой переменной. Этот указатель используется в различных заданиях, прописывается в свойство объектов, но только на уровне скриптмодуля. Привязать событие к объекту из консоли нельзя. Враг, реагирующий на событие с данным кодом (предустановлен, инициализирован?) подходит к этой точке и переходит в режим Guard. Если установить значение: nAlarm=0, тревога сбрасывается, и враги возвращаются к своему первоначальному месту и состоянию.


100 IsAlarm

 IsAlarm( nAlarm : float ) : float

Функция: IsAlarm - возвращает значение истина=1, если переменная инициализирована, и ложь=0 в противном случае.


101 IsAlive

 IsAlive( Unit : object ) : float

Функция: IsAlive - возвращает истину=1, если юнит: Unit жив, и ложь=0 в противном случае.


102 IsCameraPlaying

 102 IsCameraPlaying( ) : float

Функция: IsCameraPlaying -


103 IsDead

 IsDead( Unit : object ) : float

Функция: IsDead - возвращает истину = 1- если объект: Unit мертв, и ложь =0 - в противном случае. Если объект поднят? если объект не существует?, если ввести код предмета, например ключ от пирамиды?


104 IsEnemy

 IsEnemy( Unit : object , nDiplomacyGroup : float ) : float

Функция: IsEnemy - возвращает истину или ложь. Если объект юнит: Unit врагом для Дипломатической группы номер: nDiplomacyGroup.


105 IsEqual

 IsEqual( A : float , B : float ) : float

Функция: IsEqual - возвращает истину = 1, если число: A равно числу: B, и ложь=1 в противном случае.


106 IsEqualString

 IsEqualString( A : string , B : string ) : float

Функция: IsEqualString - возвращает истину=1, если строка: A равна строке: B с учетом регистра, и ложь=0 в противном случае.


107 IsGreater

 IsGreater( A : float , B : float ) : float

Функция: IsGreater - возвращает истину=1, если число: A больше чем число: B, и ложь=0 в противном случае.


108 IsInArea

 IsInArea( idArea : float , x : float , y : float ) : float

Функция: IsInArea - возвращает истину=1, если точка: (x,y) находится в одной из области с идентификатором: idArea, и ложь=0 в противном случае.


109 IsInSquare

 IsInSquare( x : float , y : float , x1 : float , y1 : float , x2 : float , y2 : float ) : float

Функция: IsInSquare - возвращает истину=1, если точка: (x,y) находится в прямоугольнике: (x1,y1)-(x2, y2), и ложь=0 в противном случае.


110 IsLess

 IsLess( A : float , B : float ) : float

Функция: IsLess - возвращает истину=1, если число: A меньше чем число: B, и ложь=0 в противном случае.


111 IsNight

 IsNight( ) : float

Функция: IsNight - возвращает значение в интервале чисел: 0 до 1 в зависимости от времени суток: от 20 до 0 часов - значение от 0.0001 до 1. от 0 до 8 часов утра значение = 1, от 8 до 20 часов = 0.


112 IsPlayerInDanger

 IsPlayerInDanger( nPlayer : float ) : float

Функция: IsPlayerInDanger - возвращает значение ложь=0 - если текущая Партия игрока под номером: nPlayer находится в безопасности, или: истина=1, если хотя бы один из членов партии в опасности. IsPlayerInDanger( 0 ) = NOT( IsPlayerInSafety( 0 ) )


113 IsPlayerInSafety

 IsPlayerInSafety( nPlayer : float ) : float

Функция: IsPlayerInSafety - возвращает значение ложь=0 - если текущая Партия игрока под номером: nPlayer находится в безопасности, или: истина=1, если хотя бы один из членов партии в опасности. IsPlayerInSafety( 0 ) = NOT( IsPlayerInDanger( 0 ) ).


114 IsUnitBlocked

 IsUnitBlocked( Unit : object ) : float

Функция: IsUnitBlocked - возвращает истину=1, если юнит: Unit заблокирован, и ложь=0 в противном случае.


115 IsUnitInWater

 IsUnitInWater( Unit : object ) : float

Функция: IsUnitInWater - возвращает истину=1, если юнит: Unit находится в воде, и ложь=0 в противном случае.?


116 IsUnitVisible

 IsUnitVisible( Unit : object ) : float

Функция: IsUnitVisible - возвращает истину: 1, если юнит видим игроком на игровой зоне, в противном случае: 0 (не хватает параметра nPlayer). команда: HideObject не влияет на результат, возвращаемый этой функцией.


117 KillScript

 KillScript( )

Команда: KillScript - работает только на уровне скриптмодуля карты!


118 KillUnit

 KillUnit( Unit : object )

Команда: KillUnit - убивает объект: Unit. Опыт за убийство никому не достается. Чтобы опыт за убийство: Unit достался текущей "Партии" следует ввести команду: InflictDamage.


119 LeaveToZone

 LeaveToZone( nPlayer : float , MapZone : string , nEnterMap : float )

Команда: LeaveToZone - перемещает Игрока: nPlayer (все партии и обоз) на зону: MapZone в место: nEnterMap. Место: nEnterMap - это заранее предусмотренные места на карте где могут появляться Партии игроков. Каждый портал на карте имеет свой номер места: nEnterMap.


120 Lie

 Lie( Unit : object )

Команда: Lie - изменяет режим перемещения объекта: Unit, отдает команду: ляг.


121 Mana

 Mana( Unit : object ) : float

Функция: Mana - возвращает текущее значение параметра: выносливость у объекта: Unit.


122 MaxHP

 MaxHP( Unit : object ) : float

Функция: MaxHP - возвращает максимально возможное значение здоровье у объекта: Unit. Это число учитывает эффекты заклинаний ослабления и усиления, наложенных на объект.


123 MaxMana

 MaxMana( Unit : object ) : float

Функция: MaxMana - возвращает максимально возможное значение выносливости: Mana у объекта: Unit.


124 MoveParticleSource

 MoveParticleSource( id : float , x : float , y : float , z : float , Time : float , Remove : float )

Команда: MoveParticleSource - перемещает источник частиц с идентификатором: id в точку: (x,y,z) за время: Time (измеряется в 1/15 секунды). Если параметр: Remove - истина, то после перемещения удаляет источник.


125 MovePointLight

 MovePointLight( id : float , x : float , y : float , z : float , Time : float , Remove : float )

Команда: MovePointLight - перемещает источник света с идентификатором: id в точку: (x,y,z) за время: Time (измеряется в 1/15 секунды). Если параметр: Remove - истина, то после перемещения удаляет источник.


126 MoveToObject

 MoveToObject( UnitA : object , UnitB : object )

Команда: MoveToObject - заставляет юнит: UnitA двигаться в текущем режиме перемещения к той точке, в которой на момент выполнения команды находился юнит UnitB.


127 MoveToPoint

 MoveToPoint( Unit : object , x : float , y : float )

Команда: MoveToPoint - отдает команду юниту: Unit следовать в точку: (x,y).


128 Mul

 Mul( A : float , B : float ) : float

Функция: Mul - возвращает произведение чисел: (A и B)


129 Not

 Not( bool : float ) : float

Функция: Not - возвращает отрицание логического значения bool: истину=1, если: bool равно нулю, и ложь=0 в противном случае.


130 PlayAnimation

 PlayAnimation( Unit : object , Animation : string )

Команда: PlayAnimation - воспроизводит анимацию - движение частей тела и сопутствующие звуковые эффекты. Unit - юнит, который будет воспроизводить анимацию. Где брать anim: Сначала надо определиться с юнитом, который надо привести в движение. Потом в lmpdatabase\MapObjects\RaceModels.txt найти Name этого юнита. Теперь посмотрите, что стоит в колонке Mask name. Нам нужен файл с таким названием и расширением adb, он находится в res\database.res\ . Открываем этот файл блокнотом и видим среди мешанины значков некие связные элементы - это и есть anim'ы данного типа юнита. Я проверял на примере орка-шамана: Name = LMP Orc Male Tatoo Mask name = unorma Файл = res\database.res\unorma.adb Выковыренные оттуда anim'ы: uattack01..09 - Атака различным оружием. Юнит машет "топором", натягивает "тетиву", тыкает "копьем". udeath01..31 - Смерть. Падения вперед / назад / в сторону, на бегу / на ходу / при ползании, с агонией / резко / медленно. cidle01..09 - Оглядывание, переступание с ноги на ногу. То, что делает перс, когда долго стоит на месте. ucast01..04 - Колдование. Эффектов типа шарика стихии не появляется, только движение тела. uhit01..21 - Попадание по юниту. Также как и смерть, из любых положений. crun01..02 - Бег. Под ногами появляются следы. cwalk01..09 - Юнит идет, крадется. Есть анимации как бы раненой походки, усталой, хромой. ccrawl01 - Юнит ползет. ucross01..09 - Переходы между стоячим / крадущимся / лежачим положением юнита. scross01..09 - Одна фаза шагания / ползания etc. Полный шаг, либо один рывок в сторону. crest - Юнит садится отдыхать. Кроме них, в "человеческом" файле unhuma.adb я нашел: (не проверял) ubriefing## - Движения во время диалогов. uspecial## - Отдает честь, кланяется, стоит по стойке смирно, etc. cspecial## - Некие занятия наподобие точения меча, сидения на бревне, etc. Первые буквы анимации - указатели: u - действие произойдет один раз, затем юнит вернется в исходное состояние с - действие повторяется непрерывно, юнит не реагирует на указание другой анимации. Если в это время ударить юнит или показаться на глаза (враждебному), он не станет реагировать. Если замороженный анимацией объект бить, он будет отшатываться и потом снова выполнять заданную командой анимацию. Если убить, умрет как обычно и ляжет трупом. s - аналогично u. При вводе неправильного anim не происходит ничего. Если юнит во время применения процедуры двигался, то он остановится, проиграет анимацию и потом пойдет дальше. (В случае анимации с буквой: "с" он остановится навечно).


131 PlayCamera

 PlayCamera( PlayName : string )

Команда: PlayCamera - запускает команду автоматического управления камерой вида игровой зоны. Последовательность перемещения камеры находится в файле: PlayName из каталога игры: ...CAMERA\.


132 PlayerSee

 PlayerSee( nPlayer : float ) : group

Функция: PlayerSee - глаза партии. Возвращает сборную группа юнитов, которых видит игрок под номером: nPlayer, - т.е., все те юниты, которые видны глазами юнитов (членов) партии игрока. Юниты также видят и друг друга в партии. НЕ Эквивалентно вызову GroupSee ( GetPlayerUnits ( nDiplomacyGroup ) )!.


133 PlayFX

 PlayFX( float , float , float , float , string )

Команда: PlayFX -


134 PlayMovie

 PlayMovie( PlayName : string )

Команда: PlayMovie - воспроизводит видеоролик с именем PlayName из каталога игр: ...MOVIES\.


135 PlayMusic

 PlayMusic( nPlayer : float , PlayName : string )

Команда: PlayMusic - воспроизводит мелодию с именем PlayName из подкаталога: ...\STREAM\. Имя файла указывается без расширения.


136 Qfinish

 Qfinish( )

Команда: QFinish - объявляет выполненным задание, выдаваемое в МП командой: Qstart. При этом в инфоокне выводится текст задания, а в момент выполнения появляется дракончик. Если последовательность команд: Qstart, Qfinish была вызвана в одиночной игре, то за выполненный квест, достаются все полагающиеся бонусы и квестовые предметы. Вновь объявленное задание командой: QStart с тем же именем отменяет уже выполненные задачи. Например, если в теле объявления квеста была команда: QObjSeeUnit и группа игроков видела этого юнита, то вновь объявленный квест потребует повторного посмотреть на этот юнит.


137 QObjArea

 QObjArea( idArea : float )

Команда: QObjArea - предназначена для создания и выполнения динамических заданий на игровых зонах в МП. Как правило, область: idArea задается под кодом - 1. Область является неким виртуальным объектом на карте включающее в себя множество участков на игровой зоне с одинаковым ID.


138 QObjGetItem

 QObjGetItem( id : float )

Команда: QObjGetItem - предназначена для создания и выполнения динамических заданий на игровых зонах в МП. Добавляет задачу: получить квестовый предмет с кодом: id


139 QObjKillGroup

 QObjKillGroup( "grp" : string )

Команда: QObjKillGroup - предназначена для создания и выполнения динамических заданий на игровых зонах в МП. Добавляет задачу: уничтожить "Игровую" группу под именем глобальной переменной: grp. Игровая группа создается в модуле игровой зоны как глобальная переменная и добавляет в свой набор объекты-юниты командой: AddObject. Параметр: grp - вводится как имя глобальной переменной. Команду: QObjKillGroup нельзя применять из консоли, так как нет функций возвращающих экземпляр "Игровой" группы.?


140 QObjKillUnit

 QObjKillUnit( UnitName : string )

Команда: QObjKillUnit - предназначена для создания и выполнения динамических заданий на игровых зонах в МП. Добавляет задачу: уничтожить объект с именем: UnitName.


141 QObjSeeObject

 QObjSeeObject( ObjectName : string )

Команда: QObjSeeObject - предназначена для создания и выполнения динамических заданий на игровых зонах в МП. Добавляет задачу: увидеть объект (сундук, не юнит) с именем: ObjectName.


142 QObjSeeUnit

 QObjSeeUnit( UnitName : string )

Команда: QObjSeeUnit - предназначена для создания и выполнения динамических заданий на игровых зонах в МП. Добавляет задачу: увидеть объект-юнит с именем: UnitName.


143 QObjUse

 QObjUse( Lever : string , State : float )

Команда: QObjUse - применяется в процедуре описания задания и добавляет задачу - перевести рычаг(Lever) в состояние(State) Добавляет задачу: перевести "рычаг": Lever в состояние: State в набор задач объявленных командой: Qstart


144 QStart

 QStart( QuestName : string )

Команда: QStart - динамически, во время игры или на брифинг-зоне, команда: QStart объявляет квест в МП на сервере игры ПЗ и открывает текущее перечисление целей. Закрывает текущее перечисление целей команда: QFinish. В теле Объявления задания (перечисление задач) находятся команды ставящее условия выполнения Задания. Очередность установления задач должна быть в прямой последовательности их выполнения и недолжна, нарушаться, так как подзадания в МП выдаются последовательно по мере их выполнения. Задание можно объявить и в одиночной игре, но это бессмысленно, так как последовательность получения заданий в одиночной игре предусмотрены заранее в таблице ресурсов.


145 QuestComplete

 QuestComplete( nPlayer : float , QuestName : string )

Команда: QuestComplete - как и МП команда: QFinish объявляет квест выполненным и выдает опыт за выполнение задания, но сообщения о выполнении задания не выводятся в инфоокне игры.


146 Random

 Random( Max : float ) : float

Функция: Random - возвращает псевдослучайное число в промежутке от: 0 до: Max.


147 RecalcMercBriefings

 RecalcMercBriefings( )

Команда: RecalcMercBriefings -


148 RedeployParty

 RedeployParty( nPlayer : float )

Команда: RedeployParty - завершает транзакцию установки текущей партии для выбранного игрока: nPlayer.


149 RemoveObject

 RemoveObject( grp : group , Unit : object )

Команда: RemoveObject - удаляет принадлежность объекта: Unit к глобальной переменной "Игровой группы": grp. Игровая группа создается в модуле игровой зоны как глобальная переменная и добавляет в свой набор объекты-юниты командой: AddObject. Параметр: grp - вводится как имя глобальной переменной. Команду: RemoveObject нельзя применять из консоли, так как нет функций возвращающих экземпляр "Игровой" группы.?


150 RemoveObjectFromServer

 RemoveObjectFromServer( Object : object )

Команда: RemoveObjectFromServer - удаляет объект с сервера (сундук, механизм...)


151 RemoveParty

 RemoveParty( nPlayer : float , PartyName : string )

Команда: RemoveParty - удаляет партию по имени: PartyName из набора партий игрока под номером: nPlayer.


152 RemoveQuestItem

 RemoveQuestItem( Unit : object , id : float )

Команда: RemoveQuestItem - удаляет квестовый предмет из обоза (рюкзак?) текущей группы. (У врагов из рюкзака?) Кол-во удалений одинаковых квестовых предметов у игрока?


153 RemoveUnitFromControl

 RemoveUnitFromControl( nPlayer : float , Unit : object )

Команда: RemoveUnitFromControl - удаляет иконку юнита: Unit из контроль панели игрока: nPlayer на игровой зоне.


154 RemoveUnitFromParty

 RemoveUnitFromParty( nPlayer : float , NamePersRes : string )

Команда: RemoveUnitFromParty - удаляет из текущей партии персонаж: NamePersRes принадлежащий игроку под номером: nPlayer. Можно ли удалить персонаж не из текущей партии, используя обычный указатель принадлежности к партии через двоеточие.


155 RemoveUnitFromServer

 RemoveUnitFromServer( Unit : object )

Команда: RemoveUnitFromServer - удаляет юнит с сервера. Теряется ли рюкзак, обоз при восстановлении персонажа?


156 ResetTarget

 ResetTarget( Unit : object )

Команда: ResetTarget - сбрасывает все режимы: охраны, патрулирования и агрессивности. Перед тем как набрать список команд патрулирования и охраны следует сделать сброс этой командой. Эта самая молодая команда в ПЗ. в версии игры 1.0 её нет. Она появилась в сервис пакете 1.02, для того чтобы знаменитым вопросом: "…почему Циклоп не уходит" больше не мучили разработчиков.


157 Rest

 Rest( Unit : object )

Команда: Rest - юнит: Unit отдыхает, если это возможно, то усаживается на землю.


158 RotateTo

 RotateTo( Unit : object , x : float , y : float )

Команда: RotateTo - поворачивает объект: Unit лицом по направлению к точке( X , Y ). Сразу после вызова команды: AddUnitToServer команда: RotateTo не работает, нужно время, чтобы Юнит появился на карте, но выполнить задержку командой: Sleep из консоли нельзя. Команда: Sleep работает только на уровне Скриптмодуля карты.


159 Run

 Run( Unit : object )

Команда: Run - переключает объект-юнит: Unit в режим "бег"


160 RunWorldTime

 RunWorldTime( Hour : float )

Команда: RunWorldTime - переустанавливает текущее время: Hour в ПЗ.


161 SendEvent

 SendEvent( float , flaot )

Команда: SendEvent - Вызывает определенные событие из игры описываемое ID ( похоже на SendStringEvent )


162 SendStringEvent

 SendStringEvent( float , string )

Команда: SendStringEvent - Вызывает определенные событие из игры описываемое строкой: say. Известные события это: Реплики, старт диалогов на брифинг зоне, запуск обучающего текста на игровой зоне, обучающие указатели и так далее. В каждом случае форма построения строки события разные.
Например, чтобы вызвать какой-то диалог из тела процедуры немедленно, то есть, обработать событие на брифинг зоне с каким-то условием, то в этой команде нужно написать следующую строку: SendStringEvent(0,"briefing m12"), где briefing - указатель типа вызываемого события, m12 - имя переменной, разделитель списка - пробел. Так же можно указать примечание в строке, например, так: @SendStringEvent(0,"briefing m12 smith"). Набрав эту команду из консоли на брифинге поселка, немедленно состоится разговор между Заком и Бабуром. То же самое событие можно реализовать при посещении брифинг зоны, например, проинициализировать переменную: GSSetVar(0,"b.bz1g.m12",1). В этом случае, для объекта брифинг зоны устанавливается событие событие: автостарт диалога при следующем посещении этой зоны. В данном случае при следующем посещении брифинг зоны Поселка автоматически стартует диалог с Бабуром. Ну и если непосредственно инициализировать переменную: GSSetVar(0,"b.smith.m12"),1), то у Персонажа Бабура появится строка диалога, само событие которого можно вызвать по выбору текста в меню этого персонажа. Макрос последовательности разговора, анимация прописана в файле m12, базы texts.res. Выбор локализации имени персонажа производится по уникальному NID коду. Если инициализировать имя переменной, которой нет, то будет пустая строка в списки диалогов имен Персонажа.


163 Sentry

 Sentry( Unit : object , x : float , y : float )

Команда: Sentry - отдает команду юниту: Unit охранять точку: (x,y), атакуя врагов в области видимости. После уничтожения противника возвращается в указанную точку.


164 SetBackgroudColor

 SetBackgroudColor( R : float , G : float , B : float )

Команда: SetBackGroundColor - устанавливает фоновый цвет на карте в режиме: (R,G,B). Фон перекрывается текстурами неба, поэтому результат будет заметен лишь на пещерных картах.


165 SetCameraOrientation

 SetCameraOrientation( float )

Команда: SetCameraOrientation -


166 SetCameraPosition

 SetCameraPosition( float , float , float )

Команда: SetCameraPosition -


167 SetCP

 SetCP( Object : object , x : float , y : float , z : float )

Команда: SetCP - переносит объект: Object на карте, (не только юнит) в точку: (x,y). На карте Предгорья можно перенести Рычаг от пирамиды: @setcp( GetObjectByID( "4636" ), 22 , 140, 0)


168 SetCPFast

 SetCPFast( Object : object , x : float , y : float , z : float )

Команда: SetCPFast - переносит объект: Object на карте, (не только юнит) в точку: (x,y). На карте Предгорья можно перенести Рычаг от пирамиды: @setcp( GetObjectByID( "4636" ), 22 , 140, 0).


169 SetCurrentParty

 SetCurrentParty( nPlayer : float , PartyName : string )

Команда: SetCurrentParty - устанавливает текущую партию: PartyName из набора партии игрока под номером: nPlayer.


170 SetDiplomacy

 SetDiplomacy( nDiplomacyGroupA : float , nDiplomacyGroupB : float , Diplomacy : float )

Команда: SetDiplomacy - изменяет дипломатические отношения между группами объектов. Группы: nDiplomacyGroupA и nDiplomacyGroupB представлены по номерам. Дипломатическая группа "Партии" "Игрока" всегда принадлежит номер дипломатической группировки = 0. Возможные значения: Diplomacy: 1 - союзник 0 - нейтрал -1 - враг


171 SetDirectionToObject

 SetDirectionToObject( nUnit : float )

Команда: SetDirectionToObject -


172 SetEnemy

 SetEnemy( Unit : object , id : float )

Команда: SetEnemy -


173 SetParticleSourceSize

 SetParticleSourceSize( id : float , rad : float )

Команда: SetParticleSourceSize - изменяет радиус источника частиц с идентификатором: id на: rad.


174 SetPlayer

 SetPlayer( Unit : object , nDiplomacyGroup : float )

Команда: SetPlayer - устанавливает юниту: Unit, принадлежность к дипломатической группе номер: nDiplomacyGroup.


175 SetPlayerAggression

 SetPlayerAggression( float , float )

Команда: SetPlayerAggression -


176 SetScience

 SetScience( object , float , float , float , float , float , float )

Команда: SetScience -


177 SetSpellAggression

 SetSpellAggression( Unit object , Aggression : float )

Команда: SetSpellAggression -


178 SetSunLight

 SetSunLight( sunlightR : float , sunlightG : float , sunlightB : float , ambientR : float , ambientG : float , ambientB : float , skyR : float , skyG : float , skyB : float )

Команда: SetSunLight -


179 SetWaterLevel

 SetWaterLevel( idWBassein : float , Level : float , delay : float )

Команда: SetWaterLevel - устанавливает уровень: Level воды: idWBassein с задержкой: delay относительно дна водоема. Уровень водоема не влияет на проходимость зон вброд Персонажами.


180 SetWind

 SetWind( float , float , float , float )

Команда: SetWind -


181 ShowBitmap

 ShowBitmap( float , Bitmap : string )

Команда: ShowBitmap -


182 ShowCredits

 ShowCredits( string )

Команда: ShowCredits -


183 Sleep

 Sleep( Sleep : float )

Команда: Sleep - устанавливает паузу: Sleep в теле вызываемой процедуры на уровне Скриптмодуля карты.


184 SleepUntil

 SleepUntil( bool : float )

Команда: SleepUntil -


185 SleepUntilIdle

 SleepUntilIdle( Unit : object )

Команда: SleepUntilIdle - устанавливает паузу: Sleep в теле вызываемой процедуры на уровне Скриптмодуля карты, до момента пока юнит не прекратит выполнять начатое предыдущей командой действие.
Пример:
MoveToPoint( GetLeader(), 101, 223 )
SleepUntilIdle( GetLeader() )
KillUnit( GetLeader() )
Объект пойдет в точку и сколько бы не шел, умрет когда остановится.


186 Standt

 Standt( Unit : object )

Команда: Stand - изменяет режим перемещения объекта: Unit на шаг.


187 StartAnimation

 StartAnimation( Unit : object , PathAnimation : string )

Команда: StartAnimation -


188 Sub

 Sub( A : float , B : float ) : float

Функция: Sub - возвращает разность чисел А и В.


189 Sum

 Sum (цикл)

Команда: Sum -


190 SwitchLeverState

 SwitchLeverState( Lever : object , State : float )

Команда: SwitchLeverState - устанавливает механизм (рычаг): Lever в исходное положение выключено: State - 0 и в положение включено: State - 1. Соответственно, визуально отображаются положения рычагов на игровых зонах. Функция: GetLeverState - возвращает состояние механизма.


191 SwitchLeverStateEx

 SwitchLeverStateEx( Lever : object , State : float , Delay : float )

Команда: SwitchLeverStateEx - устанавливает механизм (рычаг): Lever в исходное положение выключено: State = 0 и в положение включено: State = 1. Соответственно, визуально отображаются положения рычагов на игровых зонах. Дополнительный параметр: Delay позволяет установить время задержки мультипликации механизма. Функция: GetLeverState - возвращает состояние механизма.


192 UMAg

 UMAg( Unit : object , Ag : float )

Команда: UMAg - отдает команду юниту: Unit избегать врагов, должно быть сброшено агрессивное состояние у объекта.


193 UMAggression

 UMAggression( Unit : object )

Команда: UMAggression - отдает команду юниту: Unit атаковать врагов в пределах видимости.


194 UMClear

 UMClear( Unit : object )

Команда: UMClear - удаляет все директивы самостоятельного поведения юнита: Unit.


195 UMCorpseWatcher

 UMCorpseWatcher( Unit : object )

Команда: UMCorpseWatcher -


196 UMFear

 UMFear( Unit : object , Fear : float )

Команда: UMFear - устанавливает поведение "испуг" юниту: Unit. При этом юнит теряет способность атаковать врагов и пытается скрыться от врагов. Поведение по умолчанию у нейтральных зверей. Параметр: Fear - номер дипломатической группы?


197 UMFollow

 UMFollow( UnitA : object , UnitB : object )

Команда: UMFollow - отдает команду объекту: UnitA постоянно следовать за объектом: UnitB . После боя команда не отменяется. Сходные свойства поведения у команды: Follow.


198 UMGuard

 UMGuard( Unit : object , x : float , y : float , rad : float )

Команда: UMGuard - заставляет объект: Unit охранять точку (x,y) с радиусом: rad.


199 UMGuardEx

 UMGuardEx( Unit : object , x : float , y : float , rad : float , Delay : float )

Команда: UMGuardEx - заставляет объект: Unit охранять точку (x,y) с радиусом: rad и задержкой: Delay в точках случайного останова объекта: Unit.


200 UMPatrol

 UMPatrol( Unit : object )

Команда: UMPatrol - Команда вызывает ошибку выполнения! Чтобы установить режим патрулирования следует, применит команду: ResetTarget перед набором списка патрульных команд.


201 UMPatrolAddPoint

 UMPatrolAddPoint( Unit : object , x : float , y : float )

Команда: UMPatrolAddPoint - указывает новую точку наблюдения: (x,y) в которую переместится объект при патрулировании. Для задержки объекта в точке наблюдения и ориентировки объекта в сторону наблюдения, нужно использовать за командой: UMPatrolAddPoint команду: UMPatrolAddPointLook.


202 UMPatrolAddPointLook

 UMPatrolAddPointLook( Unit : object , x : float , y : float , Delay : float )

Команда: UMPatrolAddPointLook - указывает объекту: Unit точку (x,y) в которую будет смотреть объект: Unit и насколько долго: Delay объект задержится в этом положении.


203 UMPatrolClear

 UMPatrolClear( Unit : object )

Команда: UMPatrolClear - удаляет все директивы патрулирования установленные командами: UMPatrolAddPointLook, UMPatrolAddPoint. Аналогичное действие команды: ResetTarget, но ResetTarget сбрасывает все команды UM*.


204 UMPlayer

 UMPlayer( Unit : object )

Команда: UMPlayer - подчиняет юнит: Unit игроку. Не изменяет принадлежность юнита к дипломатической группе. Действует дипломатия как на уровне Партии.?


205 UMRevenge

 UMRevenge( Unit : object )

Команда: UMRevenge - эта команда устанавливает объекту: Unit страх от дипломатической группы - 0. Объект: Unit будет стараться убежать и не видеть юнита из дипломатической группы - 0. Чтобы сразиться с врагом в таком состоянии, нужно ранить его или загнать в тупик.


206 UMSentry

 UMSentry( Unit : object , x : float , y : float )

Команда: UMSentry - устанавливает режим для юнита: Unit охранять точку: (x,y), атакуя врагов в области видимости. После уничтожения врага, юнит возвращается в указанную точку.


207 UMStandard

 UMStandard( Unit : object )

Команда: UMStandard - отдает команду юниту: Unit атаковать любого ближайшего врага в области видимости юнита: Unit. Стандартный режим для объектов врагов.


208 UMSuspection

 UMSuspection( Unit : object )

Команда: UMSuspection - отдает команду юниту: Unit идти к любому ближайшему врагу в области видимости юнита: Unit, но не атакует его?


209 UnitInSquare

 UnitInSquare( Unit : object , x1 : float , y1 : float , x2 : float , y2 : float ) : float

Функция: UnitInSquare - возвращает истину=1, если юнит: Unit находится в прямоугольнике: (x1,y1)-(x2, y2).


210 UnitSee

 UnitSee( Unit : object ) : group

Функция: UnitSee - возвращает группу как набор из объектов, состоящую из тех юнитов которых видит юнит: Unit. Юнит не видит самого себя: GroupSize(UnitSee( GetLeader()))


211 WaitEndAnimation

 WaitEndAnimation( )

Команда: WaitEndAnimation -


212 WaitSegment

 WaitSegment( float )

Команда: WaitSegment -


213 Walk

 Walk( Unit : object )

Команда: Walk - отдает команду юниту: Unit перейти на шаг.


214 WasLooted

 WasLooted( Unit : object ) : float

Функция: WasLooted - возвращает значение - 0, если рюкзак объекта: Unit пуст. Рюкзак (обоз) у объекта может быть обворован или обыскан его труп.


 Таблицы и форматы

Здесь я предлагаю вашему вниманию описания различных форматов, используемых в ПЗ. Для начала здесь помещены форматы описания заклинаний и предметов, а также списки самих заклинаний и предметов.
  • Строка описания спелла
    · Для описания спелла в СПЗ используется строка следующего формата: " spell_name [ { rune_name [ ; rune_name ] [ .. ] } "

    Примеры:
    "healing" - спелл лечения без рун
    "acid_fog{e2;e2;e2;e2;e2;e2;t2;m1}" - спелл кислотного тумана с рунами 6хУ++, Ц++, З-
    "enlarge{d2;d2;d2;d2}" - спелл увеличения размера с рунами 4хВ++
    См. также список спеллов, список рун, CastSpellPoint(), CastSpellUnit() и GiveUnitSpell().
  • Строка описания предмета
    · Предмет в СПЗ описывается строкой одного из следующих форматов:
    " draught_name . material_name [ [ spell_definition ] ] " - для доспеха или оружия
    " instruction weapon . weapon_draught_name " - для чертежа оружия
    " instruction armor . armor_draught_name " - для чертежа доспеха
    " instruction quick item . rod_draught_name " - для чертежа жезла
    " prototype . spell_name " - для основы спелла
    " rune . rune_name " - для руны
    " material . material_name [ [ count ] ] " - для материала

    Примеры:
    "bone spear.dragon green bones" - копье из кости зеленого дракона
    "crystal crossbow.diamond[weak{it;d2;d2;m2;m2;m2}]" - алмазный арбалет с ослаблением
    "wand 4.meteoric[healing{ic;e2;e2;m2;m1;m1;m1;m1}]" - лучший из честных жезлов с автолечением
    "instruction weapon.crystal sword" - чертеж кристаллического меча
    "instruction armor.gipat brigand boots" - чертеж гипатских меховых сапог
    "instruction quick item.wand 2" - чертеж костяного жезла
    "prototype.stun" - основа спелла парализации
    "rune.ee5" - руна "Effect 5" (аналог У++++++++++)
    "material.mithrill" - кусок мифрила
    "material.steel[25]" - 25 кусков стали
    Следует помнить о том, что хотя таким заданием предметов можно создать, скажем, гипатский меховой нагрудник из алмаза ("gipat brigand shirt.diamond") и носить его, виден на персонаже он не будет, так как отсутствуют соответствующие текстуры. В целом я не рекомендую увлекаться созданием предметов из материалов, не совпадающих с требуемыми для данного типа предмета. Если в таблицах предметов явно указан тип материала (как, например, для копья "Смертельная Молния" - "unique spear.mithrill"), то этот материал является единственно возможным для данного предмета.

    См. также список спеллов, список рун, список материалов, список доспехов, список оружия, список прочих предметов и GiveItem().


 Руны

Основные руны
Название | Внутреннее имя
Cut range (Д-) | r0
Дальнее действие (Д+) | r1
Сверхдальнее действие (Д++) | r2
Дополнительная цель (Ц+) | t1
Дополнительные цели (Ц++) | t2
Cut area (Р-) | a0
Расширенная область действия (Р+) | a1
Максимальная область действия (Р++) | a2
Cut effect (У-) | e0
Усиление (У+) | e1
Максимальное усиление (У++) | e2
Cut duration (В-) | d0
Долговременное действие (В+) | d1
Сверхдолгое действие (В++) | d2
Малый расход запаса сил (З-) | m1
Минимальный расход запаса сил (З--) | m2

Особые руны
Название | Внутреннее имя
Выбрать друзей (:Др) | ff
Выбрать врагов (:Вр) | fe
Выбрать людей (:Лд) | fh
Выбрать гоблинов (:Го) | fg
Выбрать орков (:Ор) | fo
Выбрать ящеров (:Ящ) | fl
Разовое действие (Пр) | it
Постоянное действие (Пп) | ic
Малый расход энергии предмета (М-) | im1
Минимальный расход энергии предмета (М--) | im2
Восстановление энергии предмета (Э+) | ir1
Быстрое восстановление энергии предмета (Э++) | ir2
Effect 1 (У10%+) | ee1
Effect 2 (У30%+) | ee2
Effect 3 (У100%+) - аналог У+ | ee3
Effect 4 (У300%+) - аналог У+++ | ee4
Effect 5 (У1000%+) - аналог У++++++++++ | ee5


 Спеллы

Магия стихий
Название | Внутреннее имя
Сгусток кислоты | acid_ray
Фонтан кислоты | acid_column
Кислотный туман | acid_fog
Защита от кислоты | prot_acid
Огненная стрела | arrow
Огненный шар | fireball
Огненная стена | firewall
Защита от огня | prot_fire
Молния | lightning
Небесная молния | inv_lit
Стена молний | litnwall
Защита от молний | prot_electro
Camp fire | campfire
Curse magic | curse_magic
Rick magic | rick_magic

Магия чувств
Название | Внутреннее имя
Невидимость | invisibility
Неслышный шаг | silence
Ночное зрение | infravision
Орлиный взор | eagle_sight
Поле зрения | vision_fog
Фейерверк | fireworks
Ясновидение | clairvoyence
Detect life | detect_life
Lichdom | lichdom
Possession | possession
Shapechange | shapechange
Stench | stench

Магия астрала
Название | Внутреннее имя
Замедление | slow
Защита от магии | antimagic
Лечение | healing
Ослабление | weak
Парализация | stun
Регенерация | regeneration
Слабоумие | feeblemind
Телепортация | teleport
Увеличение | enlarge
Увеличение силы | strength
Уменьшение | shrink
Ускорение | speed
Charm | charm
Comprehend | comprehend
Link | link


 Материалы

Камни
Название | Внутреннее имя
Камень | rock
Гранит | granite
Кремень | silicon
Обсидиан | malachite

Кости
Название | Внутреннее имя
Тонкая кость | decayed bones
Крепкая кость | dry bones
Толстая кость | burned bones
Панцирная кость | scrab bones
Кость красного дракона | dragon red bones
Кость зеленого дракона | dragon green bones
Кость синего дракона | dragon black bones

Ткани
Название | Внутреннее имя
Грубая ткань | wool
Хлопок | cotton
Шерсть | silk red
Шелк | silk blue

Кожи
Название | Внутреннее имя
Тонкая кожа | thin
Крепкая кожа | thick
Толстая кожа | tanned thin

Шкуры
Название | Внутреннее имя
Шкура синего дракона | dragon black
Шкура зеленого дракона | dragon green
Шкура красного дракона | dragon red
Шкура черного тролля | troll black
Шкура синего тролля | troll blue
Шкура зеленого тролля | troll green

Меха
Название | Внутреннее имя
Тигриный мех | tiger hide
Мех снежного тигра | tiger hide white

Металлы
Название | Внутреннее имя
Бронза | bronze
Железо | iron
Сталь | steel
Мифрил | mithrill
Адамантин | adamantium
Метеорит | meteoric

Кристаллы
Название | Внутреннее имя
Алмаз | diamond


 Доспехи

Гипат
Название | Внутреннее имя
Гипатские меховые сапоги | gipat brigand boots
Гипатские меховые наручи | gipat brigand gloves
Гипатский меховой шлем | gipat brigand helm
Гипатские меховые поножи | gipat brigand leggins
Гипатские меховые штаны | gipat brigand pants
Гипатская меховая накидка | gipat brigand plate
Гипатский меховой нагрудник | gipat brigand shirt
Гипатские стеганые сапоги из кожи | gipat high boots
Гипатские стеганые наручи из кожи | gipat high gloves
Гипатский стеганый шлем из кожи | gipat high helm
Гипатские стеганые поножи из кожи | gipat high leggins
Гипатск. длинные стеганые штаны из кожи | gipat high pants
Гипатская стеганая накидка из кожи | gipat high plate
Гипатский стеганый нагрудник из кожи | gipat high shirt
Гипатские прочные сапоги из кожи | gipat highest boots
Гипатские прочные перчатки из кожи | gipat highest gloves
Гипатский прочный шлем из кожи | gipat highest helm
Гипатские прочные поножи из кожи | gipat highest leggins
Гипатск. длинные прочные штаны из кожи | gipat highest pants
Гипатская прочная куртка из кожи | gipat highest plate
Гипатская прочная нижняя рубаха из кожи | gipat highest shirt
Гипатские легкие башмаки из кожи | gipat low boots
Гипатские легкие наручи из кожи | gipat low gloves
Гипатский легкий шлем из кожи | gipat low helm
Гипатские легкие поножи из кожи | gipat low leggins
Гипатские легкие штаны из кожи | gipat low pants
Гипатская легкая рубаха из кожи | gipat low plate
Гипатский легкий нагрудник из кожи | gipat low shirt
Гипатские простые башмаки из кожи | gipat medium boots
Гипатские простые наручи из кожи | gipat medium gloves
Гипатский простой шлем из кожи | gipat medium helm
Гипатские простые поножи из кожи | gipat medium leggins
Гипатск. простые короткие штаны из кожи | gipat medium pants
Гипатская простая накидка из кожи | gipat medium plate
Гипатский простой нагрудник из кожи | gipat medium shirt

Ингос
Название | Внутреннее имя
Канийские прочные сапоги из кожи | kania brigand boots
Канийские прочные наручи из кожи | kania brigand gloves
Канийский прочный шлем из кожи | kania brigand helm
Канийск. прочные верхние штаны из кожи | kania brigand leggins
Канийские прочные штаны из кожи | kania brigand pants
Канийская прочная куртка из кожи | kania brigand plate
Канийский прочный камзол из кожи | kania brigand shirt
Канийские армейские сапоги из металла | kania high2 boots
Канийские высокие перчатки из металла | kania high2 gloves
Канийский армейский шлем из металла | kania high2 helm
Канийские армейские поножи из металла | kania high2 leggins
Канийск. армейские кольч. штаны из металла | kania high2 pants
Канийская армейская кираса из металла | kania high2 plate
Канийская армейская кольчуга из металла | kania high2 shirt
Канийские легкие сапоги из шкуры | kania high boots
Канийские легкие наручи из шкуры | kania high gloves
Канийский легкий шлем из металла | kania high helm
Канийские легкие поножи из металла | kania high leggins
Канийские штаны из шкуры | kania high pants
Канийская легкая кираса из металла | kania high plate
Канийский камзол из шкуры | kania high shirt
Канийск. тяжел. армейский шлем из металла | kania highest2 helm
Канийск. тяжел. армейские поножи из металла | kania highest2 leggins
Канийск. тяжел. армейская кираса из металла | kania highest2 plate
Канийские боевые башмаки из металла | kania highest boots
Канийск. металлические боевые перчатки | kania highest gloves
Канийский крылатый шлем из металла | kania highest helm
Канийские тяжелые поножи из металла | kania highest leggins
Канийские кольчужные штаны из металла | kania highest pants
Канийская тяжелая кираса из металла | kania highest plate
Канийская кольчужная рубаха из металла | kania highest shirt
Канийские фермерские сапоги из ткани | kania low boots
Канийские фермерские наручи из ткани | kania low gloves
Канийская фермерская шляпа из кожи | kania low helm
Канийские легкие верхн. штаны из кожи | kania low leggins
Канийские фермерские штаны из ткани | kania low pants
Канийская легкая куртка из кожи | kania low plate
Канийская фермерская рубаха из ткани | kania low shirt
Канийские охотничьи сапоги из ткани | kania medium boots
Канийские охотничьи наручи из ткани | kania medium gloves
Канийская охотничья шапка из ткани | kania medium helm
Канийские охотничьи верхние штаны из ткани | kania medium leggins
Канийские охотничьи штаны из ткани | kania medium pants
Канийский охотничий кафтан из ткани | kania medium plate
Канийский охотничий камзол из ткани | kania medium shirt

Суслангер
Название | Внутреннее имя
Хадаганские поножи из кожи | hadagan brigand boots
Хадаганские наручи из кожи | hadagan brigand gloves
Хадаганский шлем из кожи | hadagan brigand helm
Хадаганские верхние поножи из кожи | hadagan brigand leggins
Хадаганские штаны из кожи | hadagan brigand pants
Хадаганская куртка из кожи | hadagan brigand plate
Хадаганск. поддоспешник из кожи | hadagan brigand shirt
Хадаганские пластинчатые сапоги из металла | hadagan high2 boots
Хадаганские пластинчатые наручи из металла | hadagan high2 gloves
Хадаганский кованый шлем из металла | hadagan high2 helm
Хадаганск. кованые верхн. поножи из металла | hadagan high2 leggins
Хадаганские металлические пластинчатые штаны | hadagan high2 pants
Хадаганская кованая кираса из металла | hadagan high2 plate
Хадаганский легкий панцирь из металла | hadagan high2 shirt
Хадаганские сапоги из шкуры | hadagan high boots
Хадаганские наручи из шкуры | hadagan high gloves
Хадаганский легкий шлем из металла | hadagan high helm
Хадаганск. металлические кольчужные штаны | hadagan high leggins
Хадаганские штаны из шкуры | hadagan high pants
Хадаганская легкая кираса из металла | hadagan high plate
Хадаганский доспех из шкуры | hadagan high shirt
Хадаганский тяжелый шлем из металла | hadagan highest2 helm
Хадаганские тяжелые поножи из металла | hadagan highest2 leggins
Хадаганская тяжелая кираса из металла | hadagan highest2 plate
Хадаганские сапоги, усиленные металлом | hadagan highest boots
Хадаганские усиленные наручи из металла | hadagan highest gloves
Хадаганский усиленный шлем из металла | hadagan highest helm
Хадаганские пластинчатые поножи из металла | hadagan highest leggins
Хадаганские усиленные штаны из металла | hadagan highest pants
Хадаганская усиленная кираса из металла | hadagan highest plate
Хадаганская усиленная металлическая кольчуга | hadagan highest shirt
Легкие башмаки из ткани | hadagan low boots
Наручи из ткани | hadagan low gloves
Колпак из ткани | hadagan low helm
Легкие верхние штаны из кожи | hadagan low leggins
Легкие штаны из ткани | hadagan low pants
Легкий верхний воротник из ткани | hadagan low plate
Легкая рубаха из ткани | hadagan low shirt
Хадаганские легкие сапоги из ткани | hadagan medium boots
Хадаганские перчатки из ткани | hadagan medium gloves
Хадаганский тюрбан из ткани | hadagan medium helm
Хадаганские шаровары из ткани | hadagan medium leggins
Хадаганские длинные штаны из ткани | hadagan medium pants
Хадаганская куртка из ткани | hadagan medium plate
Хадаганская длинная рубаха из ткани | hadagan medium shirt

Прочие
Название | Внутреннее имя
Джуновские алмазные легкие поножи | jun high boots.diamond
Джуновские алмазные наручи | jun high gloves.diamond
Джуновский алмазный шлем | jun high helm.diamond
Джуновские алмазные полные поножи | jun high leggins.diamond
Джуновские алмазные штаны | jun high pants.diamond
Джуновская алмазная кираса | jun high plate.diamond
Джуновская алмазная рубашка | jun high shirt.diamond
Древний шлем | uniquegipathadagan helm.iron
Особая кираса | uniquegipathadagan plate.adamantium

Одежда NPC
Название | Внутреннее имя
Фамильный шлем рыцаря Бриссена | uniqueingos helm.steel
Фамильная кираса рыцаря Бриссена | uniqueingos plate.steel
Одежда губернатора Вальрасиана | kania special medium helm.silk red
 | kania special medium plate.silk red
 | kania special medium leggins.silk blue
Доспехи капитана Тильвара | kania special highest plate.meteoric
 | kania special highest leggins.meteoric
Одежда знахарки Эстеры (*) | gipat special brigand helm.tiger hide
 | gipat special brigand plate.tiger hide
 | gipat special brigand shirt.tiger hide
 | gipat special brigand pants.tiger hide
Доспехи воеводы Горта | gipat special highest helm.thick
 | gipat special highest plate.thick
 | gipat special highest leggins.thick
Нагрудный доспех Эрфара | gipat special medium plate.thin
Доспехи брата Хатуля | hadagan special brigand shirt.tanned thin
 | hadagan special brigand pants.thick
 | hadagan special brigand leggins.tanned thin

*: эти предметы имеют текстуры только будучи надетыми на персонажа-женщину


 Оружие

Гипат
Название | Внутреннее имя
Дубина из кости | bone club
Длинный костяной лук | bone long bow
Короткий костяной лук | bone short bow
Копье из кости | bone spear
Каменный топор | stone axe
Каменный боевой топор | stone battle axe
Каменный утяжеленный молот | stone battle hammer
Каменный кинжал | stone dagger
Каменный молот | stone hammer
Лук (стрелы с каменным наконечником) | stone short bow
Копье с каменным наконечником | stone spear
Каменный меч | stone sword

Ингос
Название | Внутреннее имя
Металлический топор | axe
Металлический кинжал | dagger
Металлический боевой молот | hammer
Металлический длинный лук | long bow
Металлический длинный меч | long sword
Металлическая булава | mace
Металлический короткий лук | short bow
Металлическое копье | spear

Суслангер
Название | Внутреннее имя
Металлический боевой топор | battle axe
Металлический арбалет | crossbow
Металлический крис | curved dagger
Металлический тяжелый арбалет | long crossbow
Металлическое длинное копье | long spear
Металлический палаш | saber
Металлическая тяжелая шипованная булава | spiked club
Металлическая шипованная булава | spiked mace

Прочее
Название | Внутреннее имя
Алмазный топор | crystal axe.diamond
Алмазный арбалет | crystal crossbow.diamond
Алмазный кинжал | crystal dagger.diamond
Алмазная булава | crystal mace.diamond
Алмазный короткий лук (*) | crystal short bow.diamond
Алмазное копье | crystal spear.diamond
Алмазный меч | crystal sword.diamond
Ритуальный металлический нож | cheat dagger
Копье "Смертельная Молния" | unique spear.mithrill
Древний меч | unique sword.steel
Каменный форматировщик диска С: (*) | stone formatter drive c

* - этот предмет отсутствует, есть лишь собственно его название в ресурсах игры


 Прочие предметы

Фиалы (не имеют материала!)
Название | Внутреннее имя
Зелье исцеления - очень маленький фиал | tiny potion 1
Зелье силы - очень маленький фиал | tiny potion 2
Зелье ускорения - очень маленький фиал | tiny potion 3
Зелье исцеления - маленький фиал | small potion 1
Зелье исцеления - маленький фиал | small potion 2
Зелье ускорения - маленький фиал | small potion 3
Зелье исцеления - средний фиал | potion 1
Зелье силы - средний фиал | potion 2
Зелье ускорения - средний фиал | potion 3
Зелье исцеления - большой фиал | large potion 1
Зелье силы - большой фиал | large potion 2
Зелье ускорения - большой фиал | large potion 3
Эликсир увеличения | potion enlarge
Эликсир уменьшения | potion shrink

Жезлы
Название | Внутреннее имя
Каменный жезл | wand 1
Костяной жезл | wand 2
Металлический жезл | wand 3
Фигурный жезл | wand 4
Рог зеленого дракона | wand 5.dragon green bones
Гоблинская кукла | wand 6.rock

Прочие (не имеют материала!)
Название | Внутреннее имя
Кристалл | danger sensor
Нечто магическое (*) | spell container

*: этот предмет отсутствует - есть лишь собственно его название в ресурсах игры


 Квестовые предметы

Квестовые предметы
Название | Внутреннее имя | #
Ключ от ловушек | ambushkey00 | 9
Ржавый меч | ancientsword | 75
Шило | awl | 1
Шестеренка от моста над ущельем | brokengear00 | 63
Обломки амулета телепортации | brokentoy | 45
Ключ от клетки | cagekey00 | 48
Деталь от моста в пещере | cavegear00 | 52
Ключ от прохода в пещеру | cavekey00 | 34
Бумага из покинутого лагеря | codedhadagannote | 47
Ключ от саркофага | cryptkey00 | 7
Магическая плашка | cryptrune00 | 12
Книга из Обсерватории | dcbook | 16
Голова ученого | deadscientist00 | 42
Документы управляющего | documentbook | 38
Драконий амулет | dragonamulet | 55
Яд | dragonpoison | 6
Большая Ракушка | dragonshell00 | 15
Стрела | driadarrow00 | 27
Ключ от клетки лесовиков | driadcagekey00 | 32
Священный Цветок | driadidol00 | 11
Белый Цветок | driadidol01 | 41
Вечнозеленый Лист | driadleaf00 | 39
Рычаг для плотины | dumblever | 70
Бесполезные бумаги | fakedocument00 | 67
Кувшин Айри | girlsign | 23
Гоблинская святыня | goblinfright00 | 18
Самородок | goldnugget00 | 28
Императорская Печать | goldnugget01 | 66
Ключ для алтаря | golemcenterkey00 | 26
Ящик с коллекцией | govenorchest00 | 31
Ключ от ворот в Каньон Смерти | hadogancagekey00 | 35
Ключ от входа в пещеру | hadogancavekey00 | 37
Ключ от клетки | herocagekey00 | 36
Записка на орковском языке | instruction4orcs00 | 50
Записи | journal00 | 40
Резак | knife | 2
Кристалл | leftcrystal | 22
Письмо для орков | letter2orcs00 | 51
Коготь | lizardclaw00 | 25
Ключ от особняка | manorkey00 | 68
Карта Рыжего | map00 | 10
Ключ от ловушек | minecontrolkey00 | 69
Ключ от ворот | minekey00 | 29
Ключ от шахт | minekey01 | 30
Ключ от лаборатории некромантов | necrolabkey00 | 64
Шестеренка островных орков | newgear00 | 49
Письмо для коллекционера | note | 44
Ключ от сундука людоеда Гыма | ogrekey1 | 61
Ключ от сундука людоеда Утундрия | ogrekey2 | 62
Старая шестеренка | oldgear00 | 14
Орковский букварь | orcalphabet | 24
Орковские летописи | orcannals00 | 19
Шкура с буквами | orclicense00 | 20
Магический Шар | palantir | 8
Личный знак лазутчика | rangersign00 | 65
Кристалл | rightcrystal | 21
Мешок с золотом | sackofgold | 17
Шкурки | squirrelskin | 33
Ключ от портала | teleportkey00 | 46
Вещи коллекционера | thiefsack | 43
Фиал | vial00 | 13
Голова белого волка | white wolf hide | 5


 Список NPC

Список NPC
NPC | Внутреннее имя
Голос диктора за кадром | annofcam
Го-Го | bgoblinc
Чиновник | clerk
Циклоп | cyclope
Айри-Упрямая | daughter
Человек-Демон | demon
Лу-а-Джалла | deva
Хранитель | drguardian
Эрфар-Краснобай | elder
Брат Хатуль | glav
Голем | golem
Сахиля | gopstop
Зелёный дракон | gtdragon
Брат Слепой | guru
Хаббуру | haburu
Хадаганский воин | hadexpw
Зак | hero
Вальрасиан | huber
Женщина "вообще" | human female
Атаман разбойников | human gipath npc boss f5
Атаманша, жена атамана | human gipath npc wife m3
Мужчина "вообще" | human male
Начальник экспедиции | hwleader
Айзет-Бек | iz
Ат-Зако | junboy
Балуддин | junofil
Тильвар | kapitan
Кардаур | karh
Брат Кузнец | kuzn
Первый горный ящер | liz4
Второй горный ящер | liz6
Обворованный ящер | liz8
Диэра | magess
Хадор-Забияка | merc1
Сахиля | merc10
Ринт-Стрелок | merc2
Ная-Скрытная | merc3
Эйла-Песчанка | merc4
Хис | merc5
Майрана | merc6
Харад | merc7
Файрах | merc8
Бриссен | merc9
Ловкач | mthief
Наложница | nalo
Кехель | nekro
Ривар-Здоровяк | nsheriff
Холай | oldnekro
Ящер-Отшельник | oliz
Вождь Шай-Вар | orcc
Орк стражник | orcpyr
Свинья | pig
Великий Маг | rick
Горт-Костолом | sheriff
Карансул | shopper
Старый Дракон | skd
Бабур-Скряга | smith
Дух | spirit
Свер-Зайчатник | trapper
Флейн по кличке Плешивый | vor
Эстера-Вредная | witch
Серый Лист | ycf
Брат Безлицый | zaku

Следует учитывать, что не все записи из этой таблицы реально присутствуют в игре.


 Брифинги и игровые зоны

Брифинги
Название | Внутреннее имя
Поселок | bz1g
Пещера знахарки | bz2g
Жилище Дракона | bz3g
Лагерь хадаганской экспедиции | bz4g
Жилище ящера-отшельника | bz5g
Поселок шайваров | bz6g
Подземелье Великого Мага | bz7g
Город Ингос | bz8k
Жилище Зеленого клана | bz9k
Новое жилище Зеленого клана | bz10k
Заброшенные шахты | bz11k
Крепость | bz13h
Последнее Укрытие | bz14h
Башня старого некроманта | bz15h
Тайное торговое место | bz16h
Пещера - место встречи | bz18h

Игровые
Название | Внутреннее имя
Развалины | gz1g
Дорога к знахарке | gz2g
Предгорья | gz3g
Дальние Горы | gz4g
Пещера | gz5g
Средние Горы | gz6g
Река и острова | gz7g
Пески | gz8g
Мертвый Город | gz9g
Тоннель | gz10g
Окрестности города | gz11k
Заброшенные шахты | gz12k
Владения Карансула | gz13k
Запретное подземелье | gz14k
Каньон Смерти | gz15h
Пещера Червелицых | gz16h
Пустыня некромантов | gz17h
Город Суслангер и его окрестности | gz18h
Портал | gz19h
Подземелье | gz20g


 Скриптовые команды

Вы, вероятно, уже наслышаны о скриптах в ПЗ. Но что же такое скрипты? Скрипты это встроенный в игру язык программирования, предназначенный для управления игровым миром, для внесения в него интерактивности и разнообразия. Само собой, он не претендует на полноту и мощность.
Скрипт-программы встроены в файлы карт уровней и загружаются вместе с самими картами. Именно скрипты отвечают за ловушки на пути к знахарке Эстере, помогают вам перелетать с аллода на аллод, занимаются переключением огней портала на одноименной карте и делают еще много другого. К сожалению, сами скриптовые программы пока недоступны... Но ПЗ позволяют вводить отдельные скриптовые команды в консоли. Разумеется, возможности при этом значительно сужаются - нет условных конструкций, нет циклов, почти нет переменных, но все же в наших руках оказывается довольно богатый арсенал средств управления игрой.
Я постараюсь рассказать о тех скриптовых командах, которые стали мне известны. Это описание не содержит всех команд, так как с некоторыми мне разобраться не удалось. При желании вы можете попробовать сделать это самостоятельно - список команд с неясным действием можно увидеть здесь.
  • Консольные команды
  • Введение в скрипты ПЗ
  • Скриптовые функции
  • Скриптовые процедуры


 Консольные команды

Для начала немного о том, что такое консоль. Консоль - это окно в мир игры, которое предусмотрительно оставлено разработчиками. В процессе создания и отладки игры она предоставляет возможность отслеживать происходящее и воздействовать на игру. Похоже, что впервые в том виде, в котором она известна сейчас, консоль появилась в незабвенном Quake: открывающееся и закрывающееся окно, в котором можно вводить специальные команды и видеть результаты их выполнения. Это оказалось действительно удобным, и с тех пор консоль встраивается в очень многие игры, причем в финальной версии игры консоль либо не отключают вовсе, либо оставляют возможность включить ее - параметром командной строки, определенным значением в файлах данных игры, или иным способом.
В "Проклятых Землях" консоль доступна сразу, открываясь и закрываясь при нажатии на клавишу тильда (~). Однако же по умолчанию работает лишь незначительная часть консольных команд - для разрешения остальных нужно ввести мастер-код thingamabob. Но и это еще не все: начиная с версии игры 1.02 команды, разрешаемые thingamabob, отключены в режиме мультиплеера. К счастью, для их разрешения достаточно установить мой патч для имеющейся у вас версии игры.
Здесь я привожу описания различных консольных команд. Одни из них вы, возможно, уже знаете, а другие, как я надеюсь, - еще нет. Если вас интересуют команды, с которыми я и сам не разобрался, то вам сюда. Таким шрифтом в описаниях выделены обязательные части ключевых слов; вот так обозначаются параметры команд, вместо которых следует подставить требуемое значение. В [квадратных] скобках записаны необязательные параметры. Вертикальной | чертой разделены параметры, из которых нужно выбрать точно один.
  • #script_function_call
    · Выводит в консоли вещественное значение, получаемое в результате вызова указанной функции. См. также скриптовые функции, $, ConsoleFloat() и ConsoleString().
    Примеры:
    #GetX(GetLeader()) - вывести координату X для главного персонажа
    #GetDiplomacy(0,6) - вывести дипломатию от игрока 0 к игроку 6
  • $string_value
    · Выводит в консоли указанную строку. См. также #, ConsoleFloat() и ConsoleString().
    Пример:
    $"Hello" - вывести строку "Hello"
  • @script_procedure_call
    · Производит вызов указанной скрипт-процедуры. См. также скриптовые процедуры.
    Примеры:
    @SetCP(GetObject(4517),40,135,0) - переместить юнит с идентификатором 4517 в точку (40,135)
    @KillUnit(GetObjectByName("NSheriff")) - убить Ривара
    @FixWorldTime(0) - установить на карте вечную ночь
  • ban [player_name]
    · Отключает игрока с данным именем от сервера и запрещает ему вход на сервер до конца сеанса игры (проверка выполняется по IP-адресу). При задании имени разрешается указать лишь начальные буквы. Имя игрока можно заключать в кавычки, чтобы пробелы в нем корректно обрабатывались. Так можно исключать игроков с именами, начинающимися с пробела. Начиная с версии игры 1.05 можно не указывать имя игрока. В этом случае после ввода команды нужно подвести курсор к портрету игрока и нажать левую кнопку мыши. Отменить команду можно по клавише Esc. Применяется только на сервере. См. также kick.
    Примеры:
    ban war - отключить всех игроков с именами, начинающимися на war
    ban " noble" - отключить всех игроков с именами, начинающимися на noble (первый символ - пробел)
    ban - отключить игрока по портрету
  • console position
    · Изменяет позицию консоли на экране. Возможные значения position:
  • left - слева
  • right - справа
  • top - наверху (начальное положение консоли)
  • bottom - внизу
  • center - в центре экрана
  • fullscreen - на весь экран
    ·
  • days ddmmyyyy DDMMYYYY
    · Подсчитывает число дней, прошедшее от первой даты до второй. (Любопытно, с какой целью Нивал ввел эту команду.)
    Пример:
    days 26102000 08032001 - вывести число дней между 26.10.2000 и 08.03.2001
  • disconnect
    · Отключает подсистему клиента на данном компьютере от сервера, т.е. возможно и отключение клиента на компьютере сервера.
  • execute input_file
    · Выполняет последовательность консольных команд из текстового файла input_file. Имя файла может содержать путь.
    Примеры:
    exec init - выполнить файл init из каталога с игрой
    exec con\giveallweapons.con - выполнить файл giveallweapons.con из подкаталога con
  • exit
    · Немедленно завершает игру. Синоним quit.
  • fadeout n_milliseconds
    · Если n_milliseconds положительно, то постепенно гасит изображение на экране, если отрицательно, то доводит его до нормальной яркости.
    Примеры:
    fadeout 1000 - погасить экран за одну секунду
    fadeout -1500 - довести экран до нормальной яркости за полторы секунды
  • filter [type] [off|0|on|1]
    · Включает (on,1) или выключает (off,0) вывод системных сообщений указанного типа. Если второй параметр опущен, то он считается равным on. Параметр type может принимать следующие значения:
  • none: отключается вывод всех сообщений
  • ai: вероятно, самая полезная группа сообщений - выводятся идентификаторы юнитов, их текущие состояния, наносимые повреждения
  • graphics: выводит 3D-координаты точки назначения персонажа
  • all: обозначает "все виды сообщений"
    · Примеры:
    filter none - отключить вывод всех системных сообщений
    filter all off - то же самое
    filter ai 1 - разрешить вывод сообщений группы ai
    filter - показать текущее состояние фильтров сообщений
  • fps [off|0|on|1]
    · Включает (on,1) или выключает (off,0) режим отображения текущего значения FPS - оно выводится в правом верхнем углу экрана. См. также lastfps.
    Примеры:
    fps 1 - включить отображение FPS
    fps 0 - отключить отображение FPS
  • give 0 money|exp amount
  • give 0 assortment
    · С модификатором money дает игроку указанное количество денег. При использовании exp дает указанное количество опыта, причем опыт делится между членами партии, и к нему применяются бонусы за разум. Команду следует вводить, находясь в магазине, причем если в случае денег указанная сумма прибавляется немедленно, то в случае опыта необходимо повысить какой-либо навык или умение, чтобы изменения стали заметны. Кроме того, после ввода данной команды состояние обоза, персонажа и магазина сбрасывается в то, которое было при входе в магазин. По этой причине для получения денег я рекомендую использовать процедуру GiveMoney(). В форме с assortment помещает в набор товаров магазина все неквестовые предметы игры. Учтите, что они будут помещены именно в магазин, то есть вам придется их покупать.
    Примеры:
    give 0 money 5000000 - получить пять миллионов наличными
    give 0 exp 1000000 - передать партии один миллион опыта на распределение
    give 0 assortment - полки магазина ломятся от товаров
  • help
    · Выводит в консоли список некоторых команд с их краткими описаниями.
  • history lines_count
    · Устанавливает число запоминаемых строк консольного вывода, который можно проскроллировать клавишами PageUp и PageDown.
  • kick [player_name]
    · Исключает игрока с данным именем с сервера. При задании имени разрешается указать лишь начальные буквы. Имя игрока можно заключать в кавычки, чтобы пробелы в нем корректно обрабатывались. Так можно исключать игроков с именами, начинающимися с пробела. Начиная с версии игры 1.05 можно не указывать имя игрока. В этом случае после ввода команды нужно подвести курсор к портрету игрока и нажать левую кнопку мыши. Отменить команду можно по клавише Esc. Применяется только на сервере. См. также ban.
    Примеры:
    kick war - исключить всех игроков с именами, начинающимися на war
    kick " noble" - исключить всех игроков с именами, начинающимися на noble (первый символ - пробел)
    kick - исключить игрока по портрету
  • lastfps
    · Выводит в консоли последнее значение FPS. См. также fps.
  • listvar n_player [output_file]
    · Выводит в консоли список переменных и их значений для игрока n_player. Если указан output_file, то вывод будет продублирован и в него. Позднее этот файл можно использовать в команде loadvar.
    Пример:
    listvar 0 plr0 - вывести список переменных для игрока №0 и продублировать его в файл plr0
    loadvar n_player input_file
    Загружает список переменных и их значений для игрока n_player из файла output_file, созданного предшествовавшей командой listvar.
    Пример:
    loadvar 0 plr0 - загрузить список переменных для игрока №0 из файла plr0
  • lootall
    · Перемещает весь свободно лежащий лут на игровой зоне в обоз игрока (сервера). Применяется только на сервере.
  • quit
    · Немедленно завершает игру. Синоним exit.
  • rate bytes_per_second
    · Устанавливает максимальную полосу пропускания на одного клиента в байтах в секунду. Диапазон значений - 500..10000. По умолчанию в игре используется rate 2500, что соответствует одному подключенному клиенту при скорости соединения 28,8 Кбит/с. Применяется только на сервере.
  • thingamabob
    · Мастер-код, позволяющий использовать расширенный набор консольных команд. После его ввода расширенные команды остаются разрешенными вплоть до перезапуска игры. См. также разрешение кодов в мультиплеере.


 Введение в скрипты ПЗ

Скрипт "Проклятых Земель" (далее СПЗ) представляет собой простой язык программирования. К сожалению, как уже было сказано, скриптовые программы недоступны, и мы можем довольствоваться лишь отдельными вызовами команд. По этой причине описание СПЗ здесь не полно и не слишком последовательно.
В описаниях команд я буду использовать такой или такой шрифт для имен функций, формальные параметры обозначать так, а в [квадратных] скобках записывать необязательные части выражений, символами ... обозначать повторение предыдущего выражения.
Итак, некоторые общие сведения об СПЗ: для выполнения каких-либо действий применяется вызов процедуры или функции в виде имя_команды ( [параметр_1] [,параметр_2] [...] ) . В качестве параметров могут выступать как непосредственные значения, так и вызовы функций. Имена фунций и процедур не зависят от регистра символов (т.е., GetX и gEtx обозначают одно и то же). Для арифметических и логических операций используются вызовы функций (скажем, числа складываются вызовом Add(a,b))

Примеры:
SetCP(GetObject(4517),40,135,0)
KillUnit(GetObjectByName("NSheriff"))
FixWorldTime(0)

В СПЗ используется четыре различных типа данных:
  • float
    · Вещественное число, для внутреннего представления используется 4 байта. В консоли этот тип применяется для всех числовых параметров и возвращаемых значений. В описаниях я буду иногда ссылаться на него, как на bool, подчеркивая, что в данном случае значение типа float интерпретируется, как булевое: ложь, если значение равно нулю, и истина, если оно равно единице (именно единице - ПЗ плохо относятся к попытке представить истину как произвольное ненулевое значение).
  • string
    · Строка символов. При задании в качестве непосредственного значения заключается в "двойные кавычки".
  • object
    · Как следует из названия, этот тип используется для представления объектов игры. Чаще всего в их роли выступают юниты. Object, пожалуй, наиболее широко используемый тип.
  • group
    · Этот тип представляет собой набор экземпляров типа object. Он используется для информативных целей - определить, находятся ли юниты игрока в заданной области, задать в целях квеста группу монстров для уничтожения, и т.п.

    Наиболее интересным для игрока, очевидно, является тип object, позволяющий воздействовать на юниты. Получить экземпляры типа object можно при помощи соответствующих функций. Основным способом при этом является вызов GetObject(), получающей object по идентификатору юнита - числу, однозначно определяющему данный отдельно взятый юнит на данной карте. Например, на карте мультиквеста "Сокровища разбойников" два ближайших к входу в игровую зону кабана (на севере) имеют идентификаторы 4517 и 4651, а генерал Ирискелль на карте мультиквеста "Вторжение на Гипат" имеет идентификатор 1001936. Самый простой способ узнать идентификатор юнита - включить системные сообщения группы ai при помощи консольной команды filter и отслеживать значения идентификаторов в консоли.
    Другой специфический способ получить экземпляр object - воспользоваться функцией GetObjectByName(), получающей object по имени юнита. В ближайшее время я опубликую список этих имен.
    Еще одним фактом, на который следует обратить внимание, является то, что любой юнит приписан к какому-либо игроку. Речь идет не об игроках-людях, а об абстрактных сущностях, используемых в основном для группирования юнитов и задания взаимоотношений для этих групп. Игрок определяется своим номером, например, 0 по умолчанию используется для всех юнитов, управляемых людьми, а 7 - для вышеупомянутых кабанов 4517 и 4651. См. GetPlayer().
    Нужно помнить и о том, что большая часть скриптовых команд действует только на сервере. Постараюсь обяснить это подробнее: в сингле игрок-человек один, и он легко может пользоваться всеми командами - его компьютер и является сервером игры. В мультиплеере же ситуация несколько сложнее. Дело в том, что игровая зона, положение юнитов на ней, действующие спеллы, и все прочие параметры поддерживаются именно на компьютере сервера, и клиент не может на него повлиять. Некоторым исключением является то время, когда клиент находится на базе: при этом карта базы поддерживается исключительно его компьютером, без участия сервера, поэтому на базе скриптовые команды могут быть использованы и клиентом.


 Скриптовые функции

Здесь описаны скриптовые функции "Проклятых Земель". Перед продолжением чтения полезно ознакомиться с введением в скрипты. С некоторыми функциями мне разобраться так и не удалось - их список вы можете увидеть здесь. Обычно функции применяются в качестве фактических параметров при вызове процедур. Если же вы просто хотите увидеть значение, возвращаемое функцией, то для этого можно воспользоваться консольной командой #.
  • Основные функции для работы с объектами и игроками
  • Функции для работы с группами
  • Координатные функции
  • Арифметические и логические функции
  • Функции AI
  • Функции работы с параметрами юнитов и игроков
  • Прочие функции


 Основные функции для работы с объектами и игроками
  • object GetLeader ()
    · Возвращает объект юнита - лидера команды. В сингле это будет Зак, а в мультиплеере - действующий персонаж игрока. Для управления лидером это самый быстрый и удобный способ.
  • float GetMercsNumber ( nPlayer )
    · Возвращает число наемников у игрока номер nPlayer (не включает лидера).
  • object GetObject ( idObject )
    · Возвращает экземпляр object для объекта с идентификатором idObject. См. также filter и GetObjectID().
  • object GetObjectByName ( strName )
    · Возвращает экземпляр object для объекта с именем strName.
  • float GetObjectID ( objUnit )
    · Возвращает идентификатор объекта objUnit. См. также GetObject()
  • float GetPlayer ( objUnit )
    · Возвращает номер игрока для юнита objUnit. См. также SetPlayer()
  • object GetUnitOfPlayer ( nPlayer , nUnit )
    · Возвращает экземпляр object для юнита номер nUnit игрока с номером nPlayer.


 Функции для работы с группами
  • group GetPlayerUnits ( nPlayer )
    · Возврашает группу юнитов игрока номер nPlayer.
  • group GroupAdd ( grpA , grpB )
    · Теоретико-множественная операция объединения - возвращает группу из тех юнитов, которые есть хотя бы в одной из групп grpA и grpB.
  • group GroupCross ( grpA , grpB )
    · Теоретико-множественная операция пересечения - возвращает группу юнитов, которые есть как в grpA, так и в grpB.
  • bool GroupHas ( grp , objUnit )
    · Возвращает истину, если в группе grp содержится юнит objUnit.
  • group GroupSee ( grp )
    · Группа юнитов, которых видят юниты из группы grp. Эта операция рефлексивна - юниты видят и самих себя.
  • float GroupSize ( grp )
    · Возвращает число юнитов в группе grp.
  • group GroupSub ( grpA , grpB )
    · Теоретико-множественная операция разности - возвращает группу, состоящую из тех юнитов группы grpA, которых нет в grpB.
  • group PlayerSee ( nPlayer )
    · Группа юнитов, которых видит игрок номер nPlayer, - т.е., все те юниты, которые видны юнитам данного игрока. Эта операция рефлексивна - юниты видят и самих себя. Эквивалентно вызову GroupSee ( GetPlayerUnits ( nPlayer ) ) .
  • group UnitSee ( objUnit )
    · Группа юнитов, которых видит юнит objUnit. Эта операция рефлексивна - юнит видят и самого себя.


 Координатные функции
  • float DistanceUnitPoint ( objUnit , x , y )
    · Возвращает расстояние между юнитом objUnit и точкой (x,y).
  • float DistanceUnitUnit ( objUnitA , objUnitB )
    · Возвращает расстояние между юнитами objUnitA и objUnitB.
  • float GetFutureX ( objUnit , flTime )
    · Экстраполирует координату x юнита objUnit через время flTime, основываясь на его текущем направлении движения и скорости. Именно эту функцию используют ловушки на сингл-карте "Портал".
  • float GetFutureY ( objUnit , flTime )
    · Экстраполирует координату y юнита objUnit через время flTime, основываясь на его текущем направлении движения и скорости. Именно эту функцию используют ловушки на сингл-карте "Портал".
  • float GetX ( objUnit )
    · Возвращает текущую координату x юнита objUnit.
  • float GetY ( objUnit )
    · Возвращает текущую координату y юнита objUnit.
  • float GetZ ( objUnit )
    · Возвращает текущую координату z юнита objUnit.
  • bool IsInArea ( idArea x , y )
    · Возвращает истину, если точка (x,y) находится в области с идентификатором idArea. См. процедуры управления областями.
  • bool IsInSquare ( x , y , x1 , y1 , x2 , y2 )
    · Возвращает истину, если точка (x,y) находится в прямоугольнике (x1,y1)-(x2, y2).
  • bool UnitInSquare ( objUnit , x1 , y1 , x2 , y2 )
    · Возвращает истину, если юнит objUnit находится в прямоугольнике (x1,y1)-(x2, y2).


 Арифметические и логические функции
  • float Add ( flA , flB )
    · Возвращает сумму чисел flA и flB.
  • float Div ( flA , flB )
    · Возвращает частное чисел flA и flB.
  • bool IsEqual ( flA , flB )
    · Возвращает истину, если числа flA и flB равны, и ложь в противном случае.
  • bool IsEqualString ( strA , strB )
    · Возвращает истину, если строки strA и strB равны с учетом регистра, и ложь в противном случае.
  • bool IsGreater ( flA , flB )
    · Возвращает истину, если число flA больше чем flB, и ложь в противном случае.
  • bool IsLess ( flA , flB )
    · Возвращает истину, если число flA меньше чем flB, и ложь в противном случае.
  • float Mul ( flA , flB )
    · Возвращает произведение чисел flA и flB.
  • bool Not ( bf )
    · Возвращает отрицание логического значения bf: истину, если bf равно нулю, и ложь в противном случае.
  • float Random ( flMax )
    · Возвращает псевдослучайное число из промежутка [ 0 , flMax ).
  • float Sub ( flA , flB )
    · Возвращает разность чисел flA и flB.


 Функции AI
  • float GetDiplomacy ( nPlayerA , nPlayerB )
    · Возвращает тип дипломатии - кем является игрок номер nPlayerA для игрока номер nPlayerB. Возможные значения:
  • 1 - союзник
  • 0 - нейтрал
  • -1 - враг
    · См. также IsEnemy(), GetPlayer(), SetDiplomacy() и SetPlayer()
  • bool IsAlive ( objUnit )
    · Возвращает истину, если юнит objUnit жив, и ложь в противном случае.
  • bool IsDead ( objUnit )
    · Возвращает истину, если юнит objUnit мертв, и ложь в противном случае.
  • bool IsEnemy ( objUnit , nPlayer )
    · Возвращает истину, если юнит objUnit является врагом для игрока номер nPlayer. См. также GetDiplomacy(), GetPlayer(), SetDiplomacy() и SetPlayer()
  • bool IsUnitBlocked ( objUnit )
    · Возвращает истину, если юнит objUnit заблокирован. См. также BlockUnit().
  • bool IsUnitInWater ( objUnit )
    · Возвращает истину, если юнит objUnit находится в воде.


 Функции работы с параметрами юнитов и игроков
  • float GetMoney ( nPlayer )
    · Возвращает количество денег у игрока номер nPlayer.
  • float GetLootItemsCount ( nPlayer )
    · Возвращает число предметов в обозе у игрока номер nPlayer.
  • float HP ( objUnit )
    · Возвращает текущее значение HP (жизни) у юнита objUnit. Это число учитывает эффекты спеллов ослабления и усиления, наложенных на юнит.
  • float Mana ( objUnit )
    · Возвращает текущее значение маны у юнита objUnit.
  • float MaxHP ( objUnit )
    · Возвращает максимально возможное значение HP (жизни) у юнита objUnit. Это число учитывает эффекты спеллов ослабления и усиления, наложенных на юнит.
  • float MaxMana ( objUnit )
    · Возвращает максимально возможное значение маны у юнита objUnit.
  • bool WasLooted ( objUnit )
    · Возвращает истину, если труп юнита objUnit уже взят, и ложь в противном случае (в частности, если юнит еще жив).


 Прочие функции
  • bool GetLeverState ( objLever )
    · Возвращает истину, если "рычаг" objLever "включен", и ложь в противном случае. См. также SetLeverState().
  • float GetWorldTime ()
    · Возвращает текущее время внутриигроых суток (в часах). См. также IsNight(), FixWorldTime() и RunWorldTime()
  • float GSGetVar ( nPlayer , strVar )
    · Возвращает значение переменной с именем strVar у игрока номер nPlayer. См. также GSSetVar().
  • float IsNight ()
    · См. также GetWorldTime(), FixWorldTime() и RunWorldTime()


 Скриптовые процедуры

Здесь описаны скриптовые процедуры "Проклятых Земель". Перед продолжением чтения полезно ознакомиться с введением в скрипты. С некоторыми процедурами мне разобраться так и не удалось - их список вы можете увидеть здесь. Для выполнения вызова процедуры в консоли следует воспользоваться консольной командой @.
  • Процедуры управления юнитами
  • Процедуры изменения параметров юнита
  • Дополнительные процедуры воздействия
  • Процедуры AI
  • Процедуры управления областями
  • Процедуры динамического задания целей квеста
  • Различные процедуры воспроизведения
  • Генерация предметов и заклинаний
  • Аудиовизуальные эффекты: источники частиц, освещение, молнии
  • Прочие процедуры


 Процедуры управления юнитами
  • 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().
    Примеры:
    SetDiplomacy(0,
  • SetPlayer ( objUnit , nPlayer )
    · Объявляет юнит objUnit принадлежащим игроку nPlayer. См. также SetDiplomacy(), GetDiplomacy() и GetPlayer().


 Процедуры управления областями
  • AddRectToArea ( idArea , x1 , y1 , x2 , y2 )
    · Добавляет к области idArea прямоугольник (x1,y1)-(x2.
  • AddRoundToArea ( idArea , x , y , rad )
    · Добавляет к области idArea круг радиуса rad с центром в точке (x,y).
  • DeleteArea ( idArea )
    · Удаляет область 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 )
Выводит в консоли строку str. См. также $, # и ConsoleFloat().
  • ConsoleFloat ( fl )
    · Выводит в консоли число fl. В качестве fl может выступать вызов скриптовой функции. См. также скриптовые функции, $, # и ConsoleString().
  • FixWorldTime ( flTime )
    · Устанавливает текущее время внутриигровых суток в flTime (измеряется в часах), запрещая его ход. См. также GetWorldTime(), IsNight(), RunWorldTime().
  • LeaveToZone ( 0 , strZone , 0 )
    · Перемещает партию в локацию с именем strZone. Следует, однако, учитывать, что эта команда не взаимодействует с логикой квестов, поэтому ее использование может привести к непредвиденным последствиям. См. также список локаций.
  • RunWorldTime ( flTime )
    · Устанавливает текущее время внутриигровых суток в flTime (измеряется в часах), разрешая его ход. См. также GetWorldTime(), IsNight(), FixWorldTime().
  • SetBackgroudColor ( flR , flG , flB )
    · Устанавливает фоновый цвет на карте в (flR,flG,flB) (фон перекрывается текстурами неба, поэтому результат будет заметен лишь в пещерных картах).