Highlighting in einen Programm (erstellt mit dem GM also nicht im GM) - Experte gesucht

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Highlighting in einen Programm (erstellt mit dem GM also nicht im GM) - Experte gesucht

    geht das?

    man lässt den user etwas eingeben (das geht) und eine funktion z.B. draw_text_highlight(keyboard_string) soll das dann mit den richtigen farben drawen!!!
    Geht das denn irgendwie ?(

    Hinweis: für GMl nich für Php oder so Zeugs :rolleyes:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von whiterock ()

  • Gehen würde es bestimmt. Allerdings wäre es in GML super umständlich und äußerst schwierig sowas zu proggen. Du müsstest eine Liste von befehlen haben und das Geschriebene quasi bei jedem neuen Buchstaben durchegehen, ob irgendwas irgendeinen Befehl aus der Liste enthällt.
  • Mach einen Array oder Map mit den Namen und der Farbe.

    GML-Quellcode

    1. befehle[0,0]="show_message"
    2. befehle[0,1]=c_blue
    3. befehle_count=0;
    4. var str,str_,xx,yy;
    5. str=argument0
    6. str_=""
    7. xx=argument1
    8. yy=argument2
    9. for (i=1;i<=string_length(str);i+=1;)
    10. {
    11. str_+=string_char_at(str,i)
    12. for (i_=0;i<=befehler_count;i+=1;)
    13. {
    14. if (str_==befehl[i,0])
    15. {
    16. draw_set_color(befehl[i,1])
    17. draw_text(xx,yy,str_)
    18. xx+=string_width(str_)
    19. str_="";
    20. i+=string_length(str_)+1;
    21. break;
    22. }
    23. }
    24. draw_text(xx,yy,str_)
    25. xx+=string_width(str_)
    26. }
    Alles anzeigen

    Oder so.
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von henrik1235 ()

  • GML-Quellcode

    1. befehle[0,0]="show_message"
    2. befehle[0,1]=c_blue
    3. befehle_count=0;
    4. var str,str_,xx,yy;
    5. str=argument0
    6. str_=""
    7. xx=argument1
    8. yy=argument2
    9. for (i=0;i<=string_length(str);i+=1;)
    10. {
    11. str_+=string_char_at(str,i)
    12. for (i_=0;i<=befehler_count;i+=1;)
    13. {
    14. if (str_==befehl[i,0])
    15. {
    16. draw_set_color(befehl[i,1])
    17. draw_text(xx,yy,str_)
    18. xx+=string_width(str_)
    19. str_="";
    20. i+=1;
    21. break;
    22. }
    23. }
    24. draw_text(xx,yy,str_)
    25. xx+=string_width(str_)
    26. }
    Alles anzeigen

    jetzt ohne fehler aber es klappt nich da kommt nur:
    showmmmsssagge mssage ageshww meesswgg
    oder so :S
    kannst du nen fehler entdecken :?:
  • Wenn du erstmal einen array voll mit den ganzen Funktionen hast dann musst du ja nur die Strings abgleichen, z.b. mit diesem Skript.

    Das array mit den Funktionen (ohne Klammern!) heist funktions (eindimensional):
    Achtung du musst das array ohne Lücken füllen, in das Array nach der letzten Funktion kommt eine null.


    Oder du kannst die Funktion der autoinizialisierung aktivieren, dann wird automatisch eine 0 gesetzt wenn das array nicht schon anders inizialisiert wurde.


    Du kannst auch zählen wieviele Funktionen gespeichert sind und dann das whilestatement durch ein repeat statement mit der Anzahl ersetzten.



    GML-Quellcode

    1. input_str = argument0;
    2. a = string_pos("(",input_str);
    3. if a = 0 funktion_str = input_str
    4. else funktion_str = string_copy(input_str,0,a);
    5. str_len = string_length(funktion_str)
    6. i = 0;
    7. while(!(funktions[i] = 0))
    8. {
    9. if string_copy(funktions[i],0,str_len) = funktion_str // das Skript von vorhin
    10. {
    11. found_num = i:
    12. return(1);
    13. }
    14. i += 1;
    15. }
    16. return(0)
    Alles anzeigen



    Mit diesem Skript wird überprüft ob sich das Eingegeben mit einer Funktion gleicht.

    Es überprüft von anfang an, d.h auch wenn nur die ersten Buchstaben geschrieben sind (du kannst damit eine live-überprüfung machen)

    das skript returnt 1 wenn was gefunden wurde sonst 0.

    Zu dem befindet sich bei Treffer in der variable found_num die Nummer des arrays indem der Trffer war.

    Mit ein paar kurzn Änderungen kannst du es auch so hinkriegen das eine Liste (oder ein array) erstellt wird in der alle möglichen Treffer zu finden sind (genau wie im Codeeditor des GM).



    hab nichts ausprobiert xD, aber denke es sollte gehen :)

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • der skript is cool aber eigentlich brauche ich ja einen script der eine ganze befehlskette highlightet 8|
    Also:

    GML-Quellcode

    1. show_message("");
    2. show_info()
    3. //jajaja

    danke trotzdem 8)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von whiterock ()

  • Effizientes Text Highlighten ist alles andere als einfach.
    Wenn du es richtig machen willst, solltest du dich ein wenig
    mit Grammatiken und Automaten beschäftigen, so funktionieren
    nämlich richtige Syntaxhighlighter.
    Allerdings bezweifle ich, dass dir irgendjemand, der sich nicht
    sowieso mit dem Thema beschäftigt, dir hier "schnell" einen
    Code hinschreiben wird. Das würde wahrscheinlich eher eine
    gesamte Skriptsammlung füllen.
    Gruß, Spellmaker
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • Hm, es ist nicht leicht.

    Du brauchst erstmal eine Engine die es ermöglich einzelne Wörter mit anderen Farben darzustellen (hoffe du kannst Englisch):

    gamemakergames.com/forum/index.php?topic=40901.0

    Les dich mal da ein bisschen ein, das teil ist recht gut, allerdings auch langsam da jeder Buchstabe dann einzeln gedrawt wird...

    Das System funktioniert mit zeichen die man in den normalen text einfügen muss und ab dann wird mit einer anderen Farbe gezeichnet.

    Also müsstest du mit meinem Skript zum Beispiel überprüfen ob das Wort in der Liste vorhanden ist und dann vor dem Wort das bestimmte Symbol einfügen.

    Habs noch nie gemacht aber es sollte gehen xD

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Das mit dem Link hab ich nicht gewusst -.-

    Hab selbst leider nur Teile davon in meinem Spiel.
    Hab geschrieben. Vieleicht schaut der nacher mal vorbei und reuploadet es.


    EDIT: hier, er hats neu hochgeladen:
    http://www.fileupyours.com/view/278052/colourtextftw.gmk

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von DragonGamer ()

  • Der Game Maker bietet das benutzen von externen Codeeditoren in den Einstellungen an.
    Soweit ich weiß, speichert er dazu das Skript in einem temporären Verzeichnis und startet
    dann den Editor mit
    <editor> tempdateiname
    sodass die Datei mit dem Editor geöffnet wird. Anschließend wartet er auf das schließen des
    Editors und läd dann die tempdatei wieder zurück.
    Ganz sicher bin ich mir da nicht, aber das solltest du benutzen können.
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • Soll, das heißen du versuchst einen eigenen Editor zu machen um ihn anstelle des normalen zu verwenden?
    Wozu ?? Der aus GM 8 ist doch besser als mancher Editor von anderen programmiersprachen..

    Dachte du willst in dein Spiel sowas in der art einbauen :/

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Es gibt keinen Ordner mit den Skripten. Der GM speichert die Skriptdatei
    nur temporär irgendwo und startet dann den als Standardskripteditor eingestellten
    Editor (außer es ist der eingebaute) mit dem Kommandozeilenbefehl
    Editorname pfadzurtemporärenskriptdatei,
    dein Programm bekommt den Pfad also als Kommandozeilenbefehl mitgegeben.
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • ok soweit so gut, ich hab also jetzt ein programm das die 2.(oder 1. wie man sieht den 0 ist ja eigentlich die erste) kommandozeile ausliest, den inhalt der datei mit dem pfad der kommandozeile ausliest und ihn dann drawt. Beim beenden speichert er den text dann wieder dort hin. Klappt alles!

    ABER: In meinem Programm ist es unmöglich "Applies to" zu verändern, denn diese Information ist nirgends vorhanden oder doch?

    UND: Wenn ich zum Beispiel die Objekte in einer anderen Farbe drawen lassen will woher bekkomme ich dann die Information über existierende Objekte?

    Merci d'avanche