[MY-RS] problèmes log-in monde persistant

Pour les scripts écrits en Javascript (UnityScript). :!: Obsolète :!:
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
thyma
Messages : 70
Inscription : 23 Juin 2015 12:25

[MY-RS] problèmes log-in monde persistant

Message par thyma » 06 Juil 2016 14:40

Bonjour je suis en train de crée un system de log-in sur unity, ce n’est pour aucuns projet en particulier juste pour le faire (après peut être que d’autre projets l’emprunteront). Mais malheureusement j’ai plusieurs problèmes, je les explique en bas ; déjà les codes :

Confirm login Serveur :

Code : Tout sélectionner

import System.IO; 
var username :String;
var joueur : GameObject;
var realpass :String;
var pseudo :String;
var pseudoList : String;
var time : float;
var classe1 : GameObject;

function Start (){    
    Network.InitializeServer(300, 81, false);
}

function Update (){
    time += Time.deltaTime;
}


 @RPC function Login(username : String, password:String){
     print ("login");
     if (System.IO.Directory.Exists("d:\\acount\\"+username+"\\")){
         realpass = System.IO.File.ReadAllText("d:\\acount\\"+username+"\\password.txt");
        if (realpass == password){
            GetComponent.<NetworkView>().RPC("acceptLogin", RPCMode.All, username);
        }
    } 
}

@RPC function Register(username : String, password:String){
    print ("register");
     if (!System.IO.Directory.Exists("d:\\acount\\"+username)){
        System.IO.Directory.CreateDirectory("d:\\acount\\"+username);
         System.IO.File.WriteAllText("d:\\acount\\"+username+"\\password.txt", password);
        GetComponent.<NetworkView>().RPC("acceptRegister", RPCMode.All, username);
    } 
}

@RPC function playerList(username : String){
    print("playerList");
     if (System.IO.Directory.Exists("d:\\acount\\"+username)){
        pseudoList = System.IO.File.ReadAllText("d:\\acount\\"+username+"\\playerList.txt");
        GetComponent.<NetworkView>().RPC("confirmPlayerList", RPCMode.All, username, pseudoList);
    } 
}

@RPC function deleteC(username : String, selected : String){
    print("deleteC");
     if (System.IO.Directory.Exists("d:\\acount\\"+username)){
        pseudoList = System.IO.File.ReadAllText("d:\\acount\\"+username+"\\playerList.txt");
        pseudoList = pseudoList.Replace(selected+"/", "");
        System.IO.File.WriteAllText("d:\\acount\\"+username+"\\playerList.txt", pseudoList);
        System.IO.Directory.Delete("d:\\acount\\"+username+"\\"+selected+"\\");
        GetComponent.<NetworkView>().RPC("confirmPlayerList", RPCMode.All, username, pseudoList);
    } 
}

@RPC function acceptLogin(username : String){
print ("acceptlogin");
}

@RPC function acceptRegister(username : String){
print ("acceptregister");
}

@RPC function confirmPlayerList(username : String, pseudoList : String){
print("confirm player list");
}

@RPC function isPlaying(selected : String){
    System.IO.File.WriteAllInt("d:\\acount\\playing\\"+selected, time);
}

@RPC function spawn(selected : String, id : NetworkViewID){
    joueur = Network.Instantiate(classe1, Vector3(0, 0, 0), Quaternion.identity, 0);
    joueur.GetComponent.<NetworkView>().viewID=id;
} 
Login client :

Code : Tout sélectionner

var username :String;
var joueur2 : GameObject;
var joueur : GameObject;
var realpass :String;
var playing = false;
var password :String;
var ip = "192.168.0.2";
var play = false;
var loginOk = false;
var login = true;
var register = false;
var registerOk = false;
var listPlayer = new Array ();
var connect = false;
var pseudo : String;
var selected : String;
var compte = 0.0;

function Start (){    
    Network.Connect(ip, 81);
}

function OnGUI(){
    if (playing == false){
        if (connect == false){
            if(GUI.Button(Rect(Screen.width/1.5, Screen.height/5, Screen.width/4, Screen.height/10), "switch to login / register")){
                login = !login;
                register = !register;
            }
            if (login == true){
                GUI.Box(Rect(Screen.width/20, Screen.height/20, Screen.width*0.9, Screen.height*0.9), "LOGIN");    
                GUI.Box(Rect(Screen.width/15, Screen.height/5, Screen.width/4, Screen.height/10), "USERNAME");    
                GUI.Box(Rect(Screen.width/15, Screen.height/3, Screen.width/4, Screen.height/10), "PASSWORD");    
                username = GUI.TextField(Rect(Screen.width/3, Screen.height/5, Screen.width/4, Screen.height/10), username);
                password = GUI.TextField(Rect(Screen.width/3, Screen.height/3, Screen.width/4, Screen.height/10), password);
                if(GUI.Button(Rect(Screen.width/3, Screen.height/2, Screen.width/4, Screen.height/10), "Vallider") && username.Length !=0 && password.Length !=0){
                    GetComponent.<NetworkView>().RPC("Login", RPCMode.Server, username, password);
                }
                if(loginOk == true){
                    if(GUI.Button(Rect(Screen.width/15, Screen.height/2, Screen.width/4, Screen.height/10), "PLAY")){;
                        GetComponent.<NetworkView>().RPC("playerList", RPCMode.Server, username);
                    }
                }
            }
            if (register == true){
                GUI.Box(Rect(Screen.width/20, Screen.height/20, Screen.width*0.9, Screen.height*0.9), "REGISTER");    
                GUI.Box(Rect(Screen.width/15, Screen.height/5, Screen.width/4, Screen.height/10), "USERNAME");    
                GUI.Box(Rect(Screen.width/15, Screen.height/3, Screen.width/4, Screen.height/10), "PASSWORD");    
                username = GUI.TextField(Rect(Screen.width/3, Screen.height/5, Screen.width/4, Screen.height/10), username);
                password = GUI.TextField(Rect(Screen.width/3, Screen.height/3, Screen.width/4, Screen.height/10), password);
                if(GUI.Button(Rect(Screen.width/3, Screen.height/2, Screen.width/4, Screen.height/10), "Vallider") && username.Length !=0 && password.Length !=0){
                    GetComponent.<NetworkView>().RPC("Register", RPCMode.Server, username, password);
                }
                if(registerOk == true){
                    GUI.Box(Rect(Screen.width/15, Screen.height/2, Screen.width/4, Screen.height/10), "YOU REGISTRED");
                }
            }
        }
        if (connect == true){
            GUI.Box(Rect(Screen.width/20, Screen.height/20, Screen.width*0.9, Screen.height*0.9), "SELECT YOUR CHARACTER");    
            if(GUI.Button(Rect(Screen.width/15, Screen.height/5, Screen.width/4, Screen.height/10), listPlayer[0])){
                selected=listPlayer[0];
            }
            if(GUI.Button(Rect(Screen.width/15, Screen.height/3, Screen.width/4, Screen.height/10), listPlayer[1])){
                selected=listPlayer[1];
            }
            if (selected != ""){
                if(GUI.Button(Rect(Screen.width/2, Screen.height/5, Screen.width/4, Screen.height/10), "play it")){
                    GetComponent.<NetworkView>().RPC("spawn", RPCMode.Server, selected, Network.AllocateViewID());
                    playing = true;
                }
                if(GUI.Button(Rect(Screen.width/2, Screen.height/3, Screen.width/4, Screen.height/10), "delete it")){
                    GetComponent.<NetworkView>().RPC("deleteC", RPCMode.Server, username, selected);
                }
            }
        }
    }
    if (playing == true){
        compte += Time.deltaTime;
        if (compte > 250){
            GetComponent.<NetworkView>().RPC("isPlaying", RPCMode.Server, selected);
            compte = 0;
        }
    }
}


@RPC function acceptLogin(confusername : String){
    if(username == confusername){
        loginOk = true;
    }
}
@RPC function acceptRegister(confusername : String){
    if(username == confusername){
        registerOk = true;
    }
}

@RPC function Login(username : String, password: String){
}

@RPC function Register(username : String, password: String){
}

@RPC function playerList(username : String){
}

@RPC function isPlaying(username : String){
}

@RPC function confirmPlayerList(confusername : String, playerList : String){
    if (confusername == username){
        for (var i =0; i <playerList.Length; i=i+1){
            if (playerList.Substring (i,1)!="/"){
                pseudo = pseudo + playerList.Substring (i,1);
            }
            if (playerList.Substring (i,1)=="/"){
                listPlayer.Push(pseudo);
                pseudo="";
            }
        }
        connect = false;
        connect = true;
    }
}

@RPC function deleteC(username : String, selected : String){
}

@RPC function spawn(selected : String, id : NetworkViewID){
} 
Bon alors les fameux problèmes : 1) déjà l’instanciation du personnage je veux la faire du coté serveur, quand tout est réglé, le client balance la fonction rpc spawn, qui indique le nom du compte et le personnage à instancier, le serveur l’instancie MAIS le joueur ne peut pas le contrôler ni voir avec sa caméra, en effet ce n’est pas lui qui l’a instancié donc il n’a pas le bon network view, j’essaye de lui appliquer mais ça ne marche pas !
2) le serveur j’aimerai qu’il réponde dans ses fonctions RPC uniquement au client voulu (sa économiserait beaucoup de temps mais ausis sa serrait bien plus sécure) mais dans les rpc mod il n’y pas ce choix.
3) vous savez quand on quitte un jeu, on fait souvent alt + f4 au lieu de cliquer avec traditionnel bouton quitter (parfois inexistant) le seul problème c’est que si on quitte mon jeu comme sa, le personnage reste sur le serveur et quand le joueur se reconnecte et réutilise ce personnage ban sa en crée une copie j'ai essayer de régler le problème avec un timer sauf que si on se reconnecte avant que le timer décide de virer le joueur et ban sa reviens au même (et en plus la solution est couteuse en ressources)…
4) mes fonctions rpc je suis obligés de les récupérés dans les scripts ou je le déclare, c’est pas bien grave mais c’est inutile et moche 

Merci d’avance
Thyma

thyma
Messages : 70
Inscription : 23 Juin 2015 12:25

Re: [MY-RS] problèmes log-in monde persistant

Message par thyma » 06 Août 2016 17:58

up ?

Verrouillé

Revenir vers « (Js) Javascript »