[Autohaussystem] zum Einsteigen in Autos [GF] by ElektroFreak

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,
    da ich selber kein richtiges Thema dazu gefunden habe und selber hilfe brauchte, habe ich mich entschlossen mein Autohaussystem für ein GF zu Verfügung zu stellen!
    Hier im Thema geht es nur darum wie man ein Auto kauft bzw indem man in ein Auto einsteigt und ein Dialog erscheint wo die Daten des Fahrzeuges zu sehen sind.


    Wichtig ist:
    Das alte system darf NICHT entfernt werden sondern nur der Koffer!


    Screens:




    Ich zeige euch alles an einer Faggio



    Also fangen wir mal an...:




    Oben im Script:


    new bFaggio; // das b steht nur für buy. Damit man z.b. auch eine Vermietung machen kann wo ihr einfach da nur vFaggio schreiben müsst.


    bFaggio = AddStaticVehicle( 462, 555.880,-1290.119,16.848,0.064, -1, -1); //da musst du dann halt nur die coords ändern und die car nummer (hier 462 = faggio)


    Bei den defines:


    #define FAGGIO 155 // hier wird der dialog difiniert bzw dialog FAGGIO die nummer ist die zahl an welche dran kommt also wenn bei dir der letze define die nummer 100 hat dann musst du hier dann 101 nehmen also damit sie nicht doppelt sind.


    bei OnPLayerStateChange





    if(IsPlayerInVehicle(playerid, bFaggio))
    {
    FreezePlayer(playerid);
    ShowPlayerDialog(playerid, FAGGIO, DIALOG_STYLE_MSGBOX, "Faggio", "Fahrzeug: Faggio\nTank: 30Liter\nPreis: 8000€", "Kaufen", "Abbrechen");//das könnt ihr so ändern wie es auf euch passt.



    }




    Das kommt dahin wo die ganzen dialöge sind



    if(dialogid == FAGGIO)//das FAGGIO haben wir eben difiniert
    {
    if(response == 0)//wenn die person ESC drückt oder auf abbrechen kommt das:
    {
    UnFreezePlayer(playerid);//entfreezt ihn wieder
    RemovePlayerFromVehicle(playerid);//wichtig weil sonst kann die person mit dem wagen wegfahren
    SendClientMessage(playerid,COLOR_YELLOW, "Du hast den Kauf abgebrochen!");//ist klar
    }
    if(response == 1)//wenn er auf kaufen drückt
    {
    RemovePlayerFromVehicle(playerid);//rauswerfen
    UnFreezePlayer(playerid);//unfreezen
    if(GetPlayerMoney(playerid) < 8000){SendClientMessage(playerid,COLOR_GREY,"Du hast nicht genug Geld um dieses Fahrzeug zu kaufen!");} else {OnPlayerBuyCar(playerid,462,8000,2);} //abfrage ob er genug geld mit hat , die nachicht wenn er nicht genug hat, wenn ja dann geht es zum scriptpunkt OnPlayerBuyCar(playerid,carid,preis,welches auto bzw spawn) (die spawns musst du suchen im script wenn du ingame mal die coords abfragst. wenn du es nicht findest sag einfach besscheid.
    }
    }




    Bei fragen einfach per PN melden! :)

  • Vielleicht bei einem Fahrzeug gut aber nicht wenn Du mehrere verwalten willst. Wie Du es aktuell aufgebaut hast, braeuchte ich fuer meinetwegen 50 verschiedene Fahrzeuge, Deine Zeilen mal 50. Das wuerde ich nicht empfehlen. Ein richtiges Autohaussystem zielt darauf ab, es einfach zu erweitern. Das ist hier aber nicht gegeben.

  • Auch wenn es "nur" 60 Fahrzeuge sind. Es sind zu viele Zeilen Code die dadurch unnoetigerweise entstehen, die PWN wird groesser und es wirkt sich auf die Compilezeit aus. Es ist halt einfach nicht ratsam und ich wuerde es auch keinem Neuling so empfehlen, da er einen komplett falschen Eindruck davon bekommt wie man solche Sachen angeht.

  • @Slider ok das mag sein dass es länger dauert aber das ist doch eig egal solange es funktioniert auf diese paar sekunden kommt es ja wirklich nicht an. Und naja solange es funktioniert und die das so machen wollen kann es dir ja egal sein da ich einfach nur andere helfen möchte die sowas bräuchten. Ich habe es auch erst getestet undso und es ging also habe ich es so gelassen.


    Es soll ja nur zeigen wie man es machen KÖNNTE und die die das wollen können ja machen und du musst es ja NICHT.
    Mich haben aber schon 2leute per pn davor angeschrieben wo die mich gefragt hatten und die waren zufrieden.

  • mag sein dass es länger dauert aber das ist doch eig egal solange es funktioniert

    Das ist die falsche Einstellung. Ich kann auch ineffizienten Code schreiben der total auf die Performance geht. Da kann ich nicht als Entwickler sagen "Solange es geht passt es schon".

    und die das so machen wollen

    Wenn man das so machen will, dann nur weil man nicht weiss wie es besser geht.

    einfach nur andere helfen möchte

    Ich respektiere das aber Du musst auch anpassungsfaehig sein. Ich sage ja nicht das ich es nicht wertschaetze, dass Du anderen Deine gelernten Sachen beibringen moechtest. Im Gegenteil, ich habe das hier auch eher als positiv als negativ vernommen. Nur wenn Du dann hinterher keine Kritik akzeptierst, dann ist es halt suboptimal.

    Ich habe es auch erst getestet undso und es ging also habe ich es so gelassen.

    Ja und das ist wie ich schon sagte der falsche Ansatz. Wenn ich sowas in der Arbeit abliefern wuerde und nach dem Code Review trotz Kritik, die die Performance verbessert, sagen wuerde "es geht aber", wuerde es dennoch nicht effizient sein.

    Es soll ja nur zeigen wie man es machen KÖNNTE und die die das wollen können ja machen und du musst es ja NICHT.

    Ich werde es auch so nicht machen aber weils halt Quatsch ist. Wenn Du Kritik so entgegen wirkst mit "Du musst es so ja nicht machen", dann wirst Du niemals gut programmieren koennen.

    Mich haben aber schon 2leute per pn davor angeschrieben wo die mich gefragt hatten und die waren zufrieden.

    Ja dann sind das gleich 2 mehr die es falsch lernen. Die sind zufrieden weils funktioniert aber koennen nicht abschaetzen was es am Schluss fuer Nachteile mit sich bringt. Jemand der mit dieser Loesung zufrieden ist, hat keine Ahnung von Programmierung. (Das muss ja wie gesagt nichts schlechtes sein, jeder faengt klein an - nur man sollte es halt direkt richtig lernen)

  • ja aber wie gesagt ich wollte doch nur zeigen wie man es machen könnte... außerdem ist es jetzt auch nicht so dass dieser code etwas fürs leben sein soll sondern nur ne kleine Hilfe.
    Und wegen "Ich werde es auch so nicht machen aber weils halt Quatsch ist. Wenn Du Kritik so entgegen wirkst mit "Du musst es so ja nicht machen", dann wirst Du niemals gut programmieren koennen."
    ich programmiere auch nur als hobby in der freizeit und nicht beruflich das kann ich ja vlt noch später machen aber dafür kann man ja eine ausbildung machen etc...

  • "difiniert " :D


    Naja für Anfänger ist das sicher schwer, da sie nicht wissen wieso du es so und so gemacht hast.

  • Ich glaube einfach Du bekommst ein komplett falsches Bild von mir oder von dem was ich von mir gebe. Oder Du verstehst einfach nicht auf was ich hinaus will.


    Was ich nochmal klar machen moechte: Ich habe weder was gegen Dich, noch gegen Deine Arbeit, noch gegen Deine Hilfestellung. (Bitte im Hinterkopf behalten)


    Ich finde es sehr nett von Dir, dass Du anderen Leuten die Moeglichkeit gibst etwas auf kostenlose Art & Weise zu lernen. Ich moechte Dir nur klar machen, dass Du genau eigentlich das Gegenteil davon bewirkst. Leute lernen es auf einer falschen Art und zugleich lernen sie falsch, wie sie solche Probleme genau angehen koennen. Lieber gescheit und richtig erklaeren, als eine falsche Angehensweise zu zeigen nur weil diese vielleicht auf den ersten Blick einfacher und richtig aussieht.


    Weil mit dem Tutorial lernst Du den Leuten eher was falsches an und diese wissen dann noch nichtmal wieso man Dupplikationen vermeiden sollen.


    PS: Auch als Hobby Programmierer kann man Kritik entgegen nehmen. Dazu muss man das nicht beruflich machen.

  • Naja, der Code ist ziemlich simpel gehalten und Massenuntauglich. Mal abgesehen davon basiert er letztendlich trotzdem auf dem DT Carsystem aufgrund der OnPlayerBuyCar Funktion.


    Wie bereits richtig festgestellt wurde, sobald es "viele" Fahrzeuge werden ist der Code untauglich. Man kann es deutlich besser gestalten aber wer das hier benutzen will soll es halt machen.

  • Wenn wir schon dabei sind. Hat jemand eine kurzere Methode dafür?