Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mensajes - romon_28

256
Preguntas y respuestas / Re:dll GMWW
Abril 25, 2013, 05:18:50 PM
tendria que preguntar el mismo foro del dll
http://gmc.yoyogames.com/index.php?showtopic=183899&page=1
257
te fijaste en el manual o en las propiedades del juego?
258
Tendria que verlo mas a fondo, pero creo que puede ser porque los enemigos no se mueven, porque se destruyen (por ejemplo cuando estan fuera de la room) o porque su IA Tiene que ser cambiada.
259
El error salta a la vista. El codigo "instance_nearest(x, y, obj_enemigo)" busca la instancia mas cercana a un punto (x,y), el tipo de instancia que busca pertenece al objeto "obj_enemigo" si pones que en mismo objeto (obj_enemigo) que busque la instancia mas cercana y a su vez la posicion (x,y) es la ubicacion actual de la misma el codigo tiene devolverte la misma instancia. En conclusion dibujarias en vez de una linea un punto como este: draw_line(x,y,x,y);

Una forma de hacerlo seria:
var inst;
X=x;
Y=y;
x=-10000;
y=-10000;
inst = instance_nearest(X, Y, object0);
if inst != id
{
draw_line(X, Y, inst.x, inst.y);
}
x=X;
y=Y;


O usa el script que hice llamado "Instancia_Cercana":

/*
Es igual que instance_nearest pero obviando la instancia que ejecuta el metodo;
Instancia_Cercana(x,y,objeto);
*/
global._RoMoN_Id = noone;
global._RoMoN_V=true;
global._RoMoN_Dis=0;
with(argument2)
{
if ((point_distance(x,y,other.argument0,other.argument1)<global._RoMoN_Dis)
|| (global._RoMoN_V))
&& (id!=other.id)
{
  global._RoMoN_V=false;
  global._RoMoN_Dis = point_distance(x,y,other.argument0,other.argument1);
  global._RoMoN_Id=id;
}
}

return(global._RoMoN_Id);


y pone en tu codigo:

var inst;
inst = Instancia_Cercana(x, y, obj_enemigo,id);

if instance_exists(inst)
{draw_line(x, y, inst.x, inst.y);}
260
Preguntas y respuestas / Re:Dibujar estela objeto
Abril 23, 2013, 05:19:42 PM
Una forma simple seria crear un objeto llamado Obj_Estela
en El poner:

Ev_alarm 0:
image_alpha -= Destruir;
if image_alpha<=0 {instance_destroy();}
alarm[0] = Tiempo;

Luego usa este Script para el efecto:

Script Crear_Estela ( Cantidad , Tiempo ):
/*
  Ejemplo: Crear_Estela(10,1);
*/
In = instance_create(x,y,Obj_Estela);
In.sprite_index = sprite_index;
In.image_single = image_index;
In.image_angle = imagen_angle;
In.image_blend = image_blend;
In.image_alpha = image_alpha;
In.Cantidad = 1/argument0;
In.Tiempo = argument1;
In.alarm[0] = Tiempo


Este script podes usarlo en una alarma o en el evento step.

Nota: por cada efecto se añade una instancia. Eso podria relentizar el juego si se usa en exeso. Si es ese el caso el metodo tendra que ser otro.
261
Para los Pokemos y los objetos tendrias que hacer una base de datos.
Tenes 2 opciones
1- Usar listas o grillas.
2- Usar un objetos por Pokemon.

Este ultimo me parece mas facil de usar. el problema es que tendrias una base de datos gigante y, a su vez, tendrias muchos objetos. Pero eso se soluciona facil con el codigo instance_deactivate(...).
eso si.. te combiene hacer archivos externos con los datos de cada uno de los pokemon y que lo cargue antes de comenzar el juego.

la verdad es muy complejo...


Te recomiendo hacete un juego de pokemon con 10 pokemon distintos.. si te sale hacerlo despues podes hacerlo con la cantidad de pokemon que quieras.
262
Preguntas y respuestas / Re:Mis dudas
Abril 03, 2013, 05:24:29 PM
10 años!!! guau te felicito!!!

pero.. no entendi bien tu duda.
lo que queres hacer es un cuadro de dialogo tipo pokemon?
Si es asi te lo puedo dar. de todas formas creo que ya existe algunos ejemplos que podrian ayudarte.
si no encontras decime y te lo paso.
si no es eso lo que buscas seria bueno que lo aclares.
Saludos
263
mira:

Ev step:
if keyboard_check(vk_down)
{
if Accion != "Agachado"
{
  Accion = "Agachado";
  sprite_index = sprite_agachado;
}
else
{
  if keyboard_check(vk_space)
  {
    sprite_index = sprite_agachado_golpe;
   }
}
}

//Extra
if keyboard_check(vk_up)
{
if  Accion != "Parado"
{
  Accion = "Parado";
}
}


Ev "animatio end":
if sprite_index == sprite_agachado_golpe
{
sprite_index = sprite_agachado;
}



Fijate si te sirve para algo.
264
Preguntas y respuestas / Re:Pack engines Rpg
Marzo 16, 2013, 12:35:45 AM
te recomiendo que empezes a ver como se utiliza GM y despues que veas como se hace un rpg. Porque es muy complejo incluso para alguien tenga experiencias con GM
265
para que no te la compliques diria que la mejor opcion es que el piso sea un sprite. A media que la view se mueve el sprite tambien lo hace.
Para que los personaje sea mas grandes cuando esten mas serca sea algo asi:

image_xscale = (((view_yview-y)/view_hview)*1.2)-.5;
image_yscale = image_xscale;

bueno.. es solo para que tengas una idea.. despues fijate para que quere bien.
266
Preguntas y respuestas / Re:Problema de colisión
Marzo 16, 2013, 12:25:48 AM
Existen muchos tutoriales de como hacer un juego de plataforma, solo es cuestion de buscar. Te recomiendo que veas en youtube los videos de jucarave.
Suerte.
267
en el evento "other">"animation end"
pone:
Opcion 1:
if (sprite_index == sprite_Personaje_Camina) {image_single=0;}
//Nota: cuando cambie de accion tendria que cambiar image_single a "-1" << image_single=-1; >>
Opcion 2:
if (sprite_index == sprite_Personaje_Camina) {sprite_index = sprite_Personaje_Quieto;}
//Nota: cuando cambie de accion tendria que cambiar de sprite << sprite_indes = sprite_Personaje_Otra_Accion; >>
268
tendrias que fijarte en el manual en español que aparece en esta web.
pero el "for" se usa asi:

for( i=Valor Inicial; i<Malor de corte ; i+=Valor de aumento )
{
...
}

el siclo "for" se usa para reducir la lineas de codigo.

te doy un ejemplo:

Con For:
Evento Draw:
for(i=0;i<100;i+=1)
{
draw_text( x , y+(i*16) , "Nº "+ string(i) );
}

Sin For
draw_text( x , y , "Nº 1" );
draw_text( x , y+16 , "Nº 2" );
draw_text( x , y+32 , "Nº 3" );
draw_text( x , y+48 , "Nº 4" );
draw_text( x , y+64 , "Nº 5" );
draw_text( x , y+80 , "Nº 6" );
draw_text( x , y+96 , "Nº 7" );
draw_text( x , y+112 , "Nº 8" );
draw_text( x , y+128 , "Nº 9" );
draw_text( x , y+144 , "Nº 10" );
...
...
269
Preguntas y respuestas / Re:Spawn enemigos
Marzo 07, 2013, 02:56:16 PM
Create un Objeto llamado Obj_Crea_Meteoritos y pone:

Evento Create:
Tiempo=100;
Cantidad=0;


Evento Alarm 0:
var In;
repeat(Cantidad)
{
In=instance_create(random(room_with),-10,Obj_Meteorito);
In.speed = random(10)+4; //Le asignamos la velosidad al meteorito
In.direction = random(90)+225 //Le asignamos la direccion al meteorito
}

Tiempo-=1;
if (Tiempo<0)
{
Cantidad += 1;
Tiempo = 100;
}

alarm[0] = 20;


nota: el metodo random(x) devuelve un numero entre "0" y "x" incluyendo lo decimales.
270
Desarrollo de Scripts / TextBox (Caja de Texto)
Marzo 04, 2013, 04:58:51 PM
Nombre del creador: romon_28.

Breve descripción de su función: Simula una textbox (caja de texto).

Versión GM utilizada:   :GMS:

Código del Script "Crear_TextBox( x, y, Texto)":
///Crear_TextBox( x, y, Texto)
var Id = instance_create(argument0,argument1,Obj_TextBox);
with(local.Id){RMN_T=argument2;}
return(Id);


Código del Script "Crear_TextBox_ext( x, y, Texto, Digitos Maximos, Color Normal, Color Seleccionado, Fuente,Sprite)":
///Crear_TextBox_ext( x, y, Texto, Digitos Maximos, Color Normal, Color Seleccionado, Fuente,Sprite);
var Id = instance_create(argument0,argument1,Obj_TextBox);
with(local.Id)
{
RMN_T = argument2;
RMN_Largo = argument3;
RMN_ColorNormal = argument4;
RMN_ColorSelec = argument5;
RMN_Fuente = argument6;
sprite_index = argument7;
}
return(Id);


Código del Script "Atributos_TextBox()":
///Atributos_TextBox()

/* Indica si el usuario puede escribir */
RMN_Foco = false;
/* Texto del TextBox */
RMN_T = "";
/* Logitud maxima del texto del TextBox */
RMN_Largo = 512;
/* Color del texto sin foco */
RMN_ColorNormal = c_black;
/* Color del texto con foco */
RMN_ColorSelec = c_black;
/* Fuente del texto */
RMN_Fuente = noone;











//No modificar
RMN_Ubic=0;RMN_De="";RMN_A=RMN_De;RMN_Parp=RMN_Ubic;RMN_KeyPress=noone;RMN_KeyTiempo=RMN_Ubic;


Código del Script "Draw_TextBox()":
///Draw_TextBox()

//Dibujamos el TextBox
draw_set_color(RMN_ColorNormal);
draw_set_font(RMN_Fuente);
draw_set_halign(0);
draw_set_valign(1);

/////////////////////////
/////////////////////////

draw_text(x-50,y, string(RMN_Foco) );

if RMN_Foco
&& !keyboard_check_pressed(vk_enter)
{
with(object_index){if (id!=other.id) {RMN_Foco=false;};RMN_NoTab=true;}

RMN_B1=0;RMN_B2=RMN_B1;

if RMN_T==""{RMN_Ubic=0;}
//Ubicacion
  //Mouse

 
if mouse_check_button_pressed(mb_left)
{
  var H;H=string_height("|�AT1_jpgq1")/2;
  if mouse_y>=y-H&&mouse_y<=y+H
  {
   var i;for(i=0;i<string_length(RMN_T);i+=1;)
   {
    if string_width( string_copy(RMN_T,0,i) ) > (mouse_x-x) {i-=1;break;}
   }
   RMN_Ubic = i;
  }
}

//Key
if keyboard_check_pressed(vk_right)
|| (RMN_KeyPress==vk_right && RMN_KeyTiempo == 15)
{
  if RMN_KeyPress!=vk_right{RMN_KeyTiempo = 0;}
  RMN_KeyPress = vk_right;
  RMN_Ubic=min(RMN_Ubic+1,string_length(RMN_T));
}
if keyboard_check_pressed(vk_left)
|| (RMN_KeyPress==vk_left && RMN_KeyTiempo == 15)
{
  if RMN_KeyPress!=vk_left{RMN_KeyTiempo = 0;}
  RMN_KeyPress = vk_left;
  RMN_Ubic=max(RMN_Ubic-1,0);
}

//Borrado
if keyboard_check_pressed(vk_backspace)
|| (RMN_KeyPress==vk_backspace && RMN_KeyTiempo == 15)
{
  if RMN_KeyPress!=vk_backspace{RMN_KeyTiempo = 0;}
  RMN_KeyPress = vk_backspace;
  RMN_B1=1;
  keyboard_string="";
}

if RMN_Ubic<string_length(RMN_T)
&& (keyboard_check_pressed(vk_delete)
|| (RMN_KeyPress==vk_delete && RMN_KeyTiempo == 15))
{
  if RMN_KeyPress!=vk_delete{RMN_KeyTiempo = 0;}
  RMN_KeyPress = vk_delete;
  RMN_B2=1;
  keyboard_string="";
}

if (RMN_KeyPress!=noone)
{
  if (keyboard_check(RMN_KeyPress))
  {if RMN_KeyTiempo<15{RMN_KeyTiempo+=1;}}
  else
  {RMN_KeyPress=noone; RMN_KeyTiempo=0;}
}

//Adherir
RMN_De=string_copy(RMN_T,0,max(RMN_Ubic-RMN_B1,0));

if keyboard_string!=""
|| RMN_B1==1
|| RMN_B2==1
{
  RMN_A=string_copy(RMN_T,RMN_Ubic+1+RMN_B2, string_length(RMN_T)-RMN_Ubic);
 
  var T;
  T = RMN_De+keyboard_string+RMN_A
 
  if string_length(T)<RMN_Largo {RMN_T=T;}else{RMN_Ubic=max(RMN_Ubic-1,0);}

   
  if RMN_B1==0
  {
   if RMN_B2==0 {RMN_Ubic=min(RMN_Ubic+1,string_length(RMN_T));}
  }
  else
  {RMN_Ubic=max(RMN_Ubic-1,0);}

  RMN_De=string_copy(RMN_T,0,RMN_Ubic);
  RMN_Parp=2;
}

//Dibujar
draw_set_color(RMN_ColorSelec);
draw_text(x,y,RMN_T);


if round(RMN_Parp)>=1
{
  draw_text(x+string_width(RMN_De),y-2,"|");
  draw_text(x+string_width(RMN_De),y+2,"|");
}

if RMN_Parp>=1.2
{
  RMN_Parp-=.025;
}
else
{
  RMN_Parp+=.025;
  if RMN_Parp>=1 {RMN_Parp=0;}
}

keyboard_string="";
}
else
{
if keyboard_check_pressed(vk_enter){RMN_Foco = false;}
 
draw_text(x,y,RMN_T);
}


Código del Script "Dar_Foco_TextBox()":
///Dar_Foco_TextBox(Objeto_TextBox)
with(object_index){RMN_Foco=false;RMN_NoTab=false;}
RMN_Foco = true;


[-][-][-][-][-][-][-][-][-][-][-][-][-][-][-][-][-][-]
[Version anterior]
[-][-][-][-][-][-][-][-][-][-][-][-][-][-][-][-][-][-]

Nombre del creador: romon_28.

Breve descripción de su función: Simula una textbox (caja de texto).

Versión GM utilizada:   :GM6: :GM7: :GM8:

Código del Script "Crear_TextBox()":
/*
Crear_TextBox():  Retorna la Id de la TextBox creada.
Uso:
  TextBox1 = Crear_TextBox();
*/

if (!variable_global_exists("RMN_TextBoxSelec"))
{
global.RMN_TextBoxSelec = noone;
global.RMN_TextBoxIdAsing = 0;
}
else
{
global.RMN_TextBoxIdAsing += 1;
}

global.RMN_T[global.RMN_TextBoxIdAsing] = "";
RMN_Ubic = 0;
RMN_De = "";
RMN_A = "";
RMN_Parp=0;

global.RMN_TextBoxId = global.RMN_TextBoxIdAsing;
return(global.RMN_TextBoxId)


Código del Script "Foco_TextBox(id)":
/*
Foco_TextBox(id);
*/
global.RMN_TextBoxSelec = argument0;
keyboard_string="";
RMN_Parp=2;


Código del Script "Perder_Foco_TextBox()":
global.RMN_TextBoxSelec = noone;

Código del Script "get_Foco_TextBox(id)":
/*
get_Foco_TextBox(id)
*/
return (global.RMN_TextBoxSelec==argument0);


Código del Script "get_Texto_TextBox(id)":
/*
get_Texto_TextBox(id)
*/
return (global.RMN_T[argument0])


Código del Script "Draw_TextBox(id,x,y,ColorFoco,Maxim. Caracteres);":
/*
Draw_TextBox(id,x,y,ColorFoco,Maxim. Caracteres);
Uso:
  Draw_TextBox( TextBox1 , x , y , c_red , 12 );
*/

if global.RMN_TextBoxSelec==argument0
&& !keyboard_check_pressed(vk_enter)
{
RMN_B1=0;
RMN_B2=0;

if global.RMN_T[argument0]=="" {RMN_Ubic=0;}


//Ubicacion
  //Mouse

 
  if mouse_check_button_pressed(mb_left)
  {
   var H;
   H=string_height("|ÁAT1_jpgq1")/2;
   if mouse_y>=argument2-H
   && mouse_y<=argument2+H
   {
    var i;
    for(i=0;i<string_length(global.RMN_T[argument0]);i+=1;)
    {
     if string_width( string_copy(global.RMN_T[argument0],0,i) ) > (mouse_x-argument1)
     {
      i-=1
      break;
     }
    }
    RMN_Ubic = i;
   }
  }

  //Key
  if keyboard_check_pressed(vk_right) {RMN_Ubic=min(RMN_Ubic+1,string_length(global.RMN_T[argument0]));}
  if keyboard_check_pressed(vk_left ) {RMN_Ubic=max(RMN_Ubic-1,0);}

//Borrado
if keyboard_check_pressed(vk_backspace)
{
  RMN_B1=1;
  keyboard_string="";
}

if keyboard_check_pressed(vk_delete)
{
  RMN_B2=1;
  keyboard_string="";
}

//Adherir
RMN_De=string_copy(global.RMN_T[argument0],0,max(RMN_Ubic-RMN_B1,0));

if keyboard_string!=""
|| RMN_B1==1
|| RMN_B2==1
{
  RMN_A=string_copy(global.RMN_T[argument0],RMN_Ubic+1+RMN_B2,string_length(global.RMN_T[argument0])-RMN_Ubic);
 
  var T;
  T = RMN_De+keyboard_string+RMN_A
 
  if string_length(T)<argument4 {global.RMN_T[argument0] = T};

   
  if RMN_B1==0
  {
   if RMN_B2==0 {RMN_Ubic+=1;}
  }
  else
  {RMN_Ubic=max(RMN_Ubic-1,0);}

  RMN_De=string_copy(global.RMN_T[argument0],0,RMN_Ubic);
  RMN_Parp=2;
}

//Dibujar

draw_set_color(argument3);
draw_text(argument1,argument2,global.RMN_T[argument0])


if round(RMN_Parp)>=1
{
  draw_text(argument1+string_width(RMN_De),argument2,"|");
  draw_text(argument1+string_width(RMN_De)+1,argument2,"|");
}

if RMN_Parp>=1.2
{
  RMN_Parp-=.025;
}
else
{
  RMN_Parp+=.025;
  if RMN_Parp>=1 {RMN_Parp=0;}
}

keyboard_string="";
}
else
{
if keyboard_check_pressed(vk_enter){Perder_Foco_TextBox();}

draw_text(argument1,argument2,global.RMN_T[argument0]);
}


Nota: El metodo no dibuja la textbox (sprite) solo su contenido. No esta completo al 100% pero suficiente para un juego simple. Si mas de una persona me pide que lo termine lo voy a hacer, de otro modo lo dejare haci como esta. Preferentemente quisiera algo de credito en el juego que use estos metodos pero ustedes deciden.

Sobre la descargas:
La 1º descarga contiene los metodos anteriores.
El 2º contiene un mini ejemplo de lo que se puede hacer, este ultimo tambien contiene otros metodos que no son parte del mismo y no son obligatorios.
*Añadi una 3º descarga con un ejemplo un poco mas simple. Espero que le tiendan  :D