#include <amxmodx>
#include <amxmisc>
#include <ColorChat>
#include <engine>
#include <cstrike>
#include <sqlx>
#define TULAJ ADMIN_LEVEL_H
#define ADMIN ADMIN_LEVEL_D
#define VIP ADMIN_LEVEL_E
#define FOADMIN ADMIN_LEVEL_G
#define KONFIG ADMIN_LEVEL_F
#define HIRDETO ADMIN_LEVEL_C
#define ASD 15
//SQL MENTÉS/REGRENDSZER
//**(exodus regrendszere és mentése)**//
new const SQLINFO[][] = { "Kiszolgalo", "Felhasznalo", "Jelszo", "Adatbazis" };
new name[32][33];
new Handle:g_SqlTuple;
new bool:Belepve[33], bool:Beirtjelszot[33], bool:Beirtjelszot1[33], bool:Beirtfelhasznalot[33], bool:Beirtfelhasznalot1[33], Regisztralt[33], Felhasznalonev[33][100], Jelszo[33][100], regJelszo[33][100], regFh[33][100];
new PLUGIN[] = "Rangok";
new VERSION[] = "0.1.0";
new AUTHOR[] = "asdasdasd";
new const Prefix[] = "\d[Menu prefix] \y";
new PREFIX[] = "Chat Prefix";
new olesek[33], szint[33];
//**Chat is exodus chatje**//
new Temp[192];
static color[10];
new const szamok[ASD] = {
100,
300,
550,
1000,
2000,
4000,
5000,
6000,
7000,
8000,
10000,
12000,
15000,
18000,
22000
}
new const rangok[ASD+1][] = {
"Ăšjonc(1)",
"Honvéd(2)",
"ĹrvezetĹ‘(3)",
"Tizedes(4)",
"Szakaszvezető(5)",
"Ĺrmester(6)",
"Hadnagy(7)",
"FĹ‘hadnagy(8)",
"Százados(9)",
"Ĺrnagy(10)",
"Alezredes(11)",
"Ezredes(12)",
"Dandártábornok(13)",
"Vezérnagy(14)",
"Altábornok(15)",
"Vezérezredes(16)"
}
public plugin_init()
{
//regrendszer
register_clcmd("Reg_Felhasznalonev", "regisztralas_felh");
register_clcmd("Reg_Jelszo", "regisztralas_jelszo");
register_clcmd("Log_Felhasznalonev", "bejelentkezes_felh");
register_clcmd("Log_Jelszo", "bejelentkezes_jelszo");
register_plugin(PLUGIN, VERSION, AUTHOR)
//Parancsok
register_clcmd("say /rang", "showrang");
//register_clcmd("say /reg", "Ellenorzes");
//register_clcmd("say_team /reg", "Ellenorzes");
//Event
register_event("DeathMsg", "halal", "a")
//Ha a regrendszer menujet:
//t beture szeretned
//register_impulse(201, "Ellenorzes");
//f beture szeretned
//*register_impulse(100, "Ellenorzes");
//m beture szeretned
//*register_clcmd("chooseteam", "Ellenorzes");
//Ha valamelyik betűre szeretnéd a menüt, akkor csak vedd el a --> // - jelet
//**FONTOS!**//(maradjon alul)
register_clcmd("say", "sayhook");
}
public halal(id)
{
new killer = read_data(1);
new victim = read_data(2);
if(killer != victim)
olesek[killer]++
while(olesek[killer] >= szamok[szint[killer]])
{
szint[killer]++
}
}
public showrang(id)
{
if(szint[id] != ASD+1)
{
ColorChat(id, GREEN, "^4[%s] ^3Rang: ^4%s ^1| ^3Ölések: ^4%d ^1| ^3Kell még: ^4%d", PREFIX, rangok[szint[id]], olesek[id], szamok[szint[id]]-olesek[id]);
}
else
{
ColorChat(id, GREEN, "^4[%s] ^3Rang: ^4%s ^1| ^3Ölések: ^4%d", PREFIX, rangok[szint[id]], olesek[id]);
ColorChat(id, GREEN, "^4[%s] ^1Elérted a legmagasabb ^3Rangot.", PREFIX);
}
return PLUGIN_HANDLED;
}
public Menu_Regisztracio(id)
{
new String[121], Nev[32];
get_user_name(id, Nev, 31);
formatex(String, charsmax(String), "[%s] \r- \dRegisztráció", Prefix);
new menu = menu_create(String, "Menu_Regisztracio_h");
if(Regisztralt[id] == 0)
{
formatex(String, charsmax(String), "\wFelhasználónév: \r%s^n", regFh[id]);
menu_additem(menu, String, "1",0);
formatex(String, charsmax(String), "\wJelszĂł: \r%s^n", regJelszo[id]);
menu_additem(menu, String, "2",0);
}
else
{
formatex(String, charsmax(String), "\rNév: \d%s^n\wTe már regisztráltál a szerverre.", Nev, regFh[id]);
menu_additem(menu, String, "",0);
}
if(Beirtfelhasznalot[id] == true && Beirtjelszot[id] == true)
{
formatex(String, charsmax(String), "\yRegisztráció");
menu_additem(menu, String, "3",0);
}
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public Menu_Regisztracio_h(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:
{
client_cmd(id, "messagemode Reg_Felhasznalonev");
}
case 2:
{
client_cmd(id, "messagemode Reg_Jelszo");
}
case 3:
{
Regisztralt[id] = 1;
ColorChat(id, GREEN, "%s^1Sikeresen regisztráltál a szerverre.", PREFIX);
Menu_Bejelentkezes(id);
SQL_Update_Reg(id);
}
}
}
public Menu_Bejelentkezes(id)
{
new String[121];
formatex(String, charsmax(String), "[%s] \r- \dBejelentkezés^n", Prefix);
new menu = menu_create(String, "Menu_Bejelentkezes_h");
formatex(String, charsmax(String), "Felhasználónév: \r%s^n", Felhasznalonev[id]);
menu_additem(menu, String, "1",0);
formatex(String, charsmax(String), "JelszĂł: \r%s^n", Jelszo[id]);
menu_additem(menu, String, "2",0);
formatex(String, charsmax(String), "\yBejelentkezés^n");
menu_additem(menu, String, "3",0);
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public Menu_Bejelentkezes_h(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return;
}
new data[9], szName[64], Nev[32];
get_user_name(id, Nev, 31);
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:
{
client_cmd(id, "messagemode Log_Felhasznalonev");
}
case 2:
{
client_cmd(id, "messagemode Log_Jelszo");
}
case 3:
{
if(equali(Jelszo[id], regJelszo[id]) && (equali(Felhasznalonev[id], regFh[id])))
{
Belepve[id] = true;
ColorChat(id, GREEN,"%s ^1Ăśdv Ăşjra itt ^4%s ^1!", PREFIX, Nev);
}
else
{
ColorChat(id, GREEN,"%s ^1Hibás Felhasználónév vagy Jelszó.", PREFIX);
}
}
}
}
public Menu_Fo(id)
{
new String[121];
formatex(String, charsmax(String), "[%s] \r- \dRegisztrációs rendszer", Prefix);
new menu = menu_create(String, "Menu_Fo_h");
formatex(String, charsmax(String), "Regisztráció");
menu_additem(menu, String, "2",0);
formatex(String, charsmax(String), "Bejelentkezés^n");
menu_additem(menu, String, "1",0);
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public Menu_Fo_h(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: Menu_Bejelentkezes(id);
case 2: Menu_Regisztracio(id);
}
}
public Ellenorzes(id)
{
if(Belepve[id] == false)
{
Menu_Fo(id);
}
else
{
ColorChat(id, GREEN,"%s ^1Te mar beleptel 1x...", PREFIX);
}
}
public regisztralas_felh(id)
{
new adat[32];
new hosszusag = strlen(adat);
read_args(adat, charsmax(adat));
remove_quotes(adat);
if(hosszusag >= 5)
{
regFh[id] = adat;
Beirtfelhasznalot[id] = true;
Menu_Regisztracio(id);
}
else
{
regFh[id] = adat;
Beirtfelhasznalot[id] = true;
Menu_Regisztracio(id);
}
return PLUGIN_CONTINUE;
}
public regisztralas_jelszo(id)
{
new adat[32];
new hosszusag = strlen(adat);
read_args(adat, charsmax(adat));
remove_quotes(adat);
if(hosszusag >= 5) {
regJelszo[id] = adat;
Beirtjelszot[id] = true;
Menu_Regisztracio(id);
}
else {
regJelszo[id] = adat;
Beirtjelszot[id] = true;
Menu_Regisztracio(id);
}
return PLUGIN_CONTINUE;
}
public bejelentkezes_jelszo(id)
{
new adat[32];
new hosszusag = strlen(adat);
read_args(adat, charsmax(adat));
remove_quotes(adat);
if(hosszusag >= 5) {
Jelszo[id] = adat;
Beirtjelszot1[id] = true;
Menu_Bejelentkezes(id);
}
else {
Jelszo[id] = adat;
Beirtjelszot1[id] = true;
Menu_Bejelentkezes(id);
}
return PLUGIN_CONTINUE;
}
public bejelentkezes_felh(id)
{
new adat[32];
new hosszusag = strlen(adat);
read_args(adat, charsmax(adat));
remove_quotes(adat);
if(hosszusag >= 5)
{
Felhasznalonev[id] = adat;
Beirtfelhasznalot1[id] = true;
Menu_Bejelentkezes(id);
}
else
{
Felhasznalonev[id] = adat;
Beirtfelhasznalot1[id] = true;
Menu_Bejelentkezes(id);
}
return PLUGIN_CONTINUE;
}
public client_disconnect(id)
{
if(!is_user_bot(id))
{
Update(id);
}
olesek[id] = 0;
szint[id] = 0;
Belepve[id] = false;
Beirtjelszot[id] = false;
Beirtjelszot1[id] = false;
Beirtfelhasznalot[id] = false;
Beirtfelhasznalot1[id] = false;
regFh[id][0] = EOS;
regJelszo[id][0] = EOS;
Felhasznalonev[id][0] = EOS;
Jelszo[id][0] = EOS;
copy(name[id], charsmax(name[]), "");
}
public client_putinserver(id)
{
if(!is_user_bot(id))
{
get_user_name(id, name[id], charsmax(name));
Load(id);
}
Felhasznalonev[id] = "";
Jelszo[id] = "";
}
public plugin_cfg()
{
g_SqlTuple = SQL_MakeDbTuple(SQLINFO[0], SQLINFO[1], SQLINFO[2], SQLINFO[3]);
static Query[10048];
new Len;
Len += formatex(Query[Len], charsmax(Query), "CREATE TABLE IF NOT EXISTS `rangok_mentes`");
Len += formatex(Query[Len], charsmax(Query)-Len, "(`Nev` varchar(32) NOT NULL, ");
Len += formatex(Query[Len], charsmax(Query)-Len, "`Felhasznalonev` varchar(32) NOT NULL,");
Len += formatex(Query[Len], charsmax(Query)-Len, "`Jelszo` varchar(32) NOT NULL,");
Len += formatex(Query[Len], charsmax(Query)-Len, "`Regisztralt` int(11) NOT NULL,");
Len += formatex(Query[Len], charsmax(Query)-Len, "`Olesek` int(11) NOT NULL,");
Len += formatex(Query[Len], charsmax(Query)-Len, "`Szint` int(11) NOT NULL, `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)");
SQL_ThreadQuery(g_SqlTuple, "createTableThread", Query);
}
public Load(id)
{
static Query[10048];
new Data[1];
Data[0] = id;
formatex(Query, charsmax(Query), "SELECT * FROM `rangok_mentes` WHERE Nev = ^"%s^";", name[id]);
SQL_ThreadQuery(g_SqlTuple, "QuerySelectData", Query, Data, 1);
}
public QuerySelectData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
log_amx("%s", Error);
return;
}
else {
new id = Data[0];
if(SQL_NumRows(Query) > 0) {
SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Felhasznalonev"), regFh[id], charsmax(regFh[]));
SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Jelszo"), regJelszo[id], charsmax(regJelszo[]));
Regisztralt[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Regisztralt"));
olesek[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Olesek"));
szint[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Szint"));
}
else
{
Save(id);
}
}
}
public Save(id)
{
static Query[256];
formatex(Query, charsmax(Query), "INSERT INTO `rangok_mentes` (`Nev`) VALUES (^"%s^");", name[id]);
SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query);
}
public Update(id)
{
static Query[10048];
new Len;
Len += formatex(Query[Len], charsmax(Query), "UPDATE `rangok_mentes` SET Olesek = ^"%i^", ",olesek[id]);
Len += formatex(Query[Len], charsmax(Query)-Len, "Szint = ^"%i^" WHERE Nev = ^"%s^";", szint[id], name[id]);
SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query);
}
public SQL_Update_Reg(id)
{
static Query[10048];
new Len;
Len += formatex(Query[Len], charsmax(Query), "UPDATE `rangok_mentes` SET Felhasznalonev = ^"%s^", ", regFh[id]);
Len += formatex(Query[Len], charsmax(Query)-Len, "Jelszo = ^"%s^", ", regJelszo[id]);
Len += formatex(Query[Len], charsmax(Query)-Len, "Regisztralt = ^"%i^" WHERE Nev = ^"%s^";", Regisztralt[id], name[id]);
SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query);
}
public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
if(FailState == TQUERY_CONNECT_FAILED)
set_fail_state("[HIBA*] NEM TUDTAM CSATLAKOZNI AZ ADATBAZISHOZ!");
else if(FailState == TQUERY_QUERY_FAILED)
set_fail_state("Query Error");
if(Errcode)
log_amx("[HIBA*] HIBAT DOBTAM: %s",Error);
}
public QuerySetData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
log_amx("%s", Error);
return;
}
}
public sayhook(id)
{
new message[192], nev[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, nev, 31);
if(is_user_alive(id))
{
if(Regisztralt[id] == 0)
formatex(chat, 191, "^x04[Nem Regisztrált]^x03%s^x01: %s", nev, message);
else if(get_user_flags(id) & TULAJ && Belepve[id] == true)
formatex(chat, 191, "^x04[TULAJ][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
else if(get_user_flags(id) & FOADMIN && Belepve[id] == true)
formatex(chat, 191, "^x04[FĹADMIN][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
else if(get_user_flags(id) & ADMIN && Belepve[id] == true)
formatex(chat, 191, "^x04[ADMIN][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
else if(get_user_flags(id) & KONFIG && Belepve[id] == true)
formatex(chat, 191, "^x04[KONFIGOS][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
else if(get_user_flags(id) & VIP && Belepve[id] == true)
formatex(chat, 191, "^x04[VIP][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
else if(get_user_flags(id) & HIRDETO && Belepve[id] == true)
formatex(chat, 191, "^x04[HĂŤRDETĹ][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
else if(Belepve[id] == true)
formatex(chat, 191, "^x04[%s]^x03 %s^x01: %s", rangok[szint[id]], nev, message);
else if(Regisztralt[id] == 1)
formatex(chat, 191, "^x04[Kijelentkezve]^x03 %s^x01: %s", nev, message);
}
else {
get_user_team(id, color, 9);
if(Regisztralt[id] == 0)
formatex(chat, 191, "^x01*Halott*^x04[Nem Regisztrált]^x03 %s^x01: %s", nev, message);
else if(get_user_flags(id) & TULAJ && Belepve[id] == true)
formatex(chat, 191, "^x01*Halott*^x04[TULAJ][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
else if(get_user_flags(id) & FOADMIN && Belepve[id] == true)
formatex(chat, 191, "^x01*Halott*^x04[FĹADMIN][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
else if(get_user_flags(id) & ADMIN && Belepve[id] == true)
formatex(chat, 191, "^x01*Halott*^x04[ADMIN][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
else if(get_user_flags(id) & KONFIG && Belepve[id] == true)
formatex(chat, 191, "^x01*Halott*^x04[KONFIGOS][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
else if(get_user_flags(id) & VIP && Belepve[id] == true)
formatex(chat, 191, "^x01*Halott*^x04[VIP][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
else if(get_user_flags(id) & HIRDETO && Belepve[id] == true)
formatex(chat, 191, "^x01*Halott*^x04[HĂŤRDETĹ][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
else if(Belepve[id] == true)
formatex(chat, 191, "^x01*Halott*^x04[%s]^x03 %s^x01: %s", rangok[szint[id]], nev, message);
else if(Regisztralt[id] == 1)
formatex(chat, 191, "^x01*Halott*^x04[Kijelentkezve]^x03 %s^x01: %s", nev, 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 plugin_end()
{
SQL_FreeHandle(g_SqlTuple);
}