[Résolu] Forcer un PNJ à s'équiper ou déséquiper d'une arme
Forcer un PNJ à s'équiper ou déséquiper d'une arme
Bonjour à vous amis moddeurs. J'aimerais créer un script assez compliqué(er). Lorsque je parle(s) au PNJ Y, je lui dis "Rangez votre arme" et j'aimerais qu'il déséquipe son arme. (qu'il passe de épée à main nue). Et lorsque je dis "Sortez votre arme" j'aimerais qu'il passe de main nue à épée. Comment dois-je faire? Aidez moi s'il vous plait^^
Modifié en dernier par Ezinio le 20 juin 2015, 18:08, modifié 4 fois.
- beeratwork
- Légende de la Confrérie
- Messages : 1881
Re: Je sais pas comment faire Oo

Sinon, dans le result script de ta ligne de dialogue, si tu sais quelle est l'arme dans la main du joueur, utilise directement "player.UnequipItem IDArme".
Si ça peut être tout et n'importe quoi, tu devra passer par un script de quête, mettre dans le bloc gamemode un "se fQuestDelayTime to 0.01" par exemple et dans le bloc menumode tu devras vérifier si la ref sur GetEquippedObject 16 est différente de 0, mais je ne sais pas si un "player.unequipitem reference" fonctionne. A mon avis non. Essaye.
- Shadow she-wolf
- Confrère
- Messages : 830
- Contact :
Re: Je sais pas comment faire Oo
C'est au PNJ d'équiper/déséquiper son arme.beeratwork a écrit :Sujet pour la forge.
Sinon, dans le result script de ta ligne de dialogue, si tu sais quelle est l'arme dans la main du joueur, utilise directement "player.UnequipItem IDArme".
Si ça peut être tout et n'importe quoi, tu devra passer par un script de quête, mettre dans le bloc gamemode un "se fQuestDelayTime to 0.01" par exemple et dans le bloc menumode tu devras vérifier si la ref sur GetEquippedObject 16 est différente de 0, mais je ne sais pas si un "player.unequipitem reference" fonctionne. A mon avis non. Essaye.
Donc ça ne se passe pas du tout comme cela.
Le plus simple, c'est que le PNJ ait une unique arme possible (plusieurs armes différentes, c'est tout à fait possible mais plus lourd).
Je vais prendre un exemple: ton PNJ est "Toto". Son arme est WeapIronDagger.
Grosso-modo, dans les Result Script des dialogues, il n'y a rien de bien sorcier à faire: quand tu lui demande de retirer son arme, tu fais:
Code : Tout sélectionner
RemoveItem WeapIronDagger 100
Code : Tout sélectionner
AddItem WeapIronDagger 1
Car en fait, si Toto meurt, il faudra bien retrouver son arme sur lui, c'est plus logique. De même si il se fait attaquer, je suppose qu'il serait bien qu'il récupère son arme pour combattre, donc tu lui met un tel script
Code : Tout sélectionner
scn TotoScript
Begin OnDead ;pour ajouter la dague lorsque Toto meurt alors qu'il n'a pas la dague sur lui
if ( GetItemCount WeapIronDagger == 0 )
AddItem WeapIronDagger 1
endif
End
Begin OnStartCombat ;Pour ajouter la dague lorsque Toto entre en combat
if ( GetItemCount WeapIronDagger == 0 )
AddItem WeapIronDagger 1
endif
End
Par contre, si tu veux que Toto ait plusieurs armes possibles, il faudra utiliser des variables et cetera. C'est un peu plus lourd à gérer, mais rien de bien compliquer tout de même...
Re: Je sais pas comment faire Oo

L'honneur n'est qu'un bien personnel, le plus précieux, certes. Mais l'honneur n'est pas une qualité pour l'exercice de cet art délicat qu'est la guerre.
- beeratwork
- Légende de la Confrérie
- Messages : 1881
Re: Je sais pas comment faire Oo
Oui, moi j'ai lu comme un *** je pensais que c'était au joueur qu'on demandait de se désarmer. Dans le cas des PNJs, c'est lié aux packages, c'est pour ça que Shadow dit de faire un removeitem/additem. Mais dans le cas où c'est pour faire un dialogue général avec des bandits par exemple (la réponse serait non bien sûr), on ne sait pas si le bandit est équippé de la dague en fer ou de la massue d'un mod. Donc vérifier toutes les IDs c'est un truc de barjot, c'est plus simple de se casser la tête avec OBSE :
Hé hé hé, mais je dis de mettre ça dans une quête car c'est généralisable à un max de pnj sans devoir les scripter. Et dans un result script, pas question de jouer avec des déclaration de variable...Tient donc, encore plus simple : utiliser la quête juste pour la déclaration de variable et taper le code dans le result script. Mais attention ! Une fois l'arme retirée, dans ce cas, comme on ne fait pas de pnj scripté, on ne peut pas remettre l'arme au bandit...
Code : Tout sélectionner
set RefWeapon to GetEquippedObject 16
set NbrWeapon to GetItemCount RefWeapon
RemoveItem RefWeapon NbrWeapon
Re: Je sais pas comment faire Oo
Dans ce cas, direction la forge cher maitre.

"Pas de coercition ... un peu d'éducation ..." Moorelf
Re: Je sais pas comment faire Oo
En tout cas merci beaucoup^^ Ca marche bien 
