Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <a_mysql>
- #include <izcmd>
- #include <foreach>
- #include <sscanf2>
- #include <easyDialog>
- #include <streamer>
- #define SQL_HOST "127.0.0.1"
- #define SQL_USER "root"
- #define SQL_PASS ""
- #define SQL_DB "sg"
- #define SERVER_NAME "StarGaming"
- #define SERVER_MODE "SG:RP"
- #define SERVER_VERSION "v0.0.1"
- #define LOGIN_SUCCESS "Ingreso exitoso."
- #define LOGIN_TEXT_1 "Ingresa tu password:"
- #define BAD_LOGIN_2 "Contraseña incorrecta"
- #define SECONDS_TO_LOGIN (30) // tiempo máximo de log
- #define DEFAULT_POS_X (1958.3783)
- #define DEFAULT_POS_Y (1343.1572)
- #define DEFAULT_POS_Z (15.3746)
- #define DEFAULT_POS_A (270.1425)
- #define COLOR_LIGHTRED (0xFF6347AA)
- #define COLOR_ORANGE (0xFF9900FF)
- #define COLOR_GREY (0xAFAFAFAA)
- #define COLOR_PURPLE (0xC2A2DAAA)
- #define COLOR_FADE1 (0xFFFFFFFF)
- #define COLOR_FADE2 (0xC8C8C8C8)
- #define COLOR_FADE3 (0xAAAAAAAA)
- #define COLOR_FADE4 (0x8C8C8C8C)
- #define COLOR_FADE5 (0x6E6E6E6E)
- #if !defined IsValidVehicle
- native IsValidVehicle(vehicleid);
- #endif
- new
- MySQL: g_SQL,
- g_MysqlRaceCheck[MAX_PLAYERS];
- new
- String[2048],
- query[1024];
- new
- gmLoaded = 0;
- enum pData
- {
- ID,
- Name[MAX_PLAYER_NAME],
- Password[65],
- Salt[17],
- Admin,
- Skin,
- Float: Health,
- Float: Armor,
- Money,
- BankMoney,
- Float: X_Pos,
- Float: Y_Pos,
- Float: Z_Pos,
- Float: A_Pos,
- Interior,
- Cache: Cache_ID,
- bool: LoggedIn,
- LoginAttempts,
- LoginTimer
- };
- new Player[MAX_PLAYERS][pData];
- main()
- {
- }
- public OnGameModeInit()
- {
- new MySQLOpt: option_id = mysql_init_options();
- mysql_set_option(option_id, AUTO_RECONNECT, true);
- g_SQL = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DB, option_id);
- if (g_SQL == MYSQL_INVALID_HANDLE || mysql_errno(g_SQL) != 0)
- {
- print("MySQL falló.");
- SendRconCommand("exit");
- return 1;
- }
- print("MySQL funcionando.");
- SetGameModeText(""SERVER_MODE" "SERVER_VERSION"");
- AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
- gmLoaded = 1;
- return 1;
- }
- public OnGameModeExit()
- {
- for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
- {
- if (IsPlayerConnected(i))
- {
- OnPlayerDisconnect(i, 1);
- }
- }
- mysql_close(g_SQL);
- DestroyLog(adminlog);
- 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)
- {
- if(gmLoaded == 0)
- {
- SendClientMessage(playerid, -1, "Servidor iniciandose.");
- Kick(playerid);
- }
- g_MysqlRaceCheck[playerid]++;
- static const empty_player[pData];
- Player[playerid] = empty_player;
- GetPlayerRPName(playerid, Player[playerid][Name], MAX_PLAYER_NAME);
- mysql_format(g_SQL, query, 103, "SELECT * FROM `players` WHERE `Name` = '%e' LIMIT 1", pName(playerid));
- mysql_tquery(g_SQL, query, "OnPlayerDataLoaded", "dd", playerid, g_MysqlRaceCheck[playerid]);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- g_MysqlRaceCheck[playerid]++;
- UpdatePlayerData(playerid, reason);
- if (cache_is_valid(Player[playerid][Cache_ID]))
- {
- cache_delete(Player[playerid][Cache_ID]);
- Player[playerid][Cache_ID] = MYSQL_INVALID_CACHE;
- }
- if (Player[playerid][LoginTimer])
- {
- KillTimer(Player[playerid][LoginTimer]);
- Player[playerid][LoginTimer] = 0;
- }
- Player[playerid][LoggedIn] = false;
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- SetPlayerInterior(playerid, Player[playerid][Interior]);
- SetPlayerPos(playerid, Player[playerid][X_Pos], Player[playerid][Y_Pos], Player[playerid][Z_Pos]);
- SetPlayerFacingAngle(playerid, Player[playerid][A_Pos]);
- SetCameraBehindPlayer(playerid);
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- return 1;
- }
- public OnVehicleSpawn(vehicleid)
- {
- return 1;
- }
- public OnVehicleDeath(vehicleid, killerid)
- {
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- format(String, 128, "%s dice: %s", Player[playerid][Name], text);
- SendLocalMessage(30.0, playerid, -1, String);
- if(!IsPlayerInAnyVehicle(playerid)) ApplyAnimation(playerid, "PED", "IDLE_CHAT", 4.1, 0, 1, 1, 1, 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 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 OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- return 1;
- }
- forward OnPlayerDataLoaded(playerid, race_check);
- public OnPlayerDataLoaded(playerid, race_check)
- {
- if (race_check != g_MysqlRaceCheck[playerid]) return Kick(playerid);
- if(cache_num_rows() > 0)
- {
- cache_get_value(0, "Password", Player[playerid][Password], 65);
- cache_get_value(0, "Salt", Player[playerid][Salt], 17);
- Player[playerid][Cache_ID] = cache_save();
- format(String, 115, "La cuenta %s está registrada, ingresa la password:", Player[playerid][Name]);
- Dialog_Show(playerid, Login, DIALOG_STYLE_PASSWORD, "Login", String, "Login", "Abortar");
- Player[playerid][LoginTimer] = SetTimerEx("OnLoginTimeout", SECONDS_TO_LOGIN * 1000, false, "d", playerid);
- }
- else
- {
- format(String, sizeof String, "Bienvenido %s, ingresa tu password:", Player[playerid][Name]);
- Dialog_Show(playerid, Register, DIALOG_STYLE_PASSWORD, "Registro", String, "Registrar", "Abortar");
- }
- return 1;
- }
- forward OnLoginTimeout(playerid);
- public OnLoginTimeout(playerid)
- {
- Player[playerid][LoginTimer] = 0;
- Dialog_Show(playerid, Null, DIALOG_STYLE_MSGBOX, "Login", ""BAD_LOGIN_2"", "OK", "");
- DelayedKick(playerid);
- return 1;
- }
- forward OnPlayerRegister(playerid);
- public OnPlayerRegister(playerid)
- {
- Player[playerid][ID] = cache_insert_id();
- Dialog_Show(playerid, Null, DIALOG_STYLE_MSGBOX, "Registro", ""SUCCESS_REGISTER"", "OK", "");
- Player[playerid][LoggedIn] = true;
- Player[playerid][X_Pos] = DEFAULT_POS_X;
- Player[playerid][Y_Pos] = DEFAULT_POS_Y;
- Player[playerid][Z_Pos] = DEFAULT_POS_Z;
- Player[playerid][A_Pos] = DEFAULT_POS_A;
- SetSpawnInfo(playerid, NO_TEAM, 0, Player[playerid][X_Pos], Player[playerid][Y_Pos], Player[playerid][Z_Pos], Player[playerid][A_Pos], 0, 0, 0, 0, 0, 0);
- SpawnPlayer(playerid);
- return 1;
- }
- forward _KickPlayerDelayed(playerid);
- public _KickPlayerDelayed(playerid)
- {
- Kick(playerid);
- return 1;
- }
- AssignPlayerData(playerid)
- {
- cache_get_value_int(0, "ID", Player[playerid][ID]);
- cache_get_value_int(0, "Admin", Player[playerid][Admin]);
- cache_get_value_int(0, "Skin", Player[playerid][Skin]);
- cache_get_value_float(0, "Health", Player[playerid][Health]);
- cache_get_value_float(0, "Armor", Player[playerid][Armor]);
- cache_get_value_int(0, "Money", Player[playerid][Money]);
- cache_get_value_int(0, "BankMoney", Player[playerid][BankMoney]);
- cache_get_value_float(0, "X", Player[playerid][X_Pos]);
- cache_get_value_float(0, "Y", Player[playerid][Y_Pos]);
- cache_get_value_float(0, "Z", Player[playerid][Z_Pos]);
- cache_get_value_float(0, "Angle", Player[playerid][A_Pos]);
- cache_get_value_int(0, "Interior", Player[playerid][Interior]);
- SetMoney(playerid, Player[playerid][Money]);
- SetPlayerSkin(playerid, Player[playerid][Skin]);
- SetHealth(playerid, Player[playerid][Health]);
- SetArmor(playerid, Player[playerid][Armor]);
- return 1;
- }
- DelayedKick(playerid, time = 500)
- {
- SetTimerEx("_KickPlayerDelayed", time, false, "d", playerid);
- return 1;
- }
- UpdatePlayerData(playerid, reason)
- {
- if(Player[playerid][LoggedIn] == false) return 0;
- GetPlayerHealth(playerid, Player[playerid][Health]);
- GetPlayerArmour(playerid, Player[playerid][Armor]);
- if(reason == 1)
- {
- GetPlayerPos(playerid, Player[playerid][X_Pos], Player[playerid][Y_Pos], Player[playerid][Z_Pos]);
- GetPlayerFacingAngle(playerid, Player[playerid][A_Pos]);
- }
- mysql_format(g_SQL, query, 250, "UPDATE `players` SET `Money` = %d, `BankMoney` = %d, `Health` = %f, `Armor` = %f, `X` = %f, `Y` = %f, `Z` = %f, `Angle` = %f, `Interior` = %d WHERE `ID` = %d LIMIT 1",
- Player[playerid][Money],
- Player[playerid][BankMoney],
- Player[playerid][Health],
- Player[playerid][Armor],
- Player[playerid][X_Pos],
- Player[playerid][Y_Pos],
- Player[playerid][Z_Pos],
- Player[playerid][A_Pos],
- GetPlayerInterior(playerid),
- Player[playerid][ID]);
- mysql_tquery(g_SQL, query);
- return 1;
- }
- GetPlayerRPName(playerid, name[], len)
- {
- GetPlayerName(playerid, name, len);
- for(new i = 0; i < len; i++)
- {
- if (name[ i ] == '_')
- name[i] = ' ';
- }
- }
- pName(playerid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, sizeof name);
- return name;
- }
- SetHealth(playerid, Float: health)
- {
- Player[playerid][Health] = health;
- SetPlayerHealth(playerid, health);
- }
- SetArmor(playerid, Float: armor)
- {
- Player[playerid][Armor] = armor;
- SetPlayerArmour(playerid, armor);
- }
- GiveMoney(playerid, money)
- {
- Player[playerid][Money] += money;
- GivePlayerMoney(playerid, money);
- }
- SetMoney(playerid, money)
- {
- Player[playerid][Money] = money;
- ResetPlayerMoney(playerid);
- GivePlayerMoney(playerid, money);
- }
- ResetMoney(playerid)
- {
- Player[playerid][Money] = 0;
- ResetPlayerMoney(playerid);
- }
- Dialog:Null(playerid, response, listitem, inputtext[]) return 1;
- Dialog:Register(playerid, response, listitem, inputtext[])
- {
- if(!response) return Kick(playerid);
- if(strlen(inputtext) <= 5) return Dialog_Show(playerid, Register, DIALOG_STYLE_PASSWORD, "Registro", ""REGISTER_PASSWORD_BAD"", "Registro", "Abortar");
- for(new i = 0; i < 16; i++) Player[playerid][Salt][i] = random(94) + 33;
- SHA256_PassHash(inputtext, Player[playerid][Salt], Player[playerid][Password], 65);
- mysql_format(g_SQL, query, 221, "INSERT INTO `players` (`Name`, `Password`, `Salt`) VALUES ('%e', '%s', '%e')", pName(playerid), Player[playerid][Password], Player[playerid][Salt]);
- mysql_tquery(g_SQL, query, "OnPlayerRegister", "d", playerid);
- return 1;
- }
- Dialog:Login(playerid, response, listitem, inputtext[])
- {
- if(!response) return Kick(playerid);
- new hashed_pass[65];
- SHA256_PassHash(inputtext, Player[playerid][Salt], hashed_pass, 65);
- if(strcmp(hashed_pass, Player[playerid][Password]) == 0)
- {
- Dialog_Show(playerid, Null, DIALOG_STYLE_MSGBOX, "Login", ""LOGIN_SUCCESS"", "OK", "");
- cache_set_active(Player[playerid][Cache_ID]);
- AssignPlayerData(playerid);
- cache_delete(Player[playerid][Cache_ID]);
- Player[playerid][Cache_ID] = MYSQL_INVALID_CACHE;
- KillTimer(Player[playerid][LoginTimer]);
- Player[playerid][LoginTimer] = 0;
- Player[playerid][LoggedIn] = true;
- SetSpawnInfo(playerid, NO_TEAM, 0, Player[playerid][X_Pos], Player[playerid][Y_Pos], Player[playerid][Z_Pos], Player[playerid][A_Pos], 0, 0, 0, 0, 0, 0);
- SpawnPlayer(playerid);
- }
- else
- {
- Player[playerid][LoginAttempts]++;
- if (Player[playerid][LoginAttempts] >= 3)
- {
- Dialog_Show(playerid, Null, DIALOG_STYLE_MSGBOX, "Login", ""FAIL_LOGIN"", "OK", "");
- DelayedKick(playerid);
- }
- else Dialog_Show(playerid, Login, DIALOG_STYLE_PASSWORD, "Login", ""LOGIN_TEXT_1"", "Ingresar", "Salir");
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement