[RESOLU] Récupérer et stocker le SteamID d'un joueur dans une BDD

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
Max
Messages : 8765
Inscription : 30 Juil 2011 13:57
Contact :

Re: Récuperer le SteamID d'un joueur et le sauvegarder dans la base de donnée

Message par Max » 10 Mars 2018 21:53

Là après (BDD, php, etc...), à titre personnel, cela sort de mon champ de compétences, sorry.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

xnooztv
Messages : 55
Inscription : 05 Jan 2016 05:32

Re: Récuperer le SteamID d'un joueur et le sauvegarder dans la base de donnée

Message par xnooztv » 10 Mars 2018 22:43

Max a écrit :
10 Mars 2018 21:53
Là après (BDD, php, etc...), à titre personnel, cela sort de mon champ de compétences, sorry.
Tu connais uqelqu'un qui s'y connais + que moi ? (sa devrais être simple mdr)
Soutenir LandWars:

Image

Avatar de l’utilisateur
Max
Messages : 8765
Inscription : 30 Juil 2011 13:57
Contact :

Re: Récuperer le SteamID d'un joueur et le sauvegarder dans la base de donnée

Message par Max » 11 Mars 2018 10:58

xnooztv a écrit :
10 Mars 2018 22:43
Tu connais uqelqu'un qui s'y connais + que moi ? (sa devrais être simple mdr)
là c'est le WE, donc peu de passage. Il faut être un petit peu patient ;)
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

xnooztv
Messages : 55
Inscription : 05 Jan 2016 05:32

Re: Récuperer le SteamID d'un joueur et le sauvegarder dans la base de donnée

Message par xnooztv » 11 Mars 2018 15:25

Pas de problème max :)

Je suis passer aux requêtes paramétrées pour optimiser un maximum et proteger les requetes.

Code : Tout sélectionner

$ins = $link2->prepare("INSERT INTO MyGameDB (name, nick, password, uIP, email, verify, active, steamid) VALUES (?,?,?,?,?,?,?,?)");
$ins->bind_param("ssisssss", $name, $nick, $password, $mIP, $email, $random_hash, $emailVerification, $steamId);
$ins->execute();
L'inscription fonctionne bien, mais le steamid n'est toujours pas enregistrer.

J'ai écris dans un fichier (car la fonction Echo ne s'affiche pas dans Unity) pour savoir si le steamID s'enregistre.. et bah non, le fichier texte est vide.

Donc le problème viens du côté C# j'en suis pratiquement sur.
Soutenir LandWars:

Image

Avatar de l’utilisateur
Max
Messages : 8765
Inscription : 30 Juil 2011 13:57
Contact :

Re: Récuperer le SteamID d'un joueur et le sauvegarder dans la base de donnée

Message par Max » 11 Mars 2018 17:58

Hello,

pour valider en C# ton streamID en string, c'est simple, tu écris

Code : Tout sélectionner

Debug.Log("streamID: "+steamId.ToString());
// ou directement
Debug.Log("streamID: "+steamId);
tu va voir ce que cela te sort dans la console...
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

xnooztv
Messages : 55
Inscription : 05 Jan 2016 05:32

Re: Récuperer le SteamID d'un joueur et le sauvegarder dans la base de donnée

Message par xnooztv » 11 Mars 2018 18:09

D'accord, le steamid est bien afficher dans les logs avec une erreur:

streamID: 76561198430623995
UnityEngine.Debug:Log(Object)
<RegisterProcess>c__Iterator1:MoveNext() (at Assets/Addons/ULoginSystemPro/Content/Scripts/Core/bl_LoginPro.cs:196)
UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator)
bl_LoginPro:SinUp(String, String, String, String, CSteamID) (at Assets/Addons/ULoginSystemPro/Content/Scripts/Core/bl_LoginPro.cs:166)
bl_SignUp:SignUp() (at Assets/Addons/ULoginSystemPro/Content/Scripts/Core/bl_SignUp.cs:68)
UnityEngine.EventSystems.EventSystem:Update()
Ligne 196:

Code : Tout sélectionner

Debug.Log("streamID: "+steamId.ToString());
Ligne 166:

Code : Tout sélectionner

StartCoroutine(RegisterProcess(user,nick, pass, email));
Soutenir LandWars:

Image

xnooztv
Messages : 55
Inscription : 05 Jan 2016 05:32

Re: Récuperer le SteamID d'un joueur et le sauvegarder dans la base de donnée

Message par xnooztv » 11 Mars 2018 18:26

J'ai modifier mon code, je te l'envoie pour voir si tout est correct:

bl_LoginPro.cs

Code : Tout sélectionner

private string steamId;

	public void SinUp(string user, string nick, string pass,string email, string steamId)
    {
		steamId = Steamworks.SteamUser.GetSteamID().ToString ();
        if (isRequesting)
            return;
        if (bl_LoginProDataBase.Instance == null)
            return;

		StartCoroutine(RegisterProcess(user,nick, pass, email, steamId));
    }
   
	IEnumerator RegisterProcess(string user, string nick, string pass,string email, string steamId)
    {
		steamId = Steamworks.SteamUser.GetSteamID().ToString ();
        isRequesting = true;
        SetLogText("");
        //Used for security check for authorization to modify database
        string hash = Md5Sum(user + pass + bl_LoginProDataBase.Instance.SecretKey).ToLower();
        LoadingUI.SetActive(true);
        //Assigns the data we want to save
        //Where -> Form.AddField("name" = matching name of value in SQL database
        WWWForm mForm = new WWWForm();
        mForm.AddField("steamid", steamId.ToString());

Debug.Log("steamID: "+steamId.ToString());
bl_SignUp.cs

Code : Tout sélectionner

private string steamId;

    public void SignUp()
    {
		string user = SteamFriends.GetPersonaName();
		string nick = SteamFriends.GetPersonaName();
        string pass = PasswordInput.text;
        string repass = RePasswordInput.text;
        string email = EmailInput.text;
		steamId = Steamworks.SteamUser.GetSteamID().ToString ();

        if (!AllFill(user,nick, pass, repass, email))
            return;
        if(pass.Length < bl_LoginProDataBase.Instance.MinPasswordLenght)
        {
            Login.SetLogText(string.Format("your password must be at least <b>{0}</b> characters", bl_LoginProDataBase.Instance.MinPasswordLenght));
            return;
        }
        if(repass != pass)
        {
            Login.SetLogText("Passwords doesn't match.");
            return;
        }

        Login.SinUp(user,nick, pass, email, steamId);
    }

Je tiens à te signaler le le debug me renvoie bien mon SteamID mais, il ne se sauvegarde toujours pas dans la base de donnée.
Donc la, je comprend pas trop xD
Soutenir LandWars:

Image

Avatar de l’utilisateur
Max
Messages : 8765
Inscription : 30 Juil 2011 13:57
Contact :

Re: Récuperer le SteamID d'un joueur et le sauvegarder dans la base de donnée

Message par Max » 11 Mars 2018 18:33

je ne comprend pas trop non plus ta façon de faire.

Tu envoies vers ta fonction "RegisterProcess" les différents éléments requis, avec ton StartCoroutine(RegisterProcess(user,nick, pass, email, steamId));.
Ne devrais tu pas plutôt écrire StartCoroutine(RegisterProcess(user,nick, pass, email, steamId.ToString()));
(se qui lèverait certainement une des erreurs citée au dessus).

et en suite, dans ta fonction "RegisterProcess", pourquoi tu repars sur steamId = Steamworks.SteamUser.GetSteamID().ToString (); ?
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

xnooztv
Messages : 55
Inscription : 05 Jan 2016 05:32

Re: Récuperer le SteamID d'un joueur et le sauvegarder dans la base de donnée

Message par xnooztv » 11 Mars 2018 18:42

Max a écrit :
11 Mars 2018 18:33
je ne comprend pas trop non plus ta façon de faire.

Tu envoies vers ta fonction "RegisterProcess" les différents éléments requis, avec ton StartCoroutine(RegisterProcess(user,nick, pass, email, steamId));.
Ne devrais tu pas plutôt écrire StartCoroutine(RegisterProcess(user,nick, pass, email, steamId.ToString()));
(se qui lèverait certainement une des erreurs citée au dessus).

et en suite, dans ta fonction "RegisterProcess", pourquoi tu repars sur steamId = Steamworks.SteamUser.GetSteamID().ToString (); ?
Je suis débutant c'est pour sa, je m'aide par rapport aux autres fonctions c'est pour sa ^^
J'ai fait les modifications que tu m'a dites, c'est vrai que c'est logique et que je n'y avais pas penser.. :nono:

Concernant la fonction, je repart car Steamworks.SteamUser.GetSteamID() n'est pas un string au départ, du coup je suis obliger de le redéclarer (si j'ai bien tout suivie, sinon dit moi si je me trompe)

Je v iens de tester, et le steamID n'est toujours pas dans la base de donnée.. :(
Soutenir LandWars:

Image

Avatar de l’utilisateur
Max
Messages : 8765
Inscription : 30 Juil 2011 13:57
Contact :

Re: Récuperer le SteamID d'un joueur et le sauvegarder dans la base de donnée

Message par Max » 11 Mars 2018 18:48

pour moi ta ligne steamId = Steamworks.SteamUser.GetSteamID().ToString (); dans RegisterProcess n'a pas lieu d'être.

EDIT: En regardant vite fait, idem, tu écris mForm.AddField("steamid", steamId.ToString());, alors qu'en théorie, dans ta fonction streamID est déjà un string. Pareil, tu as variable globale "private string steamId;", bref tu as des steamId un peu partout, et je crois que tu te mélange pas mal les pinceaux.
Rapidement, le bout de code que tu fournis pourrait être déjà corrigé comme ça:

Code : Tout sélectionner

    public void SinUp(string user, string nick, string pass, string email, string steamId)
    {
        if (isRequesting)
            return;
        if (bl_LoginProDataBase.Instance == null)
            return;

        StartCoroutine(RegisterProcess(user, nick, pass, email, steamId));
    }

    IEnumerator RegisterProcess(string user, string nick, string pass, string email, string steamId)
    {
        isRequesting = true;
        SetLogText("");
        //Used for security check for authorization to modify database
        string hash = Md5Sum(user + pass + bl_LoginProDataBase.Instance.SecretKey).ToLower();
        LoadingUI.SetActive(true);
        //Assigns the data we want to save
        //Where -> Form.AddField("name" = matching name of value in SQL database
        WWWForm mForm = new WWWForm();
        mForm.AddField("steamid", steamId);
Tu débutes, je comprends, mais là tu attaques déjà très trucs bien avancés. Ça va pas être simple.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Répondre

Revenir vers « Scripting »