hola ahuel tengo un problema para hacer esto ..... todo lo primero va bien hasta que dice
(Luego, en cualquiera de estos, volvemos a Events, y hacemos Click en el boton "..." que está a la derecha de OnClick. Esto nos llevará al global script, y creará una función con el nombre que le dijimos. Por el momento no pongamos nada dentro. Pasemos a lo próximo.)
lo hago pero cuando voy al scrip no esta el comando gModo o gScroll ... y no se que hacer ----
por favor si alguien save responda
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
|
1
: 28/08/2010, 11:35
|
||
| Iniciado por nahuel36 - Último mensaje por guillermoxx | ||
|
2
: 17/08/2010, 06:52
|
||
| Iniciado por ercharli - Último mensaje por Sadistyk | ||
|
La propiedad Loop de los personajes lo que te dice es en que loop del view asignado en ese momento está, no tiene nada que ver con animaciones. Para lo que vos querés hacer es muy fácil, hay que hacerlo con Timers. Un timer es un cierto tiempo que pasa y cuando termina se ejecuta algo.
(Todo lo que viene ahora va dentro de una habitación) Primero hay que setear un timer: function room_Load() { SetTimer(1, 100); } Hay 20 timers para usar dentro de AGS (se representan con un número, del 1 al 20). La función SetTimer lo que te permite es setear el tiempo (en ciclos de AGS, 1 segundo = 40 ciclos) de un timer asociado: SetTimer(1, 100); Lo anterior le setea al timer '1', 100 ciclos para que cuente (aproximadamente 2 segundos y medio). Ahora, hay que consultar para ver si el timer terminó: function room_RepExec() { if (IsTimerExpired(1)) { .... } } La función IsTimerExpired lo que te dice es si un timer ya terminó de contar. Esto se tiene que poner si o si en el repeadtly execute del Room, sino no se puede hacer lo que querés hacer. Lo anterior checkea constantemente si el Timer 1 terminó. Cuando haya terminado, va a entrar por el if. function room_RepExec() { if (IsTimerExpired(1)) { cPersonaje.SayBackground("Hola, mundo!!"); SetTimer(1, 100); } } Dentro del if, haces lo que tengas que hacer (en este caso que el personaje hable), pero si o si tenés que setear de nuevo el timer, porque el timer una vez que termina ya está, no vuelve a contar. Tenés que volver a setearlo para que lo haga en un loop, sino lo haría una sola vez. El método SayBackground de un personaje lo que hace es mostrar un mensaje como con el método Say pero no bloquea el juego mientras lo dice (o sea, muestra el mensaje en background, no bloqueante), pero tampoco muestra la animación del personaje hablando. Probalo y vas a ver que pasa esto que te digo. Dependiendo de lo que quieras hacer, te convedrá que lo diga con Say o con SayBackground. NOTA: Si tenés un timer corriendo y se produce un bloqueo, el timer queda bloqueado, y cuando desaparezca el bloqueo, el timer sigue corriendo. NOTA 2: Si haces SetTimer(1, 0) (poniendo los ciclos a 0) deshabilita el timer, pero no como expirado, es como si nunca lo hubieras seteado para que corra. Cualquier duda, preuntar. |
||
|
3
: 17/08/2010, 02:53
|
||
| Iniciado por ercharli - Último mensaje por ercharli | ||
|
Muchisimas gracias!!
Lo logré con lo que me dijistes .. y salio perfecto por cierto, tengo otra duda que creo que es muy simple, pero no doy con la clave .. Quiero que un personaje (caracter) del juego entre en una habitación y este un caracter en la habitacion soltando frases en plan loop, me refiero, que este hay el personaje diciendo frases pero que se vallan repitiendo ... e usado el comando int caracter.loop, pero no me a ido muy bien que digamos .. espero vuestras respuestas .. y gracias de antemano. POST: estoy escribiendo aqui mis dudas para no abrir POSTS cada 2x3 ... UN SALUDO! |
||
|
4
: 28/07/2010, 05:04
|
||
| Iniciado por megisto - Último mensaje por Sadistyk | ||
|
Simon the Sorcerer en una 486 jaja. Encima estaba en inglés y sin subtitulos y no entendía una goma, pero a mi me gustaba la música y los gráficos y hasta que aprendí inglés pasaron como 8 años hasta que lo pude terminar.
|
||
|
5
: 28/07/2010, 04:30
|
||
| Iniciado por nahuel36 - Último mensaje por Sadistyk | ||
|
Hola. Las imágenes en sí no se hacen en AGS, se cargan. Las imágenes las podes hacer con Paint u otro programa como Photoshop y luego la cargas en AGS. Si te fijas, en el editor hay un nodo que dice 'Sprites'. Un sprite es una imagen, un archivo imagen (png, bmp, jpg, etc) que hiciste con algún programa y luego lo cargaste a AGS. Para cargar una imagen simplemente vas a Sprites y en alguna carpeta (del árbol izquierdo) haces click en el medio de la pantalla con el botón derecho ->'Inport new sprite from file' y se te va a abrir una ventana para que busques el archivo de imagen (png, bmp, jpg, etc) para cargarlo a AGS. Automaticamente AGS le va a dar un número de sprite para que después lo puedas usar en tu juego.
El modo puntero (Pointer) es un modo de mouse predefinido en AGS, y no se lo puede cambiar. Si te fijas cuando lo seleccionas la propiedad 'ScriptID' dice 'eModePointer'. Así que una de las razones porque está es porque no se lo puede borrar. La otra es porque, junto con el modo 'Use inventory' y 'Wait', es un modo especial hardcodeado que usa AGS. El juego pone el modo del mouse en puntero cuando se está mostrando un GUI modal (un GUI que pausa el juego) automáticamente. Esto lo podés leer en el manual, en la parte 'Setting up the game' bajo la sección 'Cursors'. También el modo puntero está por razones históricas (antención: viene una sección nostálgica jaja). En los juegos de Sierra On-line siempre estaba la misma interfaz que para ver el inventario del jugador se te abría una ventanita y para seleccionar un elemento tenías la flecha (el puntero). Supongo que no tiene mucho sentido en una interfaz tipo MI, pero bueno por las razones explicadas tiene que estar. |
||
|
6
: 28/07/2010, 03:53
|
||
| Iniciado por ercharli - Último mensaje por Sadistyk | ||
|
Hola. La imagen la tenés que tener como un objeto dentro de la habitación (o un gui en su defecto) para poder manejarla dentro de AGS. Estabas bien encaminado con la propiedad Transparency:
Suponiendo que es con un objeto: while (oImagen.Transparency < 100) { wait(20); oImagen.Transparency += 10; } El código anterior va aumentando la Transparencia (hasta 100 -> totalmente invisible) del objeto de a 10 y esperando medio segundo (20 ciclos) para que se vean los resultados. Si no pones el wait vas a ver que la imagen desaparece de una. Esto si lo vas a usar en muchos lugares de tu juego te conviene ponerlo dentro de una función. Yo uso funciones así en mi juego: function HacerInvisible(this Object*, int tiempoAesperar, int cantidadTransparencia) { this.Transparency = 0; while (this.Transparency + cantidadTransparencia <= 100) { Wait(tiempoAesperar); this.Transparency += cantidadTransparencia; } this.Transparency = 100; this.Visible = false; } function HacerVisible(this Object*, int tiempoAesperar, int cantidadTransparencia) { this.Transparency = 100; this.Visible = true; while (this.Transparency - cantidadTransparencia >= 0) { Wait(tiempoAesperar); this.Transparency -= cantidadTransparencia; } this.Transparency = 0; } Para ponerlo en funciones, tenés que crear un archivo de funciones. Anda al nodo 'Scripts'->click derecho->'New script'. Te va a crear dos archivos: uno con extensión ash y el otro con extensión asc. En el asc va el desarrollo de la función (como el ejemplo que está arriba) y en el ash sólo va la declaración del prototipo de la función con un import para hacer las funciones globales a todo el juego. Por ejemplo, si querés agregar esas funciones a tu juego crea un script llamado 'Funciones' (o como quieras) y en el ash pondrías: import function HacerVisible(this Object*, int tiempoAesperar, int cantidadTransparencia); import function HacerInvisible(this Object*, int tiempoAesperar, int cantidadTransparencia); y en el asc: function HacerVisible(this Object*, int tiempoAesperar, int cantidadTransparencia) { this.Transparency = 100; this.Visible = true; while (this.Transparency - cantidadTransparencia >= 0) { Wait(tiempoAesperar); this.Transparency -= cantidadTransparencia; } this.Transparency = 0; } function HacerInvisible(this Object*, int tiempoAesperar, int cantidadTransparencia) { this.Transparency = 0; while (this.Transparency + cantidadTransparencia <= 100) { Wait(tiempoAesperar); this.Transparency += cantidadTransparencia; } this.Transparency = 100; this.Visible = false; } Y listo, ahora tus funciones son globales a todo el juego y la podés llamar de donde sea, simplemente haciendo esto: oImagen.HacerInvisible(3, 10); y así te queda listo para cualquier otra funcionalidad que tengas que agregar. Cualquier duda, no dudes en preguntar |
||
|
7
: 27/07/2010, 03:15
|
||
| Iniciado por megisto - Último mensaje por chavovargas | ||
|
Era el año 92 y yo tenia apenas 3 años, teniamos una pc con norton commander, y mi viejo habia conseguido copiado por un amigo el monkey 1 como en 8 dikettes de los de 5;3/4 de los grandes y teniamos hecho las claves q eran las caras de los piratas y la fecha en q habian sido colgados fotocopiados y unidos conun ganchito, q andaba barbaro. Tamb teniamos como una revista con pistas de todo el juego. Por lo cual mas o menos algo haciamos. Siempre me acuerdo, de estar horas pisando el tablon en el SCUMM BAR y viendo como volvia la gaviota, jaja.
Y cuando tuve 7 u 8 años, me acuerdo de haberlo pasado con una guia, y me quede leyendo los titulos del final, q lechuck creo te decia q apagues la pc q ya estaba, q era hora de irse a dormir, y q se yo. la deje prendida toda la noche, mi viejo se enojo y me bloqueo la pc con una llave q traian antes, para bloquear el teclado, jajaja. un jodido mi viejo Muy buen foro, q viva el abandon!! |
||
|
8
: 10/06/2010, 12:28
|
||
| Iniciado por nahuel36 - Último mensaje por Toni | ||
|
Ante todo un saludo a todo el mundo.
Me acabo de registrar al descubrir esta pagina dedicada a las aventuras graficas, y sobre todo al Adventure Game Studio. Tengo la version 3.1, no se si es la ultima, y estoy interesado en hacer una aventura grafica. He visto este tema sobre el Scumm de Lucas Arts, y he decidido porabar a hacerlo gracias a este gran tutorial. Pero me han surgido algunos problemas que me impiden continuarlo haciendo. Disculpadme pero soy novato. Son estos: 1- En el apartado LOS MODOS DE CURSOR: Cursor 0: Ir a Cursor 1: Mirar Cursor 2: Usar Cursor 3: Hablar Cursor 4: Usar inv Cursor 5: Agarrar Cursor 6: Puntero Cursor 7: Espera Cursor 8: Abrir Cursor 9: Cerrar He hecho los botones, en total 14, contando subir y bajar inventario. Me he dado cuenta que el cursor 6 poner PUNTERO, como podeis ver. Que significa? 2- Lo ideal también es que cada botón tenga una imagen normal y otra para cuando está el mouse arriba (Image y Mouseover Image). Como se hace una imagen, y que tipo de imagen quiere decir, podriais ponerme un ejemplo? Por ahora estas son mis dudas, seguramente me iran surgiendo mas por el camino. Muchas gracias. |
||
|
9
: 12/05/2010, 02:19
|
||
| Iniciado por ercharli - Último mensaje por jarry | ||
|
una manera rapida de hacerlo es que te armes una secuencia de sprites que hagan el efecto(un view), y luego loopeas el view para que lo haga ciclicamente.
|
||
|
10
: 11/05/2010, 06:51
|
||
| Iniciado por ercharli - Último mensaje por ercharli | ||
|
eso exactamente, que aparezca y desaparezca ...
es más que nada para una introducción, que valla el texto/imagen, apareciendo lentamente y luego desapareciendo lentamente (que valla apareciendo/desapareciendo automaticamente) y e estado probando comandos y no doy con ello :S |
||