|
Re: GlobalMod
Цитата:
Сообщение от SATANIZMatik link=board=gothic&t=1123697146&start=50#50 date=08/14/05, в 23:44:46
2Finsternis: Ты прописал чтобы была рандомная величина? Типа +-1.5? Расскажи.
|
Ага, все очень просто делается, нужно лишь внести небольшие изменения в файл Story\B_Story\B_GivePlayerXP.dВот код скрипта: func void B_GivePlayerXP(var int add_xp) { * // если уровень ГГ равен 0 * if(hero.level == 0) * { * * * // до следующего уровня необходимо 500 экспы * * * hero.exp_next = 500; * }; * var int Player_has_Haotic_Exp; // моя переменная для рандома * Player_has_Haotic_Exp = Hlp_Random(4); // генерация псевдослучайного числа в диапазоне от 0 до 4 * if (Player_has_Haotic_Exp == 0) //проверка условий * { * * *add_xp = (add_xp * 8 ) / 10; // формула начисления экспы * } * else if (Player_has_Haotic_Exp == 1) * { * * *add_xp = (add_xp * 9) / 10; // формула начисления экспы * } * else if (Player_has_Haotic_Exp == 2) * { * * *add_xp = add_xp; // формула начисления экспы * } * else if (Player_has_Haotic_Exp == 3) * * * * { * * *add_xp = (add_xp * 11) / 10; // формула начисления экспы * } * else if (Player_has_Haotic_Exp == 4) * { * * *add_xp = (add_xp * 12) / 10; // формула начисления экспы }; * // добавить ГГ экспу * 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) * { * * *var int LP_PER_LEVEL_Haotic; // переменная для расчета начисления LP * * *var int HP_PER_LEVEL_Haotic; // переменная для расчета начисления HP * * *var int Value_Haotic; // моя переменная для рандома * * *Value_Haotic = Hlp_Random(90); // генерация псевдослучайного числа в диапазоне от 0 до 90 * * *if ((Value_Haotic >= 0) && (Value_Haotic < 30)) * * *{ *// расчет начисления жизни и лп * * * * * *HP_PER_LEVEL_Haotic = (HP_PER_LEVEL * 9) / 10; * * * * * *LP_PER_LEVEL_Haotic = (LP_PER_LEVEL * 9) / 10; * * *} * * *else if ((Value_Haotic > 30) && (Value_Haotic <= 60)) * * *{ * *// расчет начисления жизни и лп * * * * * *HP_PER_LEVEL_Haotic = HP_PER_LEVEL; * * * * * *LP_PER_LEVEL_Haotic = LP_PER_LEVEL; * * *} * * *else if ((Value_Haotic > 60) && (Value_Haotic <= 90)) * * *{ * * // расчет начисления жизни и лп * * * * * *HP_PER_LEVEL_Haotic = (HP_PER_LEVEL * 11) / 10; * * * * * *LP_PER_LEVEL_Haotic = (LP_PER_LEVEL * 11) / 10; * * *} * * *else if (Value_Haotic == 30) * * *{ *// особый случай - увеличение жизни и лп в 1.5 раза * * * * * *HP_PER_LEVEL_Haotic = (HP_PER_LEVEL * 15) / 10; * * * * * *LP_PER_LEVEL_Haotic = (LP_PER_LEVEL * 15) / 10; * * *}; * * * // уровень++ 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_Haotic; * * * // увеличить текущую жизнь * * * hero.attribute[ATR_HITPOINTS] = hero.attribute[ATR_HITPOINTS_MAX]; * * * // увеличить очки обучения * * * hero.LP = hero.LP + LP_PER_LEVEL_Haotic; * * * // вывод строки: "Следующий уровень!" * * * PrintScreen(PRINT_LevelUp,-1,YPOS_LevelUp,FONT_Screen,2); * * * // музычка * * * Snd_Play("LevelUp"); * }; * // закрыть в дневнике завершенные квесты // * B_Checklog(); };
Огромное спасибо Ваму за то, что он подробно описал файл Story\B_Story\B_GivePlayerXP.d ;)
|