|
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() { * *// Примечание: неважно что функция пустая, ничего с ней делать нельзя, существует взаимосвязь с экзешником. * *// Без этой функции отношения между людьми не будут установлены!!! };
|