Login: Pass:
Gamoreen



Inscrit le: 18 Fév 2006
Messages: 18
Message Posté le: 30/10/2007 15:34 Sujet du message: remplacer activeportal
en fait, je n ai meme pas verifier si activeportal etait corrigé, mais comme je n ai vu aucun cri de joie sur le net, je considere qu il est encore en rade...

du coup j ai essayé de faire mumuse avec les fonctions des UIs pour essayer d'en remplacer le fonctionnement ( au moins en partie ) et j arrive donc a forcer la connection a un autre serveur ( ca ne saute pas la selection du personnage, mais deja c ets pas mal )

pour info, c est la fonction UIButton_Input_MultiplayerDirectConnect(local:0,local:1) que j arrive a declencher IG via un script et un petit xml

les ennuis commencent la.
la connection s effectue bien et je rentre sans soucis sur le deuxieme serveur, mais je ne suis pas deconnecté du premier ^^

c ets tres rigolo, le client recoie les messages du premier et du deuxieme serveur et quand j essaye de me booter de l un, je suis ejecté des deux

La question est donc: " y a t il un moyen de virer un client sans utiliser BootPC() ? "

(je n ai pas exactement bien fouillé tout sur le sujet, si quelqu un a deja fait des tests dans le meme domaine, je suis assez preneur ^^ )
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Antilia
Administrateur


Inscrit le: 21 Juin 2005
Messages: 492
Message Posté le: 30/10/2007 23:51 Sujet du message:

Alors hmm, je verrai la chose suivante: Tu mets en global les params d'IP et port (donc tu y accèdes via global:0 et global:1 au lieu de faire du local:#) et dans cette UI où il n'y a que UIScene, en OnCreate= tu mets un truc pour déconnecter (Return to main menu ou un truc ainsi) et en OnClose tu mets la fonction de direct connect? Very Happy

Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Gamoreen



Inscrit le: 18 Fév 2006
Messages: 18
Message Posté le: 31/10/2007 16:43 Sujet du message:
la zone memoire ou est gardée les uis semble etre vidée completement quand on rentre ou sort d un module.

j arrive a appeler UIButton_Input_ExitToMainMenu() par script (deja c etait coton, il ne l accepte pas partout) et le fait qu il demande une confirmation n ets en soit pas trop genant, mais
OnDestroy=UIButton_Input_MultiplayerDirectConnect(global:0,global:1) ca fait purement et simplement planter le jeu, en fait (et c ets le meme resultat avec des constantes ou avec des local, et sur OnRemove aussi d aillleur...)

Rah, si pres et pourtant si loin Very Happy
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Antilia
Administrateur


Inscrit le: 21 Juin 2005
Messages: 492
Message Posté le: 31/10/2007 21:40 Sujet du message:

Arg! Sad

Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Gamoreen



Inscrit le: 18 Fév 2006
Messages: 18
Message Posté le: 9/11/2007 14:05 Sujet du message:
Citation
" y a t il un moyen de virer un client sans utiliser BootPC() ? "

et sans utiliser non plus UIButton_Input_ExitToMainMenu(), qui vide itou la memoire.

et bien oui, il y a UIButton_Input_PregameCancel ^^.

donc, ca marche plutot bien... je n ai pas testé en mode intensif, mais la deconnection du premier serveur et la connection au deuxieme ca marche ^^

j'en suis donc a sauté l ecran de selection du personnage et j'arrive deja a automatiser le lancement du premier perso de la liste, la question devient desormais : "comment modifier l'ordre de la liste des personnages d un compte?" ou "comment automatiser la selection d une ligne dans une uilistbox? (qui en plus, histoire de simplifier les choses, est composée de prototypes....) "

une idée? un espoir? une lueure dans le noire?
modifier le nom du perso (setfirstname) ou modifier le nom du fichier bic ca ne semble pas marcher... modifier le contenu du fichier bic, ca m a carement fait planter le serveur Very Happy... mes tests ne sont pas en mode intensifs, aussi, sur ces 3 essais donc si quelqu un a fait mumuse sur les .bic , toute info est bienvenue ^^
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Gamoreen



Inscrit le: 18 Fév 2006
Messages: 18
Message Posté le: 19/06/2008 17:21 Sujet du message:
"comment automatiser la selection d une ligne dans une uilistbox, remplie par prototypes"... ?

en fait c'etait faisable,(si ca interesse quelqu'un je peux detailler, mais bon...) , et ca le sera manifestement encore plus facilement avec les fonctions du 1.13.

nouveau probleme:

je suis deconnecté du serveur 1, je suis connecté au serveur 2, charchoicex1.xml se charge (create char, select char, cancel) et m'appelle bien l'UI que j'ai habilement gardé en memoire et qui est theoriquement capable de selectionner le bon personnage. Cette UI tourne au moins en partie, ca c est sur ( je rentre sur le serveur deux, mais avec le premier perso de la liste, encore...)
A ce stade, je ne peut pas voir mon UI ( charchoicex1.xml, etant en SCENE_FE_FULLSCREEN, cache ce qui se passe) mais elle a l 'air de fonctionner (IG, elle me selectionne bien la bonne ligne de le characterselectionlist) donc le probleme doit plus venir de OnGainedFocus0=UIButton_Input_CharSelectSetSelectedCharacter(blabla) ou de OnGainedFocus1=UIButton_Input_StartArea()... (ils sont dans deux objets differents et se declenchent normalement a 2 secondes d'intervalles)

Si quelqu'un a un tout petit peu d'experience avec l'une ou l'autre de ces fonctions... Very Happy
Ca faisait longtemps que je n'avais pas touché a nwn2, et je trouve que le défi de fabriquer un activateportal avant Obsidian reste interessant ^^

a bon entendeur Smile
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Gamoreen



Inscrit le: 18 Fév 2006
Messages: 18
Message Posté le: 20/06/2008 17:37 Sujet du message:
Bon, ben ca y est , ca marche, en tout cas chez moi... j'en suis sur les fesses.

ca n'a ete testé qu en local, 2 serveurs plus le jeu sur mon ordos, donc il faudrait verifier que le lag ne pose pas de probleme (j'utilise encore 1 timer, qui m'ennuie un peu )

pour recreer cette fantastique experience :

telecharger les fichiers suivants:
http://membres.lycos.fr/rdhprod/HIGHSIERRA/ap_beta.HAK
http://membres.lycos.fr/rdhprod/HIGHSIERRA/ap_beta_script.erf
http://membres.lycos.fr/rdhprod/HIGHSIERRA/charchoicex1.xml.bak

creer 2 petit modules, lier le hak et importer l'erf dans les deux.
Ouvrir le script ap_start pour comprendre ce qu'il fait (ce n'est pas tres dur) et copier/modifier à sa volonté (pour les tests, j'utilise un placeable, mais vous faites comme vous voulez. pour les ips a mettre, vous vous demerdez Very Happy)
finissez les petits modules...

renommer charchoiceX1.xml.bak en charchoicex1.xml (c est pour le telechargement, qu'il a ce nom) et le caser a un endroit ou il aura la priorité sur le charchoicex1.xml de nwn2 ( a priori, si l'activatePortal vous interesse, vous faites mumuse avec un monde persistant, donc il y a de fortes chances que vous ayez un dossier d'UI custom. ben dans ce repertoire, c'est tres bien)

lancer les 2 serveurs (ne pas autoriser les persos du localvault, je n'en suis pas sur, mais il est possible que ca pose des problemes. les 2 serveurs doivent partager le meme servervault, aussi)
se connecter et faire des persos, passer de l'un a l'autre avec ceux ci Very Happy
bravo

Petit detail, quand meme, ne pas creer trop de persos... pour l'instant, c'est limité à 5, mais si vous avez le courage d'ouvrir le script gui_ap et les xml contenus dans le hak, vous verez qu'il n'est pas difficile d'augmenter ce nombre


Maintenant, faire des tests, et me dire comment ca se comporte... ou chercher a comprendre soi-meme, histoire de pouvoir tout de suite faire une version un peu plus simple, quand le patch 1.13 sortira (en esperant qu'il ne ruinera pas les astuces qui ont permis d'arriver a ce resultat).

voila Smile

edit :
http://membres.lycos.fr/rdhprod/HIGHSIERRA/charchoicex1.xml
l'histoire du .bak, ca marche pas... donc bien faire un enregistrer sous...

edit 2:
apres un vrai test entre mes deux petits modules, avec quelqu'un d'autre.
petit warning, ca ne marche que pour les persos ayant un nom et un prenom, d'une part, et si il y a plusieurs personnages avec le meme nom, je pense qu'il y a un soucis (mais je n'ai pas encore fait le test),d'autre part.

pour la premiere part, n'importe quel scripteur peut corriger le probleme(dans gui_ap), mais j'ai pas le temps maintenant.
pour la deuxieme part, c'est un peu plus coton, je verais plus tard ^^
pour la deuxieme,


Dernière édition par Gamoreen le 20/06/2008 18:58; édité 2 fois
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
CaptainYann



Inscrit le: 27 Juil 2006
Messages: 4
Message Posté le: 20/06/2008 17:59 Sujet du message:
Voilà qui est extrêmement intéressant et qui ouvre de nouvelles perspectives Smile Merci beaucoup !

Par contre le lien vers charchoicex1.xml.bak ne fonctionne pas, un problème de droit apparemment Wink
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé
CaptainYann



Inscrit le: 27 Juil 2006
Messages: 4
Message Posté le: 21/06/2008 15:51 Sujet du message:
Après mise en place en production sur notre module qui se découpe en 3 serveurs, et test par quelques joueurs volontaires, le système fonctionne assez bien mais semble assez souvent poser des problèmes au serveur que le joueur quitte (freeze des autres joueurs voir plantage, pas d'évènement ClientLeave déclenché, ...).

Il semble donc que la méthode de déco utilisée ne soit pas très propre aux yeux de NWN.

Je vais voir si je trouve un moyen de fiabiliser ça (c'est pas gagné...).
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé
Gamoreen



Inscrit le: 18 Fév 2006
Messages: 18
Message Posté le: 22/06/2008 0:34 Sujet du message:
merci pour le test Smile

alors oui, la methode utilisée pour quiter (UIButton_Input_PregameCancel) est theoriquement utilisée quand un compte se connecte au serveur mais qu il n'a pas encore de personnage. Le serveur doit donc se trouver avec un objet sur les bras dont il ne sait pas quoi faire mais je n'avais pas le souvenir d'avoir eu dse problemes avec la fonction en soi (je m'etais rajouté un bouton dans le menu option IG qui l'utilisait (pour revenir au menu multiplayer et pas au menu principale pour les decos/recos), et je ne crois pas avoir jamais planté personne)

ca freeze dans la zone? sur le module entier? ( en micro test, ca ne s'est pas du tout vu)

Est ce que la transition lance un autre script qui pourrait eter interrompu par la disparition de la connection? (voir un OnHeartBeat? )
Est il possible que le OnClientLeave soit declenché, mais un peu plus tard, suffisament pour que l'absence du perso pose probleme?

j'essairais bien un delaycommand(2.0f, BootPc(oPC)) dans la derniere phase du script, mais il est possible que ca fasse paniquer le serveur encore plus Very Happy

Citation
le système fonctionne assez bien

est ce qu'il y a eu dse cas identifiables ou ca ne fonctionne pas, pour le joueur qui l'utilise?

hopla Smile
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
CaptainYann



Inscrit le: 27 Juil 2006
Messages: 4
Message Posté le: 22/06/2008 7:36 Sujet du message:
Après tests plus approfondis :

- C'est le OnExit de la zone quittée qui n'est pas executé, le OnClientLeave s'exécute bien, j'ai dit une bêtise. Du coup mon script de nettoyage de zone ne s'exécutait pas correctement. Là j'essaye en envoyant brièvement le pj dans une zone de transit avant de lancer le portaling pour voir si ça aide.

- Le symptôme de dysfonctionnement est un plantage sec du serveur quitté. Mais ça ne le fait pas pour tous les joueurs, et après analyse il semble que ça s'applique surtout à un joueur qui a une connexion internet lente, pour lui c'est systématique. Donc peut être que c'est son temps de transition qui pose un problème.

Citation

j'essairais bien un delaycommand(2.0f, BootPc(oPC)) dans la derniere phase du script, mais il est possible que ca fasse paniquer le serveur encore plus


C'est ce que j'ai essayé en premier, mais là le transfert s'interrompt carrément. Je tatonne alors pour trouver une valeur plus grande de "sécurité", pour gicler le pj du premier serveur quand il a déjà rejoint le deuxième. Là j'en suis à 20 secondes, pour moi ça marche mais je n'ai pas encore pu tester avec le joueur en question.

Je te tiens informé des évolutions Wink
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé
Gamoreen



Inscrit le: 18 Fév 2006
Messages: 18
Message Posté le: 22/06/2008 13:27 Sujet du message:
La zone de transit c'est toujours plus sur, mais il n y a pas un moyen de declencher artificiellement n'importe quel evenement, dans ce jeu?(je ne me souviens plus, j'ai cru lire ca quelque part)

pour la plantage sec... est ce que vous avez eu le temps de chronometrer le temps que le serveur met a planter, apres que le joueur concerné ai lancé la procedure?

Le probleme ne viens probablementpas de AP_CSOs (ils ne transmettent rien au serveur 1)
Donc il reste 2 suspects. Le plus probable etant AP_GCN (lui il est susceptible de spammer le serveur). est ce que le/les joueur(s) qui ont des soucis peuvent essayer d'augmenter l'updaterate du PototypeButton d'AP_GCN.xml (il est a 1.0, pour l'instant, le mettre a 10.0 pour un test, ca ralenti la procedure, mais je n'ai pas encore d'idée pour me passer de Timer a cet endroit)

Je n'ai pas plus d'idée pour l'instant ^^

Pour le BootPc du serveur 1, j'ai un peu peur que ca n'ejecte le perso du serveur 2... (j'avais eu des soucis comme ca, lors des tests, quand j'etais connecté a 2 serveurs a la fois)
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Gamoreen



Inscrit le: 18 Fév 2006
Messages: 18
Message Posté le: 22/06/2008 14:15 Sujet du message:
tiens, ben si, j'en ai une,d'idée...

Je sais plus si ca marche, ca, et la je n'ai pas le temps de tester, mais si quelqu'un pour qui le system fonctionne veux bien essayer de remplacer, dans ap_gcn.xml :

Citation
<UIButton name="PrototypeButton" x=0 y=0 height=36 style="STYLE_LIST_BUTTON" prototype=true
update=true updaterate="1.0"
OnUpdate0=UIObject_OnUpdate_UpdateCharSelectionCharacter()
OnUpdate1=UIObject_Misc_SetLocalVarString(local:10)
OnUpdate2=UIObject_Misc_ExtractData(self:,int,0,local:11)
OnUpdate3=UIObject_Misc_ExecuteServerScript("gui_ap",local:10,local:11)
>


par
Citation
<UIButton name="PrototypeButton" x=0 y=0 height=36 style="STYLE_LIST_BUTTON" prototype=true
update=true updaterate="1.0"
OnGainedFocus0=UIObject_Misc_SetLocalVarString(local:12,"gui_ap")
OnUpdate0=UIObject_OnUpdate_UpdateCharSelectionCharacter()
OnUpdate1=UIObject_Misc_SetLocalVarString(local:10)
OnUpdate2=UIObject_Misc_ExtractData(self:,int,0,local:11)
OnUpdate3=UIObject_Misc_ExecuteServerScript(local:12,local:10,local:11)
>


si ca marche encore apres, on peut se passer du timer (toujours plus rapide, pour les gens chez qui ca maarche ^^ )
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Gamoreen



Inscrit le: 18 Fév 2006
Messages: 18
Message Posté le: 23/06/2008 8:55 Sujet du message:
bon, ca marche pas l'UIObject_Misc_SetLocalVarString(local:12,"gui_ap") (et c'est bien dommage, ca aurait ete nice pour d'autres applications )

donc c'est timer ici.
en fixant l'updaterate au framerate (ap_gcn) , j'ai freezé mon serveur test (pas planté, mais quand meme), donc c'est peut etre une bonne piste finalement.
Si il s'avere qu'il faut effectivement assurer une valeur enorme sur ce timer, on peut envisager une utilisation separée d'ap_gcn (qui finalement ne fait que determiner la ligne du perso... donc par exemple a la connection , en transparent, et sauvegarder ca avec une localvar sur oPC) et des deux autres (ap_dsc et les ap_gcos) qui assurent la connection effective.

autre probleme, j'ai testé en envoyant sur un serveur inexistant, et on ne reviens pas au menu multiplayer, en cas d'erreur, on bloque sur une page de chargement.... je cherche a corriger ca (renvoyer sur le serveur d'avant, c'est a priori possible, mais ca veut dire beaucoup plus d'xmls et de preparation)
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
CaptainYann



Inscrit le: 27 Juil 2006
Messages: 4
Message Posté le: 23/06/2008 10:08 Sujet du message:
Je suis passé à une phase de test à plus grande échelle, en plaçant les ui en hak.

Le joueur qui portal passera maintenant systématiquement par une zone de transit, pour éviter les décos "sales" en zone de jeu.

J'ai également aménagé tout mon code pour les évènements récurrents qui peuvent concerner le perso (sauvegardes et vérifications diverses sur OHB module ou OnUserDefine Module) de façon à ce qu'il ne se fassent plus au moment où le perso s'engage dans un portaling. Je pense que c'est ce qui pouvait poser soucis parfois, si les deux serveurs essayaient d'accéder en même temps au fichier .bic par exemple.

j'ai mis du debug pour tracer les temps de portaling et savoir si le serveur de départ est toujours "vivant" 6 secondes après le portal du joueur.

Ca devrait permettre déjà d'y voir un peu plus clair :p
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   

Page 1 sur 2
Sauter vers:  

 

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

Traduction par : phpBB-fr.com
Powered by phpBB © 2001, 2007 phpBB Group