[PLUGIN] Regen System – HP, Armor & Money Regeneration

Started by Mosu,

Previous topic - Next topic

Mosu

📌 [PLUGIN] Regen System – HP, Armor & Money Regeneration 

Descriere: 
Acest plugin adaugă un sistem de regenerare automată pentru toți jucătorii. 
La începutul fiecărei runde apare un mesaj HUD cu numele serverului: 
"cs.daeva.ro" 

După 30 de secunde de la startul rundei, jucătorii încep să primească: 
- +5 HP 
- +5 Armură 
- +50$ 

Regenerarea durează 20 secunde, iar boost-ul se aplică o dată la 3 secunde
După ce ciclul se termină → urmează o pauză de 30 secunde → apoi regen-ul repornește automat, până la finalul rundei. 

---

Funcționalitate: 
✔ Mesaj HUD la început de rundă: "cs.daeva.ro" 
✔ Mesaj HUD când începe regen-ul: "Regenerare activa!" 
✔ Boost ciclic: 30s pauză → 20s regen (tick la 3s) 
✔ Pentru toți jucătorii, fără restricții (Steam/Non-Steam/VIP) 
✔ HP și Armura nu trec peste 100 
✔ Money nu trec peste 16000 

---

Instalare: 
1. Copiază fișierul `.sma` în `addons/amxmodx/scripting/` 
2. Compilează pluginul (online sau local) 
3. Mută fișierul `.amxx` în `addons/amxmodx/plugins/` 
4. Adaugă numele pluginului în `addons/amxmodx/configs/plugins.ini` 
5. Repornește serverul sau schimbă harta 

---

Compatibilitate: 
💻 Counter-Strike 1.6 
✅ AMX Mod X 1.8+ 
Quote#include <amxmodx>
#include <cstrike>
#include <fun>

#define REGEN_DELAY 30.0    // secunde până începe regen
#define REGEN_TIME 20       // câte secunde regen
#define REGEN_INTERVAL 3.0  // interval regen (acum la 3 sec)

new g_RegenCounter[33]
new g_MaxPlayers

public plugin_init() {
    register_plugin("Regen System", "1.3", "ChatGPT")
    register_event("HLTV", "event_new_round", "a", "1=0", "2=0")
    g_MaxPlayers = get_maxplayers()
}

public event_new_round() {
    // HUD mesaj la început de rundă
    set_hudmessage(0, 255, 0, -1.0, 0.25, 0, 6.0, 5.0)
    show_hudmessage(0, "cs.daeva.ro")

    // pornim primul ciclu după 30s
    set_task(REGEN_DELAY, "start_regen")
}

public start_regen() {
    // HUD când începe regen
    set_hudmessage(0, 128, 255, -1.0, 0.30, 0, 6.0, 3.0)
    show_hudmessage(0, "Regenerare activa!")

    for(new id = 1; id <= g_MaxPlayers; id++) {
        if(is_user_alive(id)) {
            g_RegenCounter[id] = REGEN_TIME / floatround(REGEN_INTERVAL) // câte "tick-uri" intră în 20 sec
            set_task(REGEN_INTERVAL, "do_regen", id, _, _, "b")
        }
    }

    // programăm următorul ciclu: 30s pauză + 20s regen = 50s total
    set_task(REGEN_DELAY + float(REGEN_TIME), "start_regen")
}

public do_regen(id) {
    if(!is_user_alive(id) || g_RegenCounter[id] <= 0) {
        remove_task(id)
        return
    }

    // HP
    new hp = get_user_health(id)
    if(hp < 100) {
        set_user_health(id, min(hp + 5, 100))
    }

    // Armor
    new ap = get_user_armor(id)
    if(ap < 100) {
        set_user_armor(id, min(ap + 5, 100))
    }

    // Money
    new money = cs_get_user_money(id)
    if(money < 16000) {
        cs_set_user_money(id, min(money + 50, 16000))
    }

    g_RegenCounter[id]--
}

---

Autor: 
💡 daeVa /color]