Récupérer description complète d'un item

Répondre
Partager Rechercher
Salut !

Est ce que quelqu'un sait comment récupérer la description complète d'un item telle qu'elle apparaît quand on fait clic droit/examiner? (avec les propriétés magiques détaillées, poids, ...)
J'ai regardé rapidement comment était fait examine.xml, mais ça me semble méchamment hardcodé...

Sinon est ce que c'est possible de récupérer le strref correspondant à la propriété d'item afin de refaire une description ressemblante?

L'idée finale est d'avoir une GUI qui liste différents items, et que quand on clique sur un item, la description s'affiche à côté, toujours sur la même GUI


Merci
__________________
http://img.xooimage.com/files21/b/4/0/bann_lcda-500x100-12abc53.gif
Tu dois pouvoir faire ça en combinant plusieurs fonctions, je pense à GetDescription, GetWeight, GetItemProperty..

Sans ça, je vois pas trop.
c'est faisable, mais sans automatiser la récupération du texte pour les propriétés des items (via la récupération du strref & correspondance tlk), ça va mettre des années à tout refaire...
J'essaye de récupérer les string des itemproprerty via les tables 2DA et le fichier tlk... mais c'est un beau bordel...
Je posterais le code obtenu ici quand j'aurais terminé
__________________
http://img.xooimage.com/files21/b/4/0/bann_lcda-500x100-12abc53.gif
Je remonte ce post vu qu'il y a du nouveau

Côté 2da, c'est mort, vu que tout est agencé n'importe comment et que la moitié des descriptions sont hardcodées, et re-générer une description complète de l'item reviendrais à faire un énorme script bourré de switch et de if partout :/

La solution je l'ai trouvé, mais c'est du hack assez immonde... mais ça marche ! ^^

Premièrement, il faut modifier la gui d'éxamination pour qu'elle mette à jour automatiquement une variable gui globale, contenant la description.
Code HTML:
<!-- [...] -->
<UIText name="EXAMINE_DESCRIPTION_TEXT" width=PARENT_WIDTH height=DYNAMIC align=left valign=top color="3d3131" fontfamily="NWN1_Dialog" style="bold"
            update=true
            OnUpdate0=UIObject_Misc_SetLocalVarString(local:666)
            OnUpdate1=UIObject_Misc_SetGlobalVarString(global:666,local:666)
            />
<!-- [...] -->
On met la description dans local:666, puis on met local:666 dans global:666 (pour des raisons obscures on ne peut pas directement mettre dans global:666)
On pourrait aussi appeler un script via le OnUpdate de l'objet GUI, mais je ne pense pas que vous voulez appeler un script en continu lorsque la GUI d'examination est ouverte


Ensuite il suffira de lancer
Code PHP:

AssignCommand(oPCActionExamine(oItem)); 

pour que la description soit stockée dans global:666 et accessible.

Ensuite, vu qu'on ne peut pas récupérer via script une variable GUI, on a deux solutions:

1) Récupérer la valeur de global:666 via un callback ExecuteScript, à condition que la fenêtre d'examination soit bien ouverte sur le bon item.
C'est assez difficile à mettre en place sur une GUI, vu qu'entre l'ouverture de l'examine et l'utilisation de la variable globale, le joueur peut examiner un autre item et changer la valeur de global:666

2) (c'est ce que j'ai fait) Réinitialiser global:666, examiner l'item puis ouvrir seconde GUI invisible qui va appeler en continu un script permettant de récupérer la description et de la traiter.

Script pour ouvrir la GUI invisible:
Code PHP:

            ActionExamine(oItem);
            
SetGlobalGUIVariable(oPC666"");
            
DelayCommand(0.1DisplayGuiScreen(oPCGUI_PANEL_WAITDESCFALSEGUI_FILE_WAITDESCTRUE)); 
GUI invisible:
Code HTML:
<?xml version="1.0" encoding="utf-8"?>
<UIScene name="CasierIbee_waitdesc" width=SCREEN_WIDTH height=SCREEN_HEIGHT draggable="false" scriptloadable="true" priority="SCENE_INGAME_FULLSCREEN" fullscreen="true" modal="true" capturemouseclicks="true"
    update=true
    UpdateRate="0.2"
 OnUpdate=UIObject_Misc_ExecuteServerScript("gui_casieribee","SetItemDescription",global:666)
    />
Script pour récupérer et traiter la description
Code PHP:

           void main(string sCommandstring sVar0)
           
//...
           
if(sVar0 != ""){
            
CloseGUIScreen(oPCGUI_PANEL_WAITDESC);
            
//sVar0 contient la description complète de l'item
        

Au final, le joueur ne remarque rien d'anormal et on récupère (certes en galérant un peu) la description de l'item, qui dans mon cas est stockée dans une base MySQL pour un système d'achat/vente entre joueurs :
sans-titre-2-467a8d4.png
__________________
http://img.xooimage.com/files21/b/4/0/bann_lcda-500x100-12abc53.gif
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés