Tutorial für Tore

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
  • Erst mal einen schönen guten Tag und Hallo.


    Ich will euch heute zeigen wie man Tore erstellen kann die dann per Befehl zu öffnen sind und sich automatisch wieder schließen.


    Aufbau des TuT's


    Ich werde hier immer den passenden PAWN-Code Posten und seinen Aufbau dann erklären.


    Bsp.:
    SendClientMessage(playerid, 0xFFFFFF00, "Dies ist ein Test");
    Mit der Funktion SendClientMessage senden wir an die playerid den Text "Dies ist ein Test" in weiß.


    Das TuT


    Als erstes müssen wir ein paar Informationen unter unseren Includes einbringen.


    #define GELB 0xFFFF00AA


    new torname;


    forward tornametimer();
    Als mit "#define" definieren wir das Wort "GELB" mit dem Farbcode "0xFFFF00AA".
    Dann erstellen wir noch die Variable "torname" in der wir später die ObjectID speichern.
    Und wir erstellen schonmal das "forward" für den Timer der das Tor wieder schließen soll.


    Nun müsst ihr in eurem ObjoctEditor ein Tor erstellen und es geschlossen von eine Tür oder Ähnliches stellen.
    In diesem TuT erstellen wir das Tor am Area51 vom Seitenausgang. Nun bekommt ihr von eurem Map Editor die Koordinaten des Tores im geschlossenen zustand.
    public OnGameModeInit()
    {
    torname = CreateObject(988, 96.60, 1920.00, 18.16, 0.00, 0.00, 270.00);
    return 1;
    }
    Mit "CreateObject" ertsellen wir nun des Tor an der ausgewählte Position. (Damit es immer erstellt wird kommt es ins OnGameModeInit)
    Mit dem Teil "torname =" stecken wir die ObjectID des Tores in die oben erstellte Variable "torname".
    Das eigentliche Tor ist nun erstellt, nur das man es noch nicht öffnen kann.


    Daher verschieben wir das Tor nun im MAP Editor so das es offen ist und Speichern diese Position ab.
    Jetzt erstellen wir den Befehl um es zu öffnen.
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp(cmdtext, "/area", true))
    {
    MoveObject(torname, 96.60, 1916.00, 18.16, 2);
    SetTimer("tornametimer", 10000, false);
    SendClientMessage(playerid, GELB, "Du hast das Tor des Area51 geöffnet, es schließt sich in 10 Sekunden wieder.");
    return 1;
    }
    return 0;
    }
    Mit der Funktion "MoveObject" schieben wir das Tor nun an die geöffnete Position mit der Geschwindigkeit 2.
    Dann starten wir den Timer mit 10 Sek. der das Tor wieder schließen soll.
    Zu aller letzt schicken wir dem Spieler noch eine Nachricht in Gelb das er das Tor geöffnet hat und das es sich wieder schließt.


    Damit sich das Tor auch nach 10 Sek. wieder schließt erstellen wir nun noch das public zum Timer.
    Dieses könnt ihr irgent wo im Script unter dem forward einsetzen.
    public tornametimer()
    {
    MoveObject(torname, 96.60, 1920.00, 18.16, 2);
    }
    Das schiebt das Tor dann wieder mit der Geschwindigkeit 2 an die Originalposition.


    Das war es dann auch schon.
    Nun kann das Tor mit dem Befehl /area öffnen und es schließt sich nach 10 Sek. wieder.
    Ich hoffe das TuT hat euch geholfen. Kritik, Vorschläge und Wünsche sind gerne gesehen. Bei gefallen bitte bedanken

    Hilfen:


    SendClientMessage
    MoveObject
    OnGameModeInit
    OnPlayerCommandText
    CreateObject
    SetTimer

    Funkspiel Zevens RolePlay - Das kostenlose RolePlay-Script für deinen SA:MP
    Homepage: psteffen.de
    Forum: board.psteffen.de
    Teamspeak: psteffen.de:9977
    Test SA:MP Server: psteffen.de:7777


    7 Mal editiert, zuletzt von Patric () aus folgendem Grund: Fehler entfernt, strtok entfernt

  • hab alles gemacht wie im TuT bei mir kackt immer pawno ab -.-


    gescriptet
    public OnGameModeInit()
    {
    fstor = CreateObject(980, 777.478515625, -1384.8876953125, 13.871212005615, 0, 0, 0);
    return 1;
    }
    new fstor;
    public fstortimer()
    {
    MoveObject(fstor, 777.478515625, -1384.8876953125, 13.871212005615, 2);
    }

    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp("/fstor", cmd, true) == 0)
    {
    MoveObject(fstor, 777.478515625, -1384.8876953125, 13.871212005615, 2);
    SetTimer("tornametimer", 3000, false);
    SendClientMessage(playerid, GELB, "Du hast das Rausfahr Tor geöffnet , es schließt sich in 13 Sekunden wieder.");
    return 1;
    }
    return 0;
    }

  • du musst die Objecte auf den PWN Code compilen
    http://gtamap.delux-host.com/converter/ da ist eine Compiler seite
    such dir da PWN Code for SA:MP
    dann gehste oben auf durchsuchen gibst den pfad an wo du MTA installiert hast
    und suchst dann deine Map die compilst du und wolla ein PWN code


    TIPP
    wenn du mehrere objecte machst mach die Tore (zustand offen und zu) immer als letztes so haste immer einen überblick ^^

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ja ist im Prinzip ganz einfach..
    Mappe das Tor, nenne es Torzu,
    kopiere das Tor und verschiebe es an die gewünschte Stelle und nenne dieses Tor Toroffen,


    dann konverte alles und du hast die Koordinaten. Entweder vom offenen oder vom Tor zu.

  • Also.


    Wer schonmal gemappt hat sollte das wissen.


    Man muss nur ein Tor im Map-Editor einfügen (in geschlossener Pos) und kann dann die Koordinaten aus dem Editor abfragen.
    Das selbe nochmal in offener Pos und schon hast du alles was du willst.


    @[GSM]Shufro


    Du musst auch das forward reinmachen
    forward fstortimer();
    um den Gestarteten Timer für den du das public aufgemacht hast auch weiterzugeben.


    Außerdem muss das new fstor; vor das public OnGameModeInit()
    {
    fstor = CreateObject(980, 777.478515625, -1384.8876953125, 13.871212005615, 0, 0, 0);
    return 1;
    }


    Achso und 13 Sekunden sind 13000 Millisekunden.


    Und wenn du das Public schon umbenennst dann solltest du das auch im Timer tuhen


    SetTimer("fstortimer", 13000, false);


    Und du hast auch hoffentlich den Wert GELB defined

    Funkspiel Zevens RolePlay - Das kostenlose RolePlay-Script für deinen SA:MP
    Homepage: psteffen.de
    Forum: board.psteffen.de
    Teamspeak: psteffen.de:9977
    Test SA:MP Server: psteffen.de:7777


    Einmal editiert, zuletzt von Patric ()

  • Nabend & Guude,


    1. 10/10


    2. Wenn ihr schon Antworten gebt, dann bitte nach der Andreas Schmidt (BKO) Regel: 2 Sekunden nachdenken, dann reden (bzw. schreiben)


    Das TuT enthält soweit keine Fehler und funktioniert ohne Probleme, wenn ihr es auch so übernehmt, wie es Patric geschrieben hat!


    In diesem Sinne, [root@DämlicheThreadAntworter etc]# ./Gehirn
    -bash: ./Gehirn: No such file or directory