Новости Tainted Grail: The Fall of Avalon — Польская «Skyrim» теперь официально
  • 531
  • 8
23 мая 2025 после двух лет успешного раннего доступа в Steam польская студия Questline наконец представила свою фэнтези-RPG в полной версии. Tainted Grail: The Fall of Avalon доступна на ПК...
Новости CD Projekt RED представила юбилейный трейлер к 10-летию The Witcher 3: Wild Hunt
  • 790
  • 0
Польская студия CD Projekt Red порадовала поклонников франшизы «Ведьмак», выпустив особый видеообзор в честь десятилетия культовой RPG «Ведьмак 3: Дикая Охота». Что показали в трейлере...
Важно 9 мая - День Победы - 80-летия Великой Победы!
  • 1.683
  • 5
Поздравляю всех, кому искренне небезразличен этот день! С днём Великой Победы!
Новости Анонс The Elder Scrolls VI уже этим летом?
  • 1.199
  • 2
По данным инсайдера eXtas1s, Bethesda может впервые показать The Elder Scrolls VI летом 2025 года Обсуждается возможность анонса игры на одной из крупных презентаций Xbox - в июне или августе...
Регенерация маны и здоровья (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.202
Реакции
8.095
Баллы
776
Лучшие ответы
122
#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
 
Сверху Снизу