Debug help
StrikeTheBlood
13.11.2017
L 11/13/2017 - 11:22:09: [AMXX] Run time error 4: index out of bounds
L 11/13/2017 - 11:22:09: [AMXX] [0] ezlivels.sma::ShowHud (line 120)
L 11/13/2017 - 11:22:10: [AMXX] Displaying debug trace (plugin
[spoiler]
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <colorchat>
#include <fvault>
#define MaxLevels 30
#define IsPlayer(%1) (1 <= %1 <= g_iMaxPlayers)
#define CHAT_ACCESS ADMIN_ALL
new gMaxPlayers, gMsgSayText, syncObj, Level[33], eXP[33]
new ranks_hud, knife_xp, he_xp, hs_xp, kill_xp, kill_msg
new const g_vault_name[] = "livelssz";
//new const rprefix[]= "Ranks";
new iCvarPrefix;
new const Levels[MaxLevels+1] =
{
0,
5,
10,
15,
25,
35,
40,
45,
50,
55,
60,
65,
70,
75,
80,
85,
90,
95,
100,
105,
110,
115,
120,
125,
130,
135,
140,
145,
150
}
new const Prefix[MaxLevels][] =
{
"Amnesiac",
"Medium",
"Spy",
"Transporter",
"Escort",
"Tracker",
"Investigator",
"Sheriff",
"Vigilante",
"Doctor",
"Bodyguard",
"Consort",
"Framer",
"Forger",
"Blackmailer",
"Janitor",
"Consigliere",
"Ambusher",
"Mafioso",
"Godfather",
"Witch",
"Vampire",
"Executioner",
"Guardian Angel",
"Necromancer",
"Poisoner",
"Potion Master",
"Medusa",
"Coven Leader",
"Horseman of the Apocalypse!"
}
public plugin_init()
{
register_plugin("RankSystem", "1.0a", "alt.nick")
register_event("DeathMsg","client_death","a")
register_clcmd("say", "hook_say")
register_clcmd("say_team", "hook_teamsay")
register_clcmd("say /rank", "cmdRank")
register_clcmd("say_team /rank", "cmdRank")
ranks_hud = register_cvar("ranks_hud", "1") // Дали да Ñе поÑвÑва хъд при влизане в Ñървъра. Включено 1/0 Изключено
knife_xp = register_cvar("knife_xp", "5") // Колко Ð¥Ð* да дава за убийÑтво Ñ Ð½Ð¾Ð¶.
he_xp = register_cvar("he_xp", "8") // Колко Ð¥Ð* да дава за убийÑтво Ñ Granata (HE).
hs_xp = register_cvar("hs_xp", "15") // Колко Ð¥Ð* да дава за убийÑтво Ñ Headshot.
kill_xp = register_cvar("kill_xp", "10") // Колко Ð¥Ð* да дава за нормално убийÑтво.
kill_msg = register_cvar("kill_msg", "1") // Дали да показва кой Ñте убили и колко Ð¥Ð* Ñте получили. Включено 1/0 Изключено
register_concmd ("amx_give_xp", "CmdAddXP", ADMIN_IMMUNITY, "<nick | @ct | @t | @all> <xp>")
iCvarPrefix = register_cvar("amx_rank_prefix", "Ranks");
gMaxPlayers = get_maxplayers()
gMsgSayText = get_user_msgid("SayText")
syncObj = CreateHudSyncObj()
fvault_load(g_vault_name)
}
public ShowHud(id)
{
set_hudmessage(185, 239, 251, -1.0, 0.01, 0, 6.0, 1.0, 0.0, 0.0, -1)
ShowSyncHudMsg(id, syncObj,"Rank: %s | XP: %i | Level: %i", Prefix[Level[id]], eXP[id], Level[id])
}
public client_putinserver(id)
{
if(get_pcvar_num(ranks_hud) == 1)
set_task(1.0, "ShowHud", id, _, _, "b")
if(Level[id] < MaxLevels-1)
while(eXP[id] >= Levels[Level[id]])
Level[id] += 1
}
public client_death(killer, victim, weapon, hitgroup, TK)
{
if(killer == victim)
return PLUGIN_HANDLED
new headshot = (hitgroup == HIT_HEAD) ? 1 : 0
new rprefix[64];
get_pcvar_string(iCvarPrefix, rprefix, sizeof rprefix - 1);
switch(weapon)
{
case CSW_HEGRENADE:
{
eXP[killer] += get_pcvar_num(he_xp)
CheckLevel(killer)
SaveData(killer)
if(get_pcvar_num(kill_msg) == 1)
ColorChat(killer, NORMAL, "^4[%s]^1 poluchihte^4 %d XP^1 poradi ubiistwoto s^4 HE^1.", rprefix, get_pcvar_num(he_xp))
return PLUGIN_CONTINUE
}
case CSW_KNIFE:
{
eXP[killer] += get_pcvar_num(knife_xp)
CheckLevel(killer)
SaveData(killer)
if(get_pcvar_num(kill_msg) == 1)
ColorChat(killer, NORMAL, "^4[%s]^1 poluchihte^4 %d XP^1 poradi ubiistwoto s^4 noj^1.",rprefix, get_pcvar_num(knife_xp))
return PLUGIN_CONTINUE
}
}
if(headshot)
{
eXP[killer] += get_pcvar_num(hs_xp)
CheckLevel(killer)
SaveData(killer)
if(get_pcvar_num(kill_msg) == 1)
ColorChat(killer, NORMAL, "^4[%s]^1 poluchihte^4 %d XP^1 poradi ubiistwoto s^4 HS^1.",rprefix, get_pcvar_num(hs_xp))
return PLUGIN_CONTINUE
}
else
{
eXP[killer] += get_pcvar_num(kill_xp)
CheckLevel(killer)
SaveData(killer)
if(get_pcvar_num(kill_msg) == 1)
ColorChat(killer, NORMAL, "^4[%s]^1 poluchihte^4 %d XP^1.", rprefix, get_pcvar_num(kill_xp))
return PLUGIN_CONTINUE
}
CheckLevel(killer)
SaveData(killer)
return PLUGIN_CONTINUE
}
public CheckLevel(id)
{
if(Level[id] < MaxLevels-1)
while(eXP[id] >= Levels[Level[id]])
Level[id] += 1
}
public client_connect(id)
{
LoadData(id)
}
public client_disconnect(id)
{
SaveData(id)
eXP[id] = 0
Level[id] = 0
remove_task(id)
}
public cmdRank(id)
{
new rprefix[64];
get_pcvar_string(iCvarPrefix, rprefix, sizeof rprefix - 1);
if(is_user_connected(id))
ColorChat(id, NORMAL, "^4[%s]^1 Rank:^4 %s^1 | XP:^4 %d^1 | Level:^4 %d^1.", rprefix, Prefix[Level[id]], eXP[id], Level[id])
}
public CmdAddXP (iPlayer, level, cid)
{
if(!cmd_access(iPlayer, level, cid, 3)) return PLUGIN_HANDLED;
new arg [32]
read_argv (1, arg, 31)
new AddXP [32]
read_argv (2, AddXP, charsmax (AddXP))
new XPtoGive = str_to_num (AddXP)
new AdminName [32]
new TargetName [32]
get_user_name (iPlayer, AdminName, charsmax (AdminName))
new rprefix[64];
get_pcvar_string(iCvarPrefix, rprefix, sizeof rprefix - 1);
if(arg[0]=='@')
{
if(equali(arg[1],"All") || equali(arg[1],"ALL"))
{
new players[32], totalplayers, All
get_players(players, totalplayers)
for (new i = 0; i < totalplayers; i++)
{
All = players[i]
eXP[All] += XPtoGive
}
CheckLevel(All)
ColorChat(0, NORMAL, "^4[%s]^1 ^3%s^1 dade^4 %i^1 XP na vsichki ^4igrachi^1!", rprefix, AdminName, XPtoGive)
}
else if(equali(arg[1],"T") || equali(arg[1],"t"))
{
new players[32], totalplayers, T
get_players(players, totalplayers)
for (new i = 0; i < totalplayers; i++)
{
if (get_user_team(players[i]) == 1)
{
T = players[i]
eXP[T] += XPtoGive
}
}
CheckLevel(T)
ColorChat(0, RED, "^4[%s] ^1%s dade^4 %i^1 XP na vsichki ^3 Teroristi^1.", rprefix, AdminName, XPtoGive)
}
else if(equali(arg[1],"CT") || equali(arg[1],"ct"))
{
new players[32], totalplayers, CT
get_players(players, totalplayers)
for(new i = 0; i < totalplayers; i++)
{
if(get_user_team(players[i]) == 2)
{
CT = players[i]
eXP[CT] += XPtoGive
}
}
CheckLevel(CT)
ColorChat(0, BLUE, "^4[%s]^1 %s^1 dade^4 %i^1 XP na wsichki ^3 Kontra-Teroristi^1!", rprefix, AdminName, XPtoGive)
}
}
else
{
new iTarget = cmd_target(iPlayer, arg, 3)
get_user_name (iTarget, TargetName, charsmax (TargetName))
if(iTarget)
{
eXP[iTarget] += XPtoGive
CheckLevel(iTarget)
ColorChat(0, NORMAL, "^4[%s]^1 ^3%s^1 dade^4 %i^1 XP na^4 %s^1.", rprefix, AdminName, XPtoGive, TargetName)
}
}
return PLUGIN_HANDLED
}
bool:IsValidMessage( szMessage[ ], iLen )
{
read_args( szMessage, iLen )
remove_quotes( szMessage )
new iPos, cChar
while( 0 <= ( cChar = szMessage[ iPos++ ] ) <= 255 )
{
if( cChar != ' ' && cChar != '%' )
{
return true
}
}
return false
}
public hook_say(id)
{
if(!is_user_connected(id))
return PLUGIN_HANDLED_MAIN
new szArgs[192]
if( !IsValidMessage(szArgs, charsmax(szArgs)))
return PLUGIN_HANDLED_MAIN
if(equal(szArgs,"")) return PLUGIN_HANDLED_MAIN
new szName[32]
get_user_name(id, szName, sizeof szName-1)
new alive = is_user_alive(id)
if(contain(szArgs,"@") >= 0)
return PLUGIN_HANDLED_MAIN
if(get_user_flags(id) & CHAT_ACCESS)
format(szArgs, 191,"^x04[%s] ^x03%s^x01:^x04 %s", Prefix[Level[id]], szName, szArgs)
else
format(szArgs, 191, "^x04[%s] ^x03%s^x01: %s", Prefix[Level[id]], szName, szArgs)
for(new i = 1; i <= gMaxPlayers; i++)
{
if(!is_user_connected(i))
continue
if(alive && is_user_alive(i))
{
message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, i)
write_byte(id)
write_string(szArgs)
message_end()
}
else if(!alive && !is_user_alive(i))
{
new format[192]
formatex(format,191,"^1*^4DEAD^1* %s",szArgs)
message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, i)
write_byte(id)
write_string(format)
message_end()
}
}
return PLUGIN_HANDLED_MAIN
}
public hook_teamsay(id) {
if(!is_user_connected(id)) {
return PLUGIN_HANDLED_MAIN
}
new szArgs[192]
if(!IsValidMessage(szArgs, charsmax(szArgs))) {
return PLUGIN_HANDLED_MAIN
}
if(equal(szArgs,"")) return PLUGIN_HANDLED_MAIN
new alive = is_user_alive(id)
new CsTeams:team = cs_get_user_team(id)
new iPlayers[32], iNum
get_players(iPlayers, iNum)
new szName[32]
get_user_name(id, szName, sizeof szName-1)
new const szPrefixes[2][CsTeams][] = {
{
"^4(^3Spectator^4)",
"^4(^3Terrorist^4)",
"^4(^3Counter-Terrorist^4)",
"^4(^3Spectator^4)"
},
{
"^4(^3Spectator^4)",
"^4(^3Terrorist^4)",
"^4(^3Counter-Terrorist^4)",
"^4(^3Spectator^4)"
}
}
if(contain(szArgs,"@") >= 0)
return PLUGIN_HANDLED_MAIN
if(get_user_flags(id) & CHAT_ACCESS)
format(szArgs, 191,"^1%s ^x04[%s] ^x03%s^x01:^x04 %s",szPrefixes[alive][team], Prefix[Level[id]], szName, szArgs)
else
format(szArgs, 191, "^1%s ^x04[%s] ^x03%s^x01: %s",szPrefixes[alive][team], Prefix[Level[id]], szName, szArgs)
for(new i = 1; i <= gMaxPlayers; i++)
{
if(!is_user_connected(i))
continue
if(alive && is_user_alive(i))
{
message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, i)
write_byte(id)
write_string(szArgs)
message_end()
}
else if(!alive && !is_user_alive(i))
{
new format[192]
formatex(format,191,"^1*^4DEAD^1* %s",szArgs)
message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, i)
write_byte(id)
write_string(format)
message_end()
}
}
return PLUGIN_HANDLED_MAIN
}
public SaveData(id)
{
new name[32];
get_user_name(id,name,31);
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s", name);
format(vaultdata,255,"%i#%i#",eXP[id],Level[id]);
fvault_set_data(g_vault_name,vaultkey,vaultdata);
return PLUGIN_CONTINUE;
}
public LoadData(id)
{
new name[32];
get_user_name(id,name,31);
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s",name);
format(vaultdata,255,"%i#%i#",eXP[id],Level[id]);
fvault_get_data(g_vault_name,vaultkey,vaultdata,charsmax(vaultdata));
replace_all(vaultdata, 255, "#", " ");
new playerxp[32], playerlevel[32];
parse(vaultdata, playerxp, 31, playerlevel, 31);
eXP[id] = str_to_num(playerxp);
Level[id] = str_to_num(playerlevel);
return PLUGIN_CONTINUE;
}
Karko85
14.11.2017
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <colorchat> #include <fvault> #define MaxLevels 30 #define IsPlayer(%1) (1 <= %1 <= g_iMaxPlayers) #define CHAT_ACCESS ADMIN_ALL new gMaxPlayers, gMsgSayText, syncObj, Level[33], eXP[33] new ranks_hud, knife_xp, he_xp, hs_xp, kill_xp, kill_msg new const g_vault_name[] = "livelssz"; //new const rprefix[]= "Ranks"; new iCvarPrefix; new const Levels[MaxLevels +1 ] = { 0, 5, 10, 15, 25, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150 } new const Prefix[MaxLevels + 1][] = { "Amnesiac", "Medium", "Spy", "Transporter", "Escort", "Tracker", "Investigator", "Sheriff", "Vigilante", "Doctor", "Bodyguard", "Consort", "Framer", "Forger", "Blackmailer", "Janitor", "Consigliere", "Ambusher", "Mafioso", "Godfather", "Witch", "Vampire", "Executioner", "Guardian Angel", "Necromancer", "Poisoner", "Potion Master", "Medusa", "Coven Leader", "Horseman of the Apocalypse!" } public plugin_init() { register_plugin("RankSystem", "1.0a", "alt.nick") register_event("DeathMsg","client_death","a") register_clcmd("say", "hook_say") register_clcmd("say_team", "hook_teamsay") register_clcmd("say /rank", "cmdRank") register_clcmd("say_team /rank", "cmdRank") ranks_hud = register_cvar("ranks_hud", "1") // Дали да Ñе поÑвÑва хъд при влизане в Ñървъра. Включено 1/0 Изключено knife_xp = register_cvar("knife_xp", "5") // Колко Ð¥Ð* да дава за убийÑтво Ñ Ð½Ð¾Ð¶. he_xp = register_cvar("he_xp", "8") // Колко Ð¥Ð* да дава за убийÑтво Ñ Granata (HE). hs_xp = register_cvar("hs_xp", "15") // Колко Ð¥Ð* да дава за убийÑтво Ñ Headshot. kill_xp = register_cvar("kill_xp", "10") // Колко Ð¥Ð* да дава за нормално убийÑтво. kill_msg = register_cvar("kill_msg", "1") // Дали да показва кой Ñте убили и колко Ð¥Ð* Ñте получили. Включено 1/0 Изключено register_concmd ("amx_give_xp", "CmdAddXP", ADMIN_IMMUNITY, "<nick | @ct | @t | @all> <xp>") iCvarPrefix = register_cvar("amx_rank_prefix", "Ranks"); gMaxPlayers = get_maxplayers() gMsgSayText = get_user_msgid("SayText") syncObj = CreateHudSyncObj() fvault_load(g_vault_name) } public ShowHud(id) { set_hudmessage(185, 239, 251, -1.0, 0.01, 0, 6.0, 1.0, 0.0, 0.0, -1) ShowSyncHudMsg(id, syncObj,"Rank: %s | XP: %i | Level: %i", Prefix[Level[id]], eXP[id], Level[id]) } public client_putinserver(id) { if(get_pcvar_num(ranks_hud) == 1) set_task(1.0, "ShowHud", id, _, _, "b") if(Level[id] < MaxLevels-1) while(eXP[id] >= Levels[Level[id]]) Level[id] += 1 } public client_death(killer, victim, weapon, hitgroup, TK) { if(killer == victim) return PLUGIN_HANDLED new headshot = (hitgroup == HIT_HEAD) ? 1 : 0 new rprefix[64]; get_pcvar_string(iCvarPrefix, rprefix, sizeof rprefix - 1); switch(weapon) { case CSW_HEGRENADE: { eXP[killer] += get_pcvar_num(he_xp) CheckLevel(killer) SaveData(killer) if(get_pcvar_num(kill_msg) == 1) ColorChat(killer, NORMAL, "^4[%s]^1 poluchihte^4 %d XP^1 poradi ubiistwoto s^4 HE^1.", rprefix, get_pcvar_num(he_xp)) return PLUGIN_CONTINUE } case CSW_KNIFE: { eXP[killer] += get_pcvar_num(knife_xp) CheckLevel(killer) SaveData(killer) if(get_pcvar_num(kill_msg) == 1) ColorChat(killer, NORMAL, "^4[%s]^1 poluchihte^4 %d XP^1 poradi ubiistwoto s^4 noj^1.",rprefix, get_pcvar_num(knife_xp)) return PLUGIN_CONTINUE } } if(headshot) { eXP[killer] += get_pcvar_num(hs_xp) CheckLevel(killer) SaveData(killer) if(get_pcvar_num(kill_msg) == 1) ColorChat(killer, NORMAL, "^4[%s]^1 poluchihte^4 %d XP^1 poradi ubiistwoto s^4 HS^1.",rprefix, get_pcvar_num(hs_xp)) return PLUGIN_CONTINUE } else { eXP[killer] += get_pcvar_num(kill_xp) CheckLevel(killer) SaveData(killer) if(get_pcvar_num(kill_msg) == 1) ColorChat(killer, NORMAL, "^4[%s]^1 poluchihte^4 %d XP^1.", rprefix, get_pcvar_num(kill_xp)) return PLUGIN_CONTINUE } CheckLevel(killer) SaveData(killer) return PLUGIN_CONTINUE } public CheckLevel(id) { if(Level[id] < MaxLevels-1) while(eXP[id] >= Levels[Level[id]]) Level[id] += 1 } public client_connect(id) { LoadData(id) } public client_disconnect(id) { SaveData(id) eXP[id] = 0 Level[id] = 0 remove_task(id) } public cmdRank(id) { new rprefix[64]; get_pcvar_string(iCvarPrefix, rprefix, sizeof rprefix - 1); if(is_user_connected(id)) ColorChat(id, NORMAL, "^4[%s]^1 Rank:^4 %s^1 | XP:^4 %d^1 | Level:^4 %d^1.", rprefix, Prefix[Level[id]], eXP[id], Level[id]) } public CmdAddXP (iPlayer, level, cid) { if(!cmd_access(iPlayer, level, cid, 3)) return PLUGIN_HANDLED; new arg [32] read_argv (1, arg, 31) new AddXP [32] read_argv (2, AddXP, charsmax (AddXP)) new XPtoGive = str_to_num (AddXP) new AdminName [32] new TargetName [32] get_user_name (iPlayer, AdminName, charsmax (AdminName)) new rprefix[64]; get_pcvar_string(iCvarPrefix, rprefix, sizeof rprefix - 1); if(arg[0]=='@') { if(equali(arg[1],"All") || equali(arg[1],"ALL")) { new players[32], totalplayers, All get_players(players, totalplayers) for (new i = 0; i < totalplayers; i++) { All = players[i] eXP[All] += XPtoGive } CheckLevel(All) ColorChat(0, NORMAL, "^4[%s]^1 ^3%s^1 dade^4 %i^1 XP na vsichki ^4igrachi^1!", rprefix, AdminName, XPtoGive) } else if(equali(arg[1],"T") || equali(arg[1],"t")) { new players[32], totalplayers, T get_players(players, totalplayers) for (new i = 0; i < totalplayers; i++) { if (get_user_team(players[i]) == 1) { T = players[i] eXP[T] += XPtoGive } } CheckLevel(T) ColorChat(0, RED, "^4[%s] ^1%s dade^4 %i^1 XP na vsichki ^3 Teroristi^1.", rprefix, AdminName, XPtoGive) } else if(equali(arg[1],"CT") || equali(arg[1],"ct")) { new players[32], totalplayers, CT get_players(players, totalplayers) for(new i = 0; i < totalplayers; i++) { if(get_user_team(players[i]) == 2) { CT = players[i] eXP[CT] += XPtoGive } } CheckLevel(CT) ColorChat(0, BLUE, "^4[%s]^1 %s^1 dade^4 %i^1 XP na wsichki ^3 Kontra-Teroristi^1!", rprefix, AdminName, XPtoGive) } } else { new iTarget = cmd_target(iPlayer, arg, 3) get_user_name (iTarget, TargetName, charsmax (TargetName)) if(iTarget) { eXP[iTarget] += XPtoGive CheckLevel(iTarget) ColorChat(0, NORMAL, "^4[%s]^1 ^3%s^1 dade^4 %i^1 XP na^4 %s^1.", rprefix, AdminName, XPtoGive, TargetName) } } return PLUGIN_HANDLED } bool:IsValidMessage( szMessage[ ], iLen ) { read_args( szMessage, iLen ) remove_quotes( szMessage ) new iPos, cChar while( 0 <= ( cChar = szMessage[ iPos++ ] ) <= 255 ) { if( cChar != ' ' && cChar != '%' ) { return true } } return false } public hook_say(id) { if(!is_user_connected(id)) return PLUGIN_HANDLED_MAIN new szArgs[192] if( !IsValidMessage(szArgs, charsmax(szArgs))) return PLUGIN_HANDLED_MAIN if(equal(szArgs,"")) return PLUGIN_HANDLED_MAIN new szName[32] get_user_name(id, szName, sizeof szName-1) new alive = is_user_alive(id) if(contain(szArgs,"@") >= 0) return PLUGIN_HANDLED_MAIN if(get_user_flags(id) & CHAT_ACCESS) format(szArgs, 191,"^x04[%s] ^x03%s^x01:^x04 %s", Prefix[Level[id]], szName, szArgs) else format(szArgs, 191, "^x04[%s] ^x03%s^x01: %s", Prefix[Level[id]], szName, szArgs) for(new i = 1; i <= gMaxPlayers; i++) { if(!is_user_connected(i)) continue if(alive && is_user_alive(i)) { message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, i) write_byte(id) write_string(szArgs) message_end() } else if(!alive && !is_user_alive(i)) { new format[192] formatex(format,191,"^1*^4DEAD^1* %s",szArgs) message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, i) write_byte(id) write_string(format) message_end() } } return PLUGIN_HANDLED_MAIN } public hook_teamsay(id) { if(!is_user_connected(id)) { return PLUGIN_HANDLED_MAIN } new szArgs[192] if(!IsValidMessage(szArgs, charsmax(szArgs))) { return PLUGIN_HANDLED_MAIN } if(equal(szArgs,"")) return PLUGIN_HANDLED_MAIN new alive = is_user_alive(id) new CsTeams:team = cs_get_user_team(id) new iPlayers[32], iNum get_players(iPlayers, iNum) new szName[32] get_user_name(id, szName, sizeof szName-1) new const szPrefixes[2][CsTeams][] = { { "^4(^3Spectator^4)", "^4(^3Terrorist^4)", "^4(^3Counter-Terrorist^4)", "^4(^3Spectator^4)" }, { "^4(^3Spectator^4)", "^4(^3Terrorist^4)", "^4(^3Counter-Terrorist^4)", "^4(^3Spectator^4)" } } if(contain(szArgs,"@") >= 0) return PLUGIN_HANDLED_MAIN if(get_user_flags(id) & CHAT_ACCESS) format(szArgs, 191,"^1%s ^x04[%s] ^x03%s^x01:^x04 %s",szPrefixes[alive][team], Prefix[Level[id]], szName, szArgs) else format(szArgs, 191, "^1%s ^x04[%s] ^x03%s^x01: %s",szPrefixes[alive][team], Prefix[Level[id]], szName, szArgs) for(new i = 1; i <= gMaxPlayers; i++) { if(!is_user_connected(i)) continue if(alive && is_user_alive(i)) { message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, i) write_byte(id) write_string(szArgs) message_end() } else if(!alive && !is_user_alive(i)) { new format[192] formatex(format,191,"^1*^4DEAD^1* %s",szArgs) message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, i) write_byte(id) write_string(format) message_end() } } return PLUGIN_HANDLED_MAIN } public SaveData(id) { new name[32]; get_user_name(id,name,31); new vaultkey[64],vaultdata[256]; format(vaultkey,63,"%s", name); format(vaultdata,255,"%i#%i#",eXP[id],Level[id]); fvault_set_data(g_vault_name,vaultkey,vaultdata); return PLUGIN_CONTINUE; } public LoadData(id) { new name[32]; get_user_name(id,name,31); new vaultkey[64],vaultdata[256]; format(vaultkey,63,"%s",name); format(vaultdata,255,"%i#%i#",eXP[id],Level[id]); fvault_get_data(g_vault_name,vaultkey,vaultdata,charsmax(vaultdata)); replace_all(vaultdata, 255, "#", " "); new playerxp[32], playerlevel[32]; parse(vaultdata, playerxp, 31, playerlevel, 31); eXP[id] = str_to_num(playerxp); Level[id] = str_to_num(playerlevel); return PLUGIN_CONTINUE; }
Edited by BaRtEk v2, 14.11.2017 15:40.