#include <amxmodx>
#include <nvault>
#include <regex>
/************************************************************************
-= Defines =-
************************************************************************/
#define sD_ChatTag "!n[ !tWEBAilesi !n]"
/************************************************************************
-= Datas =-
************************************************************************/
new iG_Vault,iG_ForwardLogin,iG_ForwardMulti,iG_Return,iG_UID[33];
new bool:bG_Safety[33];
new sG_UserName[33][22],sG_UserPass[33][22];
/************************************************************************
-= Registers =-
************************************************************************/
public plugin_init(){
register_plugin
("Hesap Sistemi",
"9.2",
"Berk");
register_clcmd("Giris_KullaniciAdi","Giris_KullaniciAdiX");
register_clcmd("Giris_Sifre","Giris_SifreX");
register_clcmd("Kayit_KullaniciAdi","Kayit_KullaniciAdiX");
register_clcmd("Kayit_Sifre","Kayit_SifreX");
register_clcmd("Yeni_Sifre","Yeni_SifreX");
iG_ForwardLogin = CreateMultiForward("pUserLogged",ET_IGNORE,FP_CELL);
iG_ForwardMulti = CreateMultiForward("pUserLoggedMulti",ET_IGNORE,FP_CELL);
}
public plugin_natives(){
register_native("nForwardLogin","nForwardLoginX");
register_native("nForwardRegister","nForwardRegisterX");
register_native("nGetUidByID","nGetUidByIDX");
register_native("nIsUidOnline","nIsUidOnlineX");
register_native("nGetUidByName","nGetUidByNameX");
register_native("nIsValidUid","nIsValidUidX");
register_native("nUidOnlineTime","nUidOnlineTimeX");
register_native("nUidLastLogin","nUidLastLoginX");
register_native("nUidLastName","nUidLastNameX");
register_native("nUidLastSteam","nUidLastSteamX");
register_native("nGetLastUid","nGetLastUidX");
register_native("nSetUidStatus","nSetUidStatusX");
register_native("nGetUidStatus","nGetUidStatusX");
register_native("nForwardExit","nForwardExitX");
register_native("nUidGetUName","nUidGetUNameX");
register_native("nUidGetUPass","nUidGetUPassX");
register_native("nChangePassword","nChangePasswordX");
}
public plugin_cfg(){
iG_Vault = nvault_open("newAccount");
}
public plugin_end(){
for(new i; i < 33; i++){
if(iG_UID[i]){
new iL_TimeDiff,iL_OnlineTime,iL_UID = iG_UID[i];
iL_TimeDiff = get_systime();
iL_TimeDiff -= sGetIntData("uid>%i>lastlogin",iL_UID);
iL_OnlineTime = sGetIntData("uid>%i>onlinetime",iL_UID);
sSetIntData("uid>%i>onlinetime",iL_TimeDiff+iL_OnlineTime,iL_UID);
iG_UID[i] = 0;
}
}
nvault_close(iG_Vault);
}
public client_disconnected(iP_ID){
if(iG_UID[iP_ID]){
new iL_TimeDiff,iL_OnlineTime,iL_UID = iG_UID[iP_ID];
iL_TimeDiff = get_systime();
iL_TimeDiff -= sGetIntData("uid>%i>lastlogin",iL_UID);
iL_OnlineTime = sGetIntData("uid>%i>onlinetime",iL_UID);
sSetIntData("uid>%i>onlinetime",iL_TimeDiff+iL_OnlineTime,iL_UID);
iG_UID[iP_ID] = 0;
}
}
public client_putinserver(iP_ID){
iG_UID[iP_ID] = 0;
set_task(2.0,"pTryToLogin",iP_ID);
}
/************************************************************************
-= System =-
************************************************************************/
public pTryToLogin(iP_ID){
new sL_UserName[22],sL_PassWord[22];
get_user_info(iP_ID,"_un",sL_UserName,21);
get_user_info(iP_ID,"_up",sL_PassWord,21);
if(strlen(sL_UserName) > 2 && strlen(sL_PassWord) > 2){
sG_UserName[iP_ID] = sL_UserName;
sG_UserPass[iP_ID] = sL_PassWord;
pGoLogin(iP_ID);
}
}
public nForwardLoginX(){
new iL_ID = get_param(1);
bG_Safety[iL_ID] = true;
client_cmd(iL_ID,"messagemode Giris_KullaniciAdi");
}
public nForwardRegisterX(){
new iL_ID = get_param(1);
bG_Safety[iL_ID] = true;
client_cmd(iL_ID,"messagemode Kayit_KullaniciAdi");
}
public nForwardExitX(){
new iL_ID = get_param(1),iL_TimeDiff,iL_OnlineTime,iL_UID = iG_UID[iL_ID];
iL_TimeDiff = get_systime();
iL_TimeDiff -= sGetIntData("uid>%i>lastlogin",iL_UID);
iL_OnlineTime = sGetIntData("uid>%i>onlinetime",iL_UID);
sSetIntData("uid>%i>onlinetime",iL_TimeDiff+iL_OnlineTime,iL_UID);
iG_UID[iL_ID] = 0;
}
public nGetUidByIDX(){
new iL_ID = get_param(1);
return iG_UID[iL_ID];
}
public nIsUidOnlineX(){
new iL_UID = get_param(1);
for(new i; i < 33; i++){
if(iG_UID[i] == iL_UID){
return i;
}
}
return 0;
}
public nGetUidByNameX(){
new sL_Name[26]
get_string(1,sL_Name,25);
return sGetIntData("lastname>%s>uid",sL_Name);
}
public nIsValidUidX(){
new iL_UID = get_param(1);
if(1000 <= iL_UID <= nGetLastUidX()){
return 1;
}
return 0;
}
public nUidOnlineTimeX(){
new iL_UID = get_param(1);
return sGetIntData("uid>%i>onlinetime",iL_UID);
}
public nUidLastLoginX(){
new iL_UID = get_param(1);
return sGetIntData("uid>%i>lastlogin",iL_UID);
}
public nUidLastNameX(){
new iL_UID = get_param(1);
new iL_Len = get_param(2);
set_string(2,sGetStrData("uid>%i>lastname",iL_UID),iL_Len);
}
public nUidLastSteamX(){
new iL_UID = get_param(1);
new iL_Len = get_param(2);
set_string(2,sGetStrData("uid>%i>lastauthid",iL_UID),iL_Len);
}
public nUidGetUNameX(){
new iL_UID = get_param(1);
new iL_Len = get_param(2);
set_string(2,sGetStrData("uid>%i>username",iL_UID),iL_Len);
}
public nUidGetUPassX(){
new iL_UID = get_param(1);
new iL_Len = get_param(2);
set_string(2,sGetStrData("uid>%i>userpass",iL_UID),iL_Len);
}
public nGetLastUidX(){
new iL_UID = sGetIntData("mthr>lastuid");
if(!iL_UID){
iL_UID = 1000;
}
return iL_UID;
}
public nSetUidStatusX(){
new iL_UID = get_param(1);
new iL_Status = get_param(2);
sSetIntData("uid>%i>status",iL_Status,iL_UID);
}
public nGetUidStatusX(){
new iL_UID = get_param(1);
return sGetIntData("uid>%i>status",iL_UID);
}
public nChangePasswordX(){
new iL_ID = get_param(1);
bG_Safety[iL_ID] = true;
client_cmd(iL_ID,"messagemode Yeni_Sifre");
}
public Yeni_SifreX(iP_ID){
if(!bG_Safety[iP_ID]){
sColoredChat(iP_ID,"%s !gHey!n, !gbir seyler yanlis gitti ha !t?",sD_ChatTag);
return PLUGIN_HANDLED;
}
new iL_UID = iG_UID[iP_ID];
new sL_Arg[22];
read_args(sL_Arg,21);
remove_quotes(sL_Arg);
new iL_Return,sL_Error[64];
new Regex:cL_Regex = regex_match(sL_Arg,"^^[a-zA-Z0-9]+$",iL_Return,sL_Error,63);
if(cL_Regex <= REGEX_NO_MATCH || !( 2 <= strlen(sL_Arg) <= 20)){
sColoredChat(iP_ID,"%s !gHey!n, !gbir seyler yanlis gitti ha !t?",sD_ChatTag);
return PLUGIN_HANDLED;
}
sRemoveData("%s|%s>uid",sGetStrData("uid>%i>username",iL_UID),sGetStrData("uid>%i>userpass",iL_UID));
sSetStrData("uid>%i>userpass",sL_Arg,iL_UID);
sSetIntData("%s|%s>uid",iL_UID,sGetStrData("uid>%i>username",iL_UID),sL_Arg);
sColoredChat(iP_ID,"%s !gBasarili bir sekilde sifren !n[ !t%s !n] !gyapildi!n.",sD_ChatTag,sL_Arg);
return PLUGIN_HANDLED;
}
public Giris_KullaniciAdiX(iP_ID){
if(!bG_Safety[iP_ID]){
sColoredChat(iP_ID,"%s !gHey!n, !gbir seyler yanlis gitti ha !t?",sD_ChatTag);
return PLUGIN_HANDLED;
}
new sL_Arg[22];
read_args(sL_Arg,21);
remove_quotes(sL_Arg);
new iL_Return,sL_Error[64];
new Regex:cL_Regex = regex_match(sL_Arg,"^^[a-zA-Z0-9]+$",iL_Return,sL_Error,63);
if(cL_Regex <= REGEX_NO_MATCH || !( 2 <= strlen(sL_Arg) <= 20)){
sColoredChat(iP_ID,"%s !gHey!n, !gbir seyler yanlis gitti ha !t?",sD_ChatTag);
return PLUGIN_HANDLED;
}
copy(sG_UserName[iP_ID],21,sL_Arg);
client_cmd(iP_ID,"messagemode Giris_Sifre");
return PLUGIN_HANDLED;
}
public Giris_SifreX(iP_ID){
if(!bG_Safety[iP_ID]){
sColoredChat(iP_ID,"%s !gHey!n, !gbir seyler yanlis gitti ha !t?",sD_ChatTag);
return PLUGIN_HANDLED;
}
new sL_Arg[22];
read_args(sL_Arg,21);
remove_quotes(sL_Arg);
new iL_Return,sL_Error[64];
new Regex:cL_Regex = regex_match(sL_Arg,"^^[a-zA-Z0-9]+$",iL_Return,sL_Error,63);
if(cL_Regex <= REGEX_NO_MATCH || !( 2 <= strlen(sL_Arg) <= 20)){
sColoredChat(iP_ID,"%s !gHey!n, !gbir seyler yanlis gitti ha !t?",sD_ChatTag);
return PLUGIN_HANDLED;
}
copy(sG_UserPass[iP_ID],21,sL_Arg);
pGoLogin(iP_ID);
return PLUGIN_HANDLED;
}
public Kayit_KullaniciAdiX(iP_ID){
if(!bG_Safety[iP_ID]){
sColoredChat(iP_ID,"%s !gHey!n, !gbir seyler yanlis gitti ha !t?",sD_ChatTag);
return PLUGIN_HANDLED;
}
new sL_Arg[22];
read_args(sL_Arg,21);
remove_quotes(sL_Arg);
new iL_Return,sL_Error[64];
new Regex:cL_Regex = regex_match(sL_Arg,"^^[a-zA-Z0-9]+$",iL_Return,sL_Error,63);
if(cL_Regex <= REGEX_NO_MATCH || !( 2 <= strlen(sL_Arg) <= 20)){
sColoredChat(iP_ID,"%s !gHey!n, !gbir seyler yanlis gitti ha !t?",sD_ChatTag);
return PLUGIN_HANDLED;
}
copy(sG_UserName[iP_ID],21,sL_Arg);
client_cmd(iP_ID,"messagemode Kayit_Sifre");
return PLUGIN_HANDLED;
}
public Kayit_SifreX(iP_ID){
if(!bG_Safety[iP_ID]){
sColoredChat(iP_ID,"%s !gHey!n, !gbir seyler yanlis gitti ha !t?",sD_ChatTag);
return PLUGIN_HANDLED;
}
new sL_Arg[22];
read_args(sL_Arg,21);
remove_quotes(sL_Arg);
new iL_Return,sL_Error[64];
new Regex:cL_Regex = regex_match(sL_Arg,"^^[a-zA-Z0-9]+$",iL_Return,sL_Error,63);
if(cL_Regex <= REGEX_NO_MATCH || !( 2 <= strlen(sL_Arg) <= 20)){
sColoredChat(iP_ID,"%s !gHey!n, !gbir seyler yanlis gitti ha !t?",sD_ChatTag);
return PLUGIN_HANDLED;
}
copy(sG_UserPass[iP_ID],21,sL_Arg);
pGoRegister(iP_ID);
return PLUGIN_HANDLED;
}
public pGoLogin(iP_ID){
new iL_UID = sGetIntData("%s|%s>uid",sG_UserName[iP_ID],sG_UserPass[iP_ID]);
if(!iL_UID){
sColoredChat(iP_ID,"%s !gBoyle bir hesap bulunamadi!n!",sD_ChatTag);
return PLUGIN_HANDLED;
}
new iL_Status = sGetIntData("uid>%i>status",iL_UID);
if(!iL_Status){
sColoredChat(iP_ID,"%s !gBu hesap yasaklanmis durumda!n!",sD_ChatTag);
return PLUGIN_HANDLED;
}
new sL_Name[28],sL_Authid[28];
get_user_name(iP_ID,sL_Name,27);
for(new i; i < 33; i++){
if(iG_UID[i] == iL_UID){
sColoredChat(i,"%s !gCoklu hesap kullanimi malesefki yasak!n!",sD_ChatTag);
sColoredChat(iP_ID,"%s !gCoklu hesap kullanimi malesefki yasak!n!",sD_ChatTag);
iG_UID[i] = 0;
ExecuteForward(iG_ForwardMulti,iG_Return,i);
break;
}
}
get_user_authid(iP_ID,sL_Authid,27);
sSetIntData("uid>%i>lastlogin",get_systime(),iL_UID);
sSetStrData("uid>%i>lastname",sL_Name,iL_UID);
sSetIntData("lastname>%s>uid",iL_UID,sL_Name);
sSetStrData("uid>%i>lastauthid",sL_Authid,iL_UID);
sG_UserName[iP_ID] = "";
sG_UserPass[iP_ID] = "";
iG_UID[iP_ID] = iL_UID;
ExecuteForward(iG_ForwardLogin,iG_Return,iP_ID);
sColoredChat(iP_ID,"%s !gBasarili bir sekilde giris yapildi!n, !gHOSGELDIN!n!",sD_ChatTag);
return PLUGIN_CONTINUE;
}
public pGoRegister(iP_ID){
new iL_UID = sGetIntData("%s|%s>uid",sG_UserName[iP_ID],sG_UserPass[iP_ID]);
if(iL_UID){
sColoredChat(iP_ID,"%s !gBoyle bir hesap zaten mevcut!n!",sD_ChatTag);
return PLUGIN_HANDLED;
}
iL_UID = sGetIntData("mthr>lastuid");
if(!iL_UID){
iL_UID = 1000;
}
sSetIntData("%s|%s>uid",iL_UID,sG_UserName[iP_ID],sG_UserPass[iP_ID]);
sSetIntData("uid>%i>status",1,iL_UID);
sSetStrData("uid>%i>username",sG_UserName[iP_ID],iL_UID);
sSetStrData("uid>%i>userpass",sG_UserPass[iP_ID],iL_UID);
iL_UID += 1;
sSetIntData("mthr>lastuid",iL_UID);
sColoredChat(iP_ID,"%s !gBasarili bir sekilde kayit !n[ !t%s!g|!t%s !n] !golundu!n, !gHOSGELDIN!n!",sD_ChatTag,sG_UserName[iP_ID],sG_UserPass[iP_ID]);
pGoLogin(iP_ID);
return PLUGIN_CONTINUE;
}
/************************************************************************
-= Stocks =-
************************************************************************/
stock sGetIntData(const sS_Key[],any:...){
new sL_FixedData[128];
vformat(sL_FixedData,charsmax(sL_FixedData),sS_Key,2);
return nvault_get(iG_Vault,sL_FixedData);
}
stock sSetIntData(const sS_Key[],const iS_Data,any:...){
new sL_FixedData[128],sL_NumToStr[48];
vformat(sL_FixedData,charsmax(sL_FixedData),sS_Key,3);
num_to_str(iS_Data,sL_NumToStr,charsmax(sL_NumToStr));
nvault_set(iG_Vault,sL_FixedData,sL_NumToStr);
}
stock sGetStrData(const sS_Key[],any:...){
new sL_FixedData[128],sL_ReturnedData[256];
vformat(sL_FixedData,charsmax(sL_FixedData),sS_Key,2);
nvault_get(iG_Vault,sL_FixedData,sL_ReturnedData,charsmax(sL_ReturnedData));
return sL_ReturnedData;
}
stock sSetStrData(const sS_Key[],const sS_Data[],any:...){
new sL_FixedData[128];
vformat(sL_FixedData,charsmax(sL_FixedData),sS_Key,3);
nvault_set(iG_Vault,sL_FixedData,sS_Data);
}
stock sRemoveData(const sS_Key[],any:...){
new sL_FixedData[128];
vformat(sL_FixedData,charsmax(sL_FixedData),sS_Key,2);
nvault_remove(iG_Vault,sL_FixedData);
}
#if AMXX_VERSION_NUM < 183
stock sColoredChat(const id, const input[], any:...){
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!n", "^x01"); // Default Renk(Sarý)
replace_all(msg, 190, "!g", "^x04"); // Yeþil Renk
replace_all(msg, 190, "!t", "^x03"); // Takým Renk( CT mavi , T kýrmýzý )
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();
}
}
}
}
#else
stock sColoredChat(const id, const input[], any:...){
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!n", "^x01");
replace_all(msg, 190, "!g", "^x04");
replace_all(msg, 190, "!t", "^x03");
client_print_color(id, id, msg);
}
#endif