#include <amxmodx>
#include <engine>
#include <cstrike>
#include <colorchat>
new const PLUGIN[] = "Egyedi Prefix"
new const VERSION[] = "1.0"
new const AUTHOR[] = "exodus"
//---------------------------------------------------------------------------------
//Beállítások
//---------------------------------------------------------------------------------
new const Prefix[] = "Egyedi Prefix 1.0" //Menüben és chatben megjelenő prefix
#define LIMIT 3 //Maximum hányszor lehessen prefixet hozzáadni
#define TULAJ ADMIN_LEVEL_A //Tulajdonos prefixhez való jog
#define ADMIN ADMIN_BAN //Admin prefixhez való jog
#define VIP ADMIN_LEVEL_H //VIP prefixhez való jog
//---------------------------------------------------------------------------------
//---------------------------------------------------------------------------------
new Chat_Prefix[32][33], VanPrefix[33], Temp[192], filename[128];
static color[10];
public plugin_init()
{
register_plugin(PLUGIN,VERSION,AUTHOR)
get_localinfo("amxx_datadir", filename, charsmax(filename))
format(filename, charsmax(filename), "%s/egyedi_prefix.ini", filename)
register_clcmd("say /prefix", "m_Fomenu");
register_clcmd("say", "sayhook");
register_clcmd("Chat_Prefix", "Chat_Prefix_Hozzaad")
}
public m_Fomenu(id)
{
new String[121];
if(VanPrefix[id] >= 1)
{
format(String, charsmax(String), "[%s]^n\wHasználatban lévő Prefixed: \r%s", Prefix, Chat_Prefix[id]);
}
else
{
format(String, charsmax(String), "[%s]^n\wHasználatban lévő Prefixed: \rNincs", Prefix);
}
new menu = menu_create(String, "h_Fomenu");
formatex(String, charsmax(String), "Prefix Hozzáadása^n^nHozzáadási lehetőségek: \r%d/%d", VanPrefix[id], LIMIT);
menu_additem(menu, String, "1",0);
menu_display(id, menu, 0);
}
public h_Fomenu(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return;
}
new data[9], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
if(VanPrefix[id] >= LIMIT)
{
ColorChat(id, GREEN, "[%s] ^1Nem adhatsz meg többször prefixet", Prefix);
}
else
{
client_cmd(id, "messagemode Chat_Prefix");
}
}
}
}
public Chat_Prefix_Hozzaad(id)
{
new Data[32];
new hosszusag = strlen(Data);
read_args(Data, charsmax(Data));
remove_quotes(Data);
if(hosszusag >= 5)
{
Chat_Prefix[id] = Data;
VanPrefix[id]++;
m_Fomenu(id);
}
else
{
Chat_Prefix[id] = Data;
VanPrefix[id]++;
m_Fomenu(id);
}
return PLUGIN_CONTINUE;
}
public sayhook(id)
{
new message[192], Name[32], none[2][32], chat[192];
read_args(message, 191);
remove_quotes(message);
formatex(none[0], 31, ""), formatex(none[1], 31, " ");
if (message[0] == '@' || message[0] == '/' || message[0] == '#' || message[0] == '!' || equal (message, ""))
return PLUGIN_HANDLED;
if(!equali(message, none[0]) && !equali(message, none[1]))
{
get_user_name(id, Name, 31);
if(is_user_alive(id))
{
if(get_user_flags(id) & TULAJ)
formatex(chat, 191, "^x04[Tulajdonos]^3%s^x04: %s", Name, message);
else if(get_user_flags(id) & ADMIN)
formatex(chat, 191, "^x04[Admin]^x03%s^x04: %s", Name, message);
else if(get_user_flags(id) & VIP)
formatex(chat, 191, "^x04[VIP]^x03%s^x04: %s", Name, message);
else if(VanPrefix[id] >= 1)
formatex(chat, 191, "^x04[%s]^x03%s^x01: %s", Chat_Prefix[id], Name, message);
else if(VanPrefix[id] <= 0)
formatex(chat, 191, "^x04[Játékos]^x03%s^x01: %s", Name, message);
}
else {
get_user_team(id, color, 9);
if(get_user_flags(id) & TULAJ)
formatex(chat, 191, "^x01*Halott*^x04[Tulajdonos]^3 %s^x04: %s", Name, message);
else if(get_user_flags(id) & ADMIN)
formatex(chat, 191, "^x01*Halott*^x04[Admin]^x03 %s^x04: %s", Name, message);
else if(get_user_flags(id) & VIP)
formatex(chat, 191, "^x01*Halott*^x04[VIP]^x03 %s^x04: %s", Name, message);
else if(VanPrefix[id] >= 1)
formatex(chat, 191, "^x01*Halott*^x04[%s]^x03 %s^x01: %s", Chat_Prefix[id], Name, message);
else if(VanPrefix[id] <= 0)
formatex(chat, 191, "^x01*Halott*^x04[Játékos]^x03 %s^x01: %s", Name, message);
}
switch(cs_get_user_team(id))
{
case 1: ColorChat(0, RED, chat);
case 2: ColorChat(0, BLUE, chat);
}
if(cs_get_user_team(id) == CS_TEAM_SPECTATOR)
ColorChat(0, GREY, chat);
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
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 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();
}
public client_disconnect(id)
{
if(!is_user_bot(id))
{
save(id);
}
VanPrefix[id] = 0;
Chat_Prefix[id] = "";
}
public client_authorized(id)
{
if(!is_user_bot(id))
{
load(id);
}
}
public save(id)
{
new szData[128];
new steamid[32]; get_user_authid(id, steamid, charsmax(steamid));
if(contain(steamid, "_ID_LAN") != -1) get_user_ip(id, steamid, charsmax(steamid), 1);
formatex(szData, charsmax(szData), "%s %i", Chat_Prefix[id], VanPrefix[id]);
set_data(steamid, szData)
}
public load(id)
{
new szData[128];
new steamid[32]; get_user_authid(id, steamid, charsmax(steamid));
if(contain(steamid, "_ID_LAN") != -1) get_user_ip(id, steamid, charsmax(steamid), 1);
if(get_data(steamid, szData, charsmax(szData)))
{
new m1[32], m2[32];
parse(szData, m1, charsmax(m1), m2, charsmax(m2));
copy(Chat_Prefix[id], charsmax(Chat_Prefix[]), m1)
VanPrefix[id] = str_to_num(m2)
}
}
stock get_data(const key[], data[], len) {
new vault = fopen(filename, "rt");
new _data[512], _key[64];
while( !feof(vault) ) {
fgets(vault, _data, charsmax(_data));
parse(_data, _key, charsmax(_key), data, len);
if( equal(_key, key) ) {
fclose(vault);
return 1;
}
}
fclose(vault);
copy(data, len, "");
return 0;
}
stock set_data(const key[], const data[]) {
static const temp_vault_name[] = "set_data.txt";
new file = fopen(temp_vault_name, "wt");
new vault = fopen(filename, "rt");
new _data[512], _key[64], _other[32];
new bool:replaced = false;
while( !feof(vault) ) {
fgets(vault, _data, charsmax(_data));
parse(_data, _key, charsmax(_key), _other, charsmax(_other));
if( equal(_key, key) && !replaced ) {
fprintf(file, "^"%s^" ^"%s^"^n", key, data);
replaced = true;
}
else {
fputs(file, _data);
}
}
if( !replaced ) {
fprintf(file, "^"%s^" ^"%s^"^n", key, data);
}
fclose(file);
fclose(vault);
delete_file(filename);
while( !rename_file(temp_vault_name, filename, 1) ) { }
//delete_file(temp_vault_name);
}