Text anzeigen lassen

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

  • Text anzeigen lassen

    Hallo

    Ich habe ein Computer gezeichnet und will das wenn der Player in der nähe steht und dann auf E drückt sich der Computer öffnet und man die Emails lesen kann.

    Meine frage dazu ist. wie kann ich das mit den Emails lösen.???
    Also das zb sobald er E gedrückt hat sich ein neuer raum oder besser ein grosses fenster öffnet das mehrer Mails enthält und die der User durchlesen kann und durchscrollen kann


    Das mit dem E drücken hab ich gelöst .jedoch nicht wie das mit den mails gehn könnte
    Bitte um hilfe thx freunde
  • Wenn du E gedrückt hast dann stellst du die variable desktop = 1 ein und lässt ein rechteck oder Fenster zeichnen. Dann machst du dir ein Srcript mit einem switch.

    GML-Quellcode

    1. ///get_email(email_id,absender_betreff_oder_text)
    2. absender = "";
    3. betreff = "";
    4. text = "";
    5. switch(agrument0)
    6. {
    7. case 0:
    8. {
    9. absender = "Dr. Axel Schweiss";
    10. betreff = "deo"
    11. text = "Das ist kein SPAM##Guten Abend lieber Freund und so...#etc.##lg der Doktor"
    12. }
    13. case 1:
    14. {
    15. absender = "q3813@ucw.com<Sicherheitsdiens>"
    16. betreff = "die letzten tage"
    17. text = "Falls das jemand liest;##die letzten Tage waren traumatisierend.##-kein Kaffee#kein Tee#lauter Aliens###ich geh nach Hause. Tschüss"
    18. }
    19. default:
    20. {
    21. absender = "unknown";
    22. betreff = "script falsch aufgerufen";
    23. text = "falsches argument aufgerufen";
    24. }
    25. }
    26. if argument1 == 0
    27. {
    28. return absender;
    29. }
    30. if argument1 == 1
    31. {
    32. return betreff;
    33. }
    34. if argument1 == 2
    35. {
    36. return text;
    37. }
    Alles anzeigen


    mit weiteren cases fügst du weitere emails hinzu die du dann drawen lässt.
    Zuerst also nur ein Liste an Emails in deinem Rechteck/Fenster:

    GML-Quellcode

    1. //DRAW
    2. draw_rectangle(fensterx,fenstery,fensterw,fensterh,....)
    3. for (i = 0 ; i <8 ; i += 1)
    4. {
    5. draw_text(fensterx,fenstery,get_email(i+scrollposition,0)+get_email(i+scrollposition,1));
    6. }

    dann musst du dir überlegen wie du die emaisl anklickbar machst, entweder mit de rmausposition oder mit pfeiltaste rauf und runter. es werden immer 8 emails angezeigt und wenn es zB 16 emails gibt und scrollposition = 0, dann werden nummer 0 bis 7 angezeigt, scrollposition = 3 dann 3 bis 10. Beim klick musst du dann die email aufgehen lassen mit der nummer des scrollposition + die wievielte email in der liste.

    Sooo, und dann lässt du dir den Text anzeigen, also mit get_email(scrollposition+wievielte,2).

    Wenn ich zu Hause bin kann ich dir detailierteren code hier reinschreiben wie das mit der scrollposition ist und der wievielten die du lesen willst. Weil das abhängig von der fenstergröße und höhe einer Zeile in der LIste und dem abstand vom mauszeiger zu dem obersten eintrag ist. bzw ich kann ein kruzes example hier hochladen.

    out now: KNOSSOS auf itch.io
    ancient-pixel.com <<< ich freue mich über einen Besuch! ^^
  • Also ich habe es jetzt einfach mit einen Raum gemacht

    Wenn der User vor dem Pc steht und dann E drückt kommt er in einen Raum namens rm_pc1
    Also ein Raum in dem der Hintergrund ist (pc bildschirm) und darin sind auf der linken seite eine spalte mit mehreren objekten die ich obj_info nannte wo absender und betreff steht
    und auf der rechten seite davon ist ein freier platz wo die email bzw der text angezeigt wird.

    dann hab ich im obj_info das gemacht:

    OBJ_INFO STEP EVENT

    GML-Quellcode

    1. if position_meeting(mouse_x,mouse_y,id)
    2. {
    3. image_xscale = 1.2
    4. image_yscale = 1.2
    5. }
    6. else
    7. {
    8. image_xscale =1
    9. image_yscale =1
    10. }


    und ein :

    OBJ_INFO MOUSE LEFT PRESSED

    GML-Quellcode

    1. if mouse_check_button_pressed(mb_left)
    2. {
    3. if !instance_exists(obj_email1)
    4. {
    5. instance_create(151,3,obj_email1)
    6. }
    7. }




    Mein Problem ist jetzt nur das durch das image_xscale und yscale die schrift richtig unscharf wird
    Und dann wollte ich eigentlich sobald man nicht mehr über den button info mit der mouse ist das der text der email wieder verschwindet.
    Aber das schaffe ich nicht.
    Ich habe es auch versucht das left pressed event wegzulassen und es direkt im step event hinzuzufügen sodass der text angezeigt wird sobald man
    über das obj info mit der mouse fährt...

    OBJ_INFO STEP EVENT

    GML-Quellcode

    1. if position_meeting(mouse_x,mouse_y,id)
    2. {
    3. image_xscale = 1.2
    4. image_yscale = 1.2
    5. instance_create(151,3,obj_email1)
    6. }
    7. else
    8. {
    9. image_xscale =1
    10. image_yscale =1
    11. }
    Alles anzeigen


    Das funktioniert auch jedoch verschwindet der text der email nicht.



    Bitte um hilfe
  • das problem ist das hab ich schon versucht..
    ich habe bei obj_info_mouse_press ein else hinzugefügt und dort instance_destroy doch es funktioinierte nicht
    dann hab ich ein sprite erstellt das die genaue grösse von dem bereich wo die mails angezeigt werden hat
    und versucht auch wieder im obj_info ein else instance_create gemacht doch ging nicht


    und weißt du vielleicht warum image_xscale das bild so unscharf macht??
  • Wenn du ein Bild stattdessen scharf hochskalieren willst, müsstest du

    GML-Quellcode

    1. texture_set_interpolation(false);

    zuerst einstellen - wird aber dann verpixelt.
    Normalerweise will man das glaube ich nur in speziellen Fällen.
  • acidrain833 schrieb:

    Also ich habe es jetzt einfach mit einen Raum gemacht

    Wenn der User vor dem Pc steht und dann E drückt kommt er in einen Raum namens rm_pc1
    Also ein Raum in dem der Hintergrund ist (pc bildschirm) und darin sind auf der linken seite eine spalte mit mehreren objekten die ich obj_info nannte wo absender und betreff steht
    und auf der rechten seite davon ist ein freier platz wo die email bzw der text angezeigt wird.

    dann hab ich im obj_info das gemacht:

    OBJ_INFO STEP EVENT

    GML-Quellcode

    1. if position_meeting(mouse_x,mouse_y,id)
    2. {
    3. image_xscale = 1.2
    4. image_yscale = 1.2
    5. }
    6. else
    7. {
    8. image_xscale =1
    9. image_yscale =1
    10. }


    und ein :

    OBJ_INFO MOUSE LEFT PRESSED

    GML-Quellcode

    1. if mouse_check_button_pressed(mb_left)
    2. {
    3. if !instance_exists(obj_email1)
    4. {
    5. instance_create(151,3,obj_email1) // hier wird der email text erstellt wenn die linke maustaste auf dem sprite gedrückt wird
    6. }
    7. }




    Mein Problem ist jetzt nur das durch das image_xscale und yscale die schrift richtig unscharf wird
    Und dann wollte ich eigentlich sobald man nicht mehr über den button info mit der mouse ist das der text der email wieder verschwindet.
    Aber das schaffe ich nicht.
    Ich habe es auch versucht das left pressed event wegzulassen und es direkt im step event hinzuzufügen sodass der text angezeigt wird sobald man
    über das obj info mit der mouse fährt...

    OBJ_INFO STEP EVENT

    GML-Quellcode

    1. if position_meeting(mouse_x,mouse_y,id)
    2. {
    3. image_xscale = 1.2
    4. image_yscale = 1.2
    5. instance_create(151,3,obj_email1) //dadurch wird der email text gleich angezeigt wenn ich mit der maus über das sprite fahre
    6. }
    7. else
    8. {
    9. image_xscale =1
    10. image_yscale =1
    11. }
    Alles anzeigen


    Ich schaffe es nicht das der email text wieder verschwindet.hab schon alles probiert was mach ich falsch



    Bitte um hilfe
  • Davon abgesehen das das sehr zusammengebacken ist und der Ansatz von @Aku_Ryou viel cleaner und modularer ist, fällt mir direkt auf, dass du die email zwar erstellt aber nicht löschst. Ausserdem kannst du das position_meeting durch das mouse enter und mouse leave event ersetzen, wenn du schon extra für alles objekte erstellst.
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
  • @Aku_Ryou

    Also iCh habs jetzt so probiert jedoch versteh ich nicht ganz wie ich es machen soll das die email anklickbar wird.

    Also jetzt ist es so:
    Wenn ich vor dem Pc stehe und dann E klicke öffnet sich das gezeichnete Fenster und es kommt immer nur die DEFAULT MESSAGE "UNKNOWN SCRIPT FALSCH AUFGERUFEN "
    wie kann man die anderen auch anzeigen lassen??? Und sie dann anklickbar machen??
  • Lese dir bitte durch, wie switch statements Funktionieren. Bei obigem Code werden dann die variablen absender, betreff und text unterschiedlich gefüllt, je nach dem welche ID man dem Skript übergibt (0,1,2,etc...) -> erstes Argument. Das Zweite Argument kann entweder 0,1 oder 2 sein und bestimmt ob du den Absender (0), den Betreff (1) oder den Text (2) vom Skript zurückbekommst .
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
  • AHHh! Mein Fehler, jeder case muss mit einem break auch "geschlossen" werden sonst rattert er durch bis zum ende, dem default statement.

    GML-Quellcode

    1. switch(agrument0)
    2. {
    3. case 0:
    4. {
    5. absender = "Dr. Axel Schweiss";
    6. betreff = "deo"
    7. text = "Das ist kein SPAM##Guten Abend lieber Freund und so...#etc.##lg der Doktor"
    8. break;
    9. }
    10. case 1:
    11. {
    12. absender = "q3813@ucw.com<Sicherheitsdiens>"
    13. betreff = "die letzten tage"
    14. text = "Falls das jemand liest;##die letzten Tage waren traumatisierend.##-kein Kaffee#kein Tee#lauter Aliens###ich geh nach Hause. Tschüss"
    15. break;
    16. }
    17. default:
    18. {
    19. absender = "unknown";
    20. betreff = "script falsch aufgerufen";
    21. text = "falsches argument aufgerufen";
    22. }
    23. }
    Alles anzeigen


    EDIT mit anklickbar folgt!
    Sagen wir du kannst auf deinem Bildschirm 8 Mails anzeigen. Also noch ohne das man die Liste runter scrollen muss.
    Dann kommst du auf die richtige mail wenn du die maus y position, die position des obersten eintrags und die höhe eines Eintrags hast.
    http://webwhiteboard.com#kfnutqkc
    unter dem Link ist ein Whiteboard da hab ichs aufgezeichnet


    GML-Quellcode

    1. mailno = (mouse_y - fenster_y) div höhe_eines_eintrages;
    2. if klick
    3. {
    4. //hol den eintrag aus dem switch statement mit der nummer mailno
    5. }


    out now: KNOSSOS auf itch.io
    ancient-pixel.com <<< ich freue mich über einen Besuch! ^^

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

  • Daran kanns natürlich auch liegen :vogel: :headtouch:
    Hab ich garnicht drauf geachtet.
    anklickbar könnte man das ganze am einfachsten mit point_in_rectangle und der mausposition machen.
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel: