[Résolu] Forcer un PNJ à s'équiper ou déséquiper d'une arme

Vous trouverez ici les tutoriels et l'entraide sur les outils et techniques de modding spécifiques à Oblivion.
Répondre
Ezinio
Moddeur aspirant
Moddeur aspirant
Messages : 15

Forcer un PNJ à s'équiper ou déséquiper d'une arme

Message par Ezinio »

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.
Avatar du membre
beeratwork
Légende de la Confrérie
Légende de la Confrérie
Messages : 1881

Re: Je sais pas comment faire Oo

Message par beeratwork »

:blanc: 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.
Avatar du membre
Shadow she-wolf
Confrère
Messages : 830
Contact :

Re: Je sais pas comment faire Oo

Message par Shadow she-wolf »

beeratwork a écrit ::blanc: 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.
C'est au PNJ d'équiper/déséquiper son arme.

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
Et inversement quand tu lui demandes de rééquipper son arme:

Code : Tout sélectionner

AddItem WeapIronDagger 1
Après, tu attaches à Toto un script, par exemple TotoScript.
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
C'est très très simple en fait...

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...
Avatar du membre
malhuin
Confrère
Messages : 5774

Re: Je sais pas comment faire Oo

Message par malhuin »

:D c'est très simple, même moi j'ai compris et je suis nul en script. En fait c'est même limpide.
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.
Avatar du membre
beeratwork
Légende de la Confrérie
Légende de la Confrérie
Messages : 1881

Re: Je sais pas comment faire Oo

Message par beeratwork »

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 :

Code : Tout sélectionner

set RefWeapon to GetEquippedObject 16
set NbrWeapon to GetItemCount RefWeapon
RemoveItem RefWeapon NbrWeapon
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...
Avatar du membre
apdji
Légende de la Confrérie
Légende de la Confrérie
Messages : 9868
Contact :

Re: Je sais pas comment faire Oo

Message par apdji »

Dans ce cas, direction la forge cher maitre.
Image

"Pas de coercition ... un peu d'éducation ..." Moorelf
Ezinio
Moddeur aspirant
Moddeur aspirant
Messages : 15

Re: Je sais pas comment faire Oo

Message par Ezinio »

En tout cas merci beaucoup^^ Ca marche bien :)
Répondre

Retourner vers « Modder Oblivion »