Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <a_mysql>
- #include <zcmd>
- #include <sscanf2>
- native WP_Hash(buffer[], len, const str[]);
- #define SQL_HOST "Hidden for Security"
- #define SQL_USER "Hidden for Security"
- #define SQL_PASS "Hidden for Security"
- #define SQL_DATABASE "Hidden for Security"
- #define adminpassword "testpassword"
- new SQL = -1;
- new MySQLCheck[MAX_PLAYERS];
- enum pInfo {
- ID,
- Name[MAX_PLAYER_NAME],
- Password[129],
- Level,
- Admin,
- AdminTitle[64],
- Float:Health,
- Float:Armour,
- bool:IsLoggedIn,
- bool:IsRegistered,
- LoginAttempts,
- PosX,
- PosY,
- PosZ,
- }
- new Player[MAX_PLAYERS][pInfo];
- enum dialogs {
- DIALOG_REGISTER,
- DIALOG_LOGIN,
- DIALOG_UNUSED,
- }
- forward OnAccountRetrieve(playerid, mysql_check);
- public OnAccountRetrieve(playerid, mysql_check)
- {
- if(mysql_check != MySQLCheck[playerid])
- {
- Kick(playerid);
- }
- new str[128];
- if(cache_num_rows() > 0)
- {
- SetPlayerData(playerid);
- format(str, sizeof(str), "MySQL Account and Admin System, Welcome %s. Please login below:", Player[playerid][Name]);
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", str, "Continue", "Cancel");
- Player[playerid][IsRegistered] = true;
- }
- else
- {
- format(str, sizeof(str), "{FFFF00}Quantum Gaming Netowrk\n{FFFFFF} Welcome %s. Please register below:", Player[playerid][Name]);
- ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", str, "Continue", "Cancel");
- Player[playerid][IsRegistered] = false;
- }
- return 1;
- }
- forward OnPlayerRegistration(playerid);
- public OnPlayerRegistration(playerid)
- {
- Player[playerid][ID] = cache_insert_id();
- //ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Registration", "Account successfully registered, you have been automatically logged in.", "Okay", "");
- SendClientMessage(playerid, 0xFF0000FF, "You are now registered within the database, You have been logged in automatically");
- Player[playerid][IsLoggedIn] = true;
- Player[playerid][IsRegistered] = true;
- //SetSpawnInfo(playerid, 0, 20,2177.6423,-1770.3905,13.5434,0.0,0,0,0,0,0,0);
- SetPlayerPos(playerid, 2177.6423, -1770.3905, 13.5434);
- Player[playerid][Health] = 100.00;
- Player[playerid][Armour] = 0.00;
- Player[playerid][Level] = 1;
- SpawnPlayer(playerid);
- return 1;
- }
- forward _KickPlayerDelayed(playerid);
- public _KickPlayerDelayed(playerid)
- {
- Kick(playerid);
- return 1;
- }
- main()
- {
- print("\n----------------------------------");
- print(" SERVER GAMEMODE: Roleplay");
- print("----------------------------------\n");
- }
- public OnGameModeInit()
- {
- SetGameModeText("MySQL v0.1");
- SQL = mysql_connect(SQL_HOST, SQL_USER, SQL_DATABASE, SQL_PASS);
- //mysql_debug(1);
- mysql_log(LOG_ERROR | LOG_WARNING, LOG_TYPE_HTML);
- SetupPlayerTable();
- return 1;
- }
- public OnGameModeExit()
- {
- mysql_close();
- 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[128];
- MySQLCheck[playerid]++;
- for(new pInfo:e; e < pInfo; ++e)
- Player[playerid][e] = 0;
- GetPlayerName(playerid, Player[playerid][Name], MAX_PLAYER_NAME);
- mysql_format(SQL, query, sizeof(query), "SELECT * FROM `players` WHERE `username` = '%e' LIMIT 1", Player[playerid][Name]);
- mysql_tquery(SQL, query, "OnAccountRetrieve","dd", playerid, MySQLCheck[playerid]);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- SavePlayerData(playerid);
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- new str[128];
- SetPlayerHealth(playerid, Player[playerid][Health]);
- SetPlayerArmour(playerid, Player[playerid][Armour]);
- ShowPlayerDialog(playerid, 200, DIALOG_STYLE_MSGBOX,"MySQL Account and Admin System","This is a simple account system, Hopefully you got it right!","Ok","Cancel");
- if(Player[playerid][Admin] >= 1)
- {
- format(str, 128, "Notice: You're logged in as a Level %d Admin!", Player[playerid][Admin]);
- SendClientMessage(playerid, -1, str);
- }
- return 1;
- }
- 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[])
- {
- if (strcmp("/mycommand", cmdtext, true, 10) == 0)
- {
- // Do something here
- return 1;
- }
- 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[])
- {
- switch(dialogid)
- {
- case DIALOG_LOGIN:
- {
- if(!response)
- {
- Kick(playerid);
- }
- if(strlen(inputtext) <= 5)
- {
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login",
- "Your password must be longer than 5 characters!\nPlease enter your password in the field below:",
- "Login", "Abort");
- }
- new encoded_pass[129];
- WP_Hash(encoded_pass, sizeof(encoded_pass), inputtext);
- if(strcmp(encoded_pass, Player[playerid][Password]) == 0)
- {
- ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Success!", "You have successfully logged in!", "Continue", "");
- Player[playerid][IsLoggedIn] = true;
- /*SetSpawnInfo(playerid, 0, 20, Player[playerid][PosX], Player[playerid][PosY], Player[playerid][PosZ],0.0,0,0,0,0,0,0);*/
- SpawnPlayer(playerid);
- SetPlayerPos(playerid, Player[playerid][PosX], Player[playerid][PosY], Player[playerid][PosZ]);
- }
- else
- {
- Player[playerid][LoginAttempts]++;
- if(Player[playerid][LoginAttempts] >= 3)//This if statement determines if you have enter the password incorrectly too many time.
- {
- ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Error","You have mistyped your password too often (3 times).", "Okay", "");
- DelayedKick(playerid);
- }
- else
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Error","Wrong password!\nPlease enter your password in the field below:", "Login", "Abort");
- }
- }
- case DIALOG_REGISTER:
- {
- if(!response)
- return Kick(playerid);
- if(strlen(inputtext) <= 5)
- {
- ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration",
- "Your password must be longer than 5 characters!\nPlease enter your password in the field below:",
- "Continue", "Cancel");
- }
- new query[256];
- WP_Hash(Player[playerid][Password], 129, inputtext);
- mysql_format(SQL, query, sizeof(query), "INSERT INTO `players` (`username`, `password`) VALUES ('%e', '%s')", Player[playerid][Name], Player[playerid][Password]);
- mysql_tquery(SQL, query, "OnPlayerRegistration", "d", playerid);
- }
- default:
- return 0;
- }
- return 1;
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- return 1;
- }
- /* */
- CMD:adminoverride(playerid, params[])
- {
- new override[64], OverrideAttempts;
- if(sscanf(params,"s[64]",override)) return SendClientMessage(playerid, -1, "USAGE:/adminoverride [Password]");
- if(!strcmp(override, adminpassword))
- {
- Player[playerid][Admin] = 7;
- SendClientMessage(playerid, -1, "NOTICE: You're now a level 7 administrator!");
- }
- else
- {
- SendClientMessage(playerid, -1, "NOTICE: Wrong Password!");
- OverrideAttempts ++;
- }
- if(OverrideAttempts == 3)
- {
- DelayedKick(playerid);
- }
- return 1;
- }
- CMD:setadmintitle(playerid, params[])
- {
- new str[128], target,pName[MAX_PLAYER_NAME], targetname[MAX_PLAYER_NAME],admtitle[64];
- if(Player[playerid][Admin] != 7) return SendClientMessage(playerid, -1, "SERVER:You're not admin!");
- if(sscanf(params, "is[64]", target,admtitle)) return SendClientMessage(playerid, -1, "SERVER:/setadmintitle [ID] [Title]");
- {
- GetPlayerName(target, targetname, sizeof(targetname));
- GetPlayerName(playerid, pName, sizeof(pName));
- format(str, 128, "AdmWarn: %s has set %s's admin title to %s", pName, targetname, admtitle);
- MessageToAdmins(-1, str);
- Player[target][AdminTitle] = admtitle;
- }
- return 1;
- }
- /* */
- stock SetPlayerData(playerid)
- {
- Player[playerid][ID] = cache_get_field_content_int(0, "id");
- cache_get_field_content(0, "password", Player[playerid][Password], SQL, 129);
- //The password is a varchar so you need to use cache_get_field_content
- Player[playerid][Admin] = cache_get_field_content_int(0,"admin");
- Player[playerid][Health] = cache_get_field_content_float(0, "health");
- Player[playerid][Armour] = cache_get_field_content_float(0, "armour");
- cache_get_field_content(0, "admintitle", Player[playerid][AdminTitle], SQL, 64);
- //the admin title is a varchar so it is again retrieved by cache_get_field_content.
- Player[playerid][Level] = cache_get_field_content_int(0,"level");
- //the level is an integer.
- return 1;
- }
- stock SavePlayerData(playerid)
- {
- if(Player[playerid][IsLoggedIn] == false)
- return 0;
- new Float:GetHealth, Float:GetArmour, admtitle2;
- admtitle2 = Player[playerid][AdminTitle];
- GetPlayerHealth(playerid, GetHealth);
- GetPlayerArmour(playerid, GetArmour);
- new Float: X, Float: Y, Float: Z;
- GetPlayerPos(playerid, X, Y, Z);
- new query[1000];
- mysql_format(SQL, query, sizeof(query), "UPDATE `players` SET `admin` = '%d', `health` = '%f', `armour` = '%f', `admintitle` = '%s', `level` = '%d',`PosX` = '%f',`PosY` = '%f', `PosZ` = '%f' WHERE `id` = '%d' LIMIT 1",
- Player[playerid][Admin],GetHealth,GetArmour, admtitle2,Player[playerid][Level], X, Y, Z, Player[playerid][ID]);
- mysql_tquery(SQL, query, "", "");
- return 1;
- }
- stock SetupPlayerTable()
- {
- mysql_query(SQL, "CREATE TABLE IF NOT EXISTS `players` (`id` int(11) NOT NULL auto_increment PRIMARY KEY,`username` varchar(30) NOT NULL,`password` varchar(130) NOT NULL,`admin` int(10) NOT NULL default '0', `health` float(10) NOT NULL default '100.00', `armour` float(10) NOT NULL default '0.00',`admintitle` varchar(64) NOT NULL default 'None',`level` int(10) NOT NULL default '0')", false);
- return 1;
- }
- stock DelayedKick(playerid, time=500)
- {
- SetTimerEx("_KickPlayerDelayed", time, false, "d", playerid);
- return 1;
- }
- stock MessageToAdmins(color,const string[])
- {
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(IsPlayerConnected(i) == 1)
- {
- if(Player[i][Admin] >= 1)
- {
- SendClientMessage(i, color, string);
- }
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement