Login | Iscriviti


Tutti gli orari sono UTC +1 ora


Oggi è dom 5 set 2010, 19:44




Apri un nuovo argomento Rispondi all’argomento  [ 9 messaggi ] 
Autore Messaggio
 Oggetto del messaggio: Rimuovere i DM dalla Player Chat
MessaggioInviato: mer 5 ago 2009, 17:21 

Iscritto il: ven 5 set 2008, 1:16
Messaggi: 20
Località: Firenze
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ò.


Top
 Non connesso Profilo  
 
 Oggetto del messaggio: Re: Rimuovere i DM dalla Player Chat
MessaggioInviato: mar 25 ago 2009, 14:32 
Site Admin
Avatar utente

Iscritto il: lun 1 set 2008, 22:20
Messaggi: 248
Posso vedere lo script che usi tu per popolare la lista della playerchat?

Sicuramente la funzione hardcoded
Codice:
UIListBox_OnUpdate_DisplayPlayerList()
non può essere utilizzata a dovere dal momento che, immagino, preveda il popolamento di una lista che ha come prototipo qualcosa di diverso rispetto a quello player chat list.
Questo implica che anche se hai una lista con dei bottoni clickabili i dati locali dei singoli elementi potrebbero non essere adatti all'utilizzo della chat.

Purtroppo la funzione hardcoded
Codice:
UIButton_Input_SelectedInitiateChat()
non ci aiuta molto a capire cosa e da dove dobbiamo estrarre i dati che ci servono per inizializzare la finestra di chat vera e propria e bisogna procedere per tentativi.


P.S.
Purtroppo mi è sfuggito questo thread a tempo debito... Spero di essere ancora in tempo :)


Top
 Non connesso Profilo  
 
 Oggetto del messaggio: Re: Rimuovere i DM dalla Player Chat
MessaggioInviato: mer 26 ago 2009, 14:36 

Iscritto il: ven 5 set 2008, 1:16
Messaggi: 20
Località: Firenze
Da quello che ho capito finora, la funzione
Codice:
UIButton_Input_SelectedInitiateChat()


prende il nome del bottone cliccato e automaticamente lo inserisce nella barra di chat sotto questa forma t\ "nome bottone"

Non so se è una cosa fattibile, ma servirebbe uno script che crei una lista contenente tanti bottoni clickabili quanti sono i pg connessi. Ogni bottone dovrebbe poi avere come nome, il nome del pg relativo.


Top
 Non connesso Profilo  
 
 Oggetto del messaggio: Re: Rimuovere i DM dalla Player Chat
MessaggioInviato: mer 26 ago 2009, 15:54 
Site Admin
Avatar utente

Iscritto il: lun 1 set 2008, 22:20
Messaggi: 248
Mordred ha scritto:
Da quello che ho capito finora, la funzione
Codice:
UIButton_Input_SelectedInitiateChat()


prende il nome del bottone cliccato e automaticamente lo inserisce nella barra di chat sotto questa forma t\ "nome bottone"

Non so se è una cosa fattibile, ma servirebbe uno script che crei una lista contenente tanti bottoni clickabili quanti sono i pg connessi. Ogni bottone dovrebbe poi avere come nome, il nome del pg relativo.


E' assolutamente fattibile, anzi, direi raccomandabile visto che si potrebbe avere un controllo maggiore sulle meccaniche di funzionamento e aggiornamento della lista.
L'unica cosa che non mi convince è se è possibile inserire traite script un testo nella chat (i.e. "/t nome_PG").
Tu hai già provato?


Top
 Non connesso Profilo  
 
 Oggetto del messaggio: Re: Rimuovere i DM dalla Player Chat
MessaggioInviato: mer 26 ago 2009, 16:09 

Iscritto il: ven 5 set 2008, 1:16
Messaggi: 20
Località: Firenze
Caos81 ha scritto:
L'unica cosa che non mi convince è se è possibile inserire traite script un testo nella chat (i.e. "/t nome_PG").
Tu hai già provato?

La funzione
Codice:
UIButton_Input_SelectedInitiateChat()

fa proprio questo, prende il nome del bottone clickato e lo inserisce nella chat.


Top
 Non connesso Profilo  
 
 Oggetto del messaggio: Re: Rimuovere i DM dalla Player Chat
MessaggioInviato: mer 26 ago 2009, 16:34 
Site Admin
Avatar utente

Iscritto il: lun 1 set 2008, 22:20
Messaggi: 248
Mordred ha scritto:
Caos81 ha scritto:
L'unica cosa che non mi convince è se è possibile inserire traite script un testo nella chat (i.e. "/t nome_PG").
Tu hai già provato?

La funzione
Codice:
UIButton_Input_SelectedInitiateChat()

fa proprio questo, prende il nome del bottone clickato e lo inserisce nella chat.


Il problema è che non si può assegnare dinamicamente il nome ad un bottone. Sotto il profilo puramente tecnico dire "prende il nome del bottone clickato" non ha alcun senso visto che il nome (attributo "name" di un elemento) non è in alcun modo rilevabile dall'engine delle UI. Inoltre sono molto scettico sul fatto che faccia riferimento al "nome" del bottone visto che solitamente vengono presi e passati come parametri i valori salvati nelle variabili locali della GUI o dei dati incapsulati nei singoli elementi.

Posso vedere un esempio in cui utilizzi praticamente la funzione UIButton_Input_SelectedInitiateChat() ?


Top
 Non connesso Profilo  
 
 Oggetto del messaggio: Re: Rimuovere i DM dalla Player Chat
MessaggioInviato: mer 26 ago 2009, 17:06 

Iscritto il: ven 5 set 2008, 1:16
Messaggi: 20
Località: Firenze
Faccio un esempio semplice. Ho modificato il chatselect.xml in modo che la lista contenga un solo bottone chiamato Nome_PG.

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" >
  <UIButton name=Nome_PG text=NomePG x=12 y=0 height=24 width=180
         OnLeftClick=UIButton_Input_SelectedInitiateChat() style="STYLE_LIST_BUTTON" >
         
      </UIButton>
      <UIScrollBar name="SB" style="STYLE_SB_THIN"></UIScrollBar>   
   </UIListbox>

   <UIIcon img="stats_container_03.tga" width=PARENT_WIDTH height=PARENT_HEIGHT/>


Cliccandoci sopra viene richiamata la funzione

UIButton_Input_SelectedInitiateChat()

Nella barra della chat apparirà /t "Nome_PG".

Se però non è possibile modificare dinamicamente il nome del bottone, credo che il tutto non sia realizzabile. O almeno non con la funzione SelectedInitiateChat()


Top
 Non connesso Profilo  
 
 Oggetto del messaggio: Re: Rimuovere i DM dalla Player Chat
MessaggioInviato: gio 27 ago 2009, 0:23 
Site Admin
Avatar utente

Iscritto il: lun 1 set 2008, 22:20
Messaggi: 248
Mordred ha scritto:
Faccio un esempio semplice. Ho modificato il chatselect.xml in modo che la lista contenga un solo bottone chiamato Nome_PG.

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" >
  <UIButton name=Nome_PG text=NomePG x=12 y=0 height=24 width=180
         OnLeftClick=UIButton_Input_SelectedInitiateChat() style="STYLE_LIST_BUTTON" >
         
      </UIButton>
      <UIScrollBar name="SB" style="STYLE_SB_THIN"></UIScrollBar>   
   </UIListbox>

   <UIIcon img="stats_container_03.tga" width=PARENT_WIDTH height=PARENT_HEIGHT/>


Cliccandoci sopra viene richiamata la funzione

UIButton_Input_SelectedInitiateChat()

Nella barra della chat apparirà /t "Nome_PG".

Se però non è possibile modificare dinamicamente il nome del bottone, credo che il tutto non sia realizzabile. O almeno non con la funzione SelectedInitiateChat()


Sei sicuro che esca scritto "Nome_PG" e non "NomePG"?


Top
 Non connesso Profilo  
 
 Oggetto del messaggio: Re: Rimuovere i DM dalla Player Chat
MessaggioInviato: gio 27 ago 2009, 1:43 

Iscritto il: ven 5 set 2008, 1:16
Messaggi: 20
Località: Firenze
Ho rifatto la prova e sono sicuro che esca

/t "Nome_PG"


Top
 Non connesso Profilo  
 
Visualizza ultimi messaggi:  Ordina per  
Apri un nuovo argomento Rispondi all’argomento  [ 9 messaggi ] 

Tutti gli orari sono UTC +1 ora


Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Vai a:  
cron