Noticias

¡Ayuda a la Comunidad GM, haz una donación!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Sistema de scripts de XSE  (Leído 475 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado 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í?
« última modificación: Enero 15, 2020, 05:23:47 am por FernandoNavarro »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado BssString

Respuesta #1 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

 


Desconectado FernandoNavarro

Respuesta #2 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.

 


Desconectado BssString

Respuesta #3 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

 
Los siguientes usuarios dieron las gracias a este tema: FernandoNavarro


Desconectado FernandoNavarro

Respuesta #4 en: Enero 17, 2020, 04:19:28 am
Una pregunta rápida, ¿cómo puedo especificar la carpeta de creación del archivo?

 


Desconectado BssString

Respuesta #5 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

 


Desconectado FernandoNavarro

Respuesta #6 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.

 


Desconectado BssString

Respuesta #7 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