|
Re: Уроки скриптологии
// ************************************************** ****************** // Функции проверяющие принадлежность НПС к определенной локации // ************************************************** ******************
// ================================================== ================== // Аргументы: // -------------------------------------------------------------------- // slf - проверяемый НПС // -------------------------------------------------------------------- // Возвращаемое значение: // TRUE - принадлежит, FALSE - нет. // ================================================== ==================
// Проверка принадлежности к Миненталю // -------------------------------------------------------------------- func int C_NpcBelongsToOldCamp(var C_NPC slf) { * *// если НПС значим или из окружающего народа в Минентале * *if(slf.npctype == NPCTYPE_OCMAIN) ¦¦ (slf.npctype == NPCTYPE_OCAMBIENT) * *{ * * * *// если НПС Горожанин или Милиционер или Паладин * * * *if(slf.guild == GIL_VLK) ¦¦ (slf.guild == GIL_MIL) ¦¦ (slf.guild == GIL_PAL) * * * *{ * * * * * *return TRUE; * * * *}; * *}; * *return FALSE; };
// Проверка принадлежности к Хоринису // -------------------------------------------------------------------- func int C_NpcBelongsToCity(var C_NPC slf) { * *// если НПС не из Миненталя * *if(!C_NpcBelongsToOldCamp(slf)) * *{ * * * *// если НПС Горожанин или Милиционер или Паладин * * * *if(slf.guild == GIL_VLK) ¦¦ (slf.guild == GIL_MIL) ¦¦ (slf.guild == GIL_PAL) * * * *{ * * * * * *return TRUE; * * * *}; * *}; * *return FALSE; };
// Проверка принадлежности к Монастырю // --------------------------------------------------------------------- func int C_NpcBelongsToMonastery(var C_NPC slf) { * *// если НПС Маг огня или Маг послушник * *if(slf.guild == GIL_KDF) ¦¦ (slf.guild == GIL_NOV) * *{ * * * *return TRUE; * *}; * *return FALSE; };
// Проверка принадлежности к Ферме наемников // --------------------------------------------------------------------- func int C_NpcBelongsToFarm(var C_NPC slf) { * *// если НПС Крестьянин или Наемник * *if(slf.guild == GIL_BAU) ¦¦ (slf.guild == GIL_SLD) * *{ * * * *return TRUE; * *}; * *return FALSE; };
// Проверка принадлежности к Лагерю бандитов // --------------------------------------------------------------------- func int C_NpcBelongsToBL(var C_NPC slf) { * *// если НПС из окружающего народа в Лагере или Долине бандитов * *if(slf.npctype == NPCTYPE_BL_AMBIENT) ¦¦ (slf.npctype == NPCTYPE_BL_MAIN) * *{ * * * *return TRUE; * *}; * *return FALSE; };
... ещё файл
// ****************************************** // Имеет ли НПС новости об окружающей жизни // ******************************************
// ========================================== // Аргументы: // ------------------------------------------ // slf - проверяемый НПС // ------------------------------------------ // Возвращаемое значение: // TRUE - новости есть, FALSE - нет. // ==========================================
func int C_NpcHasAmbientNews(var C_NPC slf) { * * * * *// если НПС не знает никаких новостей * *if(slf.aivar[AIV_NewsOverride] == TRUE) * *{ * * * *return FALSE; * *}; * *// если ГГ не имеет криминала * *if(B_GetPlayerCrime(slf) == CRIME_NONE) * *{ * * * *return FALSE; * *}; * *// новости есть (по умолчанию) * *return TRUE; };
... ещё файл
// ***************************************** // Является ли причиной атаки убийство цели // *****************************************
// ================================================== ================== // Аргументы: // -------------------------------------------------------------------- // slf - НПС агрессор // -------------------------------------------------------------------- // Возвращаемое значение: // TRUE - причина атаки - убийство, FALSE - нет. // ================================================== ==================
func int C_NpcHasAttackReasonToKill(var C_NPC slf) { * *// если * *if (slf.aivar[AIV_ATTACKREASON] == AR_KILL) * * * * * * * * // ГГ убил НПС * *¦¦ (slf.aivar[AIV_ATTACKREASON] == AR_GuildEnemy) * * * * * // или НПС является врагом гильдии * *¦¦ (slf.aivar[AIV_ATTACKREASON] == AR_HumanMurderedHuman) * // или Человек убил человека * *¦¦ (slf.aivar[AIV_ATTACKREASON] == AR_GuardStopsIntruder) * // или Охрана ворот атакует незваного гостя * *¦¦ (slf.aivar[AIV_ATTACKREASON] == AR_GuardCalledToKill) * *// или Вызвана охрана по факту убийства * *{ * * * *return TRUE; * * * *}; * *return FALSE; };
... ещё файл
// ************************************ // Находится ли ГГ в частном помещении // ************************************
// ================================================== ================== // Аргументы: // -------------------------------------------------------------------- // slf - НПС, которому может принадлежать помещение // -------------------------------------------------------------------- // Возвращаемое значение: // TRUE - ГГ в частном помещении, FALSE - нет. // ================================================== ==================
func int C_NpcIsBotheredByPlayerRoomGuild(var C_Npc slf) { * * *var int portalguild; * *// получить номер гильдии, которой принадлежит помещение (-1 помещение никому не принадлежит) * *portalguild = Wld_GetPlayerPortalGuild(); * *// если помещение принадлежит гильдии и (НПС из этой гильдии или гильдия НПС и гильдия, владеющая помещением, дружественны) * *if(portalguild > GIL_NONE) && ((slf.guild == portalguild) ¦¦ (Wld_GetGuildAttitude(slf.guild,portalguild) == ATT_FRIENDLY)) * *{ * * * *return TRUE; * *}; * *return FALSE; };
... ещё файл
// ************************************************** *************** // Реагирует ли цель на оружие, направленное против нее агрессором // ************************************************** ***************
// ================================================== =============== // Аргументы: // ----------------------------------------------------------------- // slf - НПС цель // oth - НПС агрессор // ----------------------------------------------------------------- // Возвращаемое значение: // TRUE - цель реагирует, FALSE - нет. // ================================================== ===============
func int C_NpcIsBotheredByWeapon(var C_NPC slf,var C_NPC oth) { * *// если цель член партии ГГ * *if(slf.aivar[AIV_PARTYMEMBER] == TRUE) * *{ * * * *return FALSE; * *}; * *// если цель друг ГГ и агрессор ГГ (Примечание: правильней вместо other написать oth) * *if(slf.npctype == NPCTYPE_FRIEND) && (Npc_IsPlayer(other)) * *{ * * * *return FALSE; * *}; * *// если НПС имеет дело с "крутым парнем" и агрессор сражается оружием ближнего радиуса поражения * *if(C_NpcIsToughGuy(slf)) && (Npc_IsInFightMode(oth,FMODE_MELEE)) * *{ * * * *return FALSE; * *}; * *// если отношения между агрессором и целью дружественны * *if(Npc_GetAttitude(slf,oth) == ATT_FRIENDLY) * *{ * * * *return FALSE; * *}; * *// если цель является охранником ворот * *if(C_NpcIsGateGuard(slf)) * *{ * * * *return FALSE; * *}; * *// если агрессор сражается кулаками * *if(Npc_IsInFightMode(oth,FMODE_FIST)) * * * * * * * * * * * * * * * * * * * * * * * * * * * * *{ * * * *return FALSE; * *}; * *// если агрессор использует магию и категория используемого заклинания безвредна * *if(Npc_IsInFightMode(oth,FMODE_MAGIC) && (Npc_GetActiveSpellCat(oth) != SPELL_BAD)) * *{ * * * *return FALSE; * *}; * *// если цель Черный маг или орк * *if((slf.guild == GIL_DMT) ¦¦ (slf.guild == GIL_ORC)) * *{ * * * *return FALSE; * *}; * * *return TRUE; };
|