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

1
creo que seria algo asi:

[gml]x_destino=x_inicial+(h-v)*34;
y_destino=y_inicial+(h+v)*19;[/gml]

siendo:

x_destino, y_destino: coordenadas a las que tienes que mover tu objeto ( creo que puedes mover el objeto hasta ahi con move_towards_point(x_destino,y_destino,velocidad_que_quieras); (el towards no se en que evento va supongo que en step) )

x_inicial, y_inicial: en donde esta tu objeto antes de moverse

h: cantidad de cuadros a moverse "pseudo-horizontalmente" (asi como este simbolo "\")

v: cantidad de cuadros a moverse "pseudo-verticalmente" (asi como este simbolo "/")

espero que te sirva...
2
Preguntas y respuestas / Re: Aumentar resoluci?n
Agosto 25, 2011, 07:41:07 PM
intenta poniendo este codigo en el evento de cambio de resolucion
[gml]window_set_size(350,220);[/gml]
cambia los valores en el codigo para cambiar la resolucion
ejemplos:
[gml]window_set_size(700,440);[/gml]
[gml]window_set_size(1400,880);[/gml]

tambien te doy el de pantalla completa:
[gml]window_set_fullscreen(true);[/gml]

espero que te sirva...
3
creo que quieres un misil que doble hacia ti ignorando todo lo demas...

encontre un codigo que habia hecho antes para eso...

create:
[gml]speed=4.8;
ts=1.8;
base_ts=ts;
dist=point_distance(x,y,jugador.x,jugador.y);
dist_prev=dist;[/gml]

step:
[gml]dir=point_direction(x,y,jugador.x,jugador.y);
if abs(direction-dir)<180
    {
    if direction<dir direction+=ts; else if direction>dir direction-=ts;
    }
else
    {
    if direction<dir direction-=ts; else if direction>dir direction+=ts;
    }
dist_prev=dist;
dist=point_distance(x,y,jugador.x,jugador.y);
if abs(dist_prev-dist)<1.2 ts+=base_ts/8; else ts-=base_ts/8;
ts=max(ts,base_ts);
image_angle=direction; //esta linea solo funciona en pro (o standard...) si no tienes gm registrado quitala[/gml]

jugador.x y jugador.y deben ser cambiados dependiendo del objeto al que quieras seguir. si cambias la variable ts el misil doblara mas rapido o mas lento
4
excelente juego XD el unico problema es que siento como si el juego corriera muy lento...
podria hacerse que no pudieras traspasar a los demas personajes...
?y por ultimo, agregas mi personaje, esta adjunto?
5
Cita de: Ciberman en Enero 18, 2011, 11:33:31 PM
conozco otra t?cnica en donde dibujas antes la pantalla sobre una segunda surface y la redibujas activando el texture_set_interpolation(linear); todo con un repeat


?pero no se supone que el texture_set_interpolation() no era lo mismo que activar 'interpolate colors between pixels' en la config. global?  ???
?no entiendo como aplicarlo 'todo con un repeat', podrias subir un ejemplo? quiza podria usarlo para optimizar mi tecnica
6
Creador: Yo (Robin28)
Descripcion: Hace que la pantalla se vea borrosa y que los movimientos dejen una especie de rastro (motion blur)
Version de GM:  :GM8: PRO o cualquiera que tenga surfaces
Notas:

  • Son 3 scripts que se ponen en los eventos create, step y draw (respectivamente) del objeto con menor depth (usar un objeto especifico para controlar el blur)
  • Puedes controlar que tan borroso se ve con el efecto cambiando la variable global blur_alpha (entre 0 y 1) o con el cuarto script
  • FUNCIONA CON VIEWS!!!
  • la variable global blur_activated controla si se usara el efecto o no
  • Desactiva el color de fondo en la room...
  • Consume menos recursos de lo que yo creia (me va perfecto a 60 fps)

init_blur(alpha) (alpha va de 0 a 1, recomendado entre 0,05 y 0,25)
[gml]globalvar blur_alpha,blur_activated,blur_surface;
blur_alpha=argument0;
blur_activated=1;
if view_enabled[0] blur_surface=surface_create(view_wview[0],view_hview[0]);
else blur_surface=surface_create(room_width,room_height);[/gml]

blur_step() (creo que es demasiado corto como para un script ??? )
[gml]if blur_activated surface_set_target(blur_surface);[/gml]

blur_draw() (debe ir al final del evento draw del objeto con menor depth)
[gml]if !blur_activated exit
surface_reset_target();
draw_surface_ext(blur_surface,-1,-1,1,1,0,c_white,blur_alpha);
draw_surface_ext(blur_surface,1,0,1,1,0,c_white,blur_alpha);
draw_surface_ext(blur_surface,-1,1,1,1,0,c_white,blur_alpha);
draw_surface_ext(blur_surface,0,-1,1,1,0,c_white,blur_alpha);
draw_surface_ext(blur_surface,1,1,1,1,0,c_white,blur_alpha);
draw_surface_ext(blur_surface,-1,0,1,1,0,c_white,blur_alpha);
draw_surface_ext(blur_surface,1,-1,1,1,0,c_white,blur_alpha);
draw_surface_ext(blur_surface,0,1,1,1,0,c_white,blur_alpha);[/gml]

blur_set(activado,alpha) (se puede hacer con las variables que mencione en notas)
[gml]blur_activated=argument0;
if argument1>0 blur_alpha=min(argument1,1);[/gml]

controles del ejemplo:
flechas para mover la pelota
teclas mas y menos para ajustar el alpha
tecla B para (des)activar el blur

PD: no es necesario dar creditos si se usa
7
deber?a poderse:
pausar sonidos
dibujar curvas
dibujar texto con formato (negrita, cursiva, subrayado, colores) estilo html
hacer arrays tridimensionales
guardar listas, surfaces, etc. con game_save()
ver videos mientras se pueda dibujar cosas encima del video sin congelar el juego
editar la room con zoom
compilar el codigo
etc...

los eventos collision start y release si que hacen falta...
y un detalle: que los juegos no se congelen cuando uno arrastra la ventana (se podr?a usar como trampa para algunos juegos)

EDITO:
DEBER?A PODERSE BORRAR VARIABLES DE OBJETOS Y GLOBALES
8
ponle este codigo en obj_beam_basic cuando colisione con obj_enemy:
[gml]with other instance_destroy();
with obj_enemy_arm instance_destroy();
instance_destroy();[/gml]
9
Cita de: Hackware en Octubre 11, 2010, 02:27:39 AM
As? se entiende naturalmente:
[gml]if (y!=objetivo.y)
{
if (objetivo.y<y) y-=1;
else y+=1;
}
else if (x!=objetivo.x)
{
if (objetivo.x<x) x-=1;
else x+=1;
}[/gml]

Y as? est? optimizado:
[gml]if (y!=objetivo.y)
y+=sign(objetivo.y-y);
else if (x!=objetivo.x)
x+=sign(objetivo.x-x);
[/gml]

P.D. No est? probado.
Esos c?digos solo sirven a una velocidad de 1 pixel por step...  :(
El c?digo correcto ( a 4 pixeles por step) ser?a as?:
[gml]if (y!=objetivo.y) if abs(y-objetivo.y)>4
y+=sign(objetivo.y-y)*4; else y=objetivo.y;
else if (x!=objetivo.x) if abs(x-objetivo.x)>4
x+=sign(objetivo.x-x)*4; else x=objetivo.x;[/gml]
Espero haber ayudado
10
Si las dem?s f?rmulas no te sirven, puedes usar esta:
PS_ENEMIGO-=ceil(SUS_MAX_PS/100*POTENCIA_DEL_ATAQUE*TU_NIVEL/NIVEL_ENEMIGO)
y para cuando te ataque
TUS_PS-=ceil(TUS_MAX_PS/100*POTENCIA_DEL_ATAQUE*NIVEL_ENEMIGO/TU_NIVEL)

por ejemplo:
tu: nivel 5 ps 45 potencia del ataque 25
enemigo: nivel 3 ps 30
al tu atacar le quitar?as (ceil es un redondeo hacia arriba)
ceil(30/100*25*5/3)
=ceil(0.3*25*5/3)=ceil(7.5*5/3)=ceil(37.5/3)=ceil(12.5)=13
entonces quedaria con 17 ps (30-13)
11
hola...
la variable health solo puede estar entre 0 y 100, asi que no le puedes poner como valor 110...
debes usar otra variable (que debe ser global a no ser que la nave sea persistente) como hp.
para dibujar la barra de vida tendrias que usar la funcion draw_healthbar y en el argumento amount poner:
(global.hp/global.hpmax*100) o las variables que uses...
para que al subir de nivel se le agrege 10 de vida usas:
global.hpmax=100+(level-1)*10 en el evento step y create (en los dos eventos)
y cuando suba de nivel cambia el sprite y en vez de usar ifs para cada nivel usa funciones matematicas...
por ejemplo si por cada nivel sube 5 la potencia y la inicial es 20 puedes usar:
global.potencia=20+(level-1)*5
para cada cosa seria
variable=inicial+(level-1)*incremento
espero ayudarte...
12
Hola...
El error esta en el script scr_field_init que deberia decir:
{
    var i,j;
    //clear the field
    for (i=0; i<=2; i+=1)
    for (j=0; j<=2; j+=1)
        field[i,j]=0;
}

Tambien hay un error en el script scr__field_click que deberia decir:
{
   var i,j;
   // halla la posici?n que se ha clicado
   i=floor((mouse_x-297)/(384/3));
   j=floor((mouse_y-75)/(384/3));
   // chequea que existe la celda y est? vac?a 
   if (i<0||i>2||j<0||j>2) exit;
   if (field[i,j]!=0) exit;
   //coloca el bot?n
   field[i,j]=1;
   sound_play(snd_place);
}

Y el script scr_field_draw deberia decir:
{
        var i,j;
        // pinta el bot?n correcto
        for (i=0; i<=2; i+=1)
            for (j=0; j<=2; j+=1)
            {
                if (field[i,j]==1)
                    draw_sprite(spr_boton_azul,0,355+140*i,133+140*j);
                if (field[i,j]==2)
                    draw_sprite(spr_boton_rojo,0,355+140*i,133+140*j);
            }
        // draw the score
        draw_set_font(font_score);
        draw_set_halign(fa_right);
        draw_set_color(c_blue);
        draw_text(200,340,'Player Wins: ' + string(score_player));
        draw_set_color(c_red);
        draw_text(200,375,'Computer Wins: ' + string(score_computer));
        draw_set_color(c_black);
        draw_text(200,410,'Draws: ' + string(score_draw));
}

Espero que te sirva...
13
si quieres que el enemigo cambie su sprite hacia a donde mira hay dos metodos:

1) usa un sprite del enemigo mirando hacia la derecha (el origin del sprite debe estar centrado) y en step pones este codigo:

if x!=xprevious image_xscale=sign(x-xprevious)

2) tambien en step pero con dos sprites

if x-xprevious<0 {sprite_index=(sprite del enemigo hacia la izquierda)}
if x-xprevious>0 {sprite_index=(sprite del enemigo hacia la derecha)}
14
Desarrollo de Scripts / Dibujar grafico de lineas
Noviembre 07, 2009, 06:39:01 PM
Creador: Robin28
Version:  :GM7: PRO, ya que usa listas.
Descripcion: Dibuja un grafico de lineas de una ds_list.

//draw_graphic_line(x1,y1,x2,y2,ds_list,color)
//x1,y1=esquina superior izquierda
//x2,y2=esquina inferior derecha
//ds_list=indice de la lista
//color=color de las lineas

var x1 ,y1,x2, y2, l, c, w, h, z, m, lpx, lpy;
x1=argument0
y1=argument1
x2=argument2
y2=argument3
l=argument4
c=argument5
w=x2-x1
h=y2-y1
z=ds_list_create()
ds_list_copy(z,l)
ds_list_sort(z,0)
m=ds_list_find_value(z,0)
lpx=x1
lpy=y2
ds_list_destroy(z)

draw_set_color(c)
for (i=0; i<ds_list_size(l); i+=1)
{
draw_line(lpx,lpy,x1+w/(ds_list_size(l)-1)*i,y2-h/m*ds_list_find_value(l,i))
lpx=x1+w/(ds_list_size(l)-1)*i
lpy=y2-h/m*ds_list_find_value(l,i)
}
draw_set_color(0)
draw_line(x1,y1,x1,y2)
draw_line(x1,y2,x2,y2)


adjunto un ejemplo
15
Cita de: kakashigna en Noviembre 05, 2009, 04:10:05 AM
fuuucck!!!!!(perdon)
Otra ves me paso trate de probarlo pero se nesesita GM PRO,como odio no tener el gm registrado....


salu2

solo quitale el draw_set_circle_precision(64) en el script y podras usarlo en la version lite XD!!!

solo que el circulo no sera tan preciso (si es muy grande se vera poligonal)...