Bueno, despues cada uno de estos tiene una pertañita donde puedo elegir, supongo que será, el guión. Erm... como hay miles de elos... hay algún sitio donde ver que hace cada uno de ellos? O tengo que experimentar? lguno me podeis dar alguna guía, ayuda o sugerencia?
Por ejemplo, para hacer que un enemigo huya de los personajes al grito de "Socorro!!" o "No me mates!". Como haría?
Gracias! _________________ Díscipulo-) Maestro, caí en el abismo. Las aguas son hondas y oscuras. Maestro-) Recuerda esto: lo que ahoga a alguien no es la inmersión, sino el hecho de permanecer bajo el agua.
Volver arriba
Txibi Administrador
Registrado: 25 Ene 2004 Mensajes: 1402 Ubicación: Andoain, Gipuzkoa, Euzkadi, España, Europa, Gaia. Publicado: Sab Jul 17, 2004 7:07 pm Asunto: Saludos.
Normalmente, salvo los eventos de percepción, no es necesario tocar nada y en caso de usar un guión es el de OnUsedDefined, o sea guión definido para el usuario.
Un ejemplo, un enano que aporree una roca en una mina. Ponemos el enano pnj. A guiones.
Cogemos en guiones.
El archivo OnSpawn es de Inicializar Criatura. El Never para ahorrar recursos, si no hay nadie en esa zona, desinicializa las criaturas para que no gasten recursos y las "inicializa" cuando alguién entra en ese area.
Salvamos ese archivo (nw_c2_default9) con otro nombre, por ejemplo, tx_minero_spawn.
Ahora vamos a "descomentar" (quitar las dos barras // que anulan la línea) la opción de percibir cosas (línea 204 o 243, dependiendo de la versión)
La línea es: SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT);
Y esta precedida por el comentario "Fire User Definend Event 1002"
Ya está. Salvamos.
Creamos una roca de etiqueta tx_roca
Bien, pues en el guión OnUsedDefined borramos el que existe y creamos este. Código: Script: tx_atacaroca
Y ya tenemos al minero aporreando la roca, pero sólo cuando se acerca alguién que pueda verle, si el área está vacía, no hace nada ni consume recursos.
En la medida de lo posible no usar el evento OnHeartBeat, ese script se autoejecuta cada 6 segundos de juego eternamente.
Txibi.
Volver arriba
Reox Harpell Gigante de fuego de Izhar
Registrado: 30 Ene 2004 Mensajes: 529 Ubicación: La Luna Roja Publicado: Lun Jul 19, 2004 12:29 am Asunto:
Cita: Por ejemplo, para hacer que un enemigo huya de los personajes al grito de "Socorro!!" o "No me mates!". Como haría?
Bien, se me ocurren dos formas posibles de conseguir eso. 1) Con el evento OnConversation: Cada vez que picaras con el puntero en el pnj o intentaras hablar con él se activaria el script.
2) Con el evento OnPerception: Al entrar en su radio de vision se activaria el script. _________________ ...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."
Volver arriba
Reox Harpell Gigante de fuego de Izhar
Registrado: 30 Ene 2004 Mensajes: 529 Ubicación: La Luna Roja Publicado: Lun Jul 19, 2004 12:34 am Asunto:
Se me olvido añadir una cosa... es posible añadir scripts en los dialogos con los pnj´s. Si lo que buscas es una interacción basada en el roleo te recomiendo que investigues esta manera de activar los scripts. Ejemplos de esto en Enroth los tienes a patadas, todos los personajes que transportan pj´s a distintas areas o los que dan recompensas tienen este tipo de scripts. Un saludo. _________________ ...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."
NOTA: Los ____ al inicio de las líneas de los scripts no son parte y han sido colocados para sangrar únicamente.
Colocaremos una serie de scripts básicos para ver las palabras reservadas y la estructura, pues eso básica...
Empecemos por 3 muy comunes.
Cerrar las puertas al cabo de un rato abierta. Lo mismo pero además echar la llave. Sentarse en banco o similar.
Las dos primeras, las de cerrar la puerta, el script creado hay que ponerlo en el evento OnOpen, para que cuando alguien abra la puerta pase lo ahí expuesto.
El del banco debe colocarse en el evento OnUsed, para que se lance cuando alguien cliquee sobre el.
Código: //script: cierrapuertallav void main() {
//Espera 10 segundos, cierra la puerta, echa la llave a la puerta. DelayCommand(10.0, ActionCloseDoor (OBJECT_SELF)); DelayCommand(10.0, ActionDoCommand (SetLocked (OBJECT_SELF, TRUE)));
Código: //script: sillagremio void main() { ____ object oJugador = GetLastUsedBy(); //Jugador el ultimo que cliqueo ____ object oSilla = OBJECT_SELF; //Silla sobre la que se ha cliqueado ____ //Si es un objetivo valido y no hay nadie sentado. ____ if (GetIsObjectValid(GetSittingCreature(oSilla)) == FALSE) ____ { ________ AssignCommand(oJugador,ActionSit(oSilla));//Sentarse. ____ } }
Esto solia hacerlo en mi época de programador para ahorrar código , aunque se complica bastanta y luego no es facil de entender.
Código:
//script: sillagremio void main() { ____ //Si es un objetivo valido y no hay nadie sentado. ____ if (GetIsObjectValid(GetSittingCreature(oSilla)) == FALSE) ____ AssignCommand(GetLastUsedBy(),ActionSit(OBJECT_SELF));//Sentarse. }
Esta perfecto, pero en ocasiones la orden "AsignCommand" se bloquea si su usa con "ActionSit" y sospecho que con cualquier acción directa... es un C un poco básico, así que siempre es mejor dejarlo muuuyy separado.
Ya te habrás dado cuenta de que tienes que declarar todas las variables por narices. En cualquier caso son todas variables locales, al finalizar el script se destruyen (creo) con lo cual un script, salvo que se use muchas veces no da lag aunque tenga muchas variables.
Esto esta metido en un desencadenante "On Enter", lo que quiero es ponerselo a un ubicado en" On used" y que cada vez que lo toque haga un efecto deteriminado. ¿Es tan simple como ponerlo en el on used del ubicado? ¿?O que hay que hacer¿
PD: Lamento de la Banshee como es en ingles
PD: Tambien lo necesito pa la secta.. _________________
------------------------------
Volver arriba
Reox Harpell Gigante de fuego de Izhar
Registrado: 30 Ene 2004 Mensajes: 529 Ubicación: La Luna Roja Publicado: Jue Jul 15, 2004 4:48 pm Asunto:
¿Pero eso lo metes un objeto de los que se llevan en el inventario o es para algun tipo de altar? Describe que es lo quieres exactamente y si hay que añadir más codigo se añade, incluso no es necesario que aportes codigo. Simplemente di que es lo que quieres conseguir, hombre si aportas codigo mejor. _________________ ...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."
Volver arriba
Misi DM
Registrado: 24 Ene 2004 Mensajes: 2635 Ubicación: Esperando la victoria de mi señor de la muerte, el Dios Baa Publicado: Jue Jul 15, 2004 4:53 pm Asunto:
Ah se me olvidaba, es para un altar claro, un ubicado...aunque crei que lo he dicho antes....si
Cita: lo que quiero es ponerselo a un ubicado
_________________
------------------------------
Volver arriba
Landtheater Administrador
Registrado: 25 Ene 2004 Mensajes: 683 Ubicación: *Estudiando y midiendo el ojo de un animal que perdió la vida* Publicado: Jue Jul 15, 2004 7:19 pm Asunto:
Jurarìa que "Wail of the Banshee" _________________ Díscipulo-) Maestro, caí en el abismo. Las aguas son hondas y oscuras. Maestro-) Recuerda esto: lo que ahoga a alguien no es la inmersión, sino el hecho de permanecer bajo el agua.
Volver arriba
Reox Harpell Gigante de fuego de Izhar
Registrado: 30 Ene 2004 Mensajes: 529 Ubicación: La Luna Roja Publicado: Jue Jul 15, 2004 7:53 pm Asunto:
Código: void main(){ //variables object jugador; jugador = GetLastUsedBy(); object destino; location coordenadas; //valores de las variables de destino y coordenadas destino = GetWaypointByTag("puntoDeAterrizaje"); coordenadas = GetLocation(destino); //validacion if (GetAreaFromLocation(coordenadas)==OBJECT_INVALID) return; //teletransporte DelayCommand(1.0, AssignCommand(jugador, ActionJumpToLocation(coordenadas))); }
Espero que sirva de ayuda para los que empiezan. _________________ ...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."
Volver arriba
Misi DM
Registrado: 24 Ene 2004 Mensajes: 2635 Ubicación: Esperando la victoria de mi señor de la muerte, el Dios Baa Publicado: Jue Jul 15, 2004 11:25 pm Asunto:
Yo considero que lo mejor ke puedes hacer es proponer scripts y una vez hecho el script lo desmontas y se te explika lo que no entiendas. Yo creo que lo mejor que podeis hacer los DM´s es proponer muchos scripts, asi no solo mejoramos enroth sino que publicamos ejemplos de programación en los que basarse para aprender que es muy importante. _________________ ...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."
Volver arriba
Misi DM
Registrado: 24 Ene 2004 Mensajes: 2635 Ubicación: Esperando la victoria de mi señor de la muerte, el Dios Baa Publicado: Jue Jul 15, 2004 11:43 pm Asunto:
El del teletransporte? para que funcione ese script necesitas crear un punto de ruta. _________________ ...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."
Volver arriba
Misi DM
Registrado: 24 Ene 2004 Mensajes: 2635 Ubicación: Esperando la victoria de mi señor de la muerte, el Dios Baa Publicado: Vie Jul 16, 2004 12:00 am Asunto:
Nota: este post se refiere al script de teletransporte. _________________ ...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."
Ultima edición por Reox Harpell el Vie Jul 16, 2004 12:03 am, editado 1 vez
Volver arriba
Misi DM
Registrado: 24 Ene 2004 Mensajes: 2635 Ubicación: Esperando la victoria de mi señor de la muerte, el Dios Baa Publicado: Vie Jul 16, 2004 12:02 am Asunto:
El altar lleva la etiqueta AltarBaa, es utilizable y el codigo esta en OnUse? _________________ ...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."
- Script para crear una silla de tortura (efecto fuego) -
Evento: On Used (Se coloca en una palanca delante de la silla)
void main(){ location lLoc=GetLocation(GetObjectByTag("silla")); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_FIRE),lLoc); } _________________ ...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."
Volver arriba
Reox Harpell Gigante de fuego de Izhar
Registrado: 30 Ene 2004 Mensajes: 529 Ubicación: La Luna Roja Publicado: Jue Jul 15, 2004 2:23 pm Asunto:
Más tarde aporto más ideas que el trabajo me reclama _________________ ...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."
Volver arriba
Landtheater Administrador
Registrado: 25 Ene 2004 Mensajes: 680 Ubicación: *Estudiando y midiendo el ojo de un animal que perdió la vida* Publicado: Jue Jul 15, 2004 3:03 pm Asunto:
- Script para facilitar el roleo en las cofradias mediante una sencilla alarma -
Evento: On Enter (Zona activa)
Cita: void main(){ object lider = GetItemPossessor(GetObjectByTag("cetrocofradia")); object intruso = GetEnteringObject(); string nombreintruso = GetName(intruso); string mensajeaccion = "*El cetro emite un resplandor rojizo indicando que un intruso esta en la cofradia*"; string mensajebarra = "// el jugador detectado es: "; SendMessageToPC(lider, mensajeaccion); SendMessageToPC(lider, mensajebarra + nombreintruso); }
Jeje, este me gusta mucho. Una bonita trampa de Alarma : P.
(Será que me gusta porque es el unico que he............ intuido... dios... necesito más clases...) _________________ Díscipulo-) Maestro, caí en el abismo. Las aguas son hondas y oscuras. Maestro-) Recuerda esto: lo que ahoga a alguien no es la inmersión, sino el hecho de permanecer bajo el agua.
Volver arriba
Misi DM
Registrado: 24 Ene 2004 Mensajes: 2632 Ubicación: Esperando la victoria de mi señor de la muerte, el Dios Baa Publicado: Jue Jul 15, 2004 4:02 pm Asunto:
Si, pero no se ha probado que ocurre cuando dos pj´s tienen el objeto que avisa de que han entrado y tampoco se si provocara lag. El tema del testeo te lo cedo Misi. _________________ ...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."
Volver arriba
Reox Harpell Gigante de fuego de Izhar
Registrado: 30 Ene 2004 Mensajes: 529 Ubicación: La Luna Roja Publicado: Jue Jul 15, 2004 4:27 pm Asunto:
Se me ocurrió porque es imposible defender una cofradia o rolear en ellas si las posibilidades de que encuentres a alguien es de 1 entre 100 o más si hay pocos miembros de la cofradia, para eso es el script de la alarma.
Lo cierto es que a veces pienso que por ejemplo los guardias del pueblo estarian mejor con el primer script que puse para que cuando un pj quiera ser guardia le deis un objeto y pueda rolear cosas usando los guardias (Se mueven, hablan, lo siguen, vuelven a su puesto, ...) mediante ordenes verbales. Ese si esta bien testeado gracias a Evaryan. Sobre ese tema tengo a medio desarrollar otra idea, que un pj nombrado guardia posea el poder de hacer que otro pj camine obligado hacia la carcel (detenido), he comprobado que es viable hacerlo. _________________ ...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor