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

1291
Creador: Yo

Version de GM utilizada:  :GM8:

Descripcion:
Este script crea un sprite con la forma de otro. Mmm... dificil de explicar, pruebenlo y ver?n  XD

sprite_create_form

//argument0=sprite
//argument1=subimage
//argument2=sprite form
//argument3=subimage of form
//argument4=append to a existing sprite
fspr=-1
if argument1=all
{
if sprite_exists(fspr) {sprite_delete(fspr)}
for (i=0;i<=sprite_get_number(argument0)-1;i+=1)
{
erase=surface_create(sprite_get_width(argument2),sprite_get_height(argument2))
surface_set_target(erase)
draw_clear_alpha(c_white,0)
draw_rectangle(0,0,sprite_get_width(argument2),sprite_get_height(argument2),0)
draw_set_blend_mode(bm_subtract)
draw_sprite(argument2,argument3,sprite_get_xoffset(argument2),sprite_get_yoffset(argument2))
draw_set_blend_mode(bm_normal)
surface_reset_target()
spr=surface_create(sprite_get_width(argument0),sprite_get_height(argument0))
surface_set_target(spr)
draw_clear_alpha(c_white,0.01)
draw_sprite(argument0,i,sprite_get_xoffset(argument0),sprite_get_yoffset(argument0))
draw_set_blend_mode(bm_subtract)
draw_surface(erase,0,0)
draw_set_blend_mode(bm_normal)
surface_reset_target()
if !sprite_exists(fspr) {fspr=sprite_create_from_surface(spr,0,0,sprite_get_width(argument0),sprite_get_height(argument0),0,0,0,0)}
else {temp=sprite_create_from_surface(spr,0,0,sprite_get_width(argument0),sprite_get_height(argument0),0,0,0,0) sprite_merge(fspr,temp)}
}
return fspr
}
else
{
erase=surface_create(sprite_get_width(argument2),sprite_get_height(argument2))
surface_set_target(erase)
draw_clear_alpha(c_white,0)
draw_rectangle(0,0,sprite_get_width(argument2),sprite_get_height(argument2),0)
draw_set_blend_mode(bm_subtract)
draw_sprite(argument2,argument3,sprite_get_xoffset(argument2),sprite_get_yoffset(argument2))
draw_set_blend_mode(bm_normal)
surface_reset_target()
spr=surface_create(sprite_get_width(argument0),sprite_get_height(argument0))
surface_set_target(spr)
draw_clear_alpha(c_white,0)
draw_sprite(argument0,argument1,sprite_get_xoffset(argument0),sprite_get_yoffset(argument0))
draw_set_blend_mode(bm_subtract)
draw_surface(erase,0,0)
draw_set_blend_mode(bm_normal)
surface_reset_target()
return sprite_create_from_surface(spr,0,0,sprite_get_width(argument0),sprite_get_height(argument0),0,0,0,0)
}


Aqui para  :GM7: modificado por NOKABURE

//argument0=sprite
//argument1=subimage
//argument2=sprite form
//argument3=subimage of form
//argument4=append to a existing sprite
fspr=-1
if argument1=all
{
if sprite_exists(fspr) {sprite_delete(fspr)}
for (i=0;i<=sprite_get_number(argument0)-1;i+=1)
{
erase=surface_create(sprite_get_width(argument2),sprite_get_height(argument2))
surface_set_target(erase)
draw_clear_alpha(c_white,0)
draw_rectangle(0,0,sprite_get_width(argument2),sprite_get_height(argument2),0)
draw_set_blend_mode(bm_subtract)
draw_sprite(argument2,argument3,sprite_get_xoffset(argument2),sprite_get_yoffset(argument2))
draw_set_blend_mode(bm_normal)
surface_reset_target()
spr=surface_create(sprite_get_width(argument0),sprite_get_height(argument0))
surface_set_target(spr)
draw_clear_alpha(c_white,0.01)
draw_sprite(argument0,i,sprite_get_xoffset(argument0),sprite_get_yoffset(argument0))
draw_set_blend_mode(bm_subtract)
draw_rectangle(sprite_get_width(argument2),0,sprite_get_width(argument0),sprite_get_height(argument0),0)
draw_rectangle(0,sprite_get_height(argument2),sprite_get_width(argument2),sprite_get_height(argument0),0)
draw_surface(erase,0,0)
draw_set_blend_mode(bm_normal)
surface_reset_target()
if !sprite_exists(fspr) {fspr=sprite_create_from_surface(spr,0,0,sprite_get_width(argument0),sprite_get_height(argument0),0,0,0,0,0,0)}
else {temp=sprite_create_from_surface(spr,0,0,sprite_get_width(argument0),sprite_get_height(argument0),0,0,0,0,0,0) sprite_merge(fspr,temp)}
}
return fspr
}
else
{
erase=surface_create(sprite_get_width(argument2),sprite_get_height(argument2))
surface_set_target(erase)
draw_clear_alpha(c_white,0)
draw_rectangle(0,0,sprite_get_width(argument2),sprite_get_height(argument2),0)
draw_set_blend_mode(bm_subtract)
draw_sprite(argument2,argument3,sprite_get_xoffset(argument2),sprite_get_yoffset(argument2))
draw_set_blend_mode(bm_normal)
surface_reset_target()
spr=surface_create(sprite_get_width(argument0),sprite_get_height(argument0))
surface_set_target(spr)
draw_clear_alpha(c_white,0)
draw_sprite(argument0,argument1,sprite_get_xoffset(argument0),sprite_get_yoffset(argument0))
draw_set_blend_mode(bm_subtract)
draw_surface(erase,0,0)
draw_set_blend_mode(bm_normal)
surface_reset_target()
return sprite_create_from_surface(spr,0,0,sprite_get_width(argument0),sprite_get_height(argument0),0,0,0,0,0,0)
}


Dejo un ejemplo de su uso, espero que les guste  :)
1292
Supongamos que tengo un objeto llamado "pared" y yo coloco tiles de cuadros sobre ella, cuando acero mi objeto "player" o colisiono con la pared (que tiene los cuadros(tiles antes mencionados), pero los cuadros aparecen encima del player.

No entend?, quer?s que los tiles se sobrepongan, no?
1293
Pon? los tiles en -999999 y te asegur?s que queden bien adelante. Al tener depth -y los valores de depth son casi siempre n?meros de 3 cifras
1294
   
?como hacer que tu juego se pueda jugar en linea? [Programaci?n]

Si entend? bien, te refieres a eso. Ya el embeed no se puede con juegos de gme maker, pero bueno, es lo que hay
1295
Para aumentarle un valor relativo bien pod?s.
a=a+1
a+=1
Ahora si por relativo te refer?s a dibujar un sprite en una posici?n relativa, en donde dice x e y en vez de poner 0 pon?s x,y - obj.x,obj.y -x+1,y+1 - etc
1296
Pues GML es programaci?n, aprender GML es parecido a aprender VB u otros, no veo porq no puedas empezar desde el GML, no es ni m?s ni menos complejo que otros lenguajes de programaci?n
1297
Claro, exactamente como lo hizo brunoxzx, me falt? decirte que ten?as que cambiar el tama?o de la surface, y la sprite que se recrea en el script Colision

EDIT: Ya, cambi? el c?digo, ahora s?lo tienes que cambiar el tama?o del surface al crearse, el resto se hace autom?tico. Recuerda que el tama?o de la surface debe ser mayor o igual al del sprite
1298
Bueno, si esa es poco fiable, tengo esta otra, es la que us? para el plore (Con m?s stats, pero la adapt? al tuyo)
global.danio=((((((2*global.player1nivel/5)+2)*global.player1nivel*30)/global.player2nivel)/50)+2)
1299
El /2 significa dividido 2. El 1 es parte de la funcion max(), es para asegurarse de que nunca saque menos de 1, sino le sumar?a vida al oponente. Si la diferencia fuera m?s grande funciona si, fijate, en este ejemplo ta implementado para probar. Si no te gusta la proporci?n, prob? multiplicando y dividiendo los niveles, asi como yo dividi el nivel del enemigo en 2. O rest? y/o sum? valores, es ajustable
1300
Mmm... Se puede con tile_set_visible(id,visible) en combinaci?n con tile_layer_find(depth,x,y), pero te tomar?a m?s tiempo procesar eso que mostrar los tiles. Hasta donde yo s?, no hay una funci?n que lo haga de manera autom?tica. La ?nica soluci?n que se me ocurre es que en vez de tiles uses objetos, pero es muy pesado hacer eso, comprarte una nueva gr?fica tomar?a menos esfuerzo  XD
1301
Si, en vez de draw_rectangle en el create pon?s draw_sprite. El evento de colisi?n, lo hice asi para que chequee colisi?n de manera hiper precisa. Porq la velocidad lo hace pegar saltos de una posici?n a otra, y el Colision hace que avanze de a uno y chequee si hay colision o no. Por ahora el script de colision cheque ? colision con todos los objetos, pero pod?s especificar en loa parte q dice all.

PD: Me equivoque en una cosita, q en realidad lo hace m?s complicado en vano, ahi te dejo el adjunto nuevo
1302
Pues la f?rmula hace lo que dijiste, no trabaja estrictamente con la diferencia, sino que la utiliza en forma de ataque y defensa, es una f?rmula que saqu? del rpg maker 2003, quiz?s necesita peque?os ajustes en esas divisiones de nivel, pero fijate hasta que te quede c?modo. Y que no uses globales no importa, cambia las globales de la f?rmula por las variables que uses. Yo anduve jugando un poco y llegue a esta f?rmula, creo que est? bastante precisa
global.player2vida-=max(floor(((global.player1nivel))-(global.player2nivel/2)),1)

PD: Esta es la f?rmula real, ni se acerca a la que te d?, ni a una que puedas hacer manualmente: F?rmula
Esta es algo m?s simple, pero para ambas te faltan variables: F?rmula 2
1303
O pod?s usar la diferencia de nivel que haya entre ambos:

global.player2vida -= floor(((global.player1nivel/2)+5)-(global.player2nivel/4))

Pero igual, es un sistema algo malo, deber?as usar ataque y defensa, como m?nimo

PD: Notificar es para que te lleguen e-mails cada vez que responden el tema en el que lo activaste
1304
Preguntas y respuestas / Re: para que sirve other
Julio 05, 2010, 02:48:18 AM
Nop, se usa en las colisiones. Other es el objeto con el que colisionas. No estoy seguro si se usa para otra cosa, creo q no
1305
Tengo tu soluci?n, crear una sprite volatil con surfaces. Te hice un ejemplo