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 22:54:33


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Aladar
Chevalier
Inscrit le: 15 Déc 2004
Messages: 96
Localisation: Tours
Répondre en citant
Posté le : 27/02/2006 10:54:57 Sujet du message : item de reboot

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
    1) envoie un message aux pjs comme quoi ca va rebooter dans 10 secondes.
    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.
Ce qui se passe avec mon code, et bien ca envoie le message (je suis pas sur que ca l'envoie à tout le monde, j'ai personne sous la main pour tester), ca tremble, mais ca tremble pas le temps désiré (pareil, pas sur que ca tremble pour tout le monde), MAIS Confused ca ne boot ni ne relance rien du tout.
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 Smile .

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

Qu'est ce qui va pas ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
mork
Seigneur
Inscrit le: 12 Aoû 2005
Messages: 205
Localisation: A landeda, pres de brest
Répondre en citant
Posté le : 27/02/2006 11:15:38 Sujet du message :

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)));*/
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.


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 Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Aladar
Chevalier
Inscrit le: 15 Déc 2004
Messages: 96
Localisation: Tours
Répondre en citant
Posté le : 27/02/2006 12:16:21 Sujet du message :

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

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

Donc en mettant le BootPC en commentaire, là ca relance le module...
Surprised
Yé comprends pas.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 27/02/2006 12:17:07 Sujet du message :

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


essaye comme ça, je suis pas sur que ça marche.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Aladar
Chevalier
Inscrit le: 15 Déc 2004
Messages: 96
Localisation: Tours
Répondre en citant
Posté le : 27/02/2006 12:22:59 Sujet du message :

Je viens de tester avec ton code Syth, tout va bien jusqu'au StartNewModule, il ne se relance pas.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 27/02/2006 12:31:38 Sujet du message :

T'es sur de bien avoir mis le bon nom de fichier ? Chez moi ça marche.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Aladar
Chevalier
Inscrit le: 15 Déc 2004
Messages: 96
Localisation: Tours
Répondre en citant
Posté le : 27/02/2006 12:40:34 Sujet du message :

Cetain, je test sur un module de .. test dont le TAG est "mod"
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.

Le tout est parfait, sauf que ca ne relance pas le mod :s
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 27/02/2006 12:43:46 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Aladar
Chevalier
Inscrit le: 15 Déc 2004
Messages: 96
Localisation: Tours
Répondre en citant
Posté le : 27/02/2006 12:58:12 Sujet du message :

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 Mad

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 Smile
 
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 : 27/02/2006 13:01:44 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Aladar
Chevalier
Inscrit le: 15 Déc 2004
Messages: 96
Localisation: Tours
Répondre en citant
Posté le : 27/02/2006 13:28:21 Sujet du message :

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


J'ai ce dont j'avais besoin, Grand Merci à vous C'est top !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 27/02/2006 13:38:45 Sujet du message :

effectivement j'ai l'impression que ça relance pas quand il n'y a pas de joueurs, c'est bête !
 
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 69.318ms