Ver tema anterior :: Ver siguiente tema |
Autor |
Mensaje |
Liliana Mapeador
Registrado: 04 Oct 2006 Mensajes: 61
|
Publicado: Vie May 18, 2007 2:32 am Título del mensaje: pregunta para doom in hexen format |
|
|
bueno Adriel, como ya te abia dicho anteriormente, (ase unos meses), estoy reeditando mi mapa solo que esta bes sera especificamente en hexen format, y ya me salieron barios inpedimento para seguir con el, y uno de ellos es este:
¿como le ago o que accion nesesito ponerle a una linea para que al oprimirla vaje un sector, pero que para poder oprimir esa linea nesesite una yave?.
¿es posible eso?. por que intente poniendole una de las acciones que tiene la seccion plataform, pero no encontre la que explique arriva._________________ 2Da Entrevista a Jumentor
(clik en imagen)
|
|
Volver arriba |
|
|
RicarDooM Administrador
Registrado: 06 Sep 2006 Mensajes: 443 Ubicación: México
|
Publicado: Vie May 18, 2007 4:08 pm Título del mensaje: |
|
|
Hola.
Desafortunadamente no hay una accion que haga lo que necesitas. Pero para eso esta el uso de scripts y se puede hacer de la siguiente manera.
Explicacion.
En la linea que activara la plataforma deberas poner la accion 80 - H Script Execute
El unico parametro es el Script Number. Para el ejemplo es el script numero 1 asi que le pones de valor 1.
Ahora en el menu del doombuilder nos vamos a Scripts y escribimos el siguiente codigo.
Código: |
#include "zcommon.acs"
script 1 (void)
{
if (CheckInventory("YellowCard"))
{
Floor_RaiseByValue(1,20,100);
Delay(35*3); //Nos esperamos 3 segndos antes de que baje
Floor_LowertoLowest(1,20);
}
else
{
Print(s:"\cf Necesitas la llave amarilla para subir");
}
}
|
Si no habias hecho un script antes te explico desde el principio.
La primera linea va siempre al inicio de los scripts. (#include)
Creamos el script numero 1
Usamos las siguientes funciones.
CheckInventory - Que nos sirve para saber que items ya tenemos, para las otras llaves es "RedCard" y "BlueCard"
Floor_RaiseByValue(1,20,100) - Este sube el sector, los parametros son (tag,speed,height). El tag es el del sector que subira, y height es cuanto subira. En el ejemplo el sector subira una altura de 100.
Floor_LowertoLowest(1,20) - Con esta funcion bajamos el sector, solo dos parametros (tag, speed)
Eso es todo. Si tenemos la llave entonces la plataforma sube. Yo le agrege un "else" (caso contrario) para que el jugador sepa por que no funciona la plataforma, ayuda mucho.
Para eso use la funcion Print
Espero te sirva y sea lo que necesitas, para mayor informacion sobre las funciones utilizadas puedes consultar la wiki de zdoom http://www.zdoom.org/wiki/index.php?title=Main_Page
Saludos.
|
|
Volver arriba |
|
|
Liliana Mapeador
Registrado: 04 Oct 2006 Mensajes: 61
|
Publicado: Vie May 18, 2007 10:43 pm Título del mensaje: |
|
|
aber, lo boy a probar aber como queda y despues te abiso. _________________ 2Da Entrevista a Jumentor
(clik en imagen)
|
|
Volver arriba |
|
|
Liliana Mapeador
Registrado: 04 Oct 2006 Mensajes: 61
|
Publicado: Lun May 21, 2007 1:10 am Título del mensaje: |
|
|
¿oye? y ¿como le ago para agregar otro script?,
me quedo bien el codigo que me diste, pero ¿como creo otro sript, para ponerle otra llave?,
ya que le di en "compile" y entonses borre el numero 1 y cree otro con el numero 2, solo que al probar el wad, solo funciona el scipt 2 (el ultimo que ise), y me pone en otra linea, que no puede leer el scipt 1.
¿como agrego un segundo script?
ah y otra cosa, ¿es posible crear una accion igual a la anterior, solo que el sector baje solo cuando tengas las tres llaves? o ¿ya es demasiado?_________________ 2Da Entrevista a Jumentor
(clik en imagen)
|
|
Volver arriba |
|
|
RicarDooM Administrador
Registrado: 06 Sep 2006 Mensajes: 443 Ubicación: México
|
Publicado: Lun May 21, 2007 4:43 am Título del mensaje: |
|
|
Puedes poner todos los scripts que desees y van de la siguiente manera:
Código: |
#include "zcommon.acs"
script 1 (void)
{
}
script 2 (void)
{
}
script 3 (void)
{
}
|
Y asi sucesivamente.
Sobre tu pregunta de las tres llaves, si se puede.
Bueno por lo visto no tienes bases en programación pero no te preocupes que no es complicado. Si te fijas en el ejemplo el if es un condicional, si se cumple la condición se ejecuta la acción. Dentro se ese if puedes poner infinidad de condiciones por lo tanto lo que pides quedaria así:
Código: |
if (CheckInventory("YellowCard") && CheckInventory("BlueCard") && CheckInventory("RedCard"))
{
//Aqui se ejecuta algo si se cumple la condición de arriba como por ejemplo subir un elevador o abrir una puerta.
}
else
{
//Si no se cumple la condición aqui podremos ejecutar otra cosa como un mensaje al jugador.
}
|
En las condicionales los simbolos && significan y en la cual el condicional se cumple si todas las condiciones son verdaderas.
Tambien puedes usar los simbolos || que significan o en la cual el condicional se cumple si al menos una condicion es verdadera.
Como en las tablas de verdad.
|
|
Volver arriba |
|
|
Liliana Mapeador
Registrado: 04 Oct 2006 Mensajes: 61
|
Publicado: Mie May 23, 2007 1:32 am Título del mensaje: |
|
|
muchas grasias Adriel, todo lo que me as puesto a funcionado a la perfeccion, ahora la pregunta por exelencia, creo y espero que es mi ultima pregunta, mira, quiero crear un teletransportador comun y corriente, solo que quiero que la linea este desactivada, y al pasar sobre ella, no pase nada, y que se active presionatdo un "SWITCHSESESES".
¿es posible o ya me fregue?_________________ 2Da Entrevista a Jumentor
(clik en imagen)
|
|
Volver arriba |
|
|
RicarDooM Administrador
Registrado: 06 Sep 2006 Mensajes: 443 Ubicación: México
|
Publicado: Vie May 25, 2007 3:45 pm Título del mensaje: |
|
|
Eso lo puedes hacer con dos scripts usando una "bandera" de referencia.
La bandera es una variable de control para saber cuando se podra activar el teleportador.
Código: |
#include "zcommon.acs"
int bandera = 0;
script 1 (void)
{
bandera = 1;
}
script 2 (void)
{
if (bandera == 1)
{
Teleport (tid, tag, nosourcefog);
}
}
|
El primer script es el switch y el segundo el teleportador.
La bandera al inicio del juego vale 0, por lo tanto no podremos pasar por el teleportador hasta que dicha variable valga 1, entonces lo unico que hay que hacer el cambiar el valor a 1 con un script en el switch.
En Teleport (tid, tag, nosourcefog); pon los valores correctos para teleportar al personaje.
Como podras ver, el ACS al ser programacion hace que casi nada sea imposible en ZDoom.
Saludos.
|
|
Volver arriba |
|
|
Liliana Mapeador
Registrado: 04 Oct 2006 Mensajes: 61
|
Publicado: Sab May 26, 2007 11:22 pm Título del mensaje: |
|
|
mira, ya me esta quedando poco a poco, pero pense que ya no te molestaria pero ¿que crees? tengo otra pregunta.
¿existe la posibilidad de que un switch aga dos funciones?
por ejemplo:
que active el teletransportador y tambien active un thing
¿se puede?
ah, deberias fundar una escuela donde des cursos de porgramacion de scripts para Zdoom, estaria chido _________________ 2Da Entrevista a Jumentor
(clik en imagen)
|
|
Volver arriba |
|
|
RicarDooM Administrador
Registrado: 06 Sep 2006 Mensajes: 443 Ubicación: México
|
Publicado: Dom May 27, 2007 2:59 am Título del mensaje: |
|
|
Si se puede, pudes poner todos los if que quieras en un solo script. Por ejemplo en el ultimo script que te puse, despues de activar el teleportador abajo puedes poner mas sentencias if para validar otras acciones.
Saludos.
|
|
Volver arriba |
|
|
gpena
Registrado: 26 Mar 2007 Mensajes: 15
|
Publicado: Sab Jun 02, 2007 3:36 pm Título del mensaje: |
|
|
En realidad lo del teleporter es mucho mas sencillo. No hacen falta las variables. Simplemente le pones a las lineas del teleporter la accion Line Identification, con un Line ID del valor que quieras, en este caso sera 1. Sera el tag de la linea. Luego en la linea correspondiente al switch que quieres que active el teleporter le pones la accion 80 Script Execute. En arg1 le pones el numero de script, yo lo hare con script 1.
Y tienes que poner esto:
#include "zcommon.acs"
script 1 (void) { //Sera Void porque tendra un activador
SetLineSpecial(1,70,0,1,0,0,0); //*
print (s:"El teleporter fue activado");
}
*El 1 corresponde al Tag de la linea.
El 70 corresponde a la accion de Teleportar.
Y el tercer 1, corresponde al Arg2 de la accion, es decir, TargetSectorTag. Es el tag que debera llevar el sector en el que pondras el Teleport Destination. No se si me explico.
La accion SetLineSpecial a mi me fue muy util en los mapas que estoy haciendo. Puede convertir lineas de una accion a otra con solo activar un script, con lo cual se pueden lograr efectos muy parecidos a los de Quake2 y Unreal. _________________ http://www.surfjunky.com/?r=gpena Hace click y ayudame!
http://www.freerapidaccount.com/free/?r=321619 Hace click aca y ayudame! |
|
Volver arriba |
|
|
Liliana Mapeador
Registrado: 04 Oct 2006 Mensajes: 61
|
Publicado: Vie Jun 08, 2007 12:50 am Título del mensaje: |
|
|
mi querido ADRIEL, en estos momentos me encuentro trabajando, pero ocupo este pequeño tiempo de libertad para escribir esto, ¿hay alguna funcion para cambiar de cansion de fondo al pisar una linea?
ah y no me deja aderir mas funciones a una sola linea, me marca un error, ¿sera que lo estoy asiendo mal?
besos._________________ 2Da Entrevista a Jumentor
(clik en imagen)
|
|
Volver arriba |
|
|
RicarDooM Administrador
Registrado: 06 Sep 2006 Mensajes: 443 Ubicación: México
|
Publicado: Vie Jun 08, 2007 5:09 am Título del mensaje: |
|
|
La música la cambias así:
SetMusic("MUSICA", 0);
Donde música es el nombre de la canción como por ejemplo "D_RUNNIN" que es el midi del nivel 1.
ejemplo:
Código: |
Script 1 (void)
{
SetMusic("MUSICA", 0);
}
|
Lo segundo no entiendo muy bien cual es el problema.
Saludos.
|
|
Volver arriba |
|
|
Liliana Mapeador
Registrado: 04 Oct 2006 Mensajes: 61
|
Publicado: Vie Jun 08, 2007 8:07 pm Título del mensaje: |
|
|
a mira, que bonito, quedo a la perfeccion y justo como lo queria, muchas grasias. pero aver, ¿como le adieres a este script otra funcion? digamos, un teleport.
yo le ise asi, ya ves que tu me digiste que con && o || servia como "Y" y "O", yo le intente asi.
Código: | Script 1 (void)
{
SetMusic("MUSICA", 0); && Teleport("tag aqui")
} |
pero me marca un error al compilarlo, y por mas que le insisto y le intento, no me sale y siempre me dice, ¡NO, NO MUJER, NO, A LA MIERDA!
y entonses me pongo a llorar, y el se pone a reir, y como que ya no me esta gustando, ayudame, helpme place. _________________ 2Da Entrevista a Jumentor
(clik en imagen)
|
|
Volver arriba |
|
|
RicarDooM Administrador
Registrado: 06 Sep 2006 Mensajes: 443 Ubicación: México
|
Publicado: Vie Jun 08, 2007 9:32 pm Título del mensaje: |
|
|
Ya entendi.
Los && y || solo se usan para comparar condiciones en los if
Código: |
if (a==1 && b==1)
|
Para meter mas funciones en un mismo script tan solo escribe cada funcion linea por linea
Código: |
Script 1 (void)
{
SetMusic("MUSICA", 0);
Teleport("tag aqui");
}
|
Nota - Cada vez que termines de escribir una funcion debes ponerle el caracter ";"
Saludos.
|
|
Volver arriba |
|
|
darkphobos Mapeador
Registrado: 11 May 2007 Mensajes: 41
|
Publicado: Vie Jun 08, 2007 11:33 pm Título del mensaje: YA HE MIRADO MUCHO DE SCRIPTS |
|
|
Pero como puedo obtener todos los comandos del ZCommons.acs
Y busquemos lo del decorate, yo cuando tengainformacion les comento.
GRACIAS
-------
Mensaje editado por RicarDooM.
Motivo: Incumplimiento del apartado 3 en las normas del foro
Ver normas
|
|
Volver arriba |
|
|
RicarDooM Administrador
Registrado: 06 Sep 2006 Mensajes: 443 Ubicación: México
|
Publicado: Sab Jun 09, 2007 1:16 am Título del mensaje: |
|
|
En la wiki de zdoom (en ingles) puedes encontrar documentación sobre las funciones.
http://www.zdoom.org/wiki/index.php?title=ACS
En caso de que tengas sobre como utilizarlas puedes preguntarlo en esta página. |
|
Volver arriba |
|
|
Liliana Mapeador
Registrado: 04 Oct 2006 Mensajes: 61
|
Publicado: Sab Jun 09, 2007 1:56 am Título del mensaje: |
|
|
RicarDooM escribió: | Código: |
Script 1 (void)
{
SetMusic("MUSICA", 0);
Teleport("tag aqui");
}
|
|
eso tambien lo intente y me marca un error al compilarlo, si quieres capturo una imagen con el error o lo gravo en video para que veas que no te estoy mintiendo.
ah y lo del cambio de musica si me salio, pero puse el numero 1:
"SetMusic("MUSICA", aqui);
¿es nesesario poner aqui un numero? o mas bien ¿ese espasio es para un tag o para que?
fijate ¿eh? le puse 1 sin saber para que era. _________________ 2Da Entrevista a Jumentor
(clik en imagen)
|
|
Volver arriba |
|
|
RicarDooM Administrador
Registrado: 06 Sep 2006 Mensajes: 443 Ubicación: México
|
Publicado: Sab Jun 09, 2007 3:48 am Título del mensaje: |
|
|
De hecho ese valor en la función SetMusic no se usa, puedes ponerle lo que quieras aunque lo normal es poner 0.
Sobre el error seria bueno que publicaras una imágen y así saber que ocurre.
Una del error y otra para ver lo que llevas escrito (solo en caso de que el mensaje de error tape el código)
Saludos.
|
|
Volver arriba |
|
|
Liliana Mapeador
Registrado: 04 Oct 2006 Mensajes: 61
|
Publicado: Lun Jun 11, 2007 12:23 am Título del mensaje: |
|
|
pues la verdad siempre que boy a probar un script, ago un pequeño mapa de prueva y hay lo pruvo, ya despues lo agrego a mi mapa.
_________________ 2Da Entrevista a Jumentor
(clik en imagen)
|
|
Volver arriba |
|
|
RicarDooM Administrador
Registrado: 06 Sep 2006 Mensajes: 443 Ubicación: México
|
Publicado: Lun Jun 11, 2007 2:28 am Título del mensaje: |
|
|
Te falto poner la libreria.
Lo siguiente siempre debe ir en la primer linea de tu código.
Código: |
#include "zcommon.acs"
|
|
|
Volver arriba |
|
|
|