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 21:39:47
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 |
Lemli Grand Chevalier Messages: 114 |
Bonjour!
je voudrais faire un regulateur de niveaux dans mon module(comme dans "Contest of Champions")qui permet de fixer un niveaux au joueur: le joueur va voir un mec qui lui dit:"ton niveau est trop faible pour participer.Tu dois etre de niveaux 15.Accepte tu(évidement il dit pas ca si le joueur a plus de 15 niveaux)?"si oui le joueur vois son niveaux augmenter jusqu'à 15,mais évidement le nombre de niveaux ou de XP qu'il gagnera dépendra de son niveaux ou de ses XP d'origine.J' ai essayer de copier les scripts de contest of champion et de les modifier pour arriver à ce résultat mais ca n'a pas marché.Voila,merci pour tout! |
Revenir en haut | |
Enki Légende vivante Messages: 432 |
Bonjour Lemli,
J'ai réglé ton problème en regardant les scripts de contest of champion et en les adaptant à ton cas. D'abord, tu as besoin de deux choses un perso qui est l'hôte du dialogue, et une zone tampon, à partir de laquelle ton perso niveau 15 ou plus se téléportera pour entrer dans le jeu, un waypoint dont le tag est "WP_new_zone" à l'endroit où tu veux que le PC arrive. Voilà le dialogue que j'ai fait, il contient deux branches au début : Les astérisques renvoient à des scripts. [Propriétaire] Ok, c'est bon tu peux passer ! * |_____[Joueur] Merci ! ** [Propriétaire] Salut, <FullName>, ton niveau est trop faible, tu dois être niveau 15, tu veux changer ? *** |_____[Joueur] Oui. |____________[Propriétaire] Par le pouvoir du crâne ancestral, tu détiens la force toute puissante ! **** |______________________[Joueur] AAAAAHH !!!!!! (fin de dialogue). |_____[Joueur] Non. (fin de dialogue). * Dans les conditions mets ce script : NWScript :
int StartingConditional() { // Restriction en fonction de la classe du joueur int iPassed = 0; if(GetHitDice(GetPCSpeaker()) >= 15) iPassed = 1; if(iPassed == 0) return FALSE; return TRUE; } ** dans les conséquences : NWScript :
void main() { object oPC=GetPCSpeaker(); object oZone=GetWaypointByTag("WP_new_zone"); effect eVis=EffectVisualEffect(VFX_FNF_SUMMON_GATE); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis,oPC,3.0f); AssignCommand(oPC,DelayCommand(3.0,JumpToObject(oZone))); } *** dans les conditions : NWScript :
#include "enki_valid_inc" int StartingConditional() { object oPlayer; int nReturnValue, nAllowedLevel; oPlayer = GetPCSpeaker(); nAllowedLevel = GetAllowedLevelForPlayer(oPlayer); SetCustomToken(500,IntToString(nAllowedLevel)); nReturnValue = ValidatePlayer(oPlayer); if ( nReturnValue == VALIDATE_PLAYER_FAILED_LOW_LEVEL || nReturnValue == VALIDATE_PLAYER_FAILED_HIGH_LEVEL ) { return TRUE; } return FALSE; } **** dans les conséquences : NWScript :
#include "enki_valid_inc" void main() { object oPlayer; int nRequiredLevel, nRequiredXP, nXPDelta; effect eVis=EffectVisualEffect(VFX_FNF_PWKILL ); oPlayer = GetPCSpeaker(); nRequiredLevel = GetAllowedLevelForPlayer(oPlayer); nRequiredXP = GetXPRequiredForLevel(nRequiredLevel); nXPDelta = nRequiredXP - GetXP(oPlayer); if ( nXPDelta <= 0 ) { SetXP(oPlayer,nRequiredXP); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis,oPlayer,3.0f); } else { GiveXPToCreature(oPlayer,nXPDelta); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis,oPlayer,3.0f); } } En plus de cela, il te faut 2 includes comme tu as pu le voir. Le premier s'appelle "enki_valid_inc" : NWScript :
/////"enki_valid_inc" ;, a partir de "contest of champion"///////// /////////////////////////de Brenon Holmes//////////////////////// / #include "enki_lvl_include" int VALIDATE_PLAYER_FAILED_HIGH_LEVEL = 1; int VALIDATE_PLAYER_FAILED_LOW_LEVEL = 2; int VALIDATE_PLAYER_SUCCESS = 3; int ValidatePlayer( object oPlayer ); ////////////////////////////// //////////////////// int ValidatePlayer( object oPlayer ) { int nAllowedLevel, nTotalPlayerLevel; int nAllowedXP; nAllowedLevel = GetAllowedLevelForPlayer(oPlayer); if ( nAllowedLevel != LEVEL_LIMIT_NONE ) { nTotalPlayerLevel = GetTotalPlayerLevel(oPlayer); if ( nTotalPlayerLevel > nAllowedLevel ) { return VALIDATE_PLAYER_FAILED_HIGH_LEVEL; } else if ( nTotalPlayerLevel < nAllowedLevel ) { return VALIDATE_PLAYER_FAILED_LOW_LEVEL; } } nAllowedXP = GetXPRequiredForLevel(nAllowedLevel); if ( nAllowedXP != GetXP(oPlayer) ) { SetXP(oPlayer,nAllowedXP); } return VALIDATE_PLAYER_SUCCESS; } Le deuxième s'appelle "enki_lvl_include" : NWScript :
///librairie de fonctions pour attribuer un level a un PC,/// ///a partir de "contest of champion" de Brenon Holmes //// int DEFAULT_NUM_LEVELS = 1; int DEFAULT_LEVEL_RESTRICTION = 15; int LEVEL_LIMIT_NONE = -1; ////////////////////////////// /////////////////////// int GetTotalPlayerLevel( object oPlayer ); int GetAllowedLevelForPlayer( object oPlayer, int bBaseValue = FALSE ); int GetXPRequiredForLevel( int nLevel ); ////////////////////////////// ///////////////// int GetTotalPlayerLevel( object oPlayer ) { return GetHitDice(oPlayer); } ////////////////////////// int GetAllowedLevelForPlayer( object oPlayer, int bBaseValue ) { int nAllowedLevel; nAllowedLevel = GetLocalInt(GetModule(),"m_nAllowedLevel"); if ( bBaseValue == TRUE ) { return nAllowedLevel; } return nAllowedLevel; } ////////////////////////////// //////////// int GetXPRequiredForLevel( int nLevel ) { int nRequiredXP; int nCount; nRequiredXP = 0; for ( nCount = 1; nCount <= nLevel; nCount++ ) { nRequiredXP += 1000 * (nCount - 1); } return nRequiredXP; } Voilà pour les scripts, mais le plus important est d'aller dans les propriétés du module > avancées > Variables : Là, tu place la variable de type int sur ton module comme suit : m_nAllowedLevel int 15 Et voilà, ton système est prêt, bon jeu ! |
Revenir en haut | |
Lemli Grand Chevalier Messages: 114 |
Ca bloque au niveau des includes.D'après le message d'erreur,il faut compiller le script en script conditionnel car il n'y a pas de fonction void main,mais il refuse tout de même de le compiller de cette facon car il n'y a pas non plus de fonction starting conditional...
Voila.Merci beaucoup por ton aide. |
Revenir en haut | |
Enki Légende vivante Messages: 432 |
Salut Lemli,
Cela ne bloque pas au niveau des includes car les includes ne compilent pas. Ce sont des fichiers que l'on inclut dans un script, et c'est le script qui contient l'include qui doit être impérativement compilé. Si tu modifie l'include, tu dois recompiler obligatoirement les script qui l'utilisent. Il ne faut pas tenir compte du message d'erreur d'Aurora sur l'absence de void main() ou sur le fait que ce script n'est pas un starting conditional. Voilà, à plus tard ! |
Revenir en haut | |
Lemli Grand Chevalier Messages: 114 |
J'ai tout refait et ca marche toujours pas!Tu es sûr qu'il n'y a pas un probleme quelque part?Ensuite si on ne compile pas des includes,l'éditeur ne peut pas les reconnaître et les utiliser,si?
|
Revenir en haut | |
Enki Légende vivante Messages: 432 |
Salut, je vais revérifier pour voir si je n'ai pas fait d'erreur.
Par contre, est-ce-que tu as fait attention aux dernières lignes de mon post ce sont les plus importantes: Citation : Il faut aller dans les propriétés du module > avancées > Variables : Là, tu place la variable de type int sur ton module comme suit : m_nAllowedLevel___________int_________ 15 A bientôt ! |
Revenir en haut | |
Lemli Grand Chevalier Messages: 114 |
Ne t'inquiete pas,j'ai compris pour la variable.Ensuite si tu ne trouve pas l'éventuelle erreur ou que je ne trouve pas la mienne,je voudrais alors bien une démo.
Merci beaucoup pour ton aide. |
Revenir en haut | |
Enki Légende vivante Messages: 432 |
Je ne vois pas d'erreur, et j'ai refait un autre module de démo pour voir si j'avais bien "copier-coller" les scripts dans mon post. Envois-moi ton adresse Email par MP et je t'envoie de suite une démo !
A plus. |
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