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 - bygdle

451
Preguntas y respuestas / Re:GAME MAKER SERVER
Mayo 16, 2016, 09:35:37 PM
En la página oficial de GameMakerServer encuentras una documentación para realizar la conexión paso a paso:
http://gamemakerserver.com/en/docs/

Por cierto, el Game Maker Studio trae funciones integradas que permiten conectar con un servidor propio, no necesitas de un servicio de terceros.
452
Preguntas y respuestas / Re:Volver a room anterior.
Mayo 16, 2016, 09:31:45 PM
Puedes declarar una variable global al principio del juego. Y antes de ir a otra sala, almacenas la actual en esa variable:
[gml]
global.sala = room;
room_goto(otra_room);
[/gml]
Y cuando quieras volver, sólo haces esto:
[gml]
room_goto(global.sala);
[/gml]
453
Preguntas y respuestas / Re:un problema grande
Mayo 15, 2016, 04:46:47 AM
Lo que te digo, intenta instalar un servidor local (te recomiendo el Wamp) y lo pruebes desde ahí, puede que el hosting en el que lo hayas probado no permita ciertas cosas, quizás.
Además, creo que el GM en HTML5 no soporta algunas cosas. Por ejemplo, los colores RGB o HSV salen en blanco (los dibujados con código, usando la función draw_set_colour() o funciones que reciban argumentos de color). Las funciones de cuadros de diálogo para abir/guardar archivos no sirven. Entre otras cosas. Es cuestion de que revises el manual, leas qué cosas de las que tienes funcionan en HTML5 y qué no, y vayas descartando.
454
Preguntas y respuestas / Re:un problema grande
Mayo 15, 2016, 04:24:11 AM
¿Has intentado correr el juego desde un servidor local? Quizás el problema se deba a que estás intentando ejecutarlo como un archivo cualquiera desde el navegador.
455
Sobre lo primero que dices, sobre usar min() y max(). La razón por la que los uso es porque, primero que todo, necesito hallar el valor de el menor de esos (obviamente), revisa las partes finales del script.
Ahora, gracias por el reporte :D , arreglarlo fue más complicado de lo que pensé xD, pero ya he modificado el script y ahora funciona como debería :D xD

Por cierto, creo que si hablamos de optimización, mis mínimos y máximos son son más eficientes que el switch de tu versión xDD (Además de que mi intención al hacerlo fue practicar lógica con los booleanos, razón principal por la que no usé un switch desde el comienzo)

NUEVO:
He agregado dos scripts más al grupo, que están relacionados con el original.
456
Cita de: kostra en Mayo 14, 2016, 01:43:55 PM
en suiza, cuando me puse a empoyar gml, me trabe con esta funcion, no comprendia que narices es una interpolacion linear (linear o lineal? :S) mire videos y videos y nada, no me empano, pero yo solo haciendo miles de pruebas llegue a la conclusion de que:

lerp(a,b,amt) es igual a (b-a)*amt

lo que no entiendo esa ultima suma de la a... en mis pruebas no me cuadra xd
Lol xD, juro que en algún lugar lo había leído así xD, o quizás el sueño que tenía cuando lo leí xD :-[

La suma es para que la función devuelva un valor entre los otros dos. Con esto me refiero que lerp(5, 15, 0.5), sin la suma, devolvería: 15-5=10, 10*0.5=5. Pero obviamente 5 no es el resultado, ya que está devolviendo el mismo primer valor. Por eso la suma. a+5= 5+5=10, y el "centro", por decirlo así (o promedio, pero sólo si la cantidad a interpolar es 0.5), de los dos números es 10.

E incluso uno más sencillo: lerp(5, 10, 1) debería dar 10. Pero si le quitamos la suma, quedaría 5. ¿Por qué? porque b-a=10-5=5, y 5*1=5  :o
457
Autor: NiuWeb
Versión de GM utilizada: Studio 1.4.1657
Descripción: Conjunto de scripts que permiten generar un punto aleatorio dentro de los bordes de un rectángulo, círculo o vector (línea).
Código:

Función point_of_rectangle(x1, y1, x2, y2):
[gml]
///point_of_rectangle(x1, y1, x2, y2);
var x1, y1, x2, y2;
x1 = min(argument0, argument2);
y1 = min(argument1, argument3);
x2 = max(argument0, argument2);
y2 = max(argument1, argument3);

var n, s, t, w, h;
n = irandom(1);
s = irandom(1);
t = irandom(1);
w = x2 - x1;
h = y2 - y1;

var pos;
pos [ 0 ] = x1 + w*n + irandom(w)*(n xor 1)*s;
pos [ 1 ] = y1 + h*(!n and s)*t + irandom(h)*(n or !s);
return pos;
[/gml]
Este script genera un punto aleatorio dentro del borde de un rectángulo dado
Argumentos:
    x1: El componente horizontal del primer punto del rectángulo
    y1: El componente vertical del primer punto del rectángulo
    x2: El componente horizontal del segundo punto del rectángulo
    y2: El componente vertical del segundo punto del rectángulo
Devuelve: Un array con dos índices; el primero contiene la posición horizontal generada, y el segundo, la posición vertical generada.
Por ejemplo:
[gml]
var pos = point_of_rectangle(0, 0, room_width, room_height);
instance_create( pos [ 0 ], pos [ 1 ], automovil);
[/gml]
Se creará una instancia del objeto automovil en cualquier punto del borde de la sala


Función point_of_circle(x, y, r):
[gml]
///point_of_circle(x, y, r);
var xx, yy, r;
xx = argument0;
yy = argument1;
r = argument2;
var dir;
dir = irandom(360);
var lenx, leny;
lenx = lengthdir_x(r, dir);
leny = lengthdir_y(r, dir);

var pos;
pos [ 0 ] = xx + lenx;
pos [ 1 ] = yy + leny;
return pos;
[/gml]
Este script genera un punto aleatorio dentro del borde de un círculo dado
Argumentos:
    x: La posición horizontal del círculo
    y: La posición vertical del círculo
    r: El radio del círculo
Devuelve: Un array; su primer índice es la posición horizontal generada, y el segundo es la posición vertical generada.
Por ejemplo:
[gml]
var pos = point_of_circle(165, 165, 133);
instance_create(pos[0], pos[1], granada);
[/gml]
Se creará una instancia del objeto granada en un punto aleatorio dentro del borde de un círculo de 133 de radio ubicado en la posición [165,165]


Función point_of_line(x1, y1, x2, y2):
[gml]
///point_of_line(x1, y1, x2, y2);
var x1, y1, x2, y2;
x1 = argument0;
y1 = argument1;
x2 = argument2;
y2 = argument3;

var len, dir;
len = point_distance(x1, y1, x2, y2);
dir = point_direction(x1, y1, x2, y2);
var sel, lenx, leny;
sel = irandom(len);
lenx = lengthdir_x(sel, dir);
leny = lengthdir_y(sel, dir);

var pos;
pos [ 0 ] = x1 + lenx;
pos [ 1 ] = y1 + leny;
return pos;
[/gml]
Este script genera una posición aleatoria dentro de un vector o línea dada
Argumentos:
    x1: El componente horizontal del primer punto del vector
    y1: El componente vertical del primer punto del vector
    x2: El componente horizontal del segundo punto del vector
    y2: El componente vertical del segundo punto del vector
Devuelve: Un array; su primer índice es la posición horizontal generada, y el segundo es la posición vertical generada.
Por ejemplo:
[gml]
var pos = point_of_line(0, 0, room_width, room_height);
instance_create(pos[0], pos[1], efecto);
[/gml]
Se creará una instancia del objeto efecto en una posición aleatoria dentro de una línea (diagonal) que cruza el origen y el final de la sala.
458
Preguntas y respuestas / Re:Como crear props
Mayo 14, 2016, 12:25:14 AM
Cita de: quiero aprender en Mayo 14, 2016, 12:21:30 AM
Es que no se dibujar  :'(
En ese caso no encontrarás ningún programa que dibuje por tí. Por ello, es necesario que practiques y aprendas a dibujar ;)
Cita de: quiero aprender en Mayo 14, 2016, 12:22:46 AM
No te entendí  :-[ me podrías explicar mejor o mandar un ejemplo si no es mucha molestia  :)
Creo que se refiere a dibujar los sprites en un lienzo pequeño, y después aumentarlo para ahorrar trabajo
459
Podrías ponerlo en el evento <create> del enemigo, junto a esto:
[gml]
alarm[ 0 ] = room_speed;
[/gml]
Y pones lo mismo (el código anterior más éste) en el evento <alarm 0>

No olvides declarar la variable speed con la velocidad a la que quieres que se mueva antes de todo el código en el mismo evento <create>
460
Podrías tomar la dirección entre la posición del enemigo y el jugador, y después aproximarla a un múltiplo de 90:
[gml]
var dir = point_direction(x, y, player.x, player.y);
direction = round(dir/90) * 90;
[/gml]
461
Cita de: eduardoxx1 en Mayo 13, 2016, 08:46:51 PM
aprovechando este mismo tema,espero se pueda ya que va relacionado...
No. No se puede ni va relacionado.
462
No. Ahí almacenará en la variable i_d de la bala creada la identificación del objeto que la creó. La identificación de la bala recién creada está en la variable a.

Ya entiendo lo que quieres hacer, es más sencillo que todo eso que intentas hacer, y mi primer mensaje es lo que te ayudará :D xDD

Primero, digamos que en evento de colisión del player con la bala:
[gml]
var escudo = instance_create(x, y, escudito);
escudo.image_angle = point_direction(other.x, other.x, x, y);
with other instance_destroy();
[/gml]
Suponiendo que lo que quieres es que el escudo "mire" (o rote) a la bala que acaba de golpear al player.
463
Probablemente el primer error se deba a que la variable aa está declarada en el objeto que linvoca el with, no en el objeto bala. Intenta cambiar el with por esto:
[gml]
with (a) {
    i_d = other.aa;
}
[/gml]
Y el segundo error, quizás se deba a que estás escribiendo las dos cosas sobre una misma línea, aunque normalmente no debería suceder. Intenta arreglarlo un poco:
[gml]
a = instance_create(x, y, bala);
a.Master = id;
[/gml]
464
Cita de: eduardoxx1 en Mayo 13, 2016, 04:57:26 PM
buenas gracias por responder a los dos  :), TLT96 en cuanto al script esta linea a.instance_create(x,y,Bala) a.Master=id me da un error o yo estoy mal..tendria que agregarle algo mas? me da error la "a.inst.." supongo que a es una variable?
En vez de a.instance_create(), el código sería:
[gml]
a = instance_create(x, y, bala)
[/gml]
465
Intenta usar una función que devuelve la identificación de instancia (la que tienes está bien xD). Y cuando se detecte la colisión, comproeba la dirección entre las instancias usando point_direction().