Иконка ресурса

Half-Life Rank System 1.3.16

Нет прав для скачивания
Код:
/*
    <Half-Life Rank System>
    Version : 1.3.16
    Author : BIGs
    Site : https://hl-hev.ru/
  
    Thanks :
    D-AIRY[Ds-Servers.com] - Help in adjusting the code.
    Turanga_Leela[aghl.ru] - Help in adjusting the code and testing.
    TEPA6ANT[HL-HEV Team] - Help in testing the plugin.
  
    Community HL-HEV | All for Half-Life <c>2018
*/

#include <amxmodx>
#include <hamsandwich>
#include <nvault>
#include <fun>
#include <fakemeta>


#pragma semicolon 1
#pragma ctrlchar  '\'

#define PLUGIN "Half-Life : Rank System"
#define VERSION "1.3.16"
#define AUTHOR "BIGs & Turanga_Leela"

#define RANK_SCORE_MIN 0
#define RANK_SCORE_MAX 1
#define RANK_SCORES 2

#define RANK_0      0
#define RANK_I      1
#define RANK_II     2
#define RANK_III    3
#define RANK_IV     4
#define RANK_V      5
#define RANK_VI     6
#define RANK_VII    7
#define RANK_VIII   8

#define RANK_0_SCORE_MIN 0
#define RANK_0_SCORE_MAX 50

#define RANK_I_SCORE_MIN 51
#define RANK_I_SCORE_MAX 100

#define RANK_II_SCORE_MIN 101
#define RANK_II_SCORE_MAX 300

#define RANK_III_SCORE_MIN 301
#define RANK_III_SCORE_MAX 500

#define RANK_IV_SCORE_MIN 501
#define RANK_IV_SCORE_MAX 1000

#define RANK_V_SCORE_MIN 1001
#define RANK_V_SCORE_MAX 2000

#define RANK_VI_SCORE_MIN 2001
#define RANK_VI_SCORE_MAX 3500

#define RANK_VII_SCORE_MIN 3501
#define RANK_VII_SCORE_MAX 5000

#define RANK_VIII_SCORE_MIN 5001
#define RANK_VIII_SCORE_MAX 10000

#define RANKS_TOTAL 9
#define MAX_RANK (RANKS_TOTAL - 1)

#define CROSSBOW_AMMO_PACKS     8
#define AMMO_PACKS_357          3
#define SHOTGUN_AMMO_PACKS      4
#define SNARK_AMMO_PACKS        3
#define TRIPMINE_AMMO_PACKS     2
#define SATCHEL_AMMO_PACKS      3
#define GAUSS_AMMO_PACKS        5
#define EGON_AMMO_PACKS         5

new const g_scores[RANKS_TOTAL][RANK_SCORES] = {
    {   RANK_0_SCORE_MIN,      RANK_0_SCORE_MAX     },
    {   RANK_I_SCORE_MIN,      RANK_I_SCORE_MAX     },
    {   RANK_II_SCORE_MIN,     RANK_II_SCORE_MAX    },
    {   RANK_III_SCORE_MIN,    RANK_III_SCORE_MAX   },
    {   RANK_IV_SCORE_MIN,     RANK_IV_SCORE_MAX    },
    {   RANK_V_SCORE_MIN,      RANK_V_SCORE_MAX     },
    {   RANK_VI_SCORE_MIN,     RANK_VI_SCORE_MAX    },
    {   RANK_VII_SCORE_MIN,    RANK_VII_SCORE_MAX   },
    {   RANK_VIII_SCORE_MIN,   RANK_VIII_SCORE_MAX  }
};
static const PlayerRankList[RANKS_TOTAL][] = {
        "soldier",
        "sergeant",
        "officer",
        "captain",
        "major",
        "colonel",
        "general",
        "genegalisimus",
        "God of Half-Life"
    };
#define     rank_id_to_title(%0) PlayerRankList[reduce_rank_id(%0)]
//Constants and other
new PlayerIpList[33][16];
new PlayerSteamId[33][33];
new g_aiScoresOfPlayers[33]; // Kills

//Cvars
new cv_weapons , cv_rs ,cv_hud_r,cv_hud_g,cv_hud_b;
//Gets_Cvars
new gcv_weapons , gcv_rs ,gcv_hud_r,gcv_hud_g,gcv_hud_b;
rank_id_to_max_score(rank_id)
{
    static const ScoreTab[] = {
        50,
        100,
        300,
        500,
        1000,
        2000,
        3500,
        5000,
        10000
    };
   
    return ScoreTab[reduce_rank_id(rank_id)];
}
reduce_rank_id(rank_id)
{
    if(rank_id > MAX_RANK)
    {
        return MAX_RANK;
    }

    if(rank_id < RANK_0)
    {
        return RANK_0;
    }

    return rank_id;
}
get_user_score(id)
{
    return g_aiScoresOfPlayers[id];
}

set_user_score(const id, const new_score, const update_nvault = true)
{
    new const nvault_score = rs_get_score(PlayerSteamId[id]);
    new const tmp_score = get_user_score(id);

    if(tmp_score != nvault_score)
    {
        // ERROR!
    }

    g_aiScoresOfPlayers[id] = new_score;

    if(update_nvault)
    {
        new form[11];
        format(form, charsmax(form), "%i", new_score);
        rs_set_score(PlayerSteamId[id], form);
    }
}

update_user_score(const id, const score = 1, const update_nvault = true)
{
    set_user_score(id, get_user_score(id) + score, update_nvault);
}

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    RegisterHam(Ham_Killed,"player","HamPlayerKill");
    RegisterHam(Ham_Spawn,"player","HamPlayerSpawn" , 1);
  
    //Create DataFile
    new fp = nvault_open("hlrs");
    nvault_close(fp);
  
    set_task(45.0 , "ChatInfo",_,_,_,"b");
  
    register_clcmd("say /rs","rs_reset_score");
    register_clcmd("say_team /rs","rs_reset_score");
    register_clcmd("/rs","rs_reset_score");
}
public plugin_cfg()
{
    if(is_linux_server())
    {
        new sMsg[512];
        formatex(sMsg , 511,"\n\e[01;38;05;46m           [HLRS] : Rank System...   Started!\n      [HLRS] : Version \e[01;38;05;214m%s\e[0m" , VERSION);
       
        server_print("%s" ,sMsg);
        if(file_exists("addons/amxmodx/data/vault/hlrs.vault"))
        {
            server_print("\e[01;38;05;46m           [HLRS] : nVault file...   Detected!\e[0m\n");
        }
        
    } else {
        server_print("--------------------------------------------------------------------------------");
        server_print("      [HLRS] : Rank System...   Started!");
        if(file_exists("addons/amxmodx/data/vault/hlrs.vault")) {
            server_print("      [HLRS] : nVault file...   Detected!");
        }
        
        server_print("      [HLRS] : Version %s" , VERSION);
        server_print("      Copyright <c> 2018 (Community HL-HEV.RU)");  
        server_print("--------------------------------------------------------------------------------");
    }
    //Cvars
    register_cvar("hlrs_version",VERSION,FCVAR_SERVER);
    cv_weapons = register_cvar("hlrs_weapons" ,"1");
    cv_rs = register_cvar("hlrs_rs" , "1");
  
    cv_hud_r = register_cvar("hlrs_hud_r" , "0");
    cv_hud_g = register_cvar("hlrs_hud_g" , "255");
    cv_hud_b = register_cvar("hlrs_hud_b" , "0");
  
    gcv_weapons = get_pcvar_num(cv_weapons);
    gcv_rs = get_pcvar_num(cv_rs);
  
    gcv_hud_r = get_pcvar_num(cv_hud_r);
    gcv_hud_g = get_pcvar_num(cv_hud_g);
    gcv_hud_b = get_pcvar_num(cv_hud_b);
  
    if(file_exists("addons/amxmodx/configs/hlrs_config.cfg"))
    {
        server_print("[HLRS] : Config loaded successfuly!");
        server_cmd("exec addons/amxmodx/configs/hlrs_config.cfg");
    } else {
        server_print("[HLRS] : Config loaded failing!");
    }
}


public plugin_natives()
{
    register_native("hlrs_set_score", "rs_set_score", 1);
    register_native("hlrs_get_score", "rs_get_score", 1);
    register_native("hlrs_get_user_rank", "rs_get_user_rank", 1);
}

public rs_get_user_rank(score)
{
    return PlayerRankList[get_rank(score)];
}


public rs_reset_score(id)
{
    if(gcv_rs)
    {
        new fp = nvault_open("hlrs");
        nvault_remove(fp , PlayerSteamId[id]);
        client_print(id , print_chat ,"[HLRS] : Your score reset!");
     
        nvault_close(fp);
    } else {
        client_print(id , print_chat ,"[HLRS] : It's function is disabled!");
    }
}

public ChatInfo()
{
    static const ChatLst[][] = {
        "[HLRS] : Print /rs for reset you Score.",
        "<Half-Life Rank System>"
    };

    client_print(0, print_chat, "%s", ChatLst[random_num(0,1)]);
}

public client_putinserver(id)
{
    if(!is_user_bot(id))
    {
        get_user_ip(id, PlayerIpList[id], 15);
        get_user_authid(id, PlayerSteamId[id], 32);
        set_user_score(id, rs_get_score(PlayerSteamId[id]), false);
        InfoHudMsg(id);
    }
}

public InfoHudMsg(id)
{
    if(is_user_alive(id))
    {
        set_hudmessage(gcv_hud_r, gcv_hud_g, gcv_hud_b, 0.03, 0.68, 0, 6.0, 12.0, 0.08, 2.0, true);

        new const score = get_user_score(id);
        new const rank_id = score_to_rank_id(score);
       
        new nickname[32];
        get_user_name(id, nickname, charsmax(nickname));
        
        show_hudmessage(id, "-------------------------------\nName : %s \nScore : %i/%i\nRank : %s\n-------------------------------" ,
        nickname,
        score,
        rank_id_to_max_score(rank_id + 1),
        rank_id_to_title(rank_id));
    }
  
    set_task(3.0, "InfoHudMsg", id);
}

public HamPlayerKill(victim, killer)
{
    killer = deduce_player(killer);

    if(killer && killer != victim)
    {
        if(!is_user_bot(killer))
        {
            update_user_score(killer);
        }
       
        if(!is_user_bot(victim))
        {
            update_user_score(victim, -1);
        }
    }
}

get_user_rand_id(id)
{
    return score_to_rank_id(get_user_score(id));
}

public HamPlayerSpawn(id)
{
    if(is_user_alive(id) && gcv_weapons)
    {
        switch(get_user_rand_id(id))
        {
            case RANK_0:
            {
                give_equipment_for_rank_0(id);
            }
            case RANK_I:
            {
                give_equipment_for_rank_I(id);
            }
            case RANK_II:
            {
                give_equipment_for_rank_II(id);
                give_weapon_satchel(id);
            }
            case RANK_III:
            {
                give_equipment_for_rank_III(id);
            }
            case RANK_IV:
            {
                give_equipment_for_rank_IV(id); 
            }
            case RANK_V:
            {
                give_equipment_for_rank_V(id);
            }
            case RANK_VI:
            {
                give_equipment_for_rank_VI(id);
            }
            case RANK_VII:
            {
                give_equipment_for_rank_VII(id);
            }
            case RANK_VIII:
            {
                give_equipment_for_rank_VIII(id);
            }
            default:
            {
                give_equipment_for_rank_VIII(id);
            }
        }
    }
}

public rs_set_score(steamid [],score[])
{
    new fp = nvault_open("hlrs");
    nvault_set(fp, steamid, score);
    nvault_close(fp);
}

public rs_get_score(steamid[])
{
    new fp = nvault_open("hlrs");
    new score = nvault_get(fp, steamid);
    nvault_close(fp);
  
    return score;
}

give_weapon_gauss(id, ammo = GAUSS_AMMO_PACKS)
{
    give_item(id, "weapon_gauss");
    give_item_repeatedly(id, "ammo_gaussclip", ammo);
}

give_weapon_egon(id, ammo = EGON_AMMO_PACKS)
{
    give_item(id, "weapon_egon");
    give_item_repeatedly(id, "ammo_gaussclip", ammo);
}

give_weapon_9mmAR(id)
{
    give_item(id, "weapon_9mmAR");
    give_item(id, "ammo_9mmbox");
    give_item(id, "ammo_ARgrenades");
}

give_weapon_satchel(id, ammo = SATCHEL_AMMO_PACKS)
{
    give_item_repeatedly(id, "weapon_satchel", ammo);
}

give_weapon_tripmine(id, ammo = TRIPMINE_AMMO_PACKS)
{
    give_item_repeatedly(id, "weapon_tripmine", ammo);
}

give_weapon_snark(id, ammo = SNARK_AMMO_PACKS)
{
    give_item_repeatedly(id, "weapon_snark", ammo);
}

give_weapon_hornetgun(id)
{
    give_item(id ,"weapon_hornetgun");
}

give_weapon_shotgun(id, ammo = SHOTGUN_AMMO_PACKS)
{
    give_item(id, "weapon_shotgun");
    give_item_repeatedly(id, "ammo_buckshot", ammo);
}

give_weapon_crossbow(id, ammo = CROSSBOW_AMMO_PACKS)
{
    give_item(id, "weapon_crossbow");
    give_item_repeatedly(id, "ammo_crossbow", ammo);
}

give_weapon_357(id, ammo = AMMO_PACKS_357)
{
    give_item(id, "weapon_357");
    give_item_repeatedly(id, "ammo_357", ammo);
}

give_item_repeatedly(id, item_class[], count = 1)
{
    if(0 >= count)
    {
        return;   
    }

    do {
        give_item(id, item_class);
        --count;
    } while(count > 0);
}

set_full_armor(id)
{
    set_user_armor(id ,100);
}

set_full_pack_of_ARgrenades(id)
{
    give_item_repeatedly(id, "ammo_ARgrenades", 4);
}

set_full_pack_of_gaussclip(id)
{
    give_item_repeatedly(id, "ammo_gaussclip", 5);
}

give_equipment_for_rank_0(id)
{
    give_weapon_357(id);
    give_weapon_tripmine(id);
}

give_equipment_for_rank_I(id)
{
    give_equipment_for_rank_0(id);
    give_weapon_9mmAR(id);
}

give_equipment_for_rank_II(id)
{
    give_equipment_for_rank_I(id);
    give_weapon_shotgun(id);
}

give_equipment_for_rank_III(id)
{
    give_equipment_for_rank_II(id);
    give_weapon_crossbow(id);
}

give_equipment_for_rank_IV(id)
{
    give_equipment_for_rank_III(id);
    set_full_pack_of_ARgrenades(id);
    set_full_pack_of_gaussclip(id);
    give_weapon_snark(id);   
}

give_equipment_for_rank_V(id)
{
    give_equipment_for_rank_IV(id);
    give_weapon_hornetgun(id);
}

give_equipment_for_rank_VI(id)
{
    give_equipment_for_rank_V(id);
    give_weapon_gauss(id, 0);
}

give_equipment_for_rank_VII(id)
{
    give_equipment_for_rank_VI(id);
    give_weapon_egon(id, 0);
}

give_equipment_for_rank_VIII(id)
{
    give_equipment_for_rank_VII(id);
    set_full_armor(id);
}

score_to_rank_id(score)
{
    for(new rank = RANK_0; rank < RANKS_TOTAL; rank++)
    {
        if(score > g_scores[rank][RANK_SCORE_MAX])
        {
            continue;
        }
       
        return rank;
    }

    return MAX_RANK;
}

deduce_player(id) 
{
    if(!pev_valid(id))
    {
        return 0;
    }

    if(is_player(id))
    {
        return id;
    } else {
        new owner = pev(id, pev_owner);
        if(is_player(owner))
        {
            return owner;
        }
    }

    return 0;
}

is_player(id)
{
    return (id > 0 && id <= get_maxplayers());
}
Назад
Верх