int Npc_GetTRUEGuild (c_npc npc); - возвращает номер гильдии, к которой принадлежит НПС npc.
int Npc_SetTRUEGuild (c_npc npc, int guildID); - установить принадлежность НПС npc к гильдии guildID.
void Npc_SetAttitude (c_npc self, int att); - установить постояноое отношение att НПС self ко всем остальным НПС.
void Npc_SetTempAttitude (c_npc self, int att); - установить временное отношение att НПС self ко всем остальным НПС.
int Npc_GetAttitude (c_npc self, c_npc other); - получить любое отношение НПС self к НПС other.
int Npc_GetPermAttitude (c_npc self, c_npc other); - получить постоянное отношение НПС self к НПС other.
int Npc_GetGuildAttitude (c_npc self, c_npc other); - получить отношение НПС self к НПС other, как отношение между гильдиями, а не личностями.
void Npc_SetKnowsPlayer (c_npc self, c_npc player) ; - эта функция задает, что НПС self знаком с НПС player (ГГ).
int Npc_KnowsPlayer (c_npc self, c_npc player); - проверить, знаком ли НПС self с НПС player, возвращает TRUE, если знаком, иначе FALSE.
int Npc_OwnedByNpc (c_item item, c_npc npc); - проверить, принадлежит ли предмет item npc, возвращает 1, если принадлежит, иначе - 0.
int Npc_OwnedByGuild (c_item item, int guild); - - проверить, принадлежит ли предмет item гильдии guild, возвращает 1, если принадлежит, иначе - 0.
string Npc_GetNearestWP (c_npc self); - возвращает название WP, в которой расположен НПС self.
string Npc_GetNextWP (c_npc self); - возвращает название соседней точки WP, рядом с которой расположен НПС self.
int Npc_IsWayBlocked (c_npc self); - возвращает 1, если путь НПС self прегражден препятствием, иначе – 0.
int Npc_IsOnFP (c_npc self, string name); - проверяет, находится ли НПС self в точке FP с именем name, возвращает 1 – да, иначе – 0.
int Npc_IsDead (c_npc n0); - возвращает 1, если НПС n0 мертв, иначе – 0.
int Npc_KnowsInfo (c_npc self, int infoInstance); - возвращает TRUE, если НПС self уже получил информацию infoInstance, иначе FALSE.
int Npc_CheckInfo (c_npc npc, int important); - проверяет, имеет ли НПС npc действительную информацию для игрока, в этом случае возвращается 1 и начинается диалог, иначе 0, где important – важность информации (1 – важная, 0 – обычная).
int Npc_GiveInfo (c_npc npc, int important); - работает аналогично предыдущей функции, есть какое-то отличие, но я его не понял.
int Npc_CheckAvailableMission (c_npc npc, int missionState, int important); - проверяет, имеет ли npc миссию в состоянии missionState (AVAILABLE, RUNNING) с важностью important, возвращает 1, если имеет, иначе – 0.
int Npc_CheckRunningMission (c_npc npc, int important); - работает аналогично предыдущей функции, только проверяется миссия в состоянии текущего выполнения.
int Npc_CheckOfferMission (c_npc npc, int important); - работает аналогично предыдущей функции, только проверяется миссия в которой НПС npc может что-то предложить игроку.
int Npc_GetStateTime (c_npc self); - возвращает кол-во секунд, которые НПС self находится в текущем состоянии, заданном в " Loop " цикле.
void Npc_SetStateTime (c_npc self, int seconds); - установить кол-во секунд seconds, как долго НПС self может находится в этом состоянии.
int Npc_GetBodyState (c_npc self); - возвращает состояние, в котором находится НПС self (BS_константы).
int Npc_HasBodyFlag (c_npc self, int bodyFlag); - проверяет, установлен ли у НПС self флаг состояния bodyFlag, возвращает 1, если установлен, иначе – 0.
int Npc_IsPlayer (c_npc player); - возвращает 1, если проверяемый НПС player является ГГ.
int Npc_HasDetectedNpc (c_npc self, c_npc other); - возвращает 1, если НПС self чувствует (видит, сышит и т.д.) НПС other, иначе – 0.
int Npc_IsInState (c_npc self, func state); - запрос на текущее состояние фигуры НПС self, где state – функция состояния фигуры, возвращает TRUE, если НПС находится в этом состоянии, иначе – FALSE.
int WasInState (c_npc self, func state); - аналогично предыдущей функции, только запрос на предыдущее состояние фигуры НПС.
int Npc_IsInRoutine (c_npc self, func state); - проверяет, находится ли НПС self в функции state, возвращает TRUE если находится, иначе – FALSE.
void Npc_ExchangeRoutine (c_npc self, string routineName); - поменять у НПС self распорядок дня routineName.
int Npc_IsInCutscene (c_npc self); - возвращает 1, если НПС self находится во время проигрывания Cutscene, иначе – 0.
int Npc_IsVoiceActive (c_npc self); - возвращает 1, если НПС self разговаривает, иначе – 0.***
void Npc_ClearAIQueue (c_npc self); - удаляет все команды для НПС self из очереди AI_Queue.
void Npc_PlayAni (c_npc self, string file); - воспроизвести файл анимации file для НПС self.***
void Npc_SetRefuseTalk (c_npc self, int timeSec); - установить счетчик отказа от диалога для НПС self на timeSec секунд.
int Npc_RefuseTalk (c_npc self); - проверить, истек ли счетчик отказа от диалога для НПС self, возвращает TRUE, если счетчик не истек, иначе – FALSE.
int Npc_IsNear (c_npc self, c_npc other); - возвращает 1, если НПС other находится на расстоянии не менее 3 метров от НПС self, иначе – 0.
int Npc_GetDistToNpc (c_npc npc1, c_npc npc2); - возвращает расстояние в см. между npc1 и npc2.
int Npc_GetDistToWP (c_npc self, string wpName); - возвращает расстояние в см. между НПС self и WP wpName.
int Npc_GetDistToItem (c_npc self, c_item item); - возвращает расстояние в см. между НПС self и предметом item.
int Npc_GetDistToPlayer (c_npc npc1); - возвращает расстояние в см. между npc1 и ГГ.
void Npc_MemoryEntry (c_npc self, int source, c_npc offender, int newsid, c_npc victim); - данная функция записывает для НПС self новости, где source – источник новостей (определено два источника: NEWS_SOURCE_WITNESS – есть свидетель произошедшего, NEWS_SOURCE_GOSSIP – сплетня), newsid – идентификатор новости (определены новости: NEWS_MURDER - убийство, NEWS_ATTACK – атака, NEWS_THEFT – воровство, NEWS_DEFEAT – поражение, NEWS_NERVE – переживание, NEWS_INTERFERE – вмешательство, NEWS_HASDEFEATED – победа), offender – НПС преступник, victim – НПС жертва.
void Npc_MemoryEntryGuild (c_npc self, int source, c_npc offender, int newsid, c_npc victimguild); - работает аналогично предыдущей функции, только жертвой является вся гильдия.
int Npc_HasNews (c_npc self, int newsID, c_npc offender, c_npc victim); - эта функция проверяет, имеет ли НПС self новость с идентификатором newsID о жертве victim и преступнике offender, возвращает 1, если имеет, иначе – 0. (Вместо ненужных параметров можно записать 0).
int Npc_IsNewsGossip (c_npc self, int newsNumber); - возвращает 1, если новость для НПС self является сплетней, иначе – 0.
c_npc Npc_GetNewsWitness (c_npc self, int newsNumber); - возвращает ссылку на свидетеля в новости newsNumber для НПС self.
c_npc Npc_GetNewsVictim (c_npc self, int newsNumber); - возвращает ссылку на жертву в новости newsNumber для НПС self.
c_npc Npc_GetNewsOffender (c_npc self, int newsNumber); - возвращает ссылку на преступника в новости newsNumber для НПС self.
int Npc_DeleteNews (c_npc self, int newsNumber); - удаляет новость newsNumber для НПС self, возвращает 1, исли удаление успешно, иначе – 0.***
void Npc_ChangeAttribute (c_npc self, int atr, int value); - изменяет значение атрибута atr на кол-во единиц value для НПС self.
void Npc_CreateSpell (c_npc self, int spellnr); - НПС self создает заклинание spellnr, оно становится активным, но еще не применяется.
void Npc_LearnSpell (c_npc self, int spellnr); - НПС self выучил заклинание spellnr и может его использовать.
int Npc_GetActiveSpell (c_npc self); - возвращает номер заклинания, которое имеет активным НПС self, иначе - -1.
int Npc_GetActiveSpellCat (c_npc self); - возвращает номер категории активного заклинания у НПС self. Существуют три категории заклинаний:SPELL_GOOD, SPELL_NEUTRAL, SPELL_BAD.
int Npc_SetActiveSpellInfo (c_npc npc, int i1); - задает любое значение i1 для активного заклинания у НПС npc, это значение может использоваться в скриптах, экзешник на него не реагирует. Возвращаемое значение неизвестно.
int Npc_GetActiveSpellLevel (c_npc self); - возвращает уровень активного заклинания у НПС self.
int Npc_HasSpell (c_npc self, int spellID); - возвращает 1, если НПС self может использовать заклинание spellID, иначе – 0.
void Npc_PercEnable (c_npc self, int percID, func function); - функция активации восприятия percID у НПС self, где function – функция обработки восприятия.
void Npc_PercDisable (c_npc self, int percID); - функция деактивации восприятия percID у НПС self.
void Npc_SetPercTime (c_npc self, float seconds); - установка времени реакции в секундах seconds НПС self на событие для активного восприятия.
void Npc_SendPassivePerc (c_npc npc1, int Perc_type, c_npc npc2, c_npc npc3); - функция посылки пассивного восприятия Perc_type от npc1, где npc2 – жертва, npc3 – преступник.
void Npc_SendSinglePerc (c_npc self, c_npc target, int percID); - функция посылки восприятия percID от НПС self к НПС target.
void Npc_PerceiveAll (c_npc self); - разрешает НПС self воспринимать все объекты в зоне действия восприятия, затем можно использовать функции Wld_DetectNpc и Wld_DetectItem.
string Npc_GetDetectedMob (c_npc self); - возвращает имя MOB (Move Object) объекта, который распознал НПС self. Например: если имя MOB объекта " DOOR_OCR _135", то функция возвратит " DOOR ".
int Npc_CanSeeNpc (c_npc npc1, c_npc npc2); - возвращает TRUE, если npc1 может видеть npc2, иначе – FALSE.
int Npc_CanSeeNpcFreeLOS (c_npc self, c_npc other); - возвращает TRUE, если НПС self может видеть НПС other по прямой, без учета угла обзора, иначе – FALSE.
int Npc_CanSeeItem (c_npc npc1, c_item item); - возвращает TRUE, если npc1 может видеть предмет item, иначе – FALSE.
int Npc_CanSeeSource (c_npc self); - возвращает TRUE, если НПС self может видеть источник звука, иначе – FALSE.
int Npc_IsPlayerInMyRoom (c_npc npc); - возвращает TRUE, если НПС npc находится в своем помещении или в помещении своей гильдии, иначе – FALSE.
int Npc_WasPlayerInMyRoom (c_npc npc); - возвращает TRUE, если НПС npc находился в своем помещении или в помещении своей гильдии перед изменением своего положения, иначе – FALSE.
int Npc_GetComrades (c_npc npc); - возвращает 1, если НПС npc имеет друзей, иначе – 0. ***
int Npc_IsDetectedMobOwnedByNpc (c_npc user, c_npc owner); - возвращает значение > 0, если НПС owner является владельцем MOB а, который использует НПС user.
int Npc_IsDetectedMobOwnedByGuild (c_npc user, int ownerguild); - возвращает значение > 0, если гильдия ownerguild является владельцем MOB а, который использует НПС user.
void Npc_GiveItem (c_npc self, c_item item, c_npc other); - НПС self получает предмет item от НПС other.
int Npc_StartItemReactModules (c_npc self, c_npc other, c_item item); - проверяет все модули ItemReact реакции на предмет item, полученный НПС self от НПС other, запускает соответствующую функцию Reaction и возвращает TRUE, если находит модуль, иначе – FALSE.
int Npc_HasOffered (c_npc self, c_npc other, int itemInstance); - проверяет, имеет ли НПС other предмет itemInstance для передачи НПС self, возвращает TRUE, если предмет имеется, иначе – FALSE.
c_item Npc_GetInvItem (c_npc self, int itemInstance); - получить ссылку на предмет, который имеет НПС self с номером itemInstance.
int Npc_HasItems (c_npc n0, int itemInstance); - возвращает количетво предметов itemInstance у НПС n0.
int Npc_GetInvItemBySlot (c_npc self, int category, int slotNr); - возвращает кол- во предметов, которые находятся у НПС self, где category – категория инвентаря (INV_WEAPON, INV_ARMOR, INV_RUNE, INV_MAGIC, INV_FOOD, INV_POTION, INV_DOC, INV_MISC), slotNr – номер слота предмета.
void Npc_RemoveInvItem (c_npc owner, int itemInstance); - предмет itemInstance удаляется из инвентаря НПС owner и из игры.
void Npc_RemoveInvItems (c_npc owner, int itemInstance, int amount); - указанное кол-во amount предметов itemInstance удаляется из инвентаря НПС owner и из игры.
c_item Npc_GetEquippedMeleeWeapon (c_npc n0); - возвращает оружие ближнего радиуса поражения, которым экипирован НПС n0.
c_item Npc_GetEquippedRangedWeapon (c_npc n0); - возвращает оружие дальнего радиуса поражения, которым экипирован НПС n0.
c_item Npc_GetEquippedArmor (c_npc n0); - возвращает доспехи, которыми экипирован НПС n0.
int Npc_HasEquippedWeapon (c_npc self); - возвращает 1, если НПС self экипирован оружием, иначе - 0.
int Npc_HasEquippedMeleeWeapon (c_npc self); - возвращает 1, если НПС self экипирован оружием ближнего радиуса поражения, иначе - 0.
int Npc_HasEquippedRangedWeapon (c_npc self); - возвращает 1, если НПС self экипирован оружием дальнего радиуса поражения, иначе - 0.
int Npc_HasEquippedArmor (c_npc self); - возвращает 1, если НПС self экипирован доспехами, иначе - 0.
void Npc_SetToFistMode (c_npc self); - ставит НПС self в режим кулачного боя.
void Npc_SetToFightMode (c_npc self, int weapon); - ставит НПС self в режим боя с соответствующим оружием weapon.
int Npc_IsInFightMode (c_npc self, int fmode); - возвращает 1, если НПС self находится в боевом режиме fmode, иначе - 0. Заданы следующие боевые режимы: FMODE_NONE – небоевой режим, FMODE_FIST – режим кулачного боя, FMODE_MELEE – боевой режим с оружием ближнего радиуса поражения, FMODE_FAR - боевой режим с оружием дальнего радиуса поражения, FMODE_MAGIC – боевой режим с магией.
c_item Npc_GetReadiedWeapon (c_npc n0); - возвращает ссылку на оружие, которое НПС n0 держит в руке.
int Npc_HasReadiedWeapon (c_npc self); - возвращает 1, если НПС self держит любое оружие в руке, иначе - 0.
int Npc_HasReadiedMeleeWeapon (c_npc self); - возвращает 1, если НПС self держит в руке оружие ближнего радиуса поражения, иначе - 0.
int Npc_HasReadiedRangedWeapon (c_npc self); - возвращает 1, если НПС self держит в руке оружие дальнего радиуса поражения, иначе - 0.
int Npc_HasRangedWeaponWithAmmo (c_npc npc); - возвращает 1, если НПС npc держит в руке или имеет в инвентаре оружие дальнего радиуса поражения с боеприпасами, иначе - 0.
int Npc_GetTarget (c_npc self); - возвращает TRUE, если НПС self имеет цель для поражения (в качестве цели выступает НПС other), иначе – FALSE.
int Npc_GetNextTarget (c_npc self); - выполняется активный поиск цели для НПС self. Если цель находится, то она становится внутренней целью и записывается в переменную
other, если цель не найдена, то внутренняя цель удаляется и other становится недействительным. Критерий поиска цели - в качестве цели возмется враждебный противник, который не мертв или находится не в бессознательном состоянии. Возвращает TRUE, если цель найдена, иначе – FALSE. Внимание: Поиск основывается на активном восприятии НПС self, поэтому, если активное восприятие не установлено, то сначала следует применять функцию Npc_PerceiveAll ().
int Npc_IsNextTargetAvailable (c_npc self); - работает аналогично предыдущей функции, только ни внутренняя цель, ни переменная other не инициализируются.
void Npc_SetTarget (c_npc self, c_npc other); - устанавливает для НПС self в качестве внутренней цели для поражения НПС other.
int Npc_AreWeStronger (c_npc self, c_npc other); - выявляет более сильного НПС среди self и other по следующему алгоритму: если сумма уровней всех НПС (людей и монстров), которые враждебны к self и дружелюбны к other, более чем в два раза превышает сумму уровней всех НПС (людей и монстров), которые дружелюбны к self и враждебны к other, то other сльнее и возвращается FALSE, иначе сильнее self и возвращается TRUE. Замечания: 1. НПС, которые враждебны к обоим, не учитываются. 2. НПС, который враждебен к одному и дружелюбен к другому, будет участвовать в подсчете два раза.
int Npc_IsAiming (c_npc self, c_npc other); - возвращает 1, если НПС other целится в НПС self из оружия дальнего радиуса поражения или магией, иначе – 0.
int Npc_GetTalentSkill (c_npc self, int talent); - возвращает уровень навыка talent, который имеет НПС self.*** Определены следующие способности: NPC_TALENT _1 H – владение одноручником, NPC_TALENT _2 H – владение двуручником, NPC_TALENT_BOW – владение луком, NPC_TALENT_CROSSBOW – владение арбалетом, NPC_TALENT_PICKLOCK – умение вскрывать замки, NPC_TALENT_PICKPOCKET – карманная кража, NPC_TALENT_MAGE – владение магией, NPC_TALENT_SNEAK – умение подкрадываться, NPC_TALENT_REGENERATE – способность восстанавливать здоровье, NPC_TALENT_FIREMASTER – способность мастерски обращаться с огнем, NPC_TALENT_ACROBAT – акробатика.
int Npc_GetTalentValue (c_npc self, int talent); - возвращает кол-во единиц навыка talent, которые имеет НПС self.***
void Npc_SetTalentSkill (c_npc self, int talent, int level); - установить уровень level навыка talent, которым владеет НПС self.***
void Npc_SetTalentValue (c_npc self, int talent, int value); - установить кол-во единиц value навыка talent, которым владеет НПС self.***
Вот мы и закончили рассмотрение большого раздела – функции работы с НПС.