Problem mit doppeltem collision_point

  • GM 7

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

  • Problem mit doppeltem collision_point

    Hi,

    Hab mal wieder ein kleineres Problem.
    Ich bin gerade daran ein Menu zu machen - unter anderem auch Optionen die in einer ini gespeichert werden sollen.

    Nun das Problem ist nicht das speichern und laden der ini, sondern das meine checkboxen immer doppelt geklickt werden (1 Klick -> checked/not checked) d.h. es wir immer aktiviert/deaktiviert oder deaktiviert/aktiviert kurz: Es geschiet nix.

    Hier mal die infos zur checkbox:

    Spoiler anzeigen
    Information about object: obj_checkbox

    Sprite: spr_checkbox
    Solid: true
    Visible: true
    Depth: 0
    Persistent: false
    Parent: <no parent>
    Mask: <same as sprite>

    Create Event:
    execute code:

    // get the default value
    ini_open("data.ini"){

    if(sel = "sound"){

    checked = ini_read_real("audio","sound",false);

    } else if(sel = "sound_eff"){

    checked = ini_read_real("audio","sound_eff",false);

    }

    ini_close();

    }

    image_speed = 0;

    Step Event:
    execute code:

    // set image index
    if(checked){

    image_index = 1;

    } else {

    image_index = 0;

    }
    execute code:

    // check collision with the mouse onclick
    obj = collision_point(mouse_x,mouse_y,obj_checkbox,true,false);

    if(obj && mouse_check_button_pressed(mb_left)){

    with(obj.id){ // hier liegt warscheinlich das Problem - nur wo?

    checked =! checked; // if(checked){ checked = false; } else if(!checked){ checked = true; }

    } // bis hier...

    // change and read ini
    ini_open("data.ini"){

    if(sel = "sound"){

    ini_write_real("audio","sound",checked);
    global.sound = ini_read_real("audio","sound",false);

    } else if(sel = "sound_eff"){

    ini_write_real("audio","sound_eff",checked);
    global.sound_eff = ini_read_real("audio","sound_eff",false);

    }

    ini_close();

    }

    }


    Ich hab die variable sel gesetzt bei den checkboxen (im Raum mit str + Rechtsklick -> Creation Code).
    Weiss jemand wo das problem liegt?

    Also die ini ist soweit sauber. Eine ausgabe im kritischen Bereich von

    GML-Quellcode

    1. show_debug_message("checked: " + string(checked));

    erzeugt folgende Ausgabe bei einer aktivierten Checkbox:

    checked: 0
    checked: 1

    bei der deaktivierten:

    checked: 1
    checked: 0

    1 = true (checked) 0 = false (!checked)

    Hoffe jemand kann mir helfen. :)

    Gruss,

    Xtreme
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!
  • Sorry für das Doppelpost, aber das ist ja schon ein bischen her.

    Aber kann mir nicht bitte jemand kurz helfen?
    Ich habe herausgefunden, dass es geht, wenn ich vor der Äderung eine show_message() schreibe. Aber das ist ja nicht der Sinn der Sache.

    Und dann habe ich noch ne 2. Frage:

    Wie weit macht es Sinn für Objekte, die ich kaufen/verkaufen/upgraden kann Variabeln in der ini zu speichern? Bisher habe ich die im lokalen create-event des objektes.
    Allgemein... was soll ich dort alles reinspeichern? Nur Optionen und Steuerung oder auch objekte? Ich hab echt keinen Plan. :D

    Gruss,

    Xtreme
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!
  • Ja ich weiss, dass man manipulieren kann.

    Kann man die nicht irgendwie schreibgeschützt machen?

    Weiss jemand noch was zu Frage 1? xD

    Gruss,
    Xtreme
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!
  • ich geb dir nur den rat, deine dateien nicht unnötig zu verschlüsseln, wers drauf ansetzt, kommt eh ran.. wer cheaten will, der soll halt bescheissen, geht dich ja nix an... macht dir ansonsten nur unnötig viel mühe(und die einbindung einer extra dll). vorallem mach dir die mühe nich bei so nem kleinen gm-spiel...
    "das war meine letzte flamewar PM an dich ."
  • @ blubberblub: Ja hast Recht.

    Mal noch was anderes:
    Wie sieht das eigentlich mit der Performance aus? Externes Lagern is schon am effizientesten, oder?

    So, nun versuche ich es nocheinmal:

    Weiss einer was ich falsch mache - die checkboxen (siehe 1. Post) wollen einfach net. :pinch:


    Gruss,
    Xtreme
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!
  • Der Sinn hinter externem Laden ist halt, dass du die Daten nur dann lädst, wenn du sie brauchst und wieder entlädst, wenn nicht mehr. wenn du zwar extern lädst, aber trotzdem am anfang alle daten lädst, macht das genau keinen unterschied. so kannst du zb in jedem lvl nur die sprites laden, die im moment auch gebraucht werden, dann ist es auch sinnvoll(die anfangsladezeit ist massiv kürzer).
    "das war meine letzte flamewar PM an dich ."
  • Ok, das macht ja eig. auch Sinn so.

    So, zurück zum Topic: Sry, ich blick nicht durch - brauche dringend hilfe :headtouch:
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!