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 21:22:59


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
trenim
Ecuyer
Inscrit le: 24 Aoû 2005
Messages: 64
Localisation: DANS TON C** !!!!
Répondre en citant
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));
}
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.


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


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


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

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


NWScript :
void main()
{
object oPC = GetEnteringObject();
object oWP = GetWaypointByTag("zt_ombre_002");
location lOmbre = GetLocation(oWP);
if(GetLocalInt(oPC,"ombre") == 1)
  ActionJumpToLocation(lOmbre);

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


si vous voyez mes erreurs, aidez moi siouplez Sad


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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Yoyo
Seigneur
Inscrit le: 31 Aoû 2003
Messages: 223
Répondre en citant
Posté le : 24/09/2005 21:38:29 Sujet du message :

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"
}
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.


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));
  }
}
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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
trenim
Ecuyer
Inscrit le: 24 Aoû 2005
Messages: 64
Localisation: DANS TON C** !!!!
Répondre en citant
Posté le : 25/09/2005 09:17:39 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Seth de Sombrelune
Seigneur
Inscrit le: 10 Jan 2005
Messages: 156
Répondre en citant
Posté le : 25/09/2005 10:39:07 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
trenim
Ecuyer
Inscrit le: 24 Aoû 2005
Messages: 64
Localisation: DANS TON C** !!!!
Répondre en citant
Posté le : 25/09/2005 11:38:13 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Seth de Sombrelune
Seigneur
Inscrit le: 10 Jan 2005
Messages: 156
Répondre en citant
Posté le : 25/09/2005 18:56:23 Sujet du message :

ça répond pas à ta question ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
trenim
Ecuyer
Inscrit le: 24 Aoû 2005
Messages: 64
Localisation: DANS TON C** !!!!
Répondre en citant
Posté le : 25/09/2005 20:51:11 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ailesnoires
Grand Chevalier
Inscrit le: 21 Oct 2004
Messages: 110
Localisation: Vendée
Répondre en citant
Posté le : 25/09/2005 23:59:26 Sujet du message :

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 Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lylver
Héros
Inscrit le: 08 Avr 2005
Messages: 274
Répondre en citant
Posté le : 26/09/2005 00:26:51 Sujet du message : passages druidiques

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


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 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 54.157ms