#include <amxmodx>
#include <amxmisc>
#include <nvault>
enum Color
{
NORMAL = 1, // clients scr_concolor cvar color
GREEN, // Green Color
TEAM_COLOR, // Red, grey, blue
GREY, // grey
RED, // Red
BLUE, // Blue
}
new TeamName[][] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
}
ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
static message[256];
switch(type)
{
case NORMAL: // clients scr_concolor cvar color
{
message[0] = 0x01;
}
case GREEN: // Green
{
message[0] = 0x04;
}
default: // White, Red, Blue
{
message[0] = 0x03;
}
}
vformat(message[1], 251, msg, 4);
message[192] = '^0';
static team, ColorChange, index, MSG_Type;
if(id)
{
MSG_Type = MSG_ONE;
index = id;
} else {
index = FindPlayer();
MSG_Type = MSG_ALL;
}
team = get_user_team(index);
ColorChange = ColorSelection(index, MSG_Type, type);
ShowColorMessage(index, MSG_Type, message);
if(ColorChange)
{
Team_Info(index, MSG_Type, TeamName[team]);
}
}
ShowColorMessage(id, type, message[])
{
message_begin(type, get_user_msgid("SayText"), _, id);
write_byte(id)
write_string(message);
message_end();
}
Team_Info(id, type, team[])
{
message_begin(type, get_user_msgid("TeamInfo"), _, id);
write_byte(id);
write_string(team);
message_end();
return 1;
}
ColorSelection(index, type, Color:Type)
{
switch(Type)
{
case RED:
{
return Team_Info(index, type, TeamName[1]);
}
case BLUE:
{
return Team_Info(index, type, TeamName[2]);
}
case GREY:
{
return Team_Info(index, type, TeamName[0]);
}
}
return 0;
}
FindPlayer()
{
static i;
i = -1;
while(i <= get_maxplayers())
{
if(is_user_connected(++i))
{
return i;
}
}
return -1;
}
#define PLUGIN "RangMenü"
#define VERSION "1.0"
#define AUTHOR "V!rusHD"
new rangkill[33],szint[33],lvl[33],g_vault
new message[192]
new nev[32]
new Temp[192]
static color[10]
#define szamok 13
#define lvlszamok 30
new const kill[szamok] = {
200,
500,
750,
900,
1150,
1350,
1500,
1600,
1800,
2000,
2300,
2500,
3000
}
new const rangok[szamok+1][] = {
"[Pisis]",
"[Taknyos]",
"[Kezdő]",
"[Haladó]",
"[Profi]",
"[LoL]",
"[Aimos]",
"[Fejvadász]",
"[Brutál]",
"[Mester]",
"[NagyMester]",
"[LegenD]",
"[Isten]",
"[Titán]"
}
new const lvlkill[lvlszamok] = {
25,
50,
75,
100,
125,
150,
200,
300,
400,
500,
600,
700,
800,
900,
1000,
1150,
1300,
1500,
1700,
1800,
1900,
2150,
2300,
2400,
2500,
2600,
2700,
2800,
2900,
3000
}
new const szintek[lvlszamok+1] = {
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30
}
public plugin_init() {
register_message(get_user_msgid("SayText"),"Message_SayText");
register_clcmd("say /rangmenu","fomenu")
register_event("DeathMsg","death","a")
register_clcmd("say", "sayhook")
g_vault = nvault_open("Rangok")
}
public death()
{
new killer = read_data(1)
new victim = read_data(2)
if(killer == victim)
{
return PLUGIN_HANDLED
}
rangkill[killer]++
return PLUGIN_HANDLED
}
public fomenu(id)
{
new cim[121]
format(cim, charsmax(cim), "RangMenü(By:V!rusHD)^nKILL:%d",rangkill[id])
new menu = menu_create(cim, "rangmenu_handler" )
menu_additem(menu, "\rPisis\y(Megszerezve)", "1", 0);
if(rangkill[id] >= 200)
menu_additem(menu, "\rTaknyos\y(Megszerezve)", "2", 0);
else
menu_additem(menu, "\dTaknyos\y(200 KILL)", "2", 0);
if(rangkill[id] >= 500)
menu_additem(menu, "\rKezdő\y(Megszerezve)", "3", 0);
else
menu_additem(menu, "\dKezdő\y(500 KILL)", "3", 0);
if(rangkill[id] >= 750)
menu_additem(menu, "\rHaladó\y(Megszerezve)", "4", 0);
else
menu_additem(menu, "\dHaladó\y(750 KILL)", "4", 0);
if(rangkill[id] >= 900)
menu_additem(menu, "\rProfi\y(Megszerezve)", "5", 0);
else
menu_additem(menu, "\dProfi\y(900 KILL)", "5", 0);
if(rangkill[id] >= 1150)
menu_additem(menu, "\rLoL\y(Megszerezve)", "6", 0);
else
menu_additem(menu, "\dLoL\y(1150 KILL)", "6", 0);
if(rangkill[id] >= 1350)
menu_additem(menu, "\rAimos\y(Megszerezve)", "7", 0);
else
menu_additem(menu, "\dAimos\y(1350 KILL)", "7", 0);
if(rangkill[id] >= 1500)
menu_additem(menu, "\rFejvadász\y(Megszerezve)", "8", 0);
else
menu_additem(menu, "\dFejvadász\y(1500 KILL)", "8", 0);
if(rangkill[id] >= 1600)
menu_additem(menu, "\rBrutál\y(Megszerezve)", "9", 0);
else
menu_additem(menu, "\dBrutál\y(1600 KILL)", "9", 0);
if(rangkill[id] >= 1800)
menu_additem(menu, "\rMester\y(Megszerezve)", "10", 0);
else
menu_additem(menu, "\dMester\y(1800 KILL)", "10", 0);
if(rangkill[id] >= 2000)
menu_additem(menu, "\rNagyMester\y(Megszerezve)", "11", 0);
else
menu_additem(menu, "\dNagyMester\y(2000 KILL)", "11", 0);
if(rangkill[id] >= 2300)
menu_additem(menu, "\rLegenD\y(Megszerezve)", "12", 0);
else
menu_additem(menu, "\dLegenD\y(2300 KILL)", "12", 0);
if(rangkill[id] >= 2500)
menu_additem(menu, "\rIsten\y(Megszerezve)", "13", 0);
else
menu_additem(menu, "\dIsten\y(2500 KILL)", "13", 0);
if(rangkill[id] >= 3000)
menu_additem(menu, "\rTitán\y(Megszerezve)", "14", 0);
else
menu_additem(menu, "\dTitán\y(3000 KILL)", "14", 0);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_setprop(menu, MPROP_EXITNAME, "Kilépés");
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public rangmenu_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_cancel(id);
return PLUGIN_HANDLED;
}
new command[6], name[64], access, callback;
menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
new key = str_to_num(command);
switch(key)
{
case 1:
{
if(rangkill[id] >= 0)
{
ColorChat(id, GREY, "Ezt a ^4rangot ^1már megszerezted.")
}
}
case 2:
{
if(rangkill[id] >= 200)
{
ColorChat(id, GREY, "Ezt a ^4rangot ^1már megszerezted.")
}
else
{
ColorChat(id, GREY, "A ^4rang ^1használatához 200 ^3KILL ^1szükséges.")
}
}
case 3:
{
if(rangkill[id] >= 500)
{
ColorChat(id, GREY, "Ezt a ^4rangot ^1már megszerezted.")
}
else
{
ColorChat(id, GREY, "A ^4rang ^1használatához 500 ^3KILL ^1szükséges.")
}
}
case 4:
{
if(rangkill[id] >= 750)
{
ColorChat(id, GREY, "Ezt a ^4rangot ^1már megszerezted.")
}
else
{
ColorChat(id, GREY, "A ^4rang ^1használatához 750 ^3KILL ^1szükséges.")
}
}
case 5:
{
if(rangkill[id] >= 900)
{
ColorChat(id, GREY, "Ezt a ^4rangot ^1már megszerezted.")
}
else
{
ColorChat(id, GREY, "A ^4rang ^1használatához 900 ^3KILL ^1szükséges.")
}
}
case 6:
{
if(rangkill[id] >= 1150)
{
ColorChat(id, GREY, "Ezt a ^4rangot ^1már megszerezted.")
}
else
{
ColorChat(id, GREY, "A ^4rang ^1használatához 1150 ^3KILL ^1szükséges.")
}
}
case 7:
{
if(rangkill[id] >= 1350)
{
ColorChat(id, GREY, "Ezt a ^4rangot ^1már megszerezted.")
}
else
{
ColorChat(id, GREY, "A ^4rang ^1használatához 1350 ^3KILL ^1szükséges.")
}
}
case 8:
{
if(rangkill[id] >= 1500)
{
ColorChat(id, GREY, "Ezt a ^4rangot ^1már megszerezted.")
}
else
{
ColorChat(id, GREY, "A ^4rang ^1használatához 1500 ^3KILL ^1szükséges.")
}
}
case 9:
{
if(rangkill[id] >= 1600)
{
ColorChat(id, GREY, "Ezt a ^4rangot ^1már megszerezted.")
}
else
{
ColorChat(id, GREY, "A ^4rang ^1használatához 1600 ^3KILL ^1szükséges.")
}
}
case 10:
{
if(rangkill[id] >= 1800)
{
ColorChat(id, GREY, "Ezt a ^4rangot ^1már megszerezted.")
}
else
{
ColorChat(id, GREY, "A ^4rang ^1használatához 1800 ^3KILL ^1szükséges.")
}
}
case 11:
{
if(rangkill[id] >= 2000)
{
ColorChat(id, GREY, "Ezt a ^4rangot ^1már megszerezted.")
}
else
{
ColorChat(id, GREY, "A ^4rang ^1használatához 2000 ^3KILL ^1szükséges.")
}
}
case 12:
{
if(rangkill[id] >= 2300)
{
ColorChat(id, GREY, "Ezt a ^4rangot ^1már megszerezted.")
}
else
{
ColorChat(id, GREY, "A ^4rang ^1használatához 2300 ^3KILL ^1szükséges.")
}
}
case 13:
{
if(rangkill[id] >= 2500)
{
ColorChat(id, GREY, "Ezt a ^4rangot ^1már megszerezted.")
}
else
{
ColorChat(id, GREY, "A ^4rang ^1használatához 2500 ^3KILL ^1szükséges.")
}
}
case 14:
{
if(rangkill[id] >= 3000)
{
ColorChat(id, GREY, "Ezt a ^4rangot ^1már megszerezted.")
}
else
{
ColorChat(id, GREY, "A ^4rang ^1használatához 3000 ^3KILL ^1szükséges.")
}
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public client_connect(id)
{
LoadData(id)
}
public client_disconnect(id)
{
SaveData(id)
}
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#%i#",rangkill[id],szint[id],lvl[id])
nvault_set(g_vault,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#%i#",rangkill[id],szint[id],lvl[id])
nvault_get(g_vault,vaultkey,vaultdata,255)
replace_all(vaultdata, 255, "#", " ")
new lekeres_1[32],lekeres_2[32],lekeres_3[32]
parse(vaultdata, lekeres_1, 31, lekeres_2, 31, lekeres_3, 31)
rangkill[id] = str_to_num(lekeres_1)
szint[id] = str_to_num(lekeres_2)
lvl[id] = str_to_num(lekeres_3)
return PLUGIN_CONTINUE
}
stock print_color(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")
replace_all(msg, 190, "á", "á")
replace_all(msg, 190, "é", "Ă©")
replace_all(msg, 190, "í", "Ă")
replace_all(msg, 190, "ó", "Ăł")
replace_all(msg, 190, "ö", "ö")
replace_all(msg, 190, "ő", "Ĺ‘")
replace_all(msg, 190, "ú", "Ăş")
replace_all(msg, 190, "ü", "ĂĽ")
replace_all(msg, 190, "ű", "ű")
replace_all(msg, 190, "Á", "Ă")
replace_all(msg, 190, "É", "É")
replace_all(msg, 190, "Í", "ĂŤ")
replace_all(msg, 190, "Ó", "Ă“")
replace_all(msg, 190, "Ö", "Ă–")
replace_all(msg, 190, "Ő", "Ĺ")
replace_all(msg, 190, "Ú", "Ăš")
replace_all(msg, 190, "Ü", "Ăś")
replace_all(msg, 190, "Ű", "Ĺ°")
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()
}
}
}
return PLUGIN_HANDLED
}
public Message_SayText(msgId,msgDest,msgEnt)
{
new id = get_msg_arg_int(1);
if( is_user_connected(id) )
{
{
new szChannel[64]
get_msg_arg_string(2, szChannel, charsmax(szChannel));
if( equal(szChannel, "#Cstrike_Chat_All") )
{
formatex(szChannel, charsmax(szChannel), "^4[%s] ^3%%s1 ^1: %%s2", rangok[szamok])
set_msg_arg_string(2, szChannel)
}
else if( !equal(szChannel, "#Cstrike_Name_Change") )
{
format(szChannel, charsmax(szChannel), "^4[%s] %s", rangok[szamok], szChannel)
set_msg_arg_string(2, szChannel)
}
return
}
}
}
public sayhook(id)
{
read_args (message, 191)
remove_quotes (message)
if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, ""))
{
return PLUGIN_CONTINUE
}
get_user_name(id, nev, 31)
if(is_user_alive(id)) {
get_user_team(id, color, 9)
formatex(Temp, 191, "^x04%s ^x03%s^x01: %s", rangok[szint[id]], nev, message)
}
else {
get_user_team(id, color, 9)
formatex(Temp, 191, "^x04*Halott* %s ^x03%s^x01: %s", rangok[szint[id]], nev, message)
}
sendmessage(color)
return PLUGIN_HANDLED
}
public tshook(id)
{
read_args (message, 191)
remove_quotes (message)
if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, ""))
{
return PLUGIN_CONTINUE
}
get_user_name(id, nev, 31)
new playerTeam = get_user_team(id)
new playerTeamName[19]
switch (playerTeam)
{
case 1: {
copy (playerTeamName, 11, "*Terrorista*")
}
case 2: {
copy (playerTeamName, 18, "*Anti-Terrorista*")
}
default:
copy (playerTeamName, 9, "*Néző*")
}
if(is_user_alive(id))
{
get_user_team(id, color, 9)
formatex(Temp, 191, "^x03(%s) ^x04%s ^x03%s^x01: %s",playerTeamName, rangok[szint[id]], nev, message)
}
else
{
get_user_team(id, color, 9)
formatex(Temp, 191, "^x04*Halott* ^x03(%s) ^x04%s ^x03%s^x01: %s",playerTeamName, rangok[szint[id]], nev, message)
}
sendtmessage(color, playerTeam)
return PLUGIN_HANDLED
}
public sendmessage(color[])
{
new teamName[10]
for(new player = 1; player < get_maxplayers(); player++)
{
get_user_team (player, teamName, 9)
teamf (player, color)
elkuldes(player, Temp)
teamf(player, teamName)
}
}
public sendtmessage(color[], playerTeam)
{
new teamName[10]
for (new player = 1; player < get_maxplayers(); player++)
{
if(get_user_team(player) == playerTeam)
{
get_user_team (player, teamName, 9)
elkuldes(player, Temp)
teamf (player, teamName)
teamf (player, color)
}
}
}
public teamf(player, team[])
{
message_begin(MSG_ONE, get_user_msgid("TeamInfo"), _, player)
write_byte(player)
write_string(team)
message_end()
}
public elkuldes(player, Temp[])
{
message_begin( MSG_ONE, get_user_msgid( "SayText" ), _, player)
write_byte( player )
write_string( Temp )
message_end()
}