С Днём России!
  • 688
  • 18
Дорогие друзья! Поздравляю вас с Днём России! Этот праздник напоминает нам о богатой истории и культуре нашей страны, о её величии и непоколебимом духе народа! Желаю вам крепкого здоровья...
Новости Анонсирован Atomic Heart II
Новости Анонсирован ремастер Final Fantasy Tactics
  • 390
  • 1
Культовая пошаговая тактическая RPG от Square Enix получит второе дыхание. На проходящей выставке State of Play, где анонсируются игры для Play Station, состоялся анонс ремастера Final Fantasy...
Новости Моддеры Oblivion Remastered нашли способ внедрения абсолютно любых скриптов
  • 505
  • 4
Сообщество моддинга Oblivion Remastered (ORM) переживает настоящий расцвет. После долгих месяцев работы, энтузиасты научили игру работать с мощным скриптовым языком Lua, открыв перед создателями...
Регенерация маны и здоровья (Hedin_Union_Simple_Regen.vdf)

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

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

lorddemonik

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

Хедин

Герой
Пользователь VIP
Модостроитель
Почётный пользователь
Участник форума
Регистрация
10 Июл 2013
Сообщения
6.285
Реакции
8.230
Баллы
776
Лучшие ответы
126
#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
 
Сверху Снизу