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:55:54
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 |
trenim Ecuyer Messages: 64 Localisation: DANS TON C** !!!! |
Posté le : 24/09/2005 20:59:47 Sujet du message : changement de zone par trigger et non par zone de transition
Bonsoir a tous,
J'essaie de faire un script a placer sur un triggers qui teleporte un perso s'il a une certaine variabe... (c'est pas clair...) La variable est definit au cours d'un dialogue. En plus de definir la variable, le dialogue fait bouger le perso jusqu'a un waypoint. J'arrive a faire bouger le perso. Mon probléme est que je ne suis pas sur que ma facon de definir une variable, et de la rappeler est bonne, et je n'arrive pas a faire changer un perso de zone sans passer par une zone de transition. j'ai fais c'est script: celui la ouvre le dialogue ou la variable est definit NWScript :
void main() { object oPc=GetEnteringObject(); AssignCommand(oPc, ActionStartConversation(oPc, "diag_ombreflamme", TRUE, FALSE)); } c'est deux script definissent les variables et bouge le perso au cours du dialogue:(ils sont separer) NWScript :
void main() { object oPC = GetPCSpeaker(); object oWP = GetWaypointByTag("WP_zt_flamme_001"); location lFlamme = GetLocation(oWP); AssignCommand(oPC,ActionMoveToLocation(lFlamme,TRUE)); SetLocalInt(oPC,"flamme",1); } NWScript :
void main() { object oPC = GetPCSpeaker(); object oWP = GetWaypointByTag("WP_zt_ombre_001"); location lOmbre = GetLocation(oWP); AssignCommand(oPC,ActionMoveToLocation(lOmbre,TRUE)); SetLocalInt(oPC,"ombre",1); } c'est deux autres script teleporte le perso vers un WP en fonction de la variable (c'est la que ca coince): NWScript :
void main() { object oPC = GetEnteringObject(); object oWP = GetWaypointByTag("zt_flamme_002"); location lFlamme = GetLocation(oWP); if(GetLocalInt(oPC, "flamme") == 1) ActionJumpToLocation(lFlamme); } NWScript :
void main() { object oPC = GetEnteringObject(); object oWP = GetWaypointByTag("zt_ombre_002"); location lOmbre = GetLocation(oWP); if(GetLocalInt(oPC,"ombre") == 1) ActionJumpToLocation(lOmbre); } si vous voyez mes erreurs, aidez moi siouplez P.S.:voila le bout de mon module qui coince http://trenim.free.fr/test.mod _________________ ON EST DES MARINES !! ON EST NAIT POUR TUER !! C'EST QUOI NOTRE METIER ? TUER TUER TUER !!! |
Revenir en haut | |
Yoyo Seigneur Messages: 223 |
Salut à toi !
Alors... je crois que tu as oublié NWScript :
void main() { object oPC = GetEnteringObject(); object oWP = GetWaypointByTag("zt_ombre_002"); location lOmbre = GetLocation(oWP); if(GetLocalInt(oPC,"ombre") == 1) AssignCommand(oPC, ActionJumpToLocation(lOmbre)); //Ne pas oublier le "AssignCommand" } Parce que dans la cas précédent tu demandait a l'objet (le déclencheur) de se téléporter lui-même mais sinon essaye de mettre : (si sa ne marche pas) NWScript : void main() { object oPC = GetEnteringObject(); object oWP = GetWaypointByTag("zt_ombre_002"); location lOmbre = GetLocation(oWP); if(GetLocalInt(oPC,"ombre") == 1) { AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, ActionJumpToLocation(lOmbre)); } } |
Revenir en haut | |
trenim Ecuyer Messages: 64 Localisation: DANS TON C** !!!! |
Merci, ca marche au poil ^^
Mais est ce que les variable vont rester indefiniment sur le joueur ? meme apres un reebot ? _________________ ON EST DES MARINES !! ON EST NAIT POUR TUER !! C'EST QUOI NOTRE METIER ? TUER TUER TUER !!! |
Revenir en haut | |
Seth de Sombrelune Seigneur Messages: 156 |
tu place ta variable en Local, cela signifie qu'elle restera sur l'objet jusqu'au prochain reboot.
Si tu a besoin de retirer une variable local, utilise la comande DeleteLocal*Int/String/float/object* une fois que tu n'en a plus besoin dans ton script. LEs variables stockées de cette manière seront suprimée lors d'un reboot module. Pour conserver les variable locales elles doivent etre inscrite dans les objet sou aurora lors de la conception du module (onglet avancé puis variable) ou introduite dans une base de données. Dans ce cas on n'utilise plus la comande SetLocal ou GetLocal mais SetCampagning et GetCampagning, l'utilisation est strictement la même si ce n'est que tu stock l'info non plus sur l'objet lui même mais dans un fichier et le module y puise les infos necessaire. |
Revenir en haut | |
trenim Ecuyer Messages: 64 Localisation: DANS TON C** !!!! |
heu...
et sinon, ca vas ? _________________ ON EST DES MARINES !! ON EST NAIT POUR TUER !! C'EST QUOI NOTRE METIER ? TUER TUER TUER !!! |
Revenir en haut | |
Seth de Sombrelune Seigneur Messages: 156 |
ça répond pas à ta question ?
|
Revenir en haut | |
trenim Ecuyer Messages: 64 Localisation: DANS TON C** !!!! |
oui, mais pour l'instant, je vais me contanter de petit setlocal, je ne suis pas encore pret a fair des librairies ou des bases de donées.
Merci quand meme pour l'info. _________________ ON EST DES MARINES !! ON EST NAIT POUR TUER !! C'EST QUOI NOTRE METIER ? TUER TUER TUER !!! |
Revenir en haut | |
Ailesnoires Grand Chevalier Messages: 110 Localisation: Vendée |
le SetCampagning fonction de la même façon que le Set local si ce n'est le lieu de stockage de la variable qui est dans un fichier et lui permet d'être permanent. Pas besoin de s'y connaitre en Base de Données pour cela
|
Revenir en haut | |
lylver Héros Messages: 274 |
Dans le même ordre d'idée, je vous propose un script qui se met sur un déclencheur invisible.
Il s'agit de rendre un effet typique des rodeurs et des druides en forêt, ces classes possédent une connaissance de la nature leur permettant de se déplacer rapidement en certaines circonstances : vous noterez que l'aspect "scout toujours" du rogue n'est pas oublié. NWScript :
//:: ////////////////////////////// //////////////////// //:: changement pour la destination : variable locale "DESTINATION" //:: modification + rapide avec l'editeur en cas de besoin //:: la variable locale n'est utilisee que si elle n'est pas vide ou a valeur defaut //:: utilisation du Tag objet en repli (pour compatibilite avec ancienne version) //:: Updated On: 2005-08-14 By: Lylver //:: ////////////////////////////// //////////////////// //:: sow_guyvel_tran.nss //:: Created On: 05/01/2005 //:: ////////////////////////////// //////////////////// #include "nw_i0_tool" void main() { object oEntered = GetEnteringObject(); string sTag = GetLockKeyTag(OBJECT_SELF) ; // if ( (sTag !="") && (!HasItem(oEntered,sTag )) ) return ; int nCount = 0; int nNature = GetLevelByClass(CLASS_TYPE_DRUID, oEntered) + GetLevelByClass(CLASS_TYPE_RANGER, oEntered) + GetLocalInt(oEntered,GetTag(OBJECT_SELF)); if( (nNature == 0) && ( (GetSkillRank(SKILL_SEARCH, oEntered)+d20())>=StringToInt(sTag) ) ){ SetLocalInt(oEntered,GetTag(OBJECT_SELF),1); SendMessageToPC(oEntered, "" ); } object oPC = GetFirstFactionMember(oEntered) ; while( GetIsObjectValid(oPC) && (nNature==0) ) { if( (GetLevelByClass(CLASS_TYPE_DRUID, oPC)>0 || GetLevelByClass(CLASS_TYPE_RANGER, oPC)>0 || GetLocalInt(oPC,GetTag(OBJECT_SELF))==1 ) && GetObjectSeen(oEntered,oPC) && GetObjectHeard(oEntered,oPC) ){ nNature = 1; break; } oPC = GetNextFactionMember(oEntered) ; } if ( nNature == 0 ) return ; string sDest = GetLocalString(OBJECT_SELF,"DESTINATION"); if( (sDest == "") || (sDest == "DST_TSx_XXXX") ) sDest = "DST_"+GetTag(OBJECT_SELF) ; SendMessageToAllDMs(sDest) ; object oWP = GetObjectByTag(sDest, nCount); while (GetIsObjectValid(oWP)) { oWP = GetObjectByTag(sDest, ++nCount); } oWP = GetObjectByTag(sDest, Random(nCount)); if (!GetIsObjectValid(oWP)) return; else { ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_PIXIEDUST),oEntered,3.0f); DelayCommand(1.0,AssignCommand(oEntered, JumpToObject(oWP))); } } L'include "nw_i0_tool" n'est plus nécessaire sauf si vous désirez réactiver une fonction de "clef" obligatoire qui est en commentaire. Nota Bene : le guide doit faire passer ses compagnons avant qu'il ne traverse lui-même, après, c'est bon, ils auront mémorisé le passage jusqu'au prochain reboot (ou mieux si base de données de persistence) C'est le nom de la clef qui est utilisé pour déterminer la difficulté { StringToInt(GetLockKeyTag(OBJECT_SELF)) } |
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