Hi Leute,
Ich möchte, dass der Spieler in einen Shop gehen kann, dort /changeskin eingibt und dann zur Class Selection gebracht wird, wo er seinen Skin mit den Pfeiltasten ändern kann.
Außerdem soll der Skin mit dini gespeichert werden, sodass der Spieler wenn er sich das nächste mal einloggt den selben Skin hat.
Ich habe jedoch den SKinchange nach dem Login überspringen lassen mit
public OnPlayerRequestClass(playerid, classid){ SetSpawnInfo(playerid,0,0,1565.0913,-1542.6582,13.5469,178.3392,0,0,0,0,0,0); SpawnPlayer(playerid); return 1;}
Das Problem ist, wenn der Spieler jetzt seinen Skin ändert, wird dann nicht automatisch nichts passieren weil ich die Class Selection übersprungen habe.
Und, wenn mit dini der Skin gespeichert wird, aber bei SetSpawnInfo steht, dass der Spieler mit dem Skin 0 spawnt, müsste ich doch irgendwie sowas machen:
public OnPlayerRequestClass(playerid, classid){ SetSpawnInfo(playerid,0,dini_IntSet(playerid,"Skin"),1565.0913,-1542.6582,13.5469,178.3392,0,0,0,0,0,0); SpawnPlayer(playerid); return 1;}
wobei das nicht funktioniert.
Mein COmmand:
if(strcmp(cmdtext,"/changeskin",true)==0) { IsPlayerInRangeOfPoint(playerid,3,-18.2402,-55.5312,1003.5469); { //Hier ist noch nichts weil ich nicht weiß wie ich das mache, vllt mit ForceClassSelection(playerid); return 1; } }
Meine Stocks:
stock Register(playerid,key[]){ new Spielerdatei[64]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name); dini_Create(Spielerdatei); dini_Set(Spielerdatei,"Passwort",key); SendClientMessage(playerid,ORANGE,"Erfolgreich registriert"); SetPlayerScore(playerid,0); SetPVarInt(playerid,"loggedin",1); return 1;}
stock Login(playerid,key[]){ new Spielerdatei[64]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name); if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false)) { LoadAccount(playerid); SendClientMessage(playerid,ORANGE,"Erfolgreich eingeloggt."); SetPVarInt(playerid,"loggedin",1); return 1; } else { SendClientMessage(playerid,ORANGE,"Falsches Passwort."); ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen"); return 1; }}stock LoadAccount(playerid){ new Spielerdatei[64]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name); SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level")); GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld")); SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel")); SetPVarInt(playerid,"Fraktion",dini_Int(Spielerdatei,"Fraktion")); SetPVarInt(playerid,"Baned",dini_Int(Spielerdatei,"Baned")); if(GetPVarInt(playerid,"Baned")==1) { SendClientMessage(playerid,RED,"Owned! Du bist gebannt =D Selbst schuld!"); Kick(playerid); } SetPVarInt(playerid,"loggedin",1); return 1;}stock SpielerSpeichern(playerid){ new Spielerdatei[64]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name); dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid)); dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid)); dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel")); dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion")); return 1;}
Frage2: Wie mach ich nochmal "Skin" in den Dini Stock? Da muss ich doch vorher irgendwas definieren wie groß die Zahl ist, die in Accounts gespeichert wird, weil die SkinId's ja über 400 oder so gehen.
Grüße,Lumosy