La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/11/2024 05:00:35


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
BenGorre
Légende vivante
Inscrit le: 12 Fév 2004
Messages: 301
Répondre en citant
Posté le : 19/03/2004 19:36:42 Sujet du message : script pour limiter la dissimulation:de l'aide!!!

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());
    }
  }
  }
}

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.


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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 20/03/2004 03:50:02 Sujet du message :

En lisant ton script une fois en diagonale, on peut déjà voir quelques petites erreurs de syntaxe :

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.

--> La commande ActionWait réclame l'utilisation de nombres flottants, donc il faut mettre 1.0

NWScript :
if (iShadowUser= STEALTH_MODE_DISABLED)
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 Laughing
_________________
» 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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
BenGorre
Légende vivante
Inscrit le: 12 Fév 2004
Messages: 301
Répondre en citant
Posté le : 20/03/2004 20:06:27 Sujet du message :

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());
    }
  }
  }
}
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.

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
kiky.le.magnifique
Homme très gay
Inscrit le: 19 Sep 2003
Messages: 907
Localisation: Camping de la nation martienne...
Répondre en citant
Posté le : 20/03/2004 20:56:50 Sujet du message :

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! Very Happy
_________________
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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
BenGorre
Légende vivante
Inscrit le: 12 Fév 2004
Messages: 301
Répondre en citant
Posté le : 31/03/2004 18:25:03 Sujet du message :

Au fait je cherche toujours pour ce script!!!
ya plus personnes qui repond depuis un moment.
_________________
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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
BenGorre
Légende vivante
Inscrit le: 12 Fév 2004
Messages: 301
Répondre en citant
Posté le : 29/04/2004 19:01:51 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Mig
Novice
Inscrit le: 16 Avr 2004
Messages: 7
Répondre en citant
Posté le : 30/04/2004 10:10:07 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
BenGorre
Légende vivante
Inscrit le: 12 Fév 2004
Messages: 301
Répondre en citant
Posté le : 30/04/2004 17:40:40 Sujet du message :

si je relance le truc cest que jai fait ce que Kiky ma dit de faire mais ca ne suffit pas.ca marche pas.
_________________
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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Muad'Dib Maitre de Dune
Grand Chevalier
Inscrit le: 13 Jan 2004
Messages: 124
Localisation: Dans un petit trou de ver des sable a coté de nice
Répondre en citant
Posté le : 02/05/2004 13:09:35 Sujet du message :

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 Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
BenGorre
Légende vivante
Inscrit le: 12 Fév 2004
Messages: 301
Répondre en citant
Posté le : 11/05/2004 11:59:38 Sujet du message :

le probleme en fait cest de definir un pj qui se met en mode furtif apres je crois que cest bon.
_________________
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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Semcatala
Grand Sage du Conseil
Inscrit le: 20 Jan 2004
Messages: 951
Répondre en citant
Posté le : 11/05/2004 17:47:04 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
BenGorre
Légende vivante
Inscrit le: 12 Fév 2004
Messages: 301
Répondre en citant
Posté le : 11/05/2004 18:32:09 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
maremick
Acolyte
Inscrit le: 18 Mai 2004
Messages: 25
Répondre en citant
Posté le : 19/05/2004 09:19:53 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
BenGorre
Légende vivante
Inscrit le: 12 Fév 2004
Messages: 301
Répondre en citant
Posté le : 20/05/2004 10:59:45 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Tzeentsh
Ecuyer
Inscrit le: 01 Déc 2002
Messages: 41
Répondre en citant
Posté le : 20/05/2004 12:34:35 Sujet du message :

C'est que tes monstres ne sont pas équilibrés Wink 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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
maremick
Acolyte
Inscrit le: 18 Mai 2004
Messages: 25
Répondre en citant
Posté le : 25/05/2004 08:29:22 Sujet du message :

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 :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.


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);
        }
    }
}
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.


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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
BenGorre
Légende vivante
Inscrit le: 12 Fév 2004
Messages: 301
Répondre en citant
Posté le : 26/05/2004 15:18:42 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
BenGorre
Légende vivante
Inscrit le: 12 Fév 2004
Messages: 301
Répondre en citant
Posté le : 26/05/2004 15:21:21 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
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


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 60.788ms