Yrian

30/05/2013 16:51:35

Hola, yo como siempre con mis dudas jajaja.

Pues probe teleports desde items y funcionan, pero como se hacen si quiero hacerlos desde una conversacion de un item?

Para que el item de conversacion hay un script de base si,

pero como seria para que al responder por ejemplo Si en la conversacion te teleporte?

abria que ponerle en acciones emprendidas en Si, pero como seria el script?

Gracias de antemano

AlthorDeMalavir

30/05/2013 19:08:24

[code:1:4c46a7f1b2]
void main()
{
object oPC = GetPCSpeaker();
object theWaypoint = GetWaypointByTag("TAG");
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oPC);
DelayCommand(2.0, AssignCommand(oPC, JumpToLocation(GetLocation(theWaypoint))));
}
[/code:1:4c46a7f1b2]

"TAG" es la etiqueta de un punto de ruta en el área.

¿Se puede saber en que trabajas? ¿un mundo persistente? ¿una campaña?

Yrian

30/05/2013 19:10:47

Es un mundo persistente

Yrian

30/05/2013 19:17:11

una ultima pregunta en referencia a este punto, como haces para que en vez de teletransportar al personaje que tenga los corazones, transporte a los personajes que esten cerca de el? en el caso de que sea una party, el problema es que a veces hay mas gente en la party, quiero que lleve solamente a los personajes de la party que esten en el area

Cerril

30/05/2013 22:42:37

Tienes varias opciones para teletransportar:

Siguiendo con el ejemplo de althor, que es enviar al personaje a un punto de ruta con una etiqueta especifica puedes trabajar:

Si quieres que te teleportes los personajes que estén a una distancia x del que genera el escript de la conversación seria una cosa así:
[code:1:08d729c055]void main()
{
//El Jugador
object oPC = GetPCSpeaker();

//El objetivo
object oTarget;

//El punto de ruta
object theWaypoint = GetWaypointByTag("TAG");

//Obtiene la posicion del personaje que genero el script
location lTarget = GetLocation(oPC);

//Esta es la distancia maxima a la que seran transportado
float fDistancia = 10.0f;

oTarget = GetFirstObjectInShape(SHAPE_SPHERE, fDistancia, lTarget);
while (GetIsObjectValid(oTarget))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oPC);
DelayCommand(2.0, AssignCommand(oPC, JumpToLocation(GetLocation(theWaypoint))));
oTarget = GetNextObjectInShape(SHAPE_SPHERE, fDistancia, lTarget);
}
}[/code:1:08d729c055]

Si quieres que se teleporten todos los personajes que se encuentren en el mismo área del personaje (solo los amigos)
[code:1:08d729c055]void main()
{
//El Jugador
object oPC = GetPCSpeaker();

//El objetivo
object oTarget;

//El punto de ruta
object theWaypoint = GetWaypointByTag("TAG");

//El area donde esta el que genero el script
object oArea = GetArea(oPC);

oTarget = GetFirstObjectInArea(oArea);
while (GetIsObjectValid(oTarget))
{
if (GetIsFriend(oTarget, oPC))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oPC);
DelayCommand(2.0, AssignCommand(oPC, JumpToLocation(GetLocation(theWaypoint))));
oTarget = GetNextObjectInArea(oArea);
}
}
}[/code:1:08d729c055]

Tanto estos dos, como el de althor, se tienen que poner en una conversación en la sección de acciones emprendidas.

Yrian

30/05/2013 23:11:03

Genial sois los mejores jejeje muchísimas gracias po las ayudas

Yrian

04/06/2013 13:54:34

[quote:1580ef5b2f="Cerril"]

Si quieres que te teleportes los personajes que estén a una distancia x del que genera el escript de la conversación seria una cosa así:
[code:1:1580ef5b2f]void main()
{
//El Jugador
object oPC = GetPCSpeaker();

//El objetivo
object oTarget;

//El punto de ruta
object theWaypoint = GetWaypointByTag("TAG");

//Obtiene la posicion del personaje que genero el script
location lTarget = GetLocation(oPC);

//Esta es la distancia maxima a la que seran transportado
float fDistancia = 10.0f;

oTarget = GetFirstObjectInShape(SHAPE_SPHERE, fDistancia, lTarget);
while (GetIsObjectValid(oTarget))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oPC);
DelayCommand(2.0, AssignCommand(oPC, JumpToLocation(GetLocation(theWaypoint))));
oTarget = GetNextObjectInShape(SHAPE_SPHERE, fDistancia, lTarget);
}
}[/code:1:1580ef5b2f]

Si quieres que se teleporten todos los personajes que se encuentren en el mismo área del personaje (solo los amigos)
[code:1:1580ef5b2f]void main()
{
//El Jugador
object oPC = GetPCSpeaker();

//El objetivo
object oTarget;

//El punto de ruta
object theWaypoint = GetWaypointByTag("TAG");

//El area donde esta el que genero el script
object oArea = GetArea(oPC);

oTarget = GetFirstObjectInArea(oArea);
while (GetIsObjectValid(oTarget))
{
if (GetIsFriend(oTarget, oPC))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oPC);
DelayCommand(2.0, AssignCommand(oPC, JumpToLocation(GetLocation(theWaypoint))));
oTarget = GetNextObjectInArea(oArea);
}
}
}[/code:1:1580ef5b2f]

.[/quote:1580ef5b2f]

he probado las dos, la segunda no funciona me dice demasiadas instrucciones en el log da fallo y no teleporta a nadie.

La primera teletransporta pero solo al usuario principal, a los players de party que estan a 10 metros nada, lo he probado varias veces y no funciona, algo que este mal en esos scripts?

Cerril

04/06/2013 23:45:49

arreglo del segundo script:

[code:1:fe14f1757c]void main()
{
//El Jugador
object oPC = GetPCSpeaker();

//El objetivo
object oTarget;

//El punto de ruta
object theWaypoint = GetWaypointByTag("LOC_secreta");

//El area donde esta el que genero el script
object oArea = GetArea(oPC);

oTarget = GetFirstObjectInArea(oArea);
while (GetIsObjectValid(oTarget))
{
if (GetIsFriend(oTarget, oPC))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oPC);
DelayCommand(2.0, AssignCommand(oPC, JumpToLocation(GetLocation(theWaypoint))));
}
oTarget = GetNextObjectInArea(oArea);
}
}[/code:1:fe14f1757c]

Cerril

04/06/2013 23:52:33

El otro no tengo idea de porque no quiere funcionar :oops:

AlthorDeMalavir

05/06/2013 01:07:48

[code:1:b951689a1e]
void main()
{
//El Jugador
object oPC = GetPCSpeaker();

//El objetivo
object oTarget;

//El punto de ruta
object theWaypoint = GetWaypointByTag("TAG");

//Obtiene la posicion del personaje que genero el script
location lTarget = GetLocation(oPC);

//Esta es la distancia maxima a la que seran transportado
float fDistancia = 10.0f;

oTarget = GetFirstObjectInShape(SHAPE_SPHERE, fDistancia, lTarget);
while (GetIsObjectValid(oTarget))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oPC);
DelayCommand(2.0, AssignCommand(oTarget , JumpToLocation(GetLocation(theWaypoint))));
oTarget = GetNextObjectInShape(SHAPE_SPHERE, fDistancia, lTarget);
}
}
[/code:1:b951689a1e]

esto estaba mal

DelayCommand(2.0, AssignCommand(oPC , JumpToLocation(GetLocation(theWaypoint))));

no es oPC es oTarget, con oPC solo teleporta al PC que hable.

Cerril

05/06/2013 15:16:32

Coño que fallo :oops: :oops:

Pues con el otro pasa idem