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
  • Hallo Breadfischer,


    heute möchte ich euch ein Tutorial zeigen, dies besser als alle anderen die ich gemacht habe sind.
    In diesem Tutorial möchte euch erklären wie man ein Drivein erstellt, bzw. ein Eis, HotDog Stand oder was auch immer.


    Natürlich fangt man immer mit einem forward an. (Denn braucht man um den gewünschten Text an der gewünschten Postion angezeigt zu bekommen)
    forward AtNAME(playerid); // Bei NAME gibts du ein was du erstellen willst


    Dann erstellen wir ein weiteres forward, denn braucht man um den User unzufreezen und Volles Leben zu geben oder was auch immer.
    forward NAME(playerid); // Bei NAME gibts du ein was du bei dem ersten forward eingegeben hast


    Noch ein forward für den Text der dann bei dem User erscheinen soll
    forward CustomPickups();


    Dann erstellen wir ein Befehl unter public OnPlayerCommandText(playerid, cmdtext[]), dies bewirkt, was für ein Befehl man schreiben muss, dass die Funktionen bei dem erstem ersten forward sowie bei dem zweiten erscheinen.
    if(strcmp(cmd, "/***", true) == 0) // Bei *** füge dein wunschbefehl ein
    {
    if(IsPlayerConnected(playerid)) // User muss eingeloggt sein
    {
    if(!IsPlayerInAnyVehicle(playerid)) // Der User muss in einem Fahrzeug sein ( Einfach entfernen, wenn dies nicht sein soll
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du musst in einem Fahrzeug sein!");
    return 1;
    }
    if(AtNAME(playerid)) // Hier der Name wie bei den forwards
    {
    SendClientMessage(playerid, COLOR_GREEN," Willkommen beim *** "); // Tippe hier ein was erscheinen soll bei erfolgreicher eingabe des Befehls
    SendClientMessage(playerid, COLOR_BLUE,"___________________________________");
    SendClientMessage(playerid, COLOR_WHITE,"Bitte warten sie bis ihr essen zubereitet ist...");
    SetTimerEx("NAME",7000,0,"i",playerid); // Das ist der Timer, wie lang er gefreezt ist. Bei NAME das gleiche wie bei den forwards
    TogglePlayerControllable(playerid, 0); // Hier wird der User gefreezet
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du bist nicht beim ***"); //Füge hier dein Wunschtext ein.
    return 1;
    }
    }
    return 1;
    }


    dann erstellen wir ein neues public weit unten am Script
    public CustomPickups()
    {
    return 1;
    }


    Unter dieses public fügen wir folgendes ein
    if(AtNAME(playerid)) // Das gleiche wie bei den forwards
    {
    GameTextForPlayer(playerid, "~w~Tippe ~n~~g~/***~w~~n~ um dir was beim Drive-in Schalter zu bestellen.", 5000, 3); // bei *** füge den Befehl, denn du oben eingesetzt hast
    }


    Dann wird ein weiteres public eröffnet, dies wird die funktionen des drivein schalters oder was auch immer hergeben
    public drivein(playerid)
    {
    SetPlayerHealth(playerid,100.0); // Hier bekommt der User 100% HP = Volles Leben
    SendClientMessage(playerid, COLOR_YELLOW,"Ihr Essen ist fertig, Guten Appetit."); // Die nachricht wenn er sich wieder bewegen kann, bzw der Timer abgelaufen ist
    TogglePlayerControllable(playerid, 1); // Hier ist er Unfreezed
    }


    Dann erstellen wir ein stock, der gibt die Postionen an, wo die person stehen muss um diesen befehl betätigen zu können.
    stock AtNAME(playerid) // name wie bei den forwards
    {
    if(IsPlayerInRangeOfPoint(2.0, playerid, -2353.3438,-153.7528,35.1388)) // Wo er stehen muss um den Befehl bzw. den Drivein zu benutzen
    {
    return 1;
    }
    return 0;
    }




    Ich hoffe habe es diesmal ausfürhlich und klar erklärt.


    Bei benötgte Hilfe helfe ich euch gerne. Fehler dürft ihr auch melden oder auch fragen stellen.


    //EDIT: Tutorial Godfather oder auch Blank Script angepasst, sollen keine Probleme mehr Auftauchen.
    // EDIT: Filterscript wurde hochgeladen, Klicke hier um zum Showroom zu gelangen

    4 Mal editiert, zuletzt von Tochnas ()

  • naja nich getestet, aber sieht gut aus ^^ bekommst du das auch iwie hin, das man wenn man den Befehl am Drivein macht, dann n paar Sekunden gefreezt is und die Message kommt "Essen wird zubereitet - einen Moment bitte"?


    wenn du das schaffst sag ich TOP Arbeit, wenn dann auch tut XD

  • dies ist alles mit alles drin


    Text bei zubereitung
    SendClientMessage(playerid, COLOR_GREEN," Willkommen beim *** "); // Tippe hier ein was erscheinen soll bei erfolgreicher eingabe des Befehls
    SendClientMessage(playerid, COLOR_BLUE,"___________________________________");
    SendClientMessage(playerid, COLOR_WHITE,"Bitte warten sie bis ihr essen zubereitet ist...");


    Freezen
    TogglePlayerControllable(playerid, 0); // Hier wird der User gefreezet

  • if(strcmp(cmd, "/***", true) == 0) // Bei *** füge dein wunschbefehl ein
    {
    if(IsPlayerConnected(playerid)) // User muss eingeloggt sein
    {
    if(!IsPlayerInAnyVehicle(playerid)) // Der User muss in einem Fahrzeug sein ( Einfach entfernen, wenn dies nicht sein soll
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du musst in einem Fahrzeug sein!");
    return 1;
    }
    if(AtNAME(playerid)) // Hier der Name wie bei den forwards
    {
    SendClientMessage(playerid, COLOR_GREEN," Willkommen beim *** "); // Tippe hier ein was erscheinen soll bei erfolgreicher eingabe des Befehls
    SendClientMessage(playerid, COLOR_BLUE,"___________________________________");
    SendClientMessage(playerid, COLOR_WHITE,"Bitte warten sie bis ihr essen zubereitet ist...");
    SetTimerEx("NAME",7000,0,"i",playerid); // Das ist der Timer, wie lang er gefreezt ist. Bei NAME das gleiche wie bei den forwards
    //SetPlayerVirtualWorld(playerid,playerid);
    TogglePlayerControllable(playerid, 0); // Hier wird der User gefreezet
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du bist nicht beim ***"); //Füge hier dein Wunschtext ein.
    return 1;
    }
    }
    return 1;
    }


    Soweit sogut, aber wie wär's mit IsPlayerInRangeOfPoint, der soll ja nicht in der Sahara, beim Esel 'n Burger bestellen oder? :'D

  • danke playerid habe es zwar drin, aber nicht beschrieben. Habe es verbessert steht übrigens ganz unten im tutorial

  • Okay , gutes Tutorial


    Aber ein Drivein ist für gute Scripter kein großer Aufwand.

  • Hast du einen filterscript, das alles da drin ist und das auch auf The godfather geht? Sonst guter tutorial!

  • Es schaffen sogar noobs eig ein Driveinsystem zu errichten
    So ein Tutorial gibts schon mehrfach is kein Besonderes Driveinsystem.
    1/10

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Vielen Dank, für die Verbesserung, ich werde euch ein FS erstellen

  • Habe das Tutorial jetzt auf Godfather und Blankscript Kompatipel gemacht,
    dah es Script gibt wo es kein PlayerToPoint beinhaltet ist. Das Filterscript wird Morgen hochgeladen. (In dem Showroom)


    Link wird hier mit eingebunden, werde euch benachrichtigen !

  • ich habe diese 3 errors und weiß nicht wie die wegehen bitte dringend um hilfe


    C:\Users\Admin\Desktop\Spiele\Server 2#\gamemodes\Script200.pwn(480) : error 004: function "AtMenu" is not implemented
    C:\Users\Admin\Desktop\Spiele\Server 2#\gamemodes\Script200.pwn(779) : error 017: undefined symbol "Menu"
    C:\Users\Admin\Desktop\Spiele\Server 2#\gamemodes\Script200.pwn(781) : error 017: undefined symbol "playerid"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

  • Bitte füge mal hier die Zeile ein wo die Errors sind


    //Edit


    C:\Users\Admin\Desktop\Spiele\Server 2#\gamemodes\Script200.pwn(779) : error 017: undefined symbol "Menu"


    Der Befehl "Menu" wurde im Script nicht definiert




    C:\Users\Admin\Desktop\Spiele\Server 2#\gamemodes\Script200.pwn(781) : error 017: undefined symbol "playerid"


    Der Befehl "playerid" wurde im Script nicht definiert, da empfehle ich dir oben bei forward folgendes zu machen
    forward NAME(playerid) // Damit solte playerid definiert sein

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