Список скриптовых процедур.
#1
Этот список мы уже обсуждали в прошлом году. Мы планируем включить описание скрипт процедур и консольных команд в Энциклопедию ПЗ.

ActivateTrap( Trap : object , Activate : float )|деактивирует: Activate - 0 и активирует: Activate<>0 ловушку: Trap на игровой зоне. Например, на игровой зоне карты: Предгорья следует набрать в консоли команду: @ActivateTrap( GetObjectByID( "4515" ) , 1 ) будет активирована пирамида Орковского племени. Данная ловушка-Пирамида атакует только Дипломатическую группу - 0. Невозможно перенастроить дипломатию для объектов Ловушек с помощью команды: SetDiplomacy.
Add( A : float , B : float ) : float|возвращает сумму из двух чисел типа Float: A и В.
AddLoot(nPlayer:float,PartyNameSendConfusedtring,PartyNameRecvConfusedtring)|добавляет предметы и деньги из обоза "Партии": PartyNameSend в обоз НЕ текущей "Партии": PartyNameRecv. Обе "Партии" принадлежат "Игроку": nPlayer. Не путать "Обоз" и "Рюкзак". В случае если изменение текущей партии будет происходить на игровой зоне, то предметы из набора "Рюкзак" всегда входящие в набор "Обоза" будут так же скопированы в обоз "Партии": PartyNameRecv. При выполнении команды: RedeployParty "Рюкзак Партии": PartyNameSend обнулится. "Рюкзак" новой партии будет так же пуст, хотя в инфоокне рюкзака останутся предметы, но на самом деле рюкзак предыдущей и текущей Партий будут пусты. Функция: GetLootItemsCount вернет значение 0. Принадлежность: Партия.
AddMob( FileNameMob : string )|загружает файл "Mob" с именем FileNameMob из подкаталога …MAPS. Имя файла указывается с расширением и в кавычках. Файл должен иметь структуру Maps Object (*.mob) из проекта игры ПЗ. Принадлежность: Система.
AddObject( grp : group , UnitMap : object )|добавляет объект: Unit в "Игровую" группу, инициализируя глобальную переменную: grp. Команду: AddObject нельзя применять из консоли, так как в ПЗ нет консольных команд создания глобальных переменных групп. Принадлежность: Игровые Группы.
AddRectToArea( idArea : float , x1 : float , y1 : float , x2 : float , y2 : float )|добавляет принадлежность участка игровой зоны в квестовую область под кодом: idArea. Область описывается в виде прямоугольника, где (X1,Y1) и (X2,Y2) координаты его двух противоположных углов. (Левый - нижний и верхний - правый) (юго-западный и северо-восточный угол). Стороны прямоугольника всегда расположены параллельно к сторонам света. Если координаты второй точки меньше первой, то зоны не будет. На игровой зоне может существовать множество областей с одинаковым кодом: idArea. Например, команда: QObjArea может установить задачу "Игроку" (команде Игроков): попасть в область под кодом: idArea - как одно из условий выполнения задания объявленного командой: QStart. В таком случае "Игрок", должен попасть в любой из участков области с кодом: idArea.
AddRoundToArea( idArea : float , x : float , y : float , rad : float )|добавляет принадлежность участка игровой зоны в квестовую область под кодом: idArea. Участок области находится в точке: (x,y) с радиусом: rad. На игровой зоне может существовать множество областей с одинаковым кодом: idArea. Например, команда: QObjArea может установить задачу "Игроку": попасть в область под кодом: idArea как одно из условий выполнения задания объявленного командой: QStart - в таком случае "Игрок" должен попасть в любой из участков области с кодом: idArea.
AddUnitToParty(nPlayer:float,“PartyName::NamePersRes":String,NameUnitRes:String)|добавляет игроку: nPlayer, в указанную партию: PartyName локализованного (озвученного) персонажа: NamePersRes из базы данных: texts.res. фактически добавляется персонаж: NameUnitRes из базы данных ресурсов игры. К текущей Партии можно добавить Персонаж без явного указания Партии: AddUnitToParty(nPlayer, NamePersRes : String, NameUnitRes : String). Не путать! Если нужно работать не с текущей группой или с вновь созданной, то всегда нужно указывать второй параметр как два параметра через делитель“PartyName::NamePersRes”.
AddUnitToServer( NameUnitMap : string , NameUnitRes : string , NameUnitControl : string , x : float , y : float , z : float )|Устанавливает юнит-объект: NameUnitRes на текущую карту в точку (x,y,z) из базы данных ресурсов игры. Объект будет иметь внутреннее имя: NameUnitMap и имя, отображаемое в инфоокнах: NameUnitControl. Большие и маленькие буквы внутреннего имени: NameUnitMap не различаются. Системная функция преобразования имени: (NameUnitMap : string) в код (idUnit : float) представляет все строчные символы имени как прописные - к верхнему регистру. Не рекомендуется возвращать код: idUnit от объекта добавленного на карту командой: AddUnitToServer с помощью функции: GetObjectId. Полученный на карте объект командой: AddUnitToServer будет иметь код - 10 символов, а команда: GetObjectId работает с ошибкой с десятизначными силами. Команда правильно работает только с объектами прописанными в таблице NPCs, так как добавленный объект будет иметь контейнер с переменными переменными совойств персонажа игрока, со всеми дополнительными параметрами, навыками и умениями. При этом, если имя: NameUnitMap совпадает с именем файла в таблице ресурсов: texts.res (textslmp.res) с предиктором: "pers", например, "Nalo", и оствлен параметр: NameUnitControl пустым, то из базы данных локализации: texts.res (textslmp.res) будет взято имя имя этого объекта. Например, Сингл, ввести в консоли команду использование расширенных консольных команд, затем следующую строрку: @AddUnitToServer( "Nalo","Human Hadagan Pretty","",GetX(GetLeader()), GetY(GetLeader()),0)
AddUnitUnderControl(nPlayer:float,Unit:object)|добавляет в контроль панель игрока: nPlayer иконку объекта: Unit. Не изменяет дипломатии в группах и не вызывает никаких изменений в присоединенном объекте: Unit. Игрок получает возможность выделить в коллекции управляемых объектов присоединенный объект: Unit. Видимо команда была предназначена для возможности захвата в плен на игровой зоне врагов, но не была реализована в игре. Юниты не переходят между зонами и остаются на игровых зонах нейтральными. Во время взятия юнита под контроль, у юнитов недоступно оружие, заклинания и жезлы. Опыт делаиться как в партии. Команда правильно работает только с объектами прописанными в таблице NPCs.Чтобы имя персонажа бралось из ресурсов локализации игры: texts.res, параметр: NameUnitControl нужно прописать пустой строкой. В противном случае в игре будет отображаться имя введенное в этот параметр.
AlarmPosX( nAlarm : float ) : float|возвращает позицию точки тревоги по оси: x установленной командой: InvokeAlarm, для переменной: nAlarm.
AlarmPosY( nAlarm : float ) : float|возвращает позицию точки тревоги по оси: y установленной командой: InvokeAlarm, для переменной: nAlarm.
AlarmTime( nAlarm : float ) : float|возвращает значение переменной: nAlarm. При активации переменной: nAlarm командой: InvokeAlarm, ей присваивается стартовое значение. Стартовое значение - есть сумма количества времени всех промежутков времени, между активаций и деактиваций всех предыдущих переменных: nAlarm с начала игры. Активным может быть только один номер переменной. В переменную: nAlarm после активации, постоянно добавляется значение счетчика времени (1/15 сек). Активируя следующий номер переменной: nAlarm командой: InvokeAlarm одновременно деактивируется предыдущая переменная, но не обнуляется. Номер переменной необязательно должен быть по порядку и можно повторно инициализировать тот же номер переменной. Чтобы сбросить все значения переменных: nAlarm в ноль и остановить счетчик в глобальной переменной, нужно вызвать команду: InvokeAlarm с первым параметром = 0 : InvokeAlarm(0,0,0)
Any( GlobalVariable : object , grp : group , bool : float ) : float|Теоретически: Возвращает истину или ложь, если в группе: grp какой-нибудь объект-юнит: Unit будет соответствовать условию сравнения в параметре: bool. Процедура работает как цикл, пер######рая по очереди все объекты в группе: grp устанавливая в переменную: Unit экземпляр - объект из группы: grp. Параметр: grp может быть введен указатель на любой набор групп: Дипломатическая группа, Игровая или смешанная - командами: GroupAdd или GroupCross.
AttachParticles( id : float , Object : object )|присоединяет источник частиц с идентификатором: id к юниту: Object . Источник будет двигаться с постоянным смещением от юнита. Это смещение равно координатам( x , y , z ) , взятым в процедуре CreateParticleSource при создании данного источника. Пример: @CreateParticleSource( 1234 , 1 , -2 , 2 , -1 , "fire" ) ; @AttachParticles( 1234 , GetLeader( ) ) ; Перевёрнутый вверх тормашками огонь радиусом 1 будет перемещаться около Зака на расстоянии 1 по: x , -2 по: y и 2 по: z . Принадлежность: Спецэффекты.
AttachParticleSource( id : float , idObject : float )|присоединяет источник частиц с идентификатором: id к юниту с идентификатором: idObject. Источник будет двигаться с постоянным смещением от юнита. Это смещение равно координатам( x , y , z ) , взятым в процедуре CreateParticleSource при создании данного источника .
Attack( UnitA : object , UnitB : object )|заставляет юнит: UnitA атаковать юнит: UnitB.
BlockUnit( Unit : object , Block : float )|устанавливает режим управление Игроком персонажа: Unit. Персонаж не подчиняется Игроку: Block - 1, Персонаж подчиняется Игроку: Block - 0. По умолчанию: Персонажи доступны к управлению Игроком в момент добавления в партию. Устанавливать команду: BlockUnit на врагов бесполезно, так как враги не подчиняются Игроку.
Cast( Unit : object , x : float , y : float )|заставляет объект: Unit применять активное заклинание, находящееся у объекта: Unit в точку: ( x , y ) на карте. Активное заклинание у объекта должно быть предназначено для места, а не для целей. Активное заклинание можно установить командой: SetSpellAggression.? В игре команда: Cast не используется. Для замены команды: Cast существуют расширенные команды аналоги: CastSpellPoint и CastSpellUnit.
CastSpellPoint( constSpell : string , x1 : float , y1 : float , x2 : float , у : float )|применяет заклинание на местность игровой зоны. Заклинания: constSpell следует писать в кавычках, и только те, что действуют на область (не на цель). Конструкция заклинания: constSpell имеет такую же каноническую форму, как и в других местах игры, где применяется заклинания. Переменные: (x1,y1) указывают координаты на карте игровой зоны откуда будет стартовать визуальный эффект заклинания, переменные: (x2,у2) указывают координаты на карте игровой зоны, место на которое будет применено заклинание: constSpell.
CastSpellUnit( constSpell : string , x : float , y : float , Unit : object )|применяет заклинание на объект: Unit. Заклинания: constSpell следует писать в кавычках. Конструкция заклинания: constSpell имеет такую же каноническую форму, как и в других местах игры, где применяется заклинания. Переменные: (x, y) указывают координаты на карте игровой зоны откуда будет стартовать визуальный эффект заклинания: constSpell.
ConsoleFloat( float )|предназначена для отладки игры. Выводит в консоли число, возвращаемое функциями. Синоним #
ConsoleString( string )|предназначена для отладки игры. Выводит в консоли текстовые строки, возвращаемые функциями. Синоним $
CopyItems(nPlayer:float,NameSendRES:String,“PartyName::NameRecvRES":String)|копирует все снаряжение (не обоз и не рюкзак) объекта-юнита: NameSendRES из текущей партии в объект-юнит: NameRecvRES принадлежащий НЕ текущей Партии. Обе Партии принадлежат игроку под номером: nPlayer. Имена объектов-юнитов - это внутренние имена в партиях. В третьем параметре нужно явно указать принадлежность объекта: NameRecvRES к Партии: PartyName, указать в кавычках и с разделителем два двоеточия: "PartyName::NameRecvRES"
CopyLoot(nPlayer:float,PartyNameSendConfusedtring,PartyNameRecvConfusedtring)|копирует обоз: PartyNameSend (предметы и деньги) в обоз НЕ текущей Партии: PartyNameRecv. При этой операции предварительно обоз: PartyNameRecv полностью обнуляется. Копирование происходит между партиями принадлежащим игроку под номером: nPlayer. Не путать обоз и рюкзак. В случае если изменение текущей партии будет происходить на игровой зоне, то предметы из набора Рюкзак всегда входящие в набор Обоза будут также скопированы в обоз Партии: PartyNameRecv. При выполнении команды: RedeployParty Рюкзак Партии: PartyNameSend обнулится. Рюкзак новой партии будет так же пуст, хотя в инфоокне рюкзака останутся предметы, но на самом деле рюкзак предыдущей и текущей Партий будут пусты. Функция: GetLootItemsCount вернет значение 0.
CopyStats(nPlayer,PartyNameSendConfusedtring,PartyNameRecvConfusedtring)|копирует всю статистику (навыки, умения, параметры) объекта-юнита: NameSendRES из текущей партии в объект-юнит: NameRecvRES, который принадлежит НЕ текущей Партии. Обе Партии принадлежат игроку под номером: nPlayer. Имена объектов-юнитов - это внутренние имена в партиях. В третьем параметре нужно явно указать принадлежность объекта: NameRecvRES к Партии: PartyName, указать в кавычках и с разделителем два двоеточия: "PartyName::NameRecvRES"
Crawl( Unit : object )|отдает команду объекту: Unit присесть.
CreateFX( x : float , y : float , z : float , Volume : float , rad : float , NameWav : string )|один раз воспроизводит звук из WAV файла: NameWav в точке: (x,y,z) с радиусом слышимости: rad громкостью: Volume.
CreateFXSource( id : float , x : float , y : float , z : float , Volume : float , rad : float , NameWav : string )|устанавливает зацикленный звуковой источник: NameWav под кодом: id в точке: (X,Y,Z) с радиусом слышимости: rad и громкостью: Volume. Зацикленный звук можно удалить с помощью команды: DeleteFXSource по его : id.
CreateLightning( id : float , x1 : float , y1 : float , z1 : float , x2 : float , y2 : float , z2 : float , Intensity : float )|создает постоянно действующую застывшую молнию, бьющую из точки: (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.
CreateParticleSource( id : float , x : float , y : float , z : float , R : float , сonstParticleSource : string )|создает источник частиц типа: constParticleSource с радиусом: R и идентификатором: id в точке ( x , y , z ) . При отрицательном значении радиуса источник частиц переворачивается по вертикали. На данный момент известны следующие константы источника частиц (в процедуре пишутся в кавычках ): transform ; portalstar ; portal ; mushroom ; nuke ; geyser ; poisonfog ; smoke ; fire ; lightningblast ; fireblast ; campfire ; fireball ; firearrow ; teleport.
CreateParty(nPlayer:float,PartyNameConfusedtring)|создает новую Партию под именем: PartyName (или замещает существующую партию, с таким же именем) в наборе партий игрока под номером: nPlayer. Строчные и прописные буквы в имени партии: PartyName отличаются.
CreatePointLight( id : float , x : float , y : float , z : float , rad : float , R : float , G : float , B : float )|создает источник света с идентификатором: id, радиусом: rad и цветом (R,G,B) в точке (x,y,z). С помощью этой команды можно установить освещение от костра или факела ночью или незначительное затемнение днем - густой лес. Положительное значение: rad - освещение, отрицательное значение - затемнение. Точку освещения по высоте: z нужно рассчитывать, относительно Мировой системы координат (МСК), а не с поверхности карты.
CreateRandomizedFXSource( id : float , x1 : float , x2 : float , y1 : float , y2 : float , z1 : float , z2 : float , Volume : float , rad : float , NameWav : string )|
DeleteArea( idArea : float )|удаляет все участки областей на карте с идентификатором: idArea.
DeleteFXSource( id : float )|удаляет все звуковые участки на игровой зоне имеющие идентификатор: id.
DeleteLightning( id : float )|удаляет все молнии на игровой зоне имеющие идентификатор: id.
DeleteParticleSource( id : float )|удаляет все источники частиц на игровой зоне имеющие идентификатор: id.
DeletePointLight( id : float )|удаляет с игровой зоны множество источников света с идентификатором: id.
DistanceUnitPoint( Unit : object , x : float , y : float ) : float|возвращает прямое расстояние между объектом: Unit и точкой на карте: (x,y).
DistanceUnitUnit( UnitA : object , UnitB : object ) : float|возвращает прямое расстояние между объектами: UnitA и UnitB.
Div( A : float , B : float ) : float|возвращает результат деления числа: A деленное на B.
EnableLever( Lever : object , Enable : float )|устанавливает доступность для игрока к управлению механизмом: Lever. Недоступно: Enable = 0 и доступно: Enable = 1. Доступность к использованию рычага отображаются графически изменением курсора на мацающую руку при наведении его на объект: Lever. На карте Предгорья можно установить доступ даже к выключенному рычагу от пирамиды: @EnableLever(GetObjectByID( "4636" ),1)
EraseQuestItem( nPlayer : float , idQuestItem : float )|удаляет из обоза игрока с номером: nPlayer квестовый предмет под кодом: id
Every( GlobalVariable : object , grp : group , bool : float ) : float|Теоретически: Возвращает истину или ложь, если в группе: grp все объекты-юниты: Unit будут соответствовать условию сравнения в параметре: bool. Процедура работает как цикл, пер######рая по очереди все объекты в группе: grp устанавливая в переменную: Unit экземпляр - объект из группы: grp. Параметр: grp может быть введен указатель на любой набор групп: Дипломатическая группа, Игровая или смешанная - командами: GroupAdd или GroupCross.
FixItems()|чинит все предметы в обозе, в рюкзаке, одежду на теле персонажа и оружие, но только у текущей Партии.
FixWorldTime( Time : float )|устанавливает фиксированное время: Time на игровой зоне. Часы в ПЗ не идут.
Follow( UnitA : object , UnitB : object )|одноразово отдает команду объекту: UnitA следовать за объектом: UnitB. После боя команда отменяется. Сходные свойства поведения у команды: UMFollow.
For( GlobalVariable : object , grp : group ) ( Command )|безусловный перебор элементов объектов в игровой группе: grp. Каждый цикл инициализирует глобальную переменную, устанавливая в нее экземпляр: object из коллекции группы: grp. В теле цикла, безусловно, исполняется весь список команд: Command. Процедура работает как цикл, пер######рая по очереди все объекты в группе: grp устанавливая в переменную: Unit экземпляр - объект из группы: grp. Параметр: grp может быть введен указатель на любой набор групп: Дипломатическая группа, Игровая или смешанная - командами: GroupAdd или GroupCross.
( цикл)|
GetAIClass( Unit : object ) : float|возвращает класс групп рас: AI для объекта: Unit. В ПЗ все объекты: Unit принадлежат к расам, расы группируются по классам. Значение принадлежности объектов к расам можно найти в таблице: RaceModels, по классам в поле: AI Class Stay. Для несуществующего объекта на карте результат всегда - (-1) ( минус один ).
GetBSZValue( x : float , y : float ) : float|возвращает высоту местности на карте в точке с горизонтальными координатами: ( x , y ) . Отличие от команды: GetZValue в том, что если в точке: (х,у) находится незамёрзший водоём ( озеро лавы ), то выводится высота поверхности воды ( лавы ), а не дна. В остальных случаях выводимые значения совпадают с командой: GetZValue.
GetDiplomacy( nDiplomacyGroupA : float , nDiplomacyGroupB : float ) : float|возвращает тип дипломатии : кем является Дипломатическая группа юнитов под номер nDiplomacyGroupA для Дипломатической группы: nDiplomacyGroupB, в наборе Дипломатических групп на текущей игровой зоне. Возможные значения: 1 - союзник ; 0 - нейтрал ; -1 - враг.
GetFutureX( UnitMap : object , Time : float ) : float|возвращает значение координаты: Х объекта: UnitMap предсказанное через время: Time. Время: Time измеряется в единицах, равных 1/15 секунды на нормальной скорости игры. Чем меньше значение времени: Time тем точнее результат. В скриптах эта функция применяется для реалистичного отображения атаки заклинаниями у врагов. Враги могут ставить заклинания, атаковать на опережение. В движке ПЗ метод предсказания может быть использован в сетевой игре на слобопропускных каналах сети.
GetFutureY( UnitMap : object , Time : float ) : float|возвращает значение координаты: y объекта: UnitMap предсказанное через время: Time. Время: Time измеряется в единицах, равных 1/15 секунды на нормальной скорости игры. Чем меньше значение времени: Time тем точнее результат. В скриптах эта функция применяется для реалистичного отображения атаки заклинаниями у врагов. Враги могут ставить заклинания, атаковать на опережение. В движке ПЗ метод предсказания может быть использован в сетевой игре на слобопропускных каналах сети.
GetLeader():object|возвращает объект юнита - лидера команды текущей Партии. В сингле это будет Зак, а в мультиплеере - действующий персонаж игрока. Видимо в этой функции не хватает параметра: nPlayer.
GetLeverState( Lever : object ) : float|возвращает значение: float - 0, если механизм не приведен в действие и значение: float - 1, если механизм приведен в действие. Команда, устанавливающая состояние механизма: SwitchLeverState. На карте Предгорья можно проверить состояние рычага от Пирамиды: #GetLeverState(GetObjectByID( "4636" )).
GetLootItemsCount(nPlayer:float):float|возвращает количество предметов ( не денег ) найденных, украденных, снятых с трупов на игровой зоне. Фактически показывает рюкзак Партии персонажей на текущей игровой зоне принадлежащих игроку под номером: nPlayer.
GetMercsNumber(nPlayer:float):float|возвращает число наемников в текущей Партии Игрока под номером: nPlayer не включает лидера текущей Партии.
GetMoney(nPlayer:float):float|возвращает количество денег у текущей Партии игрока номер nPlayer. Фактически, команда показывает кошелек текущей "Партий" игрока: nPlayer на игровой зоне. Кошелек текущей Партии на игровой зоне и в лагере - всегда равны. Можно сказать, что партия таскает с собой все свои деньги.
GetObject( idObject : float ) : object|возвращает экземпляр: object для объекта с идентификатором: idObject. Не работает с десятизначными числами. Если код: idObject десятизначное число, то следует использовать функцию: GetObjectByID.
GetObjectByID( idObject : string ) : object|возвращает экземпляр: object для объекта с идентификатором: idObject , Цифровое значение: idObject должно быть заключено в кавычки. В отличие от функции: GetObject, функция: GetObjectByID допускает числовое значение, состоящее из десяти цифр.
GetObjectByName( NameUnitMap : string ) : object|возвращает экземпляр: object для объекта с внутреигровым именем: NameUnitMap.
GetObjectID( Object : object ) : float|возвращает идентификатор объекта: idObject. К классу Objects относятся не только Units, но и предметы, например: сундуки, ящики....? Функция: GetObjectID - возвращает правильно только те идентификаторы объектов, которые имеют код: idObject не более 10 цифр, Так как системная функция ПЗ, при получения кода: idObject из внутреннего имени объекта, использует десятизначный, целочисленный формат. Нельзя использовать эту функцию для возврата идентификатора объекта-юнита созданного на карте с помощью команды: AddUnitToServer или не присвоенного в модуле файла: Maps Object (*.mob) кода: idUnit меньшего, чем 10 цифр - в этом случае функция: GetObjectID будет возвращать округленные значения.
GetPlayer( Unit : object ) : float|возвращает номер дипломатической группы, к которой принадлежит объект юнит: Unit.
GetPlayerUnits( nDiplomacyGroup : float ) : group|возвращает Дипломатическую группу юнитов, состоящую в наборе Дипломатических групп под номером nDiplomacyGroup.
GetUnitOfPlayer(nPlayer:float,nUnitInCurrentParty:float):object|возвращает экземпляр объекта персонажа из набора текущей Партии игрока: nPlayer. Выбор объекта происходит по номеру: nUnitInCurrentParty в наборе текущей Партии. Номер: nUnitInCurrentParty присваивается объекту по номеру очередности добавления в Партию и сортируется (сдвигается) в случае смерти или удаления юнитов с меньшим значением: nUnitInCurrentParty. Второй параметр: nUnitInCurrentParty функции: GetUnitOfPlayer - номер, а не код. Не путать Партию с Дипломатической группой или Игровой группой.
GetWorldTime( ) : float|возвращает текущее время внутриигровых суток ( в часах ).
GetX( Object : object ) : float|возвращает текущую координату: "x", соответственно, для юнита или предмета (Object) на карте относительно МСК системы координат. Во всех функциях ПЗ, системы координат МСК и ОСК по координате: "x" совпадают.
GetY( Object : object ) : float|возвращает текущую координату: "y", соответственно, для юнита или предмета (Object) на карте относительно МСК системы координат. Во всех функциях ПЗ, системы координат МСК и ОСК по координате: "y" совпадают.
GetZ( Object : object ) : float|возвращает текущую координату: "z", соответственно, для юнита или предмета (Object) на карте относительно МСК системы координат. Системы координат МСК и ОСК по координате: z практически никогда не совпадают. Начало отсчета по координате: "z" в ОСК - это точка на поверхности карты, где в данный момент находится объект.
GetZValue( x : float , y : float ) : float|возвращает высоту твёрдой поверхности карты (независимо от наличия над ней слоя воды или лавы ) в точке с горизонтальными координатами( x , y ), но по команде в консоли: filter graphics 1 всегда выводится чуть меньшая третья координата. Функция: GetZValue несколько отличия от функции: GetBSZValue.
GiveDexterity( Unit : object , Amount : float )|добавляет объекту юниту: Unit пунктов ловкости: Amount. Работает только на игровых зонах. Функция одинаково воздействует как на врагов, так и для персонажей игроков.
GiveIntelligence( Unit : object , Amount : float )|добавляет объекту юниту: Unit пунктов разума: Amount . Работает только на игровых зонах. Функция одинаково воздействует как на врагов, так и на персонажей в Партии Игрока.
GiveItem(nPlayer:float,ItemConfusedtring)|помещает игроку: 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 кусков стали.
GiveMoney(nPlayer:float,Money:float)|добавляет в кошелек объекта количество денег: Money. Команда: GiveMoney не работает в магазине. У объектов принадлежащих Партиям индивидуальный кошелек пуст.
GiveQuestItem( nPlayer : float , QuestItem : strin )|добавляет квестовый предмет в рюкзак текущей Партии Игрока. Рюкзак имеет четыре места. Переполнение квестовых предметов в рюкзаке не взывает ошибки, в случае переполнения рюкзака, квестовые предметы добавляются в обоз.
GiveSkill( Unit : object , Skill : string , Amount : float )|добавляет количество пунктов: Amount параметру навык: Skill объекту: Unit. Механизм добавления пунктов навыка командой: GiveSkill делится на три этапа: 1- вычисление необходимого количество опыта для текущего добавления пунктов навыка, 2 - добавление вычисленного количества опыта объекту: Unit (не Партии!). 3 - добавления навыка за счет добавленного опыта, тем самым увеличивается значения переменных объекта зависимых от количества опыта - это параметры: "Здоровье" и "Выносливость" объекта.
GiveStrength( Unit : object , Amount : float )|добавляет объекту юниту: Unit пунктов силы: Amount . Работает только на игровых зонах. Функция одинаково воздействует как на врагов, так и для персонажей игроков.
GiveUnitQuestItem( Unit : object , QuestItem : string )|добавляет квестовый предмет под именем: QuestItem в рюкзак объекта: Unit (сундук). Если объект член "Партии" Игрока, то квестовый предмет добавляется в обоз партии.
GiveUnitSpell( Unit : object , sSpell : string )|дает объекту: Unit Заклинание, описанное строкой Spell. Заклинание помещается не в обоз, а в набор активных заклинаний - если он полон, то ничего не происходит. В магазине эта процедура не действует, а в игровой зоне, хотя фактически заклинание дается игроку, не обновляет набор заклинаний
GodMode(nPlayer:float,Mode:float)|устанавливает текущей партии игрока под номером: nPlayer режим: Mode - 0 значение по умолчанию, Mode - 1 партия неубиваемы при беге мана нерасходуется, Mode - 2 члены партии неубиваемы, при беге мана нерасходуется и любой юнит из партии убивает врага с одного удара.
GroupAdd( grpA : group , grpB : group ) : group|возвращает группу как набор, из объектов полученный в результате сравнения двух групп объектов, которые есть хотя бы в одной из групп: grpA или grpB. Работает с любыми экземплярами групп: "Составными ", "Дипломатическими" и "Игровыми". Для "Игровых" групп можно использовать эту функцию только в скриптах на уровне модуля карты, так как параметры: grpA и grpB следует вводить только как глобальные переменные.?
GroupCross( grpA : group , grpB : group ) : group|возвращает группу как набор из объектов пересечения групп объектов, которые есть как в группе: grpA, так и в группе: grpB. Работает с любыми экземплярами групп: "Составными ", "Дипломатическими" и "Игровыми". Для "Игровых" групп можно использовать эту функцию только в скриптах на уровне модуля карты, так как параметры: grpA и grpB следует вводить только как глобальные переменные.?
GroupHas( grp : group , Unit : object ) : float|возвращает значения: истину = 1 - если в группе: grp содержится объект: Unit. Работает с любыми экземплярами групп: "Составными ", "Дипломатическими" и "Игровыми". Для "Игровых" групп можно использовать эту функцию только в скриптах на уровне модуля карты, так как параметры: grp следует вводить только как глобальные переменные.?
GroupSee( grp : group ) : group|глаза какой-либо группы, возвращает группу как набор из объектов, видимый в текущий момент из глаз группы: grp. Члены группы: : grp могут видеть друг друга. Соответственно, в этом случае в группу войдут и юниты из группы: grp. Если юниты из группы не видят друг друга и не видят никого, то функция возвращает пустое значение. Работает с любыми экземплярами групп: Составными , Дипломатическими и Игровыми. Для Игровых групп можно использовать эту функцию только в скриптах на уровне модуля карты, так как параметры: grp следует вводить только как глобальные переменные.?
GroupSize( grp : group ) : float|возвращает число юнитов в группе: grp. Работает с любыми экземплярами групп: "Составными ", "Дипломатическими" и "Игровыми". Для "Игровых" групп можно использовать эту функцию только в скриптах на уровне модуля карты, так как параметры: grp следует вводить только как глобальные переменные.?
GroupSub( grpA : group , grpB : group ) : group|возвращает группу как набор из объектов, состоящую из тех юнитов группы grpA, которых нет в grpB. Работает с любыми экземплярами групп: "Составными ", "Дипломатическими" и "Игровыми". Для "Игровых" групп можно использовать эту функцию только в скриптах на уровне модуля карты, так как параметры: grpA и grpB следует вводить только как глобальные переменные.?
GSDelVar( nPlayer : float , Var : string )|удаляет переменные с именем: Var у игрока номер: nPlayer.
GSGetVar( nPlayer : float , Var : string ) : float|возвращает значение переменной с именем: Var у игрока номер: nPlayer.
GSSetVar( nPlayer : float , Var : string , nVar : float )|устанавливает значение: nVar в переменную с именем: Var у игрока номер: nPlayer. ?
GSSetVarMax( nPlayer : float , Var : string , nVar : float )|устанавливает значение: nVar в переменную с именем: Var у игрока номер: nPlayer. ?
Guard( Unit : object , x : float , y : float , rad : float )|отдает команду юниту: Unit, охранять территорию с радиусом: rad с центром в точке: (x,y). Юнит самостоятельно передвигается по указанной зоне, патрулируя ею.
HaveItem(nPlayer:float,idQuestItem:float):float|возвращает истина: 1, если у Игрока под номером: nPlayer в обозе или в рюкзаке есть квестовых предмет под кодом: idQuestItem, в противном случае ложь - 0
HideObject( Unit : object , Hide : float )|работает только на брифинг зонах. Объект-юнит: Значение параметра: Hide - 1 делает: Unit невидимым на брифинг зоне, значение параметра: Hide - 0 делает объект: Unit видимым на брифинг зоне.
HP( Unit : object ) : float|возвращает текущее значение параметра: здоровье у объекта Unit. Это число учитывает эффекты заклинаний ослабления и усиления, наложенных на объект.
Idle( Unit : object )|
InflictDamage( Unit : object , Amount : float )|наносит повреждения в количестве: Amount без учета показателя брони объекту-юниту: Unit. Если уничтожить врага с помощью этой команды, то опыт за убийство все равно достанется текущей партии и группе?
InvokeAlarm( nAlarm , x : float , y : float )|многофункциональная команда. Активирует переменную: nAlarm. Устанавливает значение переменной: nAlarm равной сумме времени всех предыдущих промежутков активаций и деактиваций этих переменных с момента начала игры. В переменную: nAlarm после активации, постоянно добавляется значение счетчика времени (1/15 сек). Активным может быть только один номер переменной. Активируя следующий номер переменной: nAlarm, команда: InvokeAlarm одновременно деактивируется предыдущую переменную, но не обнуляет ее. Номер следующей инициализируемой переменной необязательно должен быть по порядку, можно повторно инициализировать тот же номер переменной или предыдущий. Чтобы сбросить все значения переменных: nAlarm в ноль и остановить счетчик в глобальной переменной, нужно вызвать команду: InvokeAlarm с первым параметром = 0 : InvokeAlarm(0,0,0). Глобальная переменная не обнуляется. Так же эта команда устанавливает место на карте в точке: (x,y) с номером текущей, инициализируемой переменной. Этот указатель используется в различных заданиях, прописывается в свойство объектов, но только на уровне скриптмодуля. Привязать событие к объекту из консоли нельзя. Враг, реагирующий на событие с данным кодом (предустановлен, инициализирован?) подходит к этой точке и переходит в режим Guard. Если установить значение: nAlarm=0, тревога сбрасывается, и враги возвращаются к своему первоначальному месту и состоянию.
IsAlarm( nAlarm : float ) : float|возвращает значение истина=1, если переменная инициализирована, и ложь=0 в противном случае.
IsAlive( Unit : object ) : float|возвращает истину=1, если юнит: Unit жив, и ложь=0 в противном случае.
IsCameraPlaying( ) : float|
IsDead( Unit : object ) : float|возвращает истину = 1- если объект: Unit мертв, и ложь =0 - в противном случае. Если объект поднят? если объект не существует?, если ввести код предмета, например ключ от пирамиды?
IsEnemy( Unit : object , nDiplomacyGroup : float ) : float|возвращает истину или ложь. Если объект юнит: Unit врагом для Дипломатической группы номер: nDiplomacyGroup
IsEqual( A : float , B : float ) : float|возвращает истину = 1, если число: A равно числу: B, и ложь=1 в противном случае.
IsEqualString( A : string , B : string ) : float|возвращает истину=1, если строка: A равна строке: B с учетом регистра, и ложь=0 в противном случае.
IsGreater( A : float , B : float ) : float|возвращает истину=1, если число: A больше чем число: B, и ложь=0 в противном случае.
IsInArea( idArea : float , x : float , y : float ) : float|возвращает истину=1, если точка: (x,y) находится в одной из области с идентификатором: idArea, и ложь=0 в противном случае.
IsInSquare( x : float , y : float , x1 : float , y1 : float , x2 : float , y2 : float ) : float|возвращает истину=1, если точка: (x,y) находится в прямоугольнике: (x1,y1)-(x2, y2), и ложь=0 в противном случае.
IsLess( A : float , B : float ) : float|возвращает истину=1, если число: A меньше чем число: B, и ложь=0 в противном случае.
IsNight( ) : float|возвращает значение в интервале чисел: 0 до 1 в зависимости от времени суток: от 20 до 0 часов - значение от 0.0001 до 1. от 0 до 8 часов утра значение = 1, от 8 до 20 часов = 0.
IsPlayerInDanger(nPlayer:float):float|возвращает значение ложь=0 - если текущая Партия игрока под номером: nPlayer находится в безопасности, или: истина=1, если хотя бы один из членов партии в опасности. IsPlayerInDanger( 0 ) = NOT( IsPlayerInSafety( 0 ) )
IsPlayerInSafety(nPlayer:float):float|возвращает значение ложь=0 - если текущая Партия игрока под номером: nPlayer находится в безопасности, или: истина=1, если хотя бы один из членов партии в опасности. IsPlayerInSafety( 0 ) = NOT( IsPlayerInDanger( 0 ) )
IsUnitBlocked( Unit : object ) : float|возвращает истину=1, если юнит: Unit заблокирован, и ложь=0 в противном случае.
IsUnitInWater( Unit : object ) : float|возвращает истину=1, если юнит: Unit находится в воде, и ложь=0 в противном случае.?
IsUnitVisible( Unit : object ) : float|возвращает истину: 1, если юнит видим игроком на игровой зоне, в противном случае: 0 (не хватает параметра nPlayer). команда: HideObject не влияет на результат, возвращаемый этой функцией.
KillScript( )|работает только на уровне скриптмодуля карты!
KillUnit( Unit : object )|убивает объект: Unit. Опыт за убийство никому не достается. Чтобы опыт за убийство: Unit достался текущей "Партии" следует ввести команду: InflictDamage.
LeaveToZone(nPlayer:float,MapZoneConfusedtring,nEnterMap:float)|перемещает Игрока: nPlayer (все партии и обоз) на зону: MapZone в место: nEnterMap. Место: nEnterMap - это заранее предусмотренные места на карте где могут появляться Партии игроков. Каждый портал на карте имеет свой номер места: nEnterMap.
Lie( Unit : object )|изменяет режим перемещения объекта: Unit, отдает команду: ляг.
Mana( Unit : object ) : float|возвращает текущее значение параметра: выносливость у объекта: Unit.
MaxHP( Unit : object ) : float|возвращает максимально возможное значение здоровье у объекта: Unit. Это число учитывает эффекты заклинаний ослабления и усиления, наложенных на объект.
MaxMana( Unit : object ) : float|возвращает максимально возможное значение выносливости: Mana у объекта: Unit.
MoveParticleSource( id : float , x : float , y : float , z : float , Time : float , Remove : float )|перемещает источник частиц с идентификатором: id в точку: (x,y,z) за время: Time (измеряется в 1/15 секунды). Если параметр: Remove - истина, то после перемещения удаляет источник.
MovePointLight( id : float , x : float , y : float , z : float , Time : float , Remove : float )|перемещает источник света с идентификатором: id в точку: (x,y,z) за время: Time (измеряется в 1/15 секунды). Если параметр: Remove - истина, то после перемещения удаляет источник.
MoveToObject( UnitA : object , UnitB : object )|заставляет юнит: UnitA двигаться в текущем режиме перемещения к той точке, в которой на момент выполнения команды находился юнит UnitB.
MoveToPoint( Unit : object , x : float , y : float )|отдает команду юниту: Unit следовать в точку: (x,y).
Mul( A : float , B : float ) : float|возвращает произведение чисел: (A и B)
Not( bool : float ) : float|возвращает отрицание логического значения bool: истину=1, если: bool равно нулю, и ложь=0 в противном случае.
PlayAnimation( Unit : object , Animation : string )|воспроизводит анимацию - движение частей тела и сопутствующие звуковые эффекты. Unit - юнит, который будет воспроизводить анимацию. Где брать anim: Сначала надо определиться с юнитом, который надо привести в движение. Потом в lmpdatabaseMapObjectsRaceModels.txt найти Name этого юнита. Теперь посмотрите, что стоит в колонке Mask name. Нам нужен файл с таким
#2
Комментарий для команды KillUnit.
Иногда происходит такой глюк, что юнит не умирает, а становится неубиваемым, но полностью поврежденным (медленно ходит, бьет, но бессмертен), этот глюк связан с тем, что комманда KillUnit наносит очень большой урон (3.4е+038). Используйте InflictDamage
Что есть то есть, того что было не вернуть, не изменить ни дня.
Черный Обелиск "Дом желтого сна (часть 2)"
#3
Вот так наверняка...
InflictDamage( Unit : object , MaxHP( Unit : object ) )
или
InflictDamage( Unit : object , MaxHP( Unit : object ) +1)
Wink


не проверял, теория...
#4
Idle( Unit : object )| Комманда блокирует юнит: Unit. Возможно синоним
BlockUnit, но действует не только на игроков и нельзя снять блок.

IsCameraPlaying() : float| возвращает 32- если камера находится под управлением команды PlayCamera, когда действие команды PlayCamera заканчивается, то возвращается 0.

SetEnemy( Unit : object , nPlayer : float )| делает объект: Unit врагом для игрока nPlayer. Можно даже поссорить двух юнитов, принадлежащих одному игрокуSmile.

SetWind( x:float , y:float , z:float , wind:float )| создает ветер, если wind=1. x,y,z направлени и сила ветра.

SleepUntil( bool : float )| , SleepUntilIdle( Unit : object )| аналоги sleep, но с условием.
Что есть то есть, того что было не вернуть, не изменить ни дня.
Черный Обелиск "Дом желтого сна (часть 2)"
#5
Во молодец. Спасибо.
Давай еще пояснения если есть.


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)