Beitrag von ENEF ()
Dieser Beitrag wurde vom Autor gelöscht ().
Wie texturiert man die Werbetafel ?
Das macht man mit [wiki]SetObjectMaterialText[/wiki]
Also meiner Meinung nach, brauchst du das Objekt nicht speichern, da diese ja schon existieren im Skript.
Also du brauchst nur den Text, den Timestamp und die Objektid speichern. (Aufpassen, dass du nachfolgende Objekte immer hinter den Werbetafeln einfügst)
Dann beim Server-Restart Timestamp überprüfen und dann eben wieder den Text da drauf klatschen. Evtl noch Farbe und so, wenn er das einstellen kann speichern.
Und dann eben mit Timer überprüfen ob es abgelaufen ist oder nicht.
Mit [wiki]Gettime[/wiki] bekommste übrigens den Timestamp.
So ein System findest du im SOM Script und Europe Reallife. Sind beide im hier im Forum zum download.
Kannst daraus ein beispie nehmen
Danke an beide. Kann man bei den Werbetafeln einen Zeilenbruch machen?
Ja mit \n
Hab mir Informationen vom SOM Script genommen, jedoch umgebaut auf Dialogen bezüglich des 3 Zeilen Systems.
Habe alles in Strings speichern lassen (TAFEL1, 2, 3) und wollte diese jetzt in die ich nenne es MySQL Variable speichern bzw umtragen.
Die nennt sich Werbetafeln[wtafel][wtafeltext] und geht weiter mit am Ende 2 & 3
Da dachte ich an TAFEL1 = Werbetafeln[wtafel][wtafeltext];
Bekomme jedoch diesen Error:
filterscripts\werbetafel.pwn(240) : error 047: array sizes do not match, or destination array is too small
Sonst weiß ich nicht wie ich es machen soll... noch dazu mit dem Zeilenbruch, muss ich das in ein Format umschreiben? Weil so kann ich ja schlecht Zeilenbrüche machen:
SetDynamicObjectMaterialText(Werbetafelobject[wtafel],Werbetafeln[wtafel][wtafeltmindex],Werbetafeln[wtafel][wtafeltext]\nWerbetafeln[wtafel][wtafeltext2]\nWerbetafeln[wtafel][wtafeltext3],Werbetafeln[wtafel][wtafeltmsize],Werbetafeln[wtafel][wtafeltfonts],Werbetafeln[wtafel][wtafeltfontsize],Werbetafeln[wtafel][wtafeltbold],Werbetafeln[wtafel][wtafeltfontcolor],Werbetafeln[wtafel][wtafeltbackcolor],Werbetafeln[wtafel][wtafeltaligment]);
So geht es ja nicht. Deswegen im Format oder? aber da muss ich auch erstmal die Tafel1 in ,Werbetafeln[wtafel][wtafeltext] umwandeln.
Ich hoffe ihr versteht mein anliegen
Deswegen im Format oder?
Jaa...natürlich..einfach einen großen String:
new string[512];
format(string,sizeof(string),"%s\n%s\n%s",Werbetafeln[wtafel][wtafeltext],Werbetafeln[wtafel][wtafeltext2],Werbetafeln[wtafel][wtafeltext3]); //usw
Du musst es nicht in eine andere Variable umschreiben, kannst es direkt nutzen.
Aber falls du dies tun magst, geht das auch mit format:
format(TAFEL1,sizeof(TAFEL1), Werbetafeln[wtafel][wtafeltext]);
Du schreibst die Texte in globale Variablen.
D.h. sollten mehrere Spieler den Befehl ausführen überschreiben sie sich immer gegenseitig die Texte.
Merk dir am besten in einer Player Variable an welcher Werbetafel der Befehl ausgeführt wurde und schreib dann die Texte direkt in die Variablen für die entsprechenden Werbetafeln.
Auch das Geld und die SpielerID solltest du in den Variablen für die entspreche Werbetafel speichern, sonst hast du das selbe Problem.
Außerdem solltest du vielleicht eine Prüfung für die PlayerID einbauen ob der Spieler überhaupt exisitiert und nicht einfach nur strval nutzen.
Auch sind noch ein paar Logikfehler vorhanden, schau dir mal die Geldbeträge an, wie du die Minuten abfragst (Schreibst man soll minuten eingeben prüfst dann aber anscheinend auf Stunden?)
Hätte ein ähnliches System mit Werbung im Textdraw wo ich die kopiert habe deswegen diese Logikfehler usw. Außerdem werde ich eine Sperre in der Zeit wo eine Werbetafe aktiv ist einbauen. So kann man sie nicht weiter bearbeiten. Bräuchte nur Hilfe bei meinem geposteten Problem. Aber danke