Blogia

Rol

Tutorial Ayudantes

Saludos, traspaso aquí el tutorial de ayudantes por si le sirviera a alguién.
----------------------------------------------------------------------------------------------

Saludos, en formato de texto con colores y tal vez más visible está aquí:
http://www.txibi.com/Descargas/Conversa.rtf

BIEN, VAMOS A INICIAR UN TUTORIAL DE CREACCIÓN DE UN GUARDAESPALDAS.

PRIMERO:

Inicializamos una facción nueva, plantilla Defensor y la llamaremos mercenario.

Creamos el guardaespaldas propiamente dicho, nueva criatura, humano, guerrero de nivel 3 y le asignaremos facción: mercenario. De nombre (¡IMPORTANTE!) tx_merc_01, apellido en blanco. PNJs, humanos. Inicia las propiedades de criatura y ponle un nombre más amigable, por ejemplo Fidel.

Lo realmente importante es que al llamarlo inicialmente tx_merc_01 su etiqueta y Resref tiene ese nombre tx_merc_01 que es lo que nos interesa para tenerlo controlado.

Punto de ruta, que es donde aparecerá nuestro mercenario. Lo llamaremos por ejemplo:tx_aqui_mercenario.

Ya lo tenemos, vamos a crear un intermediario con el que tendrás que hablar para alquilarlo.

Creamos el intermediario.
Criaturas => Paleta Estándar => PNJs => Humano => Tendero.
Ponlo cerca del punto de ruta que hemos creado.
Botón derecho => propiedades => básico => conversación.
Creamos una conversación que llamaremos tx_vendedor

[DUEÑO]¡Saludos, amigo mío! ¿Quieres alquilar uno de los excelentes mercenarios del Garrote Vil? ¡Por sólo 100 monedas de oro, estará contigo una temporada protegiéndote de los peligros con su vida!
Sí, porque no.

No gracias.

Bien, la frase Sí, porque no. Sólo saldrá si no se tiene un mercenario ya de antes. En la conversación, en esa línea tenemos dos pestañas, que son respectivamente “El texto aparece cuando...” y otra que es “Acciones emprendidas.”

Bien en “El texto aparece cuando...” vamos a colocar el siguiente script. tx_haymercenario

Código:

//Script tx_haymercenario

int StartingConditional()
{
if (GetHenchman(GetPCSpeaker())==OBJECT_INVALID)
return TRUE;
else
return FALSE;
}


Y en la pestaña “Acciones emprendidas.” Vamos a colocar este otro script:
Código:

//Script: tx_mercenario

#include "NW_I0_PLOT"

void main()
{
int nObjectType = OBJECT_TYPE_CREATURE;
if (HasGold(100, GetPCSpeaker())) // Se comprueba que hay 100 p. de oro.
{
string strTemplate = "tx_merc_01"; // resref del diseño.
location locLocation= GetLocation(GetObjectByTag("tx_aqui_mercenario"));
// Arriba dice en que punto del mapa (punto de ruta) aparecerá.
int bUseAppearAnimation = TRUE;
CreateObject (nObjectType, strTemplate, locLocation, bUseAppearAnimation);
// La línea de arriba crea el mercenario.
TakeGold(100,GetPCSpeaker()); // Y retira el oro, 100 monedas.
SetCustomToken(101, "Hecho, dile algo al Mercenario para que te siga");
}
else
{
SetCustomToken(101, "Lo siento créeme, no trabajamos gratis.");
}
}


Bien, ahora sólo nos falta la conversación del mercenario. Vamos a criaturas personalizadas, a nuestro amigo Fidel. El que tenemos con la etiqueta tx_merc_01.
Creamos una conversación que llamaremos tx_mercenario

Y esta conversación controlará el mercenario es un conjunto de scripts, te harán falta el siguiente, el resto son genéricos del neverwinter y no tendremos que crearlos, son los que empiezan por las siglas nw_ como imaginabas.
Código:

//Script tx_tienemaster

int StartingConditional()
{
if (GetMaster() == OBJECT_INVALID)
return TRUE;
else
return FALSE;
}


Cita:
conversación tx_mercenario

Cita:

[DUEÑO] Este guardaespaldas te observa con suspicacia.
... Acercarte al Guardaespaldas.
......[DUEÑO] El guardaespaldas comprueba que eres su patrón.
.........Sígueme![FINALIZAR DIALOGO]
......[DUEÑO] El mercenario te ignora.
......... Dejadlo e irte. [FINALIZAR DIALOGO]
... Alejarte.
[DUEÑO]El Guardaespaldas se gira hacia ti, esperando tus ordenes.
...Quiero cambiar tus tácticas.
......[DUEÑO]¡Tu mandas! ¿Que es lo que quieres cambiar?
.........Lánzate al combate cuerpo a cuerpo y olvídate de atacar desde la distancia.
............[DUEÑO]¿Seguro? ¡Cómo desees!.
...............[FINALIZAR DIALOGO]
.........No entres cuerpo a cuerpo a no ser que sea necesario.
............[DUEÑO]¡De acuerdo! ¡Yo recurrir a conjuros y armas a distancia!
...............[FINALIZAR DIALOGO]
.........Tenemos que cambiar la distancia que nos separa en formación.
............[DUEÑO]¿A qué distancia quieres que te siga?
...............Ponte cerca. [FINALIZAR DIALOGO]
...............A media distancia. [FINALIZAR DIALOGO]
...............Alejado de mí. [FINALIZAR DIALOGO]
.........Ayúdame si no puedo abrir una puerta cerrada.
............[DUEÑO]¡Sí! ¡Eso haré!
...............[FINALIZAR DIALOGO]
.........No me ayudes con las puertas y arcones cerrados si no puedo abrirlos.
............[DUEÑO]Cómo quieras.
...............[FINALIZAR DIALOGO]
.........Muévete lo más sigilosamente posible.
............[DUEÑO] ¡De Acuerdo! Yo iré lo más sigiloso que pueda.
...............[FINALIZAR DIALOGO]
.........No intentes ocultarte en ningún momento.
............[DUEÑO]¡Así me gusta! ¡Que sepan quienes somos! ¡¡¡¡jajajajajajaa!!!!
...............[FINALIZAR DIALOGO]
.........Mejor dicho, no quiero cambiar nada.
............[DUEÑO] El guardaespaldas te mira extrañado, luego sigue a lo suyo.
...............[FINALIZAR DIALOGO]

...Bien, me has servido lo suficiente, no te necesitare más de momento, quédate por aquí.
......[DUEÑO]¿Seguro? ¿Espero aquí? ¿Estás seguro? Mi contrato me obliga a irme con cualquiera que requiera mi presencia si me liberas de la tuya.
.........Sí, Márchate.
............[DUEÑO]Entonces me quedaré por aquí, es decir, si no me reclaman, ¡Adiós!
...............[FINALIZAR DIALOGO]
.........No, quédate.
............[DUEÑO]De acuerdo, tú mandas.
...............[FINALIZAR DIALOGO]

...No importa, olvida lo que iba decirte.
......[DUEÑO]De acuerdo.
.........[FINALIZAR DIALOGO]


CONJUNTOS DE SCRIPTS A COLOCAR EN LAS SIGUIENTES OPCIONES DE TEXTO.

Este guardaespaldas te observa con suspicacia.
El texto aparece cuando... nw_ch_ac_st_01
Acciones Emprendidas. Ningún Script.

Sígueme![FINALIZAR DIALOGO]
El texto aparece cuando... tx_tienemaster
Acciones Emprendidas. nw_ch_join

El Guardaespaldas se gira hacia ti, esperando tus ordenes.
El texto aparece cudno... nw_ch_ac_st_02
Acciones Emprendidas. Ningún Script.

Lánzate al combate cuerpo a cuerpo y olvídate de atacar desde la distancia.
El texto aparece cuando... nw_ch_comrange
Acciones Emprendidas. nw_ch_gomelee

No entres cuerpo a cuerpo a no ser que sea necesario.
El texto aparece cuando... nw_ch_commelee
Acciones Emprendidas. nw_ch_goranged

Ponte cerca. [FINALIZAR DIALOGO]
El texto aparece cuando... vacío, no se pone nada.
Acciones Emprendidas. nw_ch_dist_6

A media distancia. [FINALIZAR DIALOGO]
El texto aparece cuando... vacío, no se pone nada.
Acciones Emprendidas. nw_ch_dist_12

Alejado de mí. [FINALIZAR DIALOGO]
El texto aparece cuando... vacío, no se pone nada.
Acciones Emprendidas. nw_ch_dist_18

Ayúdame si no puedo abrir una puerta cerrada.
El texto aparece cuando... nw_ch_no_locks
Acciones Emprendidas. nw_ch_lock_on

No me ayudes con las puertas y arcones cerrados si no puedo abrirlos.
El texto aparece cuando... nw_ch_yes_locks
Acciones Emprendidas. nw_ch_lock_off

Muévete lo más sigilosamente posible.
El texto aparece cuando... nw_ch_no_stlth
Acciones Emprendidas. nw_ch_stlth_on

No intentes ocultarte en ningún momento.
El texto aparece cuando... nw_ch_yes_stlth
Acciones Emprendidas. nw_ch_stlth_off

[DUEÑO]Entonces me quedaré un rato aleteando por aquí, es decir, si no me reclaman, ¡Adiós!
El texto aparece cuando... vacío, no se pone nada.
Acciones Emprendidas. nw_ch_remove

Pues eso es todo amigos...

Txibi.

Volver arriba


Paus Tanner
Gigante de fuego de Izhar

Registrado: 02 May 2004
Mensajes: 510
Ubicación: Vagando por los senderos de mi destino
Publicado: Jue Ago 26, 2004 4:08 pm Asunto:

--------------------------------------------------------------------------------

Txibi, chapo el tutorial jejejejeje

porcierto, miraste los tutoriales que te dije? esos que son con videos? (un poco elementales pero para empezar jejejeje)
_________________
Las fiestas, cuantos más mejor!


Volver arriba

Invisibilidad

Hola, como ya sabreis, llevo poco tiempo con esto de los scripts, y estoy dresgranando unas ideas en mi cabeza, pero para ellos, preciso un pelin de ayuda para enterarme de todo....

Por ejemplo, si yo quiero que un pj aparezca en un punto tras realizar una accion, k instruccion usaria? ya se que hay que recurrir a las varibles... y hacer que compruebe la variable, pero para que esa variable active la invisibilidad de un pnj o la no invisibilidad???

Hay algun sitio donde pueda encontrar una pequeña lista con las funciones de aurora y su explicacion (por eso de hacer más rapido el proceso...

Bueno, segun vaya necesitando, ire poniendo...

Gracias por adelantado y un saludo

Is-lu-is
_________________
Las fiestas, cuantos más mejor!


Volver arriba


Txibi
Administrador

Registrado: 25 Ene 2004
Mensajes: 1415
Ubicación: Andoain, Gipuzkoa, Euzkadi, España, Europa, Gaia.
Publicado: Sab Ago 14, 2004 4:02 pm Asunto: Saludos.

--------------------------------------------------------------------------------

Saludos.

Que aparezca en un punto mandandolo desde una conversación es relativamente facil, pero sospecho que quieres decir que si conjura invisibilidad, por ejemplo, aparezca en la carcel.

mmm sería algo así como descomentar la percepción de los guardias y si detecta el conjuro de invisibilidad (un número de la lista de spell.2da) actuar.

Mirare algo...

Txibi.

Volver arriba


Paus Tanner
Gigante de fuego de Izhar

Registrado: 02 May 2004
Mensajes: 510
Ubicación: Vagando por los senderos de mi destino
Publicado: Sab Ago 14, 2004 4:16 pm Asunto:

--------------------------------------------------------------------------------

La cuestion es, que tu tengas a un individuo que no aparezca o no se vea con el contador de la variable a 0, y en cuanto cambias el valor de la variable, que se haga visible...

Muchas gracias por la atencion ^^
_________________
Las fiestas, cuantos más mejor!


Volver arriba


Txibi
Administrador

Registrado: 25 Ene 2004
Mensajes: 1415
Ubicación: Andoain, Gipuzkoa, Euzkadi, España, Europa, Gaia.
Publicado: Sab Ago 14, 2004 4:22 pm Asunto: Saludos.

--------------------------------------------------------------------------------

Saludos.

Veamos, ¿quieres que un pnj este invisible o viceversa y si un PJ hace una acción se invierta su situación? Detalles, detalles...

Txibi.

Volver arriba


Paus Tanner
Gigante de fuego de Izhar

Registrado: 02 May 2004
Mensajes: 510
Ubicación: Vagando por los senderos de mi destino
Publicado: Sab Ago 14, 2004 4:33 pm Asunto:

--------------------------------------------------------------------------------

Que rapidez

A ver, lo que quiero esk por ejemplo en un ubicado haya un pnj y tu, hablas con ese pnj y se activa una variable, una vez que esa variable esta activada, quiero que aparezca otro justo a su lado... seria algo asi,
y al igual que se puede hacer eso, que se pueda hacer lo contrario, es decir, que desaparezca...

muchas gracias

Paus
_________________
Las fiestas, cuantos más mejor!


Volver arriba


Txibi
Administrador

Registrado: 25 Ene 2004
Mensajes: 1415
Ubicación: Andoain, Gipuzkoa, Euzkadi, España, Europa, Gaia.
Publicado: Sab Ago 14, 2004 5:02 pm Asunto: Saludos.

--------------------------------------------------------------------------------

Saludos.

Me tengo que ir, pero te dejo la mitad del trabajo hecho...

Código:
//script tx_crear.
//Txibi, 18:19, 14-08-2004.
//
//Colocarlo en un guion de conversacion en: "el texto aparece cuando..."
//
//Al escoger la opcion de conversacion adecuada aparece un pnj en el punto.
// marcado para ello.

void main()
{
object oJugador = GetLastSpeaker();
string sNombreJugador = GetName(oJugador);

//Variable local para que sea accesible desde todo el modulo.
SetLocalInt(oJugador, sNombreJugador+"_activo", 1);

//Tipo de aparicion, si es criatura, ubicable, objeto, etc...
int nObjectType = OBJECT_TYPE_CREATURE;
// resref del diseño.
string strTemplate = "tx_chica";
// En que punto del mapa (punto de ruta) aparecera.
location locLocation= GetLocation(GetObjectByTag("tx_sal_aqui"));
//Animacion fuera para que simule que sale de la nada.
int bUseAppearAnimation = FALSE;

//Creamos la criatura.
CreateObject (nObjectType, strTemplate, locLocation, bUseAppearAnimation);
}


Txibi.

Volver arriba


Paus Tanner
Gigante de fuego de Izhar

Registrado: 02 May 2004
Mensajes: 510
Ubicación: Vagando por los senderos de mi destino
Publicado: Sab Ago 14, 2004 5:05 pm Asunto:

--------------------------------------------------------------------------------

Ok asias, le echo un ojo y miro que puedo fedellar(modificar y manipuolar) en ella ^^

Gracias
Paus
_________________
Las fiestas, cuantos más mejor!


Volver arriba


Reox Harpell
Gigante de fuego de Izhar

Registrado: 30 Ene 2004
Mensajes: 528
Ubicación: La Luna Roja
Publicado: Lun Ago 23, 2004 9:26 pm Asunto:

--------------------------------------------------------------------------------

Pues... veo ke esto ya esta contestado.
_________________
“...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."

Volver arriba


Paus Tanner
Gigante de fuego de Izhar

Registrado: 02 May 2004
Mensajes: 510
Ubicación: Vagando por los senderos de mi destino
Publicado: Lun Ago 23, 2004 10:18 pm Asunto:

--------------------------------------------------------------------------------

Sip, asias a los dos! ^^ sobretodo a txibi k me lo subio...

Otra cosa, estoy haciendo un area, k me gustaria ver si se le pueden poner scripts... y cosas asi (estilo activar una fuente al acercarte y caralladas asi...) es una zona mas que nada de descanso... muy relajante y eso... ^^

Un saludo

Luis
_________________
Las fiestas, cuantos más mejor!

¿Que le pasará a esto?

Lo curioso es que no va un script tan sencillo como este, no coge los objetos personalizados.

Código:
void main(){

//Variables de modificacion
string etiqueta = "prueba";

//Codigo
object jugador = GetEnteringObject();
string nombrejugador = GetName(jugador);
if (GetObjectByTag(etiqueta) == GetItemPossessedBy(jugador, etiqueta)) {
SendMessageToPC(jugador, "Bienvenido de nuevo al servidor " + nombrejugador);
}
else{
SendMessageToPC(jugador, "*Detectado un nuevo jugador*");
SendMessageToPC(jugador, "*Equipando al nuevo jugador...*");
CreateItemOnObject(etiqueta, jugador, 1);
SendMessageToPC(jugador, "Bienvenido al servidor " + nombrejugador);
}
}

_________________
“...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."

Volver arriba


Txibi
Administrador

Registrado: 25 Ene 2004
Mensajes: 1402
Ubicación: Andoain, Gipuzkoa, Euzkadi, España, Europa, Gaia.
Publicado: Lun Jul 19, 2004 8:11 pm Asunto: Saludos.

--------------------------------------------------------------------------------

Saludos.

Añade antes del void main() este include.

#include "nw_i0_plot"

Ahora si veo un hueco te lo testeo.

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 9:11 pm Asunto:

--------------------------------------------------------------------------------

Kurioso, tampoco funciona. Seguro que es una chorrada.
_________________
“...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."

Volver arriba


Txibi
Administrador

Registrado: 25 Ene 2004
Mensajes: 1402
Ubicación: Andoain, Gipuzkoa, Euzkadi, España, Europa, Gaia.
Publicado: Lun Jul 19, 2004 9:14 pm Asunto: Saludos.

--------------------------------------------------------------------------------

Saludos...

Veamos, si no me lío lo que quieres hacer mejor por el OnClientEnter.

Además usaremos el script de bioware para que "examine todo el inventario"

Con esto en el frontal, no saltamos el include de arriba, ya que al estar implementado en el scritp no hace falta llamada a un recurso externo, si no es muy kilométrico el script, mejor así (por kilométrico cuando pasa de 1.000 líneas).

Veamos el void main.

Código:
int IsInInventory(object oContainer, string sItemTag)
{
object oItem;

if (GetHasInventory(oContainer))
{
oItem = GetFirstItemInInventory(oContainer);
while ( OBJECT_INVALID != oItem )
{
if (GetTag(oItem) == sItemTag)
{ return TRUE; }
oItem = GetNextItemInInventory(oContainer);
} // end while
} // endif
return FALSE;
} // end IsInInventory

void main()
{
object oPC= GetEnteringObject();
string sNombrePJ= GetName(oPC);
if (!IsInInventory(oPC,"prueba"))
{
SendMessageToPC(oPC,"*Detectado un nuevo jugador*");
SendMessageToPC(oPC,"*Equipando al nuevo jugador...*");
CreateItemOnObject("prueba",oPC);
SendMessageToPC(oPC,"Bienvenido al Servidor. " + sNombrePJ);
}
else
{
SendMessageToPC(oPC,"Bienvenido de nuevo al servidor " + sNombrePJ);
}
}

Y listo... evidentemente, puedes tener muchas más cosas en el OnClientEnter... podría ser tal que así o muchisimo más largo...

Código:
int IsInInventory(object oContainer, string sItemTag)
{
object oItem;

if (GetHasInventory(oContainer))
{
oItem = GetFirstItemInInventory(oContainer);
while ( OBJECT_INVALID != oItem )
{
if (GetTag(oItem) == sItemTag)
{ return TRUE; }
oItem = GetNextItemInInventory(oContainer);
} // end while
} // endif
return FALSE;
} // end IsInInventory

void main()
{
object oPC= GetEnteringObject();

// Miramos la vidas que tiene el personaje o se la creamos.
//string sNombrePJ = GetName(oPC) + "_Vidas";
//string sNombreModulo = "Enroth_" + GetPCPlayerName(oPC);
if (GetCampaignInt("Validar_", GetName(oPC))==0)
{
//SetCampaignInt(sNombreModulo, sNombrePJ, 5, oPC);
SetCampaignInt(GetName(oPC), "_Vidas_", 5, oPC);
SetCampaignInt("Validar_", GetName(oPC),1);
//SetCampaignInt(sNombreModulo, sNombrePJ+"_validado", 1);
int vidas = GetCampaignInt(GetName(oPC), "_Vidas_");
SendMessageToPC(oPC,"Inicializando vidas");
}

//Si esta encarcelado, va directamente a la carcel.
if (IsInInventory(oPC,"tx_carcel")) //Si tiene la placa de preso.
{
AssignCommand(oPC, JumpToObject(GetObjectByTag("WP_carcel")));
}

//Anulamos la Vara de emociones.
//if (!IsInInventory(oPC,"EmoteWand"))
//{
// CreateItemOnObject("EmoteWand",oPC);
// SendMessageToPC(oPC,"Se te ha dado una varita de emociones");
//}

//Libro de habilidades.
if (!IsInInventory(oPC,"tx_librohab_1"))
{
CreateItemOnObject("tx_librohab_1",oPC); //Crea el libro en el jugador.
SendMessageToPC(oPC,"Se te ha dado un libro para que uses tus habilidades");
}//fin libro de habilidades.

if(IsInInventory(oPC,"tx_geas")) //Maldiciones y esas cosas... -2 a todo.
{
int iMaldicion;
if(iMaldicion==0)
{
effect eMaldito = EffectCurse(2,2,2,2,2,2);
effect eVisual = EffectVisualEffect(20);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eMaldito, oPC);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVisual, oPC);
int iMaldicion=1;
}
else
{
}
}

//Crucifijo del paladin.
if (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) >= 1)
{
if (!IsInInventory(oPC,"crucifijonodrop"))

{
CreateItemOnObject("crucifijonodrop",oPC);
SendMessageToPC(oPC,"Tienes un crucifijo especial en tu inventario");
}
}
//Reglamento.
if (!IsInInventory(oPC,"0_reglas_2"))
{
CreateItemOnObject("0_reglas_2",oPC);
SendMessageToPC(oPC,"Se te ha dado una copia del Reglamento");
}

//Buscamos los puntos de vida del personaje
// object oPC = GetEnteringObject();
int iVida = GetLocalInt (GetModule(), "PUNTOS_VIDA_" + GetName(oPC));
int iVidaActual = GetMaxHitPoints(oPC);
//Dejamos los puntos de vida del personaje en el valor que tenían antes de que
//saliese del server
if ((iVida>0)(iVida

Sobre los guiones de las criaturas

Publicado: Sab Jul 17, 2004 4:00 pm Asunto: Sobre los guiones de las criaturas

--------------------------------------------------------------------------------

Bueno, como me voy a poner con las criaturas me gustaría darles algo más de personalidad. Asíq ue necesito vuestra ayuda "OH! Amos de los scripts!"

Me gustaría que me dijerais para que vale cada guión (aunque creo que los supongo..pero prefiero asegurarme)

OnBlocked
OnCombatRoundEnd
OnConversation
OnDamaged
OnDeath
OnDisturbed
OnHeartbeat
OnPerception
OnPhysicalAttacked
OnRested
OnSpawn
OnSpellCastAt
OnUserDefined

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.

--------------------------------------------------------------------------------

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

#include "NW_IO_GENERIC"

void main()
{
ActionAttack(GetNearestObjectByTag("tx_roca"));
}//fin void main.

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:

--------------------------------------------------------------------------------

Estos tres eventos dan problemas:

OnHeartbeat
OnBlocked
OnRested

No te recomiendo usarlos para nada.

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."

Scripts Basicos.

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: cierrapuerta
void main()
{
____DelayCommand(10.0, ActionCloseDoor (OBJECT_SELF));
}


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.
____ }
}


Txibi.

Volver arriba


Staff
DM

Registrado: 09 Jul 2004
Mensajes: 408

Publicado: Mie Jul 14, 2004 9:15 pm Asunto:

--------------------------------------------------------------------------------

Ligera modificación

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.
}


Volver arriba


Txibi
Administrador

Registrado: 25 Ene 2004
Mensajes: 1402
Ubicación: Andoain, Gipuzkoa, Euzkadi, España, Europa, Gaia.
Publicado: Mie Jul 14, 2004 9:21 pm Asunto: Saludos.

--------------------------------------------------------------------------------

Saludos.

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.

Txibi.

Volver arriba


Txibi
Administrador

Registrado: 25 Ene 2004
Mensajes: 1402
Ubicación: Andoain, Gipuzkoa, Euzkadi, España, Europa, Gaia.
Publicado: Mie Jul 14, 2004 9:24 pm Asunto: Saludos.

--------------------------------------------------------------------------------

Saludos.

Las palabras reservadas estan en el aurora a la derecha en guiones, de azul.

Las constantes en mayusculas.

A ver si encuentro algo y posteo.

Txibi.

Volver arriba


Staff
DM

Registrado: 09 Jul 2004
Mensajes: 408

Publicado: Mie Jul 14, 2004 9:37 pm Asunto:

--------------------------------------------------------------------------------

En cualquier caso siempre es bueno estructurar, queda mas claro y a las dos semanas puedes entender lo que hicistes

Volver arriba

Uso de Etiquetas en los Articulos.

- Artículo Se permite el uso de HTML, aunque un conjunto reducido de etiquetas:

son:
a
abbr
acronym
address
area
b
big
bockquote
center
cite
code
dfn
div
em
font
h1...h6
img
kbd
li
map
ol
p
pre
s
small
span
strike
strong
style
sub
sup
u
ul

Los guardias...

Publicado: Vie Jul 16, 2004 2:12 am Asunto: Los guardias...

--------------------------------------------------------------------------------

Reox he hecho un copy past de tus guardias de redmoon a los de mi secta....he modificado los puntos de ruta y tal...pero no se por que...no hacen lo que les dices.....sgur que me falta algo..eso de fijo..aver si sabes que puede ser...

ON CONVERSATION

void main(){
string id1 = GetMatchedSubstring(0);
string id2 = GetStringLowerCase(id1);
string nombre = GetName(OBJECT_SELF);
string nombre2 = GetStringLowerCase(nombre);
string orden1 = "vigilad";
string orden2 = "apartaos";
string respuesta0 = "A sus ordenes!!!";
string respuesta1 = "Id tranquilo, nosotros guardaremos la torre.";
string respuesta2 = "Bienvenido a Redmoon.";
int marcador = GetListenPatternNumber();
object jugador = GetLastSpeaker();
location locunoc=GetLocation(GetWaypointByTag("puertaizquierdaRedmoon1"));
location locuno=GetLocation(GetWaypointByTag("puertaizquierdaRedmoon12"));
location locdos=GetLocation(GetWaypointByTag("puertaizquierdaRedmoon2"));

//guardias
if (marcador == 101 && GetIsPC(OBJECT_SELF)==FALSE && id2 == nombre2){
DelayCommand(1.5, SpeakString(respuesta0));
ActionMoveToObject(jugador);
}
//vigilad
if (marcador == 101 && GetIsPC(OBJECT_SELF)==FALSE && id2 == orden1){
ActionMoveToLocation(locuno);
ActionMoveToLocation(locunoc);
DelayCommand(1.5, SpeakString(respuesta1));
}
//apartaos
if (marcador == 101 && GetIsPC(OBJECT_SELF)==FALSE && id2 == orden2){
ActionMoveToLocation(locdos);
DelayCommand(1.5, SpeakString(respuesta2));
}

}//main

--------------------------------------

ON SPAWN

void main(){
SetListening(OBJECT_SELF, TRUE);
SetListenPattern(OBJECT_SELF, "**", 101);
}

PD: Adorar y el lamento ya funcionan...
_________________

------------------------------

Volver arriba


Reox Harpell
Gigante de fuego de Izhar

Registrado: 30 Ene 2004
Mensajes: 529
Ubicación: La Luna Roja
Publicado: Vie Jul 16, 2004 9:39 am Asunto:

--------------------------------------------------------------------------------

Tres pasos de testeo:

1º- Di su nombre (lo que les flota encima del coco), en la demostración que te hice los guardias no venian a mi por decir "Guardias" sino por que estaba diciendo su nombre (por eso los llame guardias).

2º- Configura los puntos de ruta de la siguiente manera:

location locunoc=GetLocation(GetWaypointByTag("puertaizquierdaRedmoon1"));
location locuno=GetLocation(GetWaypointByTag("puertaizquierdaRedmoon12"));
location locdos=GetLocation(GetWaypointByTag("puertaizquierdaRedmoon2"));

puertaizquierdaRedmoon1 ---> punto de ruta situado delante de la puerta
puertaizquierdaRedmoon12 ---> punto de ruta situado un poco retrasado del anterior cuya finalidad es que los guardias se queden de espaldas a la puerta.
puertaizquierdaRedmoon2 ---> punto de ruta situado a los lados de la puerta que es a donde van cuando se apartan

OJO: Los puntos de ruta del guardia de la derecha no son los mismos que los de la izquierda porque tiene que ir en otra dirección evidentemente.
**********
Ahora te voy a enseñar a modificar el codigo para que obezcan otro tipo de ordenes:
partimos de este trozo
Código:
//apartaos
if (marcador == 101 && GetIsPC(OBJECT_SELF)==FALSE && id2 == orden2){
ActionMoveToLocation(locdos);
DelayCommand(1.5, SpeakString(respuesta2));
}

cambiamos las variables y el comentario (la palabra con //)
Código:
//sacrificate
if (marcador == 101 && GetIsPC(OBJECT_SELF)==FALSE && id2 == orden3){
ActionMoveToLocation(loctres);
DelayCommand(1.5, SpeakString(respuesta3));
}

es decir que solo modificamos:
Código:
orden2 ---> orden3
locdos ---> loctres
respuesta2 ---> respuesta3
Ahora añadimos las variables al codigo
Código:
string orden3 = "sacrificate"
string respuesta3 = "Si, amo"
string loctres = "puntodesacrificio"

Con lo que el codigo se nos queda asi:

Código:
void main(){
string orden3 = "sacrificate"
string respuesta3 = "Si, amo"
string loctres = "puntodesacrificio"
string id1 = GetMatchedSubstring(0);
string id2 = GetStringLowerCase(id1);
string nombre = GetName(OBJECT_SELF);
string nombre2 = GetStringLowerCase(nombre);
string orden1 = "vigilad";
string orden2 = "apartaos";
string respuesta0 = "A sus ordenes!!!";
string respuesta1 = "Id tranquilo, nosotros guardaremos la torre.";
string respuesta2 = "Bienvenido a Redmoon.";
int marcador = GetListenPatternNumber();
object jugador = GetLastSpeaker();
location locunoc=GetLocation(GetWaypointByTag("puertaizquierdaRedmoon1"));
location locuno=GetLocation(GetWaypointByTag("puertaizquierdaRedmoon12"));
location locdos=GetLocation(GetWaypointByTag("puertaizquierdaRedmoon2"));

//guardias
if (marcador == 101 && GetIsPC(OBJECT_SELF)==FALSE && id2 == nombre2){
DelayCommand(1.5, SpeakString(respuesta0));
ActionMoveToObject(jugador);
}
//vigilad
if (marcador == 101 && GetIsPC(OBJECT_SELF)==FALSE && id2 == orden1){
ActionMoveToLocation(locuno);
ActionMoveToLocation(locunoc);
DelayCommand(1.5, SpeakString(respuesta1));
}
//apartaos
if (marcador == 101 && GetIsPC(OBJECT_SELF)==FALSE && id2 == orden2){
ActionMoveToLocation(locdos);
DelayCommand(1.5, SpeakString(respuesta2));
}
//sacrificate
if (marcador == 101 && GetIsPC(OBJECT_SELF)==FALSE && id2 == orden3){
ActionMoveToLocation(loctres);
DelayCommand(1.5, SpeakString(respuesta3));
}

}//main

Si ademas lo que queremos es que venga y se arrodille como una puta hacemos lo siguiente:
Código:
string orden4 = "adorame"
string respuesta4 = "Si, amo"
//adorame
if (marcador == 101 && GetIsPC(OBJECT_SELF)==FALSE && id2 == orden4){
ActionMoveToObject(jugador);
DelayCommand(1.5, SpeakString(respuesta4));
int i = 0;
int n = 500;

while (i < n){
AssignCommand(OBJECT_SELF, ActionPlayAnimation(ANIMATION_LOOPING_WORSHIP, 1.0, 6.0));
i++;
}

}

¿DUDAS?
_________________
“...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: Vie Jul 16, 2004 9:47 am Asunto:

--------------------------------------------------------------------------------

Por cierto... me gusta la dinamica que esta tomando esto.
_________________
“...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 10:32 am Asunto:

--------------------------------------------------------------------------------

Cita:
1º- Di su nombre (lo que les flota encima del coco), en la demostración que te hice los guardias no venian a mi por decir "Guardias" sino por que estaba diciendo su nombre (por eso los llame guardias).


Esto es lo que no hice
_________________

------------------------------

Volver arriba


Reox Harpell
Gigante de fuego de Izhar

Registrado: 30 Ene 2004
Mensajes: 529
Ubicación: La Luna Roja
Publicado: Vie Jul 16, 2004 10:48 am Asunto:

--------------------------------------------------------------------------------

¿Necesitas que te modifique eso?
_________________
“...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 10:50 am Asunto:

--------------------------------------------------------------------------------

Ummmm nada que soy un negao, me falta algo seguro porque no vale......donde tendria que poner la etiqueta de los guardias en el script? Lo digo porque supongo que sera la linea de activacion de los guardias..... Este es el script completo que llevan los guardias

Cita:
void main(){
string id1 = GetMatchedSubstring(0);
string id2 = GetStringLowerCase(id1);
string nombre = GetName(OBJECT_SELF);
string nombre2 = GetStringLowerCase(nombre);
string orden1 = "Vigilad";
string orden2 = "Apartaos";
string respuesta0 = "A sus ordenes!!!";
string respuesta1 = "Id tranquilo, nosotros guardaremos el templo.";
string respuesta2 = "Bienvenido a la nuestro hogar.";
int marcador = GetListenPatternNumber();
object jugador = GetLastSpeaker();
location locunoc=GetLocation(GetWaypointByTag("puertaizquierdasecta1"));
location locuno=GetLocation(GetWaypointByTag("puertaizquierdasecta12"));
location locdos=GetLocation(GetWaypointByTag("puertaizquierdasecta2"));

//guardias
if (marcador == 101 && GetIsPC(OBJECT_SELF)==FALSE && id2 == nombre2){
DelayCommand(1.5, SpeakString(respuesta0));
ActionMoveToObject(jugador);
}
//vigilad
if (marcador == 101 && GetIsPC(OBJECT_SELF)==FALSE && id2 == orden1){
ActionMoveToLocation(locuno);
ActionMoveToLocation(locunoc);
DelayCommand(1.5, SpeakString(respuesta1));
}
//apartaos
if (marcador == 101 && GetIsPC(OBJECT_SELF)==FALSE && id2 == orden2){
ActionMoveToLocation(locdos);
DelayCommand(1.5, SpeakString(respuesta2));
}

}//main


Al final lo conseguiras misi...arf
_________________

------------------------------

Volver arriba


Reox Harpell
Gigante de fuego de Izhar

Registrado: 30 Ene 2004
Mensajes: 529
Ubicación: La Luna Roja
Publicado: Vie Jul 16, 2004 10:52 am Asunto:

--------------------------------------------------------------------------------

No es la etiqueta, es su nombre. Es como si mi etiqueta fuera "PJ6969" y mi nombre "Reox Harpell". Lo que tienes ke decir para que se active el script es "Reox Harpell" (lo que sale encima de la cabeza cuando me pones el puntero encima)
_________________
“...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: Vie Jul 16, 2004 10:56 am Asunto:

--------------------------------------------------------------------------------

Quedaria guay que cuando dijeras "Yo soy Misi" se pusieran a adorarte y suplicarte que los perdonaras por no haberte reconocido, en mi largo post sobre como modificar el script explico como hacerlo. Suerte que tu puedes XDD. Al principio es duro no te desanimes.
_________________
“...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 11:04 am Asunto:

--------------------------------------------------------------------------------

juer ya se que pasaba ¬¬ Que al entrar de Dm y estar invisible..no me percibian xDDD

YA funcionan!!!! xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

Gracias reox Ahora a poner lo mismo para los zombis que se destruyan adoren y to de to!!!! Muhaahuahuahuuah
_________________

------------------------------

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 11:06 am Asunto:

--------------------------------------------------------------------------------

Vaya......solo me obedecen cuando les digo Guardias......luego le digo que se aparten y no se apartan o_O Reox quieres que te pase el area y miras tu que co~$€€&& he hecho mal?
_________________

------------------------------

Volver arriba


Reox Harpell
Gigante de fuego de Izhar

Registrado: 30 Ene 2004
Mensajes: 529
Ubicación: La Luna Roja
Publicado: Vie Jul 16, 2004 11:30 am Asunto:

--------------------------------------------------------------------------------

Ok, ¿tienes algun sitio web de donde me pueda descargar el area? sino mandamela a la cuenta de hotmail y rezaremos para que me llegue.
_________________
“...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 11:32 am Asunto:

--------------------------------------------------------------------------------

Te lo mando al correo el area
_________________

------------------------------

Volver arriba


Reox Harpell
Gigante de fuego de Izhar

Registrado: 30 Ene 2004
Mensajes: 529
Ubicación: La Luna Roja
Publicado: Vie Jul 16, 2004 11:33 am Asunto:

--------------------------------------------------------------------------------

Te la devuelvo corregida esta noche que estoy trabajando.
_________________
“...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: Sab Jul 17, 2004 12:35 pm Asunto:

--------------------------------------------------------------------------------

Ya tienen 3 funcionalidades basicas acudir a la llamada, apartarse de la puerta y ponerse delante de ella. Ahora habria ke pensar en otras funciones para poder interpretar una escena de un modo convincente, se me okurren las siguientes:

- Que cuando los cliques con el puntero digan "Solo los que tienen fe pasaran de este punto"

- Que cuando digas "Yo soy nombredelpj" te pidan perdon por no haberte reconocido (reverencias) y se aparten de la puerta.

- Las ordenes estaran limitadas por los objetos de cofradia

- Que el lider pueda decir "Arrestad a nombredelpj" y el pj sea transportado a una silla de la que no pueda levantarse sino dice "juro lealtad a Baa", cada vez que intenta levantarse se vuelve a sentar, un pnj dice "jura lealtad a Baa o muere" y entonces el pnj pulsa una palanca y le cae al pj una columna de fuego (vease mi script de la silla de tortura) que le quita un punto de vida.

Con este sistema se podrian crear una serie de pnj´s capaces de interactuar con los jugadores con los que un dm podria realizar guiadas complejas limitandose a colocar los pnj´s, añadir cosas a las areas y transmitiendo las palabras clave a los jugadores para activar los pnj´s por privado. Es mi opinion.
_________________
“...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."

Script de efectos especiales

Publicado: Jue Jul 15, 2004 4:40 pm Asunto: Script de efectos especiales

--------------------------------------------------------------------------------

Cita:
void main()
{
object oPC = GetEnteringObject();
effect eHammer = EffectVisualEffect( VFX_DUR_PROTECTION_ELEMENTS);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eHammer, oPC);
}

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:

--------------------------------------------------------------------------------

Cita:
Lamento de la Banshee como es en ingles

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:

--------------------------------------------------------------------------------

Al usar el altar con la etiqueta AltarBaa aparece el efecto de el lamento de banshee. Un saludo.

Evento: On Used

Código:
void main(){

location lLoc=GetLocation(GetObjectByTag("AltarBaa"));
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_WAIL_O_BANSHEES),lLoc);

}

_________________
“...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."

Volver arriba


Txibi
Administrador

Registrado: 25 Ene 2004
Mensajes: 1402
Ubicación: Andoain, Gipuzkoa, Euzkadi, España, Europa, Gaia.
Publicado: Jue Jul 15, 2004 9:38 pm Asunto: Saludos.

--------------------------------------------------------------------------------

Saludos.

Hay te ha contestado perfectamente Reox.

Con el location se puede ir aún más, como almacenarlo en una gema la variable para crear perfectamente el hechizo teletransporte.

Txibi.

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 10:01 pm Asunto:

--------------------------------------------------------------------------------

Txibi se refiere a esto:

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:

--------------------------------------------------------------------------------

Cita:
Espero que sirva de ayuda para los que empiezan.

Yo soy un de ellos...y este foro lo visitare cada dia pk siempre he querido algo asi
_________________

------------------------------

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 11:40 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:

--------------------------------------------------------------------------------

Reox ese script no furula...lo acabo d eprobar y no hace nada
_________________

------------------------------

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 11:58 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:

--------------------------------------------------------------------------------

No, el del lamento de la Banshee en el templo de Baa.....
_________________

------------------------------

Volver arriba


Reox Harpell
Gigante de fuego de Izhar

Registrado: 30 Ene 2004
Mensajes: 529
Ubicación: La Luna Roja
Publicado: Vie Jul 16, 2004 12:00 am Asunto:

--------------------------------------------------------------------------------

Etiqueta del punto de ruta: puntoDeAterrizaje

Despiste XDD

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:

--------------------------------------------------------------------------------

No entiendo que decis xD
_________________

------------------------------

Volver arriba


Reox Harpell
Gigante de fuego de Izhar

Registrado: 30 Ene 2004
Mensajes: 529
Ubicación: La Luna Roja
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."

¿Si tio....lo habeis probado vosotros?
_________________

------------------------------

Volver arriba


Reox Harpell
Gigante de fuego de Izhar

Registrado: 30 Ene 2004
Mensajes: 529
Ubicación: La Luna Roja
Publicado: Vie Jul 16, 2004 12:10 am Asunto:

--------------------------------------------------------------------------------

Sip
_________________
“...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."