|
Re: Уроки скриптологии
Система шутить перестала, можно перейти и к делу.
// ************************************************ // Должен ли НПС обыскать тело // ************************************************
// ================================================ // Аргументы: // ------------------------------------------------ // slf - обыскивающий НПС // неявно: other - обыскиваемый НПС (цель) // ------------------------------------------------ // Возвращаемое значение: // TRUE - да, FALSE - нет. // ================================================
func int C_NpcRansacksAlways(var C_Npc slf) { * *// если НПС Гарвиг и цель имеет "Святой молот" * *if(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Garwig)) && (Npc_HasItems(other,Holy_Hammer_MIS) > 0) * *{ * * * *return TRUE; * *}; * *// если НПС Род и цель имеет "Меч Рода" * *if(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Rod)) && (Npc_HasItems(other,ItMw_2h_Rod) > 0) * *{ * * * *return TRUE; * *}; * *return FALSE; };
... ещё файл
// ************************************************** ****************** // Является ли НПС членом подставной гильдии // ************************************************** ******************
// ================================================== ================== // Аргументы: // -------------------------------------------------------------------- // slf - НПС определяющий подставу // oth - проверяемый НПС (обычно ГГ) // -------------------------------------------------------------------- // Возвращаемое значение: // TRUE - да (определяется что ГГ переодет), FALSE - нет. // ================================================== ==================
func int C_PlayerHasFakeGuild(var C_NPC slf,var C_NPC oth) { * *var C_Item itm; * *// получить доспехи ГГ * *itm = Npc_GetEquippedArmor(oth); * *// Примечание: следующие две строки не нужны при условии коррекции функции ниже * *var int NSC_CommentRangerArmor; * *NSC_CommentRangerArmor = TRUE; * *// если НПС игнорирует доспехи, в которые одет ГГ * *if(slf.aivar[AIV_IgnoresArmor] == TRUE) * *{ * * * *return FALSE; * *}; * *// если НПС игнорирует подставную гильдию * *if(slf.aivar[AIV_IgnoresFakeGuild] == TRUE) * *{ * * * *return FALSE; * *}; * *// если НПС является охранником ворот (Примечание: правильнее вместо self написать slf) * *if(C_NpcIsGateGuard(self) == TRUE) * *{ * * * *return FALSE; * *}; * *// если НПС бандит и ГГ переодетый в бандита * *if(slf.guild == GIL_BDT) && C_PlayerIsFakeBandit(slf,oth) * *{ * * * *// если ГГ без брони * * * *if(Npc_HasEquippedArmor(oth) == FALSE) * * * *{ * * * * * *return TRUE; * * * *} * * * *else * * * *{ * * * * * *return FALSE; * * * *}; * *}; * * *// если ГГ без брони * *if(Npc_HasEquippedArmor(oth) == FALSE) * *{ * * * *return FALSE; * *} * *// если гильдии НПС и ГГ одинаковы (Примечание: else здесь лишнее) * *else if(slf.guild == oth.guild) * *{ * * * *// если доспехи ГГ "Кольчуга 'Кольца Воды'" * * * *if(Hlp_IsItem(itm,ITAR_RANGER_Addon) == TRUE) * * * *{ * * * * * *// Примечание: выполняется всегда, поэтому условие if можно удалить, оставив только return TRUE; * * * * * *if(NSC_CommentRangerArmor == TRUE) * * * * * *{ * * * * * * * *return TRUE; * * * * * *} * * * * * *// Примечание: блок else можно удалить * * * * * *else * * * * * *{ * * * * * * * *return FALSE; * * * * * *}; * * * * *}; * * * *// если ГГ не принадлежит к гильдии и одет в * * * *if(oth.guild == GIL_NONE) * * * *&& ((Hlp_IsItem(itm,ITAR_VLK_L) == TRUE) * * * *// "Одежду горожанина" * * * *¦¦ (Hlp_IsItem(itm,ITAR_VLK_M) == TRUE) * * * * // или "Одежду горожанина" * * * *¦¦ (Hlp_IsItem(itm,ITAR_VLK_H) == TRUE) * * * * // или "Одежду горожанина" (Примечание: кто может пояснить, чем отличаются эти одежды?) * * * *¦¦ (Hlp_IsItem(itm,ITAR_BAU_L) == TRUE) * * * * // или "Одежду крестьянина" * * * *¦¦ (Hlp_IsItem(itm,ITAR_BAU_M) == TRUE) * * * * // или "Одежду крестьянина 2" * * * *¦¦ (Hlp_IsItem(itm,ITAR_Leather_L) == TRUE)) * *// или "Кожаные доспехи" * * * *{ * * * * * *return FALSE; * * * *} * * * *// Примечание: далее до конца блока все else можно удалить * * * *// если ГГ милиционер и одет в * * * *else if(oth.guild == GIL_MIL) * * * *&& ((Hlp_IsItem(itm,ITAR_MIL_L) == TRUE) * * * *// "Легкие доспехи ополчения" * * * *¦¦ (Hlp_IsItem(itm,ITAR_MIL_M) == TRUE)) * * * *// или "Тяжелые доспехи ополчения" * * * *{ * * * * * *return FALSE; * * * *} * * * *// если ГГ паладин и одет в * * * *else if(oth.guild == GIL_PAL) * * * *&& ((Hlp_IsItem(itm,ITAR_PAL_M) == TRUE) * * * *// "Доспехи паладина" * * * *¦¦ (Hlp_IsItem(itm,ITAR_PAL_H) == TRUE)) * * * *// или "Доспехи паладина" (улучшенные) * * * *{ * * * * * *return FALSE; * * * *} * * * *// если ГГ наемник и одет в * * * *else if(oth.guild == GIL_SLD) * * * *&& ((Hlp_IsItem(itm,ITAR_SLD_L) == TRUE) * * * *// "Легкие доспехи наемника" * * * *¦¦ (Hlp_IsItem(itm,ITAR_SLD_M) == TRUE) * * * * // или "Средние доспехи наемника" * * * *¦¦ (Hlp_IsItem(itm,ITAR_SLD_H) == TRUE)) * * * *// или "Тяжелые доспехи наемника" * * * *{ * * * * * *return FALSE; * * * *} * * * *// если ГГ охотник на драконов и одет в * * * *else if(oth.guild == GIL_DJG) * * * *&& ((Hlp_IsItem(itm,ITAR_SLD_L) == TRUE) * * * *// "Легкие доспехи наемника" * * * *¦¦ (Hlp_IsItem(itm,ITAR_SLD_M) == TRUE) * * * * // или "Средние доспехи наемника" * * * *¦¦ (Hlp_IsItem(itm,ITAR_SLD_H) == TRUE) * * * * // или "Тяжелые доспехи наемника" * * * *¦¦ (Hlp_IsItem(itm,ITAR_DJG_L) == TRUE) * * * * // или "Легкие доспехи охотника на драконов" * * * *¦¦ (Hlp_IsItem(itm,ITAR_DJG_M) == TRUE) * * * * // или "Средние доспехи охотника на драконов" * * * *¦¦ (Hlp_IsItem(itm,ITAR_DJG_H) == TRUE) * * * * // или "Тяжелые доспехи охотника на драконов" * * * *¦¦ (Hlp_IsItem(itm,ITAR_DJG_Crawler) == TRUE)) *// или "Доспехи из панцирей ползунов" * * * *{ * * * * * *return FALSE; * * * *} * * * *// если ГГ маг послушник и одет в "Робу послушника" * * * *else if(oth.guild == GIL_NOV) && (Hlp_IsItem(itm,ITAR_NOV_L) == TRUE) * * * *{ * * * * * *return FALSE; * * * *} * * * *// если ГГ маг огня и одет в * * * *else if(oth.guild == GIL_KDF) * * * *&& ((Hlp_IsItem(itm,ITAR_KDF_L) == TRUE) * * * *// "Робу мага огня" * * * *¦¦ (Hlp_IsItem(itm,ITAR_KDF_H) == TRUE)) * * * *// или "Тяжелую робу огня" * * * *{ * * * * * *return FALSE; * * * *} * * * *else * * * *{ * * * * * *return TRUE; * * * *}; * * *}; * *return FALSE; }; * * *
... ещё файл
// ************************************************** ****************** // Является ли НПС членом гильдии бандитов // ************************************************** ******************
// ================================================== ================== // Аргументы: // -------------------------------------------------------------------- // slf - НПС определяющий подставу // oth - проверяемый НПС (обычно ГГ) // -------------------------------------------------------------------- // Возвращаемое значение: // TRUE - да (ГГ "принадлежит" к бандитам), FALSE - нет. // ================================================== ==================
func int C_PlayerIsFakeBandit(var C_NPC slf,var C_NPC oth) { * *var C_Item itm; * *// если НПС игнорирует доспехи, в которые одет ГГ * *if(slf.aivar[AIV_IgnoresArmor] == TRUE) * *{ * * * *return FALSE; * *}; * *// если НПС игнорирует подставную гильдию * *if(slf.aivar[AIV_IgnoresFakeGuild] == TRUE) * *{ * * * *return FALSE; * *}; * *// если НПС пират * *if(slf.guild == GIL_PIR) * *{ * * * *return FALSE; * *}; * * *// если ГГ одет в броню * *if(Npc_HasEquippedArmor(oth) == TRUE) * *{ * * * *// получить доспехи ГГ * * * *itm = Npc_GetEquippedArmor(oth); * * * *// если доспехи ГГ * * * *if((Hlp_IsItem(itm,ITAR_BDT_M) == TRUE) * * * * // "Средняя бандитская кольчуга" * * * *¦¦ (Hlp_IsItem(itm,ItAR_Thorus_Addon) == TRUE) *// или "Тяжелая кольчуга гардиста" * * * *¦¦ (Hlp_IsItem(itm,ITAR_BDT_H) == TRUE)) * * * *// или "Тяжелая бандитская кольчуга" * * * *{ * * * * * *return TRUE; * * * *}; * * * *return FALSE; * *} * *// если НПС бандит и текущий уровень - Яркендар и ГГ может разговаривать с бандитами (Равен убит) * *if(slf.guild == GIL_BDT) && (CurrentLevel == ADDONWORLD_ZEN) && (Player_HasTalkedToBanditCamp == TRUE) * *{ * * * *return TRUE; * *}; * *return FALSE; };
... ещё файл
// ************************************************** ****************** // Является ли НПС членом гильдии пиратов // ************************************************** ******************
// ================================================== ================== // Аргументы: // -------------------------------------------------------------------- // slf - НПС определяющий подставу // oth - проверяемый НПС (обычно ГГ) // -------------------------------------------------------------------- // Возвращаемое значение: // TRUE - да (ГГ "принадлежит" к пиратам), FALSE - нет. // ================================================== ==================
func int C_PlayerIsFakePirate(var C_NPC slf,var C_NPC oth) { * *var C_Item itm; * *// если НПС игнорирует доспехи, в которые одет ГГ * *if(slf.aivar[AIV_IgnoresArmor] == TRUE) * *{ * * * *return FALSE; * *}; * *// если НПС игнорирует подставную гильдию * *if(slf.aivar[AIV_IgnoresFakeGuild] == TRUE) * *{ * * * *return FALSE; * *}; * *// если ГГ одет в броню (Примечание: правильнее вместо other написать oth) * *if(Npc_HasEquippedArmor(other) == TRUE) * *{ * * * *// получить доспехи ГГ * * * *itm = Npc_GetEquippedArmor(oth); * * * *// если доспехи ГГ * * * *if((Hlp_IsItem(itm,ITAR_PIR_L_Addon) == TRUE) * // "Одежда пирата" * * * *¦¦ (Hlp_IsItem(itm,ItAR_PIR_M_Addon) == TRUE) * // или "Доспехи пирата" * * * *¦¦ (Hlp_IsItem(itm,ITAR_PIR_H_Addon) == TRUE)) *// или "Одежда капитана" * * * *{ * * * * * *return TRUE; * * * *}; * *}; * *return FALSE; };
|