Код:
give_item_repeatedly(id, item_class[], count = 1) {
do {
give_item(id, item_class);
--count;
} while(count > 0);
}
// before
give_item(id ,"ammo_crossbow");
give_item(id ,"ammo_crossbow");
give_item(id ,"ammo_crossbow");
give_item(id ,"ammo_357");
give_item(id ,"ammo_357");
give_item(id ,"ammo_357");
// after
give_item_repeatedly(id, "ammo_crossbow", 3);
give_item_repeatedly(id, "ammo_357", 3);
..
// Crossbow
give_item(id ,"weapon_crossbow");
give_item(id ,"ammo_crossbow");
give_item(id ,"ammo_crossbow");
give_item(id ,"ammo_crossbow");
give_item(id ,"ammo_crossbow");
give_item(id ,"ammo_crossbow");
give_item(id ,"ammo_crossbow");
give_item(id ,"ammo_crossbow");
give_item(id ,"ammo_crossbow");
#define CROSSBOW_AMMO_PACKS 8
give_weapon_crossbow(id) { // and do this for all the weapons
give_item(id ,"weapon_crossbow");
give_item_repeatedly(id, "ammo_crossbow", CROSSBOW_AMMO_PACKS);
}
проапдейтил код, может тебе и понравится, правда я проверял только на ошибки компиляции
Код:
/*
<Half-Life Rank System>
Version : 1.2.78[+]
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 tested.
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>
#pragma semicolon 1
#pragma ctrlchar '\'
#define PLUGIN "Half-Life : Rank System"
#define VERSION "1.2.78[+]"
#define AUTHOR "BIGs"
#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 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 }
}; // g_scores
//Constants and other
new PlayerNameList[33][33];
new PlayerIpList[33][16];
new PlayerSteamId[33][33];
//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;
//---------RANKS--------
new const PlayerRankList[][] = {
"soldier",
"sergeant",
"officer",
"captain",
"major",
"colonel",
"general",
"genegalisimus",
"God of Half-Life"
};
new const ScoreTab[][] = {
"50",
"100",
"300",
"500",
"1000",
"2000",
"3500",
"5000",
"10000"
};
new PlayerScore[33]; //Kills
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_reset_score(id) {
if(gcv_rs) {
new fp = nvault_open("hlrs");
nvault_remove(fp , PlayerSteamId[id]);
client_print(id , print_chat ,"[HLRS] : You score is reset!");
nvault_close(fp);
} else {
client_print(id , print_chat ,"[HLRS] : It's function disabled!");
}
}
public ChatInfo() {
new const ChatLst[][] = {
"[HLRS] : Print /rs for reset you Score.",
"<Half-Life Rank System>"
};
client_print(0,print_chat,"%s" ,ChatLst[random_num(0,2)]);
}
public client_putinserver(id) {
if(!is_user_bot(id)) {
get_user_name(id , PlayerNameList[id] ,32);
get_user_ip(id , PlayerIpList[id] ,15);
get_user_authid(id ,PlayerSteamId[id],32);
}
PlayerScore[id] = rs_get_score(PlayerSteamId[id]);
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);
show_hudmessage(id, "-------------------------------\nName : %s \nScore : %i/%s\nRank : %s\n-------------------------------" , PlayerNameList[id],PlayerScore[id],rs_get_next_score(PlayerScore[id]),rs_get_user_rank(PlayerScore[id]));
}
set_task(3.0 , "InfoHudMsg" ,id);
}
public HamPlayerKill(victim , attacker) {
if(is_user_connected(attacker)) {
new pKills = rs_get_score(PlayerSteamId[attacker]);
new nKills = pKills + 1;
new form[11];
format(form , charsmax(form) ,"%i" , nKills);
rs_set_score(PlayerSteamId[attacker],form);
if(victim != attacker) {
PlayerScore[attacker]++;
PlayerScore[victim]--;
}
}
}
public HamPlayerSpawn(id) {
if(is_user_alive(id) && gcv_weapons) {
switch(get_rank(PlayerScore[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: {
// ERROR ?
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;
}
public rs_get_next_score(score) {
return ScoreTab[get_rank(score)];
} // rs_get_next_score
public rs_get_user_rank(score) {
return PlayerRankList[get_rank(score)];
} // rs_get_user_rank
give_weapon_gauss(id, ammo = GAUSS_AMMO_PACKS) {
give_item(id , "weapon_gauss");
give_item_repeatedly(id, "ammo_gaussclip", ammo);
} // give_weapon_gauss
give_weapon_egon(id, ammo = EGON_AMMO_PACKS) {
give_item(id , "weapon_egon");
give_item_repeatedly(id, "ammo_gaussclip", ammo);
} // give_weapon_egon
give_weapon_9mmAR(id) {
give_item(id ,"weapon_9mmAR");
give_item(id ,"ammo_9mmbox");
give_item(id ,"ammo_ARgrenades");
} // give_weapon_9mmAR
give_weapon_satchel(id, ammo = SATCHEL_AMMO_PACKS) {
give_item_repeatedly(id, "weapon_satchel", ammo);
} // give_weapon_satchel
give_weapon_tripmine(id, ammo = TRIPMINE_AMMO_PACKS) {
give_item_repeatedly(id, "weapon_tripmine", ammo);
} // give_weapon_tripmine
give_weapon_snark(id, ammo = SNARK_AMMO_PACKS) {
give_item_repeatedly(id, "weapon_snark", ammo);
} // give_weapon_snark
give_weapon_hornetgun(id) {
give_item(id ,"weapon_hornetgun");
} // give_weapon_hornetgun
give_weapon_shotgun(id, ammo = SHOTGUN_AMMO_PACKS) {
give_item(id ,"weapon_shotgun");
give_item_repeatedly(id, "ammo_buckshot", ammo);
} // give_weapon_shotgun
give_weapon_crossbow(id, ammo = CROSSBOW_AMMO_PACKS) {
give_item(id ,"weapon_crossbow");
give_item_repeatedly(id, "ammo_crossbow", ammo);
} // give_weapon_crossbow
give_weapon_357(id, ammo = AMMO_PACKS_357) {
give_item(id ,"weapon_357");
give_item_repeatedly(id, "ammo_357", ammo);
} // give_weapon_357
give_item_repeatedly(id, item_class[], count = 1) {
if(0 >= count) {
return;
}
do {
give_item(id, item_class);
--count;
} while(count > 0);
} // give_item_repeatedly
set_full_armor(id) {
give_item_repeatedly(id, "item_battery", 7);
} // set_full_armor
set_full_pack_of_ARgrenades(id) {
give_item_repeatedly(id, "ammo_ARgrenades", 4);
} // set_full_pack_of_ARgrenades
set_full_pack_of_gaussclip(id) {
give_item_repeatedly(id, "ammo_gaussclip", 5);
} // set_full_pack_of_gaussclip
get_rank(score) {
new rank = 0;
for(; rank < sizeof(g_scores); ++rank) {
if((g_scores[rank][RANK_SCORE_MIN] <= score) &&
(g_scores[rank][RANK_SCORE_MAX] >= score)) {
break;
}
}
return rank;
} // get_rank
give_equipment_for_rank_0(id) {
give_weapon_357(id);
give_weapon_tripmine(id);
} // give_equipment_for_rank_0
give_equipment_for_rank_I(id) {
give_equipment_for_rank_0(id);
give_weapon_9mmAR(id);
} // give_equipment_for_rank_I
give_equipment_for_rank_II(id) {
give_equipment_for_rank_I(id);
give_weapon_shotgun(id);
} // give_equipment_for_rank_II
give_equipment_for_rank_III(id) {
give_equipment_for_rank_II(id);
give_weapon_crossbow(id);
} // give_equipment_for_rank_III
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_IV
give_equipment_for_rank_V(id) {
give_equipment_for_rank_IV(id);
give_weapon_hornetgun(id);
} // give_equipment_for_rank_V
give_equipment_for_rank_VI(id) {
give_equipment_for_rank_V(id);
give_weapon_gauss(id, 0);
} // give_equipment_for_rank_VI
give_equipment_for_rank_VII(id) {
give_equipment_for_rank_VI(id);
give_weapon_egon(id, 0);
} // give_equipment_for_rank_VII
give_equipment_for_rank_VIII(id) {
give_equipment_for_rank_VII(id);
set_full_armor(id);
} // give_equipment_for_rank_VIII