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;
}
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){
}
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