Script de téléportation entre zones
void TeleportObject( string sZone, string sWayPoint )
{
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 ) );
}
Explications :
TeleportObject( string sZone, string sWayPoint )
- sZone correspond au tag de la zone où il faut se téléporter.
- sWayPoint correspond à un tag de Waypoint où le personnage atterrira.
Vous pouvez aussi ajouter un argument : object oPlayer et zapper la ligne : object oPlayer = GetPCSpeaker(); vu que je me sers de ce script essentiellement pour une téléportation par dialogue. (très pratique pour tester un module)
- object oArea = GetObjectByTag( sZone ) : on obtient l'objet zone.
- float fOrientation = GetFacing( oPlayer ) : ceci est nécessaire pour la fonction Location. Même si on peut mettre 0.0 comme valeur par défaut.
- vector vPosition = GetPosition( GetObjectByTag( sWayPont ) ) : on crée un vecteur en fonction du Waypoint, cela nous permet de ne pas atterir n'importe où dans la zone : imaginez les dégats si la téléportation menait sur un mur ! (nota: le personnage serait inscruté dans le mur
- location lWhereToGo = Location( oArea, vPosition, fOrientation ) : on stocke la location d'arrivée.
- AssignCommand( oPlayer, JumpToLocation( lWhereToGo ) ) : on se téléporte.
|