spielerspeichern klappt nicht

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
  • moin.
    habe eine kleine frage an euch vielleicht kennt sich einer aus^^
    ich habe versucht unter OnGameModeExit alle spieler abzuspeichern nur werden dabei alle werte auf 0 gesetzt.
    das gleiche passiert auch unter OnPlayerDisconnect. werden die publics aufgerufen nachdem die spieler schon disconnected sind oder warum passiert das immer? ich gebe mir ingame admin level 1 das wird auch gespeichert und in der ini steht adminlevel 1.. aber wenn ich gmx'e wird sofort eine 0 reingespeichert...



    public OnGameModeExit()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    acs(i);
    }
    }
    return 1;
    }


    hier genauso



    public OnPlayerDisconnect(playerid, reason)
    {
    acs(playerid);
    return 1;
    }


    bei meinem testbefehl wird nichts auf 0 gesetzt



    ocmd:test(playerid,params[])
    {
    acs(playerid);
    return 1;
    }



    der stock falls was bringt:
    stock acs(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    format(stringbert,sizeof(stringbert),"spieler/%s.txt",sname(playerid));
    dini_IntSet(stringbert,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(stringbert,"Level",GetPlayerScore(playerid));
    dini_IntSet(stringbert,"AdminLevel",GetPVarInt(playerid,"AdminLevel"));
    dini_IntSet(stringbert,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    dini_IntSet(stringbert,"FrakRang",GetPVarInt(playerid,"FrakRang"));
    dini_IntSet(stringbert,"Fraksperre",GetPVarInt(playerid,"Fraksperre"));
    }
    return 1;
    }

  • wieso
    if(IsPlayerConnected(i))


    ? schwachsin es sind zu den zeitpungt eh alle runter ;)

  • Du musst einen anderen stock estellen. Hier bei diesem stock wird der alles auf 0 Gestellt, wenn der Spieler sich Registriert ;)


    stock Register(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",key);
    SetPlayerScore(playerid,0);
    GivePlayerMoney(playerid,15000);
    SendClientMessage(playerid,Blau,"Du hast dich Erfolgreich auf GTA: New Jork Registriert.");
    dini_IntSet(Spielerdatei,"Adminlevel",0);
    dini_IntSet(Spielerdatei,"Fraktion",0);
    dini_IntSet(Spielerdatei,"FLeader",0);
    dini_IntSet(Spielerdatei,"FRank",0);
    dini_IntSet(Spielerdatei,"PayDay",0);
    dini_IntSet(Spielerdatei,"Monate",0);
    dini_IntSet(Spielerdatei,"Gebannt",0);
    dini_IntSet(Spielerdatei,"BanG",0);
    SetPVarInt(playerid,"Eingeloggt",1);
    }

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • wieso
    if(IsPlayerConnected(i))


    ? schwachsin es sind zu den zeitpungt eh alle runter ;)


    also sind die spieler bereits disconnected wenn gamemodeexit oder onplayerdisconnect aufgerufen wird?
    wenn nicht wuerde er ja 500 sieler durchgehen deshalb isplayerconnected..


    und
    @Everest
    ich glaube du hast da etwas nicht ganz verstanden es geht ums speichern nicht ums registrieren.


    edit: also um es auf den punkt zu bringen: ist es ueberhaupt moeglich an diesen 2 stellen zu speichern oder sind die spieler bereits disconnected wenn diese publics aufgerufen werden?

  • Ops, Fail... hier du musst einen anderen stock erstellen. Und dann diesen Code noch. So müsste das gehen, nicht IsPlayerConnected sondern mach am besten if(GetPVarInt(playerid,"Eingeloggt")==1)


    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"Eingeloggt")==1)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",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"));
    dini_IntSet(Spielerdatei,"FLeader",GetPVarInt(playerid,"FLeader"));
    dini_IntSet(Spielerdatei,"FRank",GetPVarInt(playerid,"FRank"));
    dini_IntSet(Spielerdatei,"PayDay",GetPVarInt(playerid,"PayDay"));
    dini_IntSet(Spielerdatei,"Monate",GetPVarInt(playerid,"Monate"));
    dini_IntSet(Spielerdatei,"Gebannt",GetPVarInt(playerid,"Gebannt"));
    dini_IntSet(Spielerdatei,"BanG",GetPVarInt(playerid,"BanG"));
    dini_IntSet(Spielerdatei,"Geschlecht",GetPVarInt(playerid,"Geschlecht"));
    }
    return 1;
    }



    public OnPlayerDisconnect(playerid, reason)
    {
    if(GetPVarInt(playerid,"Eingeloggt")==1)
    {
    SpielerSpeichern(playerid);
    }
    return 1;
    }

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward