[MicroModule] Inspection de prison

Répondre
Partager Rechercher
Bon, je ne sais pas quand est-ce que j'aurai le temps de rebidouiller NWN. Aussi je vous livre mes derniers travaux. On ne sait jamais, quelqu'un trouvera peut être un truc intéressant à récupérer...

Avis aux joueurs : il n'y a rien à faire . C'est un micro-module de test de script uniquement ; une seule zone.

Si je trouve le temps, je détaillerai les fonctions mais je pense qu'elles sont assez commentées.

Pour les curieux, c'est là

Oups... j'suis très à labourre, je donnerai une desctipion un autre jour, si ma copine ne me truscide pas avant..
__________________
Je n'ai pas de signature pour le moment, veuillez laisser un message...
C'est bon, j'ai survécu...

LE MICRO MODULE DE TEST

Vous arrivez derrière une porte. Vous l'ouvrez et arrivez dans un couloir. Quand les PNJs vous aperçoivent, ils s'empressent d'aller chercher armes et armures, s'en équipent et viennent à votre rencontre...
Une grille vous sépare encore d'eux.

>> évolution prévue : un garde essaye d'ouvrir la porte mais le levier maître est de votre côté, donc lui ne peut pas ouvrir si vous n'activez pas le levier maître...

LES FONCTIONS RAJOUTEES

ActionDoor (string sOrdre, int nMaster=TRUE, int nAll=FALSE)
Mets à jour l'état d'une porte en fonction de l'état du ou des leviers associés.

Tag des leviers associés de la forme : LEVER_[TAG_DE_LA_PORTE]_x
où x = 1 pour le premier levier

Exemple :
Si le tag de la porte est "DOOR", les leviers de la porte sont LEVER_DOOR_1, LEVER_DOOR_2, etc...

- sOrdre : "open" ou "close" - déverrouille et ouvre / ferme et verrouille
- nMaster : ordre "maître" >> l'état des autres leviers est ignoré pour ouvrir ou fermer la porte. nAll est alors inutile.
- nAll : tous les leviers doivent être dans l'état correct pour exécuter l'ordre >> tous désactivés pour fermer / tous activés pour ouvrir.

NOTE : cette fonction a subit bien des évolutions, et je me demande aujourd'hui si nAll est vraiment utile depuis l'implémentation de l'idée "d'ordre maître"...

EXEMPLE D'UTILISATION :
Levier "Maître" un d'un côté d'une porte, levier "Defaut" de l'autre côté.
- le levier maître ouvre et ferme la porte sans ce soucier du levier par défaut.
Code PHP:

ActionDoor ("close"TRUE);
// et
 
ActionDoor ("open"TRUE); 
- le levier par défaut ne peut ouvrir et fermer la porte que si le levier maître est "activé".
Code PHP:

ActionDoor ("close"FALSETRUE);
// et
 
ActionDoor ("open"FALSETRUE); 
Hum... avec un peu de recul, je me dis que cette fonction pourrait être modifiée, grandement améliorée et surtout simplifiée... Bref !

ActionEquipBestArmor ()
Légère variante de "ActionEquipMostEffectiveArmor ()"
Rajoute notamment des jolis effets pour montrer que ça marche et surtout gère quelques variables locales.
>> Evolution : chercher aussi bouclier, capes, anneau, etc...

ActionEquipBestWeapon ()
Idem que ci-dessus pour les armes
NOTE : CETTE FONCTION N'EST PAS FINIE. Ne marche pas à tous les coups. Notamment dans le cas de deux armes et armes à deux mains.

ActionEquipDefaultArmor ()
Le PNJ remet l'armure qu'il avait par défaut.
Nécessite pour bien fonctionner de mettre "InitValues ()" dans le OnSpawn de la creature, pour justement mémoriser son armure par défaut.
>> A tester : si pas d'armure par défaut, enlève-t-il l'armure ?

ActionEquipDefaultWeapon ()
Idem ci-dessus pour les armes.
NOTE : CETTE FONCTION N'EST PAS FINIE... donc elle ne marche pas bien.

ActionGetReadyForCombat (int bFake=FALSE)
Prépare le perso au combat :
- se rue sur le rangement qui lui est associé*
- l'ouvre si le rangement est fermé
- cherche une armure et prend la première qu'il y trouve
- cherche une arme et prend la première qu'il y trouve
- s'équipe de la meilleure armure qu'il a à sa disposition
- s'équipe de la meilleure arme qu'il a à sa disposition

Note :
- la fonction prépare au combat mais ne force pas le combat
- bFake = TRUE : ne fouille pas le rangement dedié. Le PNJ utilise uniquement son propre inventaire pour s'équiper.

ActionTakeEquipmentInInventory (object oWeaponRack)
Action utilisée par "ActionGetReadyForCombat"
Cherche et prend dans l'inventaire de oWeaponRack :
- une et une seule armure
- une et une seule arme

GetWeaponMelee
Equivalent de GetWeaponRanged mais pour une arme de mélé.
A tester plus en profondeur, je crois qu'elle est un peu buggée.

InitActions ()
Pour l'instant pas grand chose... Sur le OnSpawn de la créature, elle ira s'asseoir sur une chaise dédiée.
Tag de la chaise dédiée de la forme "CHAIR_[Tag du PNJ]"

InitValues ()
A placer sur le OnSpawn de la créature pour pouvoir utiliser correctement les actions décrites ci-dessus.
Répondre

Connectés sur ce fil

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