Level Plugin with AmmoPacks
Hello, I shall want to put a counter of ammopack on the plugin level, and I have a problem with this, I would want that the ammo pack of the plugin ammopacks.amxx or in the hud of the plugin level and I do not find to make how, I have touch it has everything and the plugin compiles well but the meter stays has 0.
Sorry for my english :)
Original plugin
Code:
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <fun>
#include <cstrike>
#include <fakemeta_util>
#define PLUGIN "New Level System"
#define VERSION "1.3"
#define AUTHOR "Pl0x"
new g_level_max, g_level_num, g_levels[32]
new g_level[32], g_level_data, g_frags_level, g_ScreenFade,SymbolsName
new level_exp[32]
new g_level_exp[32], g_exp_data, g_Players, nameid[32]
new g_trime[32], g_MsgSync
new sound_level_up[] = { "LeveL/level.wav"}
const PEV_SPEC_TARGET = pev_iuser2
new SaveSystem
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
SaveSystem = register_cvar("fr_SaveSystem","1")
g_frags_level = register_cvar("fr_level_frags", "20")
g_level_max = register_cvar("fr_level_max", "200")
g_level_num = register_cvar("fr_level_number", "1")
g_level_data = nvault_open("fr_Leveling_Save")
g_exp_data = nvault_open("fr_Exp_Save")
SymbolsName = register_cvar("fr_name_symbols", "`")
register_forward(FM_ClientUserInfoChanged, "ChangeName")
register_event("StatusValue","show_status","be","1=2","2!0");
register_event("StatusValue","show_statusx","be","1=2","2!0");
register_event("HLTV", "Round_Start", "a", "1=0", "2=0")
register_event("DeathMsg", "Frags_Manager", "a", "1>0")
set_task(2.0,"System_Save",_,_,_,"b")
g_ScreenFade = get_user_msgid( "ScreenFade" )
g_Players =get_maxplayers()
g_MsgSync = CreateHudSyncObj()
}
//------| Change Name |------//
public ChangeName(id, buffer) {
if(!is_user_connected(id))
return FMRES_IGNORED;
static Name[32], Val[32];
get_user_name(id, Name, sizeof Name - 1);
engfunc(EngFunc_InfoKeyValue, buffer, "name", Val, sizeof Val - 1);
if(equal(Val, Name))
return FMRES_IGNORED;
set_task(0.2, "client_connect", id);
return FMRES_SUPERCEDE;
}
public client_putinserver(id)
{
if(get_pcvar_num(SaveSystem))
System_Load(id)
g_level_exp[id] = get_pcvar_num(g_frags_level)
new name[32]
g_trime[id] = false;
nameid[id] = get_user_name(id, name, sizeof name - 1)
if(is_user_alive(id))
{
g_trime[id] = false;
new n = 1;
while( n != g_level[id] )
{
n = n + 1;
}
}
if( g_level[id] == 0) g_level[id] = 1;
if( level_exp[id] == g_level[id] ) level_exp[id] = 0;
if(g_level[id] < get_pcvar_num(g_level_num))
g_levels[id] = get_pcvar_num(g_level_num);
else
{
if(g_level[id] != g_levels[id])
{
new x = 1;
while( g_level[id] > ( x * get_pcvar_num(g_level_num)) )
{
x = x + 1;
g_levels[id] = x * get_pcvar_num(g_level_num);
}
}
}
new y = 1;
while( g_level[id] != y )
{
y = y + 1;
g_level_exp[id] = y * get_pcvar_num(g_frags_level);
}
}
public client_connected(id) {
System_Load(id)
}
public client_authorized(id) {
System_Load(id)
}
public client_disconnect(id){
System_Save(id)
remove_task(id)
new name[32], player_nick[32]
player_nick[id] = get_user_name(id, name, sizeof name - 1)
if(player_nick[id] == nameid[id])
g_trime[id] = false;
static sName[32];
get_user_name(id, sName, sizeof sName - 1);
static sChars[32];
get_pcvar_string(SymbolsName, sChars, sizeof sChars - 1);
for(new i = 0 ; i < strlen(sName) ; i++) {
for(new j = 0 ; j < strlen(sChars) ; j++) {
if(sName[i] == sChars[j]) {
server_cmd("kick #%d ^"Votre nom contient des caractères illégaux.^"", get_user_userid(id));
break;
}
}
}
}
// Save System When Pausing The Plugin
public plugin_pause()
{
new iPlayers[32], iNum
get_players(iPlayers, iNum)
for(new i; i<iNum; i++)
System_Save(iPlayers[i])
}
// Load System After Unpause The Plugin
public plugin_unpause()
{
new iPlayers[32], iNum
get_players(iPlayers, iNum)
for(new i; i<iNum; i++)
System_Load(iPlayers[i])
}
public System_Save(id){
new key[64], data[256], data_exp[256], key_exp[64]
new name[33]
get_user_name(id,name,32)
format(key, 63, "%s-/", name)
format(data, 255, "%i#", g_level[id])
format(key_exp, 63, "%s-/", name)
format(data_exp, 255, "%i#", level_exp[id])
nvault_set(g_level_data, key, data)
nvault_set(g_exp_data, key_exp, data_exp)
return PLUGIN_CONTINUE;
}
public System_Load(id)
{
new key[64], data[256], data_exp[256], key_exp[64]
new name[33]
get_user_name(id,name,32)
format(key, 63, "%s-/", name)
format(data, 255, "%i#", g_level[id])
format(key_exp, 63, "%s-/", name)
format(data_exp, 255, "%i#", level_exp[id])
nvault_get(g_level_data, key, data, 255)
nvault_get(g_exp_data, key_exp, data_exp, 255)
replace_all(data, 255, "#", " ")
replace_all(data_exp, 255, "#", " ")
new givelevel[32], give_exp[32]
parse(data, givelevel, 31)
parse(data_exp, give_exp, 31)
g_level[id] = str_to_num(givelevel)
level_exp[id] = str_to_num(give_exp)
set_task(1.0 ,"level_status", id, _, _, "b")
return PLUGIN_CONTINUE;
}
/*------------------------------------- Level System ---------------------------------------------------------*/
public Round_Start()
{
for(new id=1;id<=g_Players;id++)
set_task(3.0, "Level", id)
}
public Level(id)
{
if(is_user_alive(id) )
{
g_trime[id] = false;
new n = 1;
while( n < g_level[id] )
{
n = n + 1
}
}
}
public Frags_Manager()
{
new aname[32], attacker; attacker = read_data(1)
new y; y = 1;
get_user_name(attacker, aname, sizeof aname - 1)
if( ( level_exp[attacker] >= (g_level_exp[attacker] - 1) ) && (g_level[attacker] <= get_pcvar_num(g_level_max)) && is_user_alive(attacker) )
{
g_level[attacker] = g_level[attacker] + 1;
level_exp[attacker] = 0;
while( g_level[attacker] != y )
{
y = y + 1;
g_level_exp[attacker] = y * get_pcvar_num(g_frags_level);
}
message_begin(MSG_ONE_UNRELIABLE, g_ScreenFade, _, attacker)
write_short(1<<12) // duration
write_short(1) // hold time
write_short(0x0000) // fade type
write_byte(1) // red
write_byte(200) // green
write_byte(0) // blue
write_byte(205) // alpha
message_end()
emit_sound(attacker, CHAN_STREAM, sound_level_up, 1.0, ATTN_NORM, 0, PITCH_HIGH )
set_hudmessage(0, 200, 0, 0.65, 0.5, 0, 0.0, 3.0, 2.0, 1.0, -1)
show_hudmessage(0, "%s has cut down %i level", aname, g_level[attacker])
System_Save(attacker);
}
else
{
if(g_level[attacker] == get_pcvar_num(g_level_max))
Chat9olor(attacker, "^x04you have reached a maximum level: ^4%i", g_level[attacker] )
level_exp[attacker] = level_exp[attacker] + 1;
if(get_pcvar_num(SaveSystem))
System_Save(attacker);
}
}
/*-----------------------------------------Hud Message----------------------------------------------------------*/
public level_status(id)
{
new Spec
Spec = pev(id, PEV_SPEC_TARGET)
new PlayerName[32]
get_user_name(Spec, PlayerName, 31)
if(is_user_alive(id))
{
if(cs_get_user_team(id) == CS_TEAM_CT)
{
set_hudmessage(10, 180, 10, -1.0, 0.87, 0, 6.0, 1.1)
ShowSyncHudMsg(id, g_MsgSync, " [ Health: %d | Armor: %d | Money: %d ]^n [ Level : %i - Exp : %i/%i ]",get_user_health(id),get_user_armor(id),cs_get_user_money(id),g_level[id],level_exp[id],g_level_exp[id])
}
if(cs_get_user_team(id) == CS_TEAM_T)
{
set_hudmessage(10, 180, 10, -1.0, 0.87, 0, 6.0, 1.1)
ShowSyncHudMsg(id, g_MsgSync, "[ Health: %d | Armor: %d | Money: %d ]^n [ Level : %i | Exp : %i/%i ]",get_user_health(id),get_user_armor(id),cs_get_user_money(id),g_level[id],level_exp[id],g_level_exp[id])
}
}
else
if(is_user_alive(Spec)) // When Spectating Someone.
{
if(cs_get_user_team(id) == CS_TEAM_CT)
{
set_hudmessage(200, 30, 200, -1.0, 0.79, 0, 6.0, 1.1)
ShowSyncHudMsg(id, g_MsgSync, "Spectating: %s [ Level : %d ] - [ Exp %d/%d ] ^n [ Class : Counter-Terrorist ]",PlayerName,g_level[Spec],level_exp[Spec],g_level_exp[Spec])
}
if(cs_get_user_team(id) == CS_TEAM_T)
{
set_hudmessage(200, 30, 200, -1.0, 0.79, 0, 6.0, 1.1)
ShowSyncHudMsg(id, g_MsgSync, "Spectating: %s [ Level : %d ] - [ Exp %d/%d ] ^n [ Class : Terrorist ]",PlayerName,g_level[Spec],level_exp[Spec],g_level_exp[Spec])
}
}
}
public show_status(id)
{
new name[32],pid = read_data(2) // When Aiming Someone (enemy/friend)
get_user_name(pid,name,31)
new idAiming, iBodyPart
get_user_aiming(id, idAiming, iBodyPart)
if(is_user_alive(idAiming) && is_user_alive(id))
{
if(cs_get_user_team(id) == CS_TEAM_CT && cs_get_user_team(idAiming) == CS_TEAM_CT)
{
set_hudmessage(238,201,0,-1.0,0.60,1, 0.01, 3.0, 0.01, 0.01, -1)
show_hudmessage(id, "%s ^n[ Health: %d | Armor: %d | Money: %d ]^n [ Level : %i - Exp : %i/%i ]", name,get_user_health(pid),get_user_armor(pid),cs_get_user_money(pid),g_level[pid],level_exp[pid],g_level_exp[pid])
}
else
if(cs_get_user_team(id) == CS_TEAM_T && cs_get_user_team(idAiming) == CS_TEAM_T)
{
set_hudmessage(255,0,0,-1.0,0.60,1, 0.01, 3.0, 0.01, 0.01, -1)
show_hudmessage(id, "%s ^n [ Health: %d | Armor: %d | Money: %d ]^n [ Level : %i | Exp : %i/%i ]", name,get_user_health(pid),get_user_armor(pid),cs_get_user_money(pid),g_level[pid],level_exp[pid],g_level_exp[pid])
}
}
}
public show_statusx(id)
{
new name[32],pid = read_data(2)
get_user_name(pid,name,31)
new idAiming, iBodyPart
get_user_aiming(id, idAiming, iBodyPart)
if(is_user_alive(idAiming) && is_user_alive(id))
{
if(cs_get_user_team(id) == CS_TEAM_T && cs_get_user_team(idAiming) == CS_TEAM_CT)
{
set_hudmessage(238, 201, 0,-1.0,0.60,1, 0.01, 3.0, 0.01, 0.01, -1)
show_hudmessage(id, "%s ^n [ Health: %d | Armor: %d | Money: %d ]^n [ Level : %i | Exp : %i/%i ]", name,get_user_health(pid),get_user_armor(pid),cs_get_user_money(pid),g_level[pid],level_exp[pid],g_level_exp[pid])
}
}
}
stock Chat9olor(const id, const input[], any:...)
{
new count = 1, players[ 32 ]
static msg[ 191 ]
vformat( msg, 190, input, 3 )
replace_all( msg, 190, "!g", "^4" )
replace_all( msg, 190, "!y", "^1" )
replace_all( msg, 190, "!t", "^3" )
if(id) players[ 0 ] = id; else get_players( players, count, "ch" )
{
for(new i = 0; i < count; i++)
{
if( is_user_connected( players[ i ] ) )
{
message_begin( MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[ i ] )
write_byte( players[ i ] )
write_string( msg )
message_end( )
}
}
}
}
Plugin modified by me
Code:
#include <amxmodx>
#include <amxmisc>
#include <nVault>
#include <fun>
#include <cstrike>
#include <fakemeta_util>
#include <hamsandwich>
#define PLUGIN "New Level System"
#define VERSION "1.3"
#define AUTHOR "Pl0x"
/*----------------------------------- added by me --------------------------------------*/
new ammo_packi[32]
new nazwa_gracza[32]
new vault, g_vault
/*-----------------------------------------------------------------------------------------*/
new g_level_max, g_level_num, g_levels[32]
new g_level[32], g_level_data, g_frags_level, g_ScreenFade,SymbolsName
new level_exp[32]
new g_level_exp[32], g_exp_data, g_Players, nameid[32]
new g_trime[32], g_MsgSync
new sound_level_up[] = { "LeveL/level.wav"}
const PEV_SPEC_TARGET = pev_iuser2
new SaveSystem
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
SaveSystem = register_cvar("fr_SaveSystem","1")
g_frags_level = register_cvar("fr_level_frags", "20")
g_level_max = register_cvar("fr_level_max", "200")
g_level_num = register_cvar("fr_level_number", "1")
g_level_data = nvault_open("fr_Leveling_Save")
g_exp_data = nvault_open("fr_Exp_Save")
SymbolsName = register_cvar("fr_name_symbols", "`")
register_forward(FM_ClientUserInfoChanged, "ChangeName")
register_event("StatusValue","show_status","be","1=2","2!0");
register_event("StatusValue","show_statusx","be","1=2","2!0");
register_event("HLTV", "Round_Start", "a", "1=0", "2=0")
register_event("DeathMsg", "Frags_Manager", "a", "1>0")
set_task(2.0,"System_Save",_,_,_,"b")
g_ScreenFade = get_user_msgid( "ScreenFade" )
g_Players =get_maxplayers()
g_MsgSync = CreateHudSyncObj()
/*----------------------------------- added by me --------------------------------------*/
RegisterHam(Ham_Spawn,"player","spwn")
if(get_pcvar_num(vault))
g_vault=nvault_open("Base_Builder")
}
public spwn(id){
if(task_exists(id+241)) remove_task(id+241)
set_task(0.6,"pokaz_packi",id+241,_,_,"b")
}
public zapisz_dane(id){
new vaultkey[64],vaultdata[64]
format(vaultkey,63,"%s-bb",nazwa_gracza[id])
format(vaultdata,63,"%d",ammo_packi[id])
nvault_set(g_vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
public wczytaj_dane(id){
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-bb",nazwa_gracza[id])
format(vaultdata,255,"%d",ammo_packi[id])
nvault_get(g_vault,vaultkey,vaultdata,255) // pobieramy dane
ammo_packi[id]=str_to_num(vaultdata)
return PLUGIN_CONTINUE
}
/*-----------------------------------------------------------------------------------------*/
//------| Change Name |------//
public ChangeName(id, buffer) {
if(!is_user_connected(id))
return FMRES_IGNORED;
static Name[32], Val[32];
get_user_name(id, Name, sizeof Name - 1);
engfunc(EngFunc_InfoKeyValue, buffer, "name", Val, sizeof Val - 1);
if(equal(Val, Name))
return FMRES_IGNORED;
set_task(0.2, "client_connect", id);
return FMRES_SUPERCEDE;
}
public client_putinserver(id)
{
if(get_pcvar_num(SaveSystem))
System_Load(id)
g_level_exp[id] = get_pcvar_num(g_frags_level)
new name[32]
g_trime[id] = false;
nameid[id] = get_user_name(id, name, sizeof name - 1)
if(is_user_alive(id))
{
g_trime[id] = false;
new n = 1;
while( n != g_level[id] )
{
n = n + 1;
}
}
if( g_level[id] == 0) g_level[id] = 1;
if( level_exp[id] == g_level[id] ) level_exp[id] = 0;
if(g_level[id] < get_pcvar_num(g_level_num))
g_levels[id] = get_pcvar_num(g_level_num);
else
{
if(g_level[id] != g_levels[id])
{
new x = 1;
while( g_level[id] > ( x * get_pcvar_num(g_level_num)) )
{
x = x + 1;
g_levels[id] = x * get_pcvar_num(g_level_num);
}
}
}
new y = 1;
while( g_level[id] != y )
{
y = y + 1;
g_level_exp[id] = y * get_pcvar_num(g_frags_level);
}
}
public client_connected(id) {
System_Load(id)
/*----------------------------------- added by me --------------------------------------*/
get_user_name(id,nazwa_gracza[id],63)
if(get_pcvar_num(vault)==1)
/*-----------------------------------------------------------------------------------------*/
wczytaj_dane(id)
}
public client_authorized(id) {
System_Load(id)
}
public client_disconnect(id){
System_Save(id)
remove_task(id)
new name[32], player_nick[32]
player_nick[id] = get_user_name(id, name, sizeof name - 1)
if(player_nick[id] == nameid[id])
g_trime[id] = false;
static sName[32];
get_user_name(id, sName, sizeof sName - 1);
static sChars[32];
get_pcvar_string(SymbolsName, sChars, sizeof sChars - 1);
for(new i = 0 ; i < strlen(sName) ; i++) {
for(new j = 0 ; j < strlen(sChars) ; j++) {
if(sName[i] == sChars[j]) {
server_cmd("kick #%d ^"Votre nom contient des caractères illégaux.^"", get_user_userid(id));
break;
}
}
/*----------------------------------- added by me --------------------------------------*/
if(get_pcvar_num(vault)==1)
zapisz_dane(id)
ammo_packi[id]=0
}
}
/*-----------------------------------------------------------------------------------------*/
// Save System When Pausing The Plugin
public plugin_pause()
{
new iPlayers[32], iNum
get_players(iPlayers, iNum)
for(new i; i<iNum; i++)
System_Save(iPlayers[i])
}
// Load System After Unpause The Plugin
public plugin_unpause()
{
new iPlayers[32], iNum
get_players(iPlayers, iNum)
for(new i; i<iNum; i++)
System_Load(iPlayers[i])
}
public System_Save(id){
new key[64], data[256], data_exp[256], key_exp[64]
new name[33]
get_user_name(id,name,32)
format(key, 63, "%s-/", name)
format(data, 255, "%i#", g_level[id])
format(key_exp, 63, "%s-/", name)
format(data_exp, 255, "%i#", level_exp[id])
nvault_set(g_level_data, key, data)
nvault_set(g_exp_data, key_exp, data_exp)
return PLUGIN_CONTINUE;
}
public System_Load(id)
{
new key[64], data[256], data_exp[256], key_exp[64]
new name[33]
get_user_name(id,name,32)
format(key, 63, "%s-/", name)
format(data, 255, "%i#", g_level[id])
format(key_exp, 63, "%s-/", name)
format(data_exp, 255, "%i#", level_exp[id])
nvault_get(g_level_data, key, data, 255)
nvault_get(g_exp_data, key_exp, data_exp, 255)
replace_all(data, 255, "#", " ")
replace_all(data_exp, 255, "#", " ")
new givelevel[32], give_exp[32]
parse(data, givelevel, 31)
parse(data_exp, give_exp, 31)
g_level[id] = str_to_num(givelevel)
level_exp[id] = str_to_num(give_exp)
set_task(1.0 ,"level_status", id, _, _, "b")
return PLUGIN_CONTINUE;
}
/*------------------------------------- Level System ---------------------------------------------------------*/
public Round_Start()
{
for(new id=1;id<=g_Players;id++)
set_task(3.0, "Level", id)
}
public Level(id)
{
if(is_user_alive(id) )
{
g_trime[id] = false;
new n = 1;
while( n < g_level[id] )
{
n = n + 1
}
}
}
public Frags_Manager()
{
new aname[32], attacker; attacker = read_data(1)
new y; y = 1;
get_user_name(attacker, aname, sizeof aname - 1)
if( ( level_exp[attacker] >= (g_level_exp[attacker] - 1) ) && (g_level[attacker] <= get_pcvar_num(g_level_max)) && is_user_alive(attacker) )
{
g_level[attacker] = g_level[attacker] + 1;
level_exp[attacker] = 0;
while( g_level[attacker] != y )
{
y = y + 1;
g_level_exp[attacker] = y * get_pcvar_num(g_frags_level);
}
message_begin(MSG_ONE_UNRELIABLE, g_ScreenFade, _, attacker)
write_short(1<<12) // duration
write_short(1) // hold time
write_short(0x0000) // fade type
write_byte(1) // red
write_byte(200) // green
write_byte(0) // blue
write_byte(205) // alpha
message_end()
emit_sound(attacker, CHAN_STREAM, sound_level_up, 1.0, ATTN_NORM, 0, PITCH_HIGH )
set_hudmessage(0, 200, 0, 0.65, 0.5, 0, 0.0, 3.0, 2.0, 1.0, -1)
show_hudmessage(0, "%s has cut down %i level", aname, g_level[attacker])
System_Save(attacker);
}
else
{
if(g_level[attacker] == get_pcvar_num(g_level_max))
Chat9olor(attacker, "^x04you have reached a maximum level: ^4%i", g_level[attacker] )
level_exp[attacker] = level_exp[attacker] + 1;
if(get_pcvar_num(SaveSystem))
System_Save(attacker);
}
}
/*-----------------------------------------Hud Message----------------------------------------------------------*/
public level_status(id)
{
new Spec
Spec = pev(id, PEV_SPEC_TARGET)
new PlayerName[32]
get_user_name(Spec, PlayerName, 31)
if(is_user_alive(id))
{
if(cs_get_user_team(id) == CS_TEAM_CT)
{
set_hudmessage(10, 180, 10, -1.0, 0.87, 0, 6.0, 1.1)
ShowSyncHudMsg(id, g_MsgSync, " Health: %d | Class: Human | Armor: %d | Ammo packs: %d ]^n Level : %i - Exp : %i/%i ",get_user_health(id),get_user_armor(id),ammo_packi[id],g_level[id],level_exp[id],g_level_exp[id])
}
if(cs_get_user_team(id) == CS_TEAM_T)
{
set_hudmessage(10, 180, 10, -1.0, 0.87, 0, 6.0, 1.1)
ShowSyncHudMsg(id, g_MsgSync, " Health: %d | Class: Zombie | Armor: %d | Ammo packs: %d ]^n Level : %i | Exp : %i/%i ",get_user_health(id),get_user_armor(id),ammo_packi[id],g_level[id],level_exp[id],g_level_exp[id])
}
}
else
if(is_user_alive(Spec)) // When Spectating Someone.
{
if(cs_get_user_team(id) == CS_TEAM_CT)
{
set_hudmessage(200, 30, 200, -1.0, 0.79, 0, 6.0, 1.1)
ShowSyncHudMsg(id, g_MsgSync, "Spectating: %s Class: Human ^n Level : %d - Exp %d/%d ^n ",PlayerName,g_level[Spec],level_exp[Spec],g_level_exp[Spec])
}
if(cs_get_user_team(id) == CS_TEAM_T)
{
set_hudmessage(200, 30, 200, -1.0, 0.79, 0, 6.0, 1.1)
ShowSyncHudMsg(id, g_MsgSync, "Spectating: %s Class: Zombie ^n Level : %d - Exp %d/%d ",PlayerName,g_level[Spec],level_exp[Spec],g_level_exp[Spec])
}
}
}
public show_status(id)
{
new name[32],pid = read_data(2) // When Aiming Someone (enemy/friend)
get_user_name(pid,name,31)
new idAiming, iBodyPart
get_user_aiming(id, idAiming, iBodyPart)
if(is_user_alive(idAiming) && is_user_alive(id))
{
if(cs_get_user_team(id) == CS_TEAM_CT && cs_get_user_team(idAiming) == CS_TEAM_CT)
{
set_hudmessage(238,201,0,-1.0,0.60,1, 0.01, 3.0, 0.01, 0.01, -1)
show_hudmessage(id, "%s ^n Health: %d | Class: Human | Armor: %d %d ^n Level : %i - Exp : %i/%i ", name,get_user_health(pid),get_user_armor(pid),g_level[pid],level_exp[pid],g_level_exp[pid])
}
else
if(cs_get_user_team(id) == CS_TEAM_T && cs_get_user_team(idAiming) == CS_TEAM_T)
{
set_hudmessage(255,0,0,-1.0,0.60,1, 0.01, 3.0, 0.01, 0.01, -1)
show_hudmessage(id, "%s ^n Health: %d | Class: Zombie | Armor: %d ^n Level : %i | Exp : %i/%i ", name,get_user_health(pid),get_user_armor(pid),g_level[pid],level_exp[pid],g_level_exp[pid])
}
}
}
public show_statusx(id)
{
new name[32],pid = read_data(2)
get_user_name(pid,name,31)
new idAiming, iBodyPart
get_user_aiming(id, idAiming, iBodyPart)
if(is_user_alive(idAiming) && is_user_alive(id))
{
if(cs_get_user_team(id) == CS_TEAM_T && cs_get_user_team(idAiming) == CS_TEAM_CT)
{
set_hudmessage(238, 201, 0,-1.0,0.60,1, 0.01, 3.0, 0.01, 0.01, -1)
show_hudmessage(id, "%s ^n Health: %d | Armor: %d | Ammo packs: %d ^n Level : %i | Exp : %i/%i ", name,get_user_health(pid),get_user_armor(pid),ammo_packi[pid],g_level[pid],level_exp[pid],g_level_exp[pid])
}
}
}
stock Chat9olor(const id, const input[], any:...)
{
new count = 1, players[ 32 ]
static msg[ 191 ]
vformat( msg, 190, input, 3 )
replace_all( msg, 190, "!g", "^4" )
replace_all( msg, 190, "!y", "^1" )
replace_all( msg, 190, "!t", "^3" )
if(id) players[ 0 ] = id; else get_players( players, count, "ch" )
{
for(new i = 0; i < count; i++)
{
if( is_user_connected( players[ i ] ) )
{
message_begin( MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[ i ] )
write_byte( players[ i ] )
write_string( msg )
message_end( )
}
}
}
}
Plugin ammopacks
Code:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <nVault>
#include <basebuilder>
#define PLUGIN "BB ammo_packs"
#define VERSION "1.0"
#define AUTHOR "G[o]Q"
new mKup_przedmiot // Menu
new mcbKup_przedmiot // Menu Callback
const AP_HANDLED=120
new ammo_packi[33]
new liczba_itemow
new pack_bonus,pack_bonus2,vault
new Array:nazwy_itemow
new Array:teamy_itemow
new Array:koszta_itemow
new kup_item
new g_vault
new nazwa_gracza[33][64]
public plugin_init() {
register_clcmd("say /buy","pokaz_menu")
register_clcmd("say /ammoshop","pokaz_menu")
register_clcmd("say /shop2","pokaz_menu")
register_concmd("bb_give_ammo","cmd_daj_ap",ADMIN_RCON,"<Nick> <Ilosc>") // za davane ammo
register_clcmd("","use_command_4_item")
register_clcmd("say","use_command_4_item")
nazwy_itemow=ArrayCreate(64,1);
teamy_itemow=ArrayCreate(1,1);
koszta_itemow=ArrayCreate(1,1);
cache_comands_first()
//cache_comands_second()
set_task(1.0,"cache_comands_second")
register_event("DeathMsg", "DeathMsg", "a")
register_event("Damage", "Damage", "b", "2!=0")
RegisterHam(Ham_Spawn,"player","spwn")
pack_bonus=register_cvar("BB_ammo_per_kill","4") //
pack_bonus2=register_cvar("BB_ammo_per_dmg","9999999999999999999") //
vault=register_cvar("BB_save_ap","1")
if(get_pcvar_num(vault))
g_vault=nvault_open("Base_Builder")
kup_item = CreateMultiForward("wybrano_item", ET_CONTINUE, FP_CELL, FP_CELL) //wybrano_item(id,item_id)
}
public cache_comands_first(){
new linijka=0,text[128],chars
static configdir[64],plik[128]
get_configsdir(configdir,63)
formatex(plik,127,"%s/bb-commands.ini",configdir)
do{
linijka = read_file(plik,linijka,text,127,chars)
if((text[0]==';') || !chars) continue
register_clcmd(text,"pokaz_menu")
}
while(linijka!=0)
}
public cache_comands_second(){
new name_item[33]
new komenda[33]
new size=ArraySize(teamy_itemow)
for(new i=0;i<size;i++){
ArrayGetString(nazwy_itemow,i,name_item,32)
replace_all(name_item,32,"+","")
register_clcmd(name_item,"use_command_4_item")
format(komenda,33,"say %s",name_item)
register_clcmd(komenda,"use_command_4_item")
}
return PLUGIN_CONTINUE
}
public use_command_4_item(id){
new param[3][33],name_item[33]
new result,team
read_argv(0, param[0], 32)
read_argv(1, param[1], 32)
new size=ArraySize(teamy_itemow)
for(new i=0;i<size;i++){
ArrayGetString(nazwy_itemow,i,name_item,32)
replace_all(name_item,32,"+","")
team=ArrayGetCell(teamy_itemow,i)
if((equal(param[1],name_item)) || (equal(param[0],name_item))){
if(!team || team==get_user_team(id)){
ExecuteForward(kup_item, result, id, i);
if(result>=AP_HANDLED){
return PLUGIN_HANDLED
}
new koszt =ArrayGetCell(koszta_itemow,i)
kup(id,koszt)
}
}
}
return PLUGIN_CONTINUE
}
public client_connect(id){
get_user_name(id,nazwa_gracza[id],63)
if(get_pcvar_num(vault)==1)
wczytaj_dane(id)
}
public client_disconnect(id){
if(get_pcvar_num(vault)==1)
zapisz_dane(id)
ammo_packi[id]=0
}
public DeathMsg()
{
new kid = read_data(1) //zabojca
new vid = read_data(2) // ofiara
ammo_packi[kid]+=get_pcvar_num(pack_bonus)
if(task_exists(vid+241)) remove_task(vid+241)
}
public Damage(id)
{
new damage = read_data(2)
new kid = get_user_attacker(id) // Gracz atakujacy
if(kid==id || !kid || !is_user_alive(kid)) return PLUGIN_HANDLED
while(damage>=get_pcvar_num(pack_bonus2)){
damage-=get_pcvar_num(pack_bonus2)
ammo_packi[kid]+=1
}
return PLUGIN_CONTINUE
}
public pokaz_packi(id){
id-=241
new text[128]
set_hudmessage(255, 255, 255, 0.0, 0.90, 0, 12.0, 12.0)
show_hudmessage(id, "Ammo: %d", ammo_packi[id])
message_begin(MSG_ONE,get_user_msgid("StatusText"),{0,0,0}, id)
write_byte(0)
write_string(text)
message_end()
}
public spwn(id){
if(task_exists(id+241)) remove_task(id+241)
set_task(0.6,"pokaz_packi",id+241,_,_,"b")
}
public dodaj_item(const nazwa[],koszt,team){ //team 1 - TT 2 - CT
param_convert(1)
ArrayPushString(nazwy_itemow, nazwa);
ArrayPushCell(teamy_itemow, team);
ArrayPushCell(koszta_itemow,koszt);
liczba_itemow++
return liczba_itemow-1
}
public pokaz_menu(id){
if(!is_user_alive(id)){
client_print(id,print_chat,"You have to be alive activated users the shop!")
return PLUGIN_HANDLED
}
mKup_przedmiot = menu_create("Buy items", "mh_Kup_przedmiot")
mcbKup_przedmiot = menu_makecallback("mcb_Kup_przedmiot")
new size=ArraySize(koszta_itemow)
for(new i=0;i<size;i++){
static text[128],nazwa[33],koszt,team,teams[16]
ArrayGetString(nazwy_itemow,i,nazwa,32)
koszt=ArrayGetCell(koszta_itemow,i)
team=ArrayGetCell(teamy_itemow,i)
switch(team){
case 0:{
teams="ALL"
}
case 1:{
teams="ZOMBIE"
}
case 2:{
teams="HUMAN"
}
}
if(team!=get_user_team(id) && team!=0)
format(text,127,"%s - only for %s ",nazwa,teams)
else format(text,127,"%s - \y%d\w (%s)",nazwa,koszt,teams)
menu_additem(mKup_przedmiot, text,"ma_Kup_prezdmiot", ADMIN_ALL, mcbKup_przedmiot)
}
menu_display(id, mKup_przedmiot, 0)
return PLUGIN_CONTINUE
}
public kup(id,koszt){
ammo_packi[id]-=koszt
}
public mh_Kup_przedmiot(id, menu, item) {
new result
if(item>-1){
ExecuteForward(kup_item, result, id, item);
if(result>=AP_HANDLED){
menu_destroy(menu)
return PLUGIN_HANDLED
}
new koszt =ArrayGetCell(koszta_itemow,item)
kup(id,koszt)
menu_destroy(menu)
}
return PLUGIN_CONTINUE
}
public ma_Kup_prezdmiot(id){}
public mcb_Kup_przedmiot(id, menu, item) {
new team=ArrayGetCell(teamy_itemow,item)
if(ammo_packi[id]<ArrayGetCell(koszta_itemow,item) || (get_user_team(id)!=team && team>0)) return ITEM_DISABLED
return ITEM_ENABLED
}
public plugin_natives(){
register_native("dodaj_extra_item", "dodaj_item", 1)
register_native("BB_get_user_ap", "get_ap",1)
register_native("BB_set_user_ap", "set_ap",1)
}
public get_ap(id){
return ammo_packi[id]
}
public set_ap(id,ammount){
ammo_packi[id]=ammount
}
public zapisz_dane(id){
new vaultkey[64],vaultdata[64]
format(vaultkey,63,"%s-bb",nazwa_gracza[id])
format(vaultdata,63,"%d",ammo_packi[id])
nvault_set(g_vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
public wczytaj_dane(id){
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-bb",nazwa_gracza[id])
format(vaultdata,255,"%d",ammo_packi[id])
nvault_get(g_vault,vaultkey,vaultdata,255) // pobieramy dane
ammo_packi[id]=str_to_num(vaultdata)
return PLUGIN_CONTINUE
}
public cmd_daj_ap(id,level,cid){
if(is_user_connected(id)){
new name[32], count[32]
read_argv(1, name, 31)
read_argv(2, count, 31)
new ilosc=str_to_num(count)
new player = cmd_target(id, name, CMDTARGET_ALLOW_SELF)
ammo_packi[player]+=ilosc
}
return PLUGIN_HANDLED
}
|