Login: Pass:
Rayek



Inscrit le: 30 Nov 2006
Messages: 134
Localisation: (30) Gard - Pont st Esprit
Message Posté le: 12/02/2007 11:24 Sujet du message: Transition de porte dans une même zone
Dans un soucis d'éviter des chargements (lourds) d'une zone, j'ai préféré faire une maison avec plusieurs étages dans une seule zone en utilisant des portes avec le système standard de transition.
Le soucis que je rencontre, c'est quand le personnage à un compagnon animal, familier ou autres, il ne suit pas dans la zone et reste devant la porte que l'on vient de passer.

Est ce que je dois faire un script pour la transition et regardant si le personnage a un compagnon/familier/autres et le forcer à passer à travers ou bien y a-t-il une configuration spéciale à faire sur la porte ?

Je précise que c'est pour un module persistant en ligne donc la transition de groupe est exclue.

Si c'est la première solution, avez vous une idée de script (voir un script ^^) ?

Merci
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé
Amo



Inscrit le: 06 Juil 2006
Messages: 37
Localisation: Paris (pas loin)
Message Posté le: 13/02/2007 4:05 Sujet du message:
Salut,

Je viens de faire des tests plus ou moins satisfaisant ( tout dépend de si tu es exigeant ou pas Razz )

Code:
//Sur le "Script déclenché par l'ouverture" de la porte
void main()
{
object oPJ = GetLastUsedBy();

object oHenchman   = GetHenchman(oPJ);
object oFamilier   = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPJ);
object oInvocation   = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPJ);
object oAnimal     = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPJ);
object oDominer  = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPJ);

object oCible = GetNearestObjectByTag(GetLocalString(OBJECT_SELF, "cible")); //Variable "cible" sur la porte (définit le point de destination)
location lTarget = GetLocation(oCible);

AssignCommand(oPJ, JumpToLocation(lTarget));
AssignCommand(oHenchman, JumpToLocation(lTarget));
AssignCommand(oFamilier, JumpToLocation(lTarget));
AssignCommand(oInvocation, JumpToLocation(lTarget));
AssignCommand(oAnimal, JumpToLocation(lTarget));
AssignCommand(oDominer, JumpToLocation(lTarget));

DelayCommand(5.0, ActionCloseDoor(OBJECT_SELF));
}


C'est relativement chiant a mettre en place etant donnée que c'est avec variable mais il a l'avantage de ne pas être multiplié par le nombre de porte a scripter.

Le script est à placer sur "Script déclenché par l'ouverture"
La variable "cible" type String est à placer sur la porte
Exemple :

Le tag du WP (point de passage) dans la variable est le tag que porte le WP où tu veux que ton joueur (et ses compagnons pnj) soient téléporter.

Les + :
-Ca fonctionne sur NwN1&2 (c'est pour gonflé les points positif ca Razz)
-C'est un script utilisable pour X situations que tu n'auras pas besoin de dupliquer (vive les variables Razz)
-...*réfléchit*... Bon bah... c'est déjà ca hein Razz

Les - :
-C'est sans doute pas la meilleur méthode
-C'est "crade" dans le sens ou les joueurs devront passer un par un, le script s'activant sur le "OnOpen" il faut fermer puis réouvrir la porte pour être téléporter. Donc j'ai ajouter un ActionCloseDoor, ca règle le problème pour un joueur, pour que ce soit utilisable pour le suivant, mais dans le cas où ils souhaitent passer la porte à 4 ou 5... Ca fait un peu "filtrage" boite de nuit ^^ il faut attendre (ou refermer la porte) que la porte se ferme pour réouvrir... un peu chiant. (ok, il en vaut trois ce point négatif, je te l'accorde Razz)

Peut-être que virer le DelayCommand pour la fermeture de la porte serait cool, comme ca paf ca revient a faire un faux GetClickingObject ou bien GetLastUsedBy... Mais c'est moche Sad

Ce script etait cool sur nwn1 du fait qu'on avait des vrai zones de transitions dans nos portes, là c'est un système que j'ai pas encore bien piger... Sad

Voilà. Je met un module de test a dispo, au cas ou...
Si pas a long terme, en dépannage ca peut-être cool.

Bon courage Razz
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
Rayek



Inscrit le: 30 Nov 2006
Messages: 134
Localisation: (30) Gard - Pont st Esprit
Message Posté le: 13/02/2007 12:33 Sujet du message:
Merci pour le script, je testerai cela ce soir ^^

Je pense quand même que je devrais le modifier un peu, car une des portes nécessites une clef (je vais le testé sur le "Script lors de l'utilisation" pour voir ca^^).
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé
Anthraxcite



Inscrit le: 26 Juil 2006
Messages: 94
Message Posté le: 13/02/2007 17:01 Sujet du message:
Pour la destination d'une transition ou d'une porte :

Code:
// Get the destination (a waypoint or a door) for a trigger or a door.
// * Returns OBJECT_INVALID if oTransition is not a valid trigger or door.
object GetTransitionTarget(object oTransition);
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   

Page 1 sur 1
Sauter vers:  

 

Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum

Traduction par : phpBB-fr.com
Powered by phpBB © 2001, 2007 phpBB Group