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 01/11/2024 04:42:46
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 |
Aladar Chevalier Messages: 96 Localisation: Tours |
Bonjour,
j'ai cherché pendant un bon moment dans les divers posts qui parlent de reboot, en vain. Voila ce que je veux : Un item à pouvoir unique qui, quand on l'active
2) sauvegarde les pjs. 3) fait un joli effet de tremblement pour tout le module jusqu'au Boot. 4) Boot les pjs. 5) Et enfin, relance le module. J'ai mis le ExportAllCharacters(); en commentaire car ne sachant absolument pas m'en servir, je voulais me pencher dessus en dernier... J'esperais m'en sortir seul, mais ca va faire plus de cinq heures que je suis dessus et, n'ayant presque plus de cheveux, je demande de l'aide . NWScript :
void main() { object oPJ = GetFirstPC(); if(GetTag(GetItemActivated()) == "al_reboot") { //Message aux pjs comme quoi ca va rebooter. SendMessageToPC(oPJ, "Le module va rebooter dans 10 secondes."); //ExportAllCharacters(); //Petit effet de tremblement. effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eShake,(oPJ), 10.0); //10 secondes, puis BootPC. DelayCommand(10.0, BootPC(oPJ)); oPJ = GetNextPC(); //relance du module. StartNewModule("al_module"); } } Qu'est ce qui va pas ? |
Revenir en haut | |
mork Seigneur Messages: 205 Localisation: A landeda, pres de brest |
Pourquoi tu remets un deuxieme "oPJ" a la fin ?
pour que ca le donne a tout le monde j'ai trouve un moyen ... il faut créer un objet invisible avec le tag "Serveur" n'importe ou dans le module. Après tu mets : NWScript :
object oMod = GetObjectByTag ("Serveur"); AssignCommand(oMod, ActionSpeakString("", TALKVOLUME_SHOUT)); /*Apres si tu veux lancer un compte a rebour : DelayCommand(1.0, AssignCommand (oMod, ActionSpeakstring ("10", TALKVOLUME_SHOUT))); DelayCommand(2.0, AssignCommand (oMod, ActionSpeakstring ("9", TALKVOLUME_SHOUT))); DelayCommand(3.0, AssignCommand (oMod, ActionSpeakstring ("8", TALKVOLUME_SHOUT))); DelayCommand(4.0, AssignCommand (oMod, ActionSpeakstring ("7", TALKVOLUME_SHOUT))); DelayCommand(5.0, AssignCommand (oMod, ActionSpeakstring ("6", TALKVOLUME_SHOUT))); DelayCommand(6.0, AssignCommand (oMod, ActionSpeakstring ("5", TALKVOLUME_SHOUT))); DelayCommand(7.0, AssignCommand (oMod, ActionSpeakstring ("4", TALKVOLUME_SHOUT))); DelayCommand(8.0, AssignCommand (oMod, ActionSpeakstring ("3", TALKVOLUME_SHOUT))); DelayCommand(9.0, AssignCommand (oMod, ActionSpeakstring ("2", TALKVOLUME_SHOUT))); DelayCommand(10.0, AssignCommand (oMod, ActionSpeakstring ("1", TALKVOLUME_SHOUT))); DelayCommand(11.0, AssignCommand (oMod, ActionSpeakstring ("0", TALKVOLUME_SHOUT))); DelayCommand(12.0, AssignCommand (oMod, ActionSpeakstring ("REBOOT !", TALKVOLUME_SHOUT)));*/ Voila, c'est tout ce que je peux te dire pour que ca envoie un message a tous le monde. @+ Mork _________________ Aléthéia | Ceux qui cherchent la vie trouveront la mort, ceux qui cherchent la mort trouveront la mort |
Revenir en haut | |
Aladar Chevalier Messages: 96 Localisation: Tours |
Le message n'apparait pas en dialogue mais dans les logs de combat.
J'ai decomposé le truc, puisqu'au final ce qui m'interesse c'est le BootPC + StartNewModule. Et là je rencontre un truc assez etrange, si je mets NWScript :
void main() { object oPJ = GetFirstPC(); while (GetIsObjectValid(oPJ) == TRUE) if(GetTag(GetItemActivated()) == "al_reboot") { BootPC(oPJ); oPJ = GetNextPC(); StartNewModule(GetName(GetModule())); } } Ca me Boot, par contre ca relance pas le module. Si je mets : NWScript :
void main() { object oPJ = GetFirstPC(); while (GetIsObjectValid(oPJ) == TRUE) if(GetTag(GetItemActivated()) == "al_reboot") { //BootPC(oPJ); //oPJ = GetNextPC(); StartNewModule(GetName(GetModule())); } } Donc en mettant le BootPC en commentaire, là ca relance le module... Yé comprends pas. |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
NWScript :
//le debut c'est ton script OnActivatedIrtem if (/*c'est le bon objet*/) { object oPC = GetFirstPC(); effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE); while (oPC != OBJECT_INVALID) { FloatingTextStringOnCreature("Le module va rebooter dans 10 secondes.",oPC,FALSE); ApplyEffectToObject(DURATION_TYPE_INSTANT,eShake,oPC); AssignCommand(oPC,DelayCommand(4.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,eShake,oPC))); AssignCommand(oPC,DelayCommand(7.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,eShake,oPC))); ExportSingleCharacter(oPC); DelayCommand(10.0,BootPC(oPC)); oPC = GetNextPC(); } DelayCommand(10.5,StartNewModule("nom_du_fichier_de_ton_mod")); } essaye comme ça, je suis pas sur que ça marche. |
Revenir en haut | |
Aladar Chevalier Messages: 96 Localisation: Tours |
Je viens de tester avec ton code Syth, tout va bien jusqu'au StartNewModule, il ne se relance pas.
|
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
T'es sur de bien avoir mis le bon nom de fichier ? Chez moi ça marche.
|
Revenir en haut | |
Aladar Chevalier Messages: 96 Localisation: Tours |
Cetain, je test sur un module de .. test dont le TAG est "mod"
NWScript :
void main() { if(GetTag(GetItemActivated()) == "al_reboot") { object oPC = GetFirstPC(); effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE); while (oPC != OBJECT_INVALID) { FloatingTextStringOnCreature("Le module va rebooter dans 10 secondes.",oPC,FALSE); ApplyEffectToObject(DURATION_TYPE_INSTANT,eShake,oPC); AssignCommand(oPC,DelayCommand(4.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,eShake,oPC))); AssignCommand(oPC,DelayCommand(7.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,eShake,oPC))); ExportSingleCharacter(oPC); DelayCommand(10.0,BootPC(oPC)); oPC = GetNextPC(); } DelayCommand(10.5,StartNewModule("mod")); } } Le tout est parfait, sauf que ca ne relance pas le mod :s |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Bizarre, mais c'est pas le tag, c'est le nom du fichier dans ton répertoire module, il s'appelle bien mod.mod ? (par contre pas besoin de mettre l'extension")
chez moi mon module s'appelle module003.mod et j'ai mis : StartNewModule("module003"); et ça marche. |
Revenir en haut | |
Aladar Chevalier Messages: 96 Localisation: Tours |
Oui le module à pour nom de fichier "mod.mod"
Je viens de tester en mettant DelayCommand(10.0,BootPC(oPC)); en commentaire, et là ... bah ca reboot le module, sans ejecter les pj Bref, je pense que ca peut le faire comme ca. Si je voulais ejecter les pjs c'etait pour eviter un vilain bug genre le pj revient en ayant perdu des items, de l'xp, etc. Mais vu qu'il est exporté avant le reboot, ca ne devrait pas poser de probleme. Ma question est la suivante, par rapport au ExportSingleCharacter, est il possible de sauver les pjs sur le serveur et seulement sur le serveur ? Car avec mes quelques test, je me retrouve deja avec pas loin de 10 perso identique dans ma liste de pj ^^' (à noter que j'autorise les persos locaux pour mes tests, ce n'est pas le cas sur le module) Le top serait qu'avant de rebooter, ca actualise leur sauvegarde du serveur |
Revenir en haut | |
lylver Héros Messages: 274 |
Vous pouvez également utiliser
StartNewModule(GetTag(GetModule())) ; il faut positionner le nom du module sans l'extension .mod dans les propriétés du module (Tag module) Essayer de choisir un nom de 8 caractères ou moins dans ce cas. |
Revenir en haut | |
Aladar Chevalier Messages: 96 Localisation: Tours |
NWScript :
void main() { if(GetTag(GetItemActivated()) == "TAG_ITEM") { object oPC = GetFirstPC(); effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE); while (oPC != OBJECT_INVALID) { //Message aux pjs comme quoi ca va rebooter SendMessageToPC(oPC, "Le module va rebooter dans 10 secondes."); //Petit effet de tremblement pour se la peter un peu ApplyEffectToObject(DURATION_TYPE_INSTANT,eShake,oPC); AssignCommand(oPC,DelayCommand(4.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,eShake,oPC))); AssignCommand(oPC,DelayCommand(7.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,eShake,oPC))); //on sauve les pjs ExportSingleCharacter(oPC); //DelayCommand(10.0,BootPC(oPC ));//Je le laisse en commentaire, ca relance pas le mod sinon ... oPC = GetNextPC(); } //10 secondes avant le reboot DelayCommand(10.5, StartNewModule(GetTag(GetModule()))); } } J'ai ce dont j'avais besoin, Grand Merci à vous |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
effectivement j'ai l'impression que ça relance pas quand il n'y a pas de joueurs, c'est bête !
|
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