DM-Script mit allen Funktionen(Keine PVars)

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 Leute,
    das ist mein erstes Tutorial das ich erstellt habe =D
    Hier wird gezeigt wie man ein richtiges DM scriptet.


    Benötigt:

    • Grundwissen


    Schritt 1:


    Als erstes definieren wir alles:



    Hier definieren wir die Abfrage ob man im DM ist
    new dmling[MAX_PLAYERS];



    Hier definieren wir unseren RandomSpawn für AntiSpawnKilling:
    new DMRandom;



    Schritt 2:



    Nun erstellen wir unsern Kommando(Erklärung hinter //):
    drüber noch new string[256];

    if(!strcmp(cmdtext, "/dm", true))
    {
    new name; // Kann auch im Header eingesetzt werden
    GetPlayerName(playerid,name,20);
    format(string, sizeof(string), "|||> %s ist jetzt im DM beigetreten.[/dm]",name); //Öffentliche Nachricht dass jmd DM beigetreten hat
    SendClientMessageToAll(0xFFD700FF,string); //Farbe von der Nachricht
    SetPlayerPos(playerid, 1383.4563,2185.5469,11.0234); //Teleport POsition
    SetPlayerWorldBounds(playerid, 1447.158, 1275.345, 2215.923, 2096.013); //Das sind unsichtbare Mauern damit man die Zone nicht verlässt
    SetPlayerVirtualWorld(playerid, 2); //Damit man nur mit Spielern spielt die nur im DM sind
    ResetPlayerWeapons(playerid); //Alle Waffen werden einmal entfernt
    DMRandom = random(3); //Hier erstellen wir unseren Random Spawn
    switch(DMRandom)
    {
    case 0:
    {
    SetPlayerPos(playerid, 1383.4563,2185.5469,11.0234); //damit es kein Spawnkilling gibt
    }
    case 1:
    {
    SetPlayerPos(playerid, 1307.6925,2109.0125,11.0156); //2. Spawn
    }
    }
    SendClientMessage(playerid, 0xFFFFFFAA, "Tippe /exitdm um das DM zu verlassen!"); //Nachricht für Player wie man DM verlässt
    GivePlayerWeapon(playerid, 24, 500); // Nun geben wir unseren Spieler die Waffen
    GivePlayerWeapon(playerid, 27, 500); // 2. Waffe (beliebig)
    dmling[playerid] = 1; //Hier wird eingestellt das der Spieler in nun in einem DM ist
    return 1;
    }


    Schritt 3:


    Nach dem Sterben soll man ja auch wieder da Spawnen also:


    if(dmling[playerid] == 1) //Abfrage ob man im DM ist
    {
    SetPlayerVirtualWorld(playerid, 1);
    SetPlayerWorldBounds(playerid, 1447.158, 1275.345, 2215.923, 2096.013);
    ResetPlayerWeapons(playerid);
    DMRandom = random(3);
    switch(DMRandom)
    {
    case 0:
    {
    SetPlayerPos(playerid, 1383.4563,2185.5469,11.0234);
    }
    case 1:
    {
    SetPlayerPos(playerid, 1307.6925,2109.0125,11.0156);
    }
    }
    GivePlayerWeapon(playerid, 24, 500);
    GivePlayerWeapon(playerid, 27, 500);
    }


    Schritt 4:



    Jetzt deaktivieren wir Kommandos wie z.b "/kill" :
    if(!strcmp(cmdtext, "/kill", true))
    {
    if(dmling[playerid] == 1) //Abfrage ob man im DM ist
    {
    SendClientMessage(playerid, 0xFFFFFFAA, "Du bist in einem DM! Tippe /exitdm um das DM zu verlassen!"); //Nachricht
    }
    else //wenn man nicht im DM ist
    {
    SetPlayerHealth(playerid, 0); //Ausführung wenn man nicht im DM ist
    }
    }
    return 1;
    }


    Schritt 5:



    Jetzt erstellen wir das Kommando für das Verlassen des DMs:
    if(!strcmp(cmdtext, "/exitdm", true))
    {
    if(dmling[playerid] == 1) //Abfrage ob man im DM ist
    {
    SetPlayerPos(playerid, 0.0,0.0,0.0); //Beliebiges Eingeben wo er nach dem Verlassen hin soll
    SetPlayerWorldBounds(playerid, 9999.685, -9999.502, 9999.858, -9999.685); //Unsichtbare Mauer wegmachen bzw. Maximieren
    SetPlayerInterior(playerid,0); //Innenraum auf 0 wenn man einen DM macht mit Innenraum
    SetPlayerVirtualWorld(playerid,0); //Welt wieder auf die Standart Welt 0
    dmling[playerid] = 0; //Auf 0 setzten um nicht mehr am DM teilzunehmen
    }
    else
    {
    SendClientMessage(playerid, 0xFFFFFFAA, "Du bist in keinem DM!"); //Nachricht
    }
    }
    return 1;
    }


    Schritt 6:




    Noch am Ende:
    Unter OnPlayerDisconnect:
    dmling[playerid] = 0;

    Damit ein neuer mit der ID nicht im DM ist.


    Naja ist ja noch mein erstes Tut =P
    Und die Erklärungen sind alle im PWN-Code



    MfG
    TaFiL



    //E: Hab bei Schritt 6 . Schritt 5 hingeschrieben
    //E2: Error rausgemacht

    Suche Gutes Haus System!! PN me

    2 Mal editiert, zuletzt von TaFiL_AE ()

  • Ich will ja nicht meckern, aber
    new name;
    GetPlayerName(playerid,name,18);

    wird mindestens einen Error geben, weil der Name erstens in einem String gespeichert werden muss, und zweitens können Namen bis zu 20 Zeichen lang sein ;).


    Allerdings, nen Header gibts meines Wissens nach bei Pawn nicht ?( 8|, das ist dann doch eher HTML. ;)


    Hoffe dir hilft das etwas.


    LG

  • Naja nicht gut erklärt, eigentlich nur Copy & Paste aus deinem Script und kurz was geschrieben. Du solltest es den Anfängern richtig deutlich machen warum du z.b einen string definierst, wofür er da ist. Warum du DmRandom definierst und wozu es gedacht ist etc., solche Dinge musst du den Anfängern erklären damit die auch damit klar kommen können, die meisten werden es jetzt einfach nur kopieren und einfügen und dabei nichts lernen und haben dann probleme wenn sie ne weitere DM erstellen wollen...

  • Ehm...Du schreibst "DM-Script mit allen Funktionen"...
    Das sind aber nicht alle Funktionen die Du da gemacht hast!


    Das sind eher fast sowas wie Standart-CMD's auf nem DM-Server!
    Kaum was ist richtig und ausführlich erklärt,

    Zitat

    case 0:
    {
    SetPlayerPos(playerid, 1383.4563,2185.5469,11.0234); //damit es kein Spawnkilling gibt
    }

    ich denke mal jeder Neuling wüsste nicht wieso das gegen Spawnkill schützt?
    Naja tut es ja auch nicht also von daher...


    Also ich finde eher das es kein "Tutorial" ist sondern wiedermal etwas zum Copy&Pasten und im Nachhinein wundern wieso da Fehler sind.



    Naja trotzdem 3/10* für die Mühe...




    Mfg, Hardcore

  • Hey, ich lerne seit einer Woche so bischen zu scripten, und habe vor ein kleines Deathmatch Script zu scripten. Bin eigentlich schon ziemlich weit.
    Ich habe dies komplett verfolgt. Und dann habe ich da ein Problem. Wenn ich Ingame bin in den Deathmatch raus mit jemanden zusammen. Wenn er mich tötet Spawn ich direkt mit 0 HP und kann kurz laufen, anschließend sterbe ich, und spawne an dem Spawnplatz, wo man nach dem einloggen spawnt.


    Wie kann ich diese Problem beheben?



    /edit: Kann keiner helfen?

    Einmal editiert, zuletzt von Mysql ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen