|
Re: Уроки скриптологии
// Создать руну Зеленые щупальца (для остальных рун аналогично) func void PC_PrayShrine_UPGRATEBELIARSWEAPON_GreenTentacle() { * *// создать в инвентаре ГГ * *CreateInvItem(hero,ItRu_GreenTentacle); * *// визуальный эффект * *Wld_PlayEffect("spellFX_BeliarsWeapon_Upgrate",se lf,self,0,0,0,F ALSE); * *// вывод текста "Белиар дарит тебе другое заклинание" * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2); * *// музычка * *Snd_Play("CS_Prayer_WaveOfInsanity"); * *// оружие улучшено * *BeliarsWeaponUpgrated = TRUE; * *// удвалить этот пункт выбора меню * *Info_ClearChoices(PC_PrayShrine_UPGRATEBELIARSWEA PON); };
// Создать руну Украсть энергию func void PC_PrayShrine_UPGRATEBELIARSWEAPON_SuckEnergy () { * *CreateInvItem(hero,ItRu_SuckEnergy); * *Wld_PlayEffect("spellFX_BeliarsWeapon_Upgrate",se lf,self,0,0,0,F ALSE); * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2); * * * * *Snd_Play("CS_Prayer_WaveOfInsanity"); * *BeliarsWeaponUpgrated = TRUE; * *Info_ClearChoices(PC_PrayShrine_UPGRATEBELIARSWEA PON); };
// Создать руну Создать стража func void PC_PrayShrine_UPGRATEBELIARSWEAPON_NAME_SPL_Summon Guardian() { * *CreateInvItem(hero,ItRu_SummonGuardian); * *Wld_PlayEffect("spellFX_BeliarsWeapon_Upgrate",se lf,self,0,0,0,F ALSE); * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2); * * * * *Snd_Play("CS_Prayer_WaveOfInsanity"); * *BeliarsWeaponUpgrated = TRUE; * *Info_ClearChoices(PC_PrayShrine_UPGRATEBELIARSWEA PON); };
// Создать руну Ярость Белиара func void PC_PrayShrine_UPGRATEBELIARSWEAPON_BeliarsRage() { * *CreateInvItem(hero,ItRu_BeliarsRage); * *Wld_PlayEffect("spellFX_BeliarsWeapon_Upgrate",se lf,self,0,0,0,F ALSE); * * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2); * *Snd_Play("CS_Prayer_WaveOfInsanity"); * *BeliarsWeaponUpgrated = TRUE; * *Info_ClearChoices(PC_PrayShrine_UPGRATEBELIARSWEA PON); };
// Создать руну Рой func void PC_PrayShrine_UPGRATEBELIARSWEAPON_Swarm() { * *CreateInvItem(hero,ItRu_Swarm); * *Wld_PlayEffect("spellFX_BeliarsWeapon_Upgrate",se lf,self,0,0,0,F ALSE); * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2); * *Snd_Play("CS_Prayer_WaveOfInsanity"); * *BeliarsWeaponUpgrated = TRUE; * *Info_ClearChoices(PC_PrayShrine_UPGRATEBELIARSWEA PON); };
// Создать руну Создать зомби func void PC_PrayShrine_UPGRATEBELIARSWEAPON_summonZombie() { * *CreateInvItem(hero,ItRu_SummonZombie); * *Wld_PlayEffect("spellFX_BeliarsWeapon_Upgrate",se lf,self,0,0,0,F ALSE); * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2); * *Snd_Play("CS_Prayer_WaveOfInsanity"); * *BeliarsWeaponUpgrated = TRUE; * *Info_ClearChoices(PC_PrayShrine_UPGRATEBELIARSWEA PON); };
// Создать руну Крик мертвых func void PC_PrayShrine_UPGRATEBELIARSWEAPON_SPL_Skull() { * *CreateInvItem(hero,ItRu_Skull); * *Wld_PlayEffect("spellFX_BeliarsWeapon_Upgrate",se lf,self,0,0,0,F ALSE); * *PrintScreen(PRINT_Addon_RuneGiven,-1,45,FONT_ScreenSmall,2); * *Snd_Play("CS_Prayer_WaveOfInsanity"); * *BeliarsWeaponUpgrated = TRUE; * *Info_ClearChoices(PC_PrayShrine_UPGRATEBELIARSWEA PON); };
* *19. Функции, связанные с одержимостью ГГ.
Файл B_ScObsession.d
var int SC_IsObsessed; * * * * *// ГГ страдает одержимостью (TRUE) var int SC_ObsessionCounter; * *// счетчик кол-ва проклятий ГГ
// Устранить состояние одержимости НПС // ---------------------------------------------------------------- // Аргумент: heiler - НПС func void B_ClearSCObsession(var C_NPC heiler) * { * *// если НПС не ГГ * *if(Hlp_GetInstanceID(heiler) != Hlp_GetInstanceID(hero)) * *{ * * * *// закончить диалог * * * *AI_StopProcessInfos(heiler); * *}; * *// одержимость снята * *SC_IsObsessed = FALSE; * *// сброс счетчика проклятий * *SC_ObsessionCounter = 0; * *// вывод текста "Ты чувствуешь себя освобожденным!" * *PrintScreen(PRINT_ClearSCObsession,-1,-1,FONT_Screen,3); };
// Установить состояние одержимости НПС // ---------------------------------------------------------------- // Аргумент: dementor - НПС func void B_SCIsObsessed(var C_NPC dementor) * * { * *// если НПС не ГГ * *if(Hlp_GetInstanceID(dementor) != Hlp_GetInstanceID(hero)) * *{ * * * *// закончить диалог * * * *AI_StopProcessInfos(dementor); * *}; * *// если ГГ не имеет амулета Зов Души * *if(Npc_HasItems(hero,ItAm_Prot_BlackEye_Mis) == FALSE) * *{ * * * *// если счетчик проклятий >= 2 * * * *if(SC_ObsessionCounter >= 2) * * * *{ * * * * * *// установить одержимость * * * * * *SC_IsObsessed = TRUE; * * * * * *// вывод текста "Чувство одержимости преследует тебя!" * * * * * *PrintScreen(PRINT_SCIsObsessed,-1,-1,FONT_Screen,2); * * * *}; * * * *// счетчик проклятий ++ * * * *SC_ObsessionCounter = SC_ObsessionCounter + 1; * *}; };
* *20. Функции кладоискателя.
Файл B_ScUsesRake.d
var int RAKEPLACE[50]; * * * * * * * * *// массив флагов клад выкопан (TRUE) const int Greg_FirstSecret *= 1; * * * *// индекс первого клада const int RAKE_BUDDEL_DIST_MAX = 300; * // (не используется) const int RAKE_BUDDEL_DIST_MIN = 200; * // макс. расстояние до клада, на каком можно копать
// ГГ нашел закопанное сокровище // ---------------------------------------------------------------- // Аргумент: itm - найденный предмет func void RakeTreasureSuccess(var C_ITEM itm) { * *// визуальный эффект на предмете * *Wld_PlayEffect("spellFX_ItemAusbuddeln",itm,itm,0 ,0,0,FALSE); * *// ГГ говорит сам себе (SVM фраза) "нашел сокровища" * *B_Say_Overlay(self,self,"$FOUNDTREASURE"); * *// получить экспу (50 * номер Главы) * *B_GivePlayerXP(XP_Ambient); };
// Не используется, можно удалить func void B_SCUsesRake(var C_NPC slf) { };
// Добыть сокровище // ---------------------------------------------------------------- // Данная функция повешена в Спейсере на объект oCMobInter и вызывается после ударов ГГ киркой по красному кресту func void B_SCGetTreasure_S1() { * *// клад выкопал ГГ * *if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(hero)) * *{ * * * *// если ГГ находится не далее 2м от нужной точки и клад в данной точке не выкопан * * * *if((Npc_GetDistToWP(hero,"NW_BIGFARM_LAKE_CAVE_07 ") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[Greg_FirstSecret] == FALSE)) * * * *{ * * * * * *// выкопать предмет * * * * * *Wld_InsertItem(ItSe_GoldPocket25,"NW_BIGFARM_LAKE _CAVE_07"); * * * * * *// установить флаг клад выкопан * * * * * *RAKEPLACE[Greg_FirstSecret] = TRUE; * * * * * *// получить экспу * * * * * *RakeTreasureSuccess(ItSe_GoldPocket25); * * * * * *var C_ITEM GregsArmor; * * * * * *// получить ссылку на одежду Грега * * * * * *GregsArmor = Npc_GetEquippedArmor(Greg_NW); * * * * * *// если это не "Одежда капитана" * * * * * *if(Hlp_IsItem(GregsArmor,ITAR_PIR_H_Addon) == FALSE) * * * * * *{ * * * * * * * *// экипировать Грега Одеждой капитана * * * * * * * *AI_EquipArmor(Greg_NW,ITAR_PIR_H_Addon); * * * * * * * *}; * * * *} * * * *// если ГГ находится не далее 2м от нужной точки и клад в данной точке не выкопан * * * *else if((Npc_GetDistToWP(hero,"NW_LAKE_GREG_TREASURE_01 ") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[2] == FALSE)) * * * *{ * * * * * *// выкопать предмет * * * * * *Wld_InsertItem(ItSe_GoldPocket100,"NW_LAKE_GREG_T REASURE_01"); * * * * * *// установить флаг клад выкопан * * * * * *RAKEPLACE[2] = TRUE; * * * * * *// получить экспу * * * * * *RakeTreasureSuccess(ItSe_GoldPocket100); * * * *} * * * *// для всех остальных кладов аналогично * * * *else if((Npc_GetDistToWP(hero,"NW_FARM3_GREGTREASURE_01 ") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[3] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItMi_GoldCup,"NW_FARM3_GREGTREASUR E_01"); * * * * * *RAKEPLACE[3] = TRUE; * * * * * *RakeTreasureSuccess(ItMi_GoldCup); * * * *} * * * *else if((Npc_GetDistToWP(hero,"NW_FARM3_MOUNTAINLAKE_MO NSTER_01") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[4] == FALSE)) * * * *{ * * * * * * *Wld_InsertItem(ItMi_SilverChalice,"NW_FARM3_MOUNT AINLAKE_MONSTER_01"); * * * * * *RAKEPLACE[4] = TRUE; * * * * * *RakeTreasureSuccess(ItMi_SilverChalice); * * * *} * * * *else if((Npc_GetDistToWP(hero,"NW_BIGMILL_FARM3_01") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[5] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItAm_Prot_Point_01,"NW_BIGMILL_FAR M3_01"); * * * * * *RAKEPLACE[5] = TRUE; * * * * * *RakeTreasureSuccess(ItAm_Prot_Point_01); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_ENTRANCE_RAKEPLACE_0 1") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[12] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItWr_StonePlateCommon_Addon,"ADW_E NTRANCE_RAKEPLACE_01"); * * * * * *RAKEPLACE[12] = TRUE; * * * * * *Wld_InsertItem(ItMi_SilverChalice,"ADW_ENTRANCE_R AKEPLACE_01"); * * * * * *RakeTreasureSuccess(ItMi_SilverChalice); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_ENTRANCE_RAKEPLACE_0 2") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[13] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItWr_DexStonePlate1_Addon,"ADW_ENT RANCE_RAKEPLACE_02"); * * * * * *RAKEPLACE[13] = TRUE; * * * * * *Wld_InsertItem(ItMi_GoldCup,"ADW_ENTRANCE_RAKEPLA CE_02"); * * * * * * * * * * * * * * * * * * * * * * * * * *RakeTreasureSuccess(ItMi_GoldCup); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_ENTRANCE_RAKEPLACE_0 3") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[14] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItPo_Perm_Health,"ADW_ENTRANCE_RAK EPLACE_03"); * * * * * *RAKEPLACE[14] = TRUE; * * * * * *Wld_InsertItem(ItSe_GoldPocket100,"ADW_ENTRANCE_R AKEPLACE_03"); * * * * * * * * * * * * * * * * * * * * * * * * * *RakeTreasureSuccess(ItSe_GoldPocket100); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_ENTRANCE_RAKEPLACE_0 4") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[15] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItMi_SilverRing,"ADW_ENTRANCE_RAKE PLACE_04"); * * * * * *RAKEPLACE[15] = TRUE; * * * * * *Wld_InsertItem(ItMw_Schwert4,"ADW_ENTRANCE_RAKEPL ACE_04"); * * * * * *RakeTreasureSuccess(ItMw_Schwert4); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_VALLEY_GREGTREASURE_ 01") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[16] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItSe_GoldPocket100,"ADW_VALLEY_GRE GTREASURE_01"); * * * * * *RAKEPLACE[16] = TRUE; * * * * * *Wld_InsertItem(ItPo_Health_02,"ADW_VALLEY_GREGTRE ASURE_01"); * * * * * *Wld_InsertItem(ItPo_Mana_03,"ADW_VALLEY_GREGTREAS URE_01"); * * * * * *RakeTreasureSuccess(ItPo_Mana_03); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_VALLEY_RAKEPLACE_01" ) < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[17] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItPo_Mana_Addon_04,"ADW_VALLEY_RAK EPLACE_01"); * * * * * *RAKEPLACE[17] = TRUE; * * * * * *Wld_InsertItem(ItPo_Speed,"ADW_VALLEY_RAKEPLACE_0 1"); * * * * * *Wld_InsertItem(ItPo_Mana_02,"ADW_VALLEY_RAKEPLACE _01"); * * * * * *RakeTreasureSuccess(ItPo_Mana_02); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_VALLEY_RAKEPLACE_02" ) < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[18] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItPo_Health_Addon_04,"ADW_VALLEY_R AKEPLACE_02"); * * * * * *RAKEPLACE[18] = TRUE; * * * * * *Wld_InsertItem(ItWr_StonePlateCommon_Addon,"ADW_V ALLEY_RAKEPLACE_02"); * * * * * *Wld_InsertItem(ItSe_LockpickFisch,"ADW_VALLEY_RAK EPLACE_02"); * * * * * *RakeTreasureSuccess(ItSe_LockpickFisch); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_VALLEY_RAKEPLACE_03" ) < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[19] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItSc_Firerain,"ADW_VALLEY_RAKEPLAC E_03"); * * * * * *RAKEPLACE[19] = TRUE; * * * * * *Wld_InsertItem(ItSe_GoldPocket50,"ADW_VALLEY_RAKE PLACE_03"); * * * * * *Wld_InsertItem(ItWr_StonePlateCommon_Addon,"ADW_V ALLEY_RAKEPLACE_03"); * * * * * *RakeTreasureSuccess(ItSe_GoldPocket50); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_BANDITSCAMP_RAKEPLAC E_01") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[20] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItMi_Honigtabak,"ADW_BANDITSCAMP_R AKEPLACE_01"); * * * * * *RAKEPLACE[20] = TRUE; * * * * * *Wld_InsertItem(ItWr_StonePlateCommon_Addon,"ADW_B ANDITSCAMP_RAKEPLACE_01"); * * * * * *Wld_InsertItem(ItAm_Addon_MANA,"ADW_BANDITSCAMP_R AKEPLACE_01"); * * * * * *RakeTreasureSuccess(ItAm_Addon_MANA); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_BANDITSCAMP_RAKEPLAC E_02") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[21] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItSc_SumGobSkel,"ADW_BANDITSCAMP_R AKEPLACE_02"); * * * * * *RAKEPLACE[21] = TRUE; * * * * * *Wld_InsertItem(ItPo_Mana_03,"ADW_BANDITSCAMP_RAKE PLACE_02"); * * * * * *RakeTreasureSuccess(ItPo_Mana_03); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_BANDITSCAMP_RAKEPLAC E_03") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[22] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItSc_TrfShadowbeast,"ADW_BANDITSCA MP_RAKEPLACE_03"); * * * * * *RAKEPLACE[22] = TRUE; * * * * * *Wld_InsertItem(ItSc_LightHeal,"ADW_BANDITSCAMP_RA KEPLACE_03"); * * * * * *RakeTreasureSuccess(ItSc_LightHeal); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_BANDITSCAMP_RAKEPLAC E_04") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[23] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItWr_StonePlateCommon_Addon,"ADW_B ANDITSCAMP_RAKEPLACE_04"); * * * * * *RAKEPLACE[23] = TRUE; * * * * * *Wld_InsertItem(ItRi_HP_01,"ADW_BANDITSCAMP_RAKEPL ACE_04"); * * * * * *RakeTreasureSuccess(ItRi_HP_01); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_CANYON_MINE1_11") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[24] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItSE_Addon_FrancisChest,"ADW_CANYO N_MINE1_11"); * * * * * *RAKEPLACE[24] = TRUE; * * * * * *RakeTreasureSuccess(ItSE_Addon_FrancisChest); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_CANYON_RAKEPLACE_01" ) < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[25] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItMi_RuneBlank,"ADW_CANYON_RAKEPLA CE_01"); * * * * * *RAKEPLACE[25] = TRUE; * * * * * *Wld_InsertItem(ItSe_GoldPocket25,"ADW_CANYON_RAKE PLACE_01"); * * * * * *RakeTreasureSuccess(ItSe_GoldPocket25); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_CANYON_RAKEPLACE_02" ) < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[26] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItMi_Nugget,"ADW_CANYON_RAKEPLACE_ 02"); * * * * * *RAKEPLACE[26] = TRUE; * * * * * *Wld_InsertItem(ItSc_LightningFlash,"ADW_CANYON_RA KEPLACE_02"); * * * * * *Wld_InsertItem(ItSc_ChargeFireBall,"ADW_CANYON_RA KEPLACE_02"); * * * * * *RakeTreasureSuccess(ItSc_ChargeFireBall); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_CANYON_RAKEPLACE_03" ) < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[27] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItSe_GoldPocket25,"ADW_CANYON_RAKE PLACE_03"); * * * * * *RAKEPLACE[27] = TRUE; * * * * * *Wld_InsertItem(ItWr_ManaStonePlate1_Addon,"ADW_CA NYON_RAKEPLACE_03"); * * * * * *Wld_InsertItem(ItMi_Pitch,"ADW_CANYON_RAKEPLACE_0 3"); * * * * * *RakeTreasureSuccess(ItMi_Pitch); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_CANYON_RAKEPLACE_04" ) < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[28] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItMi_SilverRing,"ADW_CANYON_RAKEPL ACE_04"); * * * * * *RAKEPLACE[28] = TRUE; * * * * * *Wld_InsertItem(ItMi_Sulfur,"ADW_CANYON_RAKEPLACE_ 04"); * * * * * *Wld_InsertItem(ItWr_TwoHStonePlate1_Addon,"ADW_CA NYON_RAKEPLACE_04"); * * * * * *RakeTreasureSuccess(ItWr_TwoHStonePlate1_Addon); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_CANYON_RAKEPLACE_05" ) < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[29] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItMi_GoldRing,"ADW_CANYON_RAKEPLAC E_05"); * * * * * *RAKEPLACE[29] = TRUE; * * * * * *Wld_InsertItem(ItAt_DragonBlood,"ADW_CANYON_RAKEP LACE_05"); * * * * * *RakeTreasureSuccess(ItAt_DragonBlood); * * * *} * * * *else if((Npc_GetDistToWP(hero,"ADW_PIRATECAMP_GREGTREAS URE_KOMPASS") < RAKE_BUDDEL_DIST_MIN) && (RAKEPLACE[30] == FALSE)) * * * *{ * * * * * *Wld_InsertItem(ItMI_Addon_Kompass_Mis,"ADW_PIRATE CAMP_GREGTREASURE_KOMPASS"); * * * * * *RAKEPLACE[30] = TRUE; * * * * * *RakeTreasureSuccess(ItMI_Addon_Kompass_Mis); * * * *}; * *}; * };
* *21. Увеличить нывык по добыче золота.
Файл B_Upgrade_Hero_Hack.d
// ************************************************** ************** // Увеличить нывык по добыче золота // ************************************************** ************** // Аргумент: Wert - пункты увеличения навыка func void B_Upgrade_Hero_HackChance(var int Wert) { * *var string concatText; * *// "Повысил знание о добыче золота (+ " *+ Wert * *concatText = ConcatStrings(PRINT_ADDON_HACKCHANCE,IntToString(W ert)); * *// текст += ")" * *concatText = ConcatStrings(concatText,")"); * *PrintScreen(concatText,-1,34,FONT_ScreenSmall,2); * *// увеличить навык по добыче золота * *Hero_HackChance = (Hero_HackChance + Wert); * *// музычка * *Snd_Play("Geldbeutel"); };
* *22. Известен ли один из шнапсов?
Файл B_Addon_Knows_Schnaps.d
// ************************************************** ************** // Известен ли один из шнапсов? // ************************************************** ************** // Возвращаемое значение: TRUE - да, FALSE - нет // Примечание: данная функция не используется, можно удалить func int C_Addon_Knows_Schnaps() { * * * *if (Knows_LousHammer == TRUE) * *¦¦ (Knows_RuebenSchnaps == TRUE) * *¦¦ (Knows_VinoSchnaps == TRUE) * * * * *¦¦ (Knows_PiratenSchnaps == TRUE) * *¦¦ (Knows_Magierschnaps == TRUE) * *¦¦ (Knows_Sumpfkrautschnaps == TRUE) * *{ * * * *return TRUE; * *} * *return FALSE; };
* *23. Функции получения бонусов артефактных предметов.
Файл C_ArtefactValues.d
// Данные функции возвращают бонус одетых предметов в зависимости от одетого набора: // Амулет, Амулет + Кольцо, два Кольца, Амулет + два Кольца
// Получить бонус к жизни // ---------------------------------------------------------------- // Возвращаемое значение: бонус func int C_HP_ArtefaktValue() { * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *var int HP_Artefakt_Value; * *// бонус = 0 * *HP_Artefakt_Value = 0; * *// если одет амулет * *if(HP_Amulett_Equipped == TRUE) * * * * * *{ * * * *// если одето одно кольцо * * * *if(HP_Ring_1_Equipped == TRUE) * * * * * * * * *{ * * * * * *// если одето второе кольцо * * * * * *if(HP_Ring_2_Equipped == TRUE) * * * * * *{ * * * * * * * *// если визуальных эффектов не было * * * * * * * *if(HP_Artefakt_Effekt == FALSE) * * * * * * * *{ * * * * * * * * * *// выдать эффект * * * * * * * * * *Wld_PlayEffect("SPELLFX_LIGHTSTAR_WHITE",self,sel f,0,0,0,FALSE); * * * * * * * * * *// музычка * * * * * * * * * *Snd_Play("MFX_LIGHT_CAST"); * * * * * * * * * *// установить флаг одноразовости эффекта * * * * * * * * * *HP_Artefakt_Effekt = TRUE; * * * * * * * *}; * * * * * * * *// задать бонус = 250 * * * * * * * *HP_Artefakt_Value = HP_Amulett_Artefakt_Bonus; * * * * * *} * * * * * *else // амулет + кольцо * * * * * *{ * * * * * * * *// задать бонус = 150 * * * * * * * *HP_Artefakt_Value = HP_Amulett_EinRing_Bonus; * * * * * *}; * * * *} * * * *// если одето второе кольцо * * * *else if(HP_Ring_2_Equipped == TRUE) * * * *{ * * * * * *// задать бонус = 150 * * * * * *HP_Artefakt_Value = HP_Amulett_EinRing_Bonus; * * * *} * * * *else // амулет * * * *{ * * * * * *// задать бонус = 50 * * * * * *HP_Artefakt_Value = HP_Amulett_Solo_Bonus; * * * *}; * *} * *// если одето одно кольцо * *else if(HP_Ring_1_Equipped == TRUE) * *{ * * * *// если одето второе кольцо * * * *if (HP_Ring_2_Equipped == TRUE) * * * *{ * * * * * *// задать бонус = 100 * * * * * *HP_Artefakt_Value = HP_Ring_Double_Bonus; * * * *} * * * *else // кольцо * * * *{ * * * * * *// задать бонус = 30 * * * * * *HP_Artefakt_Value = HP_Ring_Solo_Bonus; * * * *}; * *} * *// если одето второе кольцо * *else if(HP_Ring_2_Equipped == TRUE) * *{ * * * *// задать бонус = 30 * * * *HP_Artefakt_Value = HP_Ring_Solo_Bonus; * *}; * *return HP_Artefakt_Value; };
// Получить бонус к магии (аналогично предыдущей) // ---------------------------------------------------------------- // Возвращаемое значение: бонус func int C_MA_ArtefaktValue() { * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *var int MA_Artefakt_Value; * * * * * * * * * * * * * * * * *MA_Artefakt_Value = 0; * * * * * * * * * * * * * * * * * * *if(MA_Amulett_Equipped == TRUE) * * * * * *{ * * * * * * * * * * * * * * * * * * * * * * *if(MA_Ring_1_Equipped == TRUE) * * * * * * * * *{ * * * * * *if(MA_Ring_2_Equipped == TRUE) * * * * * *{ * * * * * * * *if(MA_Artefakt_Effekt == FALSE) * * * * * * * *{ * * * * * * * * * *Wld_PlayEffect("SPELLFX_LIGHTSTAR_WHITE",self,sel f,0,0,0,FALSE); * * * * * * * * * *Snd_Play("MFX_LIGHT_CAST"); * * * * * * * * * *MA_Artefakt_Effekt = TRUE; * * * * * * * *}; * * * * * * * *MA_Artefakt_Value = MA_Amulett_Artefakt_Bonus; * * * * * *} * * * * * *else * * * * * *{ * * * * * * * *MA_Artefakt_Value = MA_Amulett_EinRing_Bonus; * * * * * *}; * * * *} * * * *else if(MA_Ring_2_Equipped == TRUE) * * * *{ * * * * * *MA_Artefakt_Value = MA_Amulett_EinRing_Bonus; * * * *} * * * *else * * * *{ * * * * * *MA_Artefakt_Value = MA_Amulett_Solo_Bonus; * * * *}; * *} * *else if(MA_Ring_1_Equipped == TRUE) * *{ * * * *if(MA_Ring_2_Equipped == TRUE) * * * *{ * * * * * *MA_Artefakt_Value = MA_Ring_Double_Bonus; * * * *} * * * *else * * * *{ * * * * * *MA_Artefakt_Value = MA_Ring_Solo_Bonus; * * * *}; * *} * *else if(MA_Ring_2_Equipped == TRUE) * *{ * * * *MA_Artefakt_Value = MA_Ring_Solo_Bonus; * *}; * *return MA_Artefakt_Value; };
// Получить бонус к сиде (аналогично предыдущей) // ---------------------------------------------------------------- // Возвращаемое значение: бонус func int C_STR_ArtefaktValue() { * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *var int STR_Artefakt_Value; * * * * * * * * * * * * * * * * * *STR_Artefakt_Value = 0; * * * * * * * * * * * * * * * * * * * *if(STR_Amulett_Equipped == TRUE) * * * * * *{ * * * * * * * * * * * * * * * * * * * * * * *if(STR_Ring_1_Equipped == TRUE) * * * * * * * *{ * * * * * *if(STR_Ring_2_Equipped == TRUE) * * * * * *{ * * * * * * * *if(STR_Artefakt_Effekt == FALSE) * * * * * * * *{ * * * * * * * * * *Wld_PlayEffect("SPELLFX_LIGHTSTAR_WHITE",self,sel f,0,0,0,FALSE); * * * * * * * * * *Snd_Play("MFX_LIGHT_CAST"); * * * * * * * * * *STR_Artefakt_Effekt = TRUE; * * * * * * * *}; * * * * * * * *STR_Artefakt_Value = STR_Amulett_Artefakt_Bonus; * * * * * *} * * * * * *else * * * * * *{ * * * * * * * *STR_Artefakt_Value = STR_Amulett_EinRing_Bonus; * * * * * *}; * * * *} * * * *else if(STR_Ring_2_Equipped == TRUE) * * * *{ * * * * * *STR_Artefakt_Value = STR_Amulett_EinRing_Bonus; * * * *} * * * *else * * * *{ * * * * * *STR_Artefakt_Value = STR_Amulett_Solo_Bonus; * * * *}; * *} * *else if(STR_Ring_1_Equipped == TRUE) * *{ * * * *if(STR_Ring_2_Equipped == TRUE) * * * *{ * * * * * *STR_Artefakt_Value = STR_Ring_Double_Bonus; * * * *} * * * *else * * * *{ * * * * * *STR_Artefakt_Value = STR_Ring_Solo_Bonus; * * * *}; * *} * *else if(STR_Ring_2_Equipped == TRUE) * *{ * * * *STR_Artefakt_Value = STR_Ring_Solo_Bonus; * *}; * *return STR_Artefakt_Value; };
|