Befehl dann Random 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
  • Moin,
    ich weiß jetzt irgentwie nicht wie ich das machen soll wen man z.B /dm eingibt das man z.B bei einem von 4 Spawn Plätzen spawnt und wen man stirbt wieder bei einen der 4 Spawn Plätze spawnt und man mit /back wieder am normale Spawn Platz spawnt.
    Hoffe mir kann jemand helfen.
    Danke im vorraus. :rolleyes:.

    Einmal editiert, zuletzt von Sampi ()

  • Habe ich nu mal auf schnelle geschrieben
    new Float:DmRandomSpawn[2][3] = {
    {koords},
    {koords}
    };
    Das kannste iwo hin mache
    Dann der Befehl
    if (strcmp("/dm", cmdtext, true, 10) == 0)
    {
    rand = random(sizeof(DmRandomSpawn));
    SetPlayerPos(playerid,DmRandomSpawn[rand][0],DmRandomSpawn[rand][1],DmRandomSpawn[rand][2]);
    return 1;
    }


    Wenn irgendwas falsch ist, bitte Korigieren

    Einmal editiert, zuletzt von Kavkus ()

  • Danke ;)
    Und wie mache ich das wen man stirbt auch an einer random position spawnt und mit /back wieder an der ganz normalen (dort wo man spawnt wen man connectet) spawn?.

    Einmal editiert, zuletzt von Sampi ()

  • Dazu müsstest du noch eine Variable einbauen
    z.b.
    Ganz Oben hin
    new dm[MAX_PLAYERS];
    dann der Befehl
    if (strcmp("/dm", cmdtext, true, 10) == 0)
    {
    rand = random(sizeof(DmRandomSpawn));
    SetPlayerPos(playerid,DmRandomSpawn[rand][0],DmRandomSpawn[rand][1],DmRandomSpawn[rand][2]);
    dm[playerid] = 1;
    return 1;
    }


    Und nun bei OnPlayerDeath(playerid)
    if(dm[playerid] >= 0 )
    {
    rand = random(sizeof(DmRandomSpawn));
    SetPlayerPos(playerid,DmRandomSpawn[rand][0],DmRandomSpawn[rand][1],DmRandomSpawn[rand][2]);
    }


    //Nicht Getestet.
    Bei Fehler einfach den Fehler Posten.

  • Danke :P
    Aber wie mache ich noch das wen man /back macht das man wieder am Normalen Spawn spawnt?
    Also an dem Spawn wo man spawnt wen man einen skin ausgewählt hat?

  • Kannst ja die Coords speichern etwa so:


    new Float: LastX, Float: LastY, Float: LastZ;
    GetPlayerPos(LastX, LastY, LastZ);
    //Command


    //back
    SetPlayerPos(LastX,LastY,LastZ);

  • Wo muss ich das GetPlayerPos hinmachen??
    Und wie speicher ich das? ?(

  • Das GetPlayerPos solltest du bei deinem Befehel bevor der Random Spawn eintritt machen. Das SetPlayerPos dann bei /back. Er speichert es halt nur kurz. ^^ Sonst speicherst es in einer Datei.

  • Danke..bekomme aber 6 Warnings:



    C:\DOKUME~1\Besitzer\EIGENE~1\79fgz6o9\dm\GAMEMO~1\dm.pwn(347) : warning 213: tag mismatch
    C:\DOKUME~1\Besitzer\EIGENE~1\79fgz6o9\dm\GAMEMO~1\dm.pwn(347) : warning 202: number of arguments does not match definition
    C:\DOKUME~1\Besitzer\EIGENE~1\79fgz6o9\dm\GAMEMO~1\dm.pwn(360) : warning 213: tag mismatch
    C:\DOKUME~1\Besitzer\EIGENE~1\79fgz6o9\dm\GAMEMO~1\dm.pwn(360) : warning 202: number of arguments does not match definition
    C:\DOKUME~1\Besitzer\EIGENE~1\79fgz6o9\dm\GAMEMO~1\dm.pwn(466) : warning 213: tag mismatch
    C:\DOKUME~1\Besitzer\EIGENE~1\79fgz6o9\dm\GAMEMO~1\dm.pwn(466) : warning 202: number of arguments does not match definition

  • Das ist jetzt der Port Command:

    //FunnyDM>
    if(strcmp(strget(cmdtext,0), "/fdm", true) == 0 || strcmp(strget(cmdtext,0), "/funnydm", true) == 0 || strcmp(strget(cmdtext,0), "/funnydeathmatch", true) == 0)
    {
    new pname[MAX_PLAYER_NAME];
    new string[100];
    GetPlayerName(playerid, pname, sizeof(pname));
    format(string, sizeof(string), "%s ist nun in der Funny DM Arena!", pname);
    SendClientMessageToAll(COLOR_LIGHTBLUE, string);
    rand = random(sizeof(FDmRandomSpawn));
    SetPlayerPos(playerid,FDmRandomSpawn[rand][0],FDmRandomSpawn[rand][1],FDmRandomSpawn[rand][2]);
    SendClientMessage(playerid, COLOR_GREY, "Mit /spos spawnst du wieder an deiner letzen Position.");
    GetPlayerPos(LastX, LastY, LastZ);
    return 1;
    }


    das ist jetzt der back command:

    //----------------/spos------------------
    if(strcmp(cmdtext, "/spos", true, 2) == 0 || strcmp(cmdtext, "/sb", true, 2) == 0)
    {
    SetPlayerPos(LastX,LastY,LastZ);
    return 1;
    }

  • Das GetPlayerPos muss VOR dem SetPlayerPos sein (im 1. Cmd), ansonsten savet Pawn die Coords nach dem Porten.

  • Achso ok hab ich gemacht aber die Warnings bleiben immernoch

  • sind nur noch 4 warings:



    if(strcmp(strget(cmdtext,0), "/fdm", true) == 0 || strcmp(strget(cmdtext,0), "/funnydm", true) == 0 || strcmp(strget(cmdtext,0), "/funnydeathmatch", true) == 0)
    {
    new pname[MAX_PLAYER_NAME];
    new string[100];
    GetPlayerName(playerid, pname, sizeof(pname));
    format(string, sizeof(string), "%s ist nun in der Funny DM Arena!", pname);
    SendClientMessageToAll(COLOR_LIGHTBLUE, string);
    rand = random(sizeof(FDmRandomSpawn));
    GetPlayerPos(LastX, LastY, LastZ); // Hier sind zwei Warnings
    SetPlayerPos(playerid,FDmRandomSpawn[rand][0],FDmRandomSpawn[rand][1],FDmRandomSpawn[rand][2]);
    SendClientMessage(playerid, COLOR_GREY, "Mit /spos spawnst du wieder an deiner letzen Position.");
    return 1;
    }



    //----------------/spos------------------
    if(strcmp(cmdtext, "/spos", true, 2) == 0 || strcmp(cmdtext, "/sb", true, 2) == 0)
    {
    SetPlayerPos(LastX,LastY,LastZ); // Hier sind zwei Warnings
    return 1;
    }

  • Bin ich blind xD


    Sorry, so muss es sein:
    if(strcmp(strget(cmdtext,0), "/fdm", true) == 0 || strcmp(strget(cmdtext,0), "/funnydm", true) == 0 || strcmp(strget(cmdtext,0), "/funnydeathmatch", true) == 0)
    {
    new pname[MAX_PLAYER_NAME];
    new string[100];
    GetPlayerName(playerid, pname, sizeof(pname));
    format(string, sizeof(string), "%s ist nun in der Funny DM Arena!", pname);
    SendClientMessageToAll(COLOR_LIGHTBLUE, string);
    rand = random(sizeof(FDmRandomSpawn));
    GetPlayerPos(playerid, LastX, LastY, LastZ); // Hier sind zwei Warnings
    SetPlayerPos(playerid,FDmRandomSpawn[rand][0],FDmRandomSpawn[rand][1],FDmRandomSpawn[rand][2]);
    SendClientMessage(playerid, COLOR_GREY, "Mit /spos spawnst du wieder an deiner letzen Position.");
    return 1;
    }


    //----------------/spos------------------
    if(strcmp(cmdtext, "/spos", true, 2) == 0 || strcmp(cmdtext, "/sb", true, 2) == 0)
    {
    SetPlayerPos(playerid,LastX,LastY,LastZ); // Hier sind zwei Warnings
    return 1;
    }