kowalevskaya

21/06/2009 17:19:07

Para hacer transiciones en pantallas, de modo que los jugadores se partan un poco más los cuernos para dar con la salida de la zona...

Creamos un trigger genérico, donde definimos tres variables. En el OnEnter de ese trigger, poned este script:
[code:1:9d0dba768b]void main()
{
object oPJ = GetEnteringObject();
string sTexto = GetLocalString(OBJECT_SELF, "MENSAJE");
string sDestino = GetLocalString(OBJECT_SELF, "TAG_DESTINO");
float fTiempo = GetLocalFloat(OBJECT_SELF, "TIEMPO");

if (sTexto != "") {FloatingTextStringOnCreature(sTexto, oPJ, FALSE);}

DelayCommand(fTiempo, AssignCommand(oPJ, ClearAllActions(TRUE)));
DelayCommand(fTiempo+0.5, AssignCommand(oPJ, ActionJumpToObject(GetObjectByTag(sDestino), TRUE)));
}[/code:1:9d0dba768b]

Las variables sirven para esto:
MENSAJE: por si quereis que aparezca un texto sobre el jugador antes de saltar de un área a otra.

TAG_DESTINO: etiqueta del punto de ruta de destino (sitio al que salta el PJ)

TIEMPO: tiempo que pasa desde que entra en el trigger hasta que salta a la nueva área de destino.

PD: Quizás haya que retocar un poco el script para que salten también los aliados del PJ, que no he podido probarlo aún.

mviper

24/01/2010 14:17:35

Si por aliados te refieres a "mascotas", si el destino es en otra area, no hay que poenr nada, si es en al misma area, si, hay que decirle que los lleve con el.

Si por el contrario por aliados son el resto de jugadores que van en grupo con el que pasa el area, no lo aconsejo, porque si por lo que sea, uno no esta con el grupo, le teleportaran con el grupo.

Supongo que te refieres a lo primero, de ser asi doy por echoq ue sabemos como hacerlo, si no se diera el caso, me lo dices y lo miro encantado.

Por otro lado, con un pequeño retoque podrias hacer que un solo script, sirva para todos los "saltos", sin necesidad de tener que poner un script a cada uno.

Bueno, edito y pongo el script por si alguien le diera algun uso util:

[quote:13e1410ae9]
void main()
{
object oPC = GetEnteringObject();
string sTag=GetTag(OBJECT_SELF);

sTag=GetStringRight(sTag,3);
object oTarget=GetObjectByTag("PW_trans"+sTag);

object oArea=GetArea(OBJECT_SELF);
object oFam=GetFirstObjectInArea(oArea);

while(oFam!=OBJECT_INVALID)
{
if(GetMaster(oFam)==oPC)AssignCommand(oFam,JumpToObject(oTarget));
oFam=GetNextObjectInArea(oArea);
}

AssignCommand(oPC,ClearAllActions(TRUE));
AssignCommand(oPC,JumpToObject(oTarget));
}
[/quote:13e1410ae9]

Bien, solo hay que tener 2 cosas en cuenta, la priemra es que el script va en el OnEnter del desencadenante generico (el script tambien puede ser usado en puertas y ubicados, poniendolo en el "On.." correspondiente y cambiando la linea donde pone "object oPC=..." por la funcion correcta (si es al usar un ubicado, seria "oPC=GetLastUsedBy();".

La segunda cosa importante, y si no se hace bien, el script no funciona, el punto de ruta donde se teleportara el jugador y sus "mascotas", debe siempre terne por tag, "PW_trans" seguido de 3 digitos (o letras), que seran los mismos 3 digitos (o letras), que los que pondremos al final del tag del desencadenante.

Es decir, si el desencadenante (o ubicado, o puerta etc) se llama "DE_area021" el punto de ruta debe llamarse "PW_trans021". De lo contrario el script no sabria dodne enviarte.

Una ultima cosa, usandos olo este script, sin modificarlo, puedes usarlo para todas las areas, que quieras, soloa segurate, de que no s erepite nigun nombre de los puntos de ruta.