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

1

Tomy and Tiburcio

Puzzle

GM: Studio

Juego hecho en 48 horas para la GLOBAL GAME JAM.

¿Qué harías si estuvieras perdido en el medio del océano?

Tomy and Tiburcio es una aventura gráfica estilo point & Click en donde hay que utilizar todos los objetos del entorno para poder pedir ayuda y escapar del barco en el que nuestros protagonistas están atrapados.

LINK PARA JUGAR ONLINE POR GAMEJOLT:
http://gamejolt.com/dashboard/developer/games/view/49534/

Información: El juego está en INGLÉS. Perdón las molestias.




http://gamejolt.com/dashboard/developer/games/view/49534/


Dejo el EXE subido adjunto al mensaje, pero recomiendo que lo jueguen por GAMEJOLT (link arriba), ya que ahi está la versión actualizada online.
2
Juegos completos / Memotest Anime [Open-Source]
Febrero 06, 2013, 01:26:48 AM

Memotest Anime [Open-Source]

Puzzle

GM8

Este es un juego de cartas Memotest que hice en una tarde cuando estaba aburrido, hace más o menos dos semanas... Lo comparto y pongo el código fuente, es ultra básico, pero puede que le sirva a alguien para aprender a hacer un Memotest. La parte que podría estar interesante es la de cómo se ponen aleatoriamente las cartas para que no se repitan y solo haya dos de cada una. (obj_creador, create).

No está comentado el código porque no pensaba subirlo, y aparte es muy muy básico, asi que no creo que tengan problemas para entenderlo.



adjunto
3
Propuestas y soporte / Imágenes Manual de GM
Diciembre 05, 2012, 12:52:06 PM
Bueno, resulta que el otro día le quería mostrar el manual que hay en la CGM de GM6.1 en español a mi abuelo (sí, no pregunten, se enganchó mi abuelo con el tema del Game Maker), la cuestión es que no funciona casi ninguna imagen, todas las urls están rotas...
quería saber si se podría solucionar el problema, o, si necesitan ayuda podría ayudarles con algo (ahora estoy medio corto de tiempo por el final de clases, pero supongo que me puedo hacer un espacio)

Bueno, era eso...
Gracias!

PD: este es el manual de GM en español, para el que no lo conoce: http://www.comunidadgm.org/manual_GM/Index.php
4
Guerra de IAs (GIA) / GIA_03 Tetris Finalizado
Marzo 26, 2012, 04:27:13 AM
Finalizó GIA 03 Tetris
El Campeón ha sido Ferhand!!


Descarga de los archivos
- Descarga del Ejecutable con las Rondas del Concurso
4ta Ronda (La Última)
3ra Ronda
2da Ronda
1ra Ronda
- Descarga del Editable Final del Concurso con las IAs + Los Registros:
Link hacia el GMK (GM8.0)
-Descarga de los editables sin ninguna IA (para los que quieran makearse su propia IA)
GMK de GM8 Pro
GMK de GM8 Lite

Lista de participantes en orden de entrega de las IAs
- ElvisKelley
- Robin28
- Topet
- Texic
- Ferhand
- Ciberman
Yo (Ciberman) Participé, pero como soy el organizador, no es oficial es solo para demostrar que se puede hacer una IA, aunque creo que las otras IAs lo demuestran mejor que yo....

Resultados
Citar
1ero - Ferhand
2do - Texic
3ro - Robin28
4to- Topet
5to - ElvisKelley




Si participás o participaste en alguna de las GIAs te invito a poner estos banners en tu firma:
Citar
GIA 1:

GIA2:

GIA3:


GIA 1:
[img]http://linuca.org/link/?l730[/img]
GIA 2:
[img]http://linuca.org/link/?l731[/img]
GIA 3:
[img]http://img21.imageshack.us/img21/2520/gia3bar2.png[/img]


5
Guerra de IAs (GIA) / GIA_03 Tetris - Seguimiento -
Febrero 23, 2012, 01:54:38 AM
Comienza GIA 03 Tetris!!



Bueno, hoy se da inicio al concurso GIA 03 Tetris. Espero que haya mucha participación en el concurso.  El tiempo para hacer la IA la primera versión de sus IAs es de una semana. Con lo que la primera fecha de entrega es hasta las 7PM del 1 de marzo de 2012 (Hora Argentina, GMT-03).
IMPORTANTE: para que su IA sea aceptada debe pasar como mínimo el nivel 01 (Uno)
Toda la información necesaria está en el reglamento, igualmente si tienen alguna pregunta pueden hacerla en este post. Se puede usar GM8.0 o GM8.1, pero si usan GM8.1 avisenme en el e-mail cuando envien sus IAs.


Bueno, ahora les dejo el reglamento de GIA 03 Tetris: (pueden verlo tambien en la Game Information del Editable o descargarlo adjunto)

Citar
Bases de Guerra de IAs
v1.4

GIA, Concepto de juego

   GIA, también conocido como "Guerra de IAs" tiene como concepto básico ser un concurso en donde los participantes deberán generar una IA (inteligencia artificial) que competirá mano a mano con IAs realizadas por otros participantes. Las IAs serán realizadas para una situación específica que variará según el tema y reglamento de la edición.
   Los títulos de "Campeón" pueden ir rotando, lo que significa que una vez haya un campeón puede aparecer una nueva IA o incluso alguna anterior mejorada y derrocar al campeón coronándose como la actual IA campeona hasta que alguien la destrone nuevamente.
   También habrá plazos estipulados (ej: 1-2 semanas) para derrocar al actual campeón. Si en ese lapso no se realizan derrocamientos la IA campeona de ese momento será declarada la campeona definitiva dando paso a una segunda etapa del proyecto.
   Esta segunda etapa consistirá en la liberación del código de fuente de las IAs generadas hasta el momento de modo que se puedan utilizar para realizar aun una mejor IA y además sirvan de material  para novatos ya que los participantes deberán llevar un registro de como trabaja y piensa su IA, pero esto se detallará mas adelante.

  Vamos a dar un ejemplo:
  "Supongamos que el tema seleccionado para la edición es "Carrera de Autos", en ese caso la IA campeona seria la que llegue en primer lugar."
   Pero como se dijo antes, abra un plazo en donde los demás participantes podrán intentar derrocar a la IA Campeona. Y así sucesivamente hasta que se declare una IA definitiva.
  Luego de ello todos los registros de los participantes con sus respectivas IAs serian liberadas a modo de fomentar el aprendizaje por medio de una competencia.
  En este momento se podrán seguir mejorando las IAs a partir de los códigos ya liberados. Aunque la Campeona ya haya sido declarada como oficial Campeona eterna, eso no quita que pueda ser superada una vez que se liberen los códigos.

   Para hacer las IAs los participantes van a trabajar sobre un editable ya diseñado con el engine del tema. Los participantes solo van a tener la capacidad de trabajar (picar código) sobre un solo objeto que será el del Droide que va a representar a su jugador. Luego, el encargado del concurso juntará todo en otro editable.



Reglamento General:

   Los movimientos, acciones o chequeos que puede hacer la IA, van a estar determinadas por unos scripts a los que van a tener que llamar. Cuando por ejemplo quieran "moverse a la izquierda" harán un llamado que dirá scr_move(left); por poner un ejemplo.

   Dentro de las cosas que podrán programar sobre la IA hay ciertas reglas que deben seguir:
1- Solo se trabaja sobre el objeto de la IA.
2- No se pueden modificar variables existentes, solo chequearlas.
3- Se pueden crear variables locales en la instancia y modificarlas, excepto las ya existentes (x,y por ejemplo).
4- No se puede hacer uso del evento draw.
5- No se pueden crear otras instancias u objetos.
6- Si se crean scripts deberán llevar el nombre de scr_nombredeljuegador_nombredelscript-
7- Abra un lapso de al menos 3 días días entre cada IA enviada por un mismo jugador.
8- No se puede hacer la IA para un room/nivel especifico, debe ser capaz que funcionar bien en cualquier ambiente. Ej: if global.level=x {blabla} NO
9- Si una IA relentiza demasiado el juego el juez puede optar por no validarla.
10- Trabajar sobre hojas distintas a las que utilizan los scripts defaults que ya vienen con el editable.

   Este tipo de acciones invalidaran a las IAs, y en caso de ser groseras como querer Cerrar el juego (como algo muy obvio) podría sancionarse al jugador invalidándolo a presentar mas IAs.

   Esto no es una regla, pero es recomendable que mientras participan no liberen el código cosa de que cada jugador tome distintos rumbos que es donde toma gracia el concurso.


Registro de las IAs:

   Los jugadores deberán hacer un seguimiento de los problemas que les fueron surgiendo en el desarrollo de sus IAs, tanto los planes que fueron cambiando de rumbo como las dificultades a lo largo de los niveles.

Deberán ponerlo con un // en el script: scr_nombredeusuario_registro.

El registro deberá estar compuesto por:

DATOS de la IA.

   También deberían agregar la fecha de inicio y finalización de la IA más el nombre del creador.

Explicación de como piensa la IA.
Ej:
-Primero aberiguo la dirección en la que se encuentra la meta
-Luego chequea que no haya pozos en la dirección a la que va.
-Si los hay, calcula una distancia segura y los salta

Explicación de problemas surgidos .
Ej:
El primer nivel me parecía fácil se superar y de hecho lo fue, aunque aun creo que puedo mejorar mi tiempo.

Respecto al segundo nivel, tuve algunos problemas con la detección de muros por lo que tuve que hacer cuenta atrás y cambiar algunas bases de la IA.


GIA 03 Tetris

   Creo que no es necesario decir qué es el tetris, por eso si aun te quedan dudas puedes informarte en internet. Antes de empezar deberas hacer algunas cosas:
•   Cambiale el nombre al obj_IA por dentro de la carpeta jugadores, por obj_tunik. Ej: obj_Ciberman, obj_KrakenHimoto
•   Remplaza el sprite spr_IA dentro de la carpeta Jugadores por un avatar propio con el nombre spr_minik con las mismas dimensiones que el sprite de ejemplo. Ej: spr_ciberman
•   Crea una carpeta para tus scripts con tu nik dentro de la carpeta Jugadores (de aqui en adelante "Carpeta personal")
•   Crea 4 scripts básicos OBLIGATORIOS dentro de la Carpeta Personal (puedes crear más scripts luego, pero estos son obligatorios)
   > scr_minik_registro > aca deberas incluir tu registro
   > scr_minik_create > este sera el script que se ejecute en create
   > scr_minik_ev0 > este script se ejecutará en el event user 0 (se hablará más adelante)
   > scr_minik_ev1 > este script se ejecutará en el event user 1 (se hablará más adelante)
•   Ve al objeto de tu IA y agrega los scripts que recien creaste despues de las hojas que ya estan en los eventos correspondientes.
•   Ve al obj_game_control dentro de la carpeta Juego, evento create, y remplaza la linea 10  por la siguiente linea:
   users_add("Mi Nombre", spr_minik, obj_minik );
"Mi nombre" es el nombre que se usará solo para visualizar.   
remplaza spr_minik y obj_minik por el nombre de tu sprite y de tu objeto.

   Bien! ahora ya has instalado correctamente tu usuario en el engine de GIA tetris. Puedes empezar a programar tu IA...pero antes te explicaré brevemente como es GIA Tetris. Las acciones que puede realizar una IA son las siguientes:

•   IA_move(int); > mueve la Pieza actual un cuadrado a la izquierda (int=-1) o un cuadrado a la derecha (int=1). Devuelve true si la operación es válida, false en caso contrario.
•   IA_down(); > Baja la pieza actual un cuadrado. Devuelve true si la operación es válida, false en caso contrario.
•   IA_rotate(); > Rota la pieza actual en sentido anti-horario. Devuelve true si la operación es válida, false en caso contrario. Más información sobre la rotacion de las piezas en la siguiente dirección: http://www.colinfahey.com/tetris/tetris_diagram_pieces_orientations_new.jpg

Tambien se pueden usar scripts para obtener datos, a continuación paso a explicarlos:

•   get_boss(); > Bueno, aca tengo que explicar como funciona internamente el editable del tetris: cuando se crea la pieza está formada por cuatro intancias del obj_tetris. Uno de ellos que coincide con el centro de rotación es el boss. (el marcado con un punto en esta imagen sería el boss: http://www.colinfahey.com/tetris/tetris_diagram_pieces_orientations_new.jpg ) El Boss (Pieza Jefe), controla el movimiento de las otras partes de la pieza asi como su rotación. obteniendo el ID del boss se pueden obtener otros datos:
   > get_boss() > ID del objeto Boss
   > (get_boss()).x > X del objeto Boss
   > (get_boss()).y > Y del objeto Boss
   > (get_boss()).pose > estado de rotación del objeto Boss de 0 a 3 (fijate en cada columna de http://www.colinfahey.com/tetris/tetris_diagram_pieces_orientations_new.jpg )
   > (get_boss()).piece > String con el tipo de pieza ("O","I","L","J","S","Z","T")
   > (get_boss()).p1; (get_boss()).p2; (get_boss()).p3; > ID de los otros segmentos que componen la pieza (instancias del obj_tetris)
•   get_next(ind); > Indica un string con el tipo de pieza siguiente, en caso de que se deje ind en blanco se indica la siguiente pieza, si ind=1 se devuelve la segunda, si ind=2 la tercera y asi sucesivamente, puedes obtener hasta las 4 siguientes piezas, no más (ind=3), que sería las que el jugador normal ve en pantalla.
•   get_pose(); > igual que  (get_boss()).pose
•   get_piece(); > igual que  (get_boss()).piece

para comprobar si hay una pieza en el escenario puedes hacer tu propia comprobación place_meeting(xx,yy,obj_piece); acuerdate que todas las piezas que ya cayeron en el escenario son instancias del obj_piece. Tambien recuerda que el area de juego comienza en 240,80 y tiene 10x20 cuadrados de 16x16px.

Bien, pero me diras, Cómo sé cuándo se crea una nueva pieza y dejo de controlar a esta. Bien, para eso paso a explicarte los eventos que tienes permitido usar. NO puedes usar otros EVENTOS.

•   Create
•   Event User 0: este evento se ejecuta cada 2 steps. Aqui puedes controlar el movimiento de la pieza.
•   Event User 1: este evento se ejecuta cada vez que se crea una pieza y dejas de controlar a la actual, (osea cuando cae totalmente la pieza y no hay más espacio abajo). El evento se ejecuta inmediatamente despues de crear la pieza.

Por ultimo te digo que se declarará ganadora la IA que haya pasado más niveles, en caso de que dos IAs hayan logrado la mima cantidad de niveles antes de morir se contará el tiempo TOTAL de todos los niveles jugados por la IA sin contar el tiempo del nivel que no pudo pasar (en donde murió).


Enviando la IA

-Se deberá exportar tu carpeta personal completa con el nombre de archivo scr_minik.gml y el sprite de la IA con el nombre spr_minik.png
   (Para exportar una carpeta con scripts hazle click derecho a tu carpeta personal y haz click en Export Group of scripts)

-En un .zip/rar deberas colocar estos dos archivos.

-Deberas enviarlo al siguiente correo electrónico, ya sea adjunto o con un link de enlace directo como Dropbox: javier_ciberman@hotmail.com



El reglamento podría ser modificado sin previo aviso (aunque se intentará avisar en caso de que sea algo muy importante)

Gracias a Kraken himoto por darnos el placer de poder disfrutar de las dos primeras GIAs

Ciberman


Quiero darle las gracias a Kraken Himoto por brindarnos las GIAs 01 y 02, y a todo el staff de CGM por permitirme hacer de GIA 03 Tetris un concurso oficial. Tambien quiero agradecer a Wadk y a Texic que me ayudaron y me siguen ayudando con toda la organización de GIA 03...



Y bueno, si ya mismo quieren ponerse a programar, adjunto a este post está el editable... a makear!!

Ciberman

PD: ah, una última cosa, traté de debuguear el editable lo más posible, pero nadie es perfecto.. asi que si encuentran algun bug haganmelo saber...

EDIT: Revisando el editable en otras PCs me di cuenta que no todas las maquinas tienen instalada la fuente AgencyFB que es la que usa GIA Tetris.. para que se vea bien se nesecita esa fuenta, la pueden descargar de aca: http://fontzone.net/font-details/Agency+FB/

EDIT2:

YA están Los resultados de la PRIMERA RONDA
Link: http://www.comunidadgm.org/index.php?topic=16595.msg78188#msg78188

Ah, otra cosa:
IMPORTANTISIMO LEER:
Actualicé los editables porque tenían un bug gravísimo, se podía realizar más de una acción a la vez, o si se repetía el mismo código de mover muchas veces en el mismo evento la pieza se teletransportaba practicamente, esto hacía que se pueda ganar mucha ventaja en los tiempos. Revisé todas las IAs y ninguna estaba ejecutando más de un script de accion a la vez.. Pero por favor migren al nuevo editable oficial, que soluciona este bug importantísimo. Gracias a Kraken Himoto por reportarme este Bug que yo creía haber solucionado.

Edit3: Ya están los resultados de la SEGUNDA RONDA
Link: http://www.comunidadgm.org/index.php?topic=16595.msg78318#msg78318



EDIT4:
Por fin hice el banner...
Si participás o participaste en alguna de las GIAs podes poner estos banners en tu firma para que todos lo sepan:
Citar





GIA 1:

[img]http://linuca.org/link/?l730[/img]


GIA 2:

[img]http://linuca.org/link/?l731[/img]


GIA 3:

[img]http://img21.imageshack.us/img21/2520/gia3bar2.png[/img]




6
Preguntas y respuestas / Aclarar una imagen
Enero 17, 2012, 04:15:35 AM
Hola hola, aca mi duda:
Todos sabemos que el draw_set_color(c_white) dibuja la imagen normal y el c_black dibuja la misma imagen pero en negro.
Hay alguna forma de hacerlo al reves? osea que con c_white se dibuje la imagen pero en blanco respetando solo el alpha y no el color, y con c_black se dibuje normal?? Habr? alguna forma usando los blend_modes??

Gracias
        Ciberman
7
Hola,
veran estoy buscando justamente lo que indica el t?tulo:
una dll de reproducci?n de video que me permita dibujar Sobre el video que se esta reproduciendo, ya sea con las funciones nativas o con funciones propias de la dll.
o sino si se les ocurre algun metodo (no importa si consume muchos recursos, ser? ejecutado en una m?quina potente, no es para un juego) para poder dibujar en tiempo real sobre un video.

Gracias!!

(Gm8 y 8.1 )
8
Juegos completos / [3D Animaci?n] Feliz Navidad
Diciembre 23, 2011, 01:25:28 AM

3D

GM8

Una peque?a animaci?n en 3D hecha con Game Maker 8. Feliz Navidad 2011 de parte de Ciberman Games.

Requerimientos m?nimos:

  • Windows XP/Vista/7
  • 50 Mb RAM
  • Resoluci?n 1024x768 o 1280x768 (funciona con otras resoluciones pero es lo aconsejado)




Descarga desde CibermanGames.

9
Preguntas y respuestas / Colisiones con vspeed
Julio 23, 2011, 11:47:32 PM
hola makeros, una pregunta...
Tengo un obj_portal que esta move_contact_solideado a un obj_block. El portal teletransporta al pj hacio otro obj_portal.
El problema es que en determinadas circunstancias y dependiendo de la altura a la que el obj_pj cae hacia el portal colisiona primero con el obj_block (que est? abajo del portal) y no se ejecuta la colision con el obj_portal, (la mask del obj_portal mide 2x30px).
Prob? condicionando el evento de la colision, que no se ejecute todo el codigo del evento de colision del pj con el block si es que el block ten?a adicionado un portal, pero nada, prob? quitarle el parent "par_solid" al obj_block, tambien condicionalmente, y nada. Prob? lo mismo pero haciendo al bloque como NO solido, y nada... pero se soluciona el problema cuando quito el evento de colision del pj con el obj_block. Sin embargo no puedo dejarlo asi porque nesecito que cuando no tenga adicionado un obj_portal, el obj_block funke como piso o pared.  alguna idea de como puedo solucionar esto?

Gracias...

PD: ahora veo que se soluciona parcialmente el problema cuando pongo al obj_portal una depth mayor al obj_block, supongo porque se ejecuta primero su evento de colision. sin embargo el problema persiste cuando el pj cae de m?s de 96 px, aprox.

PD2: no se guien por el titulo, porque es la primera vez que me pasa que no logro definir un titulo para mi problema...
10
Preguntas y respuestas / Videos sobre surfaces
Junio 18, 2011, 09:52:09 PM
Estoy haciendo una presentaci?n en 3D con gm8.0

Tengo una dll que me permite usar surfaces en el modo 3D
mi pregunta es si existe alguna dll que permita reproducir videos y dibujarlos sobre surfaces mientras se reproducen (luego con eso lo uso como textura para mi pantalla en 3D) asi hago un televisor en 3D...

Bueno, gracias!!
11
Preguntas y respuestas / Win7, Carpeta Juegos
Junio 16, 2011, 02:22:47 AM
ayer revisando windows 7, me gust? lo de la carpeta Juegos que viene cargada con el SO y se actualiza "Autom?ticamente".

He aqu? la duda, como hago que un juego creado con el gm aparezca "Automaticamente" (osea sin arrastrar el exe manualmente hacia la carpeta juegos como dice en la ayuda de windows) mediante gml, o alguna dll o extensi?n.

12
Preguntas y respuestas / 3D Anaglyph Engine Ayuda
Abril 26, 2011, 03:48:14 AM
Hola hola, cuanto tiempo sin crear un topic aca...
La pregunta es la siguiente:
para la escuela tengo que hacer una presentaci?n anaglifa (con anteojos 3D rojo y Cyan), para eso voy a usar
3D Anaglyph Engine Gex

El problema es que quiero regular bien los parametros
pero no s? cuales son bien los argumentos de anaglyph_options()
anaglyph_options(activado, color_izquierdo, color_derecho, eye_dist, offset);

No se qu? poner en los ultimos dos par?metros.

Intent? contactar con el creador de la extension pero no parece que vaya a responder y la presentaci?n es en una semana y media

si alguien tiene idea de como funciona esto, le agradecer?a que me explique sobre estos dos argumentos misteriosos.

ATT
Ciberman



13
la pregunta es simple, la respuesta no...
nesecito aclarar un dibujo que hago sobre la pantalla in real-time. Osea, que me de el efecto de la funci?n Intensity>Value del editor de sprites, solo que sin usarla

ya prob? con bm_add, y algunas combinaciones del setBMext

PD: es para un juego D3d por eso no puedo usar superficies ni dibujarle el mismo sprite en blanco por atras... (es un modelo 3D)

Gracias...
Ciberman
14
Hola makeros, tanto tiempo sin postear una pregunta, pero este tema me tiene como loco y no s? que hacer...

Tengo un obj_globo que se mueve en una direccion aleatoria, su tama?o es, digamos, aleatorio, la velocidad siempre es la misma (5), osea algo como
[gml]motion_set(random(360),5);[/gml]
bien, hasta ahi perfecto, el c?digo es mucho m?s complejo, pero ese ser?a un resumen. El problema, cuando le pongo que choque contra el suelo y rebote todo bien,
evento colision obj_suelo
[gml]move_bounce_solid(1);[/gml]
pero cuando pongo eso mismo contra otro obj_globo (que est? en movimiento) se traban los dos globos si es que esta uno dentro de otro (por  la velocidad que ya ten?an)..

para que se den una idea, el juego es "Repeat", nivel 19 (Pang), osea, estoy haciendo un pang, solo que las pelotas NO tienen gravedad.

tambien prob? hacer un minic?digo while que sacaba a la pelota del alcance de otra pelota, pero lo ?nico que lograba era un lag en el juego cada vez que colicionaban dos pelotas, que duraba por hasta 10 segundos en mi makina m?s r?pida...
despues prob? algo m?s facil :
[gml]direction=direction-180;[/gml]
pero sigue trabandose cuando colisiona una pelota con otra y tiene atras (direction-180) otra pelota...

espero que sepan algun modo para hacer estos rebotes de dos o tres (o m?s) objetos en movimiento....

Gracias

Ciberman---
15
Los Usuarios que llevan tiempo en la comunidad probablemente se acuerden de un script de Efecto submarino, no recuerdo qui?n lo creo, pero era muy bueno...
Con el ?ltimo cribado borraron este y otros super scripts.

Quisiera saber si alguien lo tiene por ahi guardado o si sabe de algun script que haga un efecto similar.

De antemano, Gracias.

Ciberman.
16
Desarrollo de Scripts / draw_text_c2c (caracter a caracter)
Septiembre 08, 2010, 03:17:28 AM
Creador: Ciberman (Javier H. Mora)
Versi?n GM: GM8  :GM8: pero debe funkar en otras...
Descripci?n:
Qui?n no ha lidiado con el tema de tener que dibujar algun texto con draw text ext letra por letra y poder saber donde termin? de escrivir para poner alguna otra cosa luego... mh.. no, no me entendieron, voy de nuevo.... aplicaciones pr?cticas de este script:

-hacer un codigo de di?logo RPG letra a letra
-verificar la posicion en donde quedar?a cualquier caracter que queramos (luego de ser dibujado)
-Controlar que nuestro texto no pase de X caracteres
-O de un heigth espec?fico...
-dibujar solo la parte que nos interesa de largos textos..
-controlar cuando se est? por dibujar un espacio (o cualquier otro caracter)

Uso:
para usar el scrip se llama igual que el draw text ext pero con un argumento extra opcional que es la posicion inicial desde la que dibuja...
OJO::: el script iniciar? todo (si es que lo ejecutas por primera vez) y dibujar? solo un caracter. por lo que deberas llamarlo en un bucle 50 veces si quieres dibujar 50 caracteres.
asi si quieres dibujar todo deberas hacer asi:
[gml]
for(c=0;c<=string_length(string);c+=1;)
   {
   draw_text_c2c(25,25,string,-1,750)  // dibuja texto letra a letra
   }
draw_text_c2c_reset();
[/gml]
remplazando string y los argumentos por los tuyos...
osea, llamas a la funcion tantas veces como lo nesecites y cuando termines de escrivir tu texto llamas a la funcion draw_text_c2c_reset();


Scripts
Bien ... ahora me dejo de hablar y les presento al script

Script.. este es el usuario... usuario, este es el script:
draw_text_c2c:
[gml]
///////// draw_text_c2c
// Creador: Ciberman (Javier H. Mora)
// No son necesarios los cr?ditos, aunque se agradecen.
// --------------------------------------
// Uso: draw_text_c2c(x,y,string,sep,w[,posicion inicial]);

//este script se usa con draw_text_c2c_reset()


var xxx,yyy,str,pos,width,sep,ch,ww,hh,xx,yy,esp,posi;
xxx=argument0 // posicion inicial
yyy=argument1
str=argument2
sep=argument3 // sepracion de renglones (-1 default)
width=argument4

posi=max(1,argument5); //opcional, posicion inicial

if !(variable_global_exists("scrdrawtextext"))
   {
   global.scrdrawtextext[0]=xxx; //x final
   global.scrdrawtextext[1]=yyy; //y final
   global.scrdrawtextext[2]=posi;   //pos final
   global.scrdrawtextext[3]=0;   //espacio
   }
else
   {
   //if !(show_question(string(global.scrdrawtextext[0]))) {game_end();}
   if string(global.scrdrawtextext[0])="CiBeRmAn"
       {
       global.scrdrawtextext[0]=xxx; //x final
       global.scrdrawtextext[1]=yyy; //y final
       global.scrdrawtextext[2]=posi;   //pos final
       global.scrdrawtextext[3]=0;   //espacio
       }
   }

   
xx=global.scrdrawtextext[0]; //x final
yy=global.scrdrawtextext[1]; //y final
pos=global.scrdrawtextext[2]; //pos
esp=global.scrdrawtextext[3]; // espacio




ch=string_char_at(str,pos);
ww=string_width(ch);

if sep=-1 {hh=string_height(ch);}
else {hh=sep;}

if esp=1
   {
   var x_comp,ch_ext,i;
   ch_ext="";
   x_comp=xx;
   for(i=2;ch_ext!=" ";i+=1;)
       {
       ch_ext=string_char_at(str,pos+i);
       //if !(show_question(string(ch)+" - "+string(x_comp))) {break;}
       if ch_ext="#" or pos+i>=string_length(str)
           {break;}
       x_comp+=string_width(ch_ext);
       }
   
   if x_comp>xxx+width
       {
       draw_text(xxx,yy+hh,ch);
       global.scrdrawtextext[0]=xxx+ww;
       global.scrdrawtextext[1]=yy+hh;
       global.scrdrawtextext[3]=0;
       global.scrdrawtextext[2]=pos+1;
       return 2;
       }
   else
       {
       draw_text(xx,yy,ch);
       global.scrdrawtextext[0]=xx+ww;
       global.scrdrawtextext[1]=yy;
       global.scrdrawtextext[2]=pos+1;
       global.scrdrawtextext[3]=0;
       return 1;
       }
   }
else
   {
   if ch=" "
       {
       draw_text(xx,yy,ch);
       global.scrdrawtextext[0]=xx+ww;
       global.scrdrawtextext[1]=yy;
       global.scrdrawtextext[2]=pos+1;
       global.scrdrawtextext[3]=1;
       return 4;
       }
   else
       {
       if ch="#"
           {
           global.scrdrawtextext[0]=xxx;
           global.scrdrawtextext[1]=yy+hh;
           global.scrdrawtextext[2]=pos+1;
           global.scrdrawtextext[3]=0;
           return 3;
           }
       else
           {
           draw_text(xx,yy,ch);
           global.scrdrawtextext[0]=xx+ww;
           global.scrdrawtextext[1]=yy;
           global.scrdrawtextext[2]=pos+1;
           global.scrdrawtextext[3]=0;
           return 1;
           }
       }
   }

[/gml]
draw_text_c2c_reset:
[gml]
///////// draw_text_c2c_reset
// Creador: Ciberman (Javier H. Mora)
// No son necesarios los cr?ditos, aunque se agradecen.
// --------------------------------------
// Uso: draw_text_c2c_reset();

//este script se usa con draw_text_c2c(...)

global.scrdrawtextext[0]="CiBeRmAn"; //x final
global.scrdrawtextext[1]="CiBeRmAn"; //y final
global.scrdrawtextext[2]=1;   //pos final
global.scrdrawtextext[3]=0;   //espacio

[/gml]

Obtenci?n de datos:
Ahora preguntaras, como se esas cosas que nombraste al comienzo del post..
muy facil.. cuando llamas por primera vez se crea un array que contiene la informacion para que analices en cada ciclo de tu bucle.

global.scrdrawtextext[0] = posicion X donde dibujar? el pr?ximo caracter (donde termin? de escrivir)

global.scrdrawtextext[1] = posicion Y de lo antedicho

global.scrdrawtextext[2] = numero de caracter que dibujar?

global.scrdrawtextext[3] (true/false) = indica si en la anterior llamada al script se dibuj? un caracter de espacio (" ")


ademas, si estos datos no te bastan el script debuelve:
return 1; si se dibuj? un caracter normalmente
return 2; si se dibuj? un caracter y se pas? de linea
return 3; si se pas? de linea porque se encontr? un #
return 4; si el ?ltimo caracter dibujado fue un espacio " "



Disfruten...

EDIT: subo un ejemplo: (Gm8)
17
Hola, estoy de vacaciones en un hotel y resulta que luego de lidiar con la una PC para bajarme el GM, logr? instalarlo y resulta que cuando le doy a jugar carga y me tira el " Unexpected error ocurred when running the game "

entonces me acord? que el error lo tira cuando se satura la memoria de la m?quina. Pero voy al administrador de tareas y me da lo de la screen 1,
despues voy a las propiedades de Mi PC y me dice que tiene 736 mb de ram la PC.
No se porque puede ser... un dato, es de las maquinas que se borra todo lo que se instal? y que se hizo cuando se apaga el equipo, no creo que var?e pero lo indico...


EDIT: usemos la propuesta de Texic: uso GML :P
18
Ciber Loading



  • Nombre del creador: Ciberman (no son nesesarios los cr?ditos pero se agradecen)


  • Breve descripci?n de su funci?n: Estos scripts encadenan codigos, con ello se puede lograr una carga de recursos en tiempo real sin interrumpir el juego (igualmente, es recomendable recurrir a las pantallas de carga si es mucho lo que se debe cargar)


  • Versi?n GM utilizada:  :GM8: PRO


  • C?digos de los Scripts:







CL_add(str);


A?ade una nuevo codigo str a la carga
Llama a esta funcion antes de llamar a cualquier otra de Ciber Loading

[gml]if !(variable_global_exists("CL_list"))
   {
   global.CL_list=ds_list_create()
   global.CL_porcentaje=0;
   global.CL_frase_debug=""
   global.CL_carga_id=0;
   }

ds_list_add(global.CL_list,string(argument0))[/gml]



CL_step();


Llama a esta funcion en step

[gml]    if (global.CL_carga_id<ds_list_size(global.CL_list))
       {
       global.CL_frase_debug=ds_list_find_value(global.CL_list,global.CL_carga_id);
       screen_redraw()
       execute_string(ds_list_find_value(global.CL_list,global.CL_carga_id))
       global.CL_porcentaje=global.CL_carga_id/ds_list_size(global.CL_list)
       global.CL_carga_id+=1;
       }
   else
       {
       global.CL_porcentaje=1;
       }[/gml]

Opcionales Funciones Get








CL_get_progress();


usalo para obtener el progreso de la ejecucion de los codigos, un real de 0 a 1

[gml]return global.CL_porcentaje



[/gml]



CL_get_frase_debug();


usalo para obtener el string que se est? ejecutando

[gml]    return global.CL_frase_debug



[/gml]



CL_get_carga_id();


usalo para obtener el id del codigo que se est? ejecutando. (el primero que se introdujo = 0, el segundo 1, etc. )

[gml]    return global.CL_carga_id


[/gml]
19
Preguntas y respuestas / vibrar Joystick
Marzo 15, 2010, 09:39:00 PM
buenas,
quer?a saber si hay alguna manera de hacer vibrar el Joystick
(el m?o dice tener compatibilidad con bibracion pero no se como hacer para que vibre)
?hay alguna DLL o extencion que pueda lograr este efecto?
20
tengo un sprite de seleccion de PJ

quiero que parpadee cuando est? seleccionado, pero en blanco,
con image_blend=c_white solo se muestra normal

no logro que se ti?a de blanco
probe bm_add y bm_max y bm_sustract pero nada

tengo este codigo en step:
// parpadear
if selected
   {
   image_blend=merge_color(c_white,c_green,.5+variable_circle(direction,.5));
   direction+=5;
   }else{image_blend=c_white;}
// end parpadear


De antemano gracias...

PD: variable_circle

return lengthdir_x(argument1,argument0)
[code]
[/code]