Важно Форуму RPGRUSSIA 15 лет!
  • 2.282
  • 19
Друзья, сегодня нашему форуму исполняется 15 лет! Кажется, только вчера мы открывали первые разделы, спорили о правилах и радовались каждому новому участнику. Но годы пролетели - а мы всё здесь, и...
Новости Path of Exile 2: Патч 0.2.0 «Dawn of the Hunt» - краткое описание
  • 1.306
  • 0
Вчера вечером, в 22.00 по МСК, в прямом эфире вышла презентация по будущему патчу 0.2.0. В целом, игроки ждали нового класса и ребаланса существующих умений, но то что выкатили GGG на публику...
Новости Gothic 1 Remake - Demo (Nyras Prologue)
  • 4.713
  • 2
Ну что, заключённые, готовы к встрече с колонией? Мир, где каждый встречный мечтает вас зарезать за кусок хлеба, а единственный закон - сила. Вас ждёт совершенно новый пролог к легендарной...
Новости Большое интервью с HotA Crew - часть 2
  • 3.043
  • 0
HotA Crew о Кронверке и будущих обновлениях (часть 2) Какие герои будут вести армии Кронверка? Герои-воины зовутся Вожди, маги — Старейшины. Их параметры и способности подчеркнут сильные стороны...
Регенерация маны и здоровья (Hedin_Union_Simple_Regen.vdf)

Union / Юнион Регенерация маны и здоровья (Hedin_Union_Simple_Regen.vdf) 04_04_2024

Нет прав доступа на загрузку
Реген маны и здоровья для Готики 1,2 и модов без встроенной регенерации.

lorddemonik

Житель города
Участник форума
Регистрация
8 Июл 2011
Сообщения
126
Реакции
41
Баллы
26
Лучшие ответы
0
#31
@Хедин Есть возможность выделить сурсы этого плагина для всеобщего блага? Не думаю что они несут для тебя ценность спустя 4 года
 
Автор
Автор
Хедин

Хедин

Герой
Пользователь VIP
Модостроитель
Почётный пользователь
Участник форума
Регистрация
10 Июл 2013
Сообщения
6.025
Реакции
7.788
Баллы
776
Лучшие ответы
119
#32
@lorddemonik, да там несколько строк всего
C++:
namespace GOTHIC_ENGINE {
    // Add your code here . . .

#define playerIsDead player->attribute[NPC_ATR_HITPOINTS] <= 0
#define infoFinished oCInformationManager::GetInformationManager().HasFinished()

    static Timer mainTimer;
    const int MANA_TIMER = 1;
    const int HP_TIMER = 2;
    int manaRegenSeconds;
    float manaRegenPercent;

    int hpRegenSeconds;
    float hpRegenPercent;

    bool needRegenMana;
    bool needRegenHP;
    bool needRegenInBattle;

    void manaRegenGameInit() {
        manaRegenPercent = min(zoptions->ReadInt("SIMPLE_REGEN", "manapercent", 2), 20);
        manaRegenPercent /= 100;
        manaRegenSeconds = (zoptions->ReadInt("SIMPLE_REGEN", "manaseconds", 1)) * 1000;

        hpRegenPercent = min(zoptions->ReadInt("SIMPLE_REGEN", "hppercent", 2), 20);
        hpRegenPercent /= 100;
        hpRegenSeconds = (zoptions->ReadInt("SIMPLE_REGEN", "hpseconds", 1)) * 1000;

        needRegenMana = zoptions->ReadBool("SIMPLE_REGEN", "needRegenMana", True);
        needRegenHP = zoptions->ReadBool("SIMPLE_REGEN", "needRegenHP", True);
        needRegenInBattle = zoptions->ReadBool("SIMPLE_REGEN", "needRegenInBattle", False);

    }

    void manaRegenGameLoop() {
        if (!ogame || !player || playerIsDead || !infoFinished || ogame->pause_screen || ogame->singleStep)
            return;

        if (player->fmode && !needRegenInBattle) {
            return;
        }

        if (needRegenMana && manaRegenSeconds > 0 && mainTimer[MANA_TIMER].Await(manaRegenSeconds)) {
            int currenMana = player->GetAttribute(NPC_ATR_MANA);
            int maxMana = player->GetAttribute(NPC_ATR_MANAMAX);
            if (currenMana < maxMana) {
                player->SetAttribute(NPC_ATR_MANA, min(ceil(currenMana + ((float)maxMana * manaRegenPercent)), maxMana));
            }
        }

        if (needRegenHP && hpRegenSeconds > 0 && mainTimer[HP_TIMER].Await(hpRegenSeconds)) {
            int currenHP = player->GetAttribute(NPC_ATR_HITPOINTS);
            int maxHP = player->GetAttribute(NPC_ATR_HITPOINTSMAX);
            if (currenHP < maxHP) {
                player->SetAttribute(NPC_ATR_HITPOINTS, min(ceil(currenHP + ((float)maxHP * hpRegenPercent)), maxHP));
            }
        }
    }
}
Я наверное сейчас и не писал бы плагин, тут можно спокойно сделать через .d
 
Сверху Снизу