Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Generation X Roleplay - Allura */
- #include <a_samp>
- #include <a_mysql>
- #include <zcmd>
- #include <sscanf2>
- // Database Information
- #define MYSQL_HOST "localhost"
- #define MYSQL_USER "root"
- #define MYSQL_DATABASE "genx"
- #define MYSQL_PASSWORD ""
- // New Account Variables
- #define SPAWN_X 10.0
- #define SPAWN_Y 10.0
- #define SPAWN_Z 14.0
- #define SPAWN_A 0.0
- #define starterCash 500
- // Enums
- enum
- {
- LoginDialog,
- RegisterDialog,
- GenderDialog,
- RegisterConfirm
- };
- enum PlayerData
- {
- ID,
- Name[MAX_PLAYER_NAME],
- Password[129],
- Gender[8],
- IP[16],
- AdminLevel,
- Cash,
- Float:posX,
- Float:posY,
- Float:posZ,
- Float:posA
- };
- new Player[MAX_PLAYERS][PlayerData];
- new LoggedIn[MAX_PLAYERS];
- new mysql;
- new MaleSkins[][] =
- {
- {6}, // Emmet
- {29}, // Drug Dealer
- {48}, // hmyst
- };
- new FemaleSkins[][] =
- {
- {40}, // Normal Ped
- {41}, // Normal Ped
- {56}, // Normal Ped
- };
- native WP_Hash(buffer[], len, const str[]);
- main()
- {
- print("\n----------------------------------");
- print("Generation X Roleplay Created by Allura");
- print("----------------------------------\n");
- }
- public OnGameModeInit()
- {
- mysql_log(LOG_ALL);
- mysql = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DATABASE, MYSQL_PASSWORD);
- if(mysql_errno() != 0)
- {
- printf("[MySQL] The connection has failed.");
- mysql_close(mysql);
- }
- else
- {
- printf("[MySQL] Established successful connection to the database.");
- }
- SetTimer("AccountSaveTimer", 900000, true); // Every 15 minutes
- return true;
- }
- public OnGameModeExit()
- {
- mysql_close(mysql);
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- new query[200], playername[MAX_PLAYER_NAME];
- TogglePlayerSpectating(playerid, true);
- GetPlayerName(playerid, playername, sizeof(playername));
- mysql_format(mysql, query, sizeof(query), "SELECT `Password`, `ID`, `Gender` FROM `accounts` WHERE `Name` = '%e' LIMIT 1", playername);
- mysql_tquery(mysql, query, "OnAccountCheck", "i", playerid);
- return true;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- SaveAccount(playerid);
- LoggedIn[playerid] = 0;
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- return true;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- return 1;
- }
- public OnVehicleSpawn(vehicleid)
- {
- return 1;
- }
- public OnVehicleDeath(vehicleid, killerid)
- {
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- return 0;
- }
- public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
- {
- return 1;
- }
- public OnPlayerExitVehicle(playerid, vehicleid)
- {
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- return 1;
- }
- public OnPlayerEnterCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerEnterRaceCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveRaceCheckpoint(playerid)
- {
- return 1;
- }
- public OnRconCommand(cmd[])
- {
- return 1;
- }
- public OnPlayerRequestSpawn(playerid)
- {
- return 1;
- }
- public OnObjectMoved(objectid)
- {
- return 1;
- }
- public OnPlayerObjectMoved(playerid, objectid)
- {
- return 1;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- return 1;
- }
- public OnVehicleMod(playerid, vehicleid, componentid)
- {
- return 1;
- }
- public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
- {
- return 1;
- }
- public OnVehicleRespray(playerid, vehicleid, color1, color2)
- {
- return 1;
- }
- public OnPlayerSelectedMenuRow(playerid, row)
- {
- return 1;
- }
- public OnPlayerExitedMenu(playerid)
- {
- return 1;
- }
- public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
- {
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- return 1;
- }
- public OnRconLoginAttempt(ip[], password[], success)
- {
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- return 1;
- }
- public OnPlayerStreamIn(playerid, forplayerid)
- {
- return 1;
- }
- public OnPlayerStreamOut(playerid, forplayerid)
- {
- return 1;
- }
- public OnVehicleStreamIn(vehicleid, forplayerid)
- {
- return 1;
- }
- public OnVehicleStreamOut(vehicleid, forplayerid)
- {
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- new string[250];
- switch(dialogid)
- {
- case LoginDialog:
- {
- if(!response) KickPlayer(playerid);
- new hashpass[129], query[300], playername[MAX_PLAYER_NAME];
- GetPlayerName(playerid, playername, sizeof(playername));
- WP_Hash(hashpass, sizeof(hashpass), inputtext);
- if(!strcmp(hashpass, Player[playerid][Password]))
- {
- mysql_format(mysql, query, sizeof(query), "SELECT * FROM `accounts` WHERE `Name` = '%e' LIMIT 1", playername);
- mysql_tquery(mysql, query, "OnAccountLoad", "i", playerid);
- }
- else
- {
- format(string, sizeof(string), "Sorry, but you've entered an invalid password!\nYour username already exists.\nPlease enter your correct password:", GetName(playerid));
- ShowPlayerDialog(playerid, LoginDialog, DIALOG_STYLE_PASSWORD, "GX:RP - Citizen Login", string, "Login", "Quit");
- }
- }
- case RegisterDialog:
- {
- if(!response) return Kick(playerid);
- if(strlen(inputtext) < 10 || strlen(inputtext) > 29)
- {
- format(string, sizeof(string), "Your password can only be between 10 and 29 characters long.\nYour username does not exist.\nPlease enter a password to create an account:", GetName(playerid));
- ShowPlayerDialog(playerid, RegisterDialog, DIALOG_STYLE_PASSWORD, "GX:RP - Immigration Office", string, "Register", "Quit");
- }
- else
- {
- new query[512], playername[MAX_PLAYER_NAME], playerip[16];
- GetPlayerName(playerid, playername, sizeof(playername));
- GetPlayerIp(playerid, playerip, sizeof(playerip));
- WP_Hash(Player[playerid][Password], 129, inputtext);
- mysql_format(mysql, query, sizeof(query), "INSERT INTO `accounts` (`Name`, `Password`, `IP`, `Gender`, `AdminLevel`, `Cash`, `PosX`, `PosY`, `PosZ`, `PosA`) VALUES ('%e', '%e', '%e', 'None', 0, %d, %f, %f, %f, %f)", playername, Player[playerid][Password], playerip, starterCash, SPAWN_X, SPAWN_Y, SPAWN_Z, SPAWN_A);
- mysql_tquery(mysql, query, "OnAccountRegister", "i", playerid);
- }
- }
- case GenderDialog:
- {
- new query[300];
- if(!response)
- {
- mysql_format(mysql, query, sizeof(query), "UPDATE `accounts` SET `Gender` = 'Female' WHERE `ID` = %d", Player[playerid][ID]);
- mysql_tquery(mysql, query, "", "");
- ShowPlayerDialog(playerid, RegisterConfirm, DIALOG_STYLE_MSGBOX, "GX:RP Immigration Office", "Your character is now set as Female.\nYou have successfully completed the registration process.\nWe hope you enjoy your experience here.!", "Continue", "");
- }
- else
- {
- mysql_format(mysql, query, sizeof(query), "UPDATE `accounts` SET `Gender` = 'Male' WHERE `ID` = %d", Player[playerid][ID]);
- mysql_tquery(mysql, query, "", "");
- ShowPlayerDialog(playerid, RegisterConfirm, DIALOG_STYLE_MSGBOX, "GX:RP Immigration Office", "Your character is now set as Male.\nYou have successfully completed the registration process.\nWe hope you enjoy your experience here.", "Continue", "");
- }
- }
- case RegisterConfirm:
- {
- if(!response)
- {
- }
- else
- {
- format(string, sizeof(string), "To confirm your information and load your account, you're required to login after registration\nYou can now continue to enter your password:", GetName(playerid));
- ShowPlayerDialog(playerid, LoginDialog, DIALOG_STYLE_PASSWORD, "GX:RP - Citizen Login", string, "Login", "Quit");
- }
- }
- }
- return false; // For filterscripts..
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- return 1;
- }
- /* Custom Functions */
- forward OnAccountCheck(playerid);
- public OnAccountCheck(playerid)
- {
- new rows, fields, string[200];
- cache_get_data(rows, fields, mysql);
- LoggedIn[playerid] = 0;
- if(rows)
- {
- cache_get_field_content(0, "Password", Player[playerid][Password], mysql, 129);
- Player[playerid][ID] = cache_get_field_content_int(0, "ID");
- cache_get_field_content(0, "Gender", Player[playerid][Gender], mysql, 8);
- if(strcmp(Player[playerid][Gender], "Male") || strcmp(Player[playerid][Gender], "Female"))
- {
- ShowPlayerDialog(playerid, GenderDialog, DIALOG_STYLE_MSGBOX, "GX:RP - Immigration Office", "Please choose a character gender.\nYou cannot change this!", "Male", "Female");
- }
- else
- {
- format(string, sizeof(string), "Welcome back, %s!\nYour username already exists.\nPlease enter your password:", GetName(playerid));
- ShowPlayerDialog(playerid, LoginDialog, DIALOG_STYLE_PASSWORD, "GX:RP - Citizen Login", string, "Login", "Quit");
- }
- }
- else
- {
- format(string, sizeof(string), "Welcome, %s!\nYour username does not exist.\nPlease enter a password to create an account:", GetName(playerid));
- ShowPlayerDialog(playerid, RegisterDialog, DIALOG_STYLE_PASSWORD, "GX:RP - Immigration Office", string, "Register", "Quit");
- }
- return true;
- }
- forward OnAccountRegister(playerid);
- public OnAccountRegister(playerid)
- {
- Player[playerid][ID] = cache_insert_id();
- printf("[Registration] New account registered. Database ID: [%d]", Player[playerid][ID]);
- ShowPlayerDialog(playerid, GenderDialog, DIALOG_STYLE_MSGBOX, "GX:RP - Immigration Office", "Please choose a character gender.\nYou cannot change this!", "Male", "Female");
- return true;
- }
- forward OnAccountLoad(playerid);
- public OnAccountLoad(playerid)
- {
- cache_get_field_content(0, "Name", Player[playerid][Name], mysql, MAX_PLAYER_NAME);
- cache_get_field_content(0, "IP", Player[playerid][IP], mysql, 16);
- cache_get_field_content(0, "Gender", Player[playerid][Gender], mysql, 8);
- Player[playerid][AdminLevel] = cache_get_field_content_int(0, "AdminLevel");
- Player[playerid][Cash] = cache_get_field_content_int(0, "Cash");
- Player[playerid][posX] = cache_get_field_content_float(0, "PosX");
- Player[playerid][posY] = cache_get_field_content_float(0, "PosY");
- Player[playerid][posZ] = cache_get_field_content_float(0, "PosZ");
- Player[playerid][posA] = cache_get_field_content_float(0, "PosA");
- TogglePlayerSpectating(playerid, false);
- GivePlayerMoney(playerid, Player[playerid][Cash]);
- SetSpawnInfo(playerid, 0, 23, Player[playerid][posX], Player[playerid][posY], Player[playerid][posZ], Player[playerid][posA], 0, 0, 0, 0, 0, 0);
- SpawnPlayer(playerid);
- SendClientMessage(playerid, -1, "You have successfully logged in.");
- LoggedIn[playerid] = 1;
- return true;
- }
- forward SaveAccount(playerid);
- public SaveAccount(playerid)
- {
- new query[512], Float:pos[4];
- GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
- GetPlayerFacingAngle(playerid, pos[3]);
- mysql_format(mysql, query, sizeof(query), "UPDATE `accounts` SET `Name` = '%e', `Password` = '%e', `Gender` = '%e', `AdminLevel` = %d, `Cash` = %d, `PosX` = %f, `PosY` = %f, `PosZ` = %f, `PosA` = %f WHERE `ID` = %d",
- Player[playerid][Name], Player[playerid][Password], Player[playerid][Gender], Player[playerid][AdminLevel], GetPlayerMoney(playerid), pos[0], pos[1], pos[2], pos[3], Player[playerid][ID]);
- mysql_tquery(mysql, query, "", "");
- return true;
- }
- /* Timers */
- forward AccountSaveTimer();
- public AccountSaveTimer()
- {
- for(new i=0; i < MAX_PLAYERS; i++)
- {
- if(LoggedIn[i] > 0)
- {
- SaveAccount(i);
- }
- }
- }
- /* End of Timers */
- /* Commands */
- CMD:stats(playerid, params[])
- {
- new string[126];
- SendClientMessage(playerid, -1, "[--- User Statistics ---]");
- format(string, sizeof(string), "[ID: %d] [Name: %s] [IP: %s] [Cash: %d] [Gender: %s]", Player[playerid][ID], Player[playerid][Name], Player[playerid][IP], Player[playerid][Cash], Player[playerid][Gender]);
- SendClientMessage(playerid, -1, string);
- return 1;
- }
- /* End of Commands */
- stock GetName(playerid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid,name,sizeof(name));
- for(new i = 0; i < MAX_PLAYER_NAME; i++)
- {
- if(name[i] == '_') name[i] = ' ';
- }
- return name;
- }
- stock KickPlayer(playerid)
- {
- SaveAccount(playerid);
- Kick(playerid);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement