Beiträge von Montero

    Zur Datenbank:


    Kennzeichen würde ich zum String machen und Schaden als Double speichern, denn in SA:MP ist die Schadensausgabe eine Dezimalzahl. Zudem möchtest du ja auf dem Kennzeichen sicherlich nicht nur zahlen - sondern auch Buchstaben haben, daher String.


    Code kann am Handy nicht beurteilen.


    Ja sorry, ich kann gar nichts. Keiner hier kann was. Nur du, nur du! ^^

    @AlterHase., danke für deinen aufschlussreichen Beitrag. Wie du dem Beitrag des Threaderstellers hoffentlich erfolgreich entnommen hast, möchte er ein Eventsystem mit mehren Modis - wir wissen beide nicht, was genau er damit meint, allerdings denke ich, dass er mindestens ein Race-System und Deathmatch-System möchte. Und um das ausgeklügelt und gut hinzubekommen, reichen keine 45 Minuten. Aber wenn du so fortgeschritten bist, dass du das in 45 Minuten hinbekommst, dann hat der Threadersteller doch schon jemanden gefunden und alles ist gut. ;)

    Also sowas kostenlos zu verlangen, ist bisschen viel verlangt - ganz ehrlich! :) Das sind einige Stunden Arbeit und ich mein, es ist ja nicht gerade ein kleines Script-Schnipsel. Wenn du entsprechend was dafür zahlen würdest, kannst du mich gerne kontaktieren.

    Hallo @KinGRaPTiiC und @eli, ich habe mal bisschen was zusammen geschrieben. Ich hoffe, das hilft dir/euch.



    Erklärung:

    • Variablen/Arrays
      • Ich habe zunächst einen String-Array angelegt, in dem du ganz einfach alle Jobs einzeln anlegen kannst. Für jeden Job gibt es einen individuellen, durchnummerierten Index - dieser steht in eckigen Klammern (siehe OnGameModeInit wo die jobArray mit Jobnamen gefüllt werden!) Für dieses String-Array habe ich noch eine Debug-Funktion eingefügt (siehe im Script unter OnGameModeInit), welches du eigentlich entfernen kannst - außer du möchtest selber rumprobieren was passiert, wenn du neue jobs einfügst. Zu dem gibt es ebenfalls in OnGameModeInit eine weitere for-Schleife, welche aus dem jobArray einen String erstellt mit allen Jobs aneinander gereiht und mit "\n" getrennt, sodass dieser String einfach in Dialogen genutzt werden kann. (siehe Dritter Punkt unter Variablen/Arrays (1.3))
      • Dann habe ich noch eine temporäre Variable erstellt (jobTempVar), mit der wir den vom User ausgewählten Job zwischenspeichern können um ihn Dialog übergreifen nutzen zu können.
      • Dann gibt es noch einen globalen String "jobListe" in dem ich die einzelnen Einträge in dem Job-Auswahl-Dialog angelegt habe. Dies ermöglicht dir, dass du im Falle eines neueingefügten Jobs, nicht alle Dialoge nochmal erweitern musst, sondern der Job wird automatisch in dem Dialog ergänzt. Es kann nur sein, dass du irgendwann die String-Größe von jobListe erhöhen musst, wenn du zu viele Jobs hast
    • Setzen der Variablen/Arrays
      • All die oben genannten Arrays/Variablen werden unter OnGameModeInit() gesetzt
      • Ausnahme: Die temporäre Variable jobTempVar ist Spielerabhängig, diese wird folglich unter OnPlayerConnect() gesetzt!
    • /jobs
      • Der ocmd-Befehl /jobs weist eigentlich nur eine kleine Positionsabfrage und das Anzeigen eines Dialogs auf.
        • Ist man nicht am Arbeitsamt, erscheint eine Meldung "Du bist nicht am Arbeitsamt!".
        • Bist du am Arbeitsamt, wird ein Dialog angezeigt mit dem Titel "Jobs", den Listeneinträgen aus der Variable jobListe (siehe 1.3.), und den Auswahlmöglichkeiten "Auswählen" und "Abbrechen".
    • Interaktion mit dem Job-Dialog
      Vorab: Es gibt zwei Dialoge, einmal DIALOG_JOBS (1) und einmal DIALOG_JOBS_BESTAETIGUNG (2)
      • DIALOGE_JOBS
        • Dieses Dialog zeigt ja die ganzen, verfügbaren Jobs auf. Wählt man den ersten Eintrag (id: 0) ("---- BITTE WÄHLEN ----"), welcher nur als optischer Hinweis dient, dann wird das Dialog automatisch wieder geöffnet.
        • Wählt man allerdings jeden anderen Eintrag, außer Eintrag 0, dann wird der jeweilige Job per GivePlayerJob(playerid, jobid, bestaetigung); vergeben.
        • Nach dem Auswählen eines Jobs, wird automatisch DIALOG_JOBS_BESTAETIGUNG aufgerufen
      • DIALOG_JOBS_BESTAETIGUNG
        • Wählt man einen Job in DIALOG_JOBS wird automatisch dieser Dialog geöffnet, in dem man seine Auswahl nochmal bestätigen kann.
        • Bestätigt man den Job, wird nochmal GivePlayerJob aufgerufen, hierbei wird allerdings an dritter Parameter-Stelle nun eine 1 eingefügt, statt - wie zuvor - eine 0, denn der User hat ja jetzt nochmal bestätigt, dass er den Job will.
    • GivePlayerJob(playerid, jobid, bestaetigung)
      • Mit dieser Hilfs-Klasse wird dem User (playerid) der jeweilige Job (jobid) vergeben.
      • Zuvor findet allerdings eine Abfrage statt, ob denn bestaetigung == 0 ist, wenn ja, dann muss der User in dem DIALOG_JOBS_BESTAETIGUNG die Jobauswahl nochmal bestätigen, hierfür öffnet sich der genannte Dialog auch automatisch.
      • Sobald man die Jobauswahl nochmals in dem o. g. Dialog bestätigt hat, wird bestaetigung auf 1 gesetzt und GivePlayerJob wird nochmal aufgerufen und der Job wird nun vergeben. Der User erhält zudem einen Hinweis, dass er nun den Job JOBNAME angenommen hat.
    • GetJobName(jobid)
      • Ich habe einen Stock erstellt, der dir hilft den jeweiligen Jobnamen rauszufinden. GetJobName(jobid) returnt dir dann den jeweiligen Namen des Jobs, welcher im jobArray festgelegt wurde.
    • Was muss noch gemacht werden?
      • In dem Script muss unter GivePlayerJob noch der Job in den User-Account gespeichert werden, da ich dein User-Script nicht kenne, konnte ich das nicht machen. Bitte füge die User-Variablen-Speicherung in dem im Script gekennzeichneten Bereich ein. Die Jobid wird per jobTempVar übergeben.



    Folgende Definitionen/Deklarationen bitte oben im Script einfügen

    Code
    // Diese Definitionen bitte oben im Script vornehmen.
    
    
    new jobArray[10][40];
    new jobListe[150] = "-- Bitte wählen --";
    new jobTempVar[MAX_PLAYERS] = -1;





    Folgendes bitte in OnGameModeInit() einfügen.


    Folgendes bitte in OnPlayerConnect(playerid) einfügen

    Code
    jobTempVar[playerid] = -1;


    Der ocmd-Befehl /jobs


    Code
    ocmd:jobs(playerid)
    {
    	if(!IsPlayerInRangeOfPoint(playerid,4.0,362.4120, 173.6170, 1008.3828))return SendClientMessage(playerid, -1, "Du bist nicht am Arbeitsamt!");
    	ShowPlayerDialog(playerid,DIALOG_JOBS,DIALOG_STYLE_LIST, "Jobs", jobListe, "Auswählen", "Abbrechen");
    	return 1;
    }


    Folgendes bitte in OnDialogResponse einfügen.


    Das bitte außerhalb jeglicher publics einfügen

    Code
    stock GetJobName(jobid) {
    	return jobArray[jobid];
    }



    Das bitte auch außerhalb jeglicher Publics einfügen.


    Nein, allerdings sind die Rezensionen recht gut. Schau mal nach Videos zu den Lautsprechern auf YouTube, vielleicht findest du ja was.

    Wieso ist dein Skin-System bei OnPlayerClickTextdraw nicht in der if Abfrage inbegriffen? (Also die erste if Abfrage in dem public. (Kann sein dass das nur nicht richtig angezeigt wird bei mir, bin am Handy)


    Also ich mein, wieso die geschweifte Klammer der ersten if Abfrage nach dem Register System schließt und nicht erst nach dem Skin-System unmittelbar vor der Schließung der geschweiften Klammer des Publics.



    //Edit: ich denke der Auslöser des Problems ist das return am Ende der if-Klammer. Hierdurch wird das Public abgebrochen und das Script kommt gar nicht bis zum Skinsystem

    Nabend, kann mir jemand eine gute Powerbank fürs Handy empfehlen?


    Am liebsten mit mindestens 20.000 - 50.000 mAh.
    Lieferung von Deutschland und wenn's geht von Ebay oder Amazon.


    Suche ebenfalls gute Lautsprecher, die laut sind und guten Bass haben.
    Sollten anschließbar an PC/PS4 sein (USB Anschluss ?) und was noch so Lautsprecher benötigen.

    Powerbank: Powerbank 20000mAh 3 USB Ports Coolreall® externer Akku mit LED-Statusanzeige, für iPhone, iPad, Samsung, Smartphone, Tablette, usw. (Schwarz) https://www.amazon.de/dp/B01L9…sw_r_cp_api_XFcOyb3KCR1Z7


    Lautsprecher: Trust GXT 638 2.1 Digitaler Gaming Lautsprecher mit optischem Eingang und Subwoofer für PS4/PC/Xbox One, schwarz https://www.amazon.de/dp/B00JV…sw_r_cp_api_sHcOybPMHDVHT

    Leider mMn ungelungen die Map. Sehr leer, Kastengebäude mit leerem Flachdach (Lüftungsanlage, etc.) und unglaublich dünne Wände (1. unrealistisch und 2. unschön). Zudem unpassend eine Kühltheke (in einem vermeintlichen Elektrofachhandel) neben der Kasse.

    Freut mich, dass es geklappt hat. Naja, Schlimm ist es nicht, allerdings wenn du einen Server mit 300 Spieler online hast und alle gleichzeitig den Payday bekommen, werden halt 300 String mit 768 Zeichenketten erstellt. Ob das wiederum Auswirkungen auf den Server hat wage ich zu bezweifeln.