|
Re: Уроки скриптологии
// ************************************************* // Отказывается ли НПС от предлагаемого разговора // *************************************************
// ================================================== ================== // Аргументы: // -------------------------------------------------------------------- // slf - НПС, которому предложили разговор // oth - инициатор разговора (обычно ГГ) // -------------------------------------------------------------------- // Возвращаемое значение: // TRUE - да, FALSE - нет. // ================================================== ==================
func int C_RefuseTalk(var C_NPC slf,var C_NPC oth) { * *// если НПС не может говорить и он охраняет ворота и он не выдавал предупреждений * *if(Npc_RefuseTalk(slf) == TRUE) && (C_NpcIsGateGuard(slf)) && (slf.aivar[AIV_Guardpassage_Status] == GP_NONE) * *{ * * * *return TRUE; * *}; * * * *// если НПС с ГГ не разговаривал и НПС находится от своего вайпоинта далее 5м * *if(slf.aivar[AIV_TalkedToPlayer] == FALSE) && (Npc_GetDistToWP(slf,slf.wp) > 500) * *{ * * * *// если НПС Лотар * * * *if(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Lothar)) * * * *{ * * * * * *return TRUE; * * * *}; * *}; * *// если НПС определил, что ГГ член подставной гильдии и НПС неуязвимый (Примечание: необходимо self заменить на slf) * *if(C_PlayerHasFakeGuild(slf,oth) && (self.flags != NPC_FLAG_IMMORTAL) * *{ * * * *return TRUE; * *}; * *return FALSE; };
... ещё файл
// ************************************* // Должен ли НПС атаковать убийцу // *************************************
// ================================================== ================== // Аргументы: // -------------------------------------------------------------------- // slf - проверяемый НПС // oth - НПС убийца (обычно ГГ) // -------------------------------------------------------------------- // Возвращаемое значение: // TRUE - да, FALSE - нет. // ================================================== ==================
func int C_WantToAttackMurder(var C_NPC slf,var C_NPC oth) { * *// если НПС Черный маг или Заключенный или Охотник на драконов или Бандит * *if(slf.guild == GIL_DMT) ¦¦ (slf.guild == GIL_STRF) ¦¦ (slf.guild == GIL_DJG) ¦¦ (slf.guild == GIL_BDT) * * *{ * * * *return FALSE; * *}; * *// если НПС игнорирует убийство * *if(slf.aivar[AIV_IGNORE_Murder] == TRUE) * *{ * * * *return FALSE; * *}; * *// если убийца ГГ и НПС ему друг * *if(Npc_IsPlayer(oth) && (slf.npctype == NPCTYPE_FRIEND)) * *{ * * * *return FALSE; * *}; * *// если НПС убийца должен быть убить цель * *if(C_NpcHasAttackReasonToKill(oth)) * *{ * * * *return FALSE; * *}; * *// если НПС охраняет ворота * *if(C_NpcIsGateGuard(slf)) * *{ * * * *return FALSE; * *}; * *return TRUE; };
... ещё файл
// ************************************************** ****** // Должен ли НПС напасть на незваного гостя // ************************************************** ******
// ================================================== ================== // Аргументы: // -------------------------------------------------------------------- // slf - проверяемый НПС // -------------------------------------------------------------------- // Возвращаемое значение: // TRUE - да, FALSE - нет. // ================================================== ==================
func int C_WantToAttackRoomIntruder(var C_NPC slf) { * *// Примечание: необходимо во всей функции self заменить на slf. * *// если НПС Милиционер или Паладин или Наемник или Охотник на драконов или ГГ имеет совершенный криминал * *if(self.guild == GIL_MIL) ¦¦ (self.guild == GIL_PAL) ¦¦ (self.guild == GIL_SLD) ¦¦ (self.guild == GIL_DJG) ¦¦ (B_GetPlayerCrime(self) != CRIME_NONE) * *{ * * * *return TRUE; * *}; * *return FALSE; };
... ещё файл
// ************************************** // Должен ли НПС атаковать убийцу овец // **************************************
// ================================================== ================== // Аргументы: // -------------------------------------------------------------------- // slf - проверяемый НПС // oth - НПС убийца (обычно ГГ) // -------------------------------------------------------------------- // Возвращаемое значение: // TRUE - да, FALSE - нет. // ================================================== ==================
func int C_WantToAttackSheepKiller(var C_NPC slf,var C_NPC oth) { * *// если НПС Черный маг или Заключенный или Бандит или Охотник на драконов * *if(slf.guild == GIL_DMT) ¦¦ (slf.guild == GIL_STRF) ¦¦ (slf.guild == GIL_BDT) ¦¦ (slf.guild == GIL_DJG) * *{ * * * *return FALSE; * *}; * *// если НРС игнорирует убийство овец * *if(slf.aivar[AIV_IGNORE_Sheepkiller] == TRUE) * *{ * * * *return FALSE; * *}; * *// если убийца ГГ и НПС ему друг * *if(Npc_IsPlayer(oth) && (slf.npctype == NPCTYPE_FRIEND)) * *{ * * * *return FALSE; * *}; * *// если убийца должен был убить овцу * *if(C_NpcHasAttackReasonToKill(oth)) * *{ * * * *return FALSE; * *}; * *// если убийца человек и у него была причина нападения (Примечание: необходимо other заменить на oth) * *if(other.guild < GIL_SEPERATOR_HUM) && (other.aivar[AIV_ATTACKREASON] != AR_NONE) * *{ * * * *return FALSE; * *}; * *// если НПС охраняет ворота * *if(C_NpcIsGateGuard(slf)) * *{ * * * *return FALSE; * *}; * *return TRUE; };
... ещё файл
// ****************************************** // Должен ли НПС атаковать вора // ******************************************
// ================================================== ================== // Аргументы: // -------------------------------------------------------------------- // slf - проверяемый НПС // oth - НПС вор (обычно ГГ) // -------------------------------------------------------------------- // Возвращаемое значение: // TRUE - да, FALSE - нет. // ================================================== ==================
func int C_WantToAttackThief(var C_NPC slf,var C_NPC oth) { * *// если НПС Черный ман или Заключенный или Охотник на драконов * *if(slf.guild == GIL_DMT) ¦¦ (slf.guild == GIL_STRF) ¦¦ (slf.guild == GIL_DJG) * *{ * * * *return FALSE; * *}; * *// если НПС не реагирует на воровство * *if(slf.aivar[AIV_IGNORE_Theft] == TRUE) * *{ * * * *return FALSE; * *}; * *// если НПС проиграл последнее сражение с ГГ * *if(slf.aivar[AIV_LastFightAgainstPlayer] == FIGHT_LOST) * *{ * * * *return FALSE; * *}; * *// если вор ГГ и НПС ему друг * *if(Npc_IsPlayer(oth) && (slf.npctype == NPCTYPE_FRIEND)) * *{ * * * *return FALSE; * *}; * *// если НПС охраняет ворота * *if(C_NpcIsGateGuard(slf)) * *{ * * * *return FALSE; * *}; * *return TRUE; };
... ещё файл
// ********************************* // Должен ли НПС убежать от цели // ********************************* * * // ================================================== ================== // Аргументы: // -------------------------------------------------------------------- // slf - проверяемый НПС // oth - цель (обычно ГГ) // -------------------------------------------------------------------- // Возвращаемое значение: // TRUE - да, FALSE - нет. // ================================================== ==================
func int C_WantToFlee(var C_NPC slf,var C_NPC oth) { * *// никогда не убегает!!! * *return FALSE; };
... ещё файл
// ********************************* // Должен ли НПС обыскать тело // *********************************
// ================================= // Аргументы: // --------------------------------- // slf - проверяемый НПС // other - тело (задано неявно) // --------------------------------- // Возвращаемое значение: // TRUE - да, FALSE - нет. // =================================
func int C_WantToRansack(var C_NPC slf) { * *// если НРС друг ГГ и тело есть ГГ * *if(slf.npctype == NPCTYPE_FRIEND) && (Npc_IsPlayer(other)) * *{ * * * *return FALSE; * *}; * *// если НПС Равен * *if(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Raven)) * *{ * * * *return FALSE; * *}; * *// если НПС Черный маг или Орк или Паладин или Маг огня или Послушник или Маг воды * *if(slf.guild == GIL_DMT) ¦¦ (slf.guild == GIL_ORC) ¦¦ (slf.guild == GIL_PAL) ¦¦ (slf.guild == GIL_KDF) ¦¦ (slf.guild == GIL_NOV) ¦¦ (slf.guild == GIL_KDW) * *{ * * * *return FALSE; * *}; * *return TRUE; };
... ещё файл
// ********************************************** // Должен ли НПС реагировать на крадущегося ГГ // **********************************************
// ================================================== ================== // Аргументы: // -------------------------------------------------------------------- // slf - проверяемый НПС // oth - крадущийся НПС (обычно ГГ) // -------------------------------------------------------------------- // Возвращаемое значение: // TRUE - да, FALSE - нет. // ================================================== ==================
func int C_WantToReactToSneaker(var C_NPC slf,var C_NPC oth) { * *// если расстояние между НПС и ГГ > 7м * *if(Npc_GetDistToNpc(slf,oth) > 700) * *{ * * * *return FALSE; * *}; * *// если НПС Черный маг или Заключенный или Бандит и НПС не принадлежит к Лагерю бандитов * *if(slf.guild == GIL_DMT) ¦¦ (slf.guild == GIL_STRF) ¦¦ ((slf.guild == GIL_BDT) && !C_NpcBelongsToBL(slf)) * *{ * * * *return FALSE; * *}; * *// если НПС друг ГГ и ГГ крадется * *if(slf.npctype == NPCTYPE_FRIEND) && (Npc_IsPlayer(oth)) * *{ * * * *return FALSE; * *}; * *// если отношения между НПС и крадущимся НПС дружеские * *if(Npc_GetAttitude(slf,oth) == ATT_FRIENDLY) * *{ * * * *return FALSE; * *}; * *// если НПС охраняет ворота (Примечание: необходимо self заменить на slf) * *if(C_NpcIsGateGuard(self)) * *{ * * * *return FALSE; * *}; * *return TRUE; };
|