Hab Problem mit einem DM Script

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
  • Also ich habe auf meinem Server eine DM zone. Das Problem ist, dass ich immer wieder z.B. /dm eingeben muss damit ich wieder mitmachen kann. Wie kann ich machen das ich automatisch wieder zurück geportet werde und dann das DM halt nur mit z.B. /dmexit verlassen kann. Ich wäre sehr dankbar wenn mir jemand helfen könnte.
    Hier mal mein Simpler DM port:
      if(!strcmp("/dm 1", cmdtext, true))
     {
      SetPlayerPos2(playerid, -1404.8365,1486.7024,7.1016,5.1030, cmdtext); SetPlayerWorldBounds(playerid, -1353.5946, -1481.6191, 1508.7335, 1478.5894);
      GivePlayerWeapon(playerid, 26, 8000);
      GivePlayerWeapon(playerid, 28, 8000);
      GivePlayerWeapon(playerid, 31, 8000);
      return 1;
     }

  • DU machst ne Globale Variable new gIsInDM[MAX_PLAYERS]. Wenn der Spieler /dm eingibt machst du gIsInDM[playerid] = 1;, und wenn er spawnt (OnPlayerSpawn) machst du


    if (gIsInDM[playerid] == 1) {
    SetPlayerPos2(playerid, -1404.8365,1486.7024,7.1016,5.1030, cmdtext); SetPlayerWorldBounds(playerid, -1353.5946, -1481.6191, 1508.7335, 1478.5894);
    GivePlayerWeapon(playerid, 26, 8000);
    GivePlayerWeapon(playerid, 28, 8000);
    GivePlayerWeapon(playerid, 31, 8000);
    }


    Bei /dmexit machst du gIsInDM[playerid] = 0; und stellst ihm mit SetPlayerPos auf eine andere Position, oder lässt ihn sterben (SetPlayerHealth).

    Intel Xeon W3690 Hexacore @ 4.5 GHz - 48GB Triple Channel DDR3 - GeForce RTX 2070 Super - Asus P6T Deluxe V1 @ P6T WS Pro BIOS

    Mainboard 12 Jahre, CPU 10 Jahre alt - old but gold!

  • Jetzt gibt es ein neues Problem, wenn ich /dm eingebe werde ich nicht gespawn, hab da noch ne ClientMessage eingebaut, die kommt auch, nur ich werde einfach nicht gespawnt, ich hab das jetzt so:
    new gIsInDM[MAX_PLAYERS];
    public OnPlayerSpawn(playerid)
    {
    if (gIsInDM[playerid] == 1) {
    SetPlayerPos(playerid, -1404.8365,1486.7024,7.1016,5.1030);
    SetPlayerWorldBounds(playerid, -1353.5946, -1481.6191, 1508.7335, 1478.5894);
    GivePlayerWeapon(playerid, 26, 8000);
    GivePlayerWeapon(playerid, 28, 8000);
    GivePlayerWeapon(playerid, 31, 8000);
    }
    if (gIsInDM[playerid] == 2) {
    SetPlayerPos(playerid, -1485.2217,307.2930,53.4609,61.0159);
    SetPlayerWorldBounds(playerid, -1469.4668, -1573.2063, 360.0035, 281.4446);
    GivePlayerWeapon(playerid, 26, 8000);
    GivePlayerWeapon(playerid, 28, 8000);
    GivePlayerWeapon(playerid, 31, 8000);
    return 1;}





    Das unter public OnPlayerCommandText(playerid, cmdtext[])
    if(!strcmp("/dm 1", cmdtext, true))
    {
    SendClientMessageLang(playerid, 0xFF6C6C99, "Tippe /dmexit um das DM zu verlassen","Type /dmexit to left the DM");
    gIsInDM[playerid] = 1;
    return 1;
    }
    if(!strcmp("/dm 2", cmdtext, true))
    {
    SendClientMessageLang(playerid, 0xFF6C6C99, "Tippe /dmexit um das DM zu verlassen","Type /dmexit to left the DM");
    gIsInDM[playerid] = 2;
    return 1;
    }
    if(!strcmp("/dmexit", cmdtext, true))
    {
    gIsInDM[playerid] = 0;
    SetPlayerHealth(playerid, 0);
    return 1;
    }

    Einmal editiert, zuletzt von [TF]Bangman ()

  • eine besere idee mach doch mit new bool InDM[MAX_PLAYERS];
    und dann bei onplayerswan if(InDM) dann setplayerpos (bla bla bla); giveweapon (playeudeuuef); bla bla muss hat suchen wie genau das geht must ma suchen



    und dann beim command sooll der dat auf true stten und bei /dmexit auf false und fertig

    Sever ip : aremmers.no-ip.org


    !![GER]!!FuN_FrEeRoAm!!

  • eine besere idee mach doch mit new bool InDM[MAX_PLAYERS];
    und dann bei onplayerswan if(InDM) dann setplayerpos (bla bla bla); giveweapon (playeudeuuef); bla bla muss hat suchen wie genau das geht must ma suchen




    und dann beim command sooll der dat auf true stten und bei /dmexit auf false und fertig

    bool ist ja ein guter Denkansatz aber in diesem Fall sinnlos, da er in der gIsInDM Variable speichert, in welchem DM der Spieler gerade ist (1, 2,..)

    Jetzt gibt es ein neues Problem, wenn ich /dm eingebe werde ich nicht gespawn, hab da noch ne ClientMessage eingebaut, die kommt auch, nur ich werde einfach nicht gespawnt,

    Ist ja auch klar, den einzigen Code der bei /dm 1 ausgeführt wird ist der:
    SendClientMessageLang(playerid, 0xFF6C6C99, "Tippe /dmexit um das DM zu verlassen","Type /dmexit to left the DM");
    gIsInDM[playerid] = 1;
    return 1;


    Füge das hier zwischen gIsInDM[playerid] =1; und return 1 ein:
    OnPlayerSpawn(playerid);

    Intel Xeon W3690 Hexacore @ 4.5 GHz - 48GB Triple Channel DDR3 - GeForce RTX 2070 Super - Asus P6T Deluxe V1 @ P6T WS Pro BIOS

    Mainboard 12 Jahre, CPU 10 Jahre alt - old but gold!