Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: FernandoNavarro en Enero 15, 2020, 05:19:12 am

Título: Sistema de scripts de XSE
Publicado por: FernandoNavarro en Enero 15, 2020, 05:19:12 am
Hola buenas, yo otra vez. Estoy con un proyecto de remake/traducción del Dragon Ball Z - Buu's Fury y quiero usar un sistema de control de NPCs de Pokemon, algo así:

faceplayer
lock
release
end
etcétera...

¿Alguna idea sobre cómo agregar un sistema así?
Título: Re:Sistema de scripts de XSE
Publicado por: BssString en Enero 16, 2020, 05:25:07 pm
Hola FernandoNavarro

Yo hice algo parecido hace poco, pero depende de la cantidad de eventos que quieres asignar al NPC es la complejidad del sistema.

Si necesitas sólo "lock" y "release", te sugiero crear una variable en el NPC que evite la ejecución de su Step Event normal.

Ej:
Código: [Seleccionar]
if ( lock = true ) { exit; }
Y luego solo haces true o false el valor de esa variable si quieres bloquearlo o desbloquearlo.

Saludos
Título: Re:Sistema de scripts de XSE
Publicado por: FernandoNavarro en Enero 16, 2020, 06:03:07 pm
Bueno, mi idea es programar los eventos desde bloc de notas y ejecutarlo desde un archivo .txt o .ini.

Gracias.
Título: Re:Sistema de scripts de XSE
Publicado por: BssString en Enero 16, 2020, 10:58:44 pm
Hola FernandoNavarro

Interesante, yo lo hice con un ini, en el parámetro "section" puse el número de script y luego en el parámetro "key" le puse un número en orden correlativo.

Ejemplo:
[1]
1="lock"
2="faceplayer"
3="release"

Entonces corrí in while loop mesclado con la función "ini_key_exists" para saber si aún me faltaban líneas por leer y ya las iba leyendo.

Leí los comandos como "string", pero lurgo los ejecuté como scripts que tenía creados en el árbol de recursos de Game Maker.

Cree scripts con la programación dentro llamados así:
ev_lock
ev_faceplayer
ev_release

Y los llamé buscando el asset index primero y luego usando un script_execute.
Un ejemplo rápido:
var evento = ini_read_string("1","1","")
script_execute(asset_get_index("ev_"+evento))

Para los argumentos fue más complejo porque usé un script tokenizer para convertir cada palabra adicional en un argumento adicional para mi script.

Quizás te sirvan algunos aspectos de mi idea

Saludos
Título: Re:Sistema de scripts de XSE
Publicado por: FernandoNavarro en Enero 17, 2020, 04:19:28 am
Una pregunta rápida, ¿cómo puedo especificar la carpeta de creación del archivo?
Título: Re:Sistema de scripts de XSE
Publicado por: BssString en Enero 17, 2020, 11:35:44 am
Hola

A partir de GM Studio ya no puedes creo (que alguien corrija si me equivoco).

La única forma de darle acceso al proyecto a alguna carpeta del ordenador sería pedirle acceso al usuario que ejecuta el juego con una función llamada "get open filename" o algo así.

Sino, por lo menos en windows que uso yo, todos los archivos se crearán en la carpeta Local de la Appdata.

Saludos
Título: Re:Sistema de scripts de XSE
Publicado por: FernandoNavarro en Enero 17, 2020, 03:05:02 pm
¿Cómo fué que hiciste el ev_faceplayer? Estoy intentando cambiar el sprite desde una string pero no lo logro.
Título: Re:Sistema de scripts de XSE
Publicado por: BssString en Enero 17, 2020, 04:56:51 pm
Hola FernandoNavarro

Debes guardar en alguna variable en algún objeto el ID del NPC con el que estás interactuando.

Cuando corras el Faceplayer, giras el NPC, no sé si usas un movimiento en 4 u 8 direcciones.

Yo uso este script:
Código: [Seleccionar]
angle = point_direction(npc.x,npc.y,player.x,player.y) div 90Eso te da como resultado 4 valores posible, 0, 1, 2 y 3.
En función de ese valor hago el cambio de Sprite del NPC.

Saludos