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 07:39:04
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 |
ansquer Héros Messages: 264 Localisation: MorBihan |
J'ai trouvé un script pour rebooter automatiquement tous les 8h00
Je voudrais qu'il boot automatiquement à 5h00 du matin quand la probabilité d'avoir des joueurs est la plus faible ... NWScript :
//reboot tous les 8h00 dans le On-Enter int iFirstEnter = GetLocalInt(OBJECT_SELF,"FirstEnter"); if (iFirstEnter != 1) { SetLocalInt(OBJECT_SELF,"FirstEnter",1); float fDelay = 28800.0; //28800 secondes = 8 heures DelayCommand(fDelay, StartNewModule("Nom de ton module")); } Si vous avez une idée, je cherhce de mon côté ^^ _________________ L'année de l'île Tome 1 Un roman ecxeptionnel ! Urban Rivals ! Mettez " ansker " en pseudo de votre parrain svp |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Bein c'est simple, enfin pour moi
NWScript :
//Black Knight Script void Ok(); void Ok() { //On regarde combien il y a de joueur dans le module, et si il y a moin de 4 joueurs on met la fonction a TRUE. object oPC = GetFirstPC(); int iJoueurs = 0; while(oPC != OBJECT_INVALID) { iJoueurs++; oPC = GetNextPC(oPC); } if(iJoueurs<4) { return TRUE; } else { return FALSE; } } void main() { float fTime = 86400.0;// Il faut que tu lance ton mode a 5 Heures pile, 86400 secondes = 24heures. if(GetLocalInt(GetModule(), "RebootTime") == 0) { DelayCommand(fTime, SetLocalInt(GetModule(), "RebootTime", 1)); // Ici on active le mod reboot } else { if(Ok == TRUE) // si il y a moins de 4 joueur on reboot { StartNewModule(""); SetLocalInt(GetModule(), "RebootTime", 0); } else { return; } } } Bon voila, le principe du script est de reboot le module lorsque il est 5heures du matin, et lorsque il y a moins de 4 joueurs. Bref tout est expliquer en vert. Faut mettre dans le HB d'un objet. Dès que le script active le mod reboot, il lance une recherche toutes les six secondes (HB = 6 secondes) pour voir si l'état du serveur n'as pas changer (le nombre de joueur) _________________ [http] |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Sinon tu mets un réveil à 5 heures
|
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
|
Revenir en haut | |
Semcatala Grand Sage du Conseil Messages: 951 |
Rebooter lorsqu'il n'y a PLUS PERSONNE sur le serveur semble être une solutions plus fiable que rebooter a une CERTAINE HEURE.
Vu que le but est de rebooter quand le serveur est vide ou presque , je pense que plutôt d'utiliser une heure , tu ferais mieux de lancer un script a chaque fois qu'un joueur quitte le mod , a ce moment là tu compte le nombre de joueurs qui restent , et si il n'y a plus personne ou moins de X personnes , tu lance le reboot. _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | |
ansquer Héros Messages: 264 Localisation: MorBihan |
Black : Le problème va être le premier 5h00 du mat ... Semcatala : si un serveur est peu fréquenté, ca va rebooter en permanance.. et un joueur qui déconnecte pour quelques minutes risque de trouver sa quete rebbotée. Merci _________________ L'année de l'île Tome 1 Un roman ecxeptionnel ! Urban Rivals ! Mettez " ansker " en pseudo de votre parrain svp |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Non c'est pas idiot ce que dit Semcatala, le seul truc à rajouter c'est enregistrer la date au lancement pour ne rebooter qu'après un certain temps.
|
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Si tu veux tester mon script tu mets des SendMessageToPC un peut partout dans le script tu mets la variable a 4 pour voir si il reboot pas et si il att bien, ensuite tu la passe a 3 et tu regarde si il reboot. je fais tjr comme ça pour tester
Et non, l'idée que tu dit n'est pas bonne, car si il y a aucun joueur pendant 1 journée t'es mal barré! _________________ [http] |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Bah s'il y a personne de la journée, ok le serveur va pas rebooter, mais il faut qu'il soit vraiment mal batti pour que ça pose un problème. Et ok il va rebooter dès que le joueur quitte, mais bon. On peut rajouter des check après.
Sinon ton script, si tu le mets sur un HB, il lance un delayCommand de 24heures toutes les 6 secondes, ça en fait au bout des 24 heures quelque chose comme 14400 rien que pour ça, je me demande les performance du serveur avec ^^ |
Revenir en haut | |
ansquer Héros Messages: 264 Localisation: MorBihan |
Je pensais ... (si si ça m'arrive) ... si on peut récupérer la date, n'est-il pas possible de prendre l'heure réele ?
Sinon ,oui, quand on lance, on prend la date et quand un PJ quitte on vérifie, par exemple, que le Mod est lancé depuis plus de 10 heures, si c'est le cas Reboot ... Bien ... voilà ... ... ah le scriptage _________________ L'année de l'île Tome 1 Un roman ecxeptionnel ! Urban Rivals ! Mettez " ansker " en pseudo de votre parrain svp |
Revenir en haut | |
Anthraxcite Légende vivante Messages: 372 Localisation: Belgique |
[Black Knight :
Ta fonction retourne un int alors que l'entête et le prototype indiquent un void. Elle n'est pas utilisée pas le main. Plutot que de vérifier dans la fonction si c'est plus petit que 4, fais simplement en sorte que ça de donne le nombre de joueurs et vérifie ensuite la valeur retournée dans le main. Evites d'appeler une fonction Ok, veille plutot à mettre un nom explicite. Dans les commentaires tu mets que la fonction est mise à TRUE, en faite la fonction ne met rien du tout, elle retourne une valeur. if(iJoueurs<4) { return TRUE; } else { return FALSE; } peut etre remplacé par return (iJoueurs<4); ] On peut récupérer l'heure réel lors du lancement via un 2da, lylver avait donné la solution là : [http] |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
A oui exact, je suis aller vite, j'avais pas l'éditeur sous la main, désolé. Et le nom de la fonction c'était pour aller vite
Par contre je sais pas faire de fonction qui peut désigne un Object/Int/String avec un if, je sais faire qu'avec TRUE ou FALSE _________________ [http] |
Revenir en haut | |
ansquer Héros Messages: 264 Localisation: MorBihan |
NWScript :
void NbrJoeurs() { object oPC = GetFirstPC(); int iJoueurs = 0; while(oPC != OBJECT_INVALID) { iJoueurs++; oPC = GetNextPC(oPC); } return (iJoueurs<4); } void main() { int nHour = GetTimeHour(); if(nHour>10) { StartNewModule(""); SetLocalInt(GetModule(), "RebootTime", 0); } } Arretez de rire !!! AU secours !!!! _________________ L'année de l'île Tome 1 Un roman ecxeptionnel ! Urban Rivals ! Mettez " ansker " en pseudo de votre parrain svp |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Prend mon script il marche, il est juste long Je ne vois pas ou est le probleme a par que tu remplace void Ok() par int Ok()
_________________ [http] |
Revenir en haut | |
ansquer Héros Messages: 264 Localisation: MorBihan |
Je me suis dit qu'un MD pourrait relancer le Mod à partir d'un placeable ...
J'ai placé ce script dans un dialogue... Mais le message du "crier" apparait, mais le module n'est pas rebooté Et pourquoi donc ??? NWScript : void main() { // Reboot dans 30sc SpeakString("Le serveur va etre reboote dans 30 secondes ... Veuillez deconnecter, Le serveur sera OK dans 1 minute", TALKVOLUME_SHOUT); DelayCommand(30.0, StartNewModule("AGLAROND[152]")); } _________________ L'année de l'île Tome 1 Un roman ecxeptionnel ! Urban Rivals ! Mettez " ansker " en pseudo de votre parrain svp |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
L'histoire du StartNewModule est longue mon enfant, seul les âgée peuvent comprendre, mais tu vas recevoir une leçon du père Black Knight, et même deux :
1) Jespere que ta pas essayé ton script en solo, car ça ne marchera pas 2) Es tu bien sur que c'est le nom de ton module? je te conseil de mettre GetModuleName() Edit: pas besoin de faire quitter les joueurs lors d'un reboot comme ça, il n'auront rien _________________ [http] |
Revenir en haut | |
ansquer Héros Messages: 264 Localisation: MorBihan |
Non non mon mod est en ligne ...
J'ai changé selon tes conseils. NWScript :
void main() { // Reboot dans 5sc SpeakString("Le serveur va etre reboote dans 5 secondes ...", TALKVOLUME_SHOUT); DelayCommand(5.0,StartNewModule(GetModuleName())); } Ca ne fait rien ... _________________ L'année de l'île Tome 1 Un roman ecxeptionnel ! Urban Rivals ! Mettez " ansker " en pseudo de votre parrain svp |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Hmm, est ce que ton mod a un nom? (quand tu fais propriété du module)? Sinon je vois pas trop att je vais voir mon script.
_________________ [http] |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Non je vois pas l'erreur, j'ai pareil que toi pourtant :
NWScript :
if(sTag == "Reboot") { SpeakString("Reboot du Module decide par : "+GetName(oPC)+ " !", TALKVOLUME_SHOUT); DelayCommand(1.5, SpeakString("Reboot dans 10 Secondes. Merci de patienter", TALKVOLUME_SHOUT)); DelayCommand(5.0, SpeakString("Sauvegarde des personnages avant Reboot", TALKVOLUME_SHOUT)); DelayCommand(5.0, ExportAllCharacters()); DelayCommand(11.5, StartNewModule(GetModuleName())); } moi c'est avec un objet. Je vais chercher, mais la franchement tu me pose une colle _________________ [http] |
Revenir en haut | |
Seth de Sombrelune Seigneur Messages: 156 |
bon cela fait un moment que je vient plus sur le forum car je refait ma vie, donc arret complet de NWN. Et donc j'ai aussi areter mon serveur. Quel rapport avec le sujet me direz vous ? Et bien Onirose etait rebooter tout les matin à.... 5h00 !!!!! et ce sans consommer aucune ressource NWN, en effet un delaycomande c'est toujour une comande qui consomme de la resource.
En fait la solution est simple et extérieur au jeu. il faut en fait telecharger 2 petit logiciels tout simple sur le net. Le premier est Shutter, il permet de rebooter automatiquement le pc à l'heure que vous souhaitez, le second, c'est...arf j'ai plus le nom, c'est un programme qui lançait le module automatiquement 8 min apres le redemarrage du pc, une fois que ce dernier etait bien stable... bon je demande à mon colègue (ben oui je l'ai effacer !) et je poste ici l'adresse de telechargement ! A bienôt ! _________________ De Tenebris Lumen Fulget....... |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
|
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Argh, merde, le reboot marche pas chez moi non plus... J'ai tester en solo, ça ma envoyer sur mon ancien serveur. J'ai copier coller mon serv et j'ai refais de A à Z les zones...
_________________ [http] |
Revenir en haut | |
ansquer Héros Messages: 264 Localisation: MorBihan |
J'ai mis ton Script, j'ai vérifié que mon mod a un nom ... et pfff .. rien
c'est dommage ca paraissait bien ça ... en plus je l'ai mis dans un dialogue avec placeable qui englobe le compteur de joueurs.. ca aurait été parfais _________________ L'année de l'île Tome 1 Un roman ecxeptionnel ! Urban Rivals ! Mettez " ansker " en pseudo de votre parrain svp |
Revenir en haut | |
Seth de Sombrelune Seigneur Messages: 156 |
Seth de Sombrelune a écrit : bon cela fait un moment que je vient plus sur le forum car je refait ma vie, donc arret complet de NWN. Et donc j'ai aussi areter mon serveur. Quel rapport avec le sujet me direz vous ? Et bien Onirose etait rebooter tout les matin à.... 5h00 !!!!! et ce sans consommer aucune ressource NWN, en effet un delaycomande c'est toujour une comande qui consomme de la resource.
Bon le second logiciel est BigAlarm v2.50
En fait la solution est simple et extérieur au jeu. il faut en fait telecharger 2 petit logiciels tout simple sur le net. Le premier est Shutter, il permet de rebooter automatiquement le pc à l'heure que vous souhaitez, le second, c'est...arf j'ai plus le nom, c'est un programme qui lançait le module automatiquement 8 min apres le redemarrage du pc, une fois que ce dernier etait bien stable... bon je demande à mon colègue (ben oui je l'ai effacer !) et je poste ici l'adresse de telechargement ! A bienôt ! En fait BigAlarme permet de lancer la commande "shutdown" (qui est ds windows/systeme32) qui te permet d'arrêter ton PC, shutter lui permet de lancer le programe nwnserveur 8 min apres, a moins que ce ne soit l'inverse ? bon je sait plus mais avec les 2, le pc rebootait automatiquement à 5h00 et le serveur etait relancé 8 min apres... _________________ De Tenebris Lumen Fulget....... |
Revenir en haut | |
Semcatala Grand Sage du Conseil Messages: 951 |
Citation : Semcatala : si un serveur est peu fréquenté, ca va rebooter en permanance.. et un joueur qui déconnecte pour quelques minutes risque de trouver sa quete rebbotée. Ansquer > Ben vi , mais faut réfléchir un peu , faut rajouter une tempo au lancement du module.
Par exemple au lancement du module tu met la variable INT de nom " tempo_reebot " sur le module a FALSE , et tu met une tempo de par exemple 4 heures au bout de laquelle elle passe a TRUE. Ensuite tu met une condition lors de la sortie de chaque joueur , il faudra par exemple qu'il y ai : ( moins de 4 joueurs sur le mod ) ET ( la balise tempo_reboot a TRUE ) pour que le reboot soit effectif. Franchement je ne vois pas d'obstacle majeur a réaliser ça , et de mon point de vue , ça serais la solution la plus simple a bien des égards. _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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