SetVehicleNumberPlate setzen

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,


    ich würde gerne direkt nach dem Kauf eines Fahrzeugs ein Kennzeichen auf dieses setzen. Mein Problem ist dabei, ich möchte die Datenbank ID als Nummer auf dem Kennzeichen haben. Sobald der Spieler den Server neu betritt ist es mir in jedenfall möglich das ganze darzustellen. Allerdings nicht wenn ein Spieler das Fahrzeug kaufen tut, habt ihr eine Idee wie ich es am sinnvollsten umsetzen könnte ?


    Code: Spieler Fahrzeug erstellen



    Mein Problem liegt darin dass erst bei carSavedToDB den richtigen ID wert übergibt. Nun weiß ich allerdings nicht wie ich es am besten umsetzen kann.


    Über jede Hilfe bin ich dankbar =)

  • unter Zeile 17

    Code
    new string[9];
    format(string,sizeof(string),"Sa-%d", cInfo[id][db_id]);//Text auf den Nummerschild, "cInfo[id][db_id]" ist die Datenbank id vom Fahrzeug
    SetVehicleNumberPlate(cInfo[id][id_x], string); //beachte noch die Notes https://sampwiki.blast.hk/wiki/SetVehicleNumberPlate
    SetVehicleToRespawn(cInfo[id][id_x]);//Da das Vehicle neu gestreamt werden muss)

    Falls respawn, nicht der kaufpunkt sein sollte notfalls nach Vehicle Respawn pos setzen

    Code
    SetVehiclePos(cInfo[id][id_x],x,y,z)

    An sich, falls es individuelle Plates geben soll, solltest du dir das NumberPlate auch abspeichern.

  • unter Zeile 17

    Code
    new string[9];
    format(string,sizeof(string),"Sa-%d", cInfo[id][db_id]);//Text auf den Nummerschild, "cInfo[id][db_id]" ist die Datenbank id vom Fahrzeug
    SetVehicleNumberPlate(cInfo[id][id_x], string); //beachte noch die Notes https://sampwiki.blast.hk/wiki/SetVehicleNumberPlate
    SetVehicleToRespawn(cInfo[id][id_x]);//Da das Vehicle neu gestreamt werden muss)

    Falls respawn, nicht der kaufpunkt sein sollte notfalls nach Vehicle Respawn pos setzen

    Code
    SetVehiclePos(cInfo[id][id_x],x,y,z)

    An sich, falls es individuelle Plates geben soll, solltest du dir das NumberPlate auch abspeichern.

    Lieben dank dass du versuchst mich dabei zu unterstützen. Das mit den ID´s habe ich bereits auch schon geschafft. Nun soll aber noch der Name des Spielers als Kennzeichen gesetzt werden.

    Hierfür habe ich folgenden Code bisher zusammen


    Allerdings will er mir den Namen überhaupt nicht anzeigen geschweige denn in die Variable Name setzen.

  • wie sieht getPlayerName, bei dir aus?


    Bzw, denke ich mal das es daran liegen wird, das dein getPlayName sicha uf die playerid bezieht und nicht auf die Datenbank_ID vom player.

    Ich habe hier mal was versucht, es wird wahrscheinlich einen viel besseren weggeben :thumbup: .

    Aber ich weiß nicht ob es überhaupt Funkt oder gut so ist ^^ (zu lange her)

    Wenn du jetzt aber die Autos nur erstellen lässt, wenn der Spieler auf dem Server ist, dann musst du das numberplate einfach dort setzen, wo du zugriff, auf playerid hast, um getPlayerName anzuwenden.

    2 Mal editiert, zuletzt von Mogly1 ()

  • Wiki:

    The text length that can be seen on the number plate is around 9 to 10 characters, more characters will cause the text to split.

    Du willst mich kennenlernen? Kauf mein Buch, Bia*ch!


  • Aber ich weiß nicht ob es überhaupt Funkt oder gut so ist

    Nein, das wird nicht funktionieren, da PVars, wie der Name schon sagt, Spieler bezogen sind, also ein SetPVar(carid wird nicht funktionieren bzw. zwangsläufig zu Fehlern führen.


    Verstehe die Notwendigkeit von dem PVar auch gar nicht, da der Name vom Besitzer des Fahrzeuges ja schon in cInfo[carid][besitzer] steht. Aber wie Maho schon anmerkte, wäre das eh viel zu Lange, also den Spielernamen sollte man faktisch nicht als Nummernschild verwenden.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Nein, das wird nicht funktionieren, da PVars, wie der Name schon sagt, Spieler bezogen sind, also ein SetPVar(carid wird nicht funktionieren bzw. zwangsläufig zu Fehlern führen.


    Verstehe die Notwendigkeit von dem PVar auch gar nicht, da der Name vom Besitzer des Fahrzeuges ja schon in cInfo[carid][besitzer] steht. Aber wie Maho schon anmerkte, wäre das eh viel zu Lange, also den Spielernamen sollte man faktisch nicht als Nummernschild verwenden.

    Der komplette Name ist natürlich viel zu lang da ja insg. 64 Zeichen möglich sind. Daher hätte ich dann den Wert gekürzt mit


    Code
    strdel(Variable, 2,64)
  • Nein, das wird nicht funktionieren, da PVars, wie der Name schon sagt, Spieler bezogen sind, also ein SetPVar(carid wird nicht funktionieren bzw. zwangsläufig zu Fehlern führen.


    Verstehe die Notwendigkeit von dem PVar auch gar nicht, da der Name vom Besitzer des Fahrzeuges ja schon in cInfo[carid][besitzer] steht. Aber wie Maho schon anmerkte, wäre das eh viel zu Lange, also den Spielernamen sollte man faktisch nicht als Nummernschild verwenden.

    Ne in besitzer steht doch nur die db Id
    cInfo[id][besitzer]=PlayerInfo[playerid][p_id]
    da ich wie gesagt das jetzt lange nicht mehr gemacht hab, wusste ich nicht wie wir von Mysql das ausgeben lassen könnten ^^

  • Ne in besitzer steht doch nur die db Id
    cInfo[id][besitzer]=PlayerInfo[playerid][p_id]

    Ah, das hatte ich nicht gesehen.


    Ich würde einfach das enum für cInfo erweitern.


    Füg einfach sowas wie c_Owner[MAX_PLAYER_NAME] hinzu.


    Und dann einfach createPlayerCar abändern zu:



    Deswegen lösche ich doch Zeichen 3 -64

    Das ist gar nicht notwendig, kannst auch einfach nur die ersten Zeichen abfragen.


    Im format einfach:


    C
    format(kennzeichen,16,"%c%c",cInfo[id][c_Owner][0],cInfo[id][c_Owner][1]); //Gibt dir die ersten 2 Zeichen des Namens als Kennzeichen

    Ein Spielername muss immer mind. 3 Zeichen lang sein, also ist das problemlos machbar. (Natürlich vorher immer prüfen, dass der String nicht leer ist)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Perfekt dass hat wunderbar geklappt. Gibt es auch eine Funktion mit der man die c_Owner Daten komplett groß schreiben lassen kann ?

  • Wichtig ist, dass du so nur einzelne Charakter annimmt, somit müsstest du eine Schleife darum bauen.

    Oder einfach das format anpassen:


    C
    format(kennzeichen,16,"%c%c",toupper(cInfo[id][c_Owner][0]),toupper(cInfo[id][c_Owner][1]));

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S