Problem mit dem Spielerspawn

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,
    Ich habe im Script eingebaut, dass wenn der Spieler /speichern eingibt, dass er beim nächsten und nur beim nächsten Spawn dort gespawnt wird.
    So aber das Problem ist, dass alle Spieler, die diesen Befehl nicht genutzt haben bevor sie offline gegangen sind werden an der Position 0,0,0 gespawnt.
    Mein Code bei OnPlayerSpawn sieht so aus.



    Ich frage ab ob der Spieler /speichern eingegeben hat indem ich ihm eine besondere Farbe gebe, dies tut jetzt aber nichts zur Sache.
    Am besten wäre es wenn das Script einfach nachschaut, was der Spieler bei OnPlayerRequestClass ausgesucht hat und den Spieler dann entsprechend spawnt.

  • Bei OnplayerSpawn:



    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
    new spielerdatei[64];
    format(spielerdatei,sizeof(spielerdatei),"/GGL/Spieler/%s.ini",playername);
    new Float:spawnx,Float:spawny,Float:spawnz;
    spawnx = dini_Float(spielerdatei,"SpawnX");
    spawny = dini_Float(spielerdatei,"SpawnY");
    spawnz = dini_Float(spielerdatei,"SpawnZ");
    SetPlayerPos(playerid,spawnx,spawny,spawnz);
    return 1;


    Unter OnPlayerCommandtext: Um dem Spieler das speichern mit /allowsavespawn ID zu erlauben muss man als Rcon Admin eingeloggt sein...

    if(!strcmp(cmdtext,"/allowsavespawn",true,15))
    {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,ROT,"Du bist kein Admin");
    if(cmdtext[15] == 0) return SendClientMessage(playerid,ROT,"NUTZUNG: /allowsavespawn [playerid]");
    if(!IsPlayerConnected(strval(cmdtext[15]))) return SendClientMessage(playerid,ROT,"Kein Spieler mit dieser ID gefunden");
    saveallow[strval(cmdtext[15])] = 1;
    SendClientMessage(playerid,GELB,"Du hast dem Spieler das Spawn-Speichern erlaubt");
    SendClientMessage(strval(cmdtext[15]),GRÜN,"Dir wurde das Speichern deines Spawnpunkts erlaubt");
    return 1;
    }


    {
    if(!strcmp(cmdtext,"/savespawn",true))
    {
    if(saveallow[playerid] != 1) return SendClientMessage(playerid,ROT,"Dir wurde das Speichern deines Spawnpunkts nicht erlaubt");
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
    new spielerdatei[80];
    format(spielerdatei,sizeof(spielerdatei),"GGL/Spieler/%s.ini",playername);
    dini_FloatSet(spielerdatei,"SpawnX",x);
    dini_FloatSet(spielerdatei,"SpawnY",y);
    dini_FloatSet(spielerdatei,"SpawnZ",z);
    SendClientMessage(playerid,GRÜN,"Spawnpunkt gespeichert");
    }
    return 1;
    }

  • So, da mir nicht geantwortet wurde, habe ich mich erneut dahintergesetzt und den Fehler gefunden:


    Statt

    Code
    if(GetPlayerColor(playerid) == 0xB4B4B4FF)
    	{
    		PosLoad(playerid);
    	 	SetTimer("SpeichernLoeschen",1000,0);
     	}
     	else
    {
    }


    Das hier:


    Code
    if(GetPlayerColor(playerid) == 0xB4B4B4FF)
        {
        	PosLoad(playerid);
         	SetTimer("SpeichernLoeschen",1000,0);
     	}


    Das ist schön, dass du dir die Mühe mit dem Erlauben gemacht hast, aber du hättest genauer lesen sollen. :|