Ho da poco ricominciato a mettere le mani su NWN. Ho deciso di riprendere un problema che avevo da tempo e che non sono riuscito a risolvere: quello dei Dm presenti nella Player Chat. Li vorrei rimuovere.
Ho notato che nel chatselect.xml (ovvero il file al quale fa riferimento la PlayerChat) C'è una funzione chiamata UIListBox_OnUpdate_ChattableCharacters() che crea una lista con tutti i giocatori presenti sul server, DM inclusi.
Ho pesato di risolvere il problema creando uno script alternativo che prendesse tutti i PG online eccetto i DM e li inserisse nella lista UI mediante la funzione UIObject_Misc_ExecuteServerScript() (da inseire poi al posto della prima).
Mi sembrava una cosa piuttosto semplice all'inizo. Non è stato così.
Non sono riuscito in nessun modo a far apparire la lista dei PG nella Ui in game.
La difficoltà nasce dal fatto che non so come fare a modificare dinamicamente il testo di un oggetto UI. La funzione SetGUIObjectText() sembra non dare alcun risultato.
Avete qualche idea? Forse sbaglio completamente l'approccio al problema?
Edit.
Ho provato anche un'altra strada. Inserire al posto dell prima funzione, quest'altra
UIListBox_OnUpdate_DisplayPlayerList() che gestisce la Player List. In effetti sembrerebbe esattamente quello che serve a me dato che in quest'ultima appaiono solamente i PG, non i DM. Il risultato è questo:
Nella Player Chat ora appaiono esattamente tanti pulsanti quanti sono i PG connessi; il problema è che i pulsanti sono vuoti, ovvero, non contengono scritte. Se ci clicco sopra, nella barra della chat mi appare la scritta t\ "RosterData".
Considerando che il file xml è questo:
Codice:
<?xml version="1.0" encoding="utf-8">
<!--
OnAdd=UIScene_Misc_RequestRosterUpdates("true")
OnRemove=UIScene_Misc_RequestRosterUpdates("false")
-->
<UIScene name="ChatSelect" x=20 y=128 width=280 height=200 draggable=true OnAdd=UIScene_Misc_OnAddChatSelect()
scriptloadable=true fadeout=.3 fadein=.3 priority="SCENE_INGAME"/>
<!-- Close Button -->
<UIButton name="CloseButton" x=250 y=2 width=27 height=27 OnLeftClick=UIButton_Input_CancelPartySelect() style="STYLE_CLOSE_BUTTON" >
</UIButton>
<UIListbox name="RosterMemberList" x="5" y="32" width="270" height="167"
showpartialchild="false" scrollbaronright="true" update="true" OnUpdate=UIListBox_OnUpdate_ChattableCharacters() >
<UIButton name=PrototypeButton x=12 y=0 height=24 width=180 prototype=true
OnLeftClick=UIButton_Input_SelectedInitiateChat() style="STYLE_LIST_BUTTON" >
<UIText name="RosterData" width=PARENT_WIDTH height=PARENT_HEIGHT align=left valign=middle fontfamily="Default" />
</UIButton>
<UIScrollBar name="SB" style="STYLE_SB_THIN"></UIScrollBar>
</UIListbox>
<UIIcon img="stats_container_03.tga" width=PARENT_WIDTH height=PARENT_HEIGHT/>
Ne deduco che per risolvere il tutto si debba riuscire a inserire al posto di RosterData, il nome del PG mediante script. Ma torno al punto di partenza, poichè non riesco a fare ciò.