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.

Temas - Texic

21
Desarrollo de Scripts / sprite_get_index
Septiembre 30, 2010, 09:56:37 PM
Creador: Yo-Wadk

Version de GM utilizada:  :GM8:

Tambi?n es compatible con  :GM7: :GM6: y probablemente  :GM5:

Descripcion:
CitarEste script b?sicamente saca el ?ndice de un sprite mediante un string que contenga su nombre. De no encontrarlo devuelve -1. En lo posible traten de que el sprite exista para mejorar el rendimiento del script, ya que hasta que encuentra el sprite recorre 1000 para encontrarlo. En el ejemplo ver?n que el rendimiento no se ve afectado por un simple while de 1000, pero para juegos pesados podr?a resultar inconveniente usar este script en step sobre sprites inexistentes. Esto para mi script, el de Wadk funciona diferente

sprite_get_index (mio)
[gml]z=0
zz=-1
while z<>-1 and z<1000
{
if sprite_get_name(z)=argument0 {zz=z z=-1}
else {z+=1}
}
return zz[/gml]

o

sprite_get_index (Wadk)
[gml]execute_string("return "+argument0);[/gml]

Ejemplo:[gml]sprite_index=sprite_get_index("sprite2")[/gml]

Dejo un adjunto para que vean el funcionamiento de ambas, remarco un par de diferencias. La de Wadk es rapid?sima, a diferencia de la m?a. Pero cuando la sprite no existe da error, a menos que:
A - Desactiven los mensajes de error
B - Activen el "treat uninitialized variables as 0", en ?ste ?ltimo no va a devolver -1 al no encontrar la sprite, sino que devuelve 0

Por eso es q dejo las dos. Bueno, espero que les guste alguna XD
22
Tengo un par de dudas por solventar para mi pok?mon TCG. Decid? hacer sub-conexiones en una conexion normal con el host. Asi evito el fowarding y otros inconvenientes. Ahora, tengo entendido que la 39dll indexa a todos los jugadores de la partida. Entonces cuando un jugador sale de la partida se modifica el indice de los dem?s (Eso le? en GMC), por lo q no s? c?mo referirme a un jugador de manera fija

Imaginense q hay 8 jugadores, cada uno con un indice
A B C D E F G H
1 2 3 4 5 6 7 8

Supongamos que hay una batalla entre el jugador B y el G. Se refieren entre ellos como 2 y 7 para enviarse datos. Ahora el jugador D se aburri? y sali? del juego, la lista quedar?a asi
A B C E F G H
1 2 3 4 5 6 7

Entonces la conexi?n entre el jugador B pasar?a a quedar con el H, y la partida B-G se va a la mierda no funciona. Alguna idea para solucionarlo???

EDITO: No he dicho nada, probando me fije y no reorganiza nada la dll, ni siquiera ocupa los espacios vac?os cuando entran conexiones nuevas
23
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  :)
24
Desarrollo de Scripts / Buscador
Junio 18, 2010, 06:04:46 AM
Creador: Yo

Version de GM utilizada:  :GM8:

Descripcion:
Este es un script que realiza una b?squeda a partir del directorio inicial, pasando por todos los sub directorios para encontrar el archivo con los par?metros ingresados. En un vector, llamado por simple azar found, se almacenan los nombres de todos los archivos coincidentes, y en el vector founds los directorios de dichos archivos respectivamente. De manera que founds[1]+found[1] ser?a el archivo y su ruta completa

Buscar
/*
argument0=Directorio
argument1=Archivo
argument2=Identificador del primer directorio. No importa realmente. Se recomienda 1
Ejemplo: Buscar("C:\User\","dibujo",1)
*/
actdir=argument0
file=string_lower(argument1)
screen_redraw()
fil[argument2]=0
cfile=file_find_first(argument0+"\"+"*"+argument1+"*",0)
if string_pos(file,string_lower(cfile))<>0 {found+=1 founds[found]=cfile foundsd[found]=string_replace_all(argument0,"\\","\")}
while cfile<>""
{
cfile=file_find_next()
if string_pos(file,string_lower(cfile))<>0 {found+=1 founds[found]=cfile foundsd[found]=string_replace_all(argument0,"\\","\")}
}
cfile=file_find_first(argument0+"\*",fa_directory)
if cfile="."
{
cfile=file_find_next() fil[argument2]+=1
cfile=file_find_next() fil[argument2]+=1
}
ref[argument2]=cfile
if cfile<>"" and file_attributes(argument0+"\"+cfile,fa_directory)=1 {Buscar(string_replace_all(argument0+"\"+cfile+"\","\\","\"),argument1,argument2+1)}
cfile=ref[argument2]
while cfile<>""
{
cfile=file_find_first(argument0+"\*",fa_directory)
repeat (fil[argument2])
{
cfile=file_find_next()
}
cfile=file_find_next() fil[argument2]+=1
ref[argument2]=cfile
if file_attributes(argument0+"\"+cfile,fa_directory)=1 and cfile<>"" {Buscar(string_replace_all(argument0+"\"+cfile+"\","\\","\"),argument1,argument2+1)}
cfile=ref[argument2]
}


No s? bien por qu? lo hice, en alg?n lado le? que alguien pregunt? si se pod?a y cuando se lo negaron lo quise refutar  XD
Adjunto en ejemplo sencillo. Tengo otro que indexa los archivos la primera vez q los busca y el resto de las veces no tarda nada

Espero que a alguno le sirva  :) (Sobre todo al que pregunt? eso, sea quien sea  XD)
25
Creador: Yo

Version de GM utilizada: :GM8:

Descripcion:
Bueno, hoy les traigo dos scripts que hice hace alg?n tiempo que sirven para crear una ilusi?n de arrays de tres dimensiones, el primer script es para crear el array o darle un valor a uno de sus componentes y el otro es para obtener lo que hay en cierto componente. Es muy simple, quiz?s demasiado, pero muy necesario en algunas ocasiones en que los array de 2 diemsiones no alcanzan. Inclusive siguiendo la misma linea de pensamiento que us? para crearlo, cre? uno de cuatro diemnsiones, para un juego... relativista  XD (guerdaba la posicion tridimensional de el objeto a cada segundo)

Script para guardar-crear
arrayset
//argument0 = nombre del array tridimensional
//argument1 = primer indice
//argument2 = segundo indice
//argument3 = tercer indice
//argument4 = valor
//Ej: arrayset("vector",1,1,1,variable)
variable_global_set(string(argument0)+"_"+string(argument1)+"_"+string(argument2)+"_"+string(argument3),argument4)


Script para cargar
arrayget
//argument0 = nombre del array tridimensional
//argument1 = primer indice
//argument2 = segundo indice
//argument3 = tercer indice
//Ej: arrayget("vector",1,1,1)
return variable_global_get(string(argument0)+"_"+string(argument1)+"_"+string(argument2)+"_"+string(argument3))


Como dije, es una ilusi?n de arrays  XD
Pero trabaja m?s o menos de la misma manera

Suerte, espero que les sirva tanto como a mi  :)
26
Preguntas y respuestas / [Solucionado] Tab?!
Mayo 08, 2010, 11:31:06 PM
Como puedo chequear si se apret? el tab??
Me carcome la cabeza  XD
27
Preguntas y respuestas / Problema 39dll
Abril 08, 2010, 06:00:59 PM
Hola de vuelta :|
Bueno, la cosa es que tengo un problema de esos indetectables en mi TCG.. B?sicamente el problema consiste en que cuando un jugador crea una mesa, no puedo entrar a esta y viceversa. Para oidos m?s experimentados, la conexi?n es igual que la conexion con el server, s?lo que cambia el puerto de 14804 a 14805, para no tener conflictos con el host. La ip a la q se conecta est? bien, ya revis? eso y no es el problema. Tampoco la cantidad maxima de jugadores. Y el ?nico codigo m?s o menos raro es este
if close=0
{
puerto=tcpaccept(escuchar,1);
if(puerto)
{
while pas<>1 {event_user(0)}
global.jugadores=puerto;
global.servidor=1
room_goto_next()
}
}

Pero al otro jugador le da error de conexion, por lo que sospecho que no tiene nada que ver...

PD: El event user 0 recibe la variable del nombre del jugador contrario y si la recibe pone pas en 1

PD2: El puerto 14805 tambien lo desbloque? desde el router y el firewall lo tengo desactivado
28
Preguntas y respuestas / Ejemplo de UDP
Marzo 23, 2010, 11:41:25 PM
Disculpen, alguno tiene un ejemplo funcional de conexi?n UDP con 39dll?? Busqu? por internet y
aqui en CGM y no logr? encontrar nada =(
Les pre-agradezco  XD
29
Preguntas y respuestas / Aaaaaa!!! Q pas??!
Marzo 05, 2010, 11:41:15 PM
Buenos dias a todos  :(
Mi problema. Por ahora supongo, carente de soluci?n, es que yo estaba
haciendo mi juego tranquilo, como siempre. De repente cargue el juego
para seguirlo. El speed del room esta en 120 para que se vea bonito y
fluido, pero resulta que ahora el room_speed no es 120 sino 60. Por m?s
que lo cambio a 120 en eventos step u otra manera, la speed no quiere voler
a 120 y subir, ya que tambien prob? con 240. El room siempre funciona a velocidad 60
a menos que la baj?. La verdad, no tengo ni idea de qu? pas?, y dudo que alguien
lo haga. Pero mantengo la esperanza de que esto le halla pasado a alguien antes.
Alguien sabe como puedo solucionarlo  :(??
30
Preguntas y respuestas / Saber IP con la 39dll
Febrero 10, 2010, 11:24:15 AM
Acudo a preguntas y respuestas nuevamente  :-[
C?mo hago para saber el ip al que esta conectado el juego?? Y en caso de que haya
mas de un jugador en el puerto?? O sino como hago para saber mi propia IP mediante una funci?n?? (Con
esta ultima quizas pueda hacer las otras 2)
Les agradeceria una pronta respuesta para terminar a tiempo mi pokemon online  :)
Creo saber quien me va a responder  XD

Por cierto, una imagen del juego para su deleite
31
Estoy haciendo el TCG que esta en juegos en desarrollo, y queria saber si
se pueden enviar strings con la 39dll..

Espero q alguno sepa.. Gracias  :)
32
Juegos completos / Pokemon TCG Online
Febrero 02, 2010, 09:50:06 PM

Pokemon TCG (Online)

Otro

GM8

Bueno, todos conocemos el clasico juego de cartas de pokemon. Pokemon TCG Online simula el mismo de manera automatizada (no como redshark), bajo un entorno grafico agradable, con una interfaz totalmente intuitiva y online! Cuenta con creación de cuentas, login, selección y edición de mazos, sala de mesas, chat, duelos de cartas, etc


[spoiler]









[/spoiler]

http://dl.dropbox.com/u/18232060/Pokemon%20TCG.rar


Ultima Actualizacion 06/10/2012

Lo nuevo en esta beta:
Recursos externos, en otras palabras, pueden crearse skin personalizadas
Mejorado el chat interno en las batallas, tiene color coding para los nombres y soporte para muchos más caracteres
Sistema de compra y venta de cartas y paquetes
Re-hecha la sección de modificación del mazo para mayor velocidad y comodidad
Pestaña para ver los usuarios que están online
MESAS ESPECTADAS!! -En reparación
Reproductor de música in-game -Removido
Apuestas
Ranking Online
Minijuegos
Y mas q no me acuerdo... XD

AVISO: NO HAY QUE DESBLOQUEAR EL PUERTO 14805. TAMPOCO EL FIREWALL

Foro Oficial del juego: http://pkcard.byethost15.com/
33
Preguntas y respuestas / Sistema de cuentas
Febrero 01, 2010, 03:41:29 AM
Hola, estoy haciendo un juego de Pokemon TCG online, pero no se me ocurre
un buen metodo para la creacion de cuentas online, con contrase?as y eso.
?Como lo podria hacer de manera efectiva y evadiendo el cheat?

Bueno, esa es basicamente mi pregunta :)
34
Preguntas y respuestas / Girar la c?mara en 3d
Enero 07, 2010, 05:30:25 AM
Hola a todos, mi problema es el siguiente. Tengo un RPG de pokemon que estoy haciendo en
3d y puedo lograr que la c?mara gire hacia los cuatro lados. Pero como se ve feo queria saber
c?mo hacer para que gire gradualmente (como en los fps) en vez de girar repentinamente  :(

PD: Uso el GM8