#include <amxmodx>
#include <fvault>
#define Hook_Chooseteam
/*==================================================================================================
* GLOBAL VARS & ENUMS *
==================================================================================================*/
enum
{
PASSWORD = 0,
NAME,
MAX_CHANGE
}
enum
{
UNREGISTERED = 0,
REGISTERED,
LOGGED,
MAX_STATUS
}
new g_TempPassword[33][32],g_Password[33][32],g_Date[33][32],g_Status[33],gMsg,g_AlredyChanged[33][MAX_CHANGE],g_CanChange
new const g_MsgArgs[][] = { "#Team_Select","#Team_Select_Spect","#IG_Team_Select","#IG_Team_Select_Spect" }
new const g_Vault[] = "zp_premium_accounts"
new const g_szStatus[MAX_STATUS][] = { "No registered","Registered","Log in" }
/*==================================================================================================
* BEGINNING OF PLUGIN *
==================================================================================================*/
public plugin_init()
{
register_plugin("Sistem of accounts","2.0.1","Manu")
register_message(get_user_msgid("ShowMenu"),"message_showmenu")
register_message(get_user_msgid("VGUIMenu"),"message_vguimenu")
register_clcmd("ENTER_PASSWORD","cmd_password")
register_clcmd("ENTER_NICK","cmd_nick")
#if defined Hook_Chooseteam
register_clcmd("chooseteam","cmd_block")
register_clcmd("jointeam","cmd_block")
#endif
gMsg = CreateHudSyncObj()
}
/*==================================================================================================
* CLIENT_ FUNCS *
==================================================================================================*/
public client_putinserver(id)
{
g_Password[id][0] = '^0';g_Status[id] = UNREGISTERED
g_AlredyChanged[id][NAME] = 0;g_AlredyChanged[id][PASSWORD] = 0
fvault_load(id)
}
public client_infochanged(id)
{
static szName[32],szOldName[32]
get_user_name(id,szOldName,31);get_user_info(id,"name",szName,31)
if(equal(szOldName,szName) || g_CanChange)
return PLUGIN_CONTINUE
client_cmd(id,"name %s",szName);set_user_info(id,"name",szName)
return PLUGIN_HANDLED
}
/*==================================================================================================
* CMDs *
==================================================================================================*/
public cmd_password(id)
{
static szName[32],szArgs[64];read_args(szArgs,63)
remove_quotes(szArgs);trim(szArgs)
get_user_name(id,szName,31)
if(containi(szArgs," ") != -1 || equal(szArgs,"")) {
show_msg(id,"TU PASSWORD CONTIENE ERRORES...")
return PLUGIN_HANDLED
}
switch(g_Status[id])
{
case UNREGISTERED: {
show_msg(id,"CONFIRM YOUR PASSWORD TO PROSECUTE...");copy(g_TempPassword[id],31,szArgs)
show_menu_confirm(id)
}
case REGISTERED: {
if(!equal(g_Password[id],szArgs)) {
show_msg(id,"THE PASSWORD ENTERED IS NOT COINCIDED WITH THE ACCOUNT...")
return PLUGIN_HANDLED
}
g_Status[id] = LOGGED;fvault_save(id)// To save the date
show_msg(id,"YOU EASILY LOG IN YOUR ACCOUNT...");change_team(id)
}
case LOGGED: {
if(g_AlredyChanged[id][PASSWORD]) {
show_msg(id,"YOU ALREADY CHANGED YOUR PASSWORD ON THIS MAP...")
return PLUGIN_HANDLED
}
show_msg(id,"CONFIRM YOUR PASSWORD TO KEEP IT...");copy(g_TempPassword[id],31,szArgs)
show_menu_confirm(id)
}
}
return PLUGIN_HANDLED
}
public cmd_nick(id)
{
if(g_Status[id] != LOGGED || g_AlredyChanged[id][NAME])
return PLUGIN_HANDLED
static args[32];read_args(args,31)
remove_quotes(args);trim(args)
if(containi(args," ") != -1 || !args[1])
return PLUGIN_HANDLED
if(change_name(id,args))
show_msg(id,"YOUR NAME HAS BEEN CHANGED SUCCESSFULLY!")
return PLUGIN_HANDLED
}
/*==================================================================================================
* BLOCK CHANGE TEAM *
==================================================================================================*/
public message_showmenu(msgid,dest,id)
{
static szMsg[16];get_msg_arg_string(4,szMsg,15)
for(new i;i < sizeof g_MsgArgs;i++)
{
if(equal(szMsg,g_MsgArgs[i]))
{
show_menu_block(id)
return PLUGIN_HANDLED
}
}
return PLUGIN_CONTINUE
}
public message_vguimenu(msgid,dest,id)
{
if(get_msg_arg_int(1) != 2)
return PLUGIN_CONTINUE
show_menu_block(id)
return PLUGIN_HANDLED
}
#if defined Hook_Chooseteam
public cmd_block(id) {
show_menu_block(id)
return PLUGIN_HANDLED
}
#endif
/*==================================================================================================
* MENUs *
==================================================================================================*/
public show_menu_block(id)
{
if(g_Status[id] == LOGGED)
return;
static szMenu[128],szName[32]
get_user_name(id,szName,31);formatex(szMenu,127,"\ySYSTEM OF ACCOUNTS BY: \rPremium Comunnity^n\wESTADO ACTUAL: \y[ \r%s \y]\w^n^n%s%s",g_szStatus[g_Status[id]],g_Status[id] == LOGGED ? "LAST TIME THAT YOU ARRIVED TO THE SERVER \r":(g_Status[id] == REGISTERED ? "\yEstas registrado como \r":""),g_Status[id] == LOGGED ? g_Date[id]:(g_Status[id] == REGISTERED ? szName:""))
new Menu = menu_create(szMenu,"handler_menu_block")
formatex(szMenu,63,"%sLOG IN",g_Status[id] != REGISTERED ? "\d":"\w")
menu_additem(Menu,szMenu,"1",0)
formatex(szMenu,63,"%sREGISTER^n",g_Status[id] != UNREGISTERED ? "\d":"\w")
menu_additem(Menu,szMenu,"2",0)
formatex(szMenu,63,"%s%sCHANGE PASSWORD",g_Status[id] != LOGGED ? "\d":"\w",g_AlredyChanged[id][PASSWORD] ? "\d":"")
menu_additem(Menu,szMenu,"3",0)
formatex(szMenu,63,"%s%sCHANGE NICKNAME^n",g_Status[id] != LOGGED ? "\d":"\w",g_AlredyChanged[id][NAME] ? "\d":"")
menu_additem(Menu,szMenu,"4",0)
menu_additem(Menu,"InformaTion","5",0)
menu_setprop(Menu,MPROP_EXITNAME,"Exit")
menu_display(id,Menu,0)
}
public handler_menu_block(id,menu,item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
switch(item)
{
case 0: {
if(g_Status[id] != REGISTERED)
{
show_msg(id,"YOU CAN NOT CHOOSE THIS OPTION...")
return PLUGIN_HANDLED
}
show_msg(id,"Enter your PASSWORD to access your account...");client_cmd(id,"messagemode ENTER_PASSWORD")
}
case 1: {
if(g_Status[id] != UNREGISTERED)
{
show_msg(id,"You can not choose this option...")
return PLUGIN_HANDLED
}
show_msg(id,"Enter a PASSWORD to create an account...");client_cmd(id,"messagemode ENTER_PASSWORD")
}
case 2: {
if(g_Status[id] != LOGGED || g_AlredyChanged[id][PASSWORD])
{
show_msg(id,"You are not logged in or have already changed your password during the map...")
return PLUGIN_HANDLED
}
show_msg(id,"Enter your new PASSWORD...");client_cmd(id,"messagemode ENTER_PASSWORD")
}
case 3: {
if(g_Status[id] != LOGGED || g_AlredyChanged[id][NAME])
{
show_msg(id,"You are not logged in or have already changed your nickname during the map...")
return PLUGIN_HANDLED
}
show_msg(id,"Enter your new NICK...");client_cmd(id,"messagemode ENTER_NICK")
}
case 4: {
set_hudmessage(0, 255, 0, -1.0, -1.0, 2, 4.0, 7.0)
ShowSyncHudMsg(id,gMsg,"This account system was created by:^nPremium Comunnity for you^nIt consists of registering a nickname to avoid^nthe theft of it, protecting it with password, to press again M")
}
}
return PLUGIN_HANDLED
}
public show_menu_confirm(id)
{
static szTitle[128];formatex(szTitle,127,"\w%sThe password will be \r%s^n^n\yConfirm?",g_Status[id] == LOGGED ? "You are changing your password^n":"You are setting your password^n",g_TempPassword[id])
new Menu = menu_create(szTitle,"handler_menu_confirm")
menu_additem(Menu,"\rYes\w, confirm","1",0)
menu_additem(Menu,"\rNo\w, I want to rewrite it","2",0)
menu_setprop(Menu,MPROP_EXIT,MEXIT_NEVER)
menu_display(id,Menu,0)
}
public handler_menu_confirm(id,menu,item)
{
switch(item)
{
case 0: {
switch(g_Status[id])
{
case LOGGED: {
show_msg(id,"Your password has been successfully changed")
copy(g_Password[id],31,g_TempPassword[id]);fvault_save(id)
g_AlredyChanged[id][PASSWORD] = 1
}
case UNREGISTERED: {
show_msg(id,"Your account has been created successfully")
copy(g_Password[id],31,g_TempPassword[id]);fvault_save(id)
g_Status[id] = LOGGED;change_team(id)
}
}
}
case 1: {
menu_destroy(menu)
client_cmd(id,"messagemode ENTER_PASSWORD")
g_Status[id] == LOGGED ? show_msg(id,"Enter your new PASSWORD..."):show_msg(id,"Enter the PASSWORD for your new account...")
}
}
return PLUGIN_HANDLED
}
/*==================================================================================================
* LOAD | SAVE *
==================================================================================================*/
public fvault_load(id)
{
static szName[32],szData[64];get_user_name(id,szName,31)
if(!fvault_get_data(g_Vault,szName,szData,63))
g_Status[id] = UNREGISTERED
else {
strbreak(szData,g_Password[id],31,g_Date[id],31)
g_Status[id] = REGISTERED
}
}
public fvault_save(id)
{
static szName[32],szData[64];get_user_name(id,szName,31)
get_time("%c",g_Date[id],31);formatex(szData,63,"%s %s",g_Password[id],g_Date[id])
fvault_set_data(g_Vault,szName,szData)
}
/*==================================================================================================
* STOCKS *
==================================================================================================*/
stock change_name(const id, const string[])
{
static szName[32],szData[64];get_user_name(id,szName,31)
if(equal(szName,string))
return 0
if(fvault_get_data(g_Vault,string,szData,63))
return 0
g_CanChange = 1;set_user_info(id,"name",string)
g_CanChange = 0
fvault_remove_key(g_Vault,szName)
set_task(1.0,"fvault_save",id)
g_AlredyChanged[id][NAME] = 1
return 1
}
stock change_team(const id)
{
engclient_cmd(id,"jointeam","5")
engclient_cmd(id,"joinclass","5")
}
stock show_msg(const id, const string[])
{
set_hudmessage(0, 255, 0, 0.15, 0.10, 1, 2.0, 10.0)
ShowSyncHudMsg(id,gMsg,"%s",string)
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang11274\\ f0\\ fs16 \n\\ par }
*/