Enero 15, 2020, 05:19:12 AM Ultima modificación: Enero 15, 2020, 05:23:47 AM por FernandoNavarro
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í?

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:
if ( lock = true ) { exit; }

Y luego solo haces true o false el valor de esa variable si quieres bloquearlo o desbloquearlo.

Saludos

Bueno, mi idea es programar los eventos desde bloc de notas y ejecutarlo desde un archivo .txt o .ini.

Gracias.

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

Una pregunta rápida, ¿cómo puedo especificar la carpeta de creación del archivo?

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

¿Cómo fué que hiciste el ev_faceplayer? Estoy intentando cambiar el sprite desde una string pero no lo logro.

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:
angle = point_direction(npc.x,npc.y,player.x,player.y) div 90
Eso 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