- Joined
- May 18, 2007
- Messages
- 5,846
- Reaction score
- 5,255
Adapted directly from the SA:MP Forums. I take no credit for this, I am only sharing this script with the community. All credit goes to Catastroph from the SA:MP Forums
So all credits go to Catastroph and I hope this helps anyone who's making a gamemode and wants to use a register function.
Catastroph on the SA:MP Forums said:I saw many members have trouble about creating their own login/register system. To be honest,To view the content, you need to sign in or registerDracoBlue has explained much things about how to keep score&money but as I understand, still many beginner people cannot exactly understand what he explains. That is why I have just wanted to share my filterscript I use on my server to save scores and money.
Here is the source code of my filterscript, actually you don't get any error or warning but if you get any of it, or if you don't know how to compile a PWN file, can download either PWN and AMX file though:
To view the content, you need to sign in or register
Here's the source code:
Code:// Register / Login Filterscript // #include <a_samp> #include <dudb> #include <dutils> #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1 //Colors// #define COLOR_SYSTEM 0xEFEFF7AA #define green 0x33FF33AA #define blue 0x00FFFFAA new PLAYERLIST_authed[MAX_PLAYERS]; #if defined FILTERSCRIPT public OnFilterScriptInit() { print("\n--------------------------------------"); print("Register / Login System"); print("--------------------------------------\n"); return 1; } public OnFilterScriptExit() { return 1; } #else main() { print("\n----------------------------------"); print("Register / Login System"); print("----------------------------------\n"); } #endif public OnPlayerRequestSpawn(playerid) { if (udb_Exists(PlayerName(playerid))){ if (!PLAYERLIST_authed[playerid]){ SendClientMessage(playerid,green,"You have already registered, use /login to log into your account."); return 0; } } return 1; } public OnPlayerDisconnect(playerid) { if (PLAYERLIST_authed[playerid]) { // If someone has logged in, it saves money and score. dUserSetINT(PlayerName(playerid)).("money",GetPlayerMoney(playerid)); dUserSetINT(PlayerName(playerid)).("score",GetPlayerScore(playerid)); } PLAYERLIST_authed[playerid]=false; return 1; } public OnPlayerConnect(playerid) { if (PLAYERLIST_authed[playerid]==0){ if (udb_Exists(PlayerName(playerid))){ SystemMsg(playerid,"You have already registered, please /login [password] to login."); } else{ SystemMsg(playerid,"You do not have an account, use /register [password] to register then /login [password] to login."); } return 0; } return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { dcmd(login,5,cmdtext); dcmd(register,8,cmdtext); return 0; } stock SystemMsg(playerid,msg[]) { if ((IsPlayerConnected(playerid))&&(strlen(msg)>0)) { SendClientMessage(playerid,COLOR_SYSTEM,msg); } return 1; } stock PlayerName(playerid) { new name[255]; GetPlayerName(playerid, name, 255); return name; } dcmd_register(playerid,params[]) { if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"You have already had an account."); if (udb_Exists(PlayerName(playerid))) return SystemMsg(playerid,"You have already created an account, /login [password] to login."); if (strlen(params)==0) return SystemMsg(playerid,"USAGE: /register [password]"); if (udb_Create(PlayerName(playerid),params)) return SystemMsg(playerid,"You have successfully created your account, now use /login [password] to login."); return true; } dcmd_login(playerid,params[]) { if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"You have already logined."); if (!udb_Exists(PlayerName(playerid))) return SystemMsg(playerid,"You do not have an account, please /register [password]"); if (strlen(params)==0) return SystemMsg(playerid,"USAGE: /login [password]"); if (udb_CheckLogin(PlayerName(playerid),params)) { SetPlayerScore(playerid,dUserINT(PlayerName(playerid)).("score")); SetPlayerMoney(playerid,dUserINT(PlayerName(playerid)).("money")); PLAYERLIST_authed[playerid]=true; return SystemMsg(playerid,"You have successfully logined."); } return SystemMsg(playerid,"Wrong password or nickname!"); }
So all credits go to Catastroph and I hope this helps anyone who's making a gamemode and wants to use a register function.