[Include] Dialoge wieder anzeigen

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 Kaliber ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Schönes Include, aufjedenfall sehr nützlich.

    Server Leiter - Projektleiter
    __________________________________________________


    Hostingpartner: simple-servers.de - So einfach wie noch nie!
    nImage - Free and fast picture upload!
    nImage - Picture upload
    __________________________________________________


    Server IP: server.nemesus-roleplay.net
    Teamspeak IP: ts3.nemesus-roleplay.net
    __________________________________________________


  • Kaliber: Wie sieht es denn mit dem Speedtest aus?
    Außerdem hat man die Verarbeitung von Dialogen immernoch im public "OnDialogResponse".
    Aber sonst coole Idee, man hat mit deinem nur das Problem bei Dynamischen Sachen.

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • Wie sieht es denn mit dem Speedtest aus?


    Das anzeigen verzögert sich um max 18ms...und die Funktion ReShow zeigt den Dialog in ~1ms an.


    Außerdem hat man die Verarbeitung von Dialogen immernoch im public "OnDialogResponse".


    und? Darum geht es ja nicht, nur um den erneuten Funktionsaufruf.


    man hat mit deinem nur das Problem bei Dynamischen Sachen.


    Was meinst du damit? :huh:

    ast2ufdyxkb1.png


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

  • Das anzeigen verzögert sich um max 18ms...und die Funktion ReShow zeigt den Dialog in ~1ms an.


    Also von der Geschwindigkeit passt es ja, hatte eigentlich mehr auf 200ms getippt.

    und? Darum geht es ja nicht, nur um den erneuten Funktionsaufruf.


    War nur eine Anmerkung, da ich selber es deutlich besser finde, wenn die Auswertung von Dialogen in einer Include geschied.

    Was meinst du damit?


    Nemen wir ein Einfaches Beispiel

    PHP
    new string[128];
    for(new i=0; i<MAX_FRAK; i++)
    {
       if(fInfo[i][factive] == false) continue;
       format(string,128,"Fraktion: %d, Name: %s",i,fInfo[i][fname]);
       ShowPlayerDialog(...);
    }


    Also was ich meine ist halt, wenn man Dynamische Inhalte in ein Dialog anzeigen möchte.

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • War nur eine Anmerkung, da ich selber es deutlich besser finde, wenn die Auswertung von Dialogen in einer Include geschied.


    Dann kannst du das ja trotzdem machen...und wer nicht will, muss es nicht machen...


    Also was ich meine ist halt, wenn man Dynamische Inhalte in ein Dialog anzeigen möchte.


    Dein Code macht so keinen Sinn...


    Da dem Spieler hier nur das letzte Ergebnis wo der Dialog angezeigt wird gezeigt wird.


    Aber ja mit meiner Funktion kannst du ihm nur das letzte Ergebnis von dem ShowPlayerDialog anzeigen.


    Mehr soll meine Funktion ja auch nicht machen ^^

    ast2ufdyxkb1.png


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

  • Dein Code macht so keinen Sinn...


    ist mir gerade auch aufgefallen, jedoch hab ich den Code kurz hier im Editor geschrieben.
    Außerdem hab ich mich schon paar Wochen nicht mehr richtig mit dem Scripting beschäftigt.


    Jedoch finde ich deine Include nützlich für Leute, die keine Dynamischen Inhalte in Dialogen brauchen.

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • die keine Dynamischen Inhalte in Dialogen brauchen.


    Inhalte die du "dynamisch" generierst können logischerweise nicht "konstant" gespeichert werden.


    Somit muss der Algorithmus immer wieder aufgerufen werden um den Inhalt zu generieren.


    Das ist nun mal so, da kann ich nichts dran ändern und das hat auch eigentlich nichts mit der Funktionalität meiner Include zu tun.


    mfg. :rolleyes:

    ast2ufdyxkb1.png


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

  • Inhalte die du "dynamisch" generierst können logischerweise nicht "konstant" gespeichert werden.


    Somit muss der Algorithmus immer wieder aufgerufen werden um den Inhalt zu generieren.


    Das ist nun mal so, da kann ich nichts dran ändern und das hat auch eigentlich nichts mit der Funktionalität meiner Include zu tun.


    Das meine ich ja.
    Ich hab EasyDialog dafür erstellt, dass man zb. ein Dynamisches Fraktionssystem verwalten kann ohne dass man ShowPlayerDialog jedesmal schreiben muss.
    und deine Include ist mehr für Scripter, die ein Statisches Script haben.
    So haben beide Systeme Vor und Nachteile.

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • Ich hab EasyDialog dafür erstellt, dass man zb. ein Dynamisches Fraktionssystem verwalten kann ohne dass man ShowPlayerDialog jedesmal schreiben muss.
    und deine Include ist mehr für Scripter, die ein Statisches Script haben.
    So haben beide Systeme Vor und Nachteile.


    Was redest du da? :huh:


    Unsere "Systeme" haben gar nichts miteinander zu tun...


    Du kapselst den kompletten Inhalt von OnDialogResponse in eine Funktion...und ich sage einfach, dass man einen Dialog anhand seiner ID aufrufen kann.


    Und wenn ein Dialog "dynamisch" generiert wird und öfters brauch, packt man das eh in eine Funktion...

    ast2ufdyxkb1.png


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

  • Wäre es nicht sinniger, die Dialoge, die man häufiger benötigt, einfach komplett in einen Array zu schmeißen ?


    1. Man hätte den Überblick über alle wiederholenden Dialoge
    2. Man spart es sich, das in Funktionen "auszugliedern"
    3. Man kann schnell Sachen ändern und auch hinzufügen.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski


  • Wäre es nicht sinniger, die Dialoge, die man häufiger benötigt, einfach komplett in einen Array zu schmeißen ?


    1. Man hätte den Überblick über alle wiederholenden Dialoge
    2. Man spart es sich, das in Funktionen "auszugliedern"
    3. Man kann schnell Sachen ändern und auch hinzufügen.


    ...kann man machen, aber dann ist die Include für was völlig anderes...


    Ich hatte lediglich das Ziel für einfache abfragen, einen simplen Dialog wiederholen zu lassen.


    Natürlich kann man direkt daraus einen riesen "Dialog-Prozessor" schreiben, wie y_dialog...aber darum ging es mir nicht...


    PS: Ich weiß nicht genau wie du dir das vorstellst mach mal ein Beispiel..

    ast2ufdyxkb1.png


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

  • Ich weiß nicht genau wie du dir das vorstellst mach mal ein Beispiel..


    Es ist defintiv nicht ganz ausgearbeitet, funktioniert aber wunderbar.


    Problem bei "meiner" Variante, man müsste die Größe der Arrays anpassen.
    Aber auch dafür sollte es im Grunde eine Lösung geben :thumbup:
    enum
    {
    DIALOG_BSP
    };


    enum d_strc
    {
    ID,
    Style,
    Header[50],
    Body[500],
    Button1[10],
    Button2[10]
    };
    new Dialog[][d_strc] =
    {
    {DIALOG_BSP, DIALOG_STYLE_MSGBOX, "Hallo Kaliber", "Ich bin der Body dieses Dialogs", "Knop", "Knop 2"}
    };


    ShowDialog(playerid, dialogid)
    {
    return ShowPlayerDialog(playerid, Dialog[dialogid][ID], Dialog[dialogid][Style], Dialog[dialogid][Header], Dialog[dialogid][Body], Dialog[dialogid][Button1], Dialog[dialogid][Button2]);
    }


    Anzeigen lassen kann man die dann so
    ShowDialog(playerid, DIALOG_BSP);

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Ja...


    Ding ist nur, dass ich das in einer Datenbank speichere und halt keinen Speicherplatz verschwende...


    Zudem kann man meine Dialoge auch updaten, wenn man einfach einen mit der selben dialogid nochmal anzeigen lässt aber anders.


    Also im Endeffekt kann man mit beiden Methoden das selbe machen...nur das man bei meinem nicht sein ganzes Skript umschreiben muss xD

    ast2ufdyxkb1.png


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

  • Du meinst ja, dass du für die MySQL Datenbank gegen eine ungewollte Injection die " ' " entfernst. Könntest du sie nicht auch mit einem
    Phrase statt Leerzeichen ersetzen (replace)? zB mit einer Kette, die man nicht normal schreibt und diese nach der MySQL Abfrage wieder zurücksetzen bzw den ersetzten Phrase wieder mit einem " ' " ersetzen? Habe ich so gemacht, zB " ' " -> #Apostroph -> " ' "

  • zB mit einer Kette


    Ich sag mal so, das wäre schon machbar, aber wofür der Aufwand?


    Wer nutzt schon einen ' in einem Dialogtext? Da kann man auch auf die Alternative mit " zurückgreifen ^^

    ast2ufdyxkb1.png


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

  • Kaliber: Ich meinte ja nicht wirklich ne Kette und es ist auch kein großer Aufwand, nur damit es schön ist und man auf nichts verzichten muss, halt professionell ;) Du müsstest halt wie im Beispiel einfach das Apostroph mit dem Phrase #Apostroph ersetzen und beim bekommen des MySQL Inhalts vor der Ausgabe wieder den Phrase #Apostroph mit einem Apostroph ersetzen. Würde man glaube in 2 Zeilen schaffen, jedenfalls in Java :p