Werbetafelsystem

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
  • 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.

    ast2ufdyxkb1.png


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

  • So ein System findest du im SOM Script und Europe Reallife. Sind beide im hier im Forum zum download.
    Kannst daraus ein beispie nehmen

  • 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 :)



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • 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]);

    ast2ufdyxkb1.png


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

  • Beitrag von ENEF ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • 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


    Up
    @Kaliber / @Jeffry



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

    2 Mal editiert, zuletzt von ENEF ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen