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

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

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

* *13. Функция создания трофеев у убитых монстров.

Файл B_GiveDeathInv.d

// ************************************************** **************
// Функция создания трофеев у убитых монстров.
// ************************************************** **************
// Аргументы: slf - убитый монстр

func void B_GiveDeathInv(var C_NPC slf)
{
* *// если труп обыскан
* *if(slf.aivar[AIV_DeathInvGiven] == TRUE)
* *{
* * * *return;
* *};
* *// если ГГ умеет добывать зубы
* *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Teeth] == TRUE)
* *{
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_WOLF) * * * * * *{ * CreateInvItems(slf,ItAt_Teeth * * ,2); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_ICEWOLF) * * * * { * CreateInvItems(slf,ItAt_Teeth * * ,2); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_WARG) * * * * * *{ * CreateInvItems(slf,ItAt_Teeth * * ,2); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SNAPPER) * * * * { * CreateInvItems(slf,ItAt_Teeth * * ,2); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_DRAGONSNAPPER) * { * CreateInvItems(slf,ItAt_Teeth * * ,2); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_RAZOR) * * * * * { * CreateInvItems(slf,ItAt_Teeth * * ,2); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SHADOWBEAST) * * { * CreateInvItems(slf,ItAt_Teeth * * ,2); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_BLOODHOUND) * * *{ * CreateInvItems(slf,ItAt_Teeth * * ,2); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SWAMPSHARK) * * *{ * CreateInvItems(slf,ItAt_SharkTeeth,1); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_TROLL) * * * * * { * CreateInvItems(slf,ItAt_TrollTooth,2); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_TROLL_BLACK) * * { * CreateInvItems(slf,ItAt_TrollTooth,4); *};
* *};
* *// если ГГ умеет добывать когти
* *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Claws] == TRUE)
* *{
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_WARAN) * * * * * { * CreateInvItems(slf,ItAt_Claw * * *,2); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN) * * * { * CreateInvItems(slf,ItAt_Claw * * *,4); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SNAPPER) * * * * { * CreateInvItems(slf,ItAt_Claw * * *,2); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_RAZOR) * * * * * { * CreateInvItems(slf,ItAt_Claw * * *,2); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_DRAGONSNAPPER) * { * CreateInvItems(slf,ItAt_Claw * * *,4); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SHADOWBEAST) * * { * CreateInvItems(slf,ItAt_Claw * * *,4); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_BLOODHOUND) * * *{ * CreateInvItems(slf,ItAt_Claw * * *,4); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_LURKER) * * * * *{ * CreateInvItems(slf,ItAt_LurkerClaw,1); *}; * * *
* *};
* *// если ГГ умеет добывать шкуру
* *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Fur] == TRUE)
* *{
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SHEEP) * * * * * { * CreateInvItems(slf,ItAt_SheepFur * * * ,1); };
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_WOLF) * * * * * *{ * CreateInvItems(slf,ItAt_WolfFur * * * *,1); };
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_ICEWOLF) * * * * { * CreateInvItems(slf,ItAt_WolfFur * * * *,1); };
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_WARG) * * * * * *{ * CreateInvItems(slf,ItAt_WargFur * * * *,1); };
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SHADOWBEAST) * * { * CreateInvItems(slf,ItAt_ShadowFur * * *,1); };
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_TROLL) * * * * * { * CreateInvItems(slf,ItAt_TrollFur * * * ,1); };
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_TROLL_BLACK) * * { * CreateInvItems(slf,ItAt_TrollBlackFur *,1); }; *
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_Keiler) * * * * *{ * CreateInvItems(slf,ItAt_Addon_KeilerFur,1); };
* *};
* *// если ГГ умеет добывать кожу рептилий
* *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_ReptileSkin] == TRUE)
* *{
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_LURKER) * * * * *{ * CreateInvItems(slf,itat_LurkerSkin,1); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SNAPPER) * * * * { * CreateInvItems(slf,itat_LurkerSkin,1); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_RAZOR) * * * * * { * CreateInvItems(slf,itat_LurkerSkin,1); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_DRAGONSNAPPER) * { * CreateInvItems(slf,itat_LurkerSkin,1); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_WARAN) * * * * * { * CreateInvItems(slf,itat_LurkerSkin,1); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN) * * * { * CreateInvItems(slf,itat_LurkerSkin,1); *};
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SWAMPSHARK) * * *{ * CreateInvItems(slf,ItAt_SharkSkin ,1); *}; *
* *};
* *// если ГГ умеет добывать сердца
* *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Heart] == TRUE)
* *{
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_STONEGOLEM) * * *{ * CreateInvItems(slf,ItAt_StoneGolemHeart,1); };
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_FIREGOLEM) * * * { * CreateInvItems(slf,ItAt_FireGolemHeart ,1); };
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_ICEGOLEM) * * * *{ * CreateInvItems(slf,ItAt_IceGolemHeart *,1); };
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_DEMON) * * * * * { * CreateInvItems(slf,ItAt_DemonHeart * * ,1); };
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_DEMON_LORD) * * *{ * CreateInvItems(slf,ItAt_DemonHeart * * ,1); };
* *};
* *// если ГГ умеет добывать рог мракориса
* *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_ShadowHorn] == TRUE)
* *{
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_SHADOWBEAST) * * { * CreateInvItems(slf,ItAt_ShadowHorn,1); *};
* *};
* *// если ГГ умеет добывать огненный язык
* *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_FireTongue] == TRUE)
* *{
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN) * * * { * CreateInvItems(slf,ItAt_WaranFiretongue,1); };
* *};
* *// если ГГ умеет добывать крылья кровяного шершня
* *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_BFWing] == TRUE)
* *{
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_BLOODFLY) * * * *{ * CreateInvItems(slf,ItAt_Wing,2); };
* *};
* *// если ГГ умеет добывать жало кровяного шершня
* *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_BFSting] == TRUE)
* *{
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_BLOODFLY) * * * *{ * CreateInvItems(slf,ItAt_Sting,1); };
* *};
* *// если ГГ умеет добывать жвало
* *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Mandibles] == TRUE)
* *{
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_GIANT_BUG) * * * * * { * CreateInvItems(slf,ItAt_BugMandibles, * *1); };
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_MINECRAWLER) * * * * { * CreateInvItems(slf,ItAt_CrawlerMandibles,1); };
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_MINECRAWLERWARRIOR) *{ * CreateInvItems(slf,ItAt_CrawlerMandibles,1); };
* *};
* *// если ГГ умеет добывать панцирь ползунов
* *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_CrawlerPlate] == TRUE)
* *{
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_MINECRAWLER) * * * * { * CreateInvItems(slf,ItAt_CrawlerPlate,1); };
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_MINECRAWLERWARRIOR) *{ * CreateInvItems(slf,ItAt_CrawlerPlate,2); };
* *};
* *// если ГГ умеет добывать рог остера
* *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_DrgSnapperHorn] == TRUE)
* *{
* * * *if(slf.aivar[AIV_MM_REAL_ID] == ID_DRAGONSNAPPER) * { * CreateInvItems(slf,ItAt_DrgSnapperHorn,2); *};
* *};
* *// если ГГ умеет добывать чешую дракона
* *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_DragonScale] == TRUE)
* *{
* * * *if(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(FireDragonIsland)) * { * CreateInvItems(slf,ItAt_DragonScale,12); };
* * * *if(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Undeaddragon)) * * * { * CreateInvItems(slf,ItAt_DragonScale,12); };
* *};
* *// если ГГ умеет добывать кровь дракона
* *if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_DragonBlood] == TRUE)
* *{
* * * *if(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(FireDragonIsland)) * { * CreateInvItems(slf,ItAt_DragonBlood,2); };
* * * *if(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Undeaddragon)) * * * { * CreateInvItems(slf,ItAt_DragonBlood,2); };
* *};
* *// что и у кого может добыть ГГ без умений
* *if * * (slf.aivar[AIV_MM_REAL_ID] *== ID_MEATBUG) * * * { * CreateInvItems(slf,ItAt_MeatbugFlesh * * * * ,1); }
* *else if(slf.aivar[AIV_MM_REAL_ID] *== ID_DRAGON_UNDEAD) { * CreateInvItems(slf,ItAt_UndeadDragonSoulStone,1); }
* *else if(slf.aivar[AIV_MM_REAL_ID] *== ID_DRAGON_FIRE) * { * CreateInvItems(slf,ItAt_FireDragonHeart * * *,1); }
* *else if(slf.aivar[AIV_MM_REAL_ID] *== ID_DRAGON_ICE) * *{ * CreateInvItems(slf,ItAt_IceDragonHeart * * * ,1); }
* *else if(slf.aivar[AIV_MM_REAL_ID] *== ID_DRAGON_ROCK) * { * CreateInvItems(slf,ItAt_RockDragonHeart * * *,1); }
* *else if(slf.aivar[AIV_MM_REAL_ID] *== ID_DRAGON_SWAMP) *{ * CreateInvItems(slf,ItAt_SwampDragonHeart * * ,1); }
* *else if(slf.aivar[AIV_MM_REAL_ID] *== ID_GOBBO_SKELETON){ * CreateInvItems(slf,ItAt_GoblinBone * * * * * ,1); }
* *else if(slf.aivar[AIV_MM_REAL_ID] *== ID_SKELETON) * * *{ * CreateInvItems(slf,ItAt_SkeletonBone * * * * ,1); }
* *else if(self.aivar[AIV_MM_REAL_ID] == ID_BLATTCRAWLER) *{ * CreateInvItems(slf,ItAt_Addon_BCKopf * * * * ,1); };
* *// что может ГГ случайным образом добыть из гоблина
* *GoblinGreen_Randomizer = Hlp_Random(100);
* *if * * (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) && (GoblinGreen_Randomizer == 0)
* *{ * CreateInvItems(slf,ItMi_SilverRing,1); *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) && (GoblinGreen_Randomizer <= 5)
* *{ * CreateInvItems(slf,ItPl_Mushroom_01,1); }
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) && (GoblinGreen_Randomizer <= 15)
* *{ * CreateInvItems(slf,Itmi_Gold,5); }
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) && (GoblinGreen_Randomizer <= 30)
* *{ * CreateInvItems(slf,ItFo_Fish,1); }
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN) && (GoblinGreen_Randomizer <= 50)
* *{ * CreateInvItems(slf,ItMi_Gold,2); };
* *// что может ГГ случайным образом добыть из черного гоблина
* *GoblinBlack_Randomizer = Hlp_Random(100);
* *if * * (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) && (GoblinBlack_Randomizer == 0)
* *{ * CreateInvItems(slf,ItMi_GoldRing,1); }
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) && (GoblinBlack_Randomizer <= 5)
* *{ * CreateInvItems(slf,ItFo_Fish,1); }
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) && (GoblinBlack_Randomizer <= 15)
* *{ * CreateInvItems(slf,Itmi_Gold,10); }
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) && (GoblinBlack_Randomizer <= 30)
* *{ * CreateInvItems(slf,ItPl_Mushroom_02,1); }
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK) && (GoblinBlack_Randomizer <= 50)
* *{ * CreateInvItems(slf,ItMi_Gold,5); };
* *// что может ГГ случайным образом добыть из орков
* *Orc_Randomizer *= Hlp_Random (10);
* *// воин орков
* *if * * (slf.aivar[AIV_MM_REAL_ID] == ID_ORCWARRIOR) && (Orc_Randomizer == 0) * * * *
* *{ *
* * * *CreateInvItems(slf,ItPo_Health_02,1);
* * * *CreateInvItems(slf,ItMI_Gold * * ,2); *
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCWARRIOR) && (Orc_Randomizer == 1)
* *{ *
* * * *CreateInvItems(slf,ItPo_Health_01,1);
* * * *CreateInvItems(slf,ItFoMuttonRaw ,1); *
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCWARRIOR) && (Orc_Randomizer == 2)
* *{ *
* * * *CreateInvItems(slf,ItPo_Health_01,2 *);
* * * *CreateInvItems(slf,ItMI_Gold * * ,18 ); *
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCWARRIOR) && (Orc_Randomizer == 3)
* *{ *
* * * *CreateInvItems(slf,ItFo_Booze * * ,1);
* * * *CreateInvItems(slf,ItMi_SilverRing,1); *
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCWARRIOR) && (Orc_Randomizer == 4)
* *{ *
* * * *CreateInvItems(slf,ItPl_Health_Herb_01,1);
* * * *CreateInvItems(slf,ItMI_Gold * * * * *,4); *
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCWARRIOR) && (Orc_Randomizer <= 7)
* *{ *
* * * *CreateInvItems(slf,ItMI_Gold,9);
* *};
* *// шаман орков
* *if * * (slf.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) && (Orc_Randomizer == 0)
* *{
* * * *CreateInvItems(slf,ItPo_Mana_03,1);
* * * *CreateInvItems(slf,ItMI_Gold * ,5);
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) && (Orc_Randomizer == 1)
* *{
* * * *CreateInvItems(slf,ItPo_Mana_02,2);
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) && (Orc_Randomizer == 2)
* *{
* * * *CreateInvItems(slf,ItPo_Mana_02,1);
* * * *CreateInvItems(slf,ItMi_Coal * ,1);
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) && (Orc_Randomizer == 3)
* *{
* * * *CreateInvItems(slf,ItPo_Mana_01,2);
* * * *CreateInvItems(slf,ItMI_Gold * ,12); * *
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) && (Orc_Randomizer == 4)
* *{
* * * *CreateInvItems(slf,ItPo_Mana_01,1);
* * * *CreateInvItems(slf,ItMi_Sulfur ,1);
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCSHAMAN) && (Orc_Randomizer <= 8 )
* *{
* * * *CreateInvItems(slf,ItPl_Mana_Herb_02,2 );
* * * *CreateInvItems(slf,ItMI_Gold * * * *,8 ); * *
* *};
* *// элитный воин орков
* *if * * (slf.aivar[AIV_MM_REAL_ID] == ID_ORCELITE) && (Orc_Randomizer == 0)
* *{
* * * *CreateInvItems(slf,ItAt_WolfFur *,1);
* * * *CreateInvItems(slf,ItPo_Health_03,1);
* * * *CreateInvItems(slf,ItFoMutton * *,2);
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCELITE) && (Orc_Randomizer == 1)
* *{
* * * *CreateInvItems(slf,ItMi_GoldRing ,1);
* * * *CreateInvItems(slf,ItPo_Health_01,1);
* * * *CreateInvItems(slf,ItMi_Gold * * ,26);
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCELITE) && (Orc_Randomizer == 2)
* *{
* * * *CreateInvItems(slf,ItSc_LightHeal,1);
* * * *CreateInvItems(slf,ItLSTorch * * ,2);
* * * *CreateInvItems(slf,ItAt_Teeth * *,1);
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCELITE) && (Orc_Randomizer <= 5)
* *{
* * * *CreateInvItems(slf,ItMi_Gold * * ,19);
* * * *CreateInvItems(slf,ItPo_Health_02,1);
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCELITE) && (Orc_Randomizer == 6)
* *{
* * * *CreateInvItems(slf,ItAt_WargFur,1);
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_ORCELITE) && (Orc_Randomizer <= 9)
* *{
* * * *CreateInvItems(slf,ItMi_Gold * * ,22);
* * * *CreateInvItems(slf,ItPo_Health_01,1);
* *};
* *// что может ГГ случайным образом добыть из демонов
* *if * * (slf.aivar[AIV_MM_REAL_ID] == ID_DEMON) && (Orc_Randomizer == 0)
* *{
* * * *CreateInvItems(slf,ItPo_Mana_03 ,2);
* * * *CreateInvItems(slf,ItMi_GoldRing,1); * *
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_DEMON) && (Orc_Randomizer <= 2)
* *{
* * * *CreateInvItems(slf,ItPo_Mana_03 *,1);
* * * *CreateInvItems(slf,ItPo_Health_02,1);
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_DEMON) && (Orc_Randomizer <= 6)
* *{
* * * *CreateInvItems(slf,ItPo_Mana_02,2);
* * * *CreateInvItems(slf,ItMi_Pitch *,1);
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_DEMON)
* *{
* * * *CreateInvItems(slf,ItPo_Mana_02 *,1);
* * * *CreateInvItems(slf,ItPo_Health_02,1); *
* *};
* *// что может ГГ случайным образом добыть из лордов демонов
* *if * * (slf.aivar[AIV_MM_REAL_ID] == ID_DEMON_LORD) && (Orc_Randomizer <= 1)
* *{
* * * *CreateInvItems(slf,ItPo_Mana_03 *,2);
* * * *CreateInvItems(slf,ItPo_Health_03,2);
* * * *CreateInvItems(slf,ItSc_SumDemon ,1); *
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_DEMON_LORD) && (Orc_Randomizer <= 5)
* *{
* * * *CreateInvItems(slf,ItPo_Mana_03 *,2);
* * * *CreateInvItems(slf,ItPo_Health_03,2);
* *}
* *else if(slf.aivar[AIV_MM_REAL_ID] == ID_DEMON_LORD)
* *{
* * * *CreateInvItems(slf,ItPo_Mana_03 *,1);
* * * *CreateInvItems(slf,ItPo_Health_03,1); *
* *}; *
* *// установить флаг труп обыскан
* *slf.aivar[AIV_DeathInvGiven] = TRUE;
};


* *14. Функция передачи предметов от одного НПС другому.

Файл B_GiveInvItems.d

// ************************************************** **************
// Функция передачи предметов от одного НПС другому
// ************************************************** **************
// Аргументы: giver - дающий НПС, taker - берущий НПС, itemInstance - предмет, amount - кол-во предметов
// Возвращаемое значение: TRUE - предмет(ы) переданы, FALSE - передача невозможна

// Внимание: аргумент itemInstance является переопределенным типом (C_Item -> int)

func int B_GiveInvItems(var C_NPC giver,var C_NPC taker,var int itemInstance,var int amount)
{
* *// если дающий ГГ
* *if(Npc_IsPlayer(giver))
* *{
* * * *// если кол-во передаваемых предметов больше имеющихся
* * * *if(amount > Npc_HasItems(giver,itemInstance))
* * * *{
* * * * * *return FALSE;
* * * *};
* *};
* *// если передавать ничего не надо
* *if(amount == 0)
* *{
* * * *return TRUE;
* *};
* *// удалить предметы у дающего
* *Npc_RemoveInvItems(giver,itemInstance,amount);
* *// дать предметы берущему
* *CreateInvItems(taker,itemInstance,amount);
* *var string concatText;
* *var string itemname;
* *// имя предмета
* *itemname = item.name;
* *// если дающий ГГ
* *if(Npc_IsPlayer(giver))
* *{
* * * *// если деньги
* * * *if(itemInstance == ItMi_Gold)
* * * *{
* * * * * *// вывод строки: amount + " золотых передано"
* * * * * *concatText = ConcatStrings(IntToString(amount),PRINT_GoldGegebe n);
* * * * * *AI_PrintScreen(concatText,-1,YPOS_GoldGiven,FONT_ScreenSmall,2);
* * * *}
* * * *else
* * * *{
* * * * * *// если предмет один
* * * * * *if(amount == 1)
* * * * * *{
* * * * * * * *// вывод строки: itemname + " дают"
* * * * * * * *concatText = ConcatStrings(itemname,PRINT_Addon_gegeben);
* * * * * * * *AI_PrintScreen(concatText,-1,YPOS_ItemGiven,FONT_ScreenSmall,2);
* * * * * *} *
* * * * * *else
* * * * * *{
* * * * * * * *// вывод строки: amount + " предметов передано" + " (" + itemname + ")"
* * * * * * * *concatText = ConcatStrings(IntToString(amount),PRINT_ItemsGegeb en);
* * * * * * * *concatText = ConcatStrings(concatText," (");
* * * * * * * *concatText = ConcatStrings(concatText,itemname);
* * * * * * * *concatText = ConcatStrings(concatText,")");
* * * * * * * *AI_PrintScreen(concatText,-1,YPOS_ItemGiven,FONT_ScreenSmall,2);
* * * * * *}; *
* * * *};
* *}
* *// иначе, если берущий ГГ
* *else if(Npc_IsPlayer(taker))
* *{
* * * *// если деньги
* * * *if(itemInstance == ItMi_Gold)
* * * *{
* * * * * *// вывод строки: amount + " золотых принято"
* * * * * *concatText = ConcatStrings(IntToString(amount),PRINT_GoldErhalt en);
* * * * * *AI_PrintScreen(concatText,-1,YPOS_GoldTaken,FONT_ScreenSmall,2);
* * * *}
* * * *else
* * * *{
* * * * * *// если предмет один
* * * * * *if(amount == 1)
* * * * * *{
* * * * * * * *// вывод строки: itemname + " получают"
* * * * * * * *concatText = ConcatStrings(itemname,PRINT_Addon_erhalten);
* * * * * * * *AI_PrintScreen(concatText,-1,YPOS_ItemTaken,FONT_ScreenSmall,2);
* * * * * *} *
* * * * * *else
* * * * * *{
* * * * * * * *// вывод строки: amount + " предметов принято" + " (" + itemname + ")"
* * * * * * * *concatText = ConcatStrings(IntToString(amount),PRINT_ItemsErhal ten);
* * * * * * * *concatText = ConcatStrings(concatText," (");
* * * * * * * *concatText = ConcatStrings(concatText,itemname);
* * * * * * * *concatText = ConcatStrings(concatText,")");
* * * * * * * *AI_PrintScreen(concatText,-1,YPOS_ItemTaken,FONT_ScreenSmall,2);
* * * * * *};
* * * *};
* *}; *
* *return TRUE;
};


* *15. Функция начисления ГГ экспы.

Файл B_GivePlayerXP.d

// ************************************************** **************
// Функция начисления ГГ экспы
// ************************************************** **************
// Аргументы: add_xp - начисляемая экспа

func void B_GivePlayerXP(var int add_xp)
{
* *// если уровень ГГ равен 0
* *if(hero.level == 0)
* *{
* * * *// до следующего уровня необходимо 500 экспы
* * * *hero.exp_next = 500;
* *};
* *// добавить ГГ экспу
* *hero.exp = hero.exp + add_xp;
* *var string concatText;
* *// вывод текста: "Опыт + " + add_xp
* *concatText = PRINT_XPGained;
* *concatText = ConcatStrings(concatText,IntToString(add_xp));
* *PrintScreen(concatText,-1,YPOS_XPGained,FONT_ScreenSmall,2);
* *// если экспы достаточно для повышения уровня
* *if(hero.exp >= hero.exp_next)
* *{
* * * *// уровень++
* * * *hero.level = hero.level + 1;
* * * *// значение экспы для перехода на новый уровень
* * * *// общая формула - 500* ((hero.level + 2) / 2) * (hero.level + 1))
* * * *hero.exp_next = hero.exp_next + ((hero.level + 1) * 500);
* * * *// увеличить макс. жизнь на 12
* * * *hero.attribute[ATR_HITPOINTS_MAX] = hero.attribute[ATR_HITPOINTS_MAX] + HP_PER_LEVEL;
* * * *// увеличить текущую жизнь на 12
* * * *hero.attribute[ATR_HITPOINTS] = hero.attribute[ATR_HITPOINTS] + HP_PER_LEVEL;
* * * *// увеличить очки обучения на 10
* * * *hero.LP = hero.LP + LP_PER_LEVEL;
* * * *// вывод строки: "Следующий уровень!"
* * * *PrintScreen(PRINT_LevelUp,-1,YPOS_LevelUp,FONT_Screen,2);
* * * *// музычка
* * * *Snd_Play("LevelUp");
* *};
* *// закрыть в дневнике завершенные квесты
* *B_Checklog();
};


* *16. Функция возвращения Грега в Яркендар.

Файл B_GregIsBack.d

// ************************************************** **************
// Функция возвращения Грега в Яркендар
// (вызывается при открытии ГГ сундука Грега в Яркендаре)
// ************************************************** **************

func void GregIsBack_S1()
{
* *// если флаг возврата не установлен
* *if(GregIsBack == FALSE)
* *{
* * * *// вставить Грега в Яркендар
* * * *Wld_InsertNpc(PIR_1320_Addon_Greg,"ADW_PIRATECAMP _GREG"); *
* * * *// сменить распорядки дня
* * * *B_StartOtherRoutine(Bill,"GREGISBACK"); * * * * * * // Билл
* * * *B_StartOtherRoutine(Morgan,"GREGISBACK"); * * * * * // Морган
* * * *B_StartOtherRoutine(AlligatorJack,"GREGISBACK"); * *// Аллигатор Джек
* * * *// вставить расчленителей в каньон
* * * *Wld_InsertNpc(CanyonRazor07,"ADW_CANYON_MINE1_01" );
* * * *Wld_InsertNpc(CanyonRazor08,"ADW_CANYON_PATH_TO_L IBRARY_07A");
* * * *Wld_InsertNpc(CanyonRazor09,"ADW_CANYON_PATH_TO_L IBRARY_36");
* * * *Wld_InsertNpc(CanyonRazor10,"ADW_CANYON_PATH_TO_M INE2_04");
* *};
* *// установить флаг возврата
* *GregIsBack = TRUE;
};


* *17. Функция инициализации отношений между гильдиями людей.

Файл B_InitGuildsAttitudes.d

// ************************************************** **************
// Функция *инициализации отношений между гильдиями людей
// ************************************************** **************

func void B_InitGuildAttitudes()
{
* *// Примечание: неважно что функция пустая, ничего с ней делать нельзя, существует взаимосвязь с экзешником.
* *// Без этой функции отношения между людьми не будут установлены!!!
};


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