Hola amigos :D como estan el dia de hoy? Espero que bien, bueno vengo con otra duda y es que me gustaria saber si hay posibilidades de crear un solo Objeto llamado Detonador y otro Explosivo, pero que en el mapa puedan haber varios detonadores que activen sus respectivos explosivo...

#1 Noviembre 08, 2018, 01:23:26 AM Ultima modificación: Noviembre 08, 2018, 01:28:00 AM por Hezz
Hola HKaichim! Yo hice algo parecido, pero con palancas y puertas. Te dejo el código de los objetos por si te sirve:
PALANCA
CREATE
[gml]//Imágenes
image_index = 0;
image_speed = 0;
depth = -y-24;

//Variables
state = false; //Estado. true = activada; false = no activada.
change_state = false; //Al estar true, cambia de estado y pasa a false.

//Este objeto tiene una variable en el create_event de la room.
//Esa variable define a qué objetos está "anclado" este objeto.[/gml]

STEP
[gml]//Si cambia de estado
if (change_state){
    //Cambiar de estado
    if (state == true) {state = false; image_index = 0;}
    else {state = true; image_index = 1;}
   
    //Que no cambie más de estado la palanca
    change_state = false;
   
    //Cambiar de estado a los demás objetos de la index
    for (i=0;i<10;i++) {
        var obj = global.puzzle_index[index,i];
        if (obj > 0) {
            obj.change_state = true;
        }
        else {exit;}
    }
}[/gml]

CREATION CODE (clic derecho en el objeto en el room editor)
[gml]index = 0;[/gml]

PUERTA
CREATE
[gml]image_index = 0;
image_speed = 0;

//Cambiar de estado
change_state = false;

//Si está abierta
opened = false;[/gml]

STEP
[gml]if (change_state) {
    //Hacer que no vuelva a cambiar de estado
    change_state = false;
   
    //Si el index de imagen es mayor a 0 o la velocidad de la animación es mayor a 0...
    if (image_index > 0 && image_speed >= 0) {image_speed = -0.3; opened = false;}
    else {image_speed = 0.3; opened = true;}
}[/gml]

ANIMATION END
[gml]///Detener la animación en el primer y último frame
//Si está abierta, dejar el frame de abierto
if (opened) {image_index = 14;}
//Si está cerrado, dejar el frame de cerrado
else {image_index = 0;}

//Sin más animación
image_speed = 0;[/gml]

CREATION CODE
[gml]//global.puzzle_index[id de index, id de objeto]
global.puzzle_index[0,0] = id;[/gml]

Es obvio que algunas cosas de este código te sirven y y otras no, así que fijate. Esto lo hice en el GM:S1 hace ya un tiempo, así que no sabría cómo explicártelo bien :-[ Pero básicamente necesitas una array 2D global (en mi caso global.puzzle_index[x,y]) que almacena la informacion de qué palanca afecta a qué puerta.



Lo que hace es que cuando una palanca de valor x es activada, va a cambiar de estado a todas las puertas que estén en el valor de y. Por ejemplo, la palanca 0 se activa y activa a todas las id de puerta que estén en [0,y]. No sé si me explico muy bien.
Espero que te sirva. Te dejo adjunto el gmk de GM:S1.