#include <amxmodx>
#include <engine>
#include <sqlx>
#pragma semicolon 1;
enum Login
{
unknown,
signing_up, //Regisztrál
logging_in, //Bejelentkezik
logged_in //Bejelentkezett
}
new Login:User[33];
new username[33][64], password[33][32], password2[33][32];
new info_hud_message[33][64], HudObj, info_hud_color[3]; // 0-Piros; 1-Zöld; 2-Kék;
new Pont[33], bool:VIP[33], bool:Is_Prefix[33], Prefix[33][32];
#define GetBit(%1,%2) (%1 & (1 << (%2 & 31)))
#define SetBit(%1,%2) %1 |= (1 << (%2 & 31))
#define ResetBit(%1,%2) %1 &= ~(1 << (%2 & 31))
new bitadmin;
new bitelo;
new const SQL_INFO[][] = {
"127.0.0.1", // HOST
"root", // USERNAME
"ymAdCAx8RFym1Y3", // PASSWORD
"danika" // DATABASE
};
new Handle:g_SqlTuple;
public plugin_init()
{
register_plugin("Mod", "1.0", "LyleChriss && Maxi");
register_impulse(201, "Main_Menu");
register_clcmd("say /menu", "Main_Menu");
register_clcmd("Felhasznalonev", "cmd_Username");
register_clcmd("Jelszo", "cmd_Password");
register_clcmd("Jelszo_ujra", "cmd_Password2");
HudObj = CreateHudSyncObj();
set_task(1.0, "InfoHUD", _, _, _, "b");
register_event("DeathMsg", "eDeathMsg", "a");
register_clcmd("say", "HandlerSay");
register_clcmd("say_team", "HandlerSayTeam");
register_event("ResetHUD", "eResetHUD", "be");
}
public eDeathMsg()
{
new id = read_data(1);
new victim = read_data(2);
ResetBit(bitelo, victim);
if(id != victim && is_user_alive(id) && User[id] == logged_in)
{
switch(VIP[id])
{
case false:{
Pont[id]++;
client_print_color(id, 0, "Kaptál ^4egy ^1pontot!");
}
case true:{
Pont[id]+=2;
client_print_color(id, 0, "Kaptál ^4két ^1pontot");
}
}
}
}
public eResetHUD(id) SetBit(bitelo, id);
public client_putinserver(id)
{
if(get_user_flags(id) & ADMIN_CHAT) SetBit(bitadmin, id);
else ResetBit(bitadmin, id);
}
public client_disconnect(id)
{
if(!is_user_bot(id) || !is_user_hltv(id))
{
Update_SQL(id);
}
username[id][0] = EOS;
password[id][0] = EOS;
password2[id][0] = EOS;
User[id] = unknown;
Pont[id] = 0;
VIP[id] = false;
Is_Prefix[id] = false;
Prefix[id][0] = EOS;
ResetBit(bitelo, id);
}
public InfoHUD()
{
new players[32], pnum, id;
get_players(players, pnum, "chi");
for(new i; i<pnum; i++)
{
id=players[i];
set_hudmessage(info_hud_color[0], info_hud_color[1], info_hud_color[2], -1.0, -1.0, 0, 6.0, 12.0, 0.8, 0.8, -1);
ShowSyncHudMsg(id, HudObj, "%s", info_hud_message[id]);
}
}
public HUD_EndOfString(taskid) info_hud_message[taskid-1000][0] = EOS;
public Main_Menu(id)
{
new menu = menu_create("Valami Mod | Főmenü", "Main_Menu_Handler");
menu_additem(menu, "Jelentkezz be!", "", 0);
menu_additem(menu, "Még nincs felhasználód? Regisztrálj!", "", 0);
menu_display(id, menu);
}
public Main_Menu_Handler(id, menu, item)
{
switch(item)
{
case MENU_EXIT:{
menu_destroy(menu);
return;
}
case 0:{
Main_Menu_Login(id);
User[id] = logging_in;
}
case 1:{
Main_Menu_Register(id);
User[id] = signing_up;
}
}
menu_destroy(menu);
}
public Main_Menu_Register(id)
{
new menu = menu_create("Valami Mod | Regisztráció", "Main_Menu_Register_Handler");
new text[128];
formatex(text, charsmax(text), "Felhasználónév: %s", username[id]);
menu_additem(menu, text, "", 0);
formatex(text, charsmax(text), "Jelszó: %s", show_stars(strlen(password[id])));
menu_additem(menu, text, "", 0);
formatex(text, charsmax(text), "Jelszó újra: %s", show_stars(strlen(password2[id])));
menu_additem(menu, text, "", 0);
menu_additem(menu, "Regisztráció", "", 0);
menu_display(id, menu);
}
public Main_Menu_Register_Handler(id, menu, item)
{
switch(item)
{
case MENU_EXIT:{
menu_destroy(menu);
return;
}
case 0:{
client_cmd(id, "messagemode Felhasznalonev");
Main_Menu_Register(id);
}
case 1:{
client_cmd(id, "messagemode Jelszo");
Main_Menu_Register(id);
}
case 2:{
client_cmd(id, "messagemode Jelszo_ujra");
Main_Menu_Register(id);
}
case 3: Register_Check(id);
}
menu_destroy(menu);
}
public Main_Menu_Login(id)
{
new menu = menu_create("Valami Mod | Bejelentkezés", "Main_Menu_Login_Handler");
new text[128];
formatex(text, charsmax(text), "Felhasználónév: %s", username[id]);
menu_additem(menu, text, "", 0);
formatex(text, charsmax(text), "Jelszó: %s", show_stars(strlen(password[id])));
menu_additem(menu, text, "", 0);
menu_additem(menu, "Bejelentkezés", "", 0);
menu_display(id, menu);
}
public Main_Menu_Login_Handler(id, menu, item)
{
switch(item)
{
case MENU_EXIT:{
menu_destroy(menu);
return;
}
case 0:{
client_cmd(id, "messagemode Felhasznalonev");
Main_Menu_Login(id);
}
case 1:{
client_cmd(id, "messagemode Jelszo");
Main_Menu_Login(id);
}
case 2: Login_Check(id);
}
menu_destroy(menu);
}
public Register_Check(id)
{
if(User[id] == logging_in ||User[id] == logged_in || User[id] == unknown)
return;
if(!equal(password[id], password2[id]))
{
formatex(info_hud_message[id], charsmax(info_hud_message[]), "A két jelszó nem egyezik!");
info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0;
Main_Menu_Register(id);
return;
}
else if((strlen(password[id])) > 16 || (strlen(password2[id])) > 16)
{
formatex(info_hud_message[id], charsmax(info_hud_message[]), "A jelszó nem lehet hosszabb 16 karakternél!");
info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0;
Main_Menu_Register(id);
return;
}
else if((strlen(password[id])) < 6 || (strlen(password2[id])) < 6)
{
formatex(info_hud_message[id], charsmax(info_hud_message[]), "A jelszó nem lehet rövidebb 6 karakternél!");
info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0;
Main_Menu_Register(id);
return;
}
else
{
formatex(info_hud_message[id], charsmax(info_hud_message[]), "Regisztráció folyamatban... Kérlek várj!");
info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0;
Sql_Register_Check(id);
Main_Menu_Register(id);
}
}
public Login_Check(id)
{
if(User[id] == logged_in || User[id] == unknown)
return;
formatex(info_hud_message[id], charsmax(info_hud_message[]), "Bejelentkezés folyamatban... Kérlek várj!");
info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0;
Sql_Login_Check(id);
Main_Menu_Login(id);
}
public cmd_Username(id)
{
if(User[id] == logged_in || User[id] == unknown)
return;
username[id][0] = EOS;
set_task(0.1, "HUD_EndOfString", 1000+id);
read_args(username[id], charsmax(username []));
remove_quotes(username[id]);
switch(User[id])
{
case signing_up: Main_Menu_Register(id);
case logging_in: Main_Menu_Login(id);
}
}
public cmd_Password(id)
{
if(User[id] == logged_in || User[id] == unknown)
return;
password[id][0] = EOS;
set_task(0.1, "HUD_EndOfString", 1000+id);
read_args(password[id], charsmax(password []));
remove_quotes(password[id]);
switch(User[id])
{
case signing_up: Main_Menu_Register(id);
case logging_in: Main_Menu_Login(id);
}
}
public cmd_Password2(id)
{
if(User[id] == logged_in || User[id] == logging_in || User[id] == unknown)
return;
password2[id][0] = EOS;
set_task(0.1, "HUD_EndOfString", 1000+id);
read_args(password2[id], charsmax(password2[]));
remove_quotes(password2[id]);
Main_Menu_Register(id);
}
public Sql_Register_Check(id)
{
static Query[512];
new Data[2];
Data[0] = id;
Data[1] = get_user_userid(id);
formatex(Query, charsmax(Query), "SELECT * FROM `register` WHERE username = '%s'", username[id]);
SQL_ThreadQuery(g_SqlTuple, "Sql_Register_Thread", Query, Data, 2);
}
public Sql_Register_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
{
if(FailState == TQUERY_CONNECT_FAILED)
set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
else if(FailState == TQUERY_QUERY_FAILED)
set_fail_state("Query Error");
if(Errcode)
log_amx("Hibat dobtam: %s",Error);
new id = Data[0];
if(Data[1] != get_user_userid(id))
return;
new RowsFound = SQL_NumRows(Query);
if(RowsFound)
{
formatex(info_hud_message[id], charsmax(info_hud_message[]), "Ez a felhasználónév már foglalt!");
info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0;
Main_Menu_Register(id);
}
else Sql_Account_Create(id);
}
public Sql_Account_Create(id)
{
static Query[512];
formatex(Query, charsmax(Query), "INSERT INTO `register` (username, password) VALUES('%s', '%s')", username[id], password[id]);
new Data[2];
Data[0] = id;
Data[1] = get_user_userid(id);
SQL_ThreadQuery(g_SqlTuple, "Sql_Account_Create_Thread", Query, Data, 2);
}
public Sql_Account_Create_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
{
if(FailState == TQUERY_CONNECT_FAILED)
set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
else if(FailState == TQUERY_QUERY_FAILED)
set_fail_state("Query Error");
if(Errcode)
log_amx("Hibat dobtam: %s",Error);
new id = Data[0];
if(Data[1] != get_user_userid(id))
return;
formatex(info_hud_message[id], charsmax(info_hud_message[]), "Sikeres Regisztráció! Jelentkezz be!");
info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0;
set_task(5.0, "HUD_EndOfString", 1000+id);
User[id] = logging_in;
Main_Menu_Login(id);
}
public Sql_Login_Check(id)
{
static Query[512];
new Data[2];
Data[0] = id;
Data[1] = get_user_userid(id);
formatex(Query, charsmax(Query), "SELECT * FROM `register` WHERE username = '%s'", username[id]);
SQL_ThreadQuery(g_SqlTuple, "Sql_Login_Thread", Query, Data, 2);
}
public Sql_Login_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
{
if(FailState == TQUERY_CONNECT_FAILED)
set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
else if(FailState == TQUERY_QUERY_FAILED)
set_fail_state("Query Error");
if(Errcode)
log_amx("Hibat dobtam: %s",Error);
new id = Data[0];
if(Data[1] != get_user_userid(id))
return;
new RowsFound = SQL_NumRows(Query);
if(RowsFound)
{
new tmp_pass[32];
SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "password"), tmp_pass, charsmax(tmp_pass));
if(equal(password[id], tmp_pass))
{
User[id] = logged_in;
formatex(info_hud_message[id], charsmax(info_hud_message[]), "Sikeres bejelentkezés!");
info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0;
set_task(5.0, "HUD_EndOfString", 1000+id);
Pont[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "pontok"));
new vip, prefix;
vip = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "is_vip"));
prefix = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "is_prefix"));
switch(vip)
{
case 0: VIP[id] = false;
case 1: VIP[id] = true;
}
switch(prefix)
{
case 0: Is_Prefix[id] = false;
case 1:{
Is_Prefix[id] = true;
SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "prefix"), Prefix[id], charsmax(Prefix[]));
}
}
}
else
{
formatex(info_hud_message[id], charsmax(info_hud_message[]), "Érvénytelen jelszó!");
info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0;
Main_Menu_Login(id);
}
}
else
{
formatex(info_hud_message[id], charsmax(info_hud_message[]), "Érvénytelen felhasználónév!");
info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0;
Main_Menu_Login(id);
}
}
public Update_SQL(id)
{
static Query[512];
formatex(Query, charsmax(Query), "UPDATE `register` SET `pontok` = '%d' WHERE `username` = '%s';", Pont[id], username[id]);
SQL_ThreadQuery(g_SqlTuple, "Sql_Update_Thread", Query);
}
public Sql_Update_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
{
if(FailState == TQUERY_CONNECT_FAILED)
set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
else if(FailState == TQUERY_QUERY_FAILED)
set_fail_state("Query Error");
if(Errcode)
log_amx("Hibat dobtam: %s",Error);
}
public plugin_cfg()
{
g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0], SQL_INFO[1], SQL_INFO[2], SQL_INFO[3]);
}
public HandlerSay(id) return uzenetformazas(id, false);
public HandlerSayTeam(id) return uzenetformazas(id, true);
uzenetformazas(id, bool:csapat)
{
#define MAX_BIT 180
static uzenet[MAX_BIT], stringkonvertalas[charsmax(uzenet) * 2 + 1];
read_args(uzenet, charsmax(uzenet));
remove_quotes(uzenet);
if(uzenet[0] == EOS || uzenet[0] == '/' || equal(uzenet, " "))
return PLUGIN_HANDLED_MAIN;
static fullos, tagek[MAX_BIT], team_lekeres, sTeam[16];
team_lekeres = get_user_team(id, sTeam, charsmax(sTeam));
switch(team_lekeres)
{
case 1: fullos = formatex(tagek, charsmax(tagek), "%s%s", GetBit(bitelo, id) ? "^1" : "^1*Halott* ", csapat ? "^1[T] " : "");
case 2: fullos = formatex(tagek, charsmax(tagek), "%s%s", GetBit(bitelo, id) ? "^1" : "^1*Halott* ", csapat ? "^1[CT] " : "");
default:fullos = formatex(tagek, charsmax(tagek), "^1*Spec* ");
}
if(Prefix[id][0] && Is_Prefix[id])
fullos += formatex(tagek[fullos], charsmax(tagek) - fullos, "^4[%s] ", Prefix[id]);
fullos += formatex(tagek[fullos], charsmax(tagek) - fullos, "^3%%s1^1 : %%s2");
stringkonvertalas = uzenet;
replace_all( stringkonvertalas, charsmax( stringkonvertalas ), "", " " );
replace_all( stringkonvertalas, charsmax( stringkonvertalas ), "", " " );
static bitlimit; bitlimit = MAX_BIT;
while(fullos + strlen(stringkonvertalas) > MAX_BIT) stringkonvertalas[bitlimit -= 10] = 0;
static players[32], pcount; get_players(players, pcount, "c");
switch(csapat)
{
case true:
{
for(new i; i < pcount; i++)
{
if(GetBit(bitadmin, players[i]) || (GetBit(bitelo, id) == GetBit(bitelo, players[i]) && team_lekeres == get_user_team(players[i])))
PrintChat(players[i], id, tagek, stringkonvertalas);
}
}
case false:
{
for(new i; i < pcount; i++)
PrintChat(players[i], id, tagek, stringkonvertalas);
}
}
static sAuthId[25], sName[32];
get_user_name(id, sName, charsmax(sName));
get_user_authid(id, sAuthId, charsmax(sAuthId));
log_message("^"%s<%d><%s><%s>^" %s ^"%s^"", sName, get_user_userid(id), sAuthId, sTeam, csapat ? "say_team" : "say" , stringkonvertalas);
return PLUGIN_HANDLED;
}
PrintChat(iReceiver, iSender, const tagek[], const uzenet[])
{
message_begin(MSG_ONE, 76, .player=iReceiver);
write_byte(iSender);
write_string(tagek);
write_string("");
write_string(uzenet);
message_end();
}
stock show_stars(i_Lenght)
{
static s_Stars[32] = "*******************************", sStars2[32];
formatex(sStars2, 31, "%s", s_Stars[31-i_Lenght]);
return sStars2;
}