Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Vecteur location

Par Azrael07 le 19/10/2002 à 22:39:31 (#2366006)

je n'arrive pas a convertir un vecteur en une location de facon efficase :

j'ai un vecteur , une orientation de type float, et une area, dont je suis certain de la validité.

puis g ces lignes de code :


location lNewLocation = Location(oNewArea, vNewPosition, fOrientation);

AssignCommand(oCreature, ActionJumpToLocation(lNewLocation));


mais la créature ne bouge pas, je suppose que c la location ki est mal initialisée, pourtant g fait un test avec un vecteur venant directement d'un GetPosition sur un waypoint.

si quelqu'un a deja manipulé les vecteur et peut me venir en aide ca serais cool

Merci merci ^_^

Par miriandel le 20/10/2002 à 0:58:28 (#2366601)

Et ton vecteur vNewPosition, il vaut quoi ?
Comment l'as-tu obtenu, et quelle opération éventuelle fais-tu dessus ?

Si tu veux faire un jump sur un objet connu, tu n'as pas besoin de vecteurs, utilise simplement lNewLocation = GetLocation(objet_de_reference);

Les vecteurs ne servent qu'à opérer des déplacements relatifs à quelque chose, auquel cas tu pourrais avoir:
vNewPosition = vOldPosition + (10 * AngleToVector(fOrientation)); pour obtenir un point éloigné d'un tile dans le sens fOrientation.

Faudrait voir un peu plus de ton code :)

Par Tyn' le 20/10/2002 à 1:03:03 (#2366629)

On peut également définir des vecteurs relatifs au point zéro :

vector vVector = Vector(0.0f,0.0f,0.0f);

Par Azrael07 le 20/10/2002 à 8:57:08 (#2367464)

nanana vous en faites pas je vous ai pas expliqué les détails mais il fo forcement passer par les vecteurs pour ce que je veux faire.

Bon ok je donne mon code.

c'est a mettre sur un trigger qui sert de changement de map
on sort d'une area en un point, on arrive sur l'area de l'autre coté en un meme point. Cela sert a produire une jonction totale des 2 areas


void DoActionChangeArea(object oCreature, object oNewArea)
{
//On recuere la position et l'orientation de la creature qui change d'area
vector vPlayerPosition = GetPosition(oCreature);
float fOrientation = GetFacing(oCreature);

//On deduit, a partir de son orientation de quel cote elle va se deplacer
vector vNewPosition;
if (fOrientation 315.0f)
{
//Les locals float donnent la taille totale de l'area consernee(bon y'a peut etre deja une fonction qui fais ca je sais pas)
//Donc en gros on deduit les coordonnes de la nouvelle position, de l'autre cote dans l'autre area
vNewPosition.x = GetLocalFloat(oNewArea, "SizeX") - 1.000;
vNewPosition.y = vPlayerPosition.y;
vNewPosition.z = vPlayerPosition.z;
}
else if (fOrientation 45.0f)
{
vNewPosition.x = vPlayerPosition.x;
vNewPosition.y = GetLocalFloat(oNewArea, "SizeY") - 1.000;
vNewPosition.z = vPlayerPosition.z;
}
else if (fOrientation 135.0f)
{
vNewPosition.x = 1.000;
vNewPosition.y = vPlayerPosition.y;
vNewPosition.z = vPlayerPosition.z;
}
else if (fOrientation 225.0f)
{
vNewPosition.x = vPlayerPosition.x;
vNewPosition.y = 1.000;
vNewPosition.z = vPlayerPosition.z;
}

//on met tout ca dans une location
location lNewLocation = Location(oNewArea, vNewPosition, fOrientation);

//et on le jump
AssignCommand(oCreature, ActionJumpToLocation(lNewLocation));
}

void main()
{
//On prend les references indispensables
object oCreature = GetEnteringObject();
//Comme ce script va s'appliquer a une quasi totalite de mon module, je ne vais pas le modifier
//pour chaques areatransition, donc tout les localsobject serons initialises dans le OnModuleLoad
object oTargetArea = GetLocalObject(OBJECT_SELF, "TargetingArea");
//On appelle la fonction
DoActionChangeArea( oCreature, GetObjectByTag("Map1"));
}


voila voila, la je vois pas comment mon vecteur peut ne pas etre valide (g vérifié c pas mes variables SizeX et SizeY, donc de la......
Je sais pas trop

Par mobidique le 20/10/2002 à 10:04:34 (#2367577)

Si le but de l'opération est de faire un trigger par coté de la map emmenant sur la map suivante tel que l'on sorte, par exemple, à l'est de la map courante au point de coordonné (max(X),Y) pour arriver à l'ouest en ((min(X),Y) de la map suivante, j'ai bien peur que celà est déjà été fait. Cf. les granges à script existantes. Si non, j'ai rien dit :D

Par Azrael07 le 20/10/2002 à 10:17:26 (#2367616)

oui c vrai que je n'ai pas trop le reflexe de regarder, généralement je vais plus vite pour faire un script moi meme, donc je ne vais pas trop fouiller dans les "granges a scripts".

Merci de m'y faire penser ^_^

Par Amaranthe le 20/10/2002 à 11:10:41 (#2367763)

Seemless Area Transitionner par Jaga Te'lesin.

Je te laisse trouver toi même le lien... mais si tu as un problême je dois avoir le script.

JOL Archives 1.0.1
@ JOL / JeuxOnLine