
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.







La date/heure actuelle est 01/05/2025 04:14:40
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
Djezebel Héros ![]() Messages: 252 |
Bonjour,
Je cherche à faire des pièges mettant en cause le poids des PJ (GetWeight). J'aurais deux propositions de réalisation pour un piège mais je ne sais laquelle adopter. Le but : Un groupe entre dans une salle : la porte d'en face est fermée. S'ils sont assez "lourds" et qu'ils se placent sur le trigger (vers le centre de la salle par exemple), ils activent le mécanisme qui ouvre la porte. J'ai réussi sans problème à faire un script pour un seul joueur, mais là, j'aimerais qu'il y en ait plusieurs... Alors j'ai deux idées : Soit : Première idée : I - Je mets un script sur le on Enter du trigger qui prend le poids de la personne et l'ajoute à une variable locale qui est le poids total sur le trigger. - Sur le OnExit je fais la même chose en soustrayant le poids à la variable... Le problème c'est que si un personnage est sur le trigger et se téléporte, ça fait foirer le script, non ? Deuxième idée alors : II - Sur le OnHearbeat, je fais une boucle qui me dit le premier objet sur le trigger, puis le second, je prends son poids et je le mets dans une variable. Est-ce que ça ne serait pas trop lourd ? Qu'en pensez-vous ? Avez-vous d'autres idées ? |
Revenir en haut | ![]() ![]() ![]() |
Sith Vicious Grand Sage du Conseil ![]() Messages: 693 |
Je crois que ta première idée marche, il me semble que le OnExit va se déclncher même si le joueur se téléporte.
Au pire, tu peux combiner les deux, au lieu de faire la verif dans le heartbeat, tu la fais au moment ou tu vas déclancher l'évenement. (Si le poids est atteint sur la variable, tu recalcule si c'est bien le bon résultat en prenant tous les objets sur le trigger) |
Revenir en haut | ![]() ![]() ![]() |
Djezebel Héros ![]() Messages: 252 |
Effectivement, après teste, même si le joueur se téléporte, il est considéré comme un ExitingObject !
Ca marche donc très bien. Merci beaucoup ! |
Revenir en haut | ![]() ![]() ![]() |
lylver Héros Messages: 274 |
Pour compter le poids total des créatures dans une zone délimitée par un déclencheur :
NWScript :
int TrigWeight(object oTrigger){ object oPC = GetFirstInPersistentObject(oTrigger) ; int nWeight ; while( GetIsObjectValid(oPC) ){ nWeight += GetWeight(oPC) ; oPC = GetNextInPersistentObject(oTrigger) ; } return nWeight ; } void main(){} Sur le OnEnter c'est très bien, on évite le heart-beat. |
Revenir en haut | ![]() ![]() ![]() |
Djezebel Héros ![]() Messages: 252 |
J'ai mis ce script dans le onEnter du Trigger :
NWScript :
void main() { object oPC = GetEnteringObject(); int nPoids = GetWeight(oPC)/10; int nP1 = GetLocalInt(OBJECT_SELF, "poids"); int nP2 = nP1 + nPoids; string sPoids = IntToString(nP2); SetLocalInt(OBJECT_SELF, "poids", nP2); if ( nP2 > 80 ) { FloatingTextStringOnCreature("Bingo !", oPC); } } Et celui-ci dans le OnExit : NWScript :
void main() { object oPC = GetExitingObject(); int nPoids = GetWeight(oPC)/10; int nP1 = GetLocalInt(OBJECT_SELF, "poids"); int nP2 = nP1 - nPoids; SetLocalInt(OBJECT_SELF, "poids", nP2); } Est-ce que c'est moins bien, plus lourd, ou ça peut poser plus de problème ? |
Revenir en haut | ![]() ![]() ![]() |
lylver Héros Messages: 274 |
Cela fonctionne : question performance, je sais pas trop : il faudrait vérifier avec par exemple le profiler nwnx2.
En tout cas je me demande si ca vaut le coup d'optimiser des scripts aussi simples. |
Revenir en haut | ![]() ![]() ![]() |
Sith Vicious Grand Sage du Conseil ![]() Messages: 693 |
A propos de ton script, juste une remarque, GetWeight ne donne que le poids transporté par une créature, tu devrais peut-être rajouter du poids artificiellement en fonction de la taille de la créature qui entre (par exemple, si un mago entre avec son familier, le familier pese 0, pas très logique)
|
Revenir en haut | ![]() ![]() ![]() |
Semcatala Grand Sage du Conseil ![]() Messages: 951 |
Sith Vicious > Et si le familier vole ?
![]() _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | ![]() ![]() ![]() |
Sith Vicious Grand Sage du Conseil ![]() Messages: 693 |
Grrrr
![]() |
Revenir en haut | ![]() ![]() ![]() |
lylver Héros Messages: 274 |
Citation : Description
Effectivement, il faudrait rajouter suivant la race, le sexe ou tout ce qui nous passe par la tête.Returns the weight of an individual item. When used on a creature, returns the weight of all items combined carried by that creature (not the creature's actual weight by itself). |
Revenir en haut | ![]() ![]() ![]() |


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