Hilfe benötigt: Mit enum und Dini sachen speichern und einlesen.

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
  • Hallo leute,


    Ich habe in meinem Script ein enum drin.
    Undzwar so.
    enum pInfo
    {
    pAdmin,
    pMember,
    Geld,
    Wanted,
    lastx,
    lasty,
    lastz,
    eingeloggt
    };
    new Spieler[MAX_PLAYERS][pInfo];


    Ich will jetzt wen der Spieler off geht das er seine SkinID und seine letzte Position speichert.
    Unter OnPlayerDisconnect steht folgendes:
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    GetPlayerPos(playerid,lastx,lasty,lastz); // error 035: argument type mismatch (argument 2)
    format(accFormat,sizeof accFormat,"%s.datei",pname);
    if(fexist(accFormat) && Spieler[playerid][eingeloggt])
    {
    dini_IntSet(accFormat,"wanted",Spieler[playerid][wanted]);
    dini_IntSet(accFormat,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(accFormat,"skin",Spieler[playerid][skin]);
    dini_FloatSet(accFormat,"lastx",Spieler[playerid][lastx]);
    dini_FloatSet(accFormat,"lasty",Spieler[playerid][lasty]);
    dini_FloatSet(accFormat,"lastz",Spieler[playerid][lastz]);
    }
    Spieler[playerid][eingeloggt] = 0;
    Spieler[playerid][wanted] = 0;
    Spieler[playerid][skin] = 0;
    Spieler[playerid][lastx] = (0.0);
    Spieler[playerid][lasty] = (0.0);
    Spieler[playerid][lastz] = (0.0);


    Wie lasse ich hier seine Position speichern?
    Und wie die SkinID?


    Falls noch mehr Code gebraucht einfach Posten.

  • Änder die Floats, die noch Integer sind in Floats und füge "skin" hinzu.
    enum pInfo
    {
    pAdmin,
    pMember,
    Geld,
    Wanted,
    Float:lastx,
    Float:lasty,
    Float:lastz,
    eingeloggt,
    skin
    };
    new Spieler[MAX_PLAYERS][pInfo];
    #


    In das Abspeichern dann



    //Der Tag Missmatch Fehler löst dich durch die Ändernung im enum direkt in Luft auf.


    new skinid;
    GetPlayerSkin(playerid,skinid);
    Spieler[playerid][skin] = skinid;

  • Ok danke für die Antworten hat geklappt.
    Frage 2 ^^:


    Ich will das wen man als neuling Connectet Das man bei OnPlayerRequestClass nicht die Skins der Fraktionen wählen kann.
    Und wen man zu einer gehört dan soll man direkt Gespawnt werden also OnPlayerRequestClass überspringen.

  • Du fragst ab ob der Skin zu einer Fraktion gehört und wenn der Spieler nicht in der Fraktion ist returnst du 0 also


    return 0;


    Das verweigert dem Spieler dann das Spawnen mit dem Skin.



    Für das direkte Spawnen probier einfach mal


    SpawnPlayer(playerid);
    return 1;


    aber obs funktioniert weiß ich nicht, wenn ist es aber die einzige Möglichkeit den sofort spwnen zu lassen.


    @dit: 700 Beiträge

  • bei OnPlayerRequestClass mach ich es mit switch(classid)


    Wie überprüfe ich ob ein Skin zu einer Fraktion gehört?
    Ich will das wen man am anfang als neuling nur die Zivi skins nehmen kann.
    Dan beim zweiten einloggen das er den Skin der er ausgewählt hat bekommt und gespawnt wird.


    Ich hab es so im moment:


    switch(classid)
    {
    case 1: gTeam[playerid] = TEAM_Test;
    case 2: gTeam[playerid] = TEAM_Test2;
    case 12,13,14,15,16,17:
    if(Spieler[playerid][skin] == 280 || Spieler[playerid][skin] == 281)
    {
    gTeam[playerid] = LSPD;
    SpawnPlayer(playerid);
    }
    else
    {
    gTeam[playerid] = TEAM_ZIVILISTEN;
    SpawnPlayer(playerid);
    }
    default: gTeam[playerid] = TEAM_ZIVILISTEN;
    }
    return 1;
    }

    Einmal editiert, zuletzt von AdnaN ()