La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 22/09/2024 18:39:21


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Yoyo
Seigneur
Inscrit le: 31 Aoû 2003
Messages: 223
Répondre en citant
Posté le : 23/05/2004 17:27:55 Sujet du message : Porte automatique :D

J'explique mon probleme:

Lorsque le PJ marche sur un déclencheur j'aimerais:

1 Qu'on ne puisse plus le controller
2 Qu'il avance tout seul pret d'une porte
3 Que la porte se dévérouille (C'est une porte vérouillée)
4 Que la porte s'ouvre
5 Que le PJ passe la porte (ver un Waypoint situé plus loin)
6 Que la porte se referme
7 Que la porte se revérouille
8 Et Que l'on puisse reprendre le controlle du PJ

Voila Very HappyVery Happy
_________________
BOUH! (je vous ai fait peur ??) désolé

Vive moi
Pas vive Securom
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Mathrim Cauthon
Ecuyer
Inscrit le: 11 Mai 2004
Messages: 54
Répondre en citant
Posté le : 23/05/2004 19:07:37 Sujet du message :

Je dirais qu'il faut:
1) Utiliser SetCutsceneMode pour que le PJ ne soit plus contrôlable
2) AssignCommand(oPC, ActionMoveToObject(GetObjectByTag("tagdelaporte")));
3) Utiliser SetLocked pour déverrouiller la porte
4) et 5) AssignCommand(oPC, ActionMoveToObject(GetWaypointByTag("tagduwaypoint")));
6 et 7) Utiliser un ActionDelay de 5 secondes puis un ActionCloseDoor et un SetLocked
Cool Réutiliser SetCutsceneMode pour que le PJ soit de nouveau contrôlable.
_________________
It's time to toss the dice.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Lunshire
Héros
Inscrit le: 08 Nov 2003
Messages: 259
Localisation: Ben ... Devant mon ordi bien sûr !
Répondre en citant
Posté le : 23/05/2004 20:21:39 Sujet du message :

Sur le OnEnter du trigger

NWScript :
void main()
{
object oPC = GetEnteringObject();
object oWP = GetWaypointByTag("wp_1");//celui pres de la porte
object oWP2 = GetWaypointByTag("wp_2");
object oDoor = GetObjectByTag("tagdelaporte");

if(GetIsPC(oPC))
  {
  DelayCommand(0.5, SetCommandable(FALSE, oPC));
  DelayCommand(1.0, AssignCommand(oPC, ActionMoveToObject(oWP, TRUE)));//le fait avancer jusqu'au WP1
    if (GetLocked(oDoor) == TRUE)
    {
    DelayCommand(2.0, SetLocked(oDoor, FALSE));
    DelayCommand(2.5, AssignCommand(oDoor, ActionOpenDoor(oDoor)));//ouvre la porte
    }
  DelayCommand(3.0, AssignCommand(oPC, ActionMoveToObject(oWP2, TRUE)));//le fait avancer jusqu'au WP2
    if (GetLocked(oDoor) == FALSE)
    {
    DelayCommand(4.0, AssignCommand(oDoor, ActionCloseDoor(oDoor)));//ferme la porte
    DelayCommand(4.5, SetLocked(oDoor, TRUE));
    }
  DelayCommand(5.0, SetCommandable(TRUE,oPC));
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Voilà, après tu adapteras les DelayCommand parce que je pense que ça ne conviendra pas... Au moins ça compile !Embarassed
_________________
Cogito ergo sum.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Mathrim Cauthon
Ecuyer
Inscrit le: 11 Mai 2004
Messages: 54
Répondre en citant
Posté le : 23/05/2004 20:55:25 Sujet du message :

Forcément, dit comme ça, c'est plus clair...
_________________
It's time to toss the dice.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Lunshire
Héros
Inscrit le: 08 Nov 2003
Messages: 259
Localisation: Ben ... Devant mon ordi bien sûr !
Répondre en citant
Posté le : 24/05/2004 10:23:41 Sujet du message :

C'est pas que c'est plus clair, c'est que c'est utilisable imméditemment. Wink Toi aussi, c'était compréhensible, mais si les gens demandent des scripts de ce genre, c'est qu'ils ne savent pas vraiment scripter et donc leur donner des fonctions ne servira à rien puisqu'ils ne pourront pas s'en servir...Wink

Je suis passé par là moi aussi ! Very Happy
_________________
Cogito ergo sum.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Yoyo
Seigneur
Inscrit le: 31 Aoû 2003
Messages: 223
Répondre en citant
Posté le : 24/05/2004 15:43:47 Sujet du message :

Ben en fait il y a comme un ch'ti probleme :
En fait dans mon module le perso active un levier et apres l'avoir activé le perso cours tout seul (effet voulue Cool )vers la porte (en fait vers un waypoint placé sur le déclencheur qui est pres de la porte)
Alors il se passe:

la porte s'ouvre (normale)
MAIS le perso n'avance pas Sad (donc il est du mauvais côtés)
et au bout d'un moment la porte se referme (encore normale MAIS sans que le perso n'aie pus avancer)

Mais si le perso quitte et re-entre dans le déclencheur (sans avoir activé le levier)
Alors il se passe:

la porte s'ouvre ET là, le perso avance vers le waypoint situé plus loin
Et la porte se referme

Donc j'aimerai savoir comment faire pour que des la 1er fois que le perso entre dans le déclencheur (donc en ayant activé le levier) la porte s'ouvre, le perso passe et la porte se referme

Voila Very Happy j'attend vos réponses Smile
_________________
BOUH! (je vous ai fait peur ??) désolé

Vive moi
Pas vive Securom
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Lunshire
Héros
Inscrit le: 08 Nov 2003
Messages: 259
Localisation: Ben ... Devant mon ordi bien sûr !
Répondre en citant
Posté le : 24/05/2004 15:57:51 Sujet du message :

Pourquoi tu ne ferais pas ce que je te propose... Au lieu de mettre ce script sur le trigger, tu supprimes ce trigger, et tu mets le script sur le OnUsed de ton levier... Je pense que ça fonctionnera mieux...

Récapitulons :

NWScript :
////////////////////////////// /////////////////

////////////////////////////// /////////////////

void main()
{
object oPC = GetLastUsedBy();
object oWP = GetWaypointByTag("wp_1");//celui pres de la porte
object oWP2 = GetWaypointByTag("wp_2");
object oDoor = GetObjectByTag("tagdelaporte");

if(GetIsPC(oPC))
{
DelayCommand(0.5, SetCommandable(FALSE, oPC));
DelayCommand(1.0, AssignCommand(oPC, ActionMoveToObject(oWP, TRUE)));//le fait avancer jusqu'au WP1
if (GetLocked(oDoor) == TRUE)
{
DelayCommand(2.0, SetLocked(oDoor, FALSE));
DelayCommand(2.5, AssignCommand(oDoor, ActionOpenDoor(oDoor)));//ouvre la porte
}
DelayCommand(3.0, AssignCommand(oPC, ActionMoveToObject(oWP2, TRUE)));//le fait avancer jusqu'au WP2
if (GetLocked(oDoor) == FALSE)
{
DelayCommand(4.0, AssignCommand(oDoor, ActionCloseDoor(oDoor)));//ferme la porte
DelayCommand(4.5, SetLocked(oDoor, TRUE));
}
DelayCommand(5.0, SetCommandable(TRUE,oPC));
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Et là, je pense que ça doit marcher...
_________________
Cogito ergo sum.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Yoyo
Seigneur
Inscrit le: 31 Aoû 2003
Messages: 223
Répondre en citant
Posté le : 24/05/2004 16:45:35 Sujet du message :

Ben une fois que j'active le levier le perso va au 1er Waypoint et la porte souvre MAIS le perso bouge plus

En fait j'ai trouvé comment il fallait faire

NWScript :
////////////////////////////// /////////////////

////////////////////////////// /////////////////

void main()
{
object oPC = GetLastUsedBy();

object oWP2 = GetWaypointByTag("wp_2");
object oDoor = GetObjectByTag("tagdelaporte");

if(GetIsPC(oPC))
{
DelayCommand(0.5, SetCommandable(FALSE, oPC));

DelayCommand(1.0, AssignCommand(oPC, ActionMoveToObject(oWP2, TRUE)));//le fait avancer
//jusqu'au WP2 (a ajuster selon la longueur qui separe le PC de la porte)


DelayCommand(2.0, SetLocked(oDoor, FALSE));

DelayCommand(2.5, AssignCommand(oDoor, ActionOpenDoor(oDoor)));//ouvre la porte (a ajuster





DelayCommand(4.0, AssignCommand(oDoor, ActionCloseDoor(oDoor)));//ferme la porte
DelayCommand(4.5, SetLocked(oDoor, TRUE));

DelayCommand(5.0, SetCommandable(TRUE,oPC));
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

_________________
BOUH! (je vous ai fait peur ??) désolé

Vive moi
Pas vive Securom
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 1 ¤


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


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 72.41ms