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 03:43:03
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 |
Josueff Ecuyer Messages: 48 |
Salut les gars j'aimerais si vous avez le temps et si c'est possible de me faire la fusion de ce script car j'ai main et main et main de fois essaye et sans succès
NWScript :
include "in_g_cameramove" void main() { object oPC = GetEnteringObject(); int iXP = GetXP(oPC); object ob1 = GetObjectByTag("ob1"); object ob2 = GetObjectByTag("ob2"); AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND , oPC))); AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_LEFTHAND , oPC))); DelayCommand(0.1,SetCommandable(FALSE,oPC)); DelayCommand(0.1, GestaltCameraMove(0.0, 30.0, 40.0, 260.0, 20.0, 40.0, 24.0, 20.0, oPC, 0)); DelayCommand( 2.0,FloatingTextStringOnCreature("Bienvenue aux Contrees d'Elianor", oPC)); DelayCommand( 5.0,FloatingTextStringOnCreature("Ceci est un server Rp",oPC)); DelayCommand( 5.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oPC)); DelayCommand( 6.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_FREEZE_ANIMATION), oPC)); DelayCommand( 8.0,FloatingTextStringOnCreature("Vous allez arriver dans une ville",oPC)); DelayCommand(11.0,FloatingTextStringOnCreature("nommee",oPC)); DelayCommand(14.0,FloatingTextStringOnCreature("Elianor ",oPC)); DelayCommand(15.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oPC)); DelayCommand(15.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), ob2)); DelayCommand(17.0,FloatingTextStringOnCreature("Vous devrez braver les obstacles vous faire respecter...",oPC)); DelayCommand(16.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_PROTECTION_EVIL_MAJOR), oPC, 8.7)); DelayCommand(23.0,FloatingTextStringOnCreature("Un rappel, pas d'armes en ville !!",oPC)); DelayCommand(24.2, GestaltCameraMove(260.0, 20.0, 30.0, 260.0, 0.0, 30.0, 0.7, 20.0, oPC, 0)); DelayCommand(23.2, SetCommandable(TRUE,oPC)); DelayCommand(23.3, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_BEAM_FIRE_LASH), oPC)); DelayCommand(23.4, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), ob1)); DelayCommand(23.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), ob2)); DelayCommand(23.6, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_BIGBYS_CRUSHING_HAND), oPC)); DelayCommand(23.7, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD), oPC)); DelayCommand(23.8, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_GLOBE_INVULNERABILITY), oPC)); DelayCommand(23.9, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_LIGHT), oPC)); DelayCommand(24.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_MAGIC_RESISTANCE), oPC)); DelayCommand(24.1, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_PARALYZED), oPC)); DelayCommand(24.2, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_SANCTUARY), oPC)); DelayCommand(24.3, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oPC)); DelayCommand(24.4, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_L), oPC)); DelayCommand(26.0, AssignCommand (oPC, ActionJumpToObject(GetObjectByTag("demarrerelianor")))); /* warning: 1 unclosed block {} */ et... NWScript :
void main() { object oPlayer = GetEnteringObject(); object oMT = GetObjectByTag("elianor"); ExploreAreaForPlayer(oMT, oPlayer); } Merci d'avance.... |
Revenir en haut | |
Lavok Légende vivante Messages: 434 Localisation: Sphère planaire |
Josueff a écrit : NWScript :
void main() { object oPC = GetEnteringObject(); // // // object oMT = GetObjectByTag("elianor"); ExploreAreaForPlayer(oMT, oPC); // // // int iXP = GetXP(oPC); object ob1 = GetObjectByTag("ob1"); object ob2 = GetObjectByTag("ob2"); AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND , oPC))); AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_LEFTHAND , oPC))); DelayCommand(0.1,SetCommandable(FALSE,oPC)); DelayCommand(0.1, GestaltCameraMove(0.0, 30.0, 40.0, 260.0, 20.0, 40.0, 24.0, 20.0, oPC, 0)); DelayCommand( 2.0,FloatingTextStringOnCreature("Bienvenue aux Contrees d'Elianor", oPC)); DelayCommand( 5.0,FloatingTextStringOnCreature("Ceci est un server Rp",oPC)); DelayCommand( 5.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oPC)); DelayCommand( 6.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_FREEZE_ANIMATION), oPC)); DelayCommand( 8.0,FloatingTextStringOnCreature("Vous allez arriver dans une ville",oPC)); DelayCommand(11.0,FloatingTextStringOnCreature("nommee",oPC)); DelayCommand(14.0,FloatingTextStringOnCreature("Elianor ",oPC)); DelayCommand(15.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oPC)); DelayCommand(15.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), ob2)); DelayCommand(17.0,FloatingTextStringOnCreature("Vous devrez braver les obstacles vous faire respecter...",oPC)); DelayCommand(16.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_PROTECTION_EVIL_MAJOR), oPC, 8.7)); DelayCommand(23.0,FloatingTextStringOnCreature("Un rappel, pas d'armes en ville !!",oPC)); DelayCommand(24.2, GestaltCameraMove(260.0, 20.0, 30.0, 260.0, 0.0, 30.0, 0.7, 20.0, oPC, 0)); DelayCommand(23.2, SetCommandable(TRUE,oPC)); DelayCommand(23.3, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_BEAM_FIRE_LASH), oPC)); DelayCommand(23.4, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), ob1)); DelayCommand(23.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), ob2)); DelayCommand(23.6, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_BIGBYS_CRUSHING_HAND), oPC)); DelayCommand(23.7, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD), oPC)); DelayCommand(23.8, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_GLOBE_INVULNERABILITY), oPC)); DelayCommand(23.9, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_LIGHT), oPC)); DelayCommand(24.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_MAGIC_RESISTANCE), oPC)); DelayCommand(24.1, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_PARALYZED), oPC)); DelayCommand(24.2, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_SANCTUARY), oPC)); DelayCommand(24.3, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oPC)); DelayCommand(24.4, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_L), oPC)); DelayCommand(26.0, AssignCommand (oPC, ActionJumpToObject(GetObjectByTag("demarrerelianor")))); /* warning: 1 unclosed block {} */ void main () { } de l'un et d'éliminer les doublons (comme oPC) . EDIT : Argh ! J'avais cru voir oPC au lieu de oPlayer dans le deuxième script , d'où grosse confusion ! _________________ ToB : Une seule chose semble certaine : tant que le trône de sang de Bhaal restera vide, le chaos règnera. Moi : Une seule chose semble certaine : tant que la tête de singe de Bush restera vide, le chaos règnera. Dernière édition par Lavok le 24/01/2004 11:35:23; édité 1 fois
|
Revenir en haut | |
Josueff Ecuyer Messages: 48 |
Quand tu me dis les doublons comme oPC c'est a dire enlever tous les oPC????? JE te previens je debutes donc ca peut etre long....
ps: merci de m'aider.Car en fait je veux que tous les effets s'appliquent sur le joueur... |
Revenir en haut | |
Lavok Légende vivante Messages: 434 Localisation: Sphère planaire |
Non, uniquement quand il est déclaré, c'est-à-dire :
object oPC = GetEnteringObject(); On ne peut déclarer deux objets sur le même nom (qu'ils soient identiques ou non d'ailleurs) car alors oPC peut désigner l'un OU l'autre. J'espère avoir été clair . _________________ ToB : Une seule chose semble certaine : tant que le trône de sang de Bhaal restera vide, le chaos règnera. Moi : Une seule chose semble certaine : tant que la tête de singe de Bush restera vide, le chaos règnera. |
Revenir en haut | |
Josueff Ecuyer Messages: 48 |
Et j'enleve toute la ligne où il y a oPC??? ou juste jusqu'au egal???
|
Revenir en haut | |
Age Novice Messages: 14 |
J'ai aussi été confronté au problème, et je pense l'avoir résolu avec la fonction ExecuteScript, qui prend en argument une chaîne représentant le nom du script, ainsi que l'objet qui va exécuter le script, dans ton cas précis, ça donnerait quelque chose du genre :
NWScript :
void main() { ExecuteScript("script1",OBJECT_SELF); object oPlayer = GetEnteringObject(); object oMT = GetObjectByTag("elianor"); ExploreAreaForPlayer(oMT, oPlayer); } Bien entendu, tu peux faire le contraire, ou même créé un troisième script : NWScript : void main() { //et le second script2 ExecuteScript("script1",OBJECT_SELF); ExecuteScript("script2",OBJECT_SELF); } |
Revenir en haut | |
Josueff Ecuyer Messages: 48 |
Bon je vais essayer ca mais ce n'est pas sur un objet que je veux creer ca c'est dans le OnEnter de la zone...Je veux faire une fusion de la carte visible et d'un message d'entre sur le module qui apparait au dessus du joueur( j'ai pris ca dans un module de Longbow qui est vraiment super...) si quelqu'un me fait la fusion apres je comprendrais....Je saurais ce qu'il faut enlever etc...Ou c'est moi qui divague
|
Revenir en haut | |
Age Novice Messages: 14 |
Quand tu fais un script, il est toujours associé a un objet, que tu peux retrouver grâce a OBJECT_SELF. Dans le onEnter d'une zone l'objet est la zone elle même. La fonction ExecuteScript a pour effet d'exécuter la fonction main du script passé en argument, par l'objet passé en second argument (ici la zone).
Maintenant, l'usage de la fonction m'a l'air pertinent lorsque l'on veut fusionner des scripts de taille importante. Ici le second script est court, donc aisément modifiable. Regarde dans le second script ce que tu as déjà défini dans le premier : l'objet entrant, que tu appelle dans le premier oPC et dans le second oPlayer. Tu peux donc supprimer dans le second la définition de oPlayer et remplacer dans le script par oPC. Pour l'objet de nom "elianor", (si j'ai bien compris c'est la zone dans laquelle tu entre, si c'est le cas tu peux donc la retrouver avec OBJECT_SELF, au lieu de l'identifier par son tag), tu peux la laisser tel quel. Voici donc ce que ça donnerait : NWScript :
#include "in_g_cameramove" void main() { object test = OBJECT_SELF; FloatingTextStringOnCreature(GetName(test),GetEnteringObject(),FALSE); object oPC = GetEnteringObject(); int iXP = GetXP(oPC); object ob1 = GetObjectByTag("ob1"); object ob2 = GetObjectByTag("ob2"); AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND , oPC))); AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_LEFTHAND , oPC))); DelayCommand(0.1,SetCommandable(FALSE,oPC)); DelayCommand( 2.0,FloatingTextStringOnCreature("Bienvenue aux Contrees d'Elianor", oPC)); DelayCommand( 5.0,FloatingTextStringOnCreature("Ceci est un server Rp",oPC)); DelayCommand( 5.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oPC)); DelayCommand( 6.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_FREEZE_ANIMATION), oPC)); DelayCommand( 8.0,FloatingTextStringOnCreature("Vous allez arriver dans une ville",oPC)); DelayCommand(11.0,FloatingTextStringOnCreature("nommee",oPC)); DelayCommand(14.0,FloatingTextStringOnCreature("Elianor ",oPC)); DelayCommand(15.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oPC)); DelayCommand(15.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), ob2)); DelayCommand(17.0,FloatingTextStringOnCreature("Vous devrez braver les obstacles vous faire respecter...",oPC)); DelayCommand(16.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_PROTECTION_EVIL_MAJOR), oPC, 8.7)); DelayCommand(23.0,FloatingTextStringOnCreature("Un rappel, pas d'armes en ville !!",oPC)); DelayCommand(24.2, GestaltCameraMove(260.0, 20.0, 30.0, 260.0, 0.0, 30.0, 0.7, 20.0, oPC, 0)); DelayCommand(23.2, SetCommandable(TRUE,oPC)); DelayCommand(23.3, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_BEAM_FIRE_LASH), oPC)); DelayCommand(23.4, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), ob1)); DelayCommand(23.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), ob2)); DelayCommand(23.6, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_BIGBYS_CRUSHING_HAND), oPC)); DelayCommand(23.7, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD), oPC)); DelayCommand(23.8, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_GLOBE_INVULNERABILITY), oPC)); DelayCommand(23.9, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_LIGHT), oPC)); DelayCommand(24.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_MAGIC_RESISTANCE), oPC)); DelayCommand(24.1, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_PARALYZED), oPC)); DelayCommand(24.2, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_SANCTUARY), oPC)); DelayCommand(24.3, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oPC)); DelayCommand(24.4, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_L), oPC)); DelayCommand(26.0, AssignCommand (oPC, ActionJumpToObject(GetObjectByTag("demarrerelianor")))); // second script object oMT = GetObjectByTag("elianor"); ExploreAreaForPlayer(oMT, oPC); } Je n'ai pas put tester dans la mesure ou deja le premier script ne compile pas: il y a chez moi une erreur sur les parametre de la fonction GestaltCameraMove. Dans la mesure ou ce bug peut etre associé au fait que nous ayons differentes versions de la librairie de la librairie "in_g_cameramove" à savoir la version 2.0 chez moi. Si par contre tu n'arrive pas a compiler essaye alors ceci : NWScript :
#include "in_g_cameramove" void main() { object test = OBJECT_SELF; FloatingTextStringOnCreature(GetName(test),GetEnteringObject(),FALSE); object oPC = GetEnteringObject(); int iXP = GetXP(oPC); object ob1 = GetObjectByTag("ob1"); object ob2 = GetObjectByTag("ob2"); AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND , oPC))); AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_LEFTHAND , oPC))); DelayCommand(0.1,SetCommandable(FALSE,oPC)); GestaltCameraMove(0.1,0.0, 30.0, 40.0, 260.0, 20.0, 40.0, 24.0, 20.0, oPC, 0); DelayCommand( 2.0,FloatingTextStringOnCreature("Bienvenue aux Contrees d'Elianor", oPC)); DelayCommand( 5.0,FloatingTextStringOnCreature("Ceci est un server Rp",oPC)); DelayCommand( 5.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oPC)); DelayCommand( 6.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_FREEZE_ANIMATION), oPC)); DelayCommand( 8.0,FloatingTextStringOnCreature("Vous allez arriver dans une ville",oPC)); DelayCommand(11.0,FloatingTextStringOnCreature("nommee",oPC)); DelayCommand(14.0,FloatingTextStringOnCreature("Elianor ",oPC)); DelayCommand(15.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oPC)); DelayCommand(15.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), ob2)); DelayCommand(17.0,FloatingTextStringOnCreature("Vous devrez braver les obstacles vous faire respecter...",oPC)); DelayCommand(16.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_PROTECTION_EVIL_MAJOR), oPC, 8.7)); DelayCommand(23.0,FloatingTextStringOnCreature("Un rappel, pas d'armes en ville !!",oPC)); GestaltCameraMove(24.2,260.0, 20.0, 30.0, 260.0, 0.0, 30.0, 0.7, 20.0, oPC, 0); DelayCommand(23.2, SetCommandable(TRUE,oPC)); DelayCommand(23.3, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_BEAM_FIRE_LASH), oPC)); DelayCommand(23.4, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), ob1)); DelayCommand(23.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), ob2)); DelayCommand(23.6, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_BIGBYS_CRUSHING_HAND), oPC)); DelayCommand(23.7, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD), oPC)); DelayCommand(23.8, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_GLOBE_INVULNERABILITY), oPC)); DelayCommand(23.9, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_LIGHT), oPC)); DelayCommand(24.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_MAGIC_RESISTANCE), oPC)); DelayCommand(24.1, ApplyEffectToObject(DURATION_TYPE_INSTANT, DelayCommand(0.1, GestaltCameraMove(0.0, 30.0, 40.0, 260.0, 20.0, 40.0, 24.0, 20.0, oPC, 0));EffectVisualEffect(VFX_DUR_PARALYZED), oPC)); DelayCommand(24.2, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_DUR_SANCTUARY), oPC)); DelayCommand(24.3, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oPC)); DelayCommand(24.4, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_L), oPC)); DelayCommand(26.0, AssignCommand (oPC, ActionJumpToObject(GetObjectByTag("demarrerelianor")))); // second script object oMT = GetObjectByTag("elianor"); ExploreAreaForPlayer(oMT, oPC); } J'ai seulement changé : 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. Par 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. et aussi une modification similaire quelque ligne plus bas, afin que l'appelle de la fonction remplisse la spécification suivante donnée par la librairie : NWScript :
void GestaltFaceTarget(object oTarget, float fRange, float fPitch, object oPC, int iFace, int iParty = 0, int iCamID = 0); // Moves the camera smoothly from one position to another over the specified time // STARTING TIME - // fDelay how many seconds to wait before starting the movement // STARTING CONDITIONS - // fDirection initial direction (0.0 = due east) // fRange initial distance between player and camera // fPitch initial pitch (vertical tilt) // FINAL CONDITIONS - // fDirection2 finishing direction // fRange2 finishing distance // fPitch2 finishing tilt // TIME SETTINGS - // fTime number of seconds it takes camera to complete movement // fFrameRate number of movements per second (governs how smooth the motion is) // MISC SETTINGS - // oPC the PC you want to apply the camera movement to // iClockwise set to 1 if you want the camera to rotate clockwise, 0 for anti-clockwise, or 2 for auto-select // iFace sets whether the camera (0), the character (2) or both (1) turn to face the specified direction // iParty sets whether to move the camera of only oPC (0), all the players in oPC's party (1) or all the players on the server (2) void GestaltCameraMove(float fDelay, float fDirection, float fRange, float fPitch, float fDirection2, float fRange2, float fPitch2, float fTime, float fFrameRate, object oPC, int iClockwise = 0, int iFace = 0, int iParty = 0); Enfin dernière chose : si le second script révèle bien la carte au joueur entrant, le premier fait apparemment bien plus que d'afficher un message au dessus du joueur, es-tu bien sur qu'il s'agisse du script adéquate pour ce que tu désires faire ? |
Revenir en haut | |
Josueff Ecuyer Messages: 48 |
En fait je t'ai donne ce script mais je l'ai grandement changé j'ai enlevé le camera move etc... et j'ai juste laissé le message au dessus du joueur et les effets speciaux. execute script ( le deuxieme )marche parfaitement a mon avis c'est une bonne technique de fusion. Merci a toi
_________________ Rien ne sert de courir mon cher, il faut partir à point... Module persistant en construction: Merabell Cnr Cep HoTu ________________ |
Revenir en haut | |
Lavok Légende vivante Messages: 434 Localisation: Sphère planaire |
Pas vraiment. 'ExecuteScript()' ne sert pas à fusionner deux scripts ! C'est une fonction très utile par exemple quand une condition doit être remplie, mais pas pour tout de suite, étant donné qu'on ne peut retarder un 'if()' avec un 'DelayCommand()'. Bref, c'est pour des cas plus complexes .
Je m'excuse pour t'avoir involontairement induit en erreur en pensant voir oPC à la place de oPlayer dans le deuxième script (j'avais mal regardé )! Ce qui aurait fait deux oPC, or ce n'est pas le cas. Toutefois, il y a quand même une répétition inutile. Ici, inutile de faire appel à cette fonction, vu que cela alourdit tout (deux scripts au lieu d'un seul). Un bête copié/collé suffit à condition de respecter les deux règles d'or : _un seul 'void main () {}' par script. _deux variables ne peuvent avoir le même nom (ici le problème ne se pose donc pas, contrairement à ce que j'avais dit précédement, suite à ma faute de distraction ). Voici le deuxième script : NWScript :
void main() { object oPlayer = GetEnteringObject(); object oMT = GetObjectByTag("elianor"); ExploreAreaForPlayer(oMT, oPlayer); } Nous retenons donc du deuxième script NWScript :
object oPlayer = GetEnteringObject(); object oMT = GetObjectByTag("elianor"); ExploreAreaForPlayer(oMT, oPlayer); Mais dans le premier script, il y a déjà object oPC = GetEnteringObject(); Autant remplacer oPlayer par oPC, voici ce que nous prenons du deuxième script finalement : 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. Tu peux ajouter cela n'importe où dans le premier script, SAUF avant la déclaration de oPC . _________________ ToB : Une seule chose semble certaine : tant que le trône de sang de Bhaal restera vide, le chaos règnera. Moi : Une seule chose semble certaine : tant que la tête de singe de Bush restera vide, le chaos règnera. |
Revenir en haut | |
Age Novice Messages: 14 |
Lavok, la methode que tu proposes est exeactement la même que ma seconde methode sans les ExecuteScript() (si on excepte ma petite discussion sur la caméra qui est un peu Hors-Sujet)
Néanmoins je ne vois pas ou est le probleme avec ExecuteScript(), même si dans le cas present ça n'est peut etre pas la meilleur solution. EvecuteScript ne permet pas en soit de fusionner des scripts mais il peut être utilisé pour enchainer l'execution de 2 scripts differents dans un même evenement. |
Revenir en haut | |
Lavok Légende vivante Messages: 434 Localisation: Sphère planaire |
Ben... deux scripts au lieu d'un, c'est plus lourd et inutile. D'autant qu'on arrive rapidement à un nombre de scripts conséquent et s'y retouver devient parfois difficile. Alors autant s'encombrer le moins possible.
_________________ ToB : Une seule chose semble certaine : tant que le trône de sang de Bhaal restera vide, le chaos règnera. Moi : Une seule chose semble certaine : tant que la tête de singe de Bush restera vide, le chaos règnera. |
Revenir en haut | |
Juan Voyageur Messages: 1 |
Salut je fait un mod dans lequel le joueur doit fusionner avec un NPC (le but etant de prendre le controle du corp du NPC ainsi que de ses caracterisctiques) mais je sais pas comment simuler une fusion et prendre le controle du NPC si qqn c'est comment le faire merci de me le dire.
|
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