Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <a_mysql>
- // SQL REGISTER par Xolokos.
- // V1.02.
- #define SQL_HOTE "127.0.0.1" // localhost marche aussi.
- #define SQL_UTILISATEUR "root" // root utilisateur par défault de SQL.
- #define SQL_MOTDEPASSE "" // Sans mot de passe.
- #define SQL_DATABASE "SAMPSERVEUR" // Votre DB.
- #define SQL_TABLE "COMPTES" // Votre table.
- /**/
- new bool:ISCONNECTED[MAX_PLAYERS];
- new SKINS[MAX_PLAYERS];
- new Float:POSITIONS[3];
- /**/
- #define DIALOGREGISTER 5
- #define DIALOGLOGIN 10
- /**/
- #define CONNEXIONMSG "{FF0000}\t[XSQLREGISTER]\n{FFFFFF}\nLes nouvelles sont sur le forum et sur notre site.{FF0000}\n\n\t[CHANGELOG]{FFFFFF}\n\n\t- Nouvelles...\n\t- Nouvelles...\n\t- Nouvelles..."
- #define ENREGISTREMENTMSG "{FF0000}[XSQLREGISTER]\n{FFFFFF}Bienvenue, enregistrez-vous dans la case ci-dessous."
- /**/
- new ACCOUNTUPDATE[1024];
- /**/
- stock UPDATESQL(QUERY[])
- {
- new UQUERY[256];
- format(UQUERY, sizeof(UQUERY), "%s", QUERY);
- ACCOUNTUPDATE = UQUERY;
- }
- stock UPDATEVARINT(QUERY[], VARIABLE, bool:LAST)
- {
- if(!LAST)
- {
- format(ACCOUNTUPDATE, sizeof(ACCOUNTUPDATE), "%s `%s` = '%d',", ACCOUNTUPDATE, QUERY, VARIABLE);
- }
- else format(ACCOUNTUPDATE, sizeof(ACCOUNTUPDATE), "%s `%s` = '%d'", ACCOUNTUPDATE, QUERY, VARIABLE);
- }
- stock UPDATEVARCHAR(QUERY[], VARIABLE[], bool:LAST)
- {
- if(!LAST)
- {
- format(ACCOUNTUPDATE, sizeof(ACCOUNTUPDATE), "%s `%s` = '%s',", ACCOUNTUPDATE, QUERY, VARIABLE);
- }
- else format(ACCOUNTUPDATE, sizeof(ACCOUNTUPDATE), "%s `%s` = '%s'", ACCOUNTUPDATE, QUERY, VARIABLE);
- }
- stock UPDATEWHERE(PLAYID)
- {
- new NOM[MAX_PLAYER_NAME];
- GetPlayerName(PLAYID, NOM, sizeof(NOM));
- format(ACCOUNTUPDATE, sizeof(ACCOUNTUPDATE), "%s WHERE `NOM` = '%s'", ACCOUNTUPDATE, NOM);
- }
- stock SENDQUERY()
- {
- mysql_query(ACCOUNTUPDATE);
- printf("%s", ACCOUNTUPDATE);
- ACCOUNTUPDATE = "";
- }
- /**/
- stock ENREGISTREMENT(PLAYID, PASS[])
- {
- new QUERY[256], NOM[MAX_PLAYER_NAME], IP[16];
- GetPlayerName(PLAYID, NOM, sizeof(NOM));
- GetPlayerIp(PLAYID, IP, sizeof(IP));
- ISCONNECTED[PLAYID] = true;
- format(QUERY, sizeof(QUERY), "INSERT INTO `"SQL_TABLE"` (NOM, MDP, IP, SKINS, SCORE, PX, PY, PZ, CONNECTED) VALUES('%s', '%s', '%s', '70', '0', '0', '0', '0', '1')", NOM, PASS, IP);
- mysql_query(QUERY);
- return 1;
- }
- stock DISCONNECT(PLAYID)
- {
- if(ISCONNECTED[PLAYID])
- {
- new IP[16], Float:POS[3];
- GetPlayerIp(PLAYID, IP, sizeof(IP));
- GetPlayerPos(PLAYID, POS[0], POS[1], POS[2]);
- UPDATESQL("UPDATE `"SQL_TABLE"` SET");
- UPDATEVARCHAR("IP", IP, false); // UPDATEVARCHAR("NOMDELACOLONE", VARIABLE A ATTRIBUER, DERNIERE VARIABLE ( true/false).
- UPDATEVARINT("SKINS", GetPlayerSkin(PLAYID), false);
- UPDATEVARINT("SCORE", GetPlayerScore(PLAYID), false);
- UPDATEVARINT("PX", floatround(POS[0]), false); // Arrondie de la position.
- UPDATEVARINT("PY", floatround(POS[1]), false); // Arrondie de la position.
- UPDATEVARINT("PZ", floatround(POS[2]), false); // Arrondie de la position.
- ISCONNECTED[PLAYID] = false;
- UPDATEVARINT("CONNECTED", 0, true); // C'est la dernière variable donc true.
- UPDATEWHERE(PLAYID); // Mettre a jour WHERE le NOM = 'nomjoueur'.
- SENDQUERY(); // Envoyer a requête et liberer ACCOUNTUPDATE.
- return 1;
- }
- return 1;
- }
- stock LOGIN(PLAYID)
- {
- new QUERY[1024], NOM[MAX_PLAYER_NAME], SAVS[20];
- GetPlayerName(PLAYID, NOM, sizeof(NOM));
- format(QUERY, sizeof(QUERY), "SELECT * FROM `"SQL_TABLE"` WHERE `NOM` = '%s'", NOM);
- mysql_query(QUERY);
- mysql_store_result();
- while(mysql_fetch_row_format(QUERY, "|"))
- {
- mysql_fetch_field_row(SAVS, "SKINS"); SKINS[PLAYID] = strval(SAVS);
- mysql_fetch_field_row(SAVS, "SCORE"); SetPlayerScore(PLAYID, strval(SAVS));
- mysql_fetch_field_row(SAVS, "PX"); POSITIONS[0] = strval(SAVS);
- mysql_fetch_field_row(SAVS, "PY"); POSITIONS[1] = strval(SAVS);
- mysql_fetch_field_row(SAVS, "PZ"); POSITIONS[2] = strval(SAVS);
- }
- mysql_free_result();
- new SCDQUERY[128];
- format(SCDQUERY, sizeof(SCDQUERY), "UPDATE `"SQL_TABLE"` SET `CONNECTED` = '1' WHERE `NOM` = '%s'", NOM);
- mysql_query(SCDQUERY);
- ISCONNECTED[PLAYID] = true;
- TogglePlayerSpectating(PLAYID, false);
- return 1;
- }
- /**/
- public OnFilterScriptInit()
- {
- mysql_connect(SQL_HOTE, SQL_UTILISATEUR, SQL_DATABASE, SQL_MOTDEPASSE);
- mysql_debug(true);
- if(!mysql_ping())
- {
- print(" [UNE ERREUR EST SURVENUE LORS DE LA CONNEXION A LA BASE DE DONNEE OU AU SERVEUR]");
- print(" [VERIFIEZ LES PARAMETRES DE CONNEXION A LA DB, USER, LA TABLE AVANT DE RELANCER]");
- print(" [VERIFIEZ QUE LE PORT LISTEN SOIT LIBRE ( 80 PAR DEFAULT )]");
- }
- else
- {
- print(" [CONNEXION AU SERVEUR SQL EFFECTUE]");
- print(" [X-SQL-REGISTER PAR XOLOKOS]");
- }
- // CHAR caractères simple abcd...
- // VARCHAR caractères simple et numéro abc123...
- // INT nombres simple 123456...
- // FLOAT nombres a virgules 1,5454 positions sur la map vie etc.
- // Création de la table si elle n'existe pas...
- mysql_query("CREATE TABLE `"SQL_TABLE"` (`NOM` char(30), `MDP` char(35), `IP` varchar(20), `SKINS` int(2) , `SCORE` int(20) , `PX` int(5), `PY` int(5), `PZ` int(5), `CONNECTED` int(2))");
- return 1;
- }
- public OnFilterScriptExit()
- {
- print("[X-SQL-REGISTER]");
- return 1;
- }
- /**/
- public OnPlayerConnect(playerid)
- {
- new QUERY[256], NOM[MAX_PLAYER_NAME];
- GetPlayerName(playerid, NOM, sizeof(NOM));
- TogglePlayerSpectating(playerid, true);
- format(QUERY, sizeof(QUERY), "SELECT NOM FROM `"SQL_TABLE"` WHERE NOM = '%s'", NOM);
- mysql_query(QUERY);
- mysql_store_result();
- new ROWS = mysql_num_rows();
- if(!ROWS)
- {
- ShowPlayerDialog(playerid, DIALOGREGISTER, DIALOG_STYLE_PASSWORD, "{FF0000}[XSQLREGISTER]", ENREGISTREMENTMSG, "ENREGISTRER", "");
- mysql_free_result();
- }
- else if(ROWS == 1)
- {
- ShowPlayerDialog(playerid, DIALOGLOGIN, DIALOG_STYLE_PASSWORD, "{FF0000}[XSQLREGISTER]", CONNEXIONMSG, "CONNEXION", "");
- mysql_free_result();
- }
- else if(ROWS > 1)
- {
- ShowPlayerDialog(playerid, DIALOGLOGIN+3, DIALOG_STYLE_PASSWORD, "{FF0000}[XSQLREGISTER]","{FF0000}\nERREUR CODE = 10, PLUSIEURS COMPTE A CE NOM.\n", "", "");
- mysql_free_result();
- }
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- SetPlayerSkin(playerid, SKINS[playerid]);
- if(POSITIONS[0] != 0 && POSITIONS[1] != 0 && POSITIONS[2] != 0)
- {
- SetPlayerPos(playerid, POSITIONS[0], POSITIONS[1], POSITIONS[2]);
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- DISCONNECT(playerid);
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if (dialogid == DIALOGREGISTER)
- {
- if(!response) return Kick(playerid);
- else if (!strlen(inputtext)) return Kick(playerid);
- if(strlen(inputtext))
- {
- new ESCA[100];
- mysql_real_escape_string(inputtext, ESCA);
- ENREGISTREMENT(playerid, inputtext);
- TogglePlayerSpectating(playerid, false);
- return 1;
- }
- else if(strlen(inputtext) < 5) return ShowPlayerDialog(playerid, DIALOGREGISTER, DIALOG_STYLE_PASSWORD , "{FF0000}[XSQLREGISTER]","{FF0000}ERREUR CODE = 1, MOT DE PASSE TROP COURT (5MIN).", "ENREGISTREMENT", "KICK");
- else if(strlen(inputtext) > 20) return ShowPlayerDialog(playerid, DIALOGREGISTER, DIALOG_STYLE_PASSWORD , "{FF0000}[XSQLREGISTER]","{FF0000}ERREUR CODE = 2, MOT DE PASSE TROP LONG (20MAX).", "ENREGISTREMENT", "KICK");
- return 1;
- }
- else if (dialogid == DIALOGLOGIN)
- {
- new QUERY[256], NOM[MAX_PLAYER_NAME], ESCA[100];
- GetPlayerName(playerid, NOM, sizeof(NOM));
- if(!response) return Kick(playerid);
- else if (!strlen(inputtext)) return Kick(playerid);
- else if (strlen(inputtext) <= 0) return Kick(playerid);
- mysql_real_escape_string(inputtext, ESCA);
- format(QUERY, sizeof(QUERY), "SELECT `NOM` FROM `"SQL_TABLE"` WHERE NOM = '%s' AND MDP = '%s'", NOM, ESCA);
- mysql_query(QUERY);
- mysql_store_result();
- new ROWS = mysql_num_rows();
- if(ROWS == 1)
- {
- LOGIN(playerid);
- mysql_free_result();
- }
- else if(ROWS > 1)
- {
- ShowPlayerDialog(playerid, DIALOGLOGIN, DIALOG_STYLE_PASSWORD , "{FF0000}[XSQLREGISTER]","{FF0000}ERREUR CODE = 10, PLUSIEURS COMPTE A CE NOM.", "", "KICK");
- mysql_free_result();
- }
- else if(!ROWS)
- {
- ShowPlayerDialog(playerid, DIALOGLOGIN, DIALOG_STYLE_PASSWORD , "{FF0000}[XSQLREGISTER]","{FF0000}ERREUR CODE = 0, MOT DE PASSE INCORRECT.", "CONNEXION", "KICK");
- mysql_free_result();
- }
- return 1;
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement