Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- n_ini.inc include by Neufox
- n_ini (INI-File) test by Neufox, Test/basic login and register system
- */
- #include <a_samp>
- #include <n_ini>
- #define HASH_PASSWORD true//true = use whirpool plugin(by Y_Less) to hash passwords [RECOMMENDED]
- #define USER_PATH "Accounts/%s.ini"//The path where user files will be saved
- #define MAX_PASSWORD 54//Maximum length of password
- #define MIN_PASSWORD 4//Minimum length of password
- #if(!INI_AUTO_SAVE)//this is also a default setting, but still confirming it :p
- #undef INI_AUTO_SAVE
- #define INI_AUTO_SAVE true
- #endif
- #if(HASH_PASSWORD)
- native WP_Hash(buffer[], len, const str[]);
- #endif
- //the profile data enums
- enum PlayerEnums
- {
- Password[129],
- Admin,
- Vip,
- Score,
- Money,
- Deaths,
- Kills,
- IsLogged,
- IP[16]
- }
- new PlayerInfo[MAX_PLAYERS][PlayerEnums];//the variable in which these are stored
- public OnFilterScriptInit()
- {
- print("Test LOGIN & REGISTER SYSTEM Loaded with (n_ini.inc)");
- print("Credits: Neufox, ENJOY!");
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- stock UserPath(playerid)//Automatically directs to user profile saving path
- {
- new pName[MAX_PLAYER_NAME], Path[60];
- GetPlayerName(playerid, pName, sizeof(pName));
- format(Path, sizeof(Path), USER_PATH, pName);
- return Path;
- }
- public OnPlayerConnect(playerid)
- {
- //Reseting all the player data
- for(new i; i < _: PlayerEnums; ++i)
- {
- PlayerInfo[playerid][PlayerEnums: i] = 0;
- }
- if(INI_Exist(UserPath(playerid)))//if login
- {
- ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Login", "Please insert your complicated password below.\n\nNOTE: Don't use this password in other servers!", "Login", "Leave");
- }
- else//if register
- {
- ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, "Register", "Please insert a complicated password below.\n\nNOTE: Don't use this password in other servers!", "Register", "Leave");
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- if(INI_Exist(UserPath(playerid)))//save profile if exist
- {
- INI_Open(UserPath(playerid));
- INI_WriteInt("Admin", PlayerInfo[playerid][Admin]);
- INI_WriteInt("Vip", PlayerInfo[playerid][Vip]);
- INI_WriteInt("Score", GetPlayerScore(playerid));
- INI_WriteInt("Money", GetPlayerMoney(playerid));
- INI_WriteInt("Deaths", PlayerInfo[playerid][Deaths]);
- INI_WriteInt("Kills", PlayerInfo[playerid][Kills]);
- INI_WriteInt("IsLogged", 0);
- INI_Close();
- }
- //Reseting all the player data
- for(new i; i < _: PlayerEnums; ++i)
- {
- PlayerInfo[playerid][PlayerEnums: i] = 0;
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == 0)//dialog login
- {
- if(response)
- {
- if(strlen(inputtext) < MIN_PASSWORD || strlen(inputtext) > MAX_PASSWORD)//invalid password
- {
- ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, "Register", "Please insert a complicated password below.\n\nNOTE: Don't use this password in other servers!\n\nERROR: The password length must be between ("#MIN_PASSWORD" - "#MAX_PASSWORD").", "Register", "Leave");
- }
- else
- {
- #if(HASH_PASSWORD)
- new HashPass[129];
- WP_Hash(HashPass, sizeof(HashPass), inputtext);
- #endif
- GetPlayerIp(playerid, PlayerInfo[playerid][IP], 16);
- INI_Open(UserPath(playerid));//now making user profile
- #if(HASH_PASSWORD)
- INI_WriteString("Password", HashPass);
- #else
- INI_WriteString("Password", inputtext);
- #endif
- INI_WriteString("IP", PlayerInfo[playerid][IP]);
- INI_WriteInt("Admin", 0);
- PlayerInfo[playerid][Admin] = 0;
- INI_WriteInt("Vip", 0);
- PlayerInfo[playerid][Vip] = 0;
- INI_WriteInt("Score", GetPlayerScore(playerid));
- PlayerInfo[playerid][Score] = GetPlayerScore(playerid);
- INI_WriteInt("Money", GetPlayerMoney(playerid));
- PlayerInfo[playerid][Money] = GetPlayerMoney(playerid);
- INI_WriteInt("Deaths", 0);
- PlayerInfo[playerid][Deaths] = 0;
- INI_WriteInt("Kills", 0);
- PlayerInfo[playerid][Kills] = 0;
- INI_WriteInt("IsLogged", 1);
- PlayerInfo[playerid][IsLogged] = 1;
- INI_Close();
- SendClientMessage(playerid, -1, "ACCOUNT: You have been successfully registered.");//now he/she is done
- }
- }
- }
- else if(dialogid == 1)//dialog register
- {
- if(response)
- {
- if(strlen(inputtext) < MIN_PASSWORD || strlen(inputtext) > MAX_PASSWORD)//invalid password
- {
- ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Login", "Please insert your complicated password below.\n\nNOTE: Don't use this password in other servers!\n\nERROR: The password length must be between ("#MIN_PASSWORD" - "#MAX_PASSWORD").", "Login", "Leave");
- }
- else
- {
- GetPlayerIp(playerid, PlayerInfo[playerid][IP], 16);
- INI_Open(UserPath(playerid));//getting the password only, to check if its correct or matching to "inputtext"
- format(PlayerInfo[playerid][Password], 129, INI_ReadString("Password"));
- INI_Close();
- #if(HASH_PASSWORD)
- new HashPass[129];
- WP_Hash(HashPass, sizeof(HashPass), inputtext);
- #endif
- if(!strcmp(HashPass, PlayerInfo[playerid][Password]))//password is correct
- {
- INI_Open(UserPath(playerid));//loading user profile
- if(strcmp(INI_ReadString("IP"), PlayerInfo[playerid][IP]))
- {
- INI_WriteString("IP", PlayerInfo[playerid][IP]);
- }
- PlayerInfo[playerid][Admin] = INI_ReadInt("Admin");
- PlayerInfo[playerid][Vip] = INI_ReadInt("Vip");
- PlayerInfo[playerid][Score] = INI_ReadInt("Score");
- SetPlayerScore(playerid, PlayerInfo[playerid][Score]);
- PlayerInfo[playerid][Money] = INI_ReadInt("Money");
- ResetPlayerMoney(playerid);
- GivePlayerMoney(playerid, PlayerInfo[playerid][Money]);
- PlayerInfo[playerid][Deaths] = INI_ReadInt("Deaths");
- PlayerInfo[playerid][Kills] = INI_ReadInt("Kills");
- INI_WriteInt("IsLogged", 1);
- PlayerInfo[playerid][IsLogged] = 1;
- INI_Close();//now he/she is done!
- }
- else//ops! wrong password
- {
- ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Login", "Please insert your complicated password below.\n\nNOTE: Don't use this password in other servers!\n\nERROR: Wrong password, LEAVE if you are not the real owner of this account.", "Login", "Leave");
- }
- }
- }
- }
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- if(killerid != INVALID_PLAYER_ID)//adding deaths count to player
- {
- PlayerInfo[playerid][Deaths] ++;
- }
- if(playerid != INVALID_PLAYER_ID)//adding kills count to killer
- {
- PlayerInfo[killerid][Kills] ++;
- }
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(!strcmp("/stats", cmdtext))//just a simple stats command, well i recommend (zcmd or ycmd)
- {
- if(! IsPlayerLogged(playerid))//only logged in users can access this cmd
- {
- return SendClientMessage(playerid, 0x0BBF6AA, "ACCOUNT: You must be logged in.");
- }
- new string[129], pDEATHS, pNAME[MAX_PLAYER_NAME];
- GetPlayerName(playerid, pNAME, sizeof(pNAME));
- pDEATHS = PlayerInfo[playerid][Deaths];
- if(pDEATHS == 0)
- {
- pDEATHS = 1;
- }
- format( string,
- sizeof(string),
- "Username: %s | Id: %d | Money: $%d | Score: %d | Kills: %d | Deaths: %d | K/D Ratio: %0.2f | AdminLevel: %d | VIPLevel: %d",
- pNAME, playerid, GetPlayerMoney(playerid), GetPlayerScore(playerid), PlayerInfo[playerid][Kills], PlayerInfo[playerid][Deaths], Float:PlayerInfo[playerid][Kills]/Float:pDEATHS, PlayerInfo[playerid][Admin], PlayerInfo[playerid][Vip]);
- SendClientMessage( playerid,
- 0x0BBF6AA,
- string);
- }
- if(!strcmp("/admincommand", cmdtext))
- {
- if(! IsPlayerLogged(playerid))//only logged in users can access this cmd
- {
- return SendClientMessage(playerid, 0x0BBF6AA, "ACCOUNT: You must be logged in.");
- }
- if(GetPlayerAdminLevel(playerid) > 0)//means, admin level 1 or higher
- {
- //do your stuff
- }
- }
- if(!strcmp("/vipcommand", cmdtext))
- {
- if(! IsPlayerLogged(playerid))//only logged in users can access this cmd
- {
- return SendClientMessage(playerid, 0x0BBF6AA, "ACCOUNT: You must be logged in.");
- }
- if(GetPlayerVipLevel(playerid) > 0)//means, vip level 1 or higher
- {
- //do your stuff
- }
- }
- return 1;
- }
- //Usefull stock functions
- stock GetPlayerAdminLevel(playerid) return PlayerInfo[playerid][Admin];
- stock SetPlayerAdminLevel(playerid, level) return PlayerInfo[playerid][Admin] = level;
- stock GetPlayerVipLevel(playerid) return PlayerInfo[playerid][Vip];
- stock SetPlayerVipLevel(playerid, level) return PlayerInfo[playerid][Vip] = level;
- stock IsPlayerLogged(playerid) return PlayerInfo[playerid][IsLogged];
Advertisement
Add Comment
Please, Sign In to add comment