action (действие)
Этот оператор не используется как ключевое слово. Тип action используется как параметр в функциях DelayCommand, AssignCommand, ActionDoCommand. К этому типу могут относиться только функции void. Вы не можете определять переменные этого типа или свои функции с параметрами action.
const (константа)
Константа - не изменяемое значение. Константа является символом (меткой), чтобы представить величину, которая не должна меняться в течение выполнения программы. Константы делают скрипт более читабельным и позволяют проще и быстрее редактировать тот. Они очень полезны, когда величина изменяется в некоторой точке, можно просто изменить константу, вместо исправления значения по всему коду. Для обозначения констант применяется служебное слово const. Есть три типа констант, которые вы можете использовать: int - целое число, float - число с плавающей точкой и string - строка (текст).
Целая константа (int) - это десятичное число, которое представляет целую величину.
Константа с плавающей точкой (float) - это действительное десятичное число.
Строковый литерал (string) - это последовательность букв, цифр и символов, заключенная в двойные кавычки.
По правилу переменные и константы должны располагаться в верхней части скрипта, но это не является жестким правилом. Если в include (включенные файлы) помещены константы, то все файлы, включившие его, будут использовать константы.
const int MYINT = 3; // целое число
const float MYFLOAT = 3.00; // число с плавающей точкой
const string MYSTRING = "три"; // строка (текст)
|
effect (эффект)
Этот тип используется для определения некоего эффекта, как визуального, так и невизуального. Каждый эффект создается с помощью конструктора – функции создающей определенный эффект. Потом этот эффект накладывается с помощью функций ApplyEffectToObject() и ApplyEffectAtLocation() на объект или локацию.
По длительности эффекты можно разделить на три вида:
- Мгновенные (DURATION_TYPE_INSTANT) – не имеющие длительности, например повреждение,
лечение или смерть, после наложения сразу же исчезают.
- Временные (DURATION_TYPE_TEMPORARY) – длящиеся некоторое время, эффект присутствует все
время действия.
- Постоянные (DURATION_TYPE_PERMANENT) – длящиеся вечно, либо до тех пор, пока их не
снимут.
//вот наш эффект. Он не визуальный, этим эффектом мы уменьшим выносливость на 1
effect eConPenalty = EffectAbilityDecrease(ABILITY_CONSTITUTION, 1);
//функцией ApplyEffectToObject мы применяем наш эффект к объекту
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eConPenalty, oTargetPC);
|
Эффекты можно разделить на три подтипа:
- Магические (Magical) – могут быть развеяны с помощью заклинания и
автоматически заканчиваются при начале отдыха, это подтип по умолчанию.
effect eMag = MagicalEffect(eEffect);
- Экстраординарные (Extraordinary) – не могут быть сняты с помощью заклинания,
автоматически снимаются в конце отдыха.
effect eExt = ExtraordinaryEffect(eEffect);
- Сверхъестественные (Supernatural) – не могут быть сняты ни заклинанием, ни с
помощью отдыха.
effect eSup = SupernaturalEffect(eEffect);
Можно создать один эффект состоящий сразу из нескольких, для этого есть функция EffectLinkEffects, соединяющая два назначеных ей эффекта в один, причем если у цели есть иммунитет к одному из объединенных эффектов, то другие эффекты ею тоже игнорируются. С помощью нее можно соединить сколь угодно эффектов в один.
effect eSostav = EffectLinkEffects(eEffect, EffectHaste(20));
Чтобы снять нужный эффект или эффекты нужно перебрать все эффекты на объекте, для каждого эффекта проверять тот ли это эффект, и если это нужный, то удалять. Для этого используем оператор цикла while и вспомогательные операторы:
GetFirstEffect(oObject) - первый эффект
GetNextEffect(oObject) - следующий эффект
RemoveEffect(oObject, eEffect) - снять эффект Ниже, в библиотеке визуальных эффектов, приведены две функции для снятия эффектов.
event (событие)
В свойствах почти каждого объекта Тулсета (NPC, триггера, локации, модуля, двери…) Есть закладка с событиями, запускаемыми при определенных условиях – эвентами. Например, эвент OnDeath стработает при уничтожении данного объекта.
Используя тип event и определенные функции, можно запустить эвент в ручную. Было бы хорошо, если бы для каждого эвента была своя вызывающая функция, но на практике есть только четыре: EventActivateItem(), EventConversation(), EventSpellCastAt(), EventUserDefined(). Первые три работают только по определенным событиям, а четвертая более универсальна.
event evEvent = EventUserDefined (1); //назначили эвент
SignalEvent(oldTarget, evEvent); //сигнализировали на запуск
|
float (число с плавающей точкой)
Этот тип представляет 32-битное число с плавающей точкой. Максимальное значение 3.402823e38, минимальное значение -3.402823e38, по умолчанию 0.0.
Во всех переменных типа float нужно обязательно ставить десятичную точку и хотя бы одну цифру после нее, а также букву f. .
float fZero = 0.0f;
float fOne = 1.0f;
float fHundred = 100.0f;
|
int (целое число)
Этот тип представляет 32-битное целое число. Максимальное значение 2,147,483,647, минимальное значение -2,147,483,648, по умолчанию 0.
int iAge = 23;
int iResult = 2 + 2;
|
Itemproperty (свойство элемента)
Itemproperty содержит информацию, которая определяет различные свойства, которыми обладает предмет. Например, свойство рубашки, дающее бонус к броне.
// в этой переменной у нас записано св-во увеличивающее броню на 1
itemproperty itemACBonus = ItemPropertyACBonus(1);
//это объект, к которому будет добавлено свойство
object oRoba = GetObjectByTag("ROBA");
//этой функцией мы добавляем св-во к объекту
AddItemProperty(DURATION_TYPE_TEMPORARY, itemACBonus, oRoba);
|
location (локация, местоположение)
Локация определяется тремя параметрами: областью, в которой нужно определить локацию, вектором, который по трем координатам (x, y, z) определяет точную позицию в области и направлением, числом с плавающей точкой от 0.0 до 360.0, которое определяет направление. Проще говоря, это место, точка и поворот. Если мы кинем игрока на локацию, то он появится в указанной области, в указанной точки и будет смотреть в указанном направлении.
Важно: не путайте понятия локация и область. Область – это карта. А локация – это точка на этой карте.
location locLocation = Location(oArea, vPosition, fFacing);
|
object (объект)
Этим типом обозначаются все объекты: NPC, триггеры, размещаемые предметы, инвентарь, вейпоинты… В обще, вся палитра, PC и DM.
object oSucks = GetLastPlayerDied(); //в этой переменной будет последний умерший PC
object oNew = GetObjectByTag("TAG"); //в этой переменной будет объект с тагом "TAG"
|
string (строка)
Это строчный тип переменной, в которой содержится любой текст. В тексте могут быть не только буквы, но и цифры, знаки, символы. Чтобы отнести написанное к тексту, его заключают в кавычки. Строка не ограничена по длине. Строки можно соединять, используя, оператор соединения "+". Так же можно сравнивать две строки с помощью операторов "= =" и "! = ". По умолчанию, пустая строка равна "".
Важно: при сравнении строк учитывается их регистр.
//Все это воспринимается компилятором, как строка, благодаря кавычкам ""
string sString = "Один, One, 1, =, -, %, «», @...";
//Для компилятора это две разные строки
string sStr = "string";
string sSTR = "STRING";
|
struct (структура)
Структура переменных различных типов, объединенных в одну переменную. Удобна для возврата множества значений, облегчает код.
struct Name
{
string First;
string Last;
}
|
talent (талант)
Этот тип представляет фиты, скиллы и спелы.
talent tFeat = TalentFeat(FEAT_ARMOR_PROFICIENCY_HEAVY);
talent tSkill = TalentSkill(SKILL_APPRAISE);
talent tSpell = TalentSpell(SPELL_DAZE);
|
vector (вектор)
Вектор состоит из трех чисел с плавающей точкой, которые обозначают положение по трем координатам (X, Y, Z). Вы можете сами задать вектор, а можете получить его специальной функцией. По умолчанию значение вектора {0, 0, 0} (или x = 0, y = 0, z = 0).
//в этой переменной будет содержаться вектор разности векторов объектов: OBJECT_SELF
//и oidTargetObject
vector v1 = GetPosition(OBJECT_SELF) - GetPosition(oidTargetObject);
//тут мы сами задали вектор
vector v2 = Vector(1.0f, 2.0f, 3.0f);
//выводим x координату из вектора v2
PrintFloat(v2.x);
//квадратный корень из данной суммы
float fDistanceToTarget = sqrt(v1.x * v1.x + v1.y * v1.y + v1.z * v1.z);
|
void (пусто )
Нулевой тип данных. Им обозначаются функции, которые не возвращают значений. Только такие функции могут быть поставлены в очередь действия.
void DeductXP(object oPC)
{
// Тут вычисляется XP
}
|
return (возврат с присваиванием)
Когда оператор обратного утверждения будет запущен в ходе выполнения кода, то он остановит выполнение и передаст обратную величину кодового блока, вызываемой функции. Если возвращаемое значение не соответствует типу данных функции, то компилятор выдаст ошибку о несоответствии типа. Если функция return возвращает пустое значение, то она может быть использована для преждевременной остановки выполнения кодового блока, если возвращаемая величина определена после функции return, то компилятор выдаст ошибку о несовпадении типа.
// возвратит число с плавающей точкой с величиной 1.0
float someFunction()
{
return 1.0f;
}
// НОВАЯ ФУНКЦИЯ
void Text(int iString)
{
if(iString==1) SpeakString("Начало скрипта");
return; // выход
if(iString==2) SpeakString("Конец скрипта");
return; // выход
}
void main()
{
Text(1);
Text(2);
return; // выход из скрипта
Text(1); // Эту строку программа не прочтет…
}
|
Есть еще один нюанс. Если мы используем в новых функциях в коде оператор возврата return, то этот оператор будет работать только в этой функции, а в блоке кода основного скрипта, этот оператор не вызовет прекращения чтения скрипта.
break (оператор прерывания)
Используйте оператор break, для выхода из циклов и условий (из фигурных скобок "обрамляющих" тело текущего блока кода) if, else, while, и for или в одном из case оператора switch.
Если оператор прерывания выполняется в теле цикла, то выполнение цикла прекращается, не зависимо от условия управляющего циклом. Любые операторы находящиеся после оператора break не будут восприняты.
Если оператор прерывания выполнен в одном из case оператора switch, то все последующие case не будут восприняты.
switch (оператор переключения)
Оператор switch действует подобно серии операторов if. Это делает код более удобным и ясным, он поддерживает в одном условии несколько случаев.
Важно: Только целые могут быть использованы как условие в операторе switch.
// оператор switch
switch (x)
{
case 0:
// операторы ...
// без прерывания проверка продолжится
// in this example if we didn't use a break, the default
// condition would also evaluate as true if x == 0
break; // прерывание
case 1:
// операторы ...
break;
case 2:
// операторы ...
break;
default:
// операторы ...
break;
}
|
Значение переменной x устанавливается в операторе switch, далее значение этой переменной сравнивается со значениями в операторах case. Если ни один из операторов case не равен x, тогда запускается дополнительный кодовый блок default.
Важно: оператор прерывания (break) должен быть включен в каждый блок оператора case, чтобы закончить выполнение оператора switch. Еще одним поводом является то, что отсутствие оператора break в конце блока кода одного оператора case приведет к тому, что начнут выполняться все остальные case (иногда это желаемый эффект). Оператор default необязателен, может не использоваться.
Вы не можете объявлять или инициализировать переменные в пределах оператора case.
Библиотека визуальных эффектов (с буквой "i" только DURATION_TYPE_INSTANT)
////////////////////////////////////////////////////////////
// *** БИБЛИОТЕКА ЭФФЕКТОВ *** #include "effect_one"
////////////////////////////////////////////////////////////
// Воронка синего тумана 1
effect e1i = EffectVisualEffect(VFX_FNF_DISPEL);
// Воронка синего тумана 2
effect e2i = EffectVisualEffect(VFX_FNF_DISPEL_DISJUNCTION);
// Воронка синего тумана 3
effect e3i = EffectVisualEffect(VFX_FNF_DISPEL_GREATER);
// ЖелтаЯ воронка
effect e4i = EffectVisualEffect(VFX_FNF_IMPLOSION);
// НегативнаЯ энергиЯ Красный круг 1
effect e5i = EffectVisualEffect(VFX_FNF_LOS_EVIL_10);
// НегативнаЯ энергиЯ Красный круг 2
effect e6i = EffectVisualEffect(VFX_FNF_LOS_EVIL_20);
// НегативнаЯ энергиЯ Красный круг 3
effect e7i = EffectVisualEffect(VFX_FNF_LOS_EVIL_30);
// круг желтый 1
effect e8i = EffectVisualEffect(VFX_FNF_LOS_HOLY_10);
// круг желтый 2
effect e9i = EffectVisualEffect(VFX_FNF_LOS_HOLY_20);
// круг желтый 3
effect e10i = EffectVisualEffect(VFX_FNF_LOS_HOLY_30);
// Зеленый круг животных
effect e11i = EffectVisualEffect(VFX_FNF_NATURES_BALANCE);
// Красный круг пентаграммы
effect e12i = EffectVisualEffect(VFX_FNF_PWKILL);
// ФиолетоваЯ спираль и круг
effect e13i = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2);
// Страх синий круг
effect e14i = EffectVisualEffect(VFX_FNF_HOWL_MIND);
// Страх фиолетовый круг
effect e15i = EffectVisualEffect(VFX_FNF_HOWL_ODD);
// Страх белый круг
effect e16i = EffectVisualEffect(VFX_FNF_HOWL_WAR_CRY);
// Огненный импульсный круг
effect e17i = EffectVisualEffect(VFX_IMP_PULSE_FIRE);
// синий импульсный круг
effect e18i = EffectVisualEffect(VFX_IMP_PULSE_COLD);
// *********** ИНТЕРЕСНЫЕ ****************************************************
// ГолубаЯ звезда под ногами
effect e19i = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3);
// БольшаЯ желтаЯ звезда под ногами
effect e20i = EffectVisualEffect(VFX_FNF_WORD);
// Врата Ада синий луч
effect e21i = EffectVisualEffect(VFX_FNF_SUMMON_CELESTIAL);
// Врата Ада огненный взрыв
effect e22i = EffectVisualEffect(VFX_FNF_SUMMON_GATE);
// Девка
effect e23i = EffectVisualEffect(VFX_FNF_WAIL_O_BANSHEES);
// Змей двуглавый
effect e24i = EffectVisualEffect(VFX_FNF_WEIRD);
// Голубое облако
effect e25i = EffectVisualEffect(VFX_IMP_DISPEL);
// Глазастое синие облако
effect e26 = EffectVisualEffect(VFX_DUR_PROT_PREMONITION);
// Черные мошки ДЛЯ ЛОКАЦИИ
effect e27 = EffectAreaOfEffect(AOE_PER_CREEPING_DOOM);
// Большой зеленый дождь ДЛЯ ЛОКАЦИИ
effect e28 = EffectAreaOfEffect(AOE_PER_STORM);
// *********** ВЗРЫВНЫЕ ******************************************************
// Большой огненный взрыв
effect e29i = EffectVisualEffect(VFX_FNF_FIREBALL);
// Взрыв газа зеленый
effect e30i = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_ACID);
// Взрыв газа красный
effect e31i = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_EVIL);
// Огненный взрыв
effect e32i = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_FIRE);
// Взрыв газа черный
effect e33i = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_GREASE);
// Взрыв газа синий
effect e34i = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_MIND);
// Большой серебристый взрыв
effect e35i = EffectVisualEffect(VFX_FNF_BLINDDEAF);
// Взрыв газа болотный
effect e36i = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_NATURE);
// Звуковой взрыв 1
effect e37i = EffectVisualEffect(VFX_FNF_LOS_NORMAL_10);
// Звуковой взрыв 2
effect e38i = EffectVisualEffect(VFX_FNF_LOS_NORMAL_20);
// Звуковой взрыв 3
effect e39i = EffectVisualEffect(VFX_FNF_LOS_NORMAL_30);
// Большой звуковой взрыв
effect e40i = EffectVisualEffect(VFX_FNF_SOUND_BURST);
// Серебристый взрыв
effect e41i = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
// Серебристый малый взрыв и голос страха
effect e42i = EffectVisualEffect(VFX_FNF_SUMMON_UNDEAD);
// Большой взрыв красные кости
effect e43i = EffectVisualEffect(VFX_COM_CHUNK_RED_LARGE);
// взрыв красные кости
effect e44i = EffectVisualEffect(VFX_COM_CHUNK_RED_MEDIUM);
// взрыв красные кости
effect e45i = EffectVisualEffect(VFX_COM_CHUNK_RED_SMALL);
// Взрыв зеленые кости
effect e46i = EffectVisualEffect(VFX_COM_CHUNK_GREEN_MEDIUM);
// Взрыв зеленые кости
effect e47i = EffectVisualEffect(VFX_COM_CHUNK_GREEN_SMALL);
// Взрыв желтые кости
effect e48i = EffectVisualEffect(VFX_COM_CHUNK_YELLOW_MEDIUM);
// Взрыв желтые кости
effect e49i = EffectVisualEffect(VFX_COM_CHUNK_YELLOW_SMALL);
// Взрыв костей нежить
effect e50i = EffectVisualEffect(VFX_COM_CHUNK_BONE_MEDIUM);
// Малый зеленый взрыв
effect e51i = EffectVisualEffect(VFX_COM_HIT_ACID);
// МалаЯ огненнаЯ вспышка
effect e52i = EffectVisualEffect(VFX_COM_HIT_FIRE);
// Взрыв ежиков
effect e53i = EffectVisualEffect(VFX_DUR_CALTROPS);
// *********** ЗАКЛИНАНИЕ ****************************************************
// Увeдание Аб-ма
effect e54i = EffectVisualEffect(VFX_FNF_HORRID_WILTING);
// Ледeной шторм
effect e55i = EffectVisualEffect(VFX_FNF_ICESTORM);
// Метеорный дождь
effect e56i = EffectVisualEffect(VFX_FNF_METEOR_SWARM);
// Огненный шторм
effect e57i = EffectVisualEffect(VFX_FNF_FIRESTORM);
// Часы
effect e58i = EffectVisualEffect(VFX_FNF_TIME_STOP);
// Рука Бигли
effect e59 = EffectVisualEffect(VFX_DUR_BIGBYS_CLENCHED_FIST);
// Захват Бигли
effect e60 = EffectVisualEffect(VFX_DUR_BIGBYS_CRUSHING_HAND);
// Вращ рука Бигли
effect e61 = EffectVisualEffect(VFX_DUR_BIGBYS_INTERPOSING_HAND);
// Паутина удержание
effect e62 = EffectVisualEffect(VFX_DUR_WEB);
// Паутина удержание под ногами
effect e63 = EffectVisualEffect(VFX_DUR_WEB_MASS);
// Кожа кора
effect e64 = EffectVisualEffect(VFX_DUR_PROT_BARKSKIN);
// КаменнаЯ кожа
effect e65 = EffectVisualEffect(VFX_DUR_PETRIFY);
// ЧернаЯ кожа
effect e66 = EffectVisualEffect(VFX_DUR_PROT_SHADOW_ARMOR);
// Теневой режим
effect e67 = EffectVisualEffect(VFX_DUR_GHOSTLY_PULSE);
// Призрачный вид
effect e68 = EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE);
// Фиолетовый вид
effect e69 = EffectVisualEffect(VFX_DUR_ETHEREAL_VISAGE);
// Телесное мерцание
effect e70 = EffectVisualEffect(VFX_DUR_BLUR);
// Толчки 1
effect e71i = EffectVisualEffect(VFX_FNF_SCREEN_BUMP);
// Толчки 2
effect e72i = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
// ПульсирующаЯ голубаЯ звезда (взлом замка)
effect e73i = EffectVisualEffect(VFX_IMP_KNOCK);
// Отзыв животного, голубой круг
effect e74i = EffectVisualEffect(VFX_IMP_UNSUMMON);
// *********** ЛУЧИ **********************************************************
// Большой желтый луч
effect e75i = EffectVisualEffect(VFX_FNF_SUNBEAM);
// Огненный луч
effect e76i = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_FIRE);
// Синий луч
effect e77i = EffectVisualEffect(VFX_IMP_HEALING_X);
// Молнии луч
effect e78i = EffectVisualEffect(VFX_IMP_LIGHTNING_M);
// Красный луч
effect e79i = EffectVisualEffect(VFX_IMP_HARM);
// *********** ПОД НОГАМИ ****************************************************
// Доспехи супер героЯ
effect e80i = EffectVisualEffect(VFX_IMP_SUPER_HEROISM);
// Чернота под ногами (тьма)
effect e81 = EffectVisualEffect(VFX_DUR_ANTI_LIGHT_10);
// Огненный круг под ногами
effect e82 = EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD);
// Синий круг под ногами
effect e83 = EffectVisualEffect(VFX_DUR_SPELLTURNING);
// Зеленый круг под ногами
effect e84 = EffectVisualEffect(VFX_DUR_FREEDOM_OF_MOVEMENT);
// Искры у ног
effect e85i = EffectVisualEffect(VFX_COM_SPARKS_PARRY);
// Малый взрыв электричества под ногами
effect e86i = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
// Черные нити
effect e87 = EffectVisualEffect(VFX_DUR_TENTACLE);
// Папоротник
effect e88 = EffectVisualEffect(VFX_DUR_ENTANGLE);
// Пар
effect e89i = EffectVisualEffect(VFX_FNF_SMOKE_PUFF);
// Флаг синий
effect e90 = EffectVisualEffect(VFX_DUR_FLAG_BLUE);
// Флаг фиолетовый
effect e91 = EffectVisualEffect(VFX_DUR_FLAG_GOLD);
// Флаг желтый
effect e92 = EffectVisualEffect(VFX_DUR_FLAG_PURPLE);
// Флаг красный
effect e93 = EffectVisualEffect(VFX_DUR_FLAG_RED);
// Облако болотное малое ДЛЯ ЛОКАЦИИ
effect e94 = EffectAreaOfEffect(AOE_MOB_TYRANT_FOG);
// Облако болотное малое ДЛЯ ЛОКАЦИИ
effect e95 = EffectAreaOfEffect(AOE_PER_FOGGHOUL);
// Облако болотное ДЛЯ ЛОКАЦИИ
effect e96 = EffectAreaOfEffect(AOE_PER_FOGSTINK);
// Облако зеленое ДЛЯ ЛОКАЦИИ
effect e97 = EffectAreaOfEffect(AOE_PER_FOGACID);
// Облако огненное ДЛЯ ЛОКАЦИИ
effect e98 = EffectAreaOfEffect(AOE_PER_FOGFIRE);
// Облако красное ДЛЯ ЛОКАЦИИ
effect e99 = EffectAreaOfEffect(AOE_PER_FOGKILL);
// Облако синее ДЛЯ ЛОКАЦИИ
effect e100 = EffectAreaOfEffect(AOE_PER_FOGMIND);
// Облако черное ДЛЯ ЛОКАЦИИ
effect e101 = EffectAreaOfEffect(AOE_PER_GREASE);
// Много щупальцы болтные ДЛЯ ЛОКАЦИИ
effect e102 = EffectAreaOfEffect(AOE_PER_ENTANGLE);
// Много щупальцы черные ДЛЯ ЛОКАЦИИ
effect e103 = EffectAreaOfEffect(AOE_PER_EVARDS_BLACK_TENTACLES);
// *********** У ГОЛОВЫ ******************************************************
// Музыка и ноты
effect e104i = EffectVisualEffect(VFX_DUR_BARD_SONG);
// Гроза над головой
effect e105i = EffectVisualEffect(VFX_IMP_DOOM);
// Зеленый взрыв над головой
effect e106i = EffectVisualEffect(VFX_IMP_HEAD_ACID);
// Голубой взрыв над головой
effect e107i = EffectVisualEffect(VFX_IMP_HEAD_COLD);
// Электрический взрыв над головой
effect e108i = EffectVisualEffect(VFX_IMP_HEAD_ELECTRICITY);
// Красный взрыв над головой
effect e109i = EffectVisualEffect(VFX_IMP_HEAD_EVIL);
// Огненный взрыв над головой
effect e110i = EffectVisualEffect(VFX_IMP_HEAD_FIRE);
// Сине-желтый взрыв над головой
effect e111i = EffectVisualEffect(VFX_IMP_HEAD_HEAL);
// Желтый взрыв над головой
effect e112i = EffectVisualEffect(VFX_IMP_HEAD_HOLY);
// Фиолетовый взрыв над головой
effect e113i = EffectVisualEffect(VFX_IMP_HEAD_MIND);
// Желто-зеленый взрыв над головой
effect e114i = EffectVisualEffect(VFX_IMP_HEAD_NATURE);
// Малый oгненный взрыв у головы
effect e115i = EffectVisualEffect(VFX_COM_HIT_FIRE);
// Радужные брызги у головы
effect e116i = EffectVisualEffect(VFX_COM_BLOOD_SPARK_LARGE);
// Радужные брызги
effect e117i = EffectVisualEffect(VFX_COM_BLOOD_SPARK_MEDIUM);
// Красный шар взрыв у головы
effect e118i = EffectVisualEffect(VFX_COM_BLOOD_CRT_RED);
// Желтый шар взрыв у головы
effect e119i = EffectVisualEffect(VFX_COM_BLOOD_CRT_YELLOW);
// Ледeной взрыв над головой
effect e120i = EffectVisualEffect(VFX_IMP_STUN);
// Маг радужное облако
effect e121i = EffectVisualEffect(VFX_IMP_HEALING_G);
// Замешательство облако
effect e122 = EffectVisualEffect(VFX_DUR_MAGICAL_SIGHT);
// Замешательство птички
effect e123 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
// Замешательство нимб голубой
effect e124 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DOMINATED);
// Страх
effect e125 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR);
// Замешательство спираль
effect e126 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE);
// Замешательство круг кинжалов
effect e127 = EffectVisualEffect(VFX_DUR_PARALYZED);
// *********** ПРОЧИЕ ********************************************************
// КраснаЯ спираль
effect e128i = EffectVisualEffect(VFX_FNF_PWSTUN);
// БольшаЯ белаЯ спираль
effect e129 = EffectVisualEffect(VFX_DUR_PARALYZE_HOLD);
// Аура голубаЯ
effect e120 = EffectVisualEffect(VFX_DUR_AURA_COLD);
// ОгненнаЯ спираль
effect e131i = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_HOLY);
// Фонтан голубой спиральный
effect e132i = EffectVisualEffect(VFX_IMP_HEALING_L);
// Малый столб света
effect e133i = EffectVisualEffect(VFX_IMP_HEALING_M);
// МалаЯ голубаЯ спираль
effect e134i = EffectVisualEffect(VFX_IMP_HEALING_S);
// МалаЯ тьма
effect e135 = EffectVisualEffect(VFX_DUR_DARKNESS);
// БОЛЬШАЯ ТЬМА
effect e136 = EffectVisualEffect(AOE_PER_DARKNESS);
// Маг сфера
effect e137 = EffectVisualEffect(VFX_DUR_GLOBE_INVULNERABILITY);
// ПризрачнаЯ маг сфера
effect e138 = EffectVisualEffect(VFX_DUR_GLOBE_MINOR);
// Маг рваннаЯ сфера
effect e139 = EffectVisualEffect(VFX_DUR_MAGIC_RESISTANCE);
// Красный дождь
effect e140 = EffectVisualEffect(VFX_DUR_PROTECTION_EVIL_MAJOR);
// Малый красный дождь
effect e141 = EffectVisualEffect(VFX_DUR_PROTECTION_EVIL_MINOR);
// Желтый дождь
effect e142 = EffectVisualEffect(VFX_DUR_PROTECTION_GOOD_MAJOR);
// Малый желтый дождь
effect e143 = EffectVisualEffect(VFX_DUR_PROTECTION_GOOD_MINOR);
// БольшаЯ синеЯ спираль
effect e144 = EffectVisualEffect(VFX_DUR_SANCTUARY);
// Желтый маг дождь
effect e145 = EffectVisualEffect(VFX_DUR_PROTECTION_ELEMENTS);
// Свет желтый
effect e146 = EffectVisualEffect(VFX_DUR_LIGHT_YELLOW_10);
// Свет белый
effect e147 = EffectVisualEffect(VFX_DUR_LIGHT_WHITE_10);
// Свет красный
effect e148 = EffectVisualEffect(VFX_DUR_LIGHT_RED_10);
// Свет голубой
effect e149 = EffectVisualEffect(VFX_DUR_LIGHT_BLUE_10);
// Окаменение - статуЯ
effect e150 = EffectPetrify();
// Прыжок с неба
effect e151 = EffectAppear();
// Прыжок в небо и уничтожение объекта
effect e152 = EffectDisappear();
// Эффект зачаровывает цель - (не может говорить)
effect e153 = EffectCharmed();
// Эффект парализации
effect e154 = EffectCutsceneParalyze();
// ПолнаЯ невидимость
effect e155 = EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY);
// Эффект смерти
effect e156i = EffectDeath();
// Эффект ускорение
effect e157 = EffectHaste();
// Эффект запутывание
effect e158 = EffectEntangle();
// Эффект воскрешениe
effect e159i = EffectResurrection();
// Эффект сон
effect e160 = EffectSleep();
// Эффект сон
effect e161 = EffectVisualEffect(VFX_IMP_SLEEP);
// Эффект замедление - цель затормаживает на 50%
effect e162 = EffectSlow();
// ПРОКЛЯТИЕ
effect e163 = EffectCurse(3,3,3,3,3);
// Эффект падение на колени, PC полностью обездвижен
effect e164 = EffectKnockdown();
//************************** 164
//=============== НАЛОЖИТЬ ЭФФЕКТ ==============================================
void EffectOnPC(object oObject, effect eOne, float iTime, int iNUB)
{
location lEffect = GetLocation(oObject);
if (iNUB == 1) ApplyEffectToObject(DURATION_TYPE_INSTANT, eOne, oObject);
if (iNUB == 2) ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eOne, oObject, iTime);
if (iNUB == 3) ApplyEffectToObject(DURATION_TYPE_PERMANENT, eOne, oObject);
if (iNUB == 4) ApplyEffectToObject(DURATION_TYPE_TEMPORARY,
SupernaturalEffect(eOne), oObject, iTime);
if (iNUB == 5) ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(eOne), oObject);
if (iNUB == 6) ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eOne, lEffect);
if (iNUB == 7) ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eOne, lEffect, iTime);
}
//=============== СНЯТЬ ВСЕ ЭФФЕКТЫ ============================================
void DelEffectOnPC(object oObject)
{
effect eOne = GetFirstEffect(oObject);
while (GetIsEffectValid(eOne))
{
RemoveEffect(oObject, eOne);
eOne = GetNextEffect(oObject);
}
}
//=============== СНЯТЬ ЭФФЕКТ =================================================
void DelOneEffectOnPC(object oObject, int iOne)
{
effect eEffect = GetFirstEffect(oObject);
while (GetIsEffectValid(eEffect))
{
if (GetEffectType(eEffect) == iOne)
RemoveEffect(oObject, eEffect);
eEffect = GetNextEffect(oObject);
}
// int iOne - EFFECT_TYPE_...
}
|
|