La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 09:59:49
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 |
chevalier blanc Grand Chevalier Messages: 117 Localisation: Sur les Côtes d'Opaline |
Bonjour bonjour
Encore une fois j'ai besoin des services de talentueux scripteurs ^^ Voila mon probleme. J'ai fait une zone sous marine (merci patch 1.67) sur laquelle les pjs pourront aller grace a un casque. Une sorte de casque de respiration aquatique en somme. Si les joueurs ont ce casque en pénétrant dans la zone, ok pas de probleme ils vivront normalement, mais en subissant le frottement de l'eau comme s'ils étaient sous l'effet constamment du sort lenteur. Sinon ils peuvent rester sous l'eau un temps... des messages avertissent les pjs imprudent qu'ils ne vont pas survivre très longtemps sans air sous l'eau, et au bout d'un délai lambda, ils meurent, pouf. Pouvez vous m'aider ? J'aimerais beaucoup faire une sorte de cité engloutie... ce genre de concept de donjon est vraiment intéressant à exploiter Merci d'avance Dernière édition par chevalier blanc le 19/07/2006 18:03:34; édité 3 fois
|
Revenir en haut | |
Charietto Acolyte Messages: 25 |
Sur le NWN vault, cherche dans les mods : Pen and paper la reconstitution du "U3: The final ennemy" par Oraweb.
Celui-ci contient tout une variété de scripts concernant la vie sous-marine (je crois qu'il en existe une version pour NWN de base, et une version avec les extensions). |
Revenir en haut | |
Viduc de Papironda Grand Chevalier Messages: 119 |
|
Revenir en haut | |
Viduc de Papironda Grand Chevalier Messages: 119 |
Oki je t'ai fait un petit truc qui fonctionne:
tu mets ce script dans le onheartbeat de la zone inondée: NWScript :
void main() { object oPC=GetFirstObjectInArea(); while(oPC!=OBJECT_INVALID) { if(GetIsPC(oPC)) { object oCasque=GetItemInSlot(INVENTORY_SLOT_HEAD, oPC); if(oCasque!=OBJECT_INVALID) { effect eEffect1 = EffectVisualEffect(VFX_DUR_PROTECTION_GOOD_MINOR); effect eEffect2 = EffectVisualEffect(VFX_FNF_SMOKE_PUFF); ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEffect1,oPC); ApplyEffectToObject(DURATION_TYPE_INSTANT,eEffect2,oCasque); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectMovementSpeedDecrease(50),oPC , 6.0);//modifie la vitesse du joueur } else { int nTemps=GetLocalInt(oPC,"temps"); int nCons=GetAbilityScore(oPC,ABILITY_CONSTITUTION); int nMax=nCons+20; if(nTemps<nMax/4) { nTemps=nTemps+1; AssignCommand(oPC,ActionSpeakString("vous retenez votre respiration")); DeleteLocalInt(oPC,"temps"); SetLocalInt(oPC,"temps",nTemps); } if((nTemps>=nMax/4)&&(nTemps<nMax/2)) { nTemps=nTemps+1; AssignCommand(oPC,ActionSpeakString("vous avez du mal a reteneir votre respiration")); DeleteLocalInt(oPC,"temps"); SetLocalInt(oPC,"temps",nTemps); } if((nTemps>=nMax/2)&&(nTemps<nMax)) { nTemps=nTemps+1; AssignCommand(oPC,ActionSpeakString("vous suffoquez!!")); DeleteLocalInt(oPC,"temps"); SetLocalInt(oPC,"temps",nTemps); } if(nTemps==nMax) { AssignCommand(oPC,ActionSpeakString("vous mourrez noye!!")); DelayCommand(5.0,ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oPC, 1.0)); } } } oPC=GetNextObjectInArea(); } } Tu donnes un nom à ce script bien sure^^ Tu créés un casque nommé comme tu veux mais avec le tag "vp_casque" (ou autre mais ds ce cas n'oublie pas de le changer dans le script). et tu testes^^... si t'as des pbs ou autre hésites pas.. Viduc _________________ |
Revenir en haut | |
-Nog- Chevalier Messages: 81 |
Viduc de Papironda a écrit : Oki je t'ai fait un petit truc qui fonctionne:
Je me suis jsute permi de corriger quelques fautes tu mets ce script dans le onheartbeat de la zone inondée: NWScript :
void main() { object oPC=GetFirstObjectInArea(); while(oPC!=OBJECT_INVALID) { if(GetIsPC(oPC)) { object oCasque=GetItemInSlot(INVENTORY_SLOT_HEAD, oPC); if(oCasque!=OBJECT_INVALID) { effect eEffect1 = EffectVisualEffect(VFX_DUR_PROTECTION_GOOD_MINOR); effect eEffect2 = EffectVisualEffect(VFX_FNF_SMOKE_PUFF); ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEffect1,oPC); ApplyEffectToObject(DURATION_TYPE_INSTANT,eEffect2,oCasque); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectMovementSpeedDecrease(50),oPC , 6.0);//modifie la vitesse du joueur } else { int nTemps=GetLocalInt(oPC,"temps"); int nCons=GetAbilityScore(oPC,ABILITY_CONSTITUTION); int nMax=nCons+20; if(nTemps<nMax/4) { nTemps=nTemps+1; AssignCommand(oPC,ActionSpeakString("vous retenez votre respiration")); DeleteLocalInt(oPC,"temps"); SetLocalInt(oPC,"temps",nTemps); } if((nTemps>=nMax/4)&&(nTemps<nMax/2)) { nTemps=nTemps+1; AssignCommand(oPC,ActionSpeakString("vous avez du mal a retenir votre respiration")); DeleteLocalInt(oPC,"temps"); SetLocalInt(oPC,"temps",nTemps); } if((nTemps>=nMax/2)&&(nTemps<nMax)) { nTemps=nTemps+1; AssignCommand(oPC,ActionSpeakString("vous suffoquez!!")); DeleteLocalInt(oPC,"temps"); SetLocalInt(oPC,"temps",nTemps); } if(nTemps==nMax) { AssignCommand(oPC,ActionSpeakString("")); DelayCommand(5.0,ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oPC, 1.0)); } } } oPC=GetNextObjectInArea(); } } Tu donnes un nom à ce script bien sure^^ Tu créés un casque nommé comme tu veux mais avec le tag "vp_casque" (ou autre mais ds ce cas n'oublie pas de le changer dans le script). et tu testes^^... si t'as des pbs ou autre hésites pas.. Viduc |
Revenir en haut | |
chevalier blanc Grand Chevalier Messages: 117 Localisation: Sur les Côtes d'Opaline |
Merci beaucoup je teste ca tout de suite
EDIT : Merci merci merci et encore merci ca marche du tonnerre, avec une ou deux modif ça donnera un truc vraiment terrible ! Merci beaucoup **Va se régaler à faire des donjons sous marins** |
Revenir en haut | |
Viduc de Papironda Grand Chevalier Messages: 119 |
|
Revenir en haut | |
Enki Légende vivante Messages: 432 |
Bonjour !
Juste une suggestion mineure pour améliorer l'aspect visuel du script. Il est étrange qu'un perso qui meurt noyé puisse "parler". Au lieu d'utiliser : ActionSpeakString Je vous conseille d'utiliser FloatingTextOnCreature() Mais, après, c'est une question de goût ^^ A bientôt ! |
Revenir en haut | |
Viduc de Papironda Grand Chevalier Messages: 119 |
|
Revenir en haut | |
chevalier blanc Grand Chevalier Messages: 117 Localisation: Sur les Côtes d'Opaline |
Merci Enki pour la proposition, je vais voir ce que ça donne !
|
Revenir en haut | |
P.Patoche Chevalier Messages: 70 Localisation: France 77 |
Bonjour a vous toutes et tous.
Petite question; je ne voie pas ou tu designe le Tag de l'item ( ici le casque ) avec le Tag "vp_casque" , apres essais tu met n'importe quel casque et les effects sont annuler !!!! pas normal je pence. et 2° petite chose l'effect lenteur qui est dit ici NWScript :
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème. ne marche pas si tu es immuniser, peut on faire quelque chose pour que l'effect ce produise meme si tu es immuniser? Patoche. Dernière édition par P.Patoche le 07/07/2006 13:44:40; édité 1 fois
|
Revenir en haut | |
Bhaalthedevil Novice Messages: 10 |
Oui je vois pas non plus où est la référence du tag de l'objet.
Sinon j'ai testé ce script et dans le jeux il se bloque a la premiere phrase :s C'est normal ? |
Revenir en haut | |
chevalier blanc Grand Chevalier Messages: 117 Localisation: Sur les Côtes d'Opaline |
Et m.... je me disais c'était trop beau pour être vrai
Bon le problème du script ci dessus c'est que n'importe quel casque fait l'affaire pour respirer sous l'eau (pratique non ?) et qu'en plus, ceux qui sont immunisés à la lenteur (moines et sort liberté de mouvement etc...) ne sont pas ralentis dans la zone. Donc que faire ? |
Revenir en haut | |
Bhaalthedevil Novice Messages: 10 |
Dit moi est-ce que tu as le même probleme que moi ? car moi le script se bloque a la premiere phrase et ne va pas jusqu'a celle ou le joueur doit mourir
|
Revenir en haut | |
chevalier blanc Grand Chevalier Messages: 117 Localisation: Sur les Côtes d'Opaline |
Non en fait ca se bloque pas c'est la valeur de temps au bout duquel l'asphyxie a lieu qui est égale à 20+constitution (en clair avec une CON a 14 tu tiens 34 round)
D'où la répétition des phrases Diminue la valeur 20 a 10 voire 5 tu verras vite la différence. Mais ça ne résoud pas mon problème de casque et de lenteur... |
Revenir en haut | |
P.Patoche Chevalier Messages: 70 Localisation: France 77 |
Tien rajoute sa ici
NWScript :
else { ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectMovementSpeedDecrease(50),oPC , 6.0); // cette ligne int nTemps=GetLocalInt(oPC,"temps"); int nCons=GetAbilityScore(oPC,ABILITY_CONSTITUTION); int nMax=nCons+20; if(nTemps<nMax/4) /* warning: 1 unclosed block {} */ sa permet d'avoir l'effets même si tu n'as pas le casque ce qui est plus logique, mais sa résous pas le problème du casque. Patoche. |
Revenir en haut | |
Bhaalthedevil Novice Messages: 10 |
J'ai essayé de baisser sa fait rien , et lorsque je met la valeur 1 dans le jeux y'a marqué une erreur :
Citation : Script "Nomduscript",OID:80000003b , Tag , ERREUR : DIVIDE BY ZERO. Et sinon lorsque je rajoute le script de de Patoche çà change rien pour le probleme de la lenteur.
NWScript : /* warning: 1 unclosed block {} */ |
Revenir en haut | |
P.Patoche Chevalier Messages: 70 Localisation: France 77 |
Bonjour, c'est pas
NWScript :
/* warning: 1 unclosed block {} */ qu'il faut rajouter !!!!!!!! mais sa NWScript :
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème. et voila ou il faut le mettre NWScript : void main() { object oPC=GetFirstObjectInArea(); while(oPC!=OBJECT_INVALID) { if(GetIsPC(oPC)) { object oCasque=GetItemInSlot(INVENTORY_SLOT_HEAD, oPC); // vp_casque if(oCasque!=OBJECT_INVALID) { effect eEffect1 = EffectVisualEffect(VFX_DUR_PROTECTION_GOOD_MINOR); effect eEffect2 = EffectVisualEffect(VFX_FNF_SMOKE_PUFF); ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEffect1,oPC); ApplyEffectToObject(DURATION_TYPE_INSTANT,eEffect2,oCasque); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectMovementSpeedDecrease(50),oPC , 6.0); } else { ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectMovementSpeedDecrease(50),oPC , 6.0); // ICI int nTemps=GetLocalInt(oPC,"temps"); int nCons=GetAbilityScore(oPC,ABILITY_CONSTITUTION); int nMax=nCons+20; if(nTemps<nMax/4) { nTemps=nTemps+1; AssignCommand(oPC,ActionSpeakString("vous retenez votre respiration")); DeleteLocalInt(oPC,"temps"); SetLocalInt(oPC,"temps",nTemps); } if((nTemps>=nMax/4)&&(nTemps<nMax/2)) { nTemps=nTemps+1; AssignCommand(oPC,ActionSpeakString("vous avez du mal a retenir votre respiration")); DeleteLocalInt(oPC,"temps"); SetLocalInt(oPC,"temps",nTemps); } if((nTemps>=nMax/2)&&(nTemps<nMax)) { nTemps=nTemps+1; AssignCommand(oPC,ActionSpeakString("vous suffoquez!!")); DeleteLocalInt(oPC,"temps"); SetLocalInt(oPC,"temps",nTemps); } if(nTemps==nMax) { AssignCommand(oPC,ActionSpeakString("")); DelayCommand(5.0,ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oPC, 1.0)); } } } oPC=GetNextObjectInArea(); } } |
Revenir en haut | |
chevalier blanc Grand Chevalier Messages: 117 Localisation: Sur les Côtes d'Opaline |
Ok pas de problème pour moi , mais ça ne résoud toujours pas le problème de casque et de déplacement réduit (voir plus haut)
|
Revenir en haut | |
P.Patoche Chevalier Messages: 70 Localisation: France 77 |
Bon, la je désespère je ne trouve pas du tout comment faire, j'ai voulu intégrer sa,
NWScript :
object oCasque=GetItemInSlot(INVENTORY_SLOT_HEAD, oPC); if(GetArea(oPC) == OBJECT_SELF && GetTag(oCasque) != "vp_casque" /* warning: 1 unclosed parenthesis () */ mais rien y change, alors ci quelqu'un a une idée même minime elle serait la bienvenue !!!! Patoche. |
Revenir en haut | |
chevalier blanc Grand Chevalier Messages: 117 Localisation: Sur les Côtes d'Opaline |
P.Patoche a écrit : Bon, la je désespère je ne trouve pas du tout comment faire, j'ai voulu intégrer sa,
il manquait une parenthese, réessaie voir si ca marche... moi je comprend pas trop la démarche.NWScript :
object oCasque=GetItemInSlot(INVENTORY_SLOT_HEAD, oPC); if(GetArea(oPC)) == OBJECT_SELF && GetTag(oCasque) != "vp_casque" mais rien y change, alors ci quelqu'un a une idée même minime elle serait la bienvenue !!!! Patoche. |
Revenir en haut | |
P.Patoche Chevalier Messages: 70 Localisation: France 77 |
arfff non elle vas la, mais bon juste une erreur dans le copier coller ici
NWScript :
object oCasque=GetItemInSlot(INVENTORY_SLOT_HEAD, oPC); if(GetArea(oPC) == OBJECT_SELF && GetTag(oCasque) != "vp_casque") je cherche juste a faire comprendre a se "maudittrucdem...." de script quel est le "tag du casque", mais comme dab sa veux pas . Patoche. |
Revenir en haut | |
chevalier blanc Grand Chevalier Messages: 117 Localisation: Sur les Côtes d'Opaline |
Ok ok autant pour moi
Je continue à m'arracher les cheveux de mon côté... Si quelqu'un d'autre a une idée qu'il n'hésite pas !!!!!! HELP !!!! |
Revenir en haut | |
Seth de Sombrelune Seigneur Messages: 156 |
en fait il vous faudra plus de script...
En fait il n'existe qu'un seul casque qui permet de respirer sous l'eau, donc il faut se servir de cet élément pour construire ton intrique : Le pj a pas le casque : il manque d'air et meure Le pj a le casque : il a une reserve d'air limité mais ne meure pas. Donc moi j'utiliserait les script du OnEquipeItem et du OnUnequipItem. Le pj met le casque : Tu fixe une variable local sur le casque et sur le pj si le casque a encore une reserve d'air . La variable du casque sert à decompter la reserve d'air , celle du pj te sert à tester s'il a le casque sur la tête. Le pj retire le casque : tu detruit la variable locale du joueur, tu change celle du casque. Lors de ton test, le pj a pas le casque, il meure, la variable du casque arrette de decompter la reserve d'air... Edit : Pour l'effet de ralentissement, avec un spuernaturel effect ou un truc du gent=re, cela ne marche pas ? Je crois que j'avais lu quelque par qu'il y avait un moyen de passer les imunité et autre dons, mais je ne retrouve plus Pour la reserve d'air, tu fait un script sur le HB du casque, il a sa variable à 0, ça arrete le script, sa variable est à 1, le HB decrémente un valeur (1hb toute les 6 secondes), tu fait un ratio par rapport à la durée de temps de ton monde, tu definis ta reserve d'air, quand elle est à 0, le casque suprime la variable "port du casque" du pj. Ensuite tu peux même inventer des bouteiles qui, lors de leurs utilisation rajouteront une durée à ton casque... Je doit modifier mon propre script et j'ai pas trop le temps, mais sinon je veux bien t'aider à jeter quelques bases... _________________ De Tenebris Lumen Fulget....... |
Revenir en haut | |
chevalier blanc Grand Chevalier Messages: 117 Localisation: Sur les Côtes d'Opaline |
Les variables sont nos amies, hein ?
C'est pour ça que j'y arrivait pas ! Parce que j'aime pas les variables et qu'elles me le rendent bien ! Non sans rire je tourne en rond de mon côté, j'arrive même pas à compiler mes essais donc je laisse tomber Ceux qui arrivent mieux que moi lèvent la main EDIT : Citation : En fait il n'existe qu'un seul casque qui permet de respirer sous l'eau, donc il faut se servir de cet élément pour construire ton intrique : en plus je l'avais décrit tout en haut, à croire qu'on s'est mal compris |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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