//-------------[ INCLUDE ]
#include <a_samp>
#include <foreach>
#include <sscanf2>
#include <YSI\y_ini>
//-------------[ DEFINES ]
//-----DIALOG IDS----------------
#define Register 1
#define Login 2
//-------USER PATHS--------------
#define PATH "/Users/%s.ini"
//-------COLOURS-----------------
#define COL_RED 0xE01B4CFF
#define COL_BLUE "{345ACF}"
#define COL_RED "{E01B4C}"
#define COL_WHITE "{FFFFFF}"
#define COL_ORA "{E0A21B}"
#define COL_YELLOW "{F5E618}"
#define COL_GREEN "{2EAD15}"
//------PLAYER-------------------
#define WelcomeGift 2000
//------[Forward Callback]
forward LoadUserAccounts(playerid, name[], value[]);
//-------{custom Functions]
stock GetName(playerid)
{
new
pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
return pName;
}
stock udb_hash(buf[])
{
new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n<length; n++)
{
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
}
return (s2 << 16) + s1;
}
stock UserPath(playerid)
{
new string[128],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playernam e));
format(string,sizeof(string),PATH,playername);
return string;
}
//-------------[ ENUMS/ARRAYS ]
enum pInfo
{
pPass, //User's password
pAdmin, //User's admin level
pVIP, //User's vip level
pSkin, //User's Saved Skin
pMoney, //User's money
pScores, //User's scores
pKills, //User's kills
pDeaths, //User's deaths
pMute, //User Mute
pFrozen, //User Frozen
pWarn, //User Warning's
pSpam, //User Spam
pDuty, // User On/Off Duty
pSpecating, //User Specating
pBanned, //User Banned
}
//-------------[ VARIABLES ]
new PlayerInfo[MAX_PLAYERS][pInfo];
public OnPlayerConnect(playerid)
{
if(fexist(UserPath(playerid)))
{
INI_ParseFile(UserPath(playerid),"LoadUserAccounts ", .bExtra = true, .extra = playerid);
ShowPlayerDialog(playerid,Login,DIALOG_STYLE_PASSW ORD,"Login System","Welcome Back. This Account Is Registered. \nInsert Your Password To Login Into Your Account","Login","Quit");
}
else
{
ShowPlayerDialog(playerid,Register,DIALOG_STYLE_PA SSWORD,"Register System","Welcome! This Account Is Not Yet Registered.\nEnter A Password To Create Account.","Register","Quit");
return 1;
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if(fexist(UserPath(playerid)))
{
new INI:file = INI_Open(UserPath(playerid));
INI_SetTag(file,"data");
INI_WriteInt(file,"Admin",PlayerInfo[playerid][pAdmin]);
INI_WriteInt(file,"Money",GetPlayerMoney(playerid) );
INI_WriteInt(file,"Score",GetPlayerScore(playerid) );
INI_WriteInt(file,"Warn",PlayerInfo[playerid][pWarn]);
INI_WriteInt(file,"Kills",PlayerInfo[playerid][pKills]);
INI_WriteInt(file,"Deaths",PlayerInfo[playerid][pDeaths]);
INI_WriteInt(file,"VIP",PlayerInfo[playerid][pVIP]);
INI_Close(file);
return 1;
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case Register:
{
if(!response) return Kick(playerid);
if(response)
{
if(!strlen(inputtext))return ShowPlayerDialog(playerid,Register,DIALOG_STYLE_PA SSWORD,"Registration System","Welcome! This Account Is Not Yet Registered.\nPlease Enter A Password To Create A New Account.\nPlease Enter Password Below!","Register","Quit");
new string[179];
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Password",udb_hash(inputtext));
INI_WriteInt(File,"Money", WelcomeGift);
INI_WriteInt(File,"Admin",0);
INI_WriteInt(File,"Kills",0);
INI_WriteInt(File,"Deaths",0);
INI_WriteInt(File,"Score",0);
INI_WriteInt(File,"Warn",0);
INI_WriteInt(File,"VIP",0);
INI_Close(File);
format(string, 125, COL_YELLOW"(INFO)"COL_YELLOW "Name: "COL_WHITE"%s "COL_YELLOW"Password: "COL_WHITE"%s "COL_YELLOW"Has Been Successfully Created.", GetName(playerid), inputtext);
SendClientMessage(playerid, 0x46BA29FF, string);
GivePlayerMoney(playerid,WelcomeGift);
format(string, 125, COL_YELLOW"(INFO) You Have Been Awarded A Welcome Gift Of $2000");
SendClientMessage(playerid, 0x46BA29FF, string);
return 1;
}
}
case Login:
{
if(!response) return Kick(playerid);
if(response )
{
if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
{
INI_ParseFile(UserPath(playerid),"LoadUserAccounts ", .bExtra = true, .extra = playerid);
SetPlayerScore(playerid, PlayerInfo[playerid][pScores]);
GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
SendClientMessage(playerid,-1,"Welcome Back! You Have Been Successfully Logged In");
}
else
{
ShowPlayerDialog(playerid, Login, DIALOG_STYLE_PASSWORD,"Login System","Welcome Back. This Account Is Registered. \nInsert Your Password To Login Into Your Account.\nIncorrect Password!","Login","Quit");
}
return 1;
}
}
}
return 1;
}
public LoadUserAccounts(playerid,name[],value[])
{
INI_Int("Password", PlayerInfo[playerid][pPass]);
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
INI_Int("VIP",PlayerInfo[playerid][pVIP]);
INI_Int("Money",PlayerInfo[playerid][pMoney]);
INI_Int("Scores",PlayerInfo[playerid][pScores]);
INI_Int("Kills",PlayerInfo[playerid][pKills]);
INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
return 1;
}
|