[Hilfe] Probleme bei Skinchange-Shop

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • 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

  • Mach ne if abfrage wenn er den befehle ingibt dann setzt du ihn darein
    z.B. so


    Befehl das rein


    SpielerInfo[playerid][Skinshop]=1;


    In der requestclass so


    if(SpielerInfo[playerid][Skinshop]==1)
    {
    Hier kann er dann die auswahl haben
    }
    else
    {
    hier dein setspawninfo rein
    }

  • Danke erstmal :)
    Was meinst du mit "Hier kann er die Auswahl haben"
    soll ich da die AddPlayerClass(...) reinmachen?
    Weil die sind Im moment im OnGamemodeInit.


    Und wie genau definiere ich SpielerInfo und Skinshop?
    Einfach:
    new SpielerInfo
    new Skinshop
    machen?

  • if(SpielerInfo[playerid][Skinshop]==1)
    {
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(1, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(2, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(3, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(4, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    }
    else
    {
    Spawn(playerid);
    }


    Ich habe mal gehört, dass es so irgendwie geht. 8o

  • Danke dir auch :D Weiß aber immer noch nicht was ich mit SPielerInfo und Skinshop anfangen soll.
    Wenn ich

    if(SpielerInfo[playerid][Skinshop]==1)
    {
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(1, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(2, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(3, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(4, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    }
    else
    {
    Spawn(playerid);
    }



    mache, und

    if(strcmp(cmdtext,"/changeskin",true)==0)
    {
    IsPlayerInRangeOfPoint(playerid,3,-18.2402,-55.5312,1003.5469);
    {
    SpielerInfo[playerid][Skinshop]=1;
    return 1;
    }
    }

    dann krieg ich folgende Fehler:
    F:\gta sa mp server 2\gamemodes\Reallife.pwn(205) : error 028: invalid subscript (not an array or too many subscripts): "SpielerInfo"
    F:\gta sa mp server 2\gamemodes\Reallife.pwn(205) : warning 215: expression has no effect
    F:\gta sa mp server 2\gamemodes\Reallife.pwn(205) : error 001: expected token: ";", but found "]"
    F:\gta sa mp server 2\gamemodes\Reallife.pwn(205) : error 029: invalid expression, assumed zero
    F:\gta sa mp server 2\gamemodes\Reallife.pwn(205) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.


    obwohl ich
    new SpielerInfo
    new Skinshop
    gemacht habe? :O

  • F:\gta sa mp server 2\gamemodes\Reallife.pwn(205) : error 028: invalid subscript (not an array or too many subscripts): "SpielerInfo"
    F:\gta sa mp server 2\gamemodes\Reallife.pwn(205) : warning 215: expression has no effect
    F:\gta sa mp server 2\gamemodes\Reallife.pwn(205) : error 001: expected token: ";", but found "]"
    F:\gta sa mp server 2\gamemodes\Reallife.pwn(205) : error 029: invalid expression, assumed zero
    F:\gta sa mp server 2\gamemodes\Reallife.pwn(205) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.
    :(


    D

  • if(strcmp(cmdtext,"/changeskin",true)==0)
    {
    if(IsPlayerInRangeOfPoint(playerid,3,-18.2402,-55.5312,1003.5469))
    {


    AddPlayerClass()
    AddPlayerClass()
    AddPlayerClass()
    return 1;
    }
    else
    {
    SendClientMessage(playerid,COLOR,"Du bist nicht im Skinshop");
    }



    }

  • Ich hab jetzt keine Fehler mehr weil ich ja das SpielerInfo und so weg gemacht habe.
    Hab deins mal getestet, allerdings bringt mich das nicht zur Skinauswahl, es added jediglich neue Spieler Klassen, die man dann beim nächsten Login wählen könnte... :/s

    Einmal editiert, zuletzt von Lumosy ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Zitat

    Ich hab jetzt keine Fehler mehr weil ich ja das SpielerInfo und so weg gemacht habe.
    Hab deins mal getestet, allerdings bringt mich das nicht zur Skinauswahl, es added jediglich neue Spieler Klassen, die man dann beim nächsten Login wählen könnte... :/s


    Sorry ist mir jetzt erst aufgefallen : )