Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <zcmd>
- #include <a_mysql>
- #define SSCANF_NO_NICE_FEATURES
- #include <sscanf2>
- #define SERVER_NAME "SFM.lt | San Fierro Miestas"
- #define HOST "localhost"
- #define PASS ""
- #define USER "root"
- #define DB "sfm"
- #define DialogRegister 0
- #define DialogLogin 1
- #define DialogEmail 2
- #define DialogGender 3
- #define DialogAdminCode 4
- new MySQL:SQL;
- new bool:registered[MAX_PLAYERS];
- new bool:logged[MAX_PLAYERS];
- enum Player_Info
- {
- sID,
- pPassword,
- pMoney,
- pLevel,
- pSkin,
- pEmail[25],
- bool:pGender,
- pAdmin,
- pAdminCode,
- pInactivity
- };
- new PlayerInfo[MAX_PLAYERS][Player_Info];
- main()
- {
- print("\n----------------------------------");
- print(" SFM.lt | San Fierro Miestas");
- print("----------------------------------\n");
- }
- public OnGameModeInit()
- {
- SQL = mysql_connect(HOST, USER, PASS, DB);
- if(SQL == MYSQL_INVALID_HANDLE || mysql_errno(SQL) != 0)
- {
- print("Failed to connect with the database");
- SendRconCommand("exit");
- return 0;
- }
- SetGameModeText("SFM v0.0.0");
- AddPlayerClass(60,1731.6658,-1912.0126,13.5625,90.0,0,0,0,0,0,0);
- return 1;
- }
- public OnGameModeExit()
- {
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- SavePlayer(i);
- PlayerInfo[i][sID] = -1;
- }
- mysql_close(SQL);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- TogglePlayerSpectating(playerid, true);
- ResetAccount(playerid);
- new query[128];
- mysql_format(SQL, query, sizeof(query), "SELECT * FROM `players` WHERE `Username` = '%e'", GetName(playerid));
- mysql_tquery(SQL, query, "CheckAccount", "i", playerid);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- if(!logged[playerid]) return 1;
- SavePlayer(playerid);
- PlayerInfo[playerid][sID] = -1;
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- TogglePlayerControllable(playerid, true);
- SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
- SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
- ResetPlayerMoney(playerid);
- GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- return 1;
- }
- public OnVehicleSpawn(vehicleid)
- {
- return 1;
- }
- public OnVehicleDeath(vehicleid, killerid)
- {
- return 1;
- }
- public OnPlayerCommandPerformed(playerid, cmdtext[], success)
- {
- if(!success) return SendClientMessage(playerid, -1, "{ff0000}ERROR: {ffffff}That command is unknown");
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- return 1;
- }
- 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[])
- {
- switch(dialogid)
- {
- case DialogAdminCode:
- {
- if(!response) return Kick(playerid);
- if(PlayerInfo[playerid][pAdminCode] != strval(inputtext)) return ShowPlayerDialog(playerid, DialogAdminCode, DIALOG_STYLE_PASSWORD, "Admin Login", "{ff0000}Admin Code Isn't Correct!\n{ffffff}Type your Admin Code to verify.", "Login", "Quit");
- new query[128];
- mysql_format(SQL, query, sizeof(query), "SELECT * FROM `players` WHERE `Username` = '%e'", GetName(playerid));
- mysql_tquery(SQL, query,"LoadAccount", "i", playerid);
- TogglePlayerSpectating(playerid, false);
- SetSpawnInfo(playerid, 0, PlayerInfo[playerid][pSkin], -1731.6658,-1912.0126,13.5625,84.0176,0,0,0,0,0,0);
- SpawnPlayer(playerid);
- SendClientMessage(playerid, -1, "{1ac42b}Welcome to the Server, Have a Great Time!");
- logged[playerid] = true;
- }
- case DialogRegister:
- {
- //Register
- if(!response) return Kick(playerid);
- if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DialogRegister, DIALOG_STYLE_INPUT, "Register","{ff0000}The Password Is too Short!\nType any password to create a new account.", "Next", "Quit");
- PlayerInfo[playerid][pPassword] = udb_hash(inputtext);
- ShowPlayerDialog(playerid, DialogEmail, DIALOG_STYLE_INPUT, "Email", "Type your E-Mail Address.", "Next", "Quit");
- }
- case DialogLogin:
- {
- //Login
- if(!response) return Kick(playerid);
- if(udb_hash(inputtext) == PlayerInfo[playerid][pPassword]) return ShowPlayerDialog(playerid, DialogLogin, DIALOG_STYLE_PASSWORD, "Login", "{ff0000}The Password Is Incorrect!\nType your password to login into your account.", "Login", "Quit");
- if(PlayerInfo[playerid][pAdmin] > 0) return ShowPlayerDialog(playerid, DialogAdminCode, DIALOG_STYLE_PASSWORD, "Admin Login", "Type your Admin Code to verify.", "Login", "Quit");
- new query[128];
- mysql_format(SQL, query, sizeof(query), "SELECT * FROM `players` WHERE `Username` = '%e'", GetName(playerid));
- mysql_tquery(SQL, query,"LoadAccount", "i", playerid);
- TogglePlayerSpectating(playerid, false);
- SetSpawnInfo(playerid, 0, PlayerInfo[playerid][pSkin], -1731.6658,-1912.0126,13.5625,84.0176,0,0,0,0,0,0);
- SpawnPlayer(playerid);
- SendClientMessage(playerid, -1, "{1ac42b}Welcome to the Server, Have a Great Time!");
- logged[playerid] = true;
- }
- case DialogEmail:
- {
- if(!response) return Kick(playerid);
- if(strlen(inputtext) < 12) return ShowPlayerDialog(playerid, DialogEmail, DIALOG_STYLE_INPUT, "Email", "{ff0000}The E-Mail Address Is Invalid!\nType your E-Mail Address.", "Next", "Quit");
- new email[25];
- strcat(email, inputtext, sizeof(email));
- PlayerInfo[playerid][pEmail] = email;
- ShowPlayerDialog(playerid, DialogGender, DIALOG_STYLE_MSGBOX, "Gender", "Choose Your Gender.", "Male", "Female");
- }
- case DialogGender:
- {
- if(response)
- {
- PlayerInfo[playerid][pGender] = true; // Male
- PlayerInfo[playerid][pSkin] = 26;
- } else {
- PlayerInfo[playerid][pGender] = false; // Female
- PlayerInfo[playerid][pSkin] = 12;
- }
- TogglePlayerSpectating(playerid, false);
- SetSpawnInfo(playerid, 0, PlayerInfo[playerid][pSkin], 1731.6658,-1912.0126,13.5625,84.0176,0,0,0,0,0,0);
- SpawnPlayer(playerid);
- PlayerInfo[playerid][pMoney] = 3600;
- PlayerInfo[playerid][pLevel] = 1;
- SavePlayer(playerid);
- new query[128];
- mysql_format(SQL, query, sizeof(query), "SELECT * FROM `players` WHERE `Username` = '%e'", GetName(playerid));
- mysql_tquery(SQL, query,"LoadAccount", "i", playerid);
- SendClientMessage(playerid, -1, "{1ac42b}Welcome to the Server, Have a Great Time!");
- logged[playerid] = true;
- }
- }
- return 1;
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- return 1;
- }
- // ------ Commands ------
- // If u want to do only Admin command - If(PlayerInfo[playerid][pAdmin] < 2) return 0;
- CMD:giveadmin(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid) && PlayerInfo[playerid][pAdmin] != 255) return 1;
- new level, player;
- if(sscanf(params, "ud", player, level)) return SendClientMessage(playerid, -1, "{ffff00}Usage: {ffffff}/giveadmin [Player] [Level]");
- if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, -1, "{ff0000}ERROR: {ffffff}That player isn't online!");
- if(level < 0 || level > 255) return SendClientMessage(playerid, -1, "{ff0000}ERROR: {ffffff}Admin Level has to be between 0 and 255");
- if(PlayerInfo[player][pAdmin] == 0)
- PlayerInfo[player][pAdminCode] = RandomInRange(1000, 9999);
- PlayerInfo[player][pAdmin] = level;
- if(level == 0)
- PlayerInfo[playerid][pAdminCode] = 0;
- SavePlayer(playerid);
- new msg[256];
- format(msg, sizeof(msg), "{1ac42b}INFO: {ffffff}Succesffully set Admin Level %d to %s", level, GetName(player));
- SendClientMessage(playerid, -1, msg);
- format(msg, sizeof(msg), "{1ac42b}INFO: {ffffff}Admin %s set your Admin Level to %d, Congratulations!", GetName(playerid), level);
- SendClientMessage(playerid, -1, msg);
- format(msg, sizeof(msg), "{ff0000}IMPORTANT: {ffffff}Your Admin Code is %d, screenshot it, you will need it when you are logging in!", PlayerInfo[playerid][pAdminCode]);
- SendClientMessage(playerid, -1, msg);
- return 1;
- }
- CMD:veh(playerid, params[])
- {
- new Float:X, Float:Y, Float:Z;
- GetPlayerPos(playerid, X, Y, Z);
- CreateVehicle(411, X+2, Y, Z, 0.0, 3, 3, -1);
- return 1;
- }
- // ------ Forwards ------
- forward CheckAccount(playerid);
- public CheckAccount(playerid)
- {
- if(cache_num_rows() > 0)
- {
- cache_get_value_int(0, "Password", PlayerInfo[playerid][pPassword]);
- cache_get_value_int(0, "Admin", PlayerInfo[playerid][pAdmin]);
- cache_get_value_int(0, "AdminCode", PlayerInfo[playerid][pAdminCode]);
- ShowPlayerDialog(playerid, DialogLogin, DIALOG_STYLE_PASSWORD, "Login", "Type your password to login into your account.", "Login", "Quit");
- } else {
- ShowPlayerDialog(playerid, DialogRegister, DIALOG_STYLE_INPUT, "Register","Type any password to create a new account.", "Next", "Quit");
- }
- return 1;
- }
- forward LoadAccount(playerid);
- public LoadAccount(playerid)
- {
- cache_get_value_int(0, "ID", PlayerInfo[playerid][sID]);
- cache_get_value_int(0, "Money", PlayerInfo[playerid][pMoney]);
- cache_get_value_int(0, "Level", PlayerInfo[playerid][pLevel]);
- cache_get_value_int(0, "Skin", PlayerInfo[playerid][pSkin]);
- cache_get_value_int(0, "Inactivity", PlayerInfo[playerid][pInactivity]);
- cache_get_value_bool(0, "Gender", PlayerInfo[playerid][pGender]);
- cache_get_value(0, "Email", PlayerInfo[playerid][pEmail]);
- return 1;
- }
- // ------ Stock ------
- stock RandomInRange(min, max)
- {
- new number;
- do {
- number = random(max);
- } while(number < min || number > max);
- return number;
- }
- stock udb_hash(const 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 GetName(playerid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, sizeof(name));
- return name;
- }
- stock SavePlayer(playerid) {
- new query[256], dest[1024];
- if (!registered[playerid] && !logged[playerid])
- mysql_format(SQL, dest, sizeof(dest), "INSERT INTO `players` (`Username`, `Password`, `Skin`, `Money`, `Level`, `Email`, `Gender`) VALUES ('%e','%d','%d','%d','%d','%e','%d')", GetName(playerid), PlayerInfo[playerid][pPassword], PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pMoney], \
- PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pEmail], PlayerInfo[playerid][pGender]);
- else {
- mysql_format(SQL, query, sizeof(query), "UPDATE `players` SET `Username` = '%e', `Password` = '%d', `Skin` = '%d', `Money` = '%d', `Level` = '%d',", GetName(playerid), PlayerInfo[playerid][pPassword], PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pLevel]);
- strcat(dest, query, sizeof(dest));
- mysql_format(SQL, query, sizeof(query), "`Email` = '%e', `Gender` = '%d', `Admin` = '%d', `AdminCode` = '%d', `Inactivity` = '%d'WHERE `ID` = '%d' LIMIT 1", PlayerInfo[playerid][pEmail], PlayerInfo[playerid][pGender], PlayerInfo[playerid][pAdmin], PlayerInfo[playerid][pAdminCode], PlayerInfo[playerid][pInactivity], PlayerInfo[playerid][sID]);
- strcat(dest, query, sizeof(dest));
- }
- mysql_tquery(SQL, dest);
- }
- stock ResetAccount(playerid)
- {
- new example[25];
- registered[playerid] = false;
- PlayerInfo[playerid][sID] = -1;
- PlayerInfo[playerid][pSkin] = 1;
- PlayerInfo[playerid][pMoney] = 0;
- PlayerInfo[playerid][pLevel] = 0;
- PlayerInfo[playerid][pGender] = false;
- PlayerInfo[playerid][pEmail] = example;
- PlayerInfo[playerid][pAdmin] = 0;
- PlayerInfo[playerid][pAdminCode] = 0;
- PlayerInfo[playerid][pInactivity] = 0;
- SetPlayerSkin(playerid, 1);
- SetPlayerScore(playerid, 0);
- }
Advertisement
Add Comment
Please, Sign In to add comment