Tatav
Inscrit le: 04 Oct 2006
Messages: 79
Posté le: 11/12/2006 14:42 Sujet du message: [résolu]Forcer l'affichage du journal des quêtes
Je souhaite donc faire apparaître le journal des quêtes sur l'écran de mon joueur automatiquement. Pour cela j'exécute le script suivant:
Code: |
void main()
{
DisplayGuiScreen(GetEnteringObject(),"SCREEN_JOURNAL",TRUE);
} |
Je suis allé récupérer le "SCREEN_JOURNAL" dans le ingamegui.ini et journal.xml donc le nom doit être correct, cependant rien ne s'affiche, que la fenêtre soit modale ou non...
Si quelqu'un sait comment gérer ceci, merci d'avance
Dernière édition par Tatav le 14/12/2006 18:12; édité 2 fois
Amo
Inscrit le: 06 Juil 2006
Messages: 37
Localisation: Paris (pas loin)
Posté le: 11/12/2006 14:44 Sujet du message:
Tu veux la faire apparaitre a quel moment? Lorsqu'une quete est donnée? Lorsqu'un joueur entre dans une certaine zone?
Tatav
Inscrit le: 04 Oct 2006
Messages: 79
Posté le: 11/12/2006 14:59 Sujet du message:
Quand le joueur entre dans un zone,
Le code est réduit là, je fais d'autres traitements avant, le paramètre du joueur n'est pas en cause, il recoit bien les traitements précédant cet affichage. J'ai même tenté avec un delay voir si ca ne s'affichait pas pendant le chargement puis à la fin du chargement cela se réinitialise et le résultat est le même... rien ne s'affiche.
Enfin ca ne marche pas plus si on tente de l'afficher en ativant un objet.
Amo
Inscrit le: 06 Juil 2006
Messages: 37
Localisation: Paris (pas loin)
Posté le: 11/12/2006 15:22 Sujet du message:
Etrange, t'as essayer de le placer ailleur?
*laisse le truc ci dessous pour d'autres qui pourraient avoir une solution*
Code: |
//RWT-OEI 12/08/05
//This function allows the script to display a GUI on the player's client.
//The first parameter is the object ID owned by the player you wish to
//display the GUI on.
//The second parameter is the name of the GUI screen to display. Note
//that only screens located in the [GuiScreen] section of ingamegui.ini
//will be accessible.
//The 3rd parameter indicates if the displayed GUI should be modal when
//it pops up.
void DisplayGuiScreen( object oPlayer, string sScreenName, int bModal ); |
Tatav
Inscrit le: 04 Oct 2006
Messages: 79
Posté le: 11/12/2006 15:40 Sujet du message:
Oui j'ai tenté en entrant dans une zone, en activant un objet, et pendant un dialogue ( en récupérant le joueur avec le bon appel bien entendu) ,
avec ou sans DelayCommand, en le placeant dans une autre fonction et en retardant l'appel de cette nouvelle fonction, en passant le paramètre modal à vrai ou faux (je dois dire que je ne sait pas trop à quoi sert ce paramètre).
Voila le genre de test que j'ai fait à chaque fois.
Pour l'utilisation d'un objet,
Code: |
void test(object oPC)
{
FloatingTextStringOnCreature("Delayed",oPC);
DisplayGuiScreen(oPC,"SCREEN_JOURNAL",TRUE);
DisplayGuiScreen(oPC,"SCREEN_JOURNAL",FALSE);
DisplayGuiScreen(oPC,"screen_journal",FALSE);
DisplayGuiScreen(oPC,"screen_journal",TRUE);
}
void main()
{
object oPC=GetLastUsedBy();
FloatingTextStringOnCreature("Activated",oPC);
DisplayGuiScreen(oPC,"SCREEN_JOURNAL",TRUE);
DisplayGuiScreen(oPC,"SCREEN_JOURNAL",FALSE);
DisplayGuiScreen(oPC,"screen_journal",TRUE);
DisplayGuiScreen(oPC,"screen_journal",FALSE);
DelayCommand(10.2,test(oPC));
} |
Les textes flottants apparaissents mais pas le journal...
Code: |
SetGUIObjectDisabled(oPC,"SCREEN_JOURNAL","SCREEN_JOURNAL",FALSE);
SetGUIObjectHidden(oPC,"SCREEN_JOURNAL","SCREEN_JOURNAL",FALSE); |
Ceci ne donne aucun résultat non plus placé avant ou après l'appel du DispalyGuiScreen...
Amo
Inscrit le: 06 Juil 2006
Messages: 37
Localisation: Paris (pas loin)
Posté le: 13/12/2006 5:49 Sujet du message:
Citation
Note that only screens located in the [GuiScreen] section of ingamegui.ini will be accessible.
(Notez que seulement les écrans situés dans la section [GuiScreen] d'ingamegui.ini seront accessibles.)
Problème : y'a pas [GuiScreen] dans ce fichier...
\Neverwinter Nights2\UI\default\ingamegui.ini
[MandatoryGUI]
SCRIPT_SCREEN_PARTYSELECT=partyselect.xml
SCREEN_ACTIONQUEUE=actionqueue.xml
SCREEN_AREAMAP=areamap.xml
SCREEN_BARTER=barter.xml
SCREEN_CHARACTER=characterscreen.xml
SCREEN_CONTAINER_DEFAULT=container.xml
SCREEN_CUTSCENE=cutscene.xml
SCREEN_CONTEXTMENU=contextmenu.xml
SCREEN_HIDDEN_DEATH=hidden_death.xml
SCREEN_FADE=fade.xml
SCREEN_GFX=gfx_options.xml
SCREEN_HOTBAR=hotbar.xml
SCREEN_INVENTORY=inventoryscreen.xml
SCREEN_JOURNAL=journal.xml
SCREEN_LETTERBOX=letterbox.xml
SCREEN_LOADGAME=loadgamescreen.xml
SCREEN_LOADING=loadingscreen.xml
SCREEN_MINIMAP=minimap.xml
SCREEN_MODEBAR=modebar.xml
SCREEN_MENU_OPTIONS=optionsmenu.xml
SCREEN_OPTIONS=optionscreen.xml
SCREEN_PARTY_BAR=partybar.xml
SCREEN_PARTY_DEATH=partydeath.xml
SCREEN_PARTYINVITE=partyinvite.xml
SCREEN_PARTYSELECT=partyselect.xml
SCREEN_PLAYERLIST=playerlist.xml
SCREEN_PLAYERMENU=playermenu.xml
SCREEN_PLAYERMENU_POPUP=playermenu_popup.xml
SCREEN_QUICKCHAT=quickchat.xml
SCREEN_SAVEGAME=savegamescreen.xml
SCREEN_SAVEGAMENAME=savegamename.xml
SCREEN_SPELLS_QUICK=quickspell.xml
SCREEN_SPELLS_KNOWN=spells_known.xml
SCREEN_SPELLS_MEMORIZED=spells_memorized.xml
SCREEN_SPLITGOLD=splitgold.xml
SCREEN_STORE=store.xml
SCREEN_TARGETED_OBJECT=target_object.xml
SCREEN_TARGETED_ENEMY=target_enemy.xml
SCREEN_TIMINGBAR=timingscreen.xml
SCREEN_TOOLTIP_1=tooltip1.xml
SCREEN_TOOLTIP_2=tooltip2.xml
SCREEN_TOOLTIP_3=tooltip3.xml
SCREEN_WORLDMAP=worldmap.xml
SCREEN_MODULESAVE=saving_module.xml
SCREEN_POPUP_MESSAGE=message_popup.xml
[ExamineGUI]
SCREEN_EXAMINE=examine.xml
[LevelUpGUI]
SCREEN_LEVELUP_ABILITIES=levelup_abilities.xml
SCREEN_LEVELUP_ANIMAL=levelup_animal.xml
SCREEN_LEVELUP_BONUS_FEATS=levelup_bfeats.xml
SCREEN_LEVELUP_CLASS=levelup_class.xml
SCREEN_LEVELUP_DEITY=levelup_deity.xml
SCREEN_LEVELUP_DOMAIN=levelup_domain.xml
SCREEN_LEVELUP_FAMILIAR=levelup_familiar.xml
SCREEN_LEVELUP_FINISH=levelup_summary.xml
SCREEN_LEVELUP_NORMAL_FEATS=levelup_nfeats.xml
SCREEN_LEVELUP_RANGER=levelup_ranger.xml
SCREEN_LEVELUP_SCHOOL=levelup_school.xml
SCREEN_LEVELUP_SKILLS=levelup_skills.xml
SCREEN_LEVELUP_SPELLS=levelup_spells.xml
[ChatWindowGUI]
SCREEN_MESSAGE_1=defaultchat.xml
SCREEN_PAUSED=paused.xml
[ChatMPWindowGUI]
SCREEN_MESSAGEMP_1=defaultmpchat1.xml
SCREEN_MESSAGEMP_2=defaultmpchat2.xml
[MessageBoxGUI]
SCREEN_MESSAGEBOX_DEFAULT=messageboxdefault.xml
SCREEN_MESSAGEBOX_INFORMATION=messageboxinfo.xml
SCREEN_MESSAGEBOX_SPLITSTACK=splitstack.xml
SCREEN_MESSAGEBOX_SPLITSTACKSTORE=splitstackstore.xml
SCREEN_MESSAGEBOX_TUTORIAL=messageboxtutorial.xml
SCREEN_MESSAGEBOX_INFORMATIONLARGE=messageboxinfolarge.xml
SCREEN_STRINGINPUT_MESSAGEBOX=stringinputmessagebox.xml
SCREEN_MESSAGEBOX_MOTD=messageboxmotd.xml
SCREEN_MESSAGEBOX_REPORT=messageboxreport.xml
SCREEN_MESSAGEBOX_LEFTALIGNED=messageboxleftaligned.xml
[OptionalGUI]
SCREEN_CONTAINER_BAG=container.xml
SCREEN_CONTAINER_CHEST=container.xml
SCREEN_CONTAINER_SILVERSHARD=container.xml
[DungeonMasterGUI]
SCREEN_DMC_TOOLBAR=dmctoolbar.xml
SCREEN_DMC_DIFFICULTY=dmcdifficulty.xml
SCREEN_DMC_CREATOR=dmccreator.xml
SCREEN_DMC_CHOOSER=dmcchooser.xml
SCREEN_DMC_SEARCH=dmcsearch.xml
SCREEN_DMC_CASTER=dmccaster.xml
Tatav
Inscrit le: 04 Oct 2006
Messages: 79
Gloirin
Inscrit le: 22 Juin 2005
Messages: 251
Posté le: 14/12/2006 17:37 Sujet du message:
j'ai une autre piste ..
en fait je suis en train de bosser sur les UI et là je raconte ma vie pour te faire saliver un coup ..
et à part ça la vie ?
bref, pour que ça marche il faut que dans le fichier xml, il y ait l'attribut scriptloadable=true dans l'élément UIScene .
Regarde si ça y est .. (j'ai déjà réussi à faire apparaitre des écrans donc y a pas de soucis normalement)
Tatav
Inscrit le: 04 Oct 2006
Messages: 79
Posté le: 14/12/2006 18:11 Sujet du message:
Dans le mille , fallait le connaitre celui la ...
Effectivement, en rajoutant cela, tout fonctionne convenablement,
juste un truc étrange, contrairement à ceux que dit le descriptif de la fonction,
si "SCREEN_JOURNAL = journal.xml" est dans la section [GuiScreen] rien ne se passe alors que si on le laisse dans sa section initiale, tout marche correctement.
Il en est de même si l'on test avec "SCREEN_JOURNAL2 = journal2.xml",
le journal n'apparait que si ce paramètre est dans la section [MandatoryGUI].
Enfin, il y'a peut être encore un paramètre dans les xml qui font que ca se comporte ainsi.
En tout cas, un grand merci , je n'aurais surement jamais pensé à farfouiller plus que ca dans les xml.
Gloirin
Inscrit le: 22 Juin 2005
Messages: 251
Posté le: 14/12/2006 18:28 Sujet du message:
c'est pas si étrange, en fait ils ont foiré leur doc ..
le fait de mettre l'attribut le rajoute si tu veux dans les écrans appelables depuis script, sinon non
Tatav
Inscrit le: 04 Oct 2006
Messages: 79
Posté le: 15/12/2006 15:20 Sujet du message:
Oui la doc à quelques lacunes effectivemement . Enfin je vois pas trop la raison qu'ils ont eu à "verrouiller" ainsi le journal des quêtes, ils auraient pu, via une option dans le jeu, laisser le joueur choisir si il souhaite ou non, qu'à la mise à jour des quêtes, cette fenêtre apparaisse automatiquement ou non.
Mais de là à être obligé de rajouter un paramètre dans leur fenêtre même... Je ne pense pas que laisser "trainer" ce paramètre soit très génant.
Garrath
Inscrit le: 21 Oct 2005
Messages: 150
Posté le: 17/12/2006 12:43 Sujet du message:
c'est le meme pb que pour faire apparaitre ou disparaitre les minimap etc...
Alors apres est ce que le fonctionnement est le meme en multi?
Si il faut modifier les fichiers des joueurs en multi cette solution n'est pas viable.
Car le hic du system c'est que si l'on veut que le comportement soit identique en multi il faut que les joueurs aient des fichiers de leur UI modifiés...
et vu que la modif est relativement simple a faire, meme si on fournis les fichiers d'interfaces aux joueurs j'ai peur que certain aillent enlever l'attribut scriptloadable des fichiers...
Sinon oui la doc est tout plein de lacunes... et si y avait que la doc...
Tatav
Inscrit le: 04 Oct 2006
Messages: 79
Posté le: 17/12/2006 14:32 Sujet du message:
En placeant les xml modifiés dans l'override cela fonctionne aussi en multi, ceux avec le xml dedans ont l'apparition automatique du journal alors que ceux sans n'ont pas d'affichage.
Dans ce cas si ils s'amusent à modifier le xml ce n'est pas trop grave mais c'est sur que pour ton système de désactivation des cartes, là ca devient une faille...
Il faudrait avoir des haks verrouillables ou l'on ne puisse ni extraire ni modifier son contenu ou avoir un moyen de vérifier l'intégrité d'un hak dans le jeu via son CRC ou quelquechose du genre. Si il a été modifié, on empêche son chargement...
Sinon une question niveau priorité, entre un fichier contenu dans un hak et un dans l'override, il choisit lequel en premier ? (je penche pour le hak mais je préfère être sur...)
Garrath
Inscrit le: 21 Oct 2005
Messages: 150
Posté le: 18/12/2006 23:52 Sujet du message:
Normalement il est cense prendre l'override en priorite... enfin c'etait comme cela dans le 1.
Par contre tout ne peut pas etre dans un hak, il faudrait voir si on peut rajouter les elements d'interface dans un hak (ca c sur qu'on peut ) et si c gere par le jeu.