[RESOLU]Pb d'ouverture de coffre via un script

Répondre
Partager Rechercher
J'ai cherché sur google, sur les forums, j'ai fait des tests ... que dalle, j'y arrive pas.
Alors si une âme charitable a une solution, merci d'avance pour le coup de main.

Voila le soucis:

NWN2 patch 1.05.
J'ai un coffre, il a des scripts sur ses évènements use,open et close.
Dans le use, le script ouvre un dialogue.
Une des options du dialogue permet de demander l'ouverture du coffre.
Cette option a donc une action associée qui declenche un script.

Dans ce script j'ai essayé des trucs du style:

* AssignCommand(oPC,DelayCommand(1.0f,ActionOpenDoor(oChest))); --> joue l'animation
* AssignCommand(oPC,DelayCommand(1.0f,OpenInventory(oChest,oPC))); --> ne fait rien
* OpenInventory(oChest,oPC); --> ne fait rien
* AssignCommand(oPC,DelayCommand(1.0f,ActionInteractObject(oChest))); --> declenche le script use, re dialogue, etc ...

Rien n'y fait, mon PJ ne veut pas ouvrir le coffre.

déjà le coffre ne doit pas être statique (statique sur FALSE) mais bon normalement c'est bien ça

un coffre n'est pas une porte mais un placeable, donc je pense que le script qui devrait fonctionner est celui ci


Code PHP:

AssignCommand (oChestActionPlayAnimation (ANIMATION_PLACEABLE_OPEN)); 

Merci KorTeX, je vais essayer ça ... je te dirais si ça marche.

Sinon, je sais pas si c'était clair, mais je ne cherche pas uniquement à ouvrir le coffre en animation, j'ai aussi besoin que l'inventaire du coffre soit présenté au joueur.
Ce que propose Cortex ne fera que faire jouer l'animation au coffre. Pas le temps de chercher à fond mais voici quelque chose qui fonctionne, seul problème restant le dialogue se rouvre à la fermeture du coffre.

Dans l'action conséquente d'une phrase de dialogue(si tu prends la dernière y a des chances que ça foire).
Code:
void main()
{
	object oPlaceable = OBJECT_SELF;
	SetLocalInt(OBJECT_SELF,"ouvertureok",1);
	AssignCommand(GetPCSpeaker(),ActionInteractObject(oPlaceable));
}
Dans le onused du placeable :
Code:
void main()
{
	int iOuvertureOk = GetLocalInt(OBJECT_SELF,"ouvertureok");
	if(iOuvertureOk!=1)
	{
		ActionStartConversation(GetLastUsedBy()); 
	}
	else
	{
		DeleteLocalInt(OBJECT_SELF,"ouvertureok");
	}
}
Merci Anthraxcite,

Je pensais que le flux d'execution qui "ouvre" le coffre était stoppé après les instructions du script OnUse mais ça ne semble pas être le cas vu que ça marche

Pour éviter la réouverture du dialogue à la fermeture du coffre il suffit de modifier le code de ton OnUse comme ceci:

if(iOuvertureOk==0)
{
...

et de rajouter

SetLocalInt(OBJECT_SELF,"ouvertureok",1);

Dans un OnClose.

Merci encore pour le coup de main.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés