Problème de téléportation

Répondre
Partager Rechercher
Voilà, j'ai fais un portail, mais il ne veut pas, quand je clique dessus m'envoyer là où je lui ai demandé, voici mon script
Code:
void TeleportObject( string Lioma, string Lioma )
{
object oPlayer = GetPCSpeaker();
object oArea = GetObjectByTag( sZone );
float fOrientation = GetFacing( oPlayer );
vector vPosition = GetPosition( GetObjectByTag( sWayPoint ) );
location lWhereToGo = Location( oArea, vPosition, fOrientation );
 
AssignCommand( oPlayer, JumpToLocation( lWhereToGo ) );
}
Est-ce une fonction incluse dans un script plus complexe ou bien un script directement ?
S'il s'agit d'un script directement, il faut que celui ci ait un "main", remplace donc le void TeleportObject(string Lioma, string Lioma) par void main().

Ensuite sur quel évènement se déclenche ton script ?
Sur le OnConversation d'un PNJ (ou lors d'un dialogue) ou sur le OnUsed d'un placeable ? S'il s'agit du OnUsed d'un placeable, tu dois remplacer : object oPlayer = GetPCSpeaker(); par object oPlayer = GetLastUsedBy();

Certaines de tes variables ne sont pas définies non plus : sZone, sWayPoint mais peut être s'agit il des deux variables passées en paramètre (Lioma) s'il s'agit d'une fonction. (Auquel cas il faut corriger les noms des paramètres).

Le plus simple pour effectuer une téléportation étant de créer, à l'endroit où tu veux que les joueurs soient téléportés, un WayPoint avec un tag unique.

Ensuite dans ton script tu effectues un :
object oWayPoint = GetObjectByTag("<tag de ton waypoint>");
AssignCommand(oPC, JumpToObject(oWayPoint);

Ce qui donne comme script :

Code PHP:

 void main() 
{
// Si le script agit depuis une conversation, modifier dans la ligne ci-dessous le GetLastUsedBy() par GetPCSpeaker()
object oPC GetLastUsedBy();
object oWayPoint GetObjectByTag("<tag de ton waypoint>");
AssignCommand(oPCJumpToObject(oWayPoint);

Tu doit utiliser le OnActiveItem du module et mettre comme caractéristique à ton sceptre "activer objet" que tu trouvera dans "lancer un sort".

Je mettrais un script dans ce genre la.
Code:
void main ()
{
object oPJ = GetItemActivator();
object oItem = GetItemActivated();
object oTarget = GetObjectByTag ("WP_DESTINATION");
string sItemTag = GetTag(oItem);
if(sItemTag == "TAG_DE_TON_SCEPTRE")
(
AssignCommand (oPJ, JumpToObject(oTarget));
)

Un truc dans le genre devrait marcher non ?
Je débute en script aussi alors je ne garantis rien...
Je ne comprend pas pourquoi ça ne marche pas, je regarderais ça a t^te reposé et surtout quand mon scripteur sera là parceque là j'ai beau regarder, reregarder et rereregarder, je bloque devant ce petit bout de code ridicule et ça m'énerve.
Citation :
Publié par K.na
Tu doit utiliser le OnActiveItem du module et mettre comme caractéristique à ton sceptre "activer objet" que tu trouvera dans "lancer un sort".

Je mettrais un script dans ce genre la.
Code:
void main ()
{
object oPJ = GetItemActivator();
object oItem = GetItemActivated();
object oTarget = GetObjectByTag ("WP_DESTINATION");
string sItemTag = GetTag(oItem);
if(sItemTag == "TAG_DE_TON_SCEPTRE")
(
AssignCommand (oPJ, JumpToObject(oTarget));
)

Un truc dans le genre devrait marcher non ?
Je débute en script aussi alors je ne garantis rien...
je crois que les "waypoints" ne sont pas considérés comme des object du moins réels...
passons plutôt par un JumpToLocation :


Code:
void main ()
{
object oPJ = GetItemActivator();
object oItem = GetItemActivated();
Location lieu= GetLocation( GetObjectByTag ("WP_DESTINATION") );
string sItemTag = GetTag(oItem);
if(sItemTag == "TAG_DE_TON_SCEPTRE")
(
AssignCommand (oPJ, JumpToLocation(lieu));
)
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés