Problem mi mein spawn!!

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



    Das problem ist mit mein Paintball server. Ich habe das so gemacht das der am versiedene orten spawnt und wenn er offline geht das der wieder da spawnt wo er sich ausgeloggt hat. Und ich habe da jetzt ein problem so da wird jetzt 2 mal SetPlayerSpawn benutzt fuer paintball und zur die x.y.z koordinaten wie kann ich das all in ein tuhn weil ich habe gemerkt das ich da durch bugs habe wie z.b, geh ich am LSPD offline und spawn wieder an den 3 versiedene spawns welchen ich festgelegt habe.



    Danke in vorraus :>



    CODE:




    new file[128], pname[MAX_PLAYER_NAME];
    new Float:x, Float:y, Float:z;
    GetPlayerName(playerid, pname, sizeof(pname));
    format(file, sizeof(file), "/SavePos/%s.ini", pname);
    x = dini_Float(file, "posX");
    y = dini_Float(file, "posY");
    z = dini_Float(file, "posZ");
    SetPlayerPos(playerid,x,y,z);

    new rand;
    rand = random(sizeof(PaintballSpawns));
    SetPlayerPos(playerid, PaintballSpawns[rand][0], PaintballSpawns[rand][1], PaintballSpawns[rand][2]);


  • Setz doch wenn er ins Tunier geht eine Variable auf 1 und setzt seine Position zum Paintball Tunier und wenn er sicht einloggt überprüfst du ob die Tunier Variable auf 0 ist und dann Spawnen.

  • wie meinst du das :?: :>


    new IsInPB[MAX_PLAYERS];


    Wenn er in die Arena geht:


    IsInPB[playerid] = 1;


    Wenn er verlässt:


    IsInPB[playerid] = 0;


    Abfrage hierzu wäre beispielsweise:


    if(IsInPb[playerid] == 1)
    {
    //Spawn in arena
    } else if(IsInPB[playerid] == 0)
    {
    //Spawn Normal.
    }


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • zB.


    Wenn er Beim pickup /enter macht setzt du zB die Variable IstInTunier[playerid] = 1; wenn er raus geht wieder auf 0


    Dann fragst du beim Spawn ab: if(IstInTunier[playerid] == 0) // Da Spawnen lassen wo er disconnected ist.
    und wenn nicht also else // dann ins Paintball Tunier setzen

  • Habe das jetzt so gemacht aber er will ihn einfach nicht an die x,y,z koordinaten spawnen lasse der spawnt ihn
    an die 3 orte



    {271.2038,2927.7192,1.4886},
    {2784.8582,603.4786,9.6263},
    {2883.5474,-142.1067,3.7522},



    • new Spawnt[MAX_PLAYERS];


      if(Spawnt[playerid] == 1)
      {
      new rand;
      rand = random(sizeof(PaintballSpawns));
      SetPlayerPos(playerid, PaintballSpawns[rand][0], PaintballSpawns[rand][1], PaintballSpawns[rand][2]);
      }
      else if(Spawnt[playerid] == 0)
      {
      new file[128], pname[MAX_PLAYER_NAME];
      new Float:x, Float:y, Float:z;
      GetPlayerName(playerid, pname, sizeof(pname));
      format(file, sizeof(file), "/SavePos/%s.ini", pname);
      x = dini_Float(file, "posX");
      y = dini_Float(file, "posY");
      z = dini_Float(file, "posZ");
      SetPlayerPos(playerid,x,y,z);
      }



      :?:

  • Hast du die Variable auch erhöht bzw. auf 1 gesetzt?



    Und wenn du ihn in der Paintball Arena respawnen lassen willst, denn musst du schon die Position für PB abspeichern, mit Dini und wieder laden lassen.


    Und ansonsten erklärs bitte etwas genauer. :P


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • ok hier speichert er ab



    new file[128], pname[MAX_PLAYER_NAME];
    new Float:x, Float:y, Float:z;
    GetPlayerName(playerid, pname, sizeof(pname));
    format(file, sizeof(file), "/SavePos/%s.ini", pname);
    if(!dini_Exists(file))
    dini_Create(file);
    GetPlayerPos(playerid, x, y, z);
    dini_FloatSet(file, "posX", x);
    dini_FloatSet(file, "posY", y);
    dini_FloatSet(file, "posZ", z);


    und hier der rest




    new Spawnt[MAX_PLAYERS];


    new Float:PaintballSpawns[3][3] = {
    {271.2038,2927.7192,1.4886},
    {2784.8582,603.4786,9.6263},
    {2883.5474,-142.1067,3.7522}
    };


    if(Spawnt[playerid] == 1)
    {
    new rand;
    rand = random(sizeof(PaintballSpawns));
    SetPlayerPos(playerid, PaintballSpawns[rand][0], PaintballSpawns[rand][1], PaintballSpawns[rand][2]);
    }
    else if(Spawnt[playerid] == 0)
    {//hier wird die geladen
    new file[128], pname[MAX_PLAYER_NAME];
    new Float:x, Float:y, Float:z;
    GetPlayerName(playerid, pname, sizeof(pname));
    format(file, sizeof(file), "/SavePos/%s.ini", pname);
    x = dini_Float(file, "posX");
    y = dini_Float(file, "posY");
    z = dini_Float(file, "posZ");
    SetPlayerPos(playerid,x,y,z);
    }





    :P


    So und wie meinst du das jetzt mit



    "Hast du die Variable auch erhöht bzw. auf 1 gesetzt?" :>


    und ja ich wollte auch so machen wenn er stirbt soll er an denn 3 verdiedenen orten da sapwn


    PS: SRY bin einfach nur müde
    aber will das mit der x,y,z heute fertig machen

    Einmal editiert, zuletzt von Kania ()

  • Wenn er z.b. /PB eingibt, musst du die Variable auch auf 1 setzen (Er prüft ja oben if(pb == 1) und else if (pb == 0)


    z.b:

    /PB
    IsInPB[playerid] = 1;


    Und beim /exit befehl denn halt auf 0 setzen.


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • Kann ich das auch so machen


    bei register und login



    enum //



    Spawmt,




    und bei
    DIALOG_LOGIN


    Spieler[playerid][Spawmt] = dini_Int(accFormat, "Spawmt");




    DIALOG_REG



    Spieler[playerid][Spawmt] = 0; //dann spawnt er an den 3 spawnts oder so



    und wenn er stirbt


    auch
    Spieler[playerid][Spawnt] = 0; //setzen


    und


    bei on player spawn abfragen



    ob das geht =???