Einen Drivein erstellen.

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
  • Sehr geehrte Community,


    Heute werde ich euch zeigen, wie ihr ganz leicht ein Drivein erstellen könnt.


    Nun der Beginn:


    Inhalt:


    1.0 Forwards


    2.0 Public


    3.0 Create3DTextLabel


    4.0 Befehl


    ---


    1.0 Forwards
    Als erstes musst du ganz oben im Script folgende Forwards hinzufügen:


    forward IsAtDrivein(playerid);
    forward Drivein(playerid);


    2.0 Public
    Als zweites fügst du folgende zwei Public's ein:


    public Drivein(playerid)
    {
    SetPlayerHealth(playerid,100.0); // Das Leben wird auf 100 Prozent gesetzt.
    GivePlayerMoney(playerid,-20); // 20$ werden für das Essen abgezogen.
    SendClientMessage(playerid, COLOR_GRAD4,"Personal: Ihr Essen wurde zubereitet! Auf wiedersehen, und einen Guten Hunger!");
    TogglePlayerControllable(playerid, 1); // Der Spieler wird gefreezt.
    GameTextForPlayer(playerid, "~r~ -20$", 3000, 1); // Ein Gametext.
    }


    public IsAtDrivein(playerid)
    {
    if(IsPlayerConnected(playerid)) // Der Spieler muss eingeloggt sein.
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0,801.5522, -1628.91, 13.3828) || IsPlayerInRangeOfPoint(playerid,10.0,1209.958,-896.7405, 42.9259))
    {
    return 1;
    }
    else if(IsPlayerInRangeOfPoint(playerid,10.0,-2341.86, 1021.184, 50.6953) || IsPlayerInRangeOfPoint(playerid,10.0,2485.291, 2022.611, 10.8203))
    {
    return 1;
    }
    else if(IsPlayerInRangeOfPoint(playerid,10.0,1859.496, 2084.797, 10.8203) || IsPlayerInRangeOfPoint(playerid,10.0,-2349.49, -152.182, 35.3203))
    {
    return 1;
    }
    else if(IsPlayerInRangeOfPoint(playerid,10.0,2409.651, -1488.65, 23.8281) || IsPlayerInRangeOfPoint(playerid,10.0,2377.733, -1909.27, 13.3828))
    {
    return 1;
    }
    else if(IsPlayerInRangeOfPoint(playerid,10.0,2375.014, 2021.186, 10.8203))
    {
    return 1;
    }
    }
    return 0;
    }


    3.0 Create3DTextLabel
    Ich habe mich mit Absicht für 3DTextLabel's entschieden, da ich finde es wirkt besser und "neuer"
    Diese Create3DTextLabel fügst du unter den CreatePickUps ein:



    Create3DTextLabel("Drivein Schalter\nNutzen sie /drivein damit wir Ihre bestellung aufnehmen können!",0xFFFF00AA,2375.014, 2021.186, 10.8203,15.0,0,0);
    Create3DTextLabel("Drivein Schalter\nNutzen sie /drivein damit wir Ihre bestellung aufnehmen können!",0xFFFF00AA,2409.651, -1488.65, 23.8281,15.0,0,0);
    Create3DTextLabel("Drivein Schalter\nNutzen sie /drivein damit wir Ihre bestellung aufnehmen können!",0xFFFF00AA,2377.733, -1909.27, 13.3828,15.0,0,0);
    Create3DTextLabel("Drivein Schalter\nNutzen sie /drivein damit wir Ihre bestellung aufnehmen können!",0xFFFF00AA,1859.496, 2084.797, 10.8203,15.0,0,0);
    Create3DTextLabel("Drivein Schalter\nNutzen sie /drivein damit wir Ihre bestellung aufnehmen können!",0xFFFF00AA,-2349.49, -152.182, 35.3203,15.0,0,0);
    Create3DTextLabel("Drivein Schalter\nNutzen sie /drivein damit wir Ihre bestellung aufnehmen können!",0xFFFF00AA,-2341.86, 1021.184, 50.6953,15.0,0,0);
    Create3DTextLabel("Drivein Schalter\nNutzen sie /drivein damit wir Ihre bestellung aufnehmen können!",0xFFFF00AA,2485.291, 2022.611, 10.8203,15.0,0,0);
    Create3DTextLabel("Drivein Schalter\nNutzen sie /drivein damit wir Ihre bestellung aufnehmen können!",0xFFFF00AA,801.5522, -1628.91, 13.3828,15.0,0,0);
    Create3DTextLabel("Drivein Schalter\nNutzen sie /drivein damit wir Ihre bestellung aufnehmen können!",0xFFFF00AA,1209.958,-896.7405, 42.9259,15.0,0,0);


    4.0 Befehl
    Als letztes erstellst du den Befehl, ohne diesen Befehl funktioniert nichts. Ist ja logisch. ^^


    if(strcmp(cmd, "/Drivein", true) == 0)
    {
    if(IsPlayerConnected(playerid)) // Der Spieler muss eingeloggt sein.
    {
    if(IsAtDrivein(playerid)) // Der Spieler muss an einem DriveIn sein.
    {
    SendClientMessage(playerid, COLOR_LIGHTBLUE," Willkommen am Drivein! Ihre bestellung wird aufgenommen!");
    SendClientMessage(playerid, COLOR_LIGHTBLUE," Bitte warten Sie. Ihr Essen wird zubereitet.");
    SendClientMessage(playerid, COLOR_LIGHTBLUE," Bitte haben Sie ein wenig Geduld.");
    SetTimerEx("Drivein",7000,0,"i",playerid); // Timer wielang der Spieler warten muss. *
    TogglePlayerControllable(playerid, 0); // Der Spieler wird unfreezt.
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du bist an keinem Drivein !"); // Meldung wenn man an keinem Drivein Steht.
    return 1;
    }
    }
    return 1;
    }


    Ich habe einen Timer hinzugefügt, da es einfach realistischer wirkt und man nicht einfach direkt losfahren kann.
    Das ist ziemlich praktisch, wenn man beispielsweise auf einer Jagd ist. Damit der Täter ( der sich healt ) nicht direkt abhauen kann.


    Info:


    Fragen werden gerne beantwortet.
    Falls das hier fehl am Platz ist, bzw. es dies hier schon gibt kann dies gerne geschlossen / gelöscht werden.

  • Moin
    [ SCRIPTING ] Drivein erstellen


    schon mal geshn ?


    if(IsPlayerConnected(playerid)) // Der Spieler muss eingeloggt sein.{



    das braucht man nicht da wen er nicht conect ist kan er auch nich fahren (sieht keine cars)


    Bewertung lass ich mal weck das das nich grad gut erklärt ist und einfach nur copypaste



    /edit
    dazu kommt das ist gar kein Drive in
    man kann da auch durch laufen (ohne auto)



    es fehlt ne abfrage ob er im auto ist



    /edit 2
    grad gesehn
    soltest ändern neue verwirdt das

    Zitat

    TogglePlayerControllable(playerid, 0); // Der Spieler wird unfreezt.

    im befehl wird er gefreezt
    0 = Freeze
    1= Unfreeze



    MFG waidi

  • Richtig xD
    Und wie lustig ist das du macht beim cmd 0 unfreezt hin xD hier wird er aber gefreezet, genau das gleiche beim Public Drivein
    EDIT//

    Einmal editiert, zuletzt von Movie_Lol ()

  • Hi, ich kriege wenn ich den Code bei
    if(strcmp(cmd, "/Drivein", true) == 0)

    einen Error
    und zwar

    Zitat

    C:\Programme\Rockstar Games\GTA San Andreas\Server\RL\gamemodes\rl.pwn(815) : error 017: undefined symbol "cmd"


    und
    if(IsPlayerConnected(playerid))
    überprüft nicht ob ein Spieler eingeloggt ist, sondern ob er aufm Server ist :huh:


    /edit Wiki Einträge ;)statt Cmd Cmdtext & IsPlayerConnected

  • Lieber WAIDI,


    Es ist mein erstes Tutorial und ich denke es ist verständlich, dass man kein 1337 Tutorial schreiben wird?
    Nein, das Tutorial habe ich noch nicht gesehen.
    Und zum
    if(IsPlayerConnected(playerid))


    Ich füge es mit absicht immer ein, es ist klar das sie keine Fahrzeuge fahren können wenn sie nicht eingeloggt sind.
    Aber schaden tut's ja auch nicht. ;)


    // Edit:


    @ ]hp[


    Tausch die Zeile:
    if(strcmp(cmd, "/Drivein, true) == 0)
    mal in
    if(strcmp(cmdtext, "/Drivein", true) == 0)
    um
    Und setze den Command unter OnPlayerCommandText

    Einmal editiert, zuletzt von LiamRowley ()

  • Hehe Nice 8/10
    Aber LoH Script Kopiert oder? -.-
    Aber sonst Gut!

  • Hallo
    bei mir kommt ein error


    C:\Users\Administrator\Documents\samp server\gamemodes\gf.pwn(1456) : error 017: undefined symbol "cmdtext"


    die zeile sieht bei mir so aus:


    if(strcmp(cmdtext, "/Drivein", true) == 0) // das ist die error zeile angeblich
    {
    if(IsPlayerConnected(playerid)) // Der Spieler muss eingeloggt sein.
    {
    if(IsAtDrivein(playerid)) // Der Spieler muss an einem DriveIn sein.
    {
    SendClientMessage(playerid, COLOR_LIGHTBLUE," Willkommen am Drivein! Ihre bestellung wird aufgenommen!");
    SendClientMessage(playerid, COLOR_LIGHTBLUE," Bitte warten Sie. Ihr Essen wird zubereitet.");
    SendClientMessage(playerid, COLOR_LIGHTBLUE," Bitte haben Sie ein wenig Geduld.");
    SetTimerEx("Drivein",7000,0,"i",playerid); // Timer wielang der Spieler warten muss. *
    TogglePlayerControllable(playerid, 1); // Der Spieler wird unfreezt.
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du bist an keinem Drivein !"); // Meldung wenn man an keinem Drivein Steht.
    return 1;
    }
    }
    return 1;
    }


    für hilfe würde ich mich sehr freuen :)

  • Kannst du englisch @ rockthisme?


    Zitat

    undefined symbol "cmdtext"


    if (strcmp("/drivein", cmdtext, true, 8) == 0)
    {
    //Was passiert?...
    }

    Du suchst eine nette Community, ein hilfsbereites Team & einen Server, wo es Spaß macht, drauf zu spielen?
    Dann bist du bei Sunrise - Reallife genau richtig!

  • Das Tutorial ist wie man auch an den Kommentaren der anderen sieht , nicht neulingsfreundlich und daher auch uninformativ für Neulinge von pawn


    also daher 2 / 10