Play Your Games
Bienvenue sur le forum de PYG : Play Your Games,

Vous êtes nouveau sur ce forum ? N'hésitez pas à vous inscrire et à vous présenter afin d'en connaître un peu plus sur vous.
Si votre compte n'est pas activé directement, veuillez attendre qu'il soit activé par un administrateur du forum. Le temps d'activation varie entre 30 minutes et 3 heures.
Si vous souhaitez entrer en contact avec un membre de l'équipe, cliquez ici.

En postant sur ce forum, vous pouvez gagner des Pyglards, monnaie du forum qui vous permets de gagner des avantages sur le serveur. Vous pouvez consulter la boutique Pyglards.

Vous avez la possibilité de poster dans la catégorie des autres jeux, si vous souhaitez, par exemple, nous partager des solutions de jeux ou alors si vous avez une question sur un jeu.

IP Survive All : 5.196.72.69:7778
Discord : https://discord.gg/NuKSANA
Chaîne YouTube : https://goo.gl/5Sd16i

L'équipe PYG vous souhaite une bonne navigation sur le forum.

[M2R]Draiike, équipe PYG
Dirigeant du forum Play Your Games

Rejoignez le forum, c’est rapide et facile

Play Your Games
Bienvenue sur le forum de PYG : Play Your Games,

Vous êtes nouveau sur ce forum ? N'hésitez pas à vous inscrire et à vous présenter afin d'en connaître un peu plus sur vous.
Si votre compte n'est pas activé directement, veuillez attendre qu'il soit activé par un administrateur du forum. Le temps d'activation varie entre 30 minutes et 3 heures.
Si vous souhaitez entrer en contact avec un membre de l'équipe, cliquez ici.

En postant sur ce forum, vous pouvez gagner des Pyglards, monnaie du forum qui vous permets de gagner des avantages sur le serveur. Vous pouvez consulter la boutique Pyglards.

Vous avez la possibilité de poster dans la catégorie des autres jeux, si vous souhaitez, par exemple, nous partager des solutions de jeux ou alors si vous avez une question sur un jeu.

IP Survive All : 5.196.72.69:7778
Discord : https://discord.gg/NuKSANA
Chaîne YouTube : https://goo.gl/5Sd16i

L'équipe PYG vous souhaite une bonne navigation sur le forum.

[M2R]Draiike, équipe PYG
Dirigeant du forum Play Your Games
Play Your Games
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -45%
PC Portable LG Gram 17″ Intel Evo Core i7 32 Go ...
Voir le deal
1099.99 €

Aller en bas
[PYG]Draiike
[PYG]Draiike
Messages : 6845
Pyglards : 131893
Avertissement :
Système d'enregistrement Left_bar_bleue0 / 100 / 10Système d'enregistrement Right_bar_bleue

http://www.p-y-g.net/

Système d'enregistrement Empty Système d'enregistrement

Lun 12 Fév 2018 - 22:33

Vous pouvez retrouver le tutoriel originale sur ce lien : http://forum.sa-mp.com/showthread.php?t=273088

traduit par moi

Système d'enregistrement avec Y_Ini


"J'ai vu plusieurs personnes utilisant Dini, et plusieurs me demandait de créé un tutorial afin de passer a un nouveau système.J'ai donc créé ce tuto pour ces gens afin qu'il passe à un nouveau système, voir l'un des meilleurs"


Qu'est-ce que c'est?
Un simple tutorial afin de créé un système d'enregistrement avec Y_Ini.

Qu'est-ce que Y_Ini?

Y_Ini est un système de fichier ini, il a été créé par Y_Less. Il est inclue dans les librairies de Y_Ini et comprend aussi y_commands (YCMD) et y_groups.


Quelle est la différence entre Y_Ini et mon système de fichier
Y_INI a été prouvé qu'il était l'un de plus rapideet les pluséfficace pour un système de fichier .Ini. Vous pouvez en lire plus en visitant ce lien: http://forum.sa-mp.com/showthread.php?t=175565


Comment installer Y_Ini?

Vous devez tout d'abord télécharger y_ini sur ce lien----> http://forum.sa-mp.com/showthread.php?t=175565. Lorsque le téléchargement est terminé, placer le dossier YSI dans le dossierpawno/includes


Étape I
Ajouté l'include Y_Ini dans votre script
[PAWN]
#include
[/PAWN]

Il contient le nécessaire a la création d'un système d'enregistrement


Étape II

Nous allons définir quelques dialog.

[PAWN]
#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2
#define DIALOG_SUCCESS_1 3
#define DIALOG_SUCCESS_2 4
[/PAWN]


Étape III

Définissez le chemin des fichiers .Ini. Pour ce tutoriel, nous utiliseront Comptes/ Attention, il vous faudra créé le dossier manuellement dans scriptfiles!

[PAWN]
#define PATH "/Comptes/%s.ini"
[/PAWN]

Étape IV
Ajoutez quelques couleurs.

[PAWN]
#define COL_WHITE "{FFFFFF}"
#define COL_RED "{F81414}"
#define COL_GREEN "{00FF22}"
#define COL_LIGHTBLUE "{00CED1}"
[/PAWN]

Étape V

Nous allons utiliser enum, afin de stocker nos variables.

[PAWN]
enum pInfo
{
pPass,
pCash,
pAdmin,
pKills,
pDeaths
}
new PlayerInfo[MAX_PLAYERS][pInfo];
[/PAWN]


Étape VI

Nous allons créé une fonction afin de charger les informations du joueur. De préférence, placer le en bas de votre script


[PAWN]
forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
INI_Int("Password",PlayerInfo[playerid][pPass]);
INI_Int("Cash",PlayerInfo[playerid][pCash]);
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
INI_Int("Kills",PlayerInfo[playerid][pKills]);
INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
return 1;
}
[/PAWN]



.Étape VII
Nous allons créé une fonction stock au nom de UserPath. Tout en bas du script de préférence

[PAWN]
stock UserPath(playerid)
{
new string[128],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),PATH,playername);
return string;
}
[/PAWN]
Cette fonction stock nous sera utile afin de charger la position du fichier d'informations du joueur.



.Étape VIII
Ajouter ce code en dessous du stock que vous venez de rajouter
[PAWN]
/*Credits to Dracoblue*/
stock udb_hash(buf[]) {
new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n{
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
}
return (s2 << 16) + s1;
}
[/PAWN]


Il permettra de ''Hasher'' les mots de passe pour une plus grande sécurité, Credits à Dracoblue.


Étape IX
Nous allons utiliser le callback OnPlayerConnect pour voir si le joueur est enregistré ou non.
[PAWN]
public OnPlayerConnect(playerid)
{
if(fexist(UserPath(playerid)))
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Connection",""COL_WHITE"Veuillez entrer votre mot de passe pour vous connecter.","Connexion","Quitter");
}
else
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_WHITE"Enregistrement",""COL_WHITE"Entrez un mot de passe afin de créer un compte.","S'enregistrer","Quitter");
}
return 1;
}
[/PAWN]

Nous allons utiliser la fonction ''fexist'' afin de rechercher. Les paramètres sont mit a la fonction stock que nous avons créé. Si le fichier existe, nous allons recevoir un message de Connexion. Sinon, un message d'enregistrement


Étape X

[PAWN]
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch( dialogid )
{
case DIALOG_REGISTER:
{
if (!response) return Kick(playerid);
if(response)
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"Enregistrement",""COL_RED"Vous avez entré un mot de passe invalide\n"COL_WHITE"Entrer un mot de passe afin de vous enregistrer.","S'enregistrer","Quitter");
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Password",udb_hash(inputtext));
INI_WriteInt(File,"Cash",0);
INI_WriteInt(File,"Admin",0);
INI_WriteInt(File,"Kills",0);
INI_WriteInt(File,"Deaths",0);
INI_Close(File);

SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"Super! Votre système de Y_Ini marche parfaitement. Reconnecter vous afin de sauvegarder vos stats!",'Ok","");
}
}

case DIALOG_LOGIN:
{
if ( !response ) return Kick ( playerid );
if( response )
{
if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"Vous vous êtes correctement connecté!","Ok","");
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Connection",""COL_RED"Vous avez entré un mot de passe invalide.\n"COL_WHITE"Veuillez entrer votre mot de passe pour vous connecter.","Connexion","Quitter");
}
return 1;
}
}
}
return 1;
}
[/PAWN]

Au lieu d'utiliser if, j'ai utiliser case, il est plus rapide et moins long.(!response) est la fonction si le joueur n'a pas cliqué de bouton, allors il sera kické

Le (!strlen(inputtext)) vérifie si il y a bien quelque chose d'écrit, sinon on affichera un message disant mot de passe invalide.

Si tout se passe bien, votre système devrait correctement charger les fichiers des joueurs. Lorsque démarré,la fonction'INI_WriteInt' est appelé afin d'écrire les informations de joueur. Le udb_hash génèrera un code hashé avec le inputtext(ce que vous avez écrit). Lorsque tout est complété, nous fermons avec "INI_Close".

Lorsque terminé, on vous demandera de vous connecter.


Dans 'DIALOG_LOGIN', si la réponse est false(vous avez cliquer sur 'QUIT), vous serez kické. Si vous avez entré de bonnes informatons (mot de passe présent),la fonction INI_Parsefile Analysera et chargera les fichiers du joueur



Étape XI
N'oubliez pas qu'il faut un moyen pour sauvegarder les variables. Le callback OnPlayerDisconnect ré-ouvre simplement le fichier , récrit les valeurs du joueur et le ferme.
[PAWN]
public OnPlayerDisconnect(playerid, reason)
{
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
INI_Close(File);
return 1;
}
[/PAWN]


Étape XII
Finalement, Ajouter ceci a OnPLayerDeath afin de mettre des valeurs pour les morts et les kills

[PAWN]
public OnPlayerDeath(playerid, killerid, reason)
{
PlayerInfo[killerid][pKills]++;
PlayerInfo[playerid][pDeaths]++;
return 1;
}
[/PAWN]

Téléchargement:



Credits:

Y_Less - Y_INI.
Kush - Tutorial
Raphy963 - Traduction
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum