Показать сообщение отдельно
Старый 02.04.2005, 10:07   #133
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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;
};

Ответить с цитированием