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 16:07:27
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 |
decad7 Acolyte Messages: 22 |
Posté le : 28/04/2004 15:58:02 Sujet du message : Comment faire apparaitre un object dans un coffre ?
Bonjour,
J'aimerais pouvoir faire apparaitre un objet dans un coffre quand un personnage rentre dans une zone. Deplus pour corcer le tout j'ai besoin que l'objet dans le coffre soit différent en fonction de la classe du personnage ayant le plus haut niveau. Merci d'avance. Parce que la je coince franchement... |
Revenir en haut | |
Joubinator Ecuyer Messages: 42 Localisation: Yvelines |
Pourquoi ne pas plutot le OnOpen de ton coffre pour faire apparaitre l'objet dans le coffre. Car les objets dans un coffre ne sont pas visibles de l'exterieur
Voici une base pour créer des objets dans un coffre. Il faudrait ensuite y ajouter des conditions selon la classe des perso... du style : if (classe du perso = Guerrier) Créer tel objet if (classe du perso = Mago) créer tel autre objet etc..... NWScript :
//A placer dans le OnOpen du Contenant //Attention aux tags des objets void main() { CreateItemOnObject(OBJECT_TYPE_ITEM , "objet_que_vous_voulez", OBJECT_SELF, 1); } 2-A placer dans le OnClose du contenant NWScript :
//A placer dans le OnClose du contenant void main() { object item = GetFirstItemInInventory(OBJECT_SELF); while (GetIsObjectValid(item)) // boucle qui vide l'inventaire { DestroyObject(item); item = GetNextItemInInventory(OBJECT_SELF); } } En espérant t'avoir mis sur la bonne voie _________________ M'enfous si les pjs tuent mes monstres,.... j'en ai plein (paroles d'un DM d'expérience ) |
Revenir en haut | |
decad7 Acolyte Messages: 22 |
effectivement je suis d'accord pour ce qui est de la création de l'objet dans le contenant.
déja un problème de résolu. Cependant mon autre problème viens du fait que si un personnage est niveau 8 guerrier et 2 mage. comment je fais pour savoir qu'il a 8 niveau de guerrier et que 2 niveau de mage, afin de mettre un objet interressant pour les guerriers dans le coffre. deplus ce test il faut que je le fasse pour chaque classe ...? mais comment ? Merci encore. |
Revenir en haut | |
Joubinator Ecuyer Messages: 42 Localisation: Yvelines |
J'ai juste le temps de te mettre sur la voie car en plus je n'ai jamais eu à utiliser ces fonctions :
Pour détecter une classe de pj il faut utiliser la fonction : GetLevelByClass(CLASS_TYPE_PALADIN,oPj) > 10 // pour détecter un paladin de niveau 11 et plus ou il exisste aussi GetLevelByPosition(1, oPj) //pour détrecter le niveau de la premiere classe du pj ou #include "NW_I0_GENERIC" // ne pas oublie le include pour cette derniere version GetCharacterLevel(oPj) bon courage mais tu dois tout avoir maintenant _________________ M'enfous si les pjs tuent mes monstres,.... j'en ai plein (paroles d'un DM d'expérience ) |
Revenir en haut | |
decad7 Acolyte Messages: 22 |
J'ai toujours quelques problème.
je n'arrive pas a faire en sorte de savoir qu'elle classe du personnage est la plus haute. Je galère vraiment alors si quelqu'un connait la solution. si vous pouvez m'indiquer la marche a suivre Merci d'avance a tout le monde. et merci a toi Joubinator, j'ai quand même bien avancé. |
Revenir en haut | |
Aladhia Voyageur Messages: 1 |
Bonjour, j'ai fait plusieur recherche un peu sur le net et je trouve pas , je m'essoufle je commence a en avoir marre de chercher lol, alors si quelqun avait une solution pour moi ?
J'ai un monde persistant et je cherche un script a mettre sur mes coffres pour qu'il respawn regulierement sans avoir a faire un reboot du serveur pour que le script de base nw_o2_classmed par exemple soit relancer. Je ne cherche pas a faire reaparaitre une épée +1 par exemple toute les demi heure, mais simplement que le script aleatoire selon la classe la soit relancer dans le contenu du coffre ? Merci d'avance !! |
Revenir en haut | |
Joubinator Ecuyer Messages: 42 Localisation: Yvelines |
Alors Decad7, tu coinces, je ne sais pas si tu as pu actuellement terminer ton script mais je viens de relire le topic et je crois que la solution à ton pb est dans cette commande déjà citée : GetLevelByPosition(1, oPj)
Il me semble cque cette commande rapporte le niveau de la 1° classe du pj. Si tu mets un 2 dans la commande GetLevelByPosition(2, oPj), il se pourrait bien que l'ordi cherche le niveau de la 2° classe du pj ... Comme je n'ai encore jamais utilisé cette commande je ne suis certain de rien, mais bon c'est en cherchant que l'on trouve Donc si j'imagine ton script je le verrai bien constuit comme suit : //D'abord déterminer laquelle des classe à le plus haut niveau int iNiveauClasse1 = GetLevelByPosition(1, oPj); int iNiveauClasse2 = GetLevelByPosition(2, oPj); if (iNiveauClasse1<iNiveauClasse2) { alors ne prendre en compte que la classe correspondant au niveau le plus éléve } else { prendre en compte l'autre classe } Si j'approche de la bonne solution , il ne reste plus qu'a maintenant gere le script comme tu le souhaites car on ne considere plus qu'une seule classe... Je ne puis t'en dire plus, car je ne me suis jamais servi de ces commandes. Par contre cherche avec Aurora des commandes comportent le mot Level, ou Class... y a peut être une commande qui fait ce que tu cherches. (Cherches ces commandes en ayant mis le include #include "NW_I0_GENERIC" ) Bon courage _________________ M'enfous si les pjs tuent mes monstres,.... j'en ai plein (paroles d'un DM d'expérience ) |
Revenir en haut | |
decad7 Acolyte Messages: 22 |
JE vous remerci pour toute l'aide que vous m'apportez.
effectivement je crois que ce script et la seule solution au problème. NWScript :
int iNiveauClasse1 = GetLevelByPosition(1, oPj); int iNiveauClasse2 = GetLevelByPosition(2, oPj); if (iNiveauClasse1<iNiveauClasse2) { alors ne prendre en compte que la classe correspondant au niveau le plus éléve } else { prendre en compte l'autre classe } Mais bon j'ai bien peur que cela face un Script énormément long parcequ'il y a plus de 15 classes de personnages (avec les classes de prestiges) et chaque joueur peut avoir 3 classes de personnage donc déja il faut trouver la classe ayant le plus haut niveau des trois. Puis ensuite trouver de quelle classe il s'agit. soit Plus de 15 controle pour Si c'est la classe 1 puis encore 15 controle si c'est la classe 2 etc... Je fais essayer d'écrire le script mais j'ai peur qu'il ralentisse considérablement pendant un petit temps le jeu. On verra bien ca. Si quelqu'un trouve une autre solution qu'il me le dise. Merci encore @+ |
Revenir en haut | |
Joubinator Ecuyer Messages: 42 Localisation: Yvelines |
voila le script que j'ai fait en m'aidant du Lexicon.
Attention pas testé, donc des fautes peuvent se cacher , cependant l'idée du script me semble conforme à ton besoin. (si quelqu'un à une autre idée qu'il n'hésite pas je ne suis pas succeptible ) NWScript :
void main() { object oPj = GetLastOpener(); int iNiv1 = GetLevelPosition(1,oPj); int iNiv2 = GetLevelPosition(2,oPj); int iNiv3 = GetLevelPosition(3,oPj); if (!GetIsPC(oPj)) return; // si l'ouvreur n'est pas un joueur alors on stoppe le script //Le niveau le plus haut est soit iNiv1, iNiv2 ou iNiv3 if ( iNiv1 >= iNiv2 && iNiv1 >= iNiv3) { int iClassePj = GetClassbyPosition(1,oPj); } if ( iNiv2 >= iNiv1 && iNiv2 >= iNiv3) { int iClassePj = GetClassbyPosition(2,oPj); } if ( iNiv3 >= iNiv1 && iNiv3 >= iNiv2) { int iClassePj = GetClassbyPosition(3,oPj); } // cette variable avec les classes possibles du jeu if (iClassePj == CLASS_TYPE_ARCANE_ARCHER) { alors patati, patata } else if (iClassePj == CLASS_TYPE_BARBARIAN) { alors patati, patata } } Si le script est correct, je te laisse finir le script en complétant les comparaisons selon les classes. Par contre je ne sais pas comment sont gérées les classes de prestiges , je te laisse donc la surprise , toutefois dans le doute la premiere classe que j'ai placer dans le script est celle de l'archer mage. Bonne courage Decad7 _________________ M'enfous si les pjs tuent mes monstres,.... j'en ai plein (paroles d'un DM d'expérience ) |
Revenir en haut | |
decad7 Acolyte Messages: 22 |
Merci pour ce script.
je vais essayer de la faire aujourd'hui et je vous direz si ca marche. je vous le mettrer ici une fois entiérement fini. A tout a l'heure |
Revenir en haut | |
micka Grand Sage du Conseil Messages: 884 Localisation: /dev/null |
decad7 a écrit : //Détermination du niveau le plus haut chez le pj
Pas tout à fait. Ça marche si les 2 (ou 3) plus hautes classes ont des valeurs différentes.
//Le niveau le plus haut est soit iNiv1, iNiv2 ou iNiv3 //La variable iClassePj va réprésenter la classe ayant // le niveau le plus élévé. Dans le cas ou les deux premières classes ont le même nombre de niveaux, cela renvoie arbitrairement la première classe. (oui, je sais, je suis un em...) decad7 a écrit : Par contre je ne sais pas comment sont gérées les classes de
exactement comme pour les autres classes. C'est pour ça que plutôt que d'utiliser les valeurs numériques, je conseille d'utiliser les constantes (celle des 2da) CLASS_TYPE_*, comme dans l'algo montré plus haut d'ailleurs.
prestiges , je te laisse donc la surprise , toutefois dans le doute la premiere classe que j'ai placer dans le script est celle de l'archer mage. Et ajoute un else, c'est toujours plus robuste (il y a toujours des cas non prévus, comme quelqu'un qui se pointera avec un samuraï). Enfin (et surtout), pour un test avec autant de cas, plutôt que des if..else if à la suite, je pense qu'il vaut mieux utiliser des case (switch/case en nwscript) NWScript : switch( iClassePj ) { case CLASS_TYPE_BARBARIAN: // je sais pas moi break; case CLASS_TYPE_ARCANEARCHER: // ? break; ..... default: // tant pis pour lui, il aura rien break; } |
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