La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/09/2024 14:24:49


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
phil76
Héros
Inscrit le: 19 Aoû 2003
Messages: 262
Localisation: Rouen
Répondre en citant
Posté le : 05/11/2003 10:21:14 Sujet du message : script avec PJ non commandable

Dans le script suivant, j'utilise

DelayCommand(0.2,SetCommandable(FALSE,oPC));

puis

DelayCommand(20.0,SetCommandable(TRUE,oPC));

Afin que le PC ne soit plus commandable pendant le script. Mais ça ne fonctionne pas, si je clique avec la souris, cela interrompt le script.
Y a t'il une autre méthodes ?

NWScript :

//:Confused///////////////////////// /////////////////////
//:: FileName ari_gotobed
//:Confused///////////////////////// ////////////////////

// Fonction pour creer une creature
void ActionCreate(string sCreature, location lLoc)
{
    CreateObject(OBJECT_TYPE_CREATURE, sCreature, lLoc);
}


void main()
{
  // declaration des objets Aribeth, PC et fantome de Fentick
  object oAri = GetObjectByTag("Aribeth");
  object oPC = GetPCSpeaker();
  object oFentick = GetObjectByTag("Fentick");
  // oArmor contient le tag de l'armure: Aribethsrobe
  // oSexy = "Aribethsexy" tag de la tenue de nuit
  object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oAri);
  object oBlade = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oAri);
  object oSexy = GetObjectByTag("Aribethsexy");
  object oBed = GetObjectByTag("ARI_BED");
  // oWP est le lit de Aribeth
  object oWP = GetNearestObjectByTag("WP_BED_IN", oAri);

 
  SetLocalObject(oAri,"NW_L_FORMERMASTER", GetMaster(oAri));

 
  // de Aribeth, sPCroom chambre du PC
  string sCorridor = "ARI_TOBED1";
  string sBedroom = "ARI_TOBED2";
  string sPCroom = "PC_TOBED";

 
  string strFentick = "fentick";
  int nObjectType = OBJECT_TYPE_CREATURE;
  int bUseAppearAnimation = TRUE;
 
  location myLocation= GetLocation(GetObjectByTag(sBedroom));

 
  RemoveHenchman(GetMaster(oAri), oAri);

  // Efface la liste d'actions
  AssignCommand(oAri, ClearAllActions());
  AssignCommand(oPC,ClearAllActions());

  // PC non commandable
  DelayCommand(0.2,SetCommandable(FALSE,oPC));

 
  AssignCommand(oPC, ActionWait(1.0));
  AssignCommand(oAri, ActionForceMoveToObject(GetObjectByTag(sCorridor), FALSE, 1.0, 60.0));
  AssignCommand(oPC, ActionForceMoveToObject(GetObjectByTag(sCorridor), FALSE, 1.0, 60.0));
  AssignCommand(oAri, ActionSpeakString("Bonne nuit, mon ami !"));
  AssignCommand(oPC, ActionWait(2.0));
  AssignCommand(oPC, ActionSpeakString("Bonne nuit, Aribeth"));

 
  AssignCommand(oAri, ActionForceMoveToObject(GetObjectByTag(sBedroom), TRUE, 1.0, 60.0));
  AssignCommand(oPC, ActionForceMoveToObject(GetObjectByTag(sPCroom), TRUE, 1.0, 60.0));

 
  AssignCommand(oAri, ActionUnequipItem(oArmor));
  AssignCommand(oAri, ActionUnequipItem(oBlade));
  // Aribeth met sa tenue de nuit
  AssignCommand(oAri, ActionEquipItem(oSexy, INVENTORY_SLOT_CHEST));
  // Aribeth se couche
  AssignCommand(oAri, ClearAllActions());
  AssignCommand(oAri, JumpToObject(oWP));
  DelayCommand(1.0, AssignCommand(oAri, PlayAnimation(ANIMATION_LOOPING_DEAD_FRONT, 1.0, 99999.0)));
  DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_IMP_SLEEP), oAri, 5.0));

  // Apparition du fantome de Fentick
  AssignCommand(oFentick, ActionWait(4.0));
  ActionCreate(strFentick, myLocation);

  // Le PC entend des bruits
  AssignCommand(oPC, ActionSpeakString("(Vous entendez du bruit en provenance de la chambre de Aribeth"));
  AssignCommand(oPC, ActionWait(2.0));
  AssignCommand(oPC, ActionSpeakString("(Aribeth parle quelqu'un"));
  AssignCommand(oPC, ActionWait(2.0));

 
  AssignCommand(oPC, ActionForceMoveToObject(GetObjectByTag(sBedroom), TRUE, 1.0, 60.0));

 
  AssignCommand(oPC, ActionSpeakString("Aribeth: Noon! Fentick ARRETE, tu me fais maaall! Aaahh"));
  AssignCommand(oPC, ActionWait(2.0));
  AssignCommand(oPC, ActionSpeakString("Fentick: Viens Aribeth ! Donnes moi ta vie....tue le...venge toi"));
  AssignCommand(oPC, ActionWait(2.0));
  AssignCommand(oPC, ActionSpeakString("Aribeth: Fentick non, laisse le! Pitie ! Aaaahh ! Noon"));

 
  DelayCommand(20.0, AddHenchman (oPC, oAri));

 
  DelayCommand(20.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.


Autre problème dans ce script, à la fin, le PJ attaque Fentick.
Il y a 4 factions: PJ, Aribeth, Fentick et commoners (pour la faction Fentick, j'ai décoché la case "global")
Ces factions sont toutes amicales entre elles au début.
Quand j'attaque fentick, Aribeth devient hostile, et les commoners (clients de l'auberge) restent amicaux mais viennent voir ce qui se passe dans la chambre.

Comment faire pour que:
1 - seul Fentick devienne hostile ?
2 - les commoners (clients) ne se déplacent pas ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Cassin
Papa-poule(t) & poissard intemporel
Inscrit le: 16 Sep 2002
Messages: 7471
Localisation: 6 bis rue de la Couveuse, Poulailler 39b
Répondre en citant
Posté le : 05/11/2003 11:23:26 Sujet du message : Re: script avec PJ non commandable


phil76 a écrit :
Comment faire pour que:
1 - seul Fentick devienne hostile ?
Si ta faction "Aribeth" est amicale (+ de 75) avec la faction "Fenthick", les PNJ de cette faction réagiront si les PNJ de l'autre faction sont attaqués.
Pour ne pas que ça arrive, met-les en Neutres l'une envers l'autre, ça devrait marcher.
_________________
Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ?

http://cassin1306.spaces.live.com
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
micka
Grand Sage du Conseil
Inscrit le: 29 Aoû 2003
Messages: 884
Localisation: /dev/null
Répondre en citant
Posté le : 05/11/2003 12:30:46 Sujet du message :

Et je pense que les commoners ne se déplacent pas pour voir se qui se passe, mais qu'ils sont hostiles envers Fenthick et Aribeth. Mais les gens du peuple n'attaquent pas, parce qu'il n'ont pas les moyens je pense.
Il ne faut pas qu'ils soient trop amicaux envers les pjs.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
phil76
Héros
Inscrit le: 19 Aoû 2003
Messages: 262
Localisation: Rouen
Répondre en citant
Posté le : 06/11/2003 08:29:58 Sujet du message :

J'ai mis toutes les factions neutres vis à vis des autres et ça marche: Aribeth ne devient pas hostile et les clients de la taverne ne raplique plus dans la chambre quand j'attaque fentick.

Merci Cassin ! Very Happy

Bon il reste l'autre problème: comment empêcher d'interrompre le script ?

Pour moi ce n'est pas un problème, je sais qu'à la fin de la conversation, je ne dois surtout pas toucher à la souris. Mais, bon si je fais un module, j'espère qu'il servira à d'autres que moi ! Smile

Peut être que c'est la période pendant laquelle le PJ est non commandable qui est trop courte ? J'ai mis 20 secondes, je vais augmenter ce délai pour voir.

Ou alors, autre hypothèse: est ce qu'il ne faudrait pas encapsuler le

NWScript :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.


dans un "AssignCommand" ?
 
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 49.342ms