Spawn ändern (von Haus zur Fraktion)

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, hab da ein Problem mit dem Spawnchange. Wollte eigenlich das man sich zu Beginn aussuchen kann, ob man lieber in die Fraktionsbase oder in sein eigenes Haus spawnen möchte.


    Da ich etliche umständliche Lösungen gesehen habe und diese mir leider nicht wirklich weiterhelfen, wollt ich nun das selbst probieren.
    Leider Spawnt der Spieler egal ob auf Status 1 oder 0 immer auf die Position, die ich als 0 definiert habe.


    ->PlayerInfo[playerid][pSpawnChange] = 0; <- Wenn ich 1 statt der 0 verwende so kommt das gleiche - nur halt andersrum raus. Hier mal die Übersicht zum ganzen:


    enum pInfo
    pSpawnChange,


    public OnPlayerConnect(playerid)
    PlayerInfo[playerid][pSpawnChange] = 0;



    public SetPlayerSpawn(playerid)


    if(PlayerInfo[playerid][pHouseKey] < MAX_HOUSES+1)
    {
    if(PlayerInfo[playerid][pSpawnChange] == 1)
    {
    new i = PlayerInfo[playerid][pHouseKey];
    SetPlayerPos(playerid, HouseInfo[i][hIntx], HouseInfo[i][hInty], HouseInfo[i][hIntz]);
    SetPlayerInterior(playerid, HouseInfo[i][hInt]);
    SetPlayerVirtualWorld(playerid, i);
    }
    else if (PlayerInfo[playerid][pArbeiter] == 12 || PlayerInfo[playerid][pChef] == 12) //Admin spawn
    {
    SetPlayerInterior(playerid, 0);
    SetPlayerPos(playerid,728.3167,-1276.3755,13.6484);
    etPlayerFacingAngle(playerid,77.9593);
    PlayerInfo[playerid][pInt] = 0;
    return 1;
    }
    }




    Hatte auch beide schon getrennt voneinander versucht aber das hatte logischerweise dann das gleiche zur folge :S Mit "Normalem" Spawnchange aus den Script komm ich auch nicht weiter.
    Spawnchange kann ich auf dem Server schon zumindest korrekt setzen, damit dies auch in dem Account richtig eingetragen ist.
    Freu mich wenn jemand da Rat weiss :)

  • Ich glaube du hast PlayerInfo nicht mit dem enum gefüttert. Oder du hast es vergessen anzugeben.


    PlayerInfo[MAX_PLAYERS][pInfo];


    Hast du sowas gesetzt?


    Falls ja, dann lass dir mal das Ergebnis dauernd ausgeben. Mit der printf()-Methode, damit du immer das Ergebnis sehen kannst.

    Die Macht etwas zu bewirken, ist in Dir. Du musst sie nur rauslassen


    cristiano-ronaldo-525-portugal-euro-2012-banner-wallpaper.jpg

  • Danke erstmal für deine Antwort!


    layerInfo[MAX_PLAYERS][pInfo]; ist bereits unter enum gelistet.


    Wie kann ich denn mit printf festellen, was da vorsich geht? Habs mal versucht, aber der Druckt ja nur das in die log, was ich in den anführungszeichen gesetzt hab :)
    Gibt es denn (wenn das nicht geht) eine alternative? Ich hab mit [photel] zb. keine probleme gehabt . Das ich dann eventuell etwas mit [pgang] 0,1 in der ini habe mit dem gleichen muster , damit das richtig gelesen wird?
    Oder ist es dasselbe problem wie mit spawnchange?

  • Ok gut dann sollte alles passen. Also mit print() siehst du alles in der Server_log Datei genau. Ok eine andere Lösung wär natürlich auch SendClientMessage so siehst du dann selber immer wenn du spawnst welche Werte sie haben.


    Weiters gehen wir mal das Beispiel durch. Also wenn der Spieler connectet ist der Wert mit 0 gesetzt.


    Ok im Haus soll er nur spawnen wenn der Wert SpawnChange auf 1 ist. Ist er aber nicht weil er auf 0 ist. Also schauen wir mal auf die weitere Bedingung.
    Nun muss der Spieler in der Fraktion 12 sein sonst spawnt er nicht in seiner Arbeit.
    Ist er dies?

    Die Macht etwas zu bewirken, ist in Dir. Du musst sie nur rauslassen


    cristiano-ronaldo-525-portugal-euro-2012-banner-wallpaper.jpg

  • Genau, der Wert wurde in game mit /spawn haus auf 1 gesetzt. Im Account ist dieser Wert ebenfalls eingetragen. Indem Falls wie oben ignoriert er die "1" und springt gleich zur Admin Base die ja "else" also gleich 0 ist. Sobald beim Haus Spanchange "0" steht spawnt er dann richtig. Wenn ich aber nun /spawnchange gang mache (Auch hier wir der Wer richtig eingetragen) ignoriert er den Wert "0"und spawnt nur beim haus obwohl imm acc "0" eingetragen ist. Bin echt Ratlos wo der Fehler is :S


    EDIT:


    Nach etlichen versuchen hab ich nun das bescheidene Problem gefunden :) Das hier hatte bei OnPlayerLogin gefehlt:


    if( strcmp( key , "pgangtrue" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pgangtrue] = strval( val ); }


    Hab "gangtrue" jetzt hinzugefügt und die Abfrage etwas geändert und nun läufts bestens. Das hatte nämlich auch bei Spawnchange gefehlt...


    Trotzdem Vielen Dank für deine Hilfe!

    2 Mal editiert, zuletzt von BrosdaX ()