Показать сообщение отдельно
Старый 05.03.2005, 09:58   #121
Vam

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

По умолчанию Re: Уроки скриптологии

// ************************************************** ***********************
// Обработчик состояния комментирования подставной гильдии (переодетого ГГ)
// -------------------------------------------------------------------------
// self - НПС источник информации, other - НПС приемник информации (обычно ГГ)
// ************************************************** ***********************

func void ZS_CommentFakeGuild()
{
* *// разрешить минимальный набор восприятий
* *Perception_Set_Minimal();
* *// НПС встает
* *AI_StandUp(self);
* *// если НПС не сидит
* *if(!C_BodystateContains(self,BS_SIT))
* *{ *
* * * *// НПС поворачивается к ГГ
* * * *B_TurnToNpc(self,other);
* *};
* *// если ГГ не сидит
* *if(!C_BodystateContains(other,BS_SIT))
* *{ *
* * * *// ГГ поворачивается к НПС
* * * *B_TurnToNpc(other,self);
* * * *// если расстояние между ГГ и НПС < 80 см
* * * *if(Npc_GetDistToNpc(other,self) < 80)
* * * *{
* * * * * *// ГГ делает шаг назад
* * * * * *AI_Dodge(other);
* * * *};
* *};
* *// если на ГГ одеты доспехи
* *if(Npc_HasEquippedArmor(other) == TRUE)
* *{
* * * *var C_Item itm;
* * * *// получить ссылку на доспехи
* * * *itm = Npc_GetEquippedArmor(other); *
* * * *// если НПС милиционер или паладин
* * * *if(self.guild == GIL_MIL ¦¦ self.guild == GIL_PAL)
* * * *{
* * * * * *// НПС говорит ГГ (SVM фраза "Ты солдат! Одевайся соответственно.")
* * * * * *B_Say (self,other, "$ADDON_WRONGARMOR_MIL");
* * * *}
* * * *// иначе, если НПС маг послушник или маг огня
* * * *else if(self.guild == GIL_NOV ¦¦ self.guild == GIL_KDF)
* * * *{
* * * * * *// НПС говорит ГГ (SVM фраза "Эта одежда не соответствует нашему ордену. Переоденься.")
* * * * * *B_Say(self,other,"$ADDON_WRONGARMOR_KDF");
* * * *}
* * * *// иначе, если НПС наемник или охотник на драконов
* * * *else if(self.guild == GIL_SLD ¦¦ self.guild == GIL_DJG)
* * * *{
* * * * * *// НПС говорит ГГ (SVM фраза "В каком виде ты тут бродишь? Одень что-то приличное.")
* * * * * *B_Say(self,other,"$ADDON_WRONGARMOR_SLD");
* * * *}
* * * *else // иначе (другие гильдии)
* * * *{
* * * * * *// НПС говорит ГГ (SVM фраза "Это не твоя одежда. Я с тобой не буду говорить.")
* * * * * *B_Say(self,other,"$ADDON_WRONGARMOR");
* * * *}; *
* *}
* *else // иначе (ГГ без доспехов)
* *{
* * * *// если НПС бандит
* * * *if(self.guild == GIL_BDT)
* * * *{
* * * * * *// НПС говорит ГГ (SVM фраза "Да на тебе даже кольчуги нет. Проваливай!")
* * * * * *B_Say(self,other,"$ADDON_NOARMOR_BDT");
* * * *};
* *};
};

... иеще файл

// **************************************
// Функция подготовки НПС боеприпасов
// **************************************

// ======================================
// Аргументы:
// --------------------------------------
// slf - экипируемый НПС
// ======================================

func void B_CreateAmmo(var C_NPC slf)
{
* *var C_ITEM rangedWeapon;
* *// если НПС находится в боевом режиме с оружием дальнего радиуса поражения
* *if(Npc_IsInFightMode(slf,FMODE_FAR))
* *{
* * * *// получить оружие, которое НПС держит в руках
* * * *rangedWeapon = Npc_GetReadiedWeapon(slf);
* *}
* *// иначе, если НПС экипирован оружием дальнего радиуса поражения
* *else if(Npc_HasEquippedRangedWeapon(slf))
* *{
* * * *// получить оружие дальнего радиуса поражения, которым экипирован НПС
* * * *rangedWeapon = Npc_GetEquippedRangedWeapon(slf);
* *}
* *else // иначе
* *{
* * * *return;
* *};
* *// если боезапас - Стрела
* *if(rangedWeapon.munition == ItRw_Arrow)
* *{
* * * *// если у НПС < 10 стрел
* * * *if(Npc_HasItems(slf,ItRw_Arrow) < 10)
* * * *{
* * * * * *// создать в инвентаре НПС 10 стрел
* * * * * *CreateInvItems(slf,ItRw_Arrow,10);
* * * *};
* *}
* *// иначе, если боезапас - Болт
* *else if(rangedWeapon.munition == ItRw_Bolt)
* *{
* * * *// если у НПС < 10 болтов
* * * *if(Npc_HasItems(slf,ItRw_Bolt) < 10)
* * * *{
* * * * * *// создать в инвентаре НПС 10 болтов
* * * * * *CreateInvItems(slf,ItRw_Bolt,10);
* * * *};
* *}; *
};

... и еще

// **************************************
// Функция добивания НПС
// **************************************

// ======================================
// Аргументы:
// --------------------------------------
// slf *- НПС агрессор
// oth *- НПС жертва
// ======================================

func void B_FinishingMove(var C_NPC slf,var C_Npc oth)
{
* *// если агрессор не находится в режиме сражения с оружием ближнего радиуса поражения
* *if(!Npc_IsInFightMode(slf,FMODE_MELEE))
* *{
* * * *// агрессор ставится в режим сражения с оружием Ржавый меч
* * * *Npc_SetToFightMode(slf,ItMw_1h_MISC_Sword);
* *};
* *// агрессор добивает жертву
* *AI_FinishingMove (slf, oth);
};

... и еще

// ********************************
// НПС перестает смотреть на цель
// ********************************

// ================================
// Аргументы:
// --------------------------------
// slf *- смотрящий НПС
// ================================

func void B_StopLookAt(var C_NPC slf)
{
* *var C_NPC target;
* *// получить цель, на которую смотрит НПС
* *target = Npc_GetLookAtTarget(slf);
* *// если цель существует
* *if(Hlp_IsValidNpc(target))
* *{
* * * *// НПС перестает смотреть на цель
* * * *AI_StopLookAt (slf);
* *};
};

// ***************************
// НПС смотрит на другого НПС
// ***************************

// ===========================
// Аргументы:
// ---------------------------
// slf *- смотрящий НПС
// oth *- НПС цель
// ===========================

func void B_LookAtNpc(var C_NPC slf,var C_NPC oth)
{
* *// НПС перестает смотреть на старую цель
* *B_StopLookAt(slf);
* *// НПС смотрит на новую цель
* *AI_LookAtNpc(slf,oth);
};

// **************************************
// НПС поворачивается к другому НПС
// **************************************

// ======================================
// Аргументы:
// --------------------------------------
// slf *- поворачивающийся НПС
// oth *- НПС цель
// ======================================

func void B_TurnToNpc(var C_NPC slf,var C_Npc oth)
{
* *// НПС поворачивается к цели
* *AI_TurnToNpc(slf,oth);
};

... и еще

// *********************************
// Перевод НПС в исходное состояние
// *********************************

// ================================
// Аргументы:
// --------------------------------
// slf *- НПС, переводимый в исходное состояние
// ================================

func void B_ResetAll(var C_NPC slf)
{
* *// НПС перестает смотреть на цель
* *B_StopLookAt(slf);
* *// НПС прячет оружие
* *AI_RemoveWeapon(slf);
};

... и еще

// *******************************
// НПС говорит SVM фразу
// *******************************

// ===============================
// Аргументы:
// -------------------------------
// slf *- говорящий НПС
// oth *- слушающий НПС
// text - имя переменной класса C_SVM, которая содержит произносимую фразу (должно начинаться с символа $)
// ===============================

func void B_Say(var C_NPC slf,var C_Npc oth,var string text)
{
* *// НПС говорит другому НПС SVM (Standart Voice Module) фразу
* *AI_OutputSVM(slf,oth,text);
};


Функция B_RemoveWeapon нигде не вызывается и файл B_RemoveWeapon.d может быть удален.
Ответить с цитированием