Типы переменных: object - объект игрового мира int - целое число float - число с плавающей точкой (дробное проще говоря) location - это локация vector - вектор talent - талант effect - эффект
И так, начну сверху вниз (по списку в тулсете).
//ActionAttack (Действие - Атака) void ActionAttack(object oAttackee, int bPassive=FALSE)
object - это объект, на который будет происходить атака. int bPassive= - атака в пассивном (если стоит TRUE) или в активном режиме (если стоит FALSE)
//ActionCastFakeSpellAtLocation(Действие - Кстование спеллов, которые только дают эффект и визуализацию, больше ничего, на определенное место void ActionCastFakeSpellAtLocation(int nSpell, location lTarget, int nProjectilePathType=PROJECTILE_PATH_TYPE_DEFAULT)
int nSpell - nSpell, который вы собираетесь кастовать location lTarget - lTarget, куда будет направлен спелл int nProjectilePathType - тип траектории (PROJECTILE_PATH_*)
//ActionCastFakeSpellAtObject (Тоже, что и в предыдущем варианте, только здесь используется не точка на карте, а объект как мишень) void ActionCastFakeSpellAtObject(int nSpell, object oTarget, int nProjectilePathType=PROJECTILE_PATH_TYPE_DEFAULT)
int nSpell - nSpell, который вы собираетесь кастовать object oTarget - oTarget, куда будет направлен спелл int nProjectilePathType - тип траектории (PROJECTILE_PATH_*)
//ActionCastSpellAtLocation (Действие - Кастование спелла на определенную точку на карте) void ActionCastSpellAtLocation(int nSpell, location lTargetLocation, int nMetaMagic=METAMAGIC_ANY, int bCheat=FALSE, int nProjectilePathType=PROJECTILE_PATH_TYPE_DEFAULT, int bInstantSpell=FALSE)
int nSpell - nSpell, который вы хотите скастовать location lTargetLocation - lTargetLocation, куда направлен спелл int nMetaMagic - вид метамагии, который вы примените к этому спеллу (METAMAGIC_ANY, METAMAGIC_EMPOWER, METAMAGIC_EXTEND, METAMAGIC_MAXIMIZE, METAMAGIC_NONE, METAMAGIC_QUICKEN, METAMAGIC_SILENT, METAMAGIC_STILL) int bCheat - если установлено в TRUE, то объект скастит спелл независимо от того, является ли он кастером, либо не имеет данного спелла. int nProjectilePathType - тип траектории (PROJECTILE_PATH_*) int bInstantSpell - если FALSE, то спелл будет кастоваться до дефолту, если TRUE - спелл будет скастован немедленно
//ActionCastSpellAtObject (Тоже, что и в предыдущем варианте, но целью является уже объект) void ActionCastSpellAtObject(int nSpell, object oTarget, int nMetaMagic=METAMAGIC_ANY, int bCheat=FALSE, int nDomainLevel=0, int nProjectilePathType=PROJECTILE_PATH_TYPE_DEFAULT, int bInstantSpell=FALSE)
int nSpell - nSpell, который вы хотите скастовать object oTarget - oTarget, куда направлен спелл int nMetaMagic - вид метамагии, который вы примените к этому спеллу (METAMAGIC_ANY, METAMAGIC_EMPOWER, METAMAGIC_EXTEND, METAMAGIC_MAXIMIZE, METAMAGIC_NONE, METAMAGIC_QUICKEN, METAMAGIC_SILENT, METAMAGIC_STILL) int bCheat - если установлено в TRUE, то объект скастит спелл независимо от того, является ли он кастером, либо не имеет данного спелла. int nDomainLevel - хех, сколько много интерестного... оставим по дефолту int nProjectilePathType - тип траектории (PROJECTILE_PATH_*) int bInstantSpell - если FALSE, то спелл будет кастоваться до дефолту, если TRUE - спелл будет скастован немедленно
Наверняка некоторые не понимают, что такое object... Кратко поясню - object содержит в себе тег нужного объекта. Задается таким образом: object oDoor = GetObjectByTag("тэг объекта");
object oCounterSpellTarget - Применяется дейсвие контрзаклинания против oCounterSpellTarget
//ActionDoCommand (Действие Исполнение команды) void ActionDoCommand(action aActionToDo)
action aActionToDo - выполнение aActionToDo. (сам не знаю как это работает... возможно скриптеры получше меня здесь пояснят для чего нужна эта команда)
//ActionEquipItem (Действие Помещения объекта в определенный слот) void ActionEquipItem(object oItem, int nInventorySlot)
object oItem - ну сам объект oItem, который вы хотите поместить int nInventorySlot - а вот здесь пишите слот из приведенного ниже списка: INVENTORY_SLOT_ARMS - слот для наручей и перчаток INVENTORY_SLOT_ARROWS - слоты под стрелы, болты, камни, сюрикены и т.д. INVENTORY_SLOT_BELT - слот под пояс INVENTORY_SLOT_BOOTS - слот под сапоги INVENTORY_SLOT_BULLETS INVENTORY_SLOT_CARMOUR INVENTORY_SLOT_CHEST INVENTORY_SLOT_CLOAK - слот для плаща INVENTORY_SLOT_CWEAPON_B INVENTORY_SLOT_CWEAPON_L INVENTORY_SLOT_CWEAPON_R INVENTORY_SLOT_HEAD - слот для шлема INVENTORY_SLOT_LEFTHAND - слот для левой руки INVENTORY_SLOT_LEFTRING - слот для кольца на левую руку INVENTORY_SLOT_NECK INVENTORY_SLOT_RIGHTHAND - слот для правой руки INVENTORY_SLOT_RIGHTRING - слот для кольца на правую руку
//ActionEquipMostDamagingMelee (Действие Помещение в руку объекта, который наносит большее повреждение, для mlee (близкий бой) атаки. Если такого оружия не найдено в руку будет помещено оружие для range (дальний бой) атаки. Скрипт лучше всего использовать в EndOfCombatRound, потому что чтобы запустить скрипт нужно будет закончить один раунд) void ActionEquipMostDamagingMelee(object oVersus=OBJECT_INVALID, int bOffHand=FALSE)
object oVersus - для чего этот параметр я так и не врубился... int bOffHand - и этото тоже... пусть стоит на дефолте ПРИМЕЧАНИЕ: функция может работать просто как ActionEquipMostDamagingMelee();, т.е. без дополнительных параметров.
//ActionEquipMostDamagingRanged (Действие Помещение в руку объекта, который наносит наибольшие повреждения, для range (дальний бой) атаки. Если такового не найдено в руку будет помещена вещь наносящая наибольбшие повреждения в mlee (близкий бой) атаке. Скрипт лучше всего использовать в EndOfCombatRound, потому что чтобы запустить скрипт нужно будет закончить один раунд) void ActionEquipMostDamagingRanged(object oVersus=OBJECT_INVALID)
object oVersus - ну надо же, опять непонятный параментр =) ПРИМЕЧАНИЕ: функция может работать просто как ActionEquipMostDamagingRanged();, т.е. без дополнительных параметров.
//ActionEquipMostEffectiveArmor (Дейсвие Помещение объекта (брони) с самым выскоим показателем класса брони) void ActionEquipMostEffectiveArmor()
Следующая порция функций. Здесь будут разбираться случаи, в которых используется тип переменных - location.
Location - определяет локацию в игровом мире. location Location(object oArea, vector vPosition, float fOrientation)
Каждая локация характеризуется областью, вектором и ориентацией: object oArea - область vector vPosition - вектор в oArea float fOrientation - ориентация (условно - "направление взгляда"): DIRECTION_EAST - восток, DIRECTION_NORTH - север, DIRECTION_SOUTH - юг, DIRECTION_WEST - запад, либо дробное значение от 0.0 до 360.0. Для тех кому все же непонятно - сравните функцию с установкой вейпоинта в определенной области (oArea), в указанной позиции внутри этой области (vPosition) и направлении его в определенное место (fOrientation), только скриптом и без реального объекта.
Vector - определение вектора по трем координатам vector Vector(float x=0.0f, float y=0.0f, float z=0.0f)
float x - направление по оси х float y - направление по оси у float z - направление по оси z
//Применение этой функции на практике: vector vNewPos = GetPosition(oPlayer) - Vector( 0.0f, -2.0f, 0.0f);
Помните, что как таковой оси Z в НВН нет. Т.е. перемещаться по оси Z, оставаясь при этом в одинаковых X и У, нельзя. ---------------------------------------------------------------------
//ActionForceFollowObject (Действие Следовать за объектом) void ActionForceFollowObject(object oFollow, float fFollowDistance=0.0f)
object oFollow - объект oFollow, за которым непосредственно и будут следовать. float fFollowDistance - а это определяет дистанцию, на которой будет держаться следующий от oFollow
//ActionForceMoveToLocation (Действие Вынужденное движение на определенную дистанцию) void ActionForceMoveToLocation(location lDestination, int bRun=FALSE, float fTimeout=30.0f)
location lDestination - жистанция, заданная функцией location int bRun - если TRUE, то будет применен бег, если FALSE - будет просто идти float fTimeout - сколько это будет длиться =)
//ActionForceMoveToObject (Действие Вынужденное движение к определенному объекту) void ActionForceMoveToObject(object oMoveTo, int bRun=FALSE, float fRange=1.0f, float fTimeout=30.0f)
object oMoveTo - указывает к какому объекту двигаться, в данном случае oMoveTo int bRun - если TRUE, то будет применен бег, если FALSE - будет просто идти float fRange - хм, не могу сказать что это float fTimeout - сколько это будет длиться =)))))))))
//ActionGiveItem (Действие Дать предмет - самый элементарный скрипт) void ActionGiveItem(object oItem, object oGiveTo)
object oItem - сама вещь, которую дают, в нашем случае это oItem object oGiveTo - тот, кому дают oItem
Предисловие - НЕ ЗАБЫВАЙТЕ ПОСЛЕ ФУНКЦИЙ СТАВИТЬ ";" И так, продолжим...
ActionInteractObject (Действие Взаимодействия с целью) void ActionInteractObject(object oPlaceable)
object oPlaceable - функция взаимодействия с oPlaceable... практического использования этой функции я не наблюдаю...
ActionJumpToLocation (Действие Прыжок в локацию, т.е. при выполненеии этого действия чар пересется в точку) void ActionJumpToLocation(location lLocation)
location lLocation - задается lLocation, куда переносится объект, с помощью функции, описанной в предыдущем посте
ActionJumpToObject (Действие Прыжок к объекту, т.е. при выполнении этого действия чар перенесется к объекту) void ActionJumpToObject(object oToJumpTo, int bWalkStraightLineToPoint=TRUE)
object oToJumpTo - объект oToJumpTo, к которому и происходит перенос int bWalkStraightLineToPoint - переводится как прыжок по прямой линии если стоит TRUE, а если FALSE - то прыжок производится рандомно... хотя может я и не так понял =)
ActionMoveAwayFromLocation (Действие Уходить от точки) void ActionMoveAwayFromLocation(location lMoveAwayFrom, int bRun=FALSE, float fMoveAwayRange=40.0f)
location lMoveAwayFrom - собственно то место, от которого нужно уйти. int bRun - собственно TRUE включает бег, FALSE отключает бег... float fMoveAwayRange - ну это типа сколько футов надо идти от того места (задается как х.х)
ActionMoveAwayFromObject (Действие Уходить от объекта) void ActionMoveAwayFromObject(object oFleeFrom, int bRun=FALSE, float fMoveAwayRange=40.0f)
object oFleeFrom - задается от какого объекта мы должны двигать (когда ты используешь ящик и сразу срываешься с места, а тем временем таймер на ящичке отсчитывает 10 сек и ящик взрывается - это так, для примера) int bRun - собственно TRUE включает бег, FALSE отключает бег... float fMoveAwayRange - ну это типа сколько футов надо идти от того места (задается как х.х)
ActionMoveToLocation (действие Идти в локацию) void ActionMoveToLocation(location lDestination, int bRun=FALSE)
location lDestination - задается сама локация, куда идти int bRun - собственно TRUE включает бег, FALSE отключает бег...
ActionMoveToObject (Действие Идти к объекту) void ActionMoveToObject(object oMoveTo, int bRun=FALSE, float fRange=1.0f)
object oMoveTo - сам обжект, к которому мы начинаем двигаться int bRun - собственно TRUE включает бег, FALSE отключает бег (ну везде одно и тоже) float fRange - а это типа максимальное расстояние, на которое мы можем подойти к объекту (т.е. число футов, которое останется между вами и объектом)
ActionRandomWalk (Действие Случайное хождение - функция вызывает создание случайного местоположения вокруг того, что или куто ее использует, и пытается заставить эту вещь или объект переместиться туда... например человек может бродить где его душе угодно) void ActionRandomWalk()
ActionResumeConversation (Действие продолжить разговор... помните мы говорили про паузу разговора? вот это снимает паузу... зачем эта функция на практике мне невдомек) void ActionResumeConversation()
ActionSit (Действие Сидеть - садит существо на его пятую точку где нибуть на каком нибуть стуле... применяется непосредственно в OnUsed стула, хотя можно и на что нить другое...) void ActionSit(object oChair)
object oChair - сам стул oChair
ActionSpeakString (Действие Сказать что то - заставляет существо говорить всякую фигню, которую вы зададите скриптом... хотя это может быть и не существо... ну кому какая разница?) void ActionSpeakString(string sStringToSpeak, int nTalkVolume=TALKVOLUME_TALK)
string sStringToSpeak - строка что говорить... вы не знаете как ее задать??? смотрите и учитесь: strin sStringToSpea = "Тру-ля-ля, я дурак или нет... Дайте мне в лоб"; Когда запустится скрипт как вы думаете что скажет тот, на кого он будет применяться??? =) Конечно под вопросом как громко это он скажет... Это задается с помощью параметра int nTalkVolume - выбирите из списка ниже громкость: TALKVOLUME_SHOUT - орет в шаут, т.е. весь модуль его услышит... TALKVOLUME_TALK - говорит просто так... в компании =) TALKVOLUME_WHISPER - чтоб никто не услышал надо говорить шопотом...
TALKVOLUME_SILENT_* услышат только мобы. В стандарте используются для сообщения рядом стоящим мобам о моей (т.е. запустившего скрипт) смерти: TALKVOLUME_SILENT_SHOUT - услышат мобы во всем шарде TALKVOLUME_SILENT_TALK - услышат рядом стоящие мобы
ActionSpeakStringByStrRef (Дествие Сказать фразу по номеру) void ActionSpeakStringByStrRef(int nStrRef, int nTalkVolume=TALKVOLUME_TALK)
Номера определены в так называемой Talk Table, или проще - в файле dialog.tlk. Если файл у вас оригинальный, то там все на английском, следовательно, функция почти бесполезна. Просмотреть содержимое Talk Table можно с помощью Neverwinter Nights Talk Table Viewer, взять которую можно на официальном сайте игры.
ActionStartConversation (Действие начать разговор - ОЧЕНЬ важная функция для тех, кто хочет наладить общение с неодушевленными предметами...) void ActionStartConversation(object oObjectToConverseWith, string sDialogResRef="", int bPrivateConversation=FALSE, int bPlayHello=TRUE)
object oObjectToConverseWith - задает с кем будет идти разговор (ну конечно с вами) string sDialogResRef - пишем в кавычках название разговорника =) Если это значение не указано, то будет использован прикрепленный к объекту диалог. int bPrivateConversation - приватный разговор (TRUE) или это слышат все (FALSE) int bPlayHello - когда начинаешь разговор скажи привет (TRUE) или тупо промолчи (FALSE)
ActionTakeItemх (Действие Взять вещь) void ActionTakeItem(object oItem, object oTakeFrom)
object oItem - сама вещь... которую берут object oTakeFrom - а это тот, у которого забирают, иными словами "разведем как НПС на вещичку oItem"... или наоборот, кому как взбредет в голову =)
ActionUnequipItem (Действие Вынуть из слота вещь - насильно вынимает из слота вещь, где бы она не лежала...) void ActionUnequipItem(object oItem)
object oItem - ну типа та вещь oItem, которую вынимают... функция например может снять броню, снять кольца... ну и т.д. без вашего ведома =))) опасайтесь гнусных скриптеров =)
ActionUnlockObject (Действие Отпереть объект - в смысле ключем, чтобы тот небыл заперт) void ActionUnlockObject(object oTarget)
object oTarget - объект oTarget, который мы унлокаем
int nFeat - сам фит... список этих фитов приводить сдесь не буду - их много и я замучаюсь... зайдите в тулсет, откройте создатель скриптов, ткните в константы и в поиске напишите "FEAT_"... object oTarget - а это типа на кого его использовать...
ActionUseSkill (Действие Использовать скилл - ну вы поняли, скилл это оотуда, где эмпатия, поиск, лоре и т.д.) void ActionUseSkill(int nSkill, object oTarget, int nSubSkill=0, object oItemUsed=OBJECT_INVALID )
int nSkill - сам скилл (список найдите в константах написав в поиске "SKILL_") object oTarget - объект, на что скилл использовать... int nSubSkill - что то типа подскил... список: SUBSKILL_EXAMINETRAP - изучить ловушку (показывает ее DC и некоторую другую информацию) SUBSKILL_FLAGTRAP - поставить флаг на ловушке (ее будут видеть все) SUBSKILL_RECOVERTRAP - снять ловушку (в случае успеха ловушка окажется у вас в инвентаре)
object oItemUsed - а это типа обжект, вместе с которым вы используете скилл... т.е. все его бонусы к скиллу учитываются тоже =)))
ActionUseTalentAtLocation (Действие Использования закрытого талента на локации) void ActionUseTalentAtLocation(talent tChosenTalent, location lTargetLocation)
talent tChosenTalent - типа сам талент (угадайте с трех раз ЧТО это...) location lTargetLocation - сама локация
ActionUseTalentOnObject (Действие использовать талент на объекте) void ActionUseTalentOnObject(talent tChosenTalent, object oTarget)...
talent tChosenTalent - кхм... Сам талент... object oTarget - сам обжект... =)
ActionWait (Действие Ждать - т.е. ничего не делать определенное кол-во секунд...) void ActionWait(float fSeconds)
float fSeconds - секунды (х.х)
Урра, на этом актионы мы прошли ВСЕ! И так, что мы научились делать? А мы научились заставлять объекты перемещатсья, двери закрываться, фиты использоваться и все в таком духе... Ждите продолжение захватывающего описания самых ненавязчивых функций тулсета... =)
Продолжаем... PS: сейчас нет времени это делать, так что возможны задержки с вылаживанием переводов,а если и будут выкладываться, то маленькими порциями =) как сейчас =) И так:
ActivatePortal (Активирует портал. Точнее переносит игрока на другой сервер) void ActivatePortal(object oTarget, string sIPaddress="", string sPassword="", string sWaypointTag="", int bSeemless=FALSE)
object oTarget - объект переноса (т.е. вы, но и может быть кто нить другой) string sIPaddress - IP адресс шарда, может быть задан как числовой "192.168.0.84", может как буквенный "www.bioware.com", можно указать порт "192.168.0.84:5121" или "www.bioware.com:5121" (все адреса взяты для примера, их вы меняете на свои =) ) string sPassword - пароль для входа на шард (не вы знаете форму, где нужно ввести адресс и пароль, вот это типа что то того) string sWaypointTag - тэг вейпоинта, где "приземлится" наш путешественник int bSeemless - TRUE - вы не увидите окна сообщения что вы переместились на другой шард.
Note: Портал не перенесет вашего персонажа (.bic)!
AddHenchman (Добавить хенчмена, т.е. того, кто будет с вами шататься по миру, иногда кастуя на вас лечение и тупа несясь на самых слабых монстров, когда вас убивают сильные ) void AddHenchman(object oMaster, object oHenchman=OBJECT_SELF)
object oMaster - типа глава отряда, тот, к кому присоеденяется Henchman object oHenchman - а это сам Henchman
AddJournalQuestEntry (Добавить квестовую запись в ваш журнал (ну или чей нить)) void AddJournalQuestEntry(string szPlotID, int nState, object oCreature, int
bAllPartyMembers=TRUE, int bAllPlayers=FALSE, int bAllowOverrideHigher=FALSE)
string szPlotID - это плот ID, который создается при создании записи в toolset's Journal Editor int nState - номер статейки, которую надо записать в ваш журнал, тоже найдете в toolset's Journal Editor object oCreature - каму добавится запись в журнал int bAllPartyMembers - если TRUE - запись добавится всем партийцам int bAllPlayers - если TRUE - запись добавится ВСЕМ в этом МИРЕ int bAllowOverrideHigher - если TRUE - вы сможете установить номер записи, меньшИй, чем текущий. То есть если номер текущей записи в квесте szPlotId - N, то с этой опцией вы сможете установить любой номер, меньший N. Это полезно в случае отката квеста на некоторое время назад, либо при множественном выборе номер, когда точно неизвестно, будет ли номер больше текущего, либо меньше.
AddToParty (Добавить в партию) void AddToParty(object oPC, object oPartyLeader)
object oPC - объект, который добавится в партию object oPartyLeader - пати лидер, или тот, к кому присоеденится PC.
Note: Эта функция работает только между двумя игроками. Присоединение к партии ДМа с некоторой вероятностью повесит сервер.
AdjustAlignment (Регулировка Анлаймента персонажа) void AdjustAlignment(object oSubject, int nAlignment, int nShift)
object oSubject - сам персонаж, чей анлаймент (еще называют его алигмент) мы будем регулировать int nAlignment - переделка анлаймента на корню (что тут установите, такой и будет): ALIGNMENT_LAWFUL ALIGNMENT_CHAOTIC ALIGNMENT_GOOD ALIGNMENT_EVIL (перечисленные константы меняют алаймент только по заданной шкале)
ALIGNMENT_ALL - меняет показатели всех шкал.
ALIGNMENT_NEUTRAL - изменяет алаймент по направлению к нейтральности. Например, если цель имеет 10 хаотик и 80 гуда, а изменение - 15 пунктов, то новый алаймент будет (10 + 15 = 25) в хаотик/лофул и (80 - 25 = 55) в эвил/гуд.
int nShift - количество пунктов, на которое требуется изменить алаймент.
AdjustReputation (Изменяет отношение oSourceFactionMember к oTarget) void AdjustReputation(object oTarget, object oSourceFactionMember, int nAdjustment)
object oTarget - цель изменения object oSourceFactionMember - объект, в глазах которого изменяется репутация int nAdjustment - кол-во пунктов, на которое повышается (понижается) отношение.
Note: Эта функция изменяет отношение всей группы (фракции), к которой принадлежит oSourceFactionMember.
AmbientSoundChangeDay (Смена фоновой музыки в определенной локации днем) void AmbientSoundChangeDay(object oArea, int nTrack)
object oArea - локация, в которой идет смена фоновой музыки int nTrack - номер трека, на который вы хотите сменить фоновую музыку
AmbientSoundChangeNight (Смена фоновой музыки в определенной локации ночью) void AmbientSoundChangeNight(object oArea, int nTrack)
object oArea - локация, в которой идет смена фоновой музыки int nTrack - номер трека, на который вы хотите сменить фоновую музыку
AmbientSoundPlay (Проиграть фоновую музыку в локации) void AmbientSoundPlay(object oArea)
object oArea - сама локация
AmbientSoundSetDayVolume (Изменить громкость фоновой музыки днем) void AmbientSoundSetDayVolume(object oArea, int nVolume)
object oArea - локация, где играет фоновая музыка int nVolume - громкость (от 0 до 100)
AmbientSoundSetNightVolume (Изменить громкость фоновой музыки ночью) void AmbientSoundSetNightVolume(object oArea, int nVolume)
object oArea - локация, где играет фоновая музыка int nVolume - громкость (от 0 до 100)
AmbientSoundStop (Останавливает воспроизведение фоновой музыки в определенной локации) void AmbientSoundStop(object oArea)
object oArea - сама локация
AngleToVector (Коневертировать дробную переменную в вектор) vector AngleToVector(float fAngle)
float fAngle - переменная для конвертации
ApplyEffectAtLocation (Применить эффект к указанной локации) void ApplyEffectAtLocation(int nDurationType, effect eEffect, location lLocation, float fDuration=0.0f)
int nDurationType - определяет, сколько этот эффект будет продолжаться : DURATION_TYPE_INSTANT - мгновенно DURATION_TYPE_PERMANENT - всегда DURATION_TYPE_TEMPORARY - временно effect eEffect - прмиеняемый эффект location lLocation - локация, на которую эффект будет прмиеняться float fDuration - длительность эффект (если в nDurationType стоит DURATION_TYPE_TEMPORARY)
ApplyEffectToObject (Прмиенить эффект уже к объекту) void ApplyEffectToObject(int nDurationType, effect eEffect, object oTarget, float fDuration=0.0f)
int nDurationType - определяет, сколько этот эффект будет продолжаться : DURATION_TYPE_INSTANT - мгновенно DURATION_TYPE_PERMANENT - всегда DURATION_TYPE_TEMPORARY - временно effect eEffect - прмиеняемый эффект object oTarget - объект, к оторому будет применяться эффект float fDuration - длительность эффект (если в nDurationType стоит DURATION_TYPE_TEMPORARY)
asin (Возвращает дробное значение арксинуса, если значение болье 1 или меньше -1 - то возвращается 0) float asin(float fValue)
float fValue - число, из которого извлекается арксинус
atan (Возвращает дробное значение арктангенса) float atan(float fValue)
float fValue - число, из которого будет извлекаться арктангенс
AssignCommand (Это функция для назначения вышеописанных Action функций не OBJECT_SELF объектам) void AssignCommand(object oActionSubject,action aActionToAssign)
object oActionSubject - объект, который будет ВЫПОЛНЯТЬ aActionToAssign action aActionToAssign - действие, которое будет выполнять oActionSubject
Описанные выше Action* функции выполняются только для OBJECT_SELF. В любом событии NPC используются обычные ActionMoveToObject() и т.д. А например в OnUsed плейсебла, ActionMoveToObject() должна будет заставить двигаться плейсебл. Для решения этой задачи и используется AssignCommand().
Например:
Код
// Стандартный скрипт x0_o2_use_chair // садит юзера на объект (стул, диван, кресло) void main() { object oChair = OBJECT_SELF; if (!GetIsObjectValid(GetSittingCreature(OBJECT_SELF))) { AssignCommand(GetLastUsedBy(), ActionSit(oChair)); } }
Итак, продолжаю переводить функции тулсета... Кстати, одно уточнение... В тулсете есть два вида функций - стандартные (script function) и определенные пользователем (user function). В игре существует довольно много user functions, созданных ребятами из BioWare для кампании, однако их с успехом можно использовать и в своих модулях. Я пока перевожу стандартные функции, которые вы можете видеть в Скрипт Эдиторе. Биоварские пользовательские функции находятся в инклудах.
Инклуды - своего рода библиотеки пользовательских функций. Обычно в них собраны функции по одному критерию (увидите ниже). Инклуды включаются в скрипт по средствам директивы #include. Обычно инклуды включают в самом начале скрипта, до первых инструкций, чтобы функции, определенные в инклудах можно было использовать в исполняемом скрипте. Инклуды не компилируются (т.к. нету исполняемой функции - main() или StartingCondition()). При компиляции неиспользуемые пользовательские функции пропускаются.
И еще - если вы хотите просмотреть содержимое инклудов, то выполните этот порядок действий: Откройте Скрипт Эдитор (Script Editor); Нажмите Ctrl+O - откроется окно, где вы можете выбрать скрипт для редактирования; Установите радиофлажек в выборе ресурсов на самую верхнюю позицию (верхняя - все скрипты, средняя - только ваши, нижняя - скрипты хак-пака); В поле Скрипт Нэйм (название скрипта) впишите "nw_i0_" (без кавычек) и выберите тот, который вам нужен.
P.S. Вы также можете создавать свои инклуды. Просто для их использования в самом начале вашего скрипта пропишите название вашей библиотеки функций: #include "название_вашей_базы_функций" Но это необходимо лишь в том случае, если вы написали около десятка (или больше) функций, которые можно логически объединить по одному критерию. Выносить две-три функции в инклуд не имеет смысла.
Note: Стандартные скрипты можно (а порой и нужно) изменять. Для этого просто сохраните измененный скрипт. Если изменения вам не понравились, а вы забыли что меняли - просто удалите этот скрипт (он будет удален только из вашего модуля). В этом случае снова будет использоваться стандартный скрипт (он берется напрямую из scripts.bif).
BeginConversation (Начать беседу) int BeginConversation(string sResRef="", object oObjectToDialog=OBJECT_INVALID)
string sResRef - пропишите здесь в кавычках название вашего дерева разговора (если не написать - запустится дефаулт разговор... какой - не известно) object oObjectToDialog - здесь указывается тот, с кем начинается разговор (если не указать - начнется разговор с тем, кто активировал скрипт)
BlackScreen (Черный Экран - это для ДМов извращенцев используется для пыток простых людей черным экраном за плохие поступки... хотя можно и использовать в синглах для эффектного телепорта (сначала темный экран, а когда он проявляется вы уже в другой части света... это можно увидеть в СоУ, когда выполняешь квест с кобольдами в таверне в самом первом городе, где нужно освободить повариху - там этот эффект хорошо можно разглядеть)) void BlackScreen(object oCreature)
object oCreature - бедный oCreature, на который будем юзать черный экран (кстати в комбинации с "открыть меню смерти" (где кнопки загрузить, выйти и респаун) получается интерестная вещь...)
BootPC (Забутить игрока - бутим, бутим, пока у того глаза на лоб не полезут... точнее выгоняем с сервера) void BootPC(object oPlayer)
object oPlayer - бедный подопытный игрок...
Note: Эта функция работает только в мультиплеере. Чтобы завершить модуль в сигле используйте EndGame().
ChangeFaction (Присоединяет oObjectToChangeFaction к фракции, к которой принадлежит oMemberOfFactionToJoin) void ChangeFaction(object oObjectToChangeFaction, object oMemberOfFactionToJoin)
object oObjectToChangeFaction - это тот, кто будет менять фракцию... object oMemberOfFactionToJoin - а это тот, к кому будут присоеденяться (точнее к чьей фракции будут присоеденяться)
Note: Эта функция работает только между двумя NPC.
ChangeToStandardFaction (Сменить фракцию на стандартную - тоже, что и выше, только используются стандартные фракции) void ChangeToStandardFaction(object oCreatureToChange, int nStandardFaction)
object oCreatureToChange - тот, кто будет менять фракцию int nStandardFaction - одна из стандартных фракций (список ниже): STANDARD_FACTION_COMMONER - коммонеры (или просто люди, которым на тебя параллельно) STANDARD_FACTION_DEFENDER - дефендеры (фракция защитников) STANDARD_FACTION_HOSTILE - хостайл (враждебная фракция) STANDARD_FACTION_MERCHANT - мерчанты (торговцы иными словами)
ClearAllActions (Функция очищает все действия, которые выполнялись объектом - очень полезная функция, когда по скрипту надо срочно переменить деятельность персонажа, а не ожидать своей очереди) void ClearAllActions(int nClearCombatState=FALSE)
int nClearCombatState - если FALSE, то ничего особенного, а если TRUE - то очищаются даже все действия во время битвы, сразу останавливается боевая музыка и появляется возможность отдыха
CopyItem (Скопировать вещь в указанный инвентарь, копирует все, включая сумки, но чтобы те в свою очередь были пустые, иначе копирование выдаст ошибку) object CopyItem(object oItem, object oTargetInventory=OBJECT_INVALID)
object oItem - вещь, которую надо скопировать object oTargetInventory - объект, в инвентарь которого будет копироваться вещь... если это место оставить пустым, то вещь скопируется туда же, где находится первоисточник
CopyObject (Копировать обьект, любой, в том числе и вещь... может копировать все, включая вас самих... если это вещь, то копирует в определенный инвентарь, если что то иное - в определенную локацию... кстати, можно скопировать объект так, что он создастся с новым тэгом) object CopyObject(object oSource, location locLocation, object oOwner = OBJECT_INVALID, string sNewTag = "")
object oSource - объект, который надо копировать location locLocation - местоположение, куда объект копируется object oOwner - владелец инвентаря(если копируемый объект - вещь), куда будет копироваться объект string sNewTag - новый тэг (ярлык), который будет дан копированному объекту
cos (Извлекает косинус из числа) float cos(float fValue)
float fValue - число, из которого извлекается косинус
CreateItemOnObject (Создает вещь в инвентаре объекта) object CreateItemOnObject(string sItemTemplate, object oTarget=OBJECT_SELF, int nStackSize=1)
string sItemTemplate - тэг создаваемого объекта (ярлык) object oTarget - объект, в инвентарь которого создается объект int nStackSize - размер стэка (наверно это для стрел, болтов и т.п.)
CreateObject (Просто и со вкусом - создать объект...) object CreateObject(int nObjectType, string sTemplate, location lLocation, int bUseAppearAnimation=FALSE, string sNewTag="")
int nObjectType - это определяет, чем является объект... выбираем из списка: OBJECT_TYPE_ITEM - объект является вещью OBJECT_TYPE_CREATURE - объектом является создание (живое существо) OBJECT_TYPE_PLACEABLE - объектом является плесейбел (ящики, сундуки, столбы, стулья и т.д.) OBJECT_TYPE_STORE - объектом является... является... является магазин (пока переводил написал три раза =) ) OBJECT_TYPE_WAYPOINT - объектом является вейпоинт (я например использую для пометки места смерти персонажа, чтобы при воскрешении его отправляло именно в то место)... P.S. Обязательно правильно укажите тип объекта!!! Bначе функция просто напросто не сработает!!! string sTemplate - тэг (ярлык) объекта, который мы хотим создать location lLocation - место, где мы создаем объект int bUseAppearAnimation - использование анимации... TRUE или FALSE string sNewTag - задаем созданному объекту новый тэг, если это нужно (я например задаю для вейпоинта имя умершего)
//Далее в функциях мы наблюдаем странные строки d10, d100 и т.д. //И так, представим "кубик" с 6 гранями. Это и будет d6. //С 10ю гранями - d10, со 100та гранями - d100. //Игра как бы "кидает кубик" с определенным числом граней, и возвращает то, что выпадет на "верхней" грани. //Функция представляется как: int d10(int nNumDice=1)
int nNumDice - это число раз, которое должен быть брошен кубик. Это НЕ умножение на выпавшее число на кубике. ПРИМЕР: int DC = d10(5);
В этом примере в переменную DC запишется сумма выпавших чисел на кубике, а бросков будет 5. Пр. первый бросок - 3, второй - 6, третий - 1, четвертый - 8, пятый - 4: функция вернет 3+6+1+8+4.
Прервемся и изучим еще несколько деталей из Тулсета. Все уже наверняка знают такие проверялки, как if, while, switch - case? Но некоторые не знают, как применять их в Тулсете... И так, этот краткий курс поможет вам понять, что где и как работает.
Начнем с IF. И так, для чего нужна эта проверка... А вот для чего. Иногда при создании квестов вам надо проверить, например, какой уровень у персонажа, или сколько у него золота, или вообще это воин или кто то еще? И если догадка подтверждается - выполняется то, что вам нужно, а если нет - или выполняется что то другое, или просто переходит к обработке след. функции... расмотрим на примере:
Код
void main() { object oPC = GetEnteringObject(); if (GetIsDM(oPC)) { ActionSpeakString("ДМ на шарде, ура ура ура!!!", TALKVOLUME_SHOUT) } }
Этот скрипт скажет в шаут, что на сервер зашел ДМ - т.е. в шауте буквально будет "[SERVER] ДМ на шарде, ура ура ура!!!" Функция определяет, что если зашедший (object oPC - GetEnteringObject() игрок ДМ (GetIsDM(oPC)) - то он скажет что мы задали между фигурных скобок после if. Но если же это будет НЕ ДМ - скрипте ничего не предпримет.
Дополним скрипт:
Цитата
void main() { object oPC = GetEnteringObject(); if (GetIsDM(oPC)) { ActionSpeakString("ДМ на шарде, ура ура ура!!!", TALKVOLUME_SHOUT) } else ActionSpeakString("Опять простой игрок, ну надо же...", TALKVOLUME_SHOUT) }
В этом случае если зашедший игрок НЕ ДМ скрипт скажет "Опять простой игрок, ну надо же..." в шаут. Вообще это можно разобрать так: IF(если) then (то-то), else(иначе) then (то-то).
Заметьте, что фигурные скобки можно и не ставить. В этом случае выполнится одна следующая инструкция. В описанном случае - ActionSpeakString("Опять простой игрок...")
Дополним скрипт:
Код
void main() { object oPC = GetEnteringObject();
if (GetIsDM(oPC)) { ActionSpeakString("ДМ на шарде, ура ура ура!!!", TALKVOLUME_SHOUT) } else if (GetIsPC(oPC)) { ActionSpeakString("Опять простой игрок, ну надо же...", TALKVOLUME_SHOUT) } else { ActionSpeakString("Гадость, это уже и не игрок, и не ДМ... ЧИТО ЭТО???", TALKVOLUME_SHOUT) } }
Здесь мы использовали такую структуру: IF(если) then (то-то), else(иначе) IF(если) then (то-то), else(иначе) then (то-то) Функция сначала смотри, зашел ли ДМ - если нет, смотрит, игрок ли это (GetIsPC(oPC)), и если и это неверно - говорит в шаут "Гадость, это уже и не игрок, и не ДМ... ЧИТО ЭТО???"
Этой проверкой можно проверить все, что может быть на персонаже, включая даже имя персонажа.
В Авроре существует один тернарный оператор (выполняет действия над 3 выражениями). Записывается он довольно просто, но с первого взгляда не понятно: (логическое_выражение) ? (выражение_1) : (выражение_2). Эта запись эквивалентна следующей: if (логическое_выражение == TRUE) { (выражение_1) } else { выражение_2) }
Ну например, вот такое выражение:
string sDatabase = "mydb"; object oPlayer = GetEnteringObject(); int nHitPoints = (GetLocalInt(GetModule(), GetName(oPlayer) + ".HitPoints")) ? GetLocalInt(GetModule(), GetName(oPlayer) + ".HitPoints") : GetCampaignInt(sDatabase, "HitPoints", oPlayer); Чтобы не сильно нагружать сервер, читая все время из базы данных, мы сначала проверяем, существует ли какое-нибудь значение в локальной переменной на уровне модуля. Если да - используем его, если нет - значит был рестарт, данные потерялись, используем информацию из базы данных. Это часть функции, которая восстанавливает ХП при перезаходе на сервер.
Далее while. Это цикл (loop) с начальным условием. Цикл будет выполняться до тех пор, пока условие истинно. Цикл может не выполнится ниразу. И так, пример, и вы поймете что к чему:
Что делает эта вещь... Короче, сначала берется самая первая вещь из инвентара (object oLootItem=GetFirstItemInInventory(oPC), потом функция while проверяет, находится ли эта вещь в инвентаре (while(GetIsObjectValid(oLootItem))), и если да, то выполняется то, что заключенно между фигурными скобками после while. Это зацилненная функция, так как она будет действовать, пока то что она проверяет будет верно (в конце она берет следуюoe. вещь из инвентаря oLootItem=GetNextItemInInventory(oPC); и опять идет проверка на ее наличие в инвентаре, и если она прошла успешно - опять выполняется то, что заключенно между фигурными скобками, и будет так до того момента, когда при проверке окажется, что вещи такой в инвентаре нет, и она прекратит работу). Кстати, эту функцию можно прервать насильно - в конце дописать "break;", и тогда эта функция напоминает что то типа IF.
Кроме того существует цикл с условием в конце тела. Разница в том, что этот цикл выполнится хотя бы один раз. do {
} while (condition);
В инструкциях предусмотрены следующие операторы && - логическое "И" || - логическое "ИЛИ" ! - логическое "НЕ"
Код
// объект игрок и ДМ (GetisPC() возвращает, является ли объект клиентом) if (GetIsPC(oPC) && GetIsDM(oPC)) { ActionSpeakString("ДМ на шарде, ура ура ура!!!", TALKVOLUME_SHOUT) } // объект игрок, но не ДМ else if (GetIsPC(oPC) && !GetIsDM(oPC) { <...> }
Фух, case разберем потом =) Следите за обновлениями! Мне кажется грядет полный туториал по тулсету на русском... =))) Пока это все =) И не забывайте при создании скрипта после каждой функции ставить ";"
DecrementRemainingFeatUses (Уменьшает количество использований фита nFeat на единицу) void DecrementRemainingFeatUses(object oCreature, int nFeat)
object oCreature - само существо, у которого урезается количество использований определенного фита int nFeat - сам фит, чтобы просмотреть весь список фитов нажмите на панеле, которая над списком функций, кнопку "Константы" и там введите "FEAT_" (без кавычек)
DecrementRemainingSpellUses (Уменьшает количество использований спелла nSpell на единицу) void DecrementRemainingSpellUses(object oCreature, int nSpell)
object oCreature - само существо, у которого происходит уменьшение использований определенного заклинания int nSpell - заклинание, выбераете в списке констант, введя в поле поиска "SPELL_"
DelayCommand (задержка команды на нное кол-во секунд, очень важная функция, даже можно сказать - одна из самых наиважнейших =) например вам нужно, чтобы дверь закрылась сама собой через несколько секунд, тогда этот скрипт то что вам надо) void DelayCommand(float fSeconds, action aActionToDelay)
float fSeconds - кол-во секунд, на которое задерживается исполнение определенной комманды action aActionToDelay - здесь вы вносите тот актион, который должен произойти после того, как пройдет fSeconds секунд...
DeleteCampaignVariable (Удаляет ЛЮБУЮ переменную базы данных не зависимо от типа переменной) void DeleteCampaignVariable(string sCampaignName, string sVarName, object oPlayer = OBJECT_INVALID)
string sCampaignName - имя кампании string sVarName - имя переменной (максимальная длина - 32 символа) object oPlayer - ID игрока, у которого удаляется переменная (ID составляется из имени аккаунта + имя чара без дополнительных разделителей. Максимальная длина - 32 символа)
Note: Эта функция помечает данные как удаленные, но не удаляет их. Размер базы данных при использовании этой функции не уменьшается. Данные отмеченные для удаления отмечаются звездочкой (*). Для очищения баз данных под Windows версией нужно использовать прилагаемую утилиту datapack.exe (в папке utils).
Далее идут удаления переменных, и я только буду указывать значение каждой функции, так как доп. параметры у них индеетичны:
object oDestroy - объект для уничтожения float fDelay - через сколько секунд объект дестроится
DoDoorAction (Исполнить дейтсвие двери - т.е. то, что мог бы сделать игрок...) void DoDoorAction(object oTargetDoor, int nDoorAction)
object oTargetDoor - сама дверь int nDoorAction - а это действия, которые делаются с дверью: DOOR_ACTION_BASH DOOR_ACTION_IGNORE DOOR_ACTION_KNOCK DOOR_ACTION_OPEN - открыть DOOR_ACTION_UNLOCK - снять замок
DoPlaceableObjectAction (Исполнить дейтсвие плесейбла) void DoPlaceableObjectAction(object oPlaceable, int nPlaceableAction)
object oPlaceable - сам объект плесейбл int nPlaceableAction - выбираем из списка: PLACEABLE_ACTION_BASH PLACEABLE_ACTION_KNOCK PLACEABLE_ACTION_UNLOCK - снять замок PLACEABLE_ACTION_USE - использование
DoSinglePlayerAutoSave (Автосейв в СИНГЛЕ!!!) void DoSinglePlayerAutoSave()
Ну чтож, вот мы и подошли к эффектам. Ждите, когда у меня найдутся силы для перевода, и я выложу переводы всех эффектов включая примеры их использования на практике.
Итак, мы подошли к эффектам. Эффект - это что-то, что случается с персонашем, вещью или чем нить еще, например смерть, излечение, нанос урона, визуальные эффекты, эффекты заклинаний...(Хм....странное описание сущности эффектов. Ну да ладно. Следует однако помнить, что заклинания строятся на эффектах, а не наоборот.)
Для использования эффектов, их нужно создать. Создание экземлпяра эффекта: effect eCustomEffect = <конструктор_нужного_эффекта>;
Для использования эффекта нужна следующая функция: ApplyEffectAtLocation или ApplyEffectToObject.
Если вы не помните их - вот вам напоминалка:
ApplyEffectAtLocation (Применить эффект к указанной локации) void ApplyEffectAtLocation(int nDurationType, effect eEffect, location lLocation, float fDuration=0.0f)
int nDurationType - определяет, сколько этот эффект будет продолжаться : DURATION_TYPE_INSTANT - мгновенно DURATION_TYPE_PERMANENT - всегда DURATION_TYPE_TEMPORARY - временно effect eEffect - прмиеняемый эффект location lLocation - локация, на которую эффект будет прмиеняться float fDuration - длительность эффект (если в nDurationType стоит DURATION_TYPE_TEMPORARY)
ApplyEffectToObject (Применить эффект уже к объекту) void ApplyEffectToObject(int nDurationType, effect eEffect, object oTarget, float fDuration=0.0f)
int nDurationType - определяет, сколько этот эффект будет продолжаться : DURATION_TYPE_INSTANT - мгновенно DURATION_TYPE_PERMANENT - всегда DURATION_TYPE_TEMPORARY - временно effect eEffect - прмиеняемый эффект object oTarget - объект, к оторому будет применяться эффект float fDuration - длительность эффект (если в nDurationType стоит DURATION_TYPE_TEMPORARY)
И так, начинаем описание эффектов по порядку...
EffectAbilityDecrease (Эффект уменьшения определенной характеристики персонажа) effect EffectAbilityDecrease(int nAbility, int nModifyBy)
int nAbility - выбираем характеристику из списка ниже: ABILITY_CHARISMA - харизма персонажа ABILITY_CONSTITUTION - конституция персонажа ABILITY_DEXTERITY - ловкость ABILITY_INTELLIGENCE - интелект (куда уж без него) ABILITY_STRENGTH - сила (она и в африке стренч) ABILITY_WISDOM - виздом (упс, мудрость... =) ) int nModifyBy - здесь пишите число, на которое будет уменьшаться выбранная характеристика
EffectAbilityIncrease (Противоположная предыдущей функции... эта функция наоборот УВЕЛИЧИВАЕТ выбранную характеристику) effect EffectAbilityIncrease(int nAbilityToIncrease, int nModifyBy)
int nAbilityToIncrease - выбираем из списка: ABILITY_CHARISMA - харизма персонажа ABILITY_CONSTITUTION - конституция персонажа ABILITY_DEXTERITY - ловкость ABILITY_INTELLIGENCE - интелект (куда уж без него) ABILITY_STRENGTH - сила (она и в африке стренч) ABILITY_WISDOM - виздом (упс, мудрость... =) ) int nModifyBy - здесь пишите число, на которое будет увеличиваться выбранная характеристика
EffectACDecrease (Эффект понижения определенного АС для определенного вида атаки) effect EffectACDecrease(int nValue, int nModifyType=AC_DODGE_BONUS, int nDamageType=AC_VS_DAMAGE_TYPE_ALL)
int nValue - число, на которое понижается АС int nModifyType - вид АС (если оставить AC_DODGE_BONUS - то действует на все типы) выбираем из списка: AC_ARMOUR_ENCHANTMENT_BONUS AC_DEFLECTION_BONUS AC_NATURAL_BONUS AC_SHIELD_ENCHANTMENT_BONUS int nDamageType - тип повреждения (если оставить AC_VS_DAMAGE_TYPE_ALL - действует на все повреждения): DAMAGE_TYPE_ACID DAMAGE_TYPE_BLUDGEONING DAMAGE_TYPE_COLD DAMAGE_TYPE_DIVINE DAMAGE_TYPE_ELECTRICAL DAMAGE_TYPE_FIRE DAMAGE_TYPE_MAGICAL DAMAGE_TYPE_NEGATIVE DAMAGE_TYPE_PIERCING DAMAGE_TYPE_POSITIVE DAMAGE_TYPE_SLASHING DAMAGE_TYPE_SONIC
EffectACIncrease (УВЕЛИЧЕНИЯ определенного типа АС для определенного типа повреждения) effect EffectACIncrease(int nValue, int nModifyType=AC_DODGE_BONUS, int nDamageType=AC_VS_DAMAGE_TYPE_ALL)
int nValue - число, на которое повышается АС int nModifyType - вид АС (если оставить AC_DODGE_BONUS - то действует на все типы) выбираем из списка: AC_ARMOUR_ENCHANTMENT_BONUS AC_DEFLECTION_BONUS AC_NATURAL_BONUS AC_SHIELD_ENCHANTMENT_BONUS int nDamageType - тип повреждения (если оставить AC_VS_DAMAGE_TYPE_ALL - действует на все повреждения): DAMAGE_TYPE_ACID DAMAGE_TYPE_BLUDGEONING DAMAGE_TYPE_COLD DAMAGE_TYPE_DIVINE DAMAGE_TYPE_ELECTRICAL DAMAGE_TYPE_FIRE DAMAGE_TYPE_MAGICAL DAMAGE_TYPE_NEGATIVE DAMAGE_TYPE_PIERCING DAMAGE_TYPE_POSITIVE DAMAGE_TYPE_SLASHING DAMAGE_TYPE_SONIC
EffectAppear() - конструктор эффекта "Появления". Видели когда-нибудь мобов-"парашютистов"? Когда они как бы сваливаются с неба. Вот это и есть EffectAppear(). Из вариантов прикладного использования - любые летающие существа, например, драконы. EffectAppear создает довольно зрелищный вариант приземления дракона. "Обратный" если так можно выразится эффект - EffectDisappear() - существо наоборот взлетает к небу (и уничтожается). effect EffectAppear();
EffectAreaOfEffect() - конструктор эффекта - создает область действия эффекта. effect EffectAreaOfEffect(int nAreaEffectId, string sOnEnterScript="", string sHeartbeatScript="", string sOnExitScript="") int nAreaEffectId - AOE_* константа string sOnEnterScript - скрипт, который выполнится при входе любого объекта в область действия эффекта string sHeartbeatScript - исполняемый хиртбит-скрипт. Т.е. он будет выполняться каждые 6 секунд пока существует область эффекта. string sOnExitScript - скрипт, который выполнится при выходе объекта из области дейсвтия эффекта. Если строковые параметры не указаны (null-string) тогда будет использован стандартный скрипт. AOE используется исключительно для спеллов. Мне ниразу не пришлось столкнуться с использованием этой функции. Проблема этой функции в том, что одна единственная константа определяет и внешний вид этой области эффекта, и размер, да и все остальноетоже. Для тех, кто интересуется - константы указывают на строку данных в vfx_persistent.2da. Структуру опишу чуть позже.
EffectAttackDecrease (Эффект понижения атаки - понижает атаку выбранного существа) effect EffectAttackDecrease(int nPenalty, int nModifierType=ATTACK_BONUS_MISC)
int nPenalty - пенальти (число, на которое понизится атака) int nModifierType - вид атаки (наверно), выбираем из списка: ATTACK_BONUS_MISC - смешанная ATTACK_BONUS_OFFHAND - хм... ждем правки ATTACK_BONUS_ONHAND - тоже самое - ждем правки
EffectAttackIncrease (Эффект увеличения атаки - увеличивает атаку выбранного существа) effect EffectAttackIncrease(int nBonus, int nModifierType=ATTACK_BONUS_MISC)
int nBonus - бонус к атаке (число, на которое увеличивается атака) int nModifierType - вид атаки (наверно), выбираем из списка: ATTACK_BONUS_MISC - модифицирует общий рейтинг атаки ATTACK_BONUS_OFFHAND - тоже, но для оффа (левой руки, офф хенд) ATTACK_BONUS_ONHAND - тоже, но для прайма (правая рука, главное оружие)
EffectBeam (Эффект луча - выбранный объект испускает луч, направленнвй в определенную цель) effect EffectBeam(int nBeamVisualEffect, object oEffector, int nBodyPart, int bMissEffect=FALSE)
int nBeamVisualEffect - вид луча, выбираем из списка ниже: VFX_BEAM_COLD VFX_BEAM_EVIL VFX_BEAM_FIRE VFX_BEAM_FIRE_LASH VFX_BEAM_HOLY VFX_BEAM_LIGHTNING VFX_BEAM_MIND VFX_BEAM_ODD VFX_BEAM_SILENT_COLD VFX_BEAM_SILENT_EVIL VFX_BEAM_SILENT_FIRE VFX_BEAM_SILENT_HOLY VFX_BEAM_SILENT_LIGHTNING VFX_BEAM_SILENT_MIND VFX_BEAM_SILENT_ODD object oEffector - объект, испускающий луч int nBodyPart - что к чему, выбираем из списка: BODY_NODE_CHEST BODY_NODE_HAND BODY_NODE_MONSTER_0 BODY_NODE_MONSTER_1 BODY_NODE_MONSTER_2 BODY_NODE_MONSTER_3 BODY_NODE_MONSTER_4 BODY_NODE_MONSTER_5 BODY_NODE_MONSTER_6 BODY_NODE_MONSTER_7 BODY_NODE_MONSTER_8 BODY_NODE_MONSTER_9 int bMissEffect - если стоит FALSE - ничего не изменяется, если стоит TRUE - луч как бы "промахивается" мимо цели
EffectConcealment (Эффект скрытия - скрывает цель от атакующего на n-ое количество % (этот эффект можно наблюдать при
наложении гост визаж, или импрув инвизибла). Консилмент создает Miss Chance НА объекте.) effect EffectConcealment(int nPercentage, int nMissType=MISS_CHANCE_TYPE_NORMAL)
int nPercentage - сам процент (от 1 до 100) int nMissType - вид промаха: MISS_CHANCE_TYPE_NORMAL - смешанный MISS_CHANCE_TYPE_VS_MELEE - рукопашный бой MISS_CHANCE_TYPE_VS_RANGED - дальний бой
EffectCurse (Эффект проклятия) effect EffectCurse(int nStrMod=1, int nDexMod=1, int nConMod=1, int nIntMod=1, int nWisMod=1, int nChaMod=1)
int nStrMod - уменьшает силу на n-ое количество пунктов int nDexMod - уменьшает ловкость на n-ое количество пунктов int nConMod - уменьшает конституцию на n-ое количество пунктов int nIntMod - уменьшает интелект на n-ое количество пунктов int nWisMod - уменьшает мудрость на n-ое количество пунктов int nChaMod - уменьшает харизму на n-ое количество пунктов
EffectCutsceneDominated (Эффект доминорования - гарантированно доминирует цель. Введено для создания cut-scenes - игровых
"мультиков" - напр. арест чара - или арест непися на глазах чара ну и все в этом духе.) effect EffectCutsceneDominated()
EffectCutsceneParalyze (Эффект парализации - гарантированно парализует цель. Для тех же целей, что и выше) effect EffectCutsceneParalyze()
EffectDamage (Наиболее часто используемый эффект из списка эффектов - наносит урон цели) effect EffectDamage(int nDamageAmount, int nDamageType=DAMAGE_TYPE_MAGICAL, int nDamagePower=DAMAGE_POWER_NORMAL)
int nDamageAmount - сам урон (число) int nDamageType - вид урона, выбираем из списка: DAMAGE_TYPE_MAGICAL - магический вид DAMAGE_TYPE_ACID - кислота DAMAGE_TYPE_BLUDGEONING - тупое оружие (булавы, вархамеры) DAMAGE_TYPE_COLD - холод DAMAGE_TYPE_DIVINE - дивайн урон - божественный вред (напр., спелл - Sunbeam) DAMAGE_TYPE_ELECTRICAL - электричество DAMAGE_TYPE_FIRE - огонь DAMAGE_TYPE_NEGATIVE - негатив DAMAGE_TYPE_PIERCING - колющее DAMAGE_TYPE_SLASHING - слэш DAMAGE_TYPE_SONIC - звук int nDamagePower - сила удара: DAMAGE_POWER_ENERGY - энергия DAMAGE_POWER_NORMAL - номальный DAMAGE_POWER_PLUS_FIVE - как оружие +5 DAMAGE_POWER_PLUS_FOUR - как оружие +4 DAMAGE_POWER_PLUS_ONE - как оружие +1 DAMAGE_POWER_PLUS_TWO - как оружиме +2 DAMAGE_POWER_PLUS_THREE - как оружие +3
Здрасти всем, кто следит за этой темой и использует ее как свой проводник в мир тулсета =) Это я так, к слову... Чтож, на чем мы остановились в прошлый раз? Ах да... ЗЫ: напоминаю, что я в последствии выкладываю исправленные версии переводов, так что смотрите предыдущие посты - вдруг что да изменилось =)
Сразу приведу список всех видов урона (констант, к которым будем обращаться еще несколько раз): DAMAGE_TYPE_MAGICAL - магический вид DAMAGE_TYPE_ACID - кислота DAMAGE_TYPE_BLUDGEONING - тупое оружие (булавы, вархамеры) DAMAGE_TYPE_COLD - холод DAMAGE_TYPE_DIVINE - дивайн урон - божественный вред (напр., спелл - Sunbeam) DAMAGE_TYPE_ELECTRICAL - электричество DAMAGE_TYPE_FIRE - огонь DAMAGE_TYPE_NEGATIVE - негатив DAMAGE_TYPE_PIERCING - колющее DAMAGE_TYPE_SLASHING - слэш DAMAGE_TYPE_SONIC - звук
//EffectDamageDecrease (Эффект снижения определенного урона (например этот эффект используется при камнекоже... вроде он)) effect EffectDamageDecrease(int nPenalty, int nDamageType=DAMAGE_TYPE_MAGICAL)
int nPenalty - число, на которое снижается урон int nDamageType - вид урона, который будем понижать (DAMAGE_TYPE_ - смотрите вверху этого поста)
//EffectDamageIncrease (Эффект усиления определенного урона) effect EffectDamageIncrease(int nBonus, int nDamageType=DAMAGE_TYPE_MAGICAL)
int nBonus - число, которое будет добавляться к урону int nDamageType - вид урона, который будем увеличивать (DAMAGE_TYPE_ - смотрите вверху этого поста)
//EffectDamageImmunityDecrease (Эффект понижения иммунитета у определенному виду урона) effect EffectDamageImmunityDecrease(int nDamageType, int nPercentImmunity)
int nDamageType - вид урона (DAMAGE_TYPE_ - смотрите вверху этого поста) int nPercentImmunity - число от 1 до 100 в % (сам знак % не ставится), на сколько понижается иммунитет
//EffectDamageImmunityIncrease (Эффект повышения иммунитета у определенному виду урона) effect EffectDamageImmunityIncrease(int nDamageType, int nPercentImmunity)
int nDamageType - вид урона (DAMAGE_TYPE_ - смотрите вверху этого поста) int nPercentImmunity - число от 1 до 100 в % (сам знак % не ставится), на сколько повышается иммунитет
//EffectDamageReduction (Эффект "впитывания" урона) effect EffectDamageReduction(int nAmount, int nDamagePower, int nLimit=0)
int nAmount - число, которое при ударе впитает в себя этот эффект int nDamagePower - сила урона, который будет впитываться: DAMAGE_POWER_ENERGY - энергия DAMAGE_POWER_NORMAL - номальный DAMAGE_POWER_PLUS_FIVE - как оружие +5 DAMAGE_POWER_PLUS_FOUR - как оружие +4 DAMAGE_POWER_PLUS_ONE - как оружие +1 DAMAGE_POWER_PLUS_TWO - как оружиме +2 DAMAGE_POWER_PLUS_THREE - как оружие +3 int nLimit - лимит (сколько всего урона впитает, после чего исчезнет - если стоит 0, то бесконечно)
//EffectDamageResistance (Эффект сопротивления определенному виду урона - работает наподибии предыдущей функции, только для вида урона) effect EffectDamageResistance(int nDamageType, int nAmount, int nLimit=0)
int nDamageType - вид урона (DAMAGE_TYPE_ - смотрите вверху этого поста) int nAmount - число, которое при ударе впитает в себя этот эффект int nLimit - лимит (сколько всего урона впитает, после чего исчезнет - если стоит 0, то бесконечно)
//EffectDamageShield (Эффект... хм, как я понял - тебя ударили - удар в ответку Расчитывается урон так: nDamageAmount + nRandomAmount) effect EffectDamageShield(int nDamageAmount, int nRandomAmount, int nDamageType)
int nDamageAmount - число урона, которое будет в ответку наносится атакующему int nRandomAmount - рэндомная величина: DAMAGE_BONUS_1 DAMAGE_BONUS_2 DAMAGE_BONUS_3 DAMAGE_BONUS_4 DAMAGE_BONUS_5 DAMAGE_BONUS_1d4 DAMAGE_BONUS_1d6 DAMAGE_BONUS_1d8 DAMAGE_BONUS_1d10 DAMAGE_BONUS_2d6 int nDamageType - вид урона (DAMAGE_TYPE_ - смотрите вверху этого поста)
//EffectDeath (Хаха, вот мы и пришли к моему самому обожаемому эффекту - эффекту СМЕРТИ!!! хахаха) effect EffectDeath(int nSpectacularDeath=FALSE, int nDisplayFeedback=TRUE)
int nSpectacularDeath - если стоит TRUE - существо не просто умрет, а его ЭКСТРООРДИНАРНО рванет в стороны =)... ежели FALSE - он кинет копыта вполне привычным для нас образом - вперед лапками int nDisplayFeedback - эээ... нууу... короче, угадайте, я не наю для чего ваще это =) Ждем Рико =)
//EffectDisappear (Читаем в предыдущем посте на самом верху - эффект EffectAppear(), это все делает наоборот, при этом когда эффект "взлетает" - он дестроится...) effect EffectDisappear()
//EffectDisappearAppear (Заставляет объект летать - хм... у меня идея, почему бы не вставить этот эффект в свойства OnUserDefined как у фазовых пауков для драконов - так сказать, крылышками дркончик бяк бяк бяк и добякал до тебя... Ах да, само описание эффекта - короче объект взлетает, но вместо того чтобы дестроится приземляется в lLocation) effect EffectDisappearAppear(location lLocation)
location lLocation - месторасположение, куда "перелетает" объект...
int nDiseaseType - сама болезнь, вот вам списочек (лекарства сами исчите =)): DISEASE_BLINDING_SICKNESS DISEASE_BURROW_MAGGOTS DISEASE_CACKLE_FEVER DISEASE_DEMON_FEVER DISEASE_DEVIL_CHILLS DISEASE_DREAD_BLISTERS DISEASE_FILTH_FEVER DISEASE_GHOUL_ROT DISEASE_MINDFIRE DISEASE_MUMMY_ROT DISEASE_RED_ACHE DISEASE_RED_SLAAD_EGGS DISEASE_SHAKES DISEASE_SLIMY_DOOM DISEASE_SOLDIER_SHAKES DISEASE_VERMIN_MADNESS DISEASE_ZOMBIE_CREEP
//EffectDispelMagicAll (Диспелл всего, что есть на цели, в зависимости от уровня диспелящего) effect EffectDispelMagicAll(int nCasterLevel)
int nCasterLevel - уровень диспелящего (не цели)
//EffectDispelMagicBest (Диспел ЛУЧШЕГо заклятия с цели) effect EffectDispelMagicBest(int nCasterLevel)
int nCasterLevel - уровень диспелящего (не цели)
//EffectDominated (Эффект доминирования - вот на него действуют все резисты и т.д.) effect EffectDominated()
//EffectEntangle (Эффект "паутины" - замедляет действия, при этом идет -2 к атаке и -4 к AC) effect EffectEntangle()
//EffectEthereal (Типа что к чему - ждем комментариев нашего главного исправителя) effect EffectEthereal()
этот эффект ссылается на
//EffectSanctuar (Так что пусть заодно и это =)) effect EffectSanctuary(int nDifficultyClass)
//EffectFrightened (Эффект испугания - "запугивает" цель до полуобморочного состояния, и она, эта цель, шляется где попало, шугается всех и орет благим матом...) effect EffectFrightened()
//EffectHaste (Манчи, хеллоу, эт оваш любимый эффект (как и мой собственно) - УСКОРЕНИЕ!!! =) ) effect EffectHaste()
int nDamageToHeal - типа, сколько вылечить (число, без дробной точки)
//EffectHitPointChangeWhenDying ("Эфри тайм" - каждый раз после смерти вы восстанавливаете хиты (или уменьшаете) в зависимости от настроек этой функции) effect EffectHitPointChangeWhenDying(float fHitPointChangePerRound)
float fHitPointChangePerRound - число (минус, плюс, 0... т.е. и -10, и 10, 0 сработают =))
Ну вот... На сегодня хватит, как вы думаете? PS: как всегда строчка внизу:
Вот я и опять, как всегда, выкладываю порцию переводов... Скоро, как вы видите, переведутся все эффекты... Так что смотрим и познаваем, а возможно потом и используем... И-так:
int nImmunityType - в списке констант можно поискать на IMMUNITY_TYPE_ , но я всеже приведу некоторый список констант прямо здесь: IMMUNITY_TYPE_DEATH - иммунитет к смерти IMMUNITY_TYPE_KNOCKDOWN - иммунитет к сбиванию с ног IMMUNITY_TYPE_DISEASE - иммунитет к болезни... короче, введите в строке поиска IMMUNITY_TYPE_ и вы получите весь список констант иммунитетов =)
//EffectInvisibility (Эффект невидимости, тиап которой вы задаете в параметрах эффекта) effect EffectInvisibility(int nInvisibilityType)
int nInvisibilityType - сам тип невидимости: INVISIBILITY_TYPE_DARKNESS - как будто на вас смотрит ослепленный человек INVISIBILITY_TYPE_IMPROVED - усилинная невидимость (с наложением 50% скрытности) INVISIBILITY_TYPE_NORMAL - простая невидимость
//EffectKnockdown (Эффект сбивания с ног - действует 3 секунды: 1 на падание, 1 на лежание, 1 на вставание) effect EffectKnockdown()
//EffectLinkEffects (Связывание эффектов - если будет наложен один эффект, то будет наложен и связанный... но если же от первого у цели имеется иммунитет - то и второе тоже не сработает) effect EffectLinkEffects(effect eChildEffect, effect eParentEffect)
effect eChildEffect - привязанный эффект effect eParentEffect - эффект, к которому привязали другой эффект - при его срабатывании срабатыват и привязанный эффект
//EffectMissChance (Эффект "Шанс промаха") effect EffectMissChance(int nPercentage, int nMissChanceType=MISS_CHANCE_TYPE_NORMAL)
int nPercentage - здесь устанавливаем сам шанс промаха (в %) от 1 до 100 (если же установить меньше 1 или больше 100 эффект вернет переменную EFFECT_TYPE_INVALIDEFFECT, и эффект не сработает) int nMissChanceType - тип шанса промаха: MISS_CHANCE_TYPE_NORMAL - стандартный шанс промаха MISS_CHANCE_TYPE_VS_MELEE - только для оружия рукопашного боя MISS_CHANCE_TYPE_VS_RANGED - только для оружия дального боя
//EffectModifyAttacks (Этот эффект добавляет цели несколько дополнительных атак - максимум 5) effect EffectModifyAttacks(int nAttacks)
int nAttacks - число от 1 до 5, характеризующее количество добавляемых атак...
//EffectMovementSpeedDecrease (Эффект замедления скорости передвижения цели) effect EffectMovementSpeedDecrease(int nPercentChange)
int nPercentChange - число от 0 до 99: 0 - ничего не изменяется 50 - цель замедляется на 50% 99 - цель не может двигаться вообще
//EffectMovementSpeedIncrease (А этот эффект наоборот увеличивает скорость передвижения цели) effect EffectMovementSpeedIncrease(int nPercentChange)
int nPercentChange число от 0 до 99: 0 - ничего не изменяется 50 - на 50% быстрее 99 - скорость передвижения увеличивается в 2 раза
//EffectNegativeLevel (Эффект негативного понижения уровня) effect EffectNegativeLevel(int nNumLevels, int bHPBonus=FALSE)
int nNumLevels - число уровней (вплоть до 100) int bHPBonus - незнаю, для чего эта переменная, так что ставим FALSE как дефолт
//EffectParalyze (Эффект парализации - на этот 'aarn действуют все спасы и иммуны) effect EffectParalyze()
//EffectPetrify (Эффект "окаменения" - цель обездвиживается и превращается в камень) effect EffectPetrify()
int nPoisonType - тип отравы (введите в строке поиска списка констант POISON_ и выберите нужный вам яд)
//EffectPolymorph (Эффект полиморфа - изменяет внешность, а так же все характеристики цели) effect EffectPolymorph(int nPolymorphSelection)
int nPolymorphSelection - переменная полиморфа (введите в строке поиска списка констант POLYMORPH_TYPE_ и выберите нужный вам полиморф)
//EffectRegenerate (Эффект регенерации - восстановление определенного кол-ва жизней в определенный промежуток времени) effect EffectRegenerate(int nAmount, float fIntervalSeconds)
int nAmount - количество жизней, которое будет восстанавливаться за определенный интервал времени float fIntervalSeconds - сам интервал (так как это float - здесь используем число с плавающей точкой)
//EffectResurrection (Эффект воскрешения - тоже очень нужный эффект =) ) effect EffectResurrection()
//EffectSanctuary (Эффект святости... эээ, кто нибуть, объясните мне зачем он нужен?) effect EffectSanctuary(int nDifficultyClass)
int nDifficultyClass - уровень святости (число от 1 и выше, но никак не 0 и ниже)
Ну чтож, на сегодня хватит... В скором будущем я выложу последние описание эффектов тулсета, и мы перейдем к оставшимся функциям...
И так, наконец я продолжаю выкладывать переводы функций тулсета... Вы спросите - а что так долго? Отвечаю - просто последние дни каникул, море, обильный отдых - небыло времени успокоиться и присесть за переводы... А дела с гильдией - так это вообще вытягивает все нервы и силы... Ну да ладно, продолжим:
//EffectSavingThrowDecrease (Эффект понижения спасительных бросков определенного типа) effect EffectSavingThrowDecrease(int nSave, int nValue, int nSaveType=SAVING_THROW_TYPE_ALL)
int nSave - тип спасительного броска (вилл, форта или рефлекс): SAVING_THROW_FORT SAVING_THROW_REFLEX SAVING_THROW_WILL SAVING_THROW_ALL int nValue - число, на которое понизится спасительный бросок int nSaveType - тип спасительного броска (определенный): SAVING_THROW_TYPE_ALL SAVING_THROW_TYPE_ACID SAVING_THROW_TYPE_CHAOS SAVING_THROW_TYPE_COLD SAVING_THROW_TYPE_DEATH SAVING_THROW_TYPE_DISEASE SAVING_THROW_TYPE_DIVINE SAVING_THROW_TYPE_ELECTRICITY SAVING_THROW_TYPE_EVIL SAVING_THROW_TYPE_FEAR SAVING_THROW_TYPE_FIRE SAVING_THROW_TYPE_GOOD SAVING_THROW_TYPE_LAW SAVING_THROW_TYPE_MIND_SPELLS SAVING_THROW_TYPE_NEGATIVE SAVING_THROW_TYPE_NONE SAVING_THROW_TYPE_POISON SAVING_THROW_TYPE_POSITIVE SAVING_THROW_TYPE_SONIC SAVING_THROW_TYPE_SPELL SAVING_THROW_TYPE_TRAP
//EffectSavingThrowIncrease (Эффект увеличения спасительных бросков определенного типа) effect EffectSavingThrowIncrease(int nSave, int nValue, int nSaveType=SAVING_THROW_TYPE_ALL)
int nSave - тип спасительного броска (вилл, форта или рефлекс): SAVING_THROW_FORT SAVING_THROW_REFLEX SAVING_THROW_WILL SAVING_THROW_ALL int nValue - число, на которое повысится спасительный бросок int nSaveType - тип спасительного броска (определенный): SAVING_THROW_TYPE_ALL SAVING_THROW_TYPE_ACID SAVING_THROW_TYPE_CHAOS SAVING_THROW_TYPE_COLD SAVING_THROW_TYPE_DEATH SAVING_THROW_TYPE_DISEASE SAVING_THROW_TYPE_DIVINE SAVING_THROW_TYPE_ELECTRICITY SAVING_THROW_TYPE_EVIL SAVING_THROW_TYPE_FEAR SAVING_THROW_TYPE_FIRE SAVING_THROW_TYPE_GOOD SAVING_THROW_TYPE_LAW SAVING_THROW_TYPE_MIND_SPELLS SAVING_THROW_TYPE_NEGATIVE SAVING_THROW_TYPE_NONE SAVING_THROW_TYPE_POISON SAVING_THROW_TYPE_POSITIVE SAVING_THROW_TYPE_SONIC SAVING_THROW_TYPE_SPELL SAVING_THROW_TYPE_TRAP
//EffectSilence (Эффект тишины - "затыкает" цель, которая в это состоянии не может кастовать заклинания со звуковой частью) effect EffectSilence()
//EffectSkillDecrease (Эффект понижения скилла) effect EffectSkillDecrease(int nSkill, int nValue)
int nSkill - сам скилл (введите в поле поиска констант Skill_ ) int nValue - число, на которое понижается скилл
//EffectSkillIncrease (Эффект повышения скилла) effect EffectSkillIncrease(int nSkill, int nValue)
int nSkill - сам скилл (введите в поле поиска констант Skill_ ) int nValue - число, на которое повышается скилл
//EffectSleep (Эффект сна - цель засыпает) effect EffectSleep()
//EffectSlow (Эффект медленности - цель затормаживается на 50%) effect EffectSlow()
//EffectSpellFailur (Эффект неудачного кастования заклинания) effect EffectSpellFailure(int nPercent=100, int nSpellSchool=SPELL_SCHOOL_GENERAL)
int nPercent - процент неудачного кастования (т.е. на сколько процентов вероятность неудачного кастования) от 1 до 100 int nSpellSchool - школа заклинаний: SPELL_SCHOOL_ABJURATION SPELL_SCHOOL_CONJURATION SPELL_SCHOOL_DIVINATION SPELL_SCHOOL_ENCHANTMENT SPELL_SCHOOL_EVOCATION SPELL_SCHOOL_GENERAL SPELL_SCHOOL_ILLUSION SPELL_SCHOOL_NECROMANCY SPELL_SCHOOL_TRANSMUTATION
//EffectSpellImmunity (Эффект иммунитета к определенному заклинанию) effect EffectSpellImmunity(int nImmunityToSpell=SPELL_ALL_SPELLS)
int nImmunityToSpell - само заклинание (введите в строке поиска констант SPELL_ и выбирите нужное вам заклинание)
//EffectSpellLevelAbsorptio (Эффект поглощения заклинания определенного уровня) effect EffectSpellLevelAbsorption(int nMaxSpellLevelAbsorbed, int nTotalSpellLevelsAbsorbed=0, int nSpellSchool=SPELL_SCHOOL_GENERAL )
int nMaxSpellLevelAbsorbed - максимальный уровень (от 1 до 9ти вроде) int nTotalSpellLevelsAbsorbed - число поглощенных заклинаний, после чего эффект удаляется int nSpellSchool - школа заклинаний: SPELL_SCHOOL_ABJURATION SPELL_SCHOOL_CONJURATION SPELL_SCHOOL_DIVINATION SPELL_SCHOOL_ENCHANTMENT SPELL_SCHOOL_EVOCATION SPELL_SCHOOL_GENERAL SPELL_SCHOOL_ILLUSION SPELL_SCHOOL_NECROMANCY SPELL_SCHOOL_TRANSMUTATION
//EffectSpellResistanceDecrease (Эффект уменьшения сопротивления к заклинаниям (СР)) effect EffectSpellResistanceDecrease(int nValue)
int nValue - число, на которое уменьшится СР
//EffectSpellResistanceIncreas (Эффект увеличения сопротивления к заклинаниям (СР)) effect EffectSpellResistanceIncrease(int nValue)
string sCreatureResref - тэг вызываемого существа (пишется "тэг") int nVisualEffectId - визуальный эффект вызова (напишите в строке поиска констант VFX_ и выбирите нужный) float fDelaySeconds - задержка перед вызовом существа, после того как начался эффект
//EffectSwar (Эффект "роя" - припомните заклинание друида на последнем уровне, когда один элемент умирает и создается следующий) effect EffectSwarm(int nLooping, string sCreatureTemplate1, string sCreatureTemplate2="", string sCreatureTemplate3="", string sCreatureTemplate4="")
int nLooping - если FALSE, то при смерт ипоследнего существа эффект завершается, если TRUE - все идет по кругу
string sCreatureTemplate1 - тэг первого существа string sCreatureTemplate2 - тэг второго существа, который появится после смерти первого string sCreatureTemplate3 - тэг третьего существа... string sCreatureTemplate4 - тэг четвертого существа...
//EffectTemporaryHitpoints (Эффект добавления "временных" пунктов жизни) effect EffectTemporaryHitpoints(int nHitPoints)
int nHitPoints - число жизней
//EffectTimeStop (Зверский эффект остановки времени =) ) effect EffectTimeStop()
//EffectVisualEffect (Эффект визуализации - интерестный эффект, позволяющий проигрывать ЛЮБУЮ визуализацию при применении этого эффекта) effect EffectVisualEffect(int nVisualEffectId, int nMissEffect=FALSE)
int nVisualEffectId - визуальный эффект (напишите в строке поиска констант VFX_ и выбирите нужный) int nMissEffect - если FALSE, то эффект будет действовать непосредственно на цель, если же TRUE - на рандомном векторе вблизи цели проиграется этот эффект
И так, мы закончили эффекты... Как всегда - ждем продолжения =) А в продолжении у нас много интерестных функций!!!
Ну вот и долгожданное продолжение красивой и полезной (на мой взгляд) темы. Конечно она и рядом с лексиконом не валялась, но там все на англицком и все так старомодно описанно, что хочется разнообразия =) И так, на чем мы там остановились?
//EndGame (Заканчивает игру, выводя всех играющих в главное меню) void EndGame(string sEndMovie)
string sEndMovie - это название видеоролика, который будет проигран при конце игры и до возвращения игроков в главное меню;
//EventActivateItem (Событие - активация вещей - как мне кажется с уникальной силой) event EventActivateItem(object oItem, location lTarget, object oTarget=OBJECT_INVALID)
object oItem - вещь, которую будем активировать location lTarget - локация-цель, где будет активирован предмет (при использовании уник. силы вы щелкаете мышкой на любом месте на карте - это и есть локация, только все эмулируется скриптом) object oTarget - объект-цель, на ком будет активирован предмет (при использовании уник. силы вы щелкаете на любом объекте, будь то игрок, плесейбл или дверь, здесь же все эмулирует скрипт, по умолчанию стоит OBJECT_INVALID - объекта нет)
//EventConversation (Событие - разговор - наверно для использования в UserDefined,
используется совместно с SignalEvent()) event EventConversation();
Например: SignalEvent(oNPC, EventConversation());
//EventSpellCastAt(Событие - посылает информацию о кастере, спелле и был ли спелл вредным в UserDefined, используется совместно с SignalEvent()) event EventSpellCastAt(object oCaster, int nSpell, int bHarmful=TRUE)
object oCaster - сам кастер спелла, т.е. тот, кто колдовал; int nSpell - переменная, обозначающая скастованный спелл; int bHarmful - вредность, TRUE - спелл вреден, FALSE - спелл безвредный;
//EventUserDefined (Событие - обнаружение игрока, ставится в OnUserDefined скриптах, используется совместно с SignalEvent()) event EventUserDefined(int nUserDefinedEventNumber)
int nUserDefinedEventNumber - номер события, которое повлияло на обнаружение игрока (можно
для этого использовать GetUserDefinedEventNumber() - функция, возвращающая номер того самого
события);
//ExecuteScript (Полезная функция, которая запускает скрипт из скрипта с заданной целью) void ExecuteScript(string sScript, object oTarget)
string sScript - название скрипта, пишется в кавычках; object oTarget - объект-цель, возможно вставлять OBJECT_SELF, тогда в скрипте, который вы укажете в sScript должна быть функция переопределения объекта-цели... НАПРИМЕР: если вы запускаете sScript из скрипта, находяхегося в OnEnter тригера, с параметром OBJECT_SELF, то уже в самом скрипте sScript ищем вошедший объект через object oPC = GetEnteringObject(); еже ли объект уже был определен и в параметре oTarget стоит конечная цель (например oPC) то в скрипте sScript будем искать объект через object oPC = OBJECT_SELF;
object oArea - арея, карта которой будет раскрыта; object oPlayer - объект, для которого карта ареи будет раскрыта;
//ExportAllCharacters (Экспортирование всех игроков в LocalVault/ServerVault директории, т.е. сохранение их статистик, инвентарей и т.д. - используются только для multiplayer игры, в частсности потому что надо сохранить всех персонажей, а не поотдельности каждого) void ExportAllCharacters()
//ExportSingleCharacter (Тоже, что и в предыдущей функции, только работает для singlepayer игры и для конечной цели в частности потому, что надо сохранить определенного персонажа) void ExportSingleCharacter(object oPlayer)
object oPlayer - игрок, чар которого будет сохранен;
//ExtraordinaryEffect (Ставит на эффект флаг SUBTYPE_EXTRAORDINARY и делает эффект экстраординарным) effect ExtraordinaryEffect(effect eEffect)
effect eEffect - эффект, которой будем делать экстроординарным, например: Effect eSleep = ExtraordinaryEffect(EffectSleep());
//fabs (Функция, возвращающая абсолютное число как конечный продукт) float fabs(float fValue)
float fValue - число с плавающей точкой;
//FadeFromBlack (Возвращение из BlackScreen плавным методом подсветки картинки) void FadeFromBlack(object oCreature, float fSpeed=FADE_SPEED_MEDIUM)
object oCreature - объект, для которого эта функция используется; float fSpeed - скорость "подсвечивания", т.е. возвращения из темного экрана: FADE_SPEED_FAST FADE_SPEED_FASTEST FADE_SPEED_MEDIUM FADE_SPEED_SLOW FADE_SPEED_SLOWEST
//FadeToBlack (Делает BlackScreen для определенной цели плавным переходом) void FadeToBlack(object oCreature, float fSpeed=FADE_SPEED_MEDIUM)
object oCreature - объект, для которого эта функция используется; float fSpeed - скорость плавного перехода в темный экран: FADE_SPEED_FAST FADE_SPEED_FASTEST FADE_SPEED_MEDIUM FADE_SPEED_SLOW FADE_SPEED_SLOWEST
//FeetToMeters (Переводит футы в метры) float FeetToMeters(float fFeet)
float fFeet - число футов, вид *.*f
//FindSubString (Ищет в строке подстроку) int FindSubString(string sString, string sSubString)
string sString - сама строка, где будет разыскиваться подстрока; string sSubString - подстрока, которую ищем в строке; НАПРИМЕР: int nPostion = FindSubString("testing","est"); - вернет 1 как результат что поиск успешен int nPostion = FindSubString("testing","test"); - вернет 0 как результат что поиск успешен
int nPostion = FindSubString("testing","mike"); - вернет -1 как результат что поиск не успешен int nPostion = FindSubString("testing","Test"); - вернет -1 как результат что поиск не успешен (T вместо t)
//FloatingTextStringOnCreature (Показывает строку, которая плавно появляется над объектом и, уходя вверх, растворяется - ее могут видеть остальные игроки, а могут и не видеть) void FloatingTextStringOnCreature(string sStringToDisplay, object oCreatureToFloatAbove, int bBroadcastToFaction=TRUE)
string sStringToDisplay - строка, которая будет показываться; object oCreatureToFloatAbove - объект, над которым строка появится; int bBroadcastToFaction - если стоит TRUE - строку увидят все в радиусе 30 метров, инача - никто ничего не увидит;
//FloatingTextStrRefOnCreature (Почти тоже самое, что и предыдущая функция, только строка появляется, заложенная в dialog.tlk со своим StrRef) void FloatingTextStrRefOnCreature(int nStrRefToDisplay, object oCreatureToFloatAbove, int bBroadcastToFaction=TRUE)
int nStrRefToDisplay - число-переменная, обозначающая номер строки; object oCreatureToFloatAbove - объект, над которым строка появится; int bBroadcastToFaction - если стоит TRUE - строку увидят все в радиусе 30 метров, инача - никто ничего не увидит;
ПРИМЧАНИЕ: для каждого существа есть определенная строка, главное знать номер =)
//FloatToInt (Переводит переменную с плавающей точной *.*f в постоянную переменную *n) int FloatToInt(float fFloat)
float fFloat - перменная, которую будем переводить; НАПРИМЕР:
int FloatToInt(8.9) возвернет 8 как конечный продукт.
//FloatToString (Переводит число с плавающей точкой в строковой параметр) string FloatToString(float fFloat, int nWidth=18, int nDecimals=9)
float fFloat - сама переменная; int nWidth - число знаков перед точкой слева; int nDecimals - число знаков после точки справа;
//FortitudeSave (Этой функцией кидается спас против ДС на форту) int FortitudeSave(object oCreature, int nDC, int nSaveType=SAVING_THROW_TYPE_NONE, object oSaveVersus=OBJECT_SELF)
object oCreature - существо, которое будет кидать спас; int nDC - ДС, против которого должен быть прокинут спас; int nSaveType - тип спаса: SAVING_THROW_TYPE_ACID SAVING_THROW_TYPE_ALL SAVING_THROW_TYPE_CHAOS SAVING_THROW_TYPE_COLD SAVING_THROW_TYPE_DEATH SAVING_THROW_TYPE_DISEASE SAVING_THROW_TYPE_DIVINE SAVING_THROW_TYPE_ELECTRICITY SAVING_THROW_TYPE_EVIL SAVING_THROW_TYPE_FEAR SAVING_THROW_TYPE_FIRE SAVING_THROW_TYPE_GOOD SAVING_THROW_TYPE_LAW SAVING_THROW_TYPE_MIND_SPELLS SAVING_THROW_TYPE_NEGATIVE SAVING_THROW_TYPE_NONE SAVING_THROW_TYPE_POISON SAVING_THROW_TYPE_POSITIVE SAVING_THROW_TYPE_SONIC SAVING_THROW_TYPE_SPELL SAVING_THROW_TYPE_TRAP object oSaveVersus - фиг знает, но поумолчанию стоит OBJECT_SELF;
ПРИМЕЧАНИЕ: При удачном спасброске возвращается 1; При неудачном - 0; Если есть иммун на спас бросок опр. типа - возвращает 2;
int nAbility - сама характеристика (поиск в константах на ABILITY_) - т.е. сила, ловкость, харизма и т.д; object oCreature - объект, с которого будут сниматься данные.
//GetAbilityScore (Возвращает цифру, которая указывает значение той или иной характеристики) int GetAbilityScore(object oCreature, int nAbilityType)
object oCreature - объект, с котрого снимаются данные; int nAbilityType - характеристика, значение которой вам надо получить (поиск в константах на ABILITY_);
//GetAC (Возвращает значение АС выбранного существа) int GetAC(object oObject, int nForFutureUse=0)
object oObject - объект, с которого снимаются все значения; int nForFutureUse - этот параметр НЕ используется в этих версиях игры;
//GetAge (Возвращает возраст выбранного существа) int GetAge(object oCreature)
object oCreature - существо, возраст которого будет считываться;
//GetAILevel (Возвращает тип AI выбранного существа (не PC)) int GetAILevel(object oTarget=OBJECT_SELF)
//GetAlignmentGoodEvil (Возвращает тип направленности выбранного существа по типу добро/нейтрал/зло) int GetAlignmentGoodEvil(object oCreature)
object oCreature - само существо;
//GetAlignmentLawChaos (Возвращает тип направленности выбранного существа по типу лаувфул/нейтрал/хаосс) int GetAlignmentLawChaos(object oCreature)
object oCreature - само существо;
//GetAnimalCompanionCreatureType (Возвращает тип животного-компаньона (поиск в константах по NIMAL_COMPANION_CREATURE_TYPE_)) int GetAnimalCompanionCreatureType(object oCreature)
object oCreature - ваше животное-компаньон;
//GetAnimalCompanionName (Возвращает имя вашего животного-компаньона) string GetAnimalCompanionName(object oTarget)
object oCreature - ваше животное-компаньон;
Ну в общем чуть-чуть тоже ничего... Ждем продолжения =)
Эта тема устарела это еще сам Валлео говорил. уже давно появился справочник в виде хелповского файла для виндус по всему что касаеться написания скриптов. даже кажись переведеный это надо на сайте WRG команды смотреть. вот покапался нашел и вспомнил Лексиконом его бають адрес вот эту информацию я взял тут
Мдя... А есть этот самый, как там его, Лексикон - Во - На русском, на родном? Никто не встречал? на wrg че-то не находил такового, если кто знает скажите, буду премного благодарен. (IMG:style_emoticons/default/blink.gif)