Тема: М2: GlobalMod
Показать сообщение отдельно
Старый 14.08.2005, 23:57   #52
Finsernis

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

По умолчанию 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 ;)
Ответить с цитированием