Skin speichern lassen

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
  • Guten Abend liebe Community,


    ich wollte mal fragen, wie man Skins abspeichern kann.
    Damit meine ich, wenn man mit der Standart Skin Auswahl einen Skin wähltr, das dieser in der Userdatei gespeichert wird, und der User dann bei dem nächsten Login diesen Skin erneut hat und automatisch spawnt ohne auf Spawn drücken zu müssen.
    Kann mir da jemand helfen?
    Bin gerade dabei ein kleines Selfmade zu schreiben und das ist momentan mein größtes Problem!
    Leider weis ich nciht welchen Code Ihr braucht, wenn Ihr überhaupt einen braucht.


    MfG Tobi_Wayne

  • Ich beschreibe dir das Prinzip, den Code musst du dann selbst machen, da ich deine Variablen und dein Speichersystem nicht kenne.


    Bei OnPlayerRequestClass fragst du ab, ob der Spieler einen Skin gespeichert hat, in seinem Account. Wenn ja, dann spawnst du den Spieler mit SetSpawnInfo und SpawnPlayer. Bei OnPlayerSpawn gibst du ihm dann den Skin.
    Wenn nein, dann passiert erst mal gar nichts. Wenn dann OnPlayerRequestSpawn aufgerufen wird, speicherst du den ausgewählten Skin mit GetPlayerSkin in eine Variable und in das Account. Außerdem setzt du einen anderen Wert im Account auf 1, damit du weißt, dass derjenige sich bereits einen Skin ausgesucht hat (oder mit MySQL kannst du auch einfach den default Wert der skin Spalte zu -1 setzen, somit entspricht -1 gleich keinem gespeicherten Skin.


    Falls du Probleme mit dem Code hast, poste den Code den du bis dahin hast und beschreibe dein Problem.

  • Habe es nicht hin bekommen ;/


    Ich schreibe dir mal, was du brauchst:
    public OnPlayerRequestClass(playerid, classid)
    {
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    return 1;
    }


    GetPlayerSkin(playerid);
    SetSpawnInfo(playerid, team, skin, Float:x, Float:y, Float:z, Float:Angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);
    SpawnPlayer(playerid);
    Und natürlich eine Skinvariable.
    Es gibt glaube ich mehr als genug Tutorials das zu machen.


    lg

  • und
    SetPlayerSkin(playerid, skinid);

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • Habe es nicht hin bekommen ;/


    OnPlayerConnect:
    Aus der Datenbank den Wert der Spalte "skin" laden und in die Variable SpielerInfo[playerid][Skin] speichern.


    OnPlayerRequestClass:
    if(SpielerInfo[playerid][Skin] != -1)
    {
    SetSpawnInfo(playerid, playerid, SpielerInfo[playerid][Skin], 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
    SpawnPlayer(playerid);
    }


    OnPlayerSpawn:
    if(SpielerInfo[playerid][Skin] != -1)
    {
    SetPlayerSkin(playerid, SpielerInfo[playerid][Skin]);
    }


    OnPlayerRequestSpawn:
    SpielerInfo[playerid][Skin] = GetPlayerSkin(playerid);



    Einstellungen die du machen musst:
    In der Datenbank eine Spalte "skin" anlegen, mit dem default Wert -1.
    SpielerInfo[playerid][Skin] zu deiner Stats-Variable umändern, sollte klar sein, sonst geht's natürlich nicht.


    Somit sollte alles klar sein.

  • Habe nun alles eingetragen.
    Müsste alles gespeichert und geladen werden.


    Nun bleiben noch folgende Errors in diesem Code:


    public OnPlayerRequestClass(playerid, classid)
    {
    if(SpielerInfo[playerid][Skin] != 0) <--- FEHLERZEILE
    {
    SetSpawnInfo(playerid, playerid, SpielerInfo[playerid][Skin], 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
    SpawnPlayer(playerid);
    return 1;
    }


    error 017: undefined symbol "SpielerInfo"
    warning 215: expression has no effect
    error 001: expected token: ";", but found "]"
    error 029: invalid expression, assumed zero
    fatal error 107: too many error messages on one line

  • SpielerInfo[playerid][Skin] zu deiner Stats-Variable umändern, sollte klar sein, sonst geht's natürlich nicht.


    :rolleyes:


    Die Variable muss so heißen wie du auch alle deine anderen Stats genannt hast. Skin musst du dann noch in dem dazugehörigen enum einfügen.
    Falls du keine Ahnung was von was ich da spreche, poste bitte den Code, mit dem du die Statistiken des Spielers lädst.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Poste doch bitte mal den Code mit dem du den Spieler einloggst. Ich kann deine Variable nicht erraten.


    Nochmal wiederhole ich mich nicht.


    Wenn du Hilfe willst, dann musst du auch mitspielen. In habe keine Glaskugel zu Hause in der ich deine Variablen sehen kann.


    Also poste bitte den Code mit dem du den Spieler einloggst.


    Oder suche nach
    [SpielerDaten]
    und poste diese Zeile, die du findest.



  • Dann solltest du dich vielleicht nicht so undeutlich ausdrücken.


    Er möchte den Code / Stock / Funktion von dem haben, was passiert nachdem man sein Passwort eingegeben hat, sowas wie Login(playerid).

  • @cocacolafreak99: Aus den letzten 50 hat das jeder auf Anhieb verstanden, außerdem hat er das Benötigte bereits vor deinem Post gepostet, daher verstehe ich nicht warum du das noch kommentieren musst. Sei's drum, passt ja jetzt.



    if(sSpieler[playerid][Skin] != -1)
    {
    SetPlayerSkin(playerid, sSpieler[playerid][Skin]);
    }


    So muss es sein, da die Variable bei dir "sSpieler" heißt, und nicht "SpielerInfo".

  • Klappt soweit...vielen Dank du das du dir die Zeit genommen hast!"
    Es kommen keine Errors, jetzt bin ich aber der CJ Skin.
    Wie kann ich es nun machen, mit einer Skinauswahl oder so, das man sich am Anfang oder Ingame einen Skin ändern kann? ;p
    Die Standart Skinauswahl ist nun ja verschwunden ;D

    Einmal editiert, zuletzt von Tobi_Wayne ()

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