Simples Autohaus 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
  • Ja, vollkommen richtig, ich bin neu hier im Board. Und nicht nur das, ich bin auch noch ein totaler Anfänger was das Scripten betrifft. Dennoch möchte ich Euch gerne einmal zeigen, was ich heute Nachmittag gemacht habe. Ich freue mich über jedes Feedback und jeden konstruktiven Gedanken, bewertet das Ganze bitte.


    Zum Thema selber: Ich versuche mich gerade an einem eigenen RL-Server. Neben diversen anderen Comannd's habe ich heute Nachmittag ein simples Script für ein Autohaus geschrieben. Es ist nicht wirklich besonders, man kann ein Auto über ein Menü spawnen, das aufgerufen wird wenn man ein Pickup betritt. Das Auto selbst wird dann an einem im Script festgelegten Ort gespawnt. Sollte man den Kaufpreis nicht in Bar besitzen, reagiert das Script mit einer Meldung - das Auto wird folglich auch nicht gespawnt.


    Das hier müsst Ihr unter den #defines platzieren. Es erzeugt den Platz für Pickup und Menü.
    new OttoPickup;
    new Menu:OttoMenu;


    Jetzt erstellen wir aber das eigentliche Pickup sowie das Menü. Ich habe verschiedene Modelle zur Auswahl eingefügt. Ich gehe hier einmal nicht weiter auf die einzelnen Parameter ein, die sollte man eigentlich kennen.
    OttoPickup = CreatePickup(1274, 1, -1658.2512,1207.5952,7.2500);
    OttoMenu = CreateMenu("Otto's Sportwagen", 2, 200.0, 100.0, 150.0, 150.0);
    AddMenuItem(OttoMenu, 0, "Bullet");
    AddMenuItem(OttoMenu, 0, "Banshee");
    AddMenuItem(OttoMenu, 0, "Infernus");
    AddMenuItem(OttoMenu, 0, "Cheetah");
    AddMenuItem(OttoMenu, 0, "Turismo");
    AddMenuItem(OttoMenu, 0, "Super GT");


    AddMenuItem(OttoMenu, 1, "65.000 $");
    AddMenuItem(OttoMenu, 1, "80.000 $");
    AddMenuItem(OttoMenu, 1, "115.000 $");
    AddMenuItem(OttoMenu, 1, "135.000 $");
    AddMenuItem(OttoMenu, 1, "140.000 $");
    AddMenuItem(OttoMenu, 1, "150.000 $");
    return 1;
    }


    Da ich das Menü nicht über ein Command aufrufe, sondern durch ein Pickup erscheinen lasse, setze ich Folgendes in den Callback OnPlayerPickUpPickup ein, um das Menü aufrufen zu können.
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    ShowMenuForPlayer(OttoMenu, playerid);


    }


    Kommen wir zum eigentlichen Teil des Ganzen. Dem Auswählen der Autos und den daraus resultierenden Aktionen, Rückmeldungen, etc. Dieser Teil des Scriptes wird im Callback OnPlayerSelectedMenuRow eingefügt.
    public OnPlayerSelectedMenuRow(playerid, row)
    {
    new Menu:CurrentMenu = GetPlayerMenu(playerid);

    if(CurrentMenu == OttoMenu)
    {
    switch(row)
    {
    case 0: //Bullet
    if (IsPlayerConnected(playerid))
    {
    if (GetPlayerMoney(playerid) >= 65000)
    {
    CreateVehicle(541,-1706.5662,1208.4026,25.1070,90.0,6,0,60000);
    GivePlayerMoney(playerid, -65000);
    SendClientMessage(playerid, INFORMATION, "Du hast ein Auto gekauft! Hole es ab!");
    }
    else
    {
    SendClientMessage(playerid, ERROR, "Du hast nicht genügend Geld!");
    }
    }
    case 1: //Banshee
    if (IsPlayerConnected(playerid))
    {
    if (GetPlayerMoney(playerid) >= 80000)
    {
    CreateVehicle(429,-1706.5662,1208.4026,25.1070,90.0,6,0,60000);
    GivePlayerMoney(playerid, -80000);
    SendClientMessage(playerid, INFORMATION, "Du hast ein Auto gekauft! Hole es ab!");
    }
    else
    {
    SendClientMessage(playerid, ERROR, "Du hast nicht genügend Geld!");
    }
    }
    case 2: //Infernur
    if (IsPlayerConnected(playerid))
    {
    if (GetPlayerMoney(playerid) >= 115000)
    {
    CreateVehicle(411,-1706.5662,1208.4026,25.1070,90.0,6,0,60000);
    GivePlayerMoney(playerid, -115000);
    SendClientMessage(playerid, INFORMATION, "Du hast ein Auto gekauft! Hole es ab!");
    }
    else
    {
    SendClientMessage(playerid, ERROR, "Du hast nicht genügend Geld!");
    }
    }
    case 3: //Cheetah
    if (IsPlayerConnected(playerid))
    {
    if (GetPlayerMoney(playerid) >= 135000)
    {
    CreateVehicle(415,-1706.5662,1208.4026,25.1070,90.0,6,0,60000);
    GivePlayerMoney(playerid, -135000);
    SendClientMessage(playerid, INFORMATION, "Du hast ein Auto gekauft! Hole es ab!");
    }
    else
    {
    SendClientMessage(playerid, ERROR, "Du hast nicht genügend Geld!");
    }
    }
    case 4: //Turismo
    if (IsPlayerConnected(playerid))
    {
    if (GetPlayerMoney(playerid) >= 140000)
    {
    CreateVehicle(451,-1706.5662,1208.4026,25.1070,90.0,6,0,60000);
    GivePlayerMoney(playerid, -140000);
    SendClientMessage(playerid, INFORMATION, "Du hast ein Auto gekauft! Hole es ab!");
    }
    else
    {
    SendClientMessage(playerid, ERROR, "Du hast nicht genügend Geld!");
    }
    }
    case 5: //Super GT
    if (IsPlayerConnected(playerid))
    {
    if (GetPlayerMoney(playerid) >= 150000)
    {
    CreateVehicle(506,-1706.5662,1208.4026,25.1070,90.0,6,0,60000);
    GivePlayerMoney(playerid, -150000);
    SendClientMessage(playerid, INFORMATION, "Du hast ein Auto gekauft! Hole es ab!");
    }
    else
    {
    SendClientMessage(playerid, ERROR, "Du hast nicht genügend Geld!");
    }
    }
    }
    }
    }
    Was ich hier gemacht habe lässt sich relativ leicht erklären: Zuerst lasse ich mir vom Server die aktuelle ID des Spielers zurückliefern. Daraufhin prüfe ich, ob der Spieler genug Geld besitzt, um sich den entsprechenden Wagen kaufen zu können. Hier kann man später im Script auch den Kaufpreis festlegen. Nun gibt es zwei Optionen:

    • Der Spieler hat genug Geld. Sein Wagen wird nun am festgelegten Spawnpoint erstellt. Daraufhin verändert das Script sein Geld um den Kaufpreis (natürlich mit - davor). Anschließend lasse ich noch eine einfache Textmeldung ausgeben, dass das Auto erstellt wurde und er es abholen kann.
    • Der Spieler hat nicht genug Geld. Es wird eine Meldung ausgegeben, dass er nicht genug Geld besitzt. Es wird kein Wagen gespawnt!




    Einmal editiert, zuletzt von Dadaen ()

  • Wie siehts mit ein paar Screens aus?


    Gibts es das noch für die ganz neuen als FS?

    Sie brauchen Hilfe bei Linux oder Windows Servern? Wissen nicht, wie man am besten ein Forum o. a. installiert? Dann schreiben Sie mir eine PN und ich versuche Ihnen zu helfen!

  • Wie siehts mit ein paar Screens aus?


    Gibts es das noch für die ganz neuen als FS?

    Screens kann ich jetzt gleich gerne uppen.
    Ich habe es bisher nur direkt in meinem Gamemode integriert, mit Filterscripts habe ich noch nichts gemacht. Kann es aber gerne mal versuchen ;)


  • Das trifft es genau ^^
    Wenn man mal den Code liest sieht man, dass wenn man sich ein Auto kauft einfach Geld abezogen wird und ein Auto gespawnt wird.
    Wo wird festgelegt, dass er ein Auto hat? Wo steht, dass das auto an seinem respawn punkt spawnt?


    Also viel ist das nicht

    Schau's dir doch mal an:


    Wie Die sicherlich auffällt, prüfe ich als erstes, ob der Spieler den Kaufpreis von 65.000 $ besitzt. Andernfalls wird nämlich eine Meldung ausgeworfen, dass dieser nicht genügend Geld hat!


    Hat der Spieler jedoch den Kaufpreis in bar verfügbar, wird ein Auto mit der ID 541 (Bullet) an den von mir festgelegten Koordinaten gespawnt (-1706.5662,1208.4026,25.1070). Danach wird dem Spieler der Kaufpreis abgezogen und eine Meldung ausgegeben!


    Ich spreche hier keinesfalls davon, dass dem User das Auto überschrieben wird oder er gar einen /savecarspawn erstellen kann, das habe ich aber auch nie angesprochen! Es handelt sich hierbei lediglich um ein Car-Spawn (Buy, whatever) System.

  • xD viel zu umsteändlich.. bzw viel zu einfach.. :D Das geht auch mit weniger Code^^

  • Eine frage das mit den defines muss ich doch so hin machen bei die gansen defines

    #define new OttoPickup;
    #define new Menu:OttoMenu;


    Oder muss das unten wo ich unter den defines hab


    zb der anfang ist so
    bei mir:


    //------------------------------------------------------------------------------------------------------
    new timesrobbed[MAX_PLAYERS];
    new fbiairport;
    new lcntor;
    new hitmantor;
    new Area;
    new Jailtor;
    new presidententor;
    new cnntor;
    new taxitor;
    new sanitor;
    new yakuzator;
    new Text:www; // Werbe Text HUD


    und dan darüber


    new OttoPickup;
    new Menu:OttoMenu;


    ????



    Und dan das mit dem



    OttoPickup = CreatePickup(1274, 1, -1658.2512,1207.5952,7.2500);
    OttoMenu = CreateMenu("Otto's Sportwagen", 2, 200.0, 100.0, 150.0, 150.0);
    AddMenuItem(OttoMenu, 0, "Bullet");
    AddMenuItem(OttoMenu, 0, "Banshee");
    AddMenuItem(OttoMenu, 0, "Infernus");
    AddMenuItem(OttoMenu, 0, "Cheetah");
    AddMenuItem(OttoMenu, 0, "Turismo");
    AddMenuItem(OttoMenu, 0, "Super GT");


    AddMenuItem(OttoMenu, 1, "65.000 $");
    AddMenuItem(OttoMenu, 1, "80.000 $");
    AddMenuItem(OttoMenu, 1, "115.000 $");
    AddMenuItem(OttoMenu, 1, "135.000 $");
    AddMenuItem(OttoMenu, 1, "140.000 $");
    AddMenuItem(OttoMenu, 1, "150.000 $");
    return 1;
    }





    wohin muss das


    und dan wen das gemacht is hab ich dan ein autohaus???

  • hallo,
    ich bekomme ein warning heir die zeile
    OttoPickup = CreatePickup(1274, 1, -1658.2512,1207.5952,7.2500);


    warning 204: symbol is assigned a value that is never used: "OttoPickup"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.


    Danke

  • wen du schon so was machst dan pack doch bitte ein carsystem rein weil das suche ich mit /carlock und /carkey /und /parken das wer Hammer 8o geil aber sowas ne danke :huh:

  • hmm cooles teil! doch leider habe ich ein problem !!
    ich habe das alles nachgebaut und weiß ja auch wo das hin gehört etc etc :)
    und joa jezt kommt er hässliche fehler:

    C:\Users\Terror\Desktop\AutohausBeta.pwn(194) : error 017: undefined symbol "OttoMenu"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

    kann wer helfen???? hab alles eig richtig gemacht !!