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 27/11/2024 05:14:17
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 |
Je voudrais que dans la zone MD il y ait un placeable qui, lorsqu'un MD l'utilise, donne la liste des PJ s'étant connectés... (mais non pas espionnage! je veux juste savoir s'il y a parfois quelqu'un qui vient )
Je pense qu'il faut mettre un petit quelque chose dans le On_Enter 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. Mais sans doute que ce nom doit être inclu dans un variable ( qui pourra être reportée sur le On_Used de l'objet ... mais ça je ne sais pas faire ... Y a pas d'urgence, c'est juste que si ca amuse quelqu'un, ça m'arrangerait _________________ 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 |
C'est simple
NWScript :
void main() { object oPC = GetEnteringObject(); int iNbrJoueur = GetLocalInt(GetModule(), "NbrJoueur"); int i = iNbrJoueur+1; SetLocalString(GetModule(), "NameJoueur_"+IntToString(i), GetName(oPC)); SetLocalInt(GetModule(), "NbrJoueur", i); } La on recherche combien de joueur se sont connecter (iNbrJoueur). On integre le nom de chaque joueur entrer dans une variable avec son numero (comme ça en plus tu peux savoir qui est entrée le premier). NWScript :
void main() { object oPC = GetLastUsedBy(); int iNbrJoueur = GetLocalInt(GetModule(), "NbrJoueur"); string sMess = "Liste des connecter"; sMess += "\n"; int i = 0; while(i =< iNbreMessage) { sMess += ""+IntToString(i)+" : "+GetLocalString(GetModule(), "NameJoueur_"+IntToString(i)); sMess += "\n"; i++; } SendMessageToPC(oPC, sMess); } Ici on regarde combien de joueur on été connecter lorsqu'on le joueur click sur l'objet (iNbrJoueur) et on dit en message : "Liste des connecter: Joueur N°1 : Machin Joueur N°2 : Machin1" Voila. Alors si il y a une erreur c'est les : while(i =< iNbrJoueur) à chaque fois je me rappelle plus si c'est =< ou <= lol _________________ [http] |
Revenir en haut | |
ansquer Héros Messages: 264 Localisation: MorBihan |
Merci !
En effet, erreur sur cette ligne mais même en changeant ça ne marche pas... NWScript :
while(i <= iNbreMessage) 02/08/2006 11:45:11 : Erreur. 'compteur_objet' n'est pas compilé. compteur_objet.nss(: ERREUR : VARIABLE DEFINED WITHOUT TYPE iNbreMessage n'est pas défini non? Una utre question : est-ce que je peux mettre le premier script dans le On_Enter d'une Zone et l'objet de vérification dans une autre ? _________________ 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 |
il y a un "e" en trop dans le nom de variable (iNbrJoueur est définie)
|
Revenir en haut | |
ansquer Héros Messages: 264 Localisation: MorBihan |
J'ai supprimé le "e"
NWScript :
while(i <= iNbrMessage) Mais le message d'erreur reste identique. _________________ L'année de l'île Tome 1 Un roman ecxeptionnel ! Urban Rivals ! Mettez " ansker " en pseudo de votre parrain svp Dernière édition par ansquer le 02/08/2006 11:13:20; édité 1 fois
|
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Non, le premier script doit se mettre dans le OnEnter du module si tu veux tout avoir tout. Tu peux aussi le mettre dans une zone pour savoir qui est aller dans la zone. Le deuxieme se met dans un object
Effectivement, j'ai pas vu mon erreur du E dsl _________________ [http] |
Revenir en haut | |
ansquer Héros Messages: 264 Localisation: MorBihan |
Il n'y aps de problème car je mets le script dans la zone ou apparaissent les PJ... comme ca s'il se connecte plusieurs fois je n'ai leur nom qu'une fois...
Par contre il reste l'erreur que je signale plus haut 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 | |
ansquer Héros Messages: 264 Localisation: MorBihan |
Voilà ... j'ai changé le iNbrMessage par iNbreJoeur et ça marche nikel !!
Merci Black ^^ NWScript : void main() { object oPC = GetLastUsedBy(); int iNbrJoueur = GetLocalInt(GetModule(), "NbrJoueur"); string sMess = "Liste des connecter"; sMess += "\n"; int i = 0; while(i <= iNbrJoueur) { sMess += ""+IntToString(i)+" : "+GetLocalString(GetModule(), "NameJoueur_"+IntToString(i)); sMess += "\n"; i++; } SendMessageToPC(oPC, sMess); } _________________ 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 |
Ha je me disais aussi d'ou bien le iNbrMessage, me rapeller pas que je devais faire un script pour savoir combien de message je recois par seconde
_________________ [http] |
Revenir en haut | |
ansquer Héros Messages: 264 Localisation: MorBihan |
Il doit être possible en mettant in script sur OnClientLeave d'avoir la durée de connexion voir m^me mieux :
Joueur 1 : Jojo ,connecté : 1h35min, a quitté depuis: 3h35min Joueur 2 : Kiki ,connecté : 0h32min, a quitté depuis: 0h12min ... mais la je pousse aussi (en un mois j'ai vachement progressé et bientot je serai faire des scripts comme ça tout seul ... qui a rigolé !!! ) _________________ 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 |
OnUsed de l'objet "Truc"
NWScript :
void main() { object oPC = GetLastUsedBy(); int iNbrJoueur = GetLocalInt(GetModule(), "NbrJoueur"); string sMess = "Liste des connecter"; sMess += "\n"; int i = 0; object oJ; while(i <= iNbrJoueur) { oJ = GetLocalObject(GetModule(), "oJ_"+IntToString(i)); int iCalcule = GetLocalInt(oJ,"TempsConnect"); sMess += ""+IntToString(i)+" : "+GetLocalString(GetModule(), "NameJoueur_"+IntToString(i))+". Ce joueur est rester connecter : "+IntToString(iCalcule)+" secondes."; sMess += "\n"; i++; } SendMessageToPC(oPC, sMess); } OnHB de l'objet "Truc" NWScript :
void main() { object oPC = GetFirstPC(); while(GetIsPC(oPC) == TRUE) { int iTime = GetLocalInt(oPC, "TempsConnect"); SetLocalInt(oPC,"TempsConnect", iTime+6); oPC= GetNextPC(); } } OnEnter NWScript :
void main() { object oPC = GetEnteringObject(); int iNbrJoueur = GetLocalInt(GetModule(), "NbrJoueur"); int i = iNbrJoueur+1; if(GetIsPC(oPC)==TRUE) { SetLocalObject(GetModule(), "oJ_"+IntToString(i), oPC); SetLocalString(GetModule(), "NameJoueur_"+IntToString(i), GetName(oPC)); SetLocalInt(GetModule(), "NbrJoueur", i); } } Voila lol _________________ [http] |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
J'ai fait encore mieux! J'ai réflechie comme avoir Heure minute seconde pile! (enfin ça sera toujours +6 secondes ), remplace le script du OnUsed par lui :
NWScript :
void main() { object oPC = GetLastUsedBy(); int iNbrJoueur = GetLocalInt(GetModule(), "NbrJoueur"); string sMess = "Liste des connecter"; sMess += "\n"; int i = 0; object oJ; int iHeure, iMinute, iSeconde; while(i <= iNbrJoueur) { oJ = GetLocalObject(GetModule(), "oJ_"+IntToString(i)); int iCalcule = GetLocalInt(oJ,"TempsConnect"); if(iCalcule > 60) { iMinute = iCalcule/60; if(iMinute >= 60) { iHeure = iMinute/60; iMinute = iMinute-(iHeure*60); } } if(iCalcule <= 60) { iSeconde = iCalcule; } else if(iCalcule > 60) { iSeconde = iCalcule-(iMinute*60); } sMess += ""+IntToString(i)+" : "+GetLocalString(GetModule(), "NameJoueur_"+IntToString(i))+". Ce joueur est rester connecter "+IntToString(iHeure)+" heure(s) "+IntToString(iMinute)+ " minute(s) et "+IntToString(iSeconde)+" seconde(s)."; sMess += "\n"; i++; } SendMessageToPC(oPC, sMess); } Bon moi je vais mettre ça pour que mes joueurs savent combien d'heure ils se choutent _________________ [http] |
Revenir en haut | |
ansquer Héros Messages: 264 Localisation: MorBihan |
Nan !!! .... et un script qui fait sortir des billets de 500€ de mon graveur cd tu sais faire ???
Bravo ! et MERCI ! j'essaye demain matin ^^ _________________ 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 oui je sais faire, tu vas chez darty et tu leur demande un ordinateur qui sort des billets de 500E, et en passant tu m'en donne une partie
_________________ [http] |
Revenir en haut | |
ansquer Héros Messages: 264 Localisation: MorBihan |
Y a un bug ... il faut que le PJ soit connecté pour qu'on puisse avoir son temps, sinon c'est 0h00min00s
_________________ 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 |
non, aucun bug, enfin pour ma part.
Le truc c'est : Si le PJ entre dans ton serveur, le script s'active, et sauvegarde toutes les six secondes sont temps. Si le PJ qui ton serveur, le script s'arrête pour se PJ, et garde le temps qui la sauvegarder dernièrement. Donc le temps n'avance plus. Si le PJ revient sur le serveur, le script se réactive, et continue de la ou il a sauvegarder mets ça a la place du HB de ton Objet : [nwscript]void main() { object oPC = GetFirstPC(); while(GetIsPC(oPC) == TRUE) { int iTime = GetLocalInt(oPC, "TempsConnect"); SetLocalInt(oPC,"TempsConnect", iTime+1); DelayCommand(1.0, SetLocalInt(oPC,"TempsConnect", iTime+2)); DelayCommand(2.0, SetLocalInt(oPC,"TempsConnect", iTime+3)); DelayCommand(3.0, SetLocalInt(oPC,"TempsConnect", iTime+4)); DelayCommand(4.0, SetLocalInt(oPC,"TempsConnect", iTime+5)); DelayCommand(5.0, SetLocalInt(oPC,"TempsConnect", iTime+6)); oPC= GetNextPC(); } }[nwscript] Comme ça ça enregistrera toutes les secondes, et non pas 6 _________________ [http] |
Revenir en haut | |
ansquer Héros Messages: 264 Localisation: MorBihan |
Ben ... c'est bizzard quand même ... voilà ce que j'obtiens au petit matin (et je sais que 5 des connectés on passé largement plus de 38 min...)
_________________ 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 |
Je vais laisser un perso en solo pendant 1 heures en jeu. Je regarde si ça bug et si ça bug pas je te renvois les scripts (j'ai modifier des trucs, déjà j'ai corriger le petit bug des 6 sec, on passe a 1 sec temps réelle, et regarde, t'as le joueur N°0 qui n'existe pas).
Donc je te reponds dans 1heure lol _________________ [http] |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Bon alors moi j'ai un bug, c'est quand on atteint les 1 heure ça me dit :
1 heure 0 minute et 3600 secondes je vais regler ça et je te renvois tout _________________ [http] |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Voila j'ai regler le problème tiens voila les scripts : (je te conseil de mettre le script de OnEnter dans le module et pas dans la zone )
NWScript :
//Creer par Black Knight void main() { object oPC = GetLastUsedBy(); string sViolet = Couleur(8,1,8); string sVioletClair = Couleur(11,9,11); string sBlanc = Couleur(); int iNbrJoueur = GetLocalInt(GetModule(), "NbrJoueur"); string sMess = "Liste des connecter"; sMess += "\n"; int i = 1; object oJ; int iHeure, iMinute, iSeconde, iSecS; while(i <= iNbrJoueur) { oJ = GetLocalObject(GetModule(), "oJ_"+IntToString(i)); int iCalcule = GetLocalInt(oJ,"TempsConnect"); if(iCalcule > 60) { iMinute = iCalcule/60; if(iMinute >= 60) { iHeure = iMinute/60; iMinute = iMinute-(iHeure*60); } } if(iCalcule > 60) { iSecS = iCalcule/60; } if(iCalcule <= 60) { iSeconde = iCalcule; } else if(iCalcule > 60) { iSeconde = iCalcule-(iSecS*60); } sMess += sVioletClair+""+sViolet+IntToString(i)+sVioletClair+" : "+sBlanc+GetLocalString(GetModule(), "NameJoueur_"+IntToString(i))+sVioletClair+". Ce joueur est rester connecter "+sViolet+IntToString(iHeure)+sVioletClair+" heure(s) "+sViolet+IntToString(iMinute)+sVioletClair+ " minute(s) et "+sViolet+IntToString(iSeconde)+sVioletClair+" seconde(s)."; sMess += "\n"; i++; } SendMessageToPC(oPC, sMess); int iRound = GetLocalInt(GetModule(), "RebootCarte"); SendMessageToPC(oPC, sVioletClair+"\nLe serveur a fait "+IntToString(iRound)+" round(s). Il lui manque "+IntToString(48-iRound)+" round(s) avant de reboot le module."); } NWScript :
void main() { object oPC = GetFirstPC(); while(GetIsPC(oPC) == TRUE) { int iTime = GetLocalInt(oPC, "TempsConnect"); SetLocalInt(oPC,"TempsConnect", iTime+1); DelayCommand(1.0, SetLocalInt(oPC,"TempsConnect", iTime+2)); DelayCommand(2.0, SetLocalInt(oPC,"TempsConnect", iTime+3)); DelayCommand(3.0, SetLocalInt(oPC,"TempsConnect", iTime+4)); DelayCommand(4.0, SetLocalInt(oPC,"TempsConnect", iTime+5)); DelayCommand(5.0, SetLocalInt(oPC,"TempsConnect", iTime+6)); oPC= GetNextPC(); } } NWScript :
void main() { object oPC = GetEnteringObject(); int iNbrJoueur = GetLocalInt(GetModule(), "NbrJoueur"); int i = iNbrJoueur+1; if(GetIsPC(oPC)==TRUE) { SetLocalObject(GetModule(), "oJ_"+IntToString(i), oPC); SetLocalString(GetModule(), "NameJoueur_"+IntToString(i), GetName(oPC)); SetLocalInt(GetModule(), "NbrJoueur", i); } } Sur le premier script j'ai des trucs a moi (mes fonctions) enleve les comme ça ça se compilera _________________ [http] |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Indente tes scripts, tu verras tu t'y retrouvera vachement mieux (et nous aussi )
_________________ L'île perdue - Module RP - Hard Core Ruled - En construction |
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 | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Script Black Knight
NWScript :
void main() { object oPC = GetEnteringObject(); int iNbrJoueur = GetLocalInt(GetModule(), "NbrJoueur"); int i = iNbrJoueur+1; if(GetIsPC(oPC)==TRUE) { SetLocalObject(GetModule(), "oJ_"+IntToString(i), oPC); SetLocalString(GetModule(), "NameJoueur_"+IntToString(i), GetName(oPC)); SetLocalInt(GetModule(), "NbrJoueur", i); } } Script Black Knight indenté : NWScript :
void main() { object oPC = GetEnteringObject(); int iNbrJoueur = GetLocalInt(GetModule(), "NbrJoueur"); int i = iNbrJoueur+1; if(GetIsPC(oPC)==TRUE) { SetLocalObject(GetModule(), "oJ_"+IntToString(i), oPC); SetLocalString(GetModule(), "NameJoueur_"+IntToString(i), GetName(oPC)); SetLocalInt(GetModule(), "NbrJoueur", i); } } C'est pas plus joli ? Et c'est vachement plus simple pour savoir où t'en es dans quelle boucle ou condition... _________________ L'île perdue - Module RP - Hard Core Ruled - En construction |
Revenir en haut | |
Semcatala Grand Sage du Conseil Messages: 951 |
ansquer> Je pense que tu te prends la tête pour créer quelque chose que tu as déja sur ton module mais que tu n'as pas encore exploité.
juste une question ... Connais tu l'existence des fichiers " log " ? Ce sont des fichiers dans lesquels sont écrits en permanence les " événements " qui se passent sur le mod. De base tu as toutes les " entrees " de joueurs ou on te dit quel joueur avec quel pseudo est venu , et ou on te dit quel joueur avec quel pseudo est parti , et a quelles heures. Et en plus tu peux rajouter tes propres évéements via les scripts ... Moi j'ai rajouté les événements pour détecter qui à tué qui pour garder des " preuves " en cas de litige entre joueurs en cas de meurtre en mon absence , comme ça je sais tout ce qu'il s'est passé. _________________ " 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 |
Merci semcatala .. mais ton explication reste floue (pour moi ) j'ai bien trouvé les fichiers log (il y a trois dossiers) mais je ne comprends par leur contenu
_________________ L'année de l'île Tome 1 Un roman ecxeptionnel ! Urban Rivals ! Mettez " ansker " en pseudo de votre parrain svp |
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