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 05:00:35
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 |
BenGorre Légende vivante Messages: 301 |
Voila le probleme avec un Maitre des ombres c'est qu'il peut faire le clignotant, et donc placer une attaque sournoise a chaque round en se recachant a chaque fois. C'est injouables pour les autres joueur.
Alors moi j'essaie de faire un script qui limitera la dissimulation en fesant qu'un perso ne puisse pas se redissimuler avant un certain temps(1h). Jai essayer de faire un script(mais comme je debute il marche pas). Voici mon script. NWScript :
void main() { int iTimeBetweenShadow = 1; int iRealtimeMinutes = 1; if (iShadow == STEALTH_MODE_ACTIVATED) { object oShadow = oPlayer; ActionWait(1); int iShadowUser = GetStealthMode(oShadow); if (iShadowUser= STEALTH_MODE_DISABLED) { int iCurrentTime = CurrentTime; int iLastShadowTime = GetLocalInt(oShadow,"REST_HOUR"); int iTimeSinceShadow = iCurrentTime-iLastShadowTime; FloatingTextStringOnCreature("Vous devez attendre 1heure avant de pouvoir vous dissimuler",oShadow); if (iLastShadowTime == 0 || iTimeSinceRest >= iTimeBetweenShadow) { SetLocalInt(oShadow,"REST_ALLOWED", TRUE); } else { SetLocalInt(oShadow,"REST_ALLOWED", FALSE); iTimeUntilShadow = iTimeBetweenShadow-iTimeSinceRest; if (RealTimeMinutes == 1) { iTimeUntilRest = FloatToInt(HoursToSeconds(iTimeUntilRest)/60); if (iTimeUntilShadow == 1) { FloatingTextStringOnCreature("Vous devez attendre avant de pouvoir vous redissimuler",oShadow); } else { FloatingTextStringOnCreature("Vous devez attendre avant de pouvoir vous redissimuler",oShadow); } } else { if (iTimeUntilShadow == 1) { FloatingTextStringOnCreature("Vous devez attendre avant de vous redissimuler",oShadow); } else { FloatingTextStringOnCreature("Vous devez attendre avant de vous redissimuler",oShadow); } } AssignCommand(oShadow, ClearAllActions()); } } } } J'aurais aussi voulut savoir comment on peut editer ou/et creer des fichiers bic. Et si il est possible de faire un script pour monter a une echelle. _________________ La mort n'est rien seul le fait de mourir est terrible Henry Fielding 1745 Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2. |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
En lisant ton script une fois en diagonale, on peut déjà voir quelques petites erreurs de syntaxe :
NWScript :
ActionWait(1); --> La commande ActionWait réclame l'utilisation de nombres flottants, donc il faut mettre 1.0 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. --> Sans doute un bête oubli de ta part, tu avais utilisé la bonne syntaxe avant : il faudrait utiliser l'opérateur de comparaison == au lieu de = tout court. Sinon pour le reste, je suis trop naze pour voir ça maintenant, mais l'idée est excellente : cette classe de prestige est une infâmie rolistique _________________ » Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine » 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII |
Revenir en haut | |
BenGorre Légende vivante Messages: 301 |
Voila jai revu mon script jai fait quelques changements.
Maintenant il me met une erreur sans me donner de ligne "shadowscript.nss: ERREUR : UNDEFINED IDENTIFIER ()" Aidez moi les scripteurs please!!! NWScript :
int iTimeBetweenShadow = 1; int iRealtimeMinutes = 1; int CurrentTime(); void main() { object oPlayer = GetLastKiller(); int iShadow = GetStealthMode(oPlayer); if (iShadow == STEALTH_MODE_ACTIVATED) { object oShadow = oPlayer; ActionWait(1.0); int iShadowUser = GetStealthMode(oShadow); if (iShadowUser== STEALTH_MODE_DISABLED) { int iCurrentTime = CurrentTime(); int iLastShadowTime = GetLocalInt(oShadow,"REST_HOUR"); int iTimeSinceShadow = iCurrentTime-iLastShadowTime; FloatingTextStringOnCreature("Vous devez attendre 1heure avant de pouvoir vous dissimuler",oShadow); if (iLastShadowTime == 0 || iTimeSinceShadow >= iTimeBetweenShadow) { SetLocalInt(oShadow,"REST_ALLOWED", TRUE); } else { SetLocalInt(oShadow,"REST_ALLOWED", FALSE); int iTimeUntilShadow = iTimeBetweenShadow-iTimeSinceShadow; if (iRealtimeMinutes == 1) { iTimeUntilShadow = FloatToInt(HoursToSeconds(iTimeUntilShadow)/60); if (iTimeUntilShadow == 1) { FloatingTextStringOnCreature("Vous devez attendre avant de pouvoir vous redissimuler",oShadow); } else { FloatingTextStringOnCreature("Vous devez attendre avant de pouvoir vous redissimuler",oShadow); } } else { if (iTimeUntilShadow == 1) { FloatingTextStringOnCreature("Vous devez attendre avant de vous redissimuler",oShadow); } else { FloatingTextStringOnCreature("Vous devez attendre avant de vous redissimuler",oShadow); } } AssignCommand(oShadow, ClearAllActions()); } } } } Je cherche toujours: -un script pour une echelle -un script pour faire marcher des PNC au hazard -et le moyen d'editer et/ou creer des fichiers BIC Quand il marchera mon script je le mettrai dans la rubrique scipt des fichiers de la bibliotheque. Je pense que beaucoup de MD en voudront dans leur module. _________________ La mort n'est rien seul le fait de mourir est terrible Henry Fielding 1745 Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2. |
Revenir en haut | |
kiky.le.magnifique Homme très gay Messages: 907 Localisation: Camping de la nation martienne... |
alors tu mets :
int iTimeBetweenShadow = 1; int iRealtimeMinutes = 1; apres le void, pas avant. et tu vire : int CurrentTime(); qui veut rien dire tout seul. et enfin ceci : CurrentTime(); n'eiste pas d'apes mon éditeur, je pense que tu pourrais le remplacer par : int iCurrentTime = GetTimeSecond(); -un script pour une echelle je connais pas, désolé... -un script pour faire marcher des PNC au hazard si tu mets : nw_d2_walkways dans le OnSpawn de créatures, ça devrait marcher... -et le moyen d'editer et/ou creer des fichiers BIC Le petit utilitaire nommé LETO est le seul à pouvoir le faire à ma connaissance... Bon courage pour la suite! _________________ http://perso.wanadoo.fr/kikitor | Deviant Art | www.VistaEntraide.com | CCLLSELFV! | D-lire_K | Viendez rêver au Pays des fées... | Ne taquinez pas l'admin! |
Revenir en haut | |
BenGorre Légende vivante Messages: 301 |
|
Revenir en haut | |
BenGorre Légende vivante Messages: 301 |
bon voila je relance un peu le sujet parce que jai pas vraiment eut daide encore vraiment.
voila jespere que cette fois ci jen aurai. _________________ La mort n'est rien seul le fait de mourir est terrible Henry Fielding 1745 Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2. |
Revenir en haut | |
Mig Novice Messages: 7 |
Bonjour,
je suis pas une grand spécialiste mais j'essaie : je ne comprend pas pourquoi tu ne fait pas ce que te dit kiky.le.magnifique. Mettre la déclaration des 3 variables en dehors du void, les déclare en tant que variables globales. Ce qui ne sert absolument à rien et est source de confusion pour la suite. je pense que int CurrentTime() déclare une fonction qui renvoie un entier. si c'est ce que tu veux faire, il faut alors écrire cette fonction. Si tu cherche une fonction qui te donne l'heure courante tu doit faire un mix des fonctions GetTimeHour(), GetTimeMinute et getTimeSecond. Pour l'echelle, le seul moyen que j'imagine, c est de placer un ActionJumpTo vers un waypoint depuis le OnEnter d'un triggeur placé a coté d'une échelle. Il y a une fonction pour déclencher des mouvements aux hasard(ActionRandomWalk()). tu peux par exemple la mettre sur le Perceive du UserDefined de ton npc. Voila en espérant ne pas avoir dit trop de bétises. |
Revenir en haut | |
BenGorre Légende vivante Messages: 301 |
|
Revenir en haut | |
Muad'Dib Maitre de Dune Grand Chevalier Messages: 124 Localisation: Dans un petit trou de ver des sable a coté de nice |
Pour les faire marcher aux hasard y'a aussi ActionRandomWalk(); que tu pe mettre dans le Hb ou le Onspawn (mais sa s'arrete quand c'est placé dans le Onspawn et qu'on parle o pnj.
_________________ Minsc et Bouh sont prets..*Petits bruits de hamster geant miniature* Rejoignez le Module de Bladur's Gate 2, et jouez sur Dune en arene |
Revenir en haut | |
BenGorre Légende vivante Messages: 301 |
|
Revenir en haut | |
Semcatala Grand Sage du Conseil Messages: 951 |
Bonjour !
Je pense avoir une idée pour ce problême. Le truc qui géne en fait , c'est la classe même de " maitre des ombres " , et bien pourquoi ne pas l'interdire tout simplement ? Si tu cherche a supprimmer le don de dissimulation suprême ( qui est le seul vrai intêret de la classe de maitre des ombres ) alors au passage de niveau , interdit carrément au pj de prendre cette classe ! Comment ? Facile ! Une fois le niveau passé , vérifie si le pj a des niveaux de MdO sur lui , si c'est le cas , enlêve lui des niveaux jusqu'a ce qu'il ai 0 en lv de MdO. _________________ " 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 | |
BenGorre Légende vivante Messages: 301 |
non je ne veut pas supprimer la classe.
et je veut pas non plus suprrimer la dissimulation supreme. je veut juste qu'il faille attendre une heure avant de se redissimuler. alors soit je le fait en script mais il me faut de l'aide et personne n'arrive a me l'apporter soit il faudrait que je modifie le don(par script aussi je crois)soit je modifie le script qui gere le mode dissimulation. si quelqun sait quel fichier gere la dissimulation supreme ou le mode furtif (normal) quil me le dise. _________________ La mort n'est rien seul le fait de mourir est terrible Henry Fielding 1745 Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2. |
Revenir en haut | |
maremick Acolyte Messages: 25 |
Un maître des ombres qui peut plus se cacher devant son adversaire n'en est plus un, comme dit Semcatala, autant supprimer la classe.
|
Revenir en haut | |
BenGorre Légende vivante Messages: 301 |
non mais la plupart de ceux qui jouent maitre des ombres font le clignotant.
je veu pas leur interdire de se cacher devant les ennemis mais juste quil peuvent pas le faire tous les rounds sinonils font que des attaques sournoises et cest injouable _________________ La mort n'est rien seul le fait de mourir est terrible Henry Fielding 1745 Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2. |
Revenir en haut | |
Tzeentsh Ecuyer Messages: 41 |
C'est que tes monstres ne sont pas équilibrés Si le maître des ombres arrive à faire le clignotant devant des orques balourds c'est normal. Qu'il retente devant un monstre possédant vision lucide ou avec un haut score de Détection et il fera moins le fier.
|
Revenir en haut | |
maremick Acolyte Messages: 25 |
En fait t'as raison,le clignotant, c'est surement un peu lourd.
En fait ce qui me plait pas trop dans ton idée, c'est le "une heure" qui m'a l'air un peu long, j'aurai plutôt vu un truc basé sur la distance par rapport au monstre. Ou qu'il ne puisses pas s'il est en combat, comme quant on peut pas parler. Je pense que ce serait mieux. Autrement, t'as raison et bonne chance. [edit] Donc j'ai un peu cherché et j'ai trouvé une solution toute bête. Bon ça fait pas du tout ce que tu veux. Aul ieu d'une heure ce sera un round. Mais c'est déjà ça. A mettre dans un évenement OnPhysicalAttacked de la créature attacquée. NWScript :
void main() { object oPC = GetLastAttacker() if (GetIsInCombat(oPC)==TRUE & GetActionMode(oPC, ACTION_MODE_STEALTH)==TRUE) SetActionMode(oPC, ACTION_MODE_STEALTH, FALSE); } Il faudrait peut être rajouter un petit delai aprés l'affectation de oPC et même surement intégrer le tout dans une boucle. J'ai aussi viré le test OnCombat puisque c'est placé dans le OnAttacked de la créature. NWScript :
void main() { float fRefresh = 1.0; int nMaxBoucle = 10; object oPC = GetLastAttacker() // ActionWait(fRefresh); if (GetClassByPosition(2, oPC)==CLASS_TYPE_SHADOWDANCER | GetClassByPosition(3, oPC)==CLASS_TYPE_SHADOWDANCER) { for (int i=0 ; i<nMaxBoucle; i++) { ActionWait(fRefresh); SetActionMode(oPC, ACTION_MODE_STEALTH, FALSE); } } } Le test de classe est sur deux et trois car on peut pas avoir Shadow Dancer comme classe de base (si ça a un rapport). Et on peut modifier nRefresh et nMaxBoucle pour augmenter le temps et rejoindre un peu ce que tu veux et améloirer l'efficacité. Mon problème c'est que là je peux pas tester et j'essaierai peut-être ce soir chez moi. Et si il y a une Commande qui empêche carement de pouvoir se mettre dans l'ombre, et il y en a surement une que j'ai pas encore trouvé, on peut faire un truc beaucoup plus efficace. |
Revenir en haut | |
BenGorre Légende vivante Messages: 301 |
merci je crois que ca va maider.
en effet 1heure cest long. donc voila je vai faire un script qui gere ca mais pas dans le onAttacked des creatures.(prendre toutes les creatures et mettre ce script cest chiant) je vai donc faire une script qui prend les creatures attaqué et ensuite qui regarde si il s'est recaché avec ton systeme. sinon quil ne puisse se recaché en combat cest bien aussi mais bon. le maitre des ombres doit courir et apres paf dans les ombres. donc voila.je vai my mettre et quand ca marche je le poste. PS:continuez a me donner vos reponses et aides jen aurai besoin. _________________ La mort n'est rien seul le fait de mourir est terrible Henry Fielding 1745 Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2. |
Revenir en haut | |
BenGorre Légende vivante Messages: 301 |
ah tiens jai une idée!!!
et si je prend les persos qui sont en combat, que je test si ils sont caché et si oui je desactive leur cache. je crois que je vai plutot essayer ca. _________________ La mort n'est rien seul le fait de mourir est terrible Henry Fielding 1745 Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2. |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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