Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Temas - Ciberman
1
« en: Febrero 06, 2013, 01:26:48 am »
2
« en: 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
3
« en: Marzo 26, 2012, 03:27:13 am »
Finalizó GIA 03 TetrisEl Campeón ha sido Ferhand!! Descarga de los archivos- Descarga del Ejecutable con las Rondas del Concurso 4ta Ronda (La Última)3ra Ronda2da Ronda1ra 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 ProGMK de GM8 LiteLista 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.... Resultados1ero - 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: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]
4
« en: 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) 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 RONDALink: http://www.comunidadgm.org/index.php?topic=16595.msg78188#msg78188Ah, 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 RONDALink: http://www.comunidadgm.org/index.php?topic=16595.msg78318#msg78318EDIT4: 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: 


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
« en: 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
6
« en: Enero 06, 2012, 02:27:51 am »
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 )
7
« en: Diciembre 23, 2011, 01:25:28 am »
8
« en: Julio 23, 2011, 10: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...
9
« en: Junio 18, 2011, 08: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!!
10
« en: Junio 16, 2011, 01: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.
11
« en: Abril 26, 2011, 02: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
12
« en: Marzo 04, 2011, 05:57:27 pm »
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
13
« en: Diciembre 14, 2010, 11:22:41 pm »
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 motion_set(random(360),5); 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 move_bounce_solid(1); 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 : direction=direction-180; 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---
14
« en: Septiembre 19, 2010, 04:16:06 pm »
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.
15
« en: Septiembre 08, 2010, 02:17:28 am »
Creador: Ciberman (Javier H. Mora) Versión GM: 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: for(c=0;c<=string_length(string);c+=1;) { draw_text_c2c(25,25,string,-1,750) } draw_text_c2c_reset();
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(); ScriptsBien ... ahora me dejo de hablar y les presento al script Script.. este es el usuario... usuario, este es el script: draw_text_c2c:
var xxx,yyy,str,pos,width,sep,ch,ww,hh,xx,yy,esp,posi; xxx=argument0 yyy=argument1 str=argument2 sep=argument3 width=argument4
posi=max(1,argument5);
if !(variable_global_exists("scrdrawtextext")) { global.scrdrawtextext[0]=xxx; global.scrdrawtextext[1]=yyy; global.scrdrawtextext[2]=posi; global.scrdrawtextext[3]=0; } else { if string(global.scrdrawtextext[0])="CiBeRmAn" { global.scrdrawtextext[0]=xxx; global.scrdrawtextext[1]=yyy; global.scrdrawtextext[2]=posi; global.scrdrawtextext[3]=0; } }
xx=global.scrdrawtextext[0]; yy=global.scrdrawtextext[1]; pos=global.scrdrawtextext[2]; esp=global.scrdrawtextext[3];
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 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; } } }
draw_text_c2c_reset:
global.scrdrawtextext[0]="CiBeRmAn"; global.scrdrawtextext[1]="CiBeRmAn"; global.scrdrawtextext[2]=1; global.scrdrawtextext[3]=0;
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)
|