Personalizzazione del client: differenze tra le versioni

Da Zulu Hotel Italia - Time Warp.
(Files)
 
(18 versioni intermedie di uno stesso utente non sono mostrate)
Riga 19: Riga 19:
  
 
==Client 6.x KR (Kingdom Reborn), 2007-2009==
 
==Client 6.x KR (Kingdom Reborn), 2007-2009==
Nuovo tentativo di lanciare un client 3D, ancora oggi esistente sotto il nome di ''enhanced client''. Nessun'altra modifica.
+
Nuovo tentativo di lanciare un client 3D, ancora oggi esistente sotto il nome di ''enhanced client''. Da questa versione in poi ''Trammel'' diventa a tutti gli effetti una mappa a sé stante e compaiono quindi i file mul con id 1 ('''map1.mul''', '''statics1.mul''', ...)
  
 
==Client 7.x SA (Stygian Abyss) e HS (High Seas), 2009-oggi==
 
==Client 7.x SA (Stygian Abyss) e HS (High Seas), 2009-oggi==
Riga 27: Riga 27:
 
=Files=
 
=Files=
 
https://web.archive.org/web/20040203135058/http://alazane.surf-va.com/file_formats.html
 
https://web.archive.org/web/20040203135058/http://alazane.surf-va.com/file_formats.html
 +
 +
Oltre a questi, sono disponibili nei nuovi clients alcuni files di testo per la conversione "al volo" di alcune grafiche/animazioni:
 +
* '''equipconv.def''': Converte l'animazione utilizzata per gli oggetti quando sono equipaggiati, in base alla grafica del PG che li equipaggia, i campi sono:
 +
** ''bodyType'': La grafica del PG che equipaggia l'oggetto, se questa coincide viene effettuata la conversione
 +
** ''equipmentID'': La grafica (animazione) dell'oggetto equipaggiato, se questa coincide viene effettuata la conversione
 +
** ''convertToID'': La nuova grafica (animazione) da utilizzare
 +
** ''gumpIdTuUse'': La nuova grafica da visualizzare nella gump (0 = equipmentID + 50000, -1 = convertToID + 50000, other numbers are the actual gumpID )
 +
** ''hue'': Il nuovo colore
 +
* '''bodyconv.def''': This file overloads the data loaded from the CD/HD cache system from a very low level.  Given a object type, it will return the index in anim2.mul/anim3.mul/etc the game should use instead of art from anim.mul. The maximum value for an index is 2048. Formato:<br>''<Object> <LBR version (anim2)> <AoS version (anim3)> <AoW version (anim4)><Mondain version (anim5)>''
 +
* '''body.def''': Formato:<br><ORIG BODY> {<NEW BODY>} <NEW HUE>
 +
* '''mobtypes.txt''': Animation types for animation lookups. Formato:<br>''<ID> <TYPE> <FLAGS>''
 +
 +
==MapDiff==
 +
Questa categoria di files permette di sovrascrivere alcune parti della mappa. Ad esempio, sono usati per trasformare ''Occlo'' in ''New Heaven'' su Map1, o per inserire la ''Fortezza Minax'' sopra destard su Map0, o per trasformare il castello in rovina di LBT in un castello ancora in salute su Map2. I files sono:
 +
* '''mapdifX.mul'''
 +
* '''mapdiflX.mul'''
 +
* '''stadifX.mul'''
 +
* '''stadiflX.mul'''
 +
Con ''UO Fiddler'' è possibile abilitarne/disabilitarne il caricamento nelle opzioni (e visualizzare le differenze nella scheda "Map".<br/>
 +
Nel POL, è possibile abilitarne/disabilitarne il caricamento quando si generano i files ''realm'' con ''uoconvert'' tramite l'opzione '''usedif'''.<br/>
 +
Questi files vengono poi abilitati dal server tramite il pacchetto ''0xBF sub 0x18'' inviato dal server dopo il passaggio a una nuova mappa.
 +
 +
==Custom Housing==
 +
La gestione delle case custom è per buona parte gestita all'interno del client. Alcune files di testo permettono di personalizzare i componenti delle case. Questi files sono:
 +
* '''doors.txt''': contiene le porte
 +
* '''floors.txt''': contiene i tile del pavimento
 +
* '''misc.txt''': contiene elementi architettonici vari (archi, finestre, etc...)
 +
* '''roof.txt''': contiene i tile del tetto
 +
* '''stairs.txt''': contiene le scale
 +
* '''teleprts.txt''': contiene i teleporters
  
 
==ZHI 2001==
 
==ZHI 2001==
Lo ZHI del 2001 distribuiva tutte le personalizzazioni (inclusi gli ''hues''), in un unico file ''verdata.mul'' personalizzato. Tutti gli altri files, appartenenti probabilmente all'espansione ''Renaissance'' o ''T2A'' non erano stati modificati.
+
Lo ZHI del 2001 distribuiva tutte le personalizzazioni (inclusi gli ''hues''), in un unico file ''verdata.mul'' personalizzato. Tutti gli altri files, appartenenti probabilmente all'espansione ''Renaissance'' o ''T2A'' non erano stati modificati. Di seguito, il contenuto del verdata:
 +
 
 +
===Items===
 +
* Gli items 0x0dda - 0x0dde che nel gioco originale conterrebbero un "red moongate" con relativa animazione contengono invece un nuovo tipo di gate (quello usato per il CTF), con la relativa animazione
 +
** nome: "warp gate"
 +
* L'item 0x3d85 è stato aggiunto in uno spazio vuoto e rappresenta un parallelepipedo bianco con sopra un simbolo giallo
 +
** nome: "Gate of Life"
 +
* L'item 0x3d86 è stato aggiunto in uno spazio vuoto e rappresenta un paio di pantaloncini molto corti
 +
** nome: "loincloth", indossabile
 +
* L'item 0x3d87 è stato aggiunto in uno spazio vuoto e rappresenta una corda
 +
** nome: "dragonscale wire"
 +
* L'item 0x3d88 è stato aggiunto in uno spazio vuoto e rappresenta un mount (?)
 +
** nome: "animal pack"
 +
* L'item 0x3d89 è stato aggiunto in uno spazio vuoto e rappresenta gli occhiali da sole
 +
** nome: "sunglasses", indossabile
 +
* L'item 0x3ea2 è stato aggiunto in uno spazio vuoto e rappresenta un mount (?)
 +
** nome: ""
 +
 
 +
===Gumps===
 +
* Le gump 0x7d0, 0x7d1 sono state rimpiazzate con gump personalizzate per il paperdoll
 +
* Le gump 0x802, 0x803, 0x804, 0x807 sono state rimpiazzate con gump personalizzate per lo status
 +
* La gump 0x816 (messaggio di conferma) è stata rimpiazzata con una ricolorata a tinte marroni anziché grigie
 +
* La gump 0x866 (secure trade) è stata rimpiazzata con una ricolorata a tinte marroni anziché grigie
 +
* La gump 0x906 (scelta colore) è stata rimpiazzata con una ricolorata a tinte marroni anziché grigie
 +
* Le gump 0x910 e 0x911 (craft menu) sono state rimpiazzate con gump ricolorate a tinte marroni anziché grigie
 +
* La gump 0x9c4 (messaggio di conferma) è stata rimpiazzata con una ricolorata a tinte marroni anziché grigie
 +
* Le gump 0xc850 e 0xef60 sono state aggiunte per raffigurare gli occhiali da sole nel paperdoll (uomo, donna)
 +
* Le gump 0xc512 e 0xec22 sono state aggiunte per raffigurare le mutande nel paperdoll (uomo, donna)
 +
Inoltre, nell'ottica del passaggio a una distribuzione futura:
 +
* Le gump 0x2a6c e 0x2a6d, del tutto assenti nello ZHI originale, rappresentano la nuova finestra di stato di AOS e successivi
 +
 
 +
===Hues===
 +
La pratica di inserire i colori nel verdata non è mai stata adottata ufficialmente da ''OSI'' e per questo è quasi sconosciuta e non documentata. I colori nel verdata possono essere rimappati solo a blocchi di 8. Non esiste, a quanto pare, un tool per estrarli, ma sono riuscito a scriverne uno ad hoc (''parsestatic.py''). I colori così rimappati sono:
 +
* 1153-1184
 +
* 1273-1312
 +
 
 +
===Tile Data===
 +
Nelle espansioni più recenti, le gambe della plate sono state spostate sullo stesso layer dei pantaloni (4) anziché sul layer dedicato (24), che è usato per il supporto alle razze e le pelli dei PG. Come conseguenza, non è più impossibile indossare pantaloni e plate contemporaneamente a meno di non cambiare di nuovo il layer alle grafiche 0x1411 e 0x141a.
 +
Usando UO Fiddler, il layer è indicato come "Quality"
  
 
=Tools=
 
=Tools=
[http://downloads.polserver.com/browser.php?dir=/Tools UO Fiddler], rilasciato dagli stessi sviluppatori del ''POL'', è uno strumento completo per la visualizzazione e la modifica dei files ''.mul''. Integra inoltre un ottimo ''plugin'' (disabilitato per default) per la comparazione dei files.
+
* [http://downloads.polserver.com/browser.php?dir=/Tools UO Fiddler], rilasciato dagli stessi sviluppatori del ''POL'', è uno strumento completo per la visualizzazione e la modifica dei files ''.mul''. Integra inoltre un ottimo ''plugin'' (disabilitato per default) per la comparazione dei files.
 +
* '''SUMP''' è un ottimo tool multiuso:
 +
Simple Ultima Multi Patcher .4
 +
Currently supported UO clients: 4.x - 7.x
 +
Note: wildcards are supported for filename.  For example: *.exe
 +
 +
Usage: SUMP.exe <filename> <options>
 +
Example: SUMP.exe client.exe -m -l -s -b -g -e -h
 +
 +
Options:
 +
-m : Apply multi-uo patch which allows you to run multiple clients.
 +
-l : Apply always light patch.
 +
-s : Remove stamina check when pushing through mobiles.
 +
-b : Apply Batlin's sleep patch to reduce CPU usage.
 +
-g : Apply Garret's patch to display no-draw items.
 +
-e : Remove protocol encryption (and decryption).
 +
-h : Apply hifi's global sound patch which enables sound for minimized client.
 +
* [https://code.google.com/p/runuo/downloads/detail?name=RunUOSpyUO.rar&can=2&q= SpyUO] è un ottimo tool per loggare i pacchetti inviati a ricevuti dal client, decifrati. Supporta quasi tutte le versioni del client dalla più vecchia fino all'ultima.
  
 
=Problemi noti=
 
=Problemi noti=
  
 
==Stamina Bug==
 
==Stamina Bug==
Quello che viene comunemente chiamato ''stamina bug'' non è in realtà un bg ma bensì una feature del client. Utilizzando un POL dalla versione 096 in poi che supporti i reami multipli, il client viene informato del reame in cui si trova. Il reame di default è ''map0'', ovvero ''Felucca''. Le regole ufficiali ''OSI'' di movimento su Felucca prevedono che per oltrepassare una qualsiasi altra creatura si debba essere a piena stamina; trattandosi di una regola molto antica e mai modificata, questa è hardcodata anche nel client, per prevenire l'effetto "bounce".
+
Quello che viene comunemente chiamato ''stamina bug'' non è in realtà un bug ma bensì una feature del client. Utilizzando un POL dalla versione 096 in poi che supporti i reami multipli, il client viene informato del reame in cui si trova. Il reame di default è ''map0'', ovvero ''Felucca''. Le regole ufficiali ''OSI'' di movimento su Felucca prevedono che per oltrepassare una qualsiasi altra creatura si debba essere a piena stamina; trattandosi di una regola molto antica e mai modificata, questa è hardcodata anche nel client, per prevenire l'effetto "bounce".
  
Nonostante si tenti quindi di permettere il movimento, sarà il client a rifiutarsi di inviare il pacchetto di richiesta di movimento quando un altra creatura è presente sulla sua strada e la stamina non è piena.
+
Nonostante si tenti quindi di permettere il movimento, sarà il client a rifiutarsi di inviare il pacchetto di richiesta di movimento quando un'altra creatura è presente sulla sua strada e la stamina non è al massimo.
  
 
Questo problema è risolvibile patchando il client.
 
Questo problema è risolvibile patchando il client.

Versione attuale delle 01:15, 30 gen 2016

Versioni del client

Il major number del client di gioco segue solitamente il rilascio delle espansioni del gioco.

Client 1.x T2A (The Second Age), 1997-2000

Questo è stato il primo client disponibile ed era anche quello usato sul vecchio ZHI di Gennaio 2002. L'espansione T2A introduceva le Lost Lands senza tuttavia incrementare il numero di versione principale, modifica realizzata "riempiendo" una parte di spazio vuoto nella mappa.

Client 2.x RE (Renaissance), 2000-2001

Questo è il client usato inizialmente dal progetto Time Warp. Con questa espansione fu introdotto il supporto a Trammel e Felucca, la modifica è stata realizzata estendendo il sistema delle stagioni ed aggiungendone una quinta (desolation).

Client 3.x 3D (Third Dawn) e LBR (Lord Blackthorn's Revenge), 2001-2003

Parallelamente a questo client, fu sviluppato per la prima volta un client 3D, progetto poi naufragato. Introduce per la prima volta il supporto a mappe multiple, aggiungendo Ilshenar. La successiva espansione Lord Blackthorn's Revenge non ha introdotto modifiche tecniche ma solo nuovi contenuti.

Client 4.x AOS (Age of Shadows) e SE (Samurai Empire) 2003-2005

Supporta la mappa di Malas e introduce varie novità grafiche e a livelli di skill, principalmente basate su Paladini e Necromanti. Aggiunge un nuovo sistema di resistenze e il supporto alla fortuna. Aggiunge il supporto alle case personalizzate. La successiva espansione Samurai Empire aggiunge la mappa di Tokuno, novità grafiche per il mondo orientale, e nuove skills basate su Samurai e Ninja.

Client 5.x ML (Mondain's Legacy), 2005-2007

Supporta la nuova razza degli elfi e aggiunge qualche nuovo dungeon (sfruttando spazi inutilizzati sulle mappe già esistenti). Aggiunge la nuova skill spellweaving.

Questo client non supporta più il file verdata.mul

Client 6.x KR (Kingdom Reborn), 2007-2009

Nuovo tentativo di lanciare un client 3D, ancora oggi esistente sotto il nome di enhanced client. Da questa versione in poi Trammel diventa a tutti gli effetti una mappa a sé stante e compaiono quindi i file mul con id 1 (map1.mul, statics1.mul, ...)

Client 7.x SA (Stygian Abyss) e HS (High Seas), 2009-oggi

Viene aggiunta la mappa di Ter Mur e la nuova razza volante dei gargoyle, con molte caratteristiche uniche e alcune nuove skill. La successiva espansione High Seas si focalizza soprattutto su nuove funzionalità di gioco marittimo, rivoluzionando il sistema delle barche e includendo la famosa funzionalità di "boat smooth movement".

Dal client 7.0.18 in poi vengono abbandonati i vecchi file .mul e viene utilizzato il nuovo formato .uop

Files

https://web.archive.org/web/20040203135058/http://alazane.surf-va.com/file_formats.html

Oltre a questi, sono disponibili nei nuovi clients alcuni files di testo per la conversione "al volo" di alcune grafiche/animazioni:

  • equipconv.def: Converte l'animazione utilizzata per gli oggetti quando sono equipaggiati, in base alla grafica del PG che li equipaggia, i campi sono:
    • bodyType: La grafica del PG che equipaggia l'oggetto, se questa coincide viene effettuata la conversione
    • equipmentID: La grafica (animazione) dell'oggetto equipaggiato, se questa coincide viene effettuata la conversione
    • convertToID: La nuova grafica (animazione) da utilizzare
    • gumpIdTuUse: La nuova grafica da visualizzare nella gump (0 = equipmentID + 50000, -1 = convertToID + 50000, other numbers are the actual gumpID )
    • hue: Il nuovo colore
  • bodyconv.def: This file overloads the data loaded from the CD/HD cache system from a very low level. Given a object type, it will return the index in anim2.mul/anim3.mul/etc the game should use instead of art from anim.mul. The maximum value for an index is 2048. Formato:
    <Object> <LBR version (anim2)> <AoS version (anim3)> <AoW version (anim4)><Mondain version (anim5)>
  • body.def: Formato:
    <ORIG BODY> {<NEW BODY>} <NEW HUE>
  • mobtypes.txt: Animation types for animation lookups. Formato:
    <ID> <TYPE> <FLAGS>

MapDiff

Questa categoria di files permette di sovrascrivere alcune parti della mappa. Ad esempio, sono usati per trasformare Occlo in New Heaven su Map1, o per inserire la Fortezza Minax sopra destard su Map0, o per trasformare il castello in rovina di LBT in un castello ancora in salute su Map2. I files sono:

  • mapdifX.mul
  • mapdiflX.mul
  • stadifX.mul
  • stadiflX.mul

Con UO Fiddler è possibile abilitarne/disabilitarne il caricamento nelle opzioni (e visualizzare le differenze nella scheda "Map".
Nel POL, è possibile abilitarne/disabilitarne il caricamento quando si generano i files realm con uoconvert tramite l'opzione usedif.
Questi files vengono poi abilitati dal server tramite il pacchetto 0xBF sub 0x18 inviato dal server dopo il passaggio a una nuova mappa.

Custom Housing

La gestione delle case custom è per buona parte gestita all'interno del client. Alcune files di testo permettono di personalizzare i componenti delle case. Questi files sono:

  • doors.txt: contiene le porte
  • floors.txt: contiene i tile del pavimento
  • misc.txt: contiene elementi architettonici vari (archi, finestre, etc...)
  • roof.txt: contiene i tile del tetto
  • stairs.txt: contiene le scale
  • teleprts.txt: contiene i teleporters

ZHI 2001

Lo ZHI del 2001 distribuiva tutte le personalizzazioni (inclusi gli hues), in un unico file verdata.mul personalizzato. Tutti gli altri files, appartenenti probabilmente all'espansione Renaissance o T2A non erano stati modificati. Di seguito, il contenuto del verdata:

Items

  • Gli items 0x0dda - 0x0dde che nel gioco originale conterrebbero un "red moongate" con relativa animazione contengono invece un nuovo tipo di gate (quello usato per il CTF), con la relativa animazione
    • nome: "warp gate"
  • L'item 0x3d85 è stato aggiunto in uno spazio vuoto e rappresenta un parallelepipedo bianco con sopra un simbolo giallo
    • nome: "Gate of Life"
  • L'item 0x3d86 è stato aggiunto in uno spazio vuoto e rappresenta un paio di pantaloncini molto corti
    • nome: "loincloth", indossabile
  • L'item 0x3d87 è stato aggiunto in uno spazio vuoto e rappresenta una corda
    • nome: "dragonscale wire"
  • L'item 0x3d88 è stato aggiunto in uno spazio vuoto e rappresenta un mount (?)
    • nome: "animal pack"
  • L'item 0x3d89 è stato aggiunto in uno spazio vuoto e rappresenta gli occhiali da sole
    • nome: "sunglasses", indossabile
  • L'item 0x3ea2 è stato aggiunto in uno spazio vuoto e rappresenta un mount (?)
    • nome: ""

Gumps

  • Le gump 0x7d0, 0x7d1 sono state rimpiazzate con gump personalizzate per il paperdoll
  • Le gump 0x802, 0x803, 0x804, 0x807 sono state rimpiazzate con gump personalizzate per lo status
  • La gump 0x816 (messaggio di conferma) è stata rimpiazzata con una ricolorata a tinte marroni anziché grigie
  • La gump 0x866 (secure trade) è stata rimpiazzata con una ricolorata a tinte marroni anziché grigie
  • La gump 0x906 (scelta colore) è stata rimpiazzata con una ricolorata a tinte marroni anziché grigie
  • Le gump 0x910 e 0x911 (craft menu) sono state rimpiazzate con gump ricolorate a tinte marroni anziché grigie
  • La gump 0x9c4 (messaggio di conferma) è stata rimpiazzata con una ricolorata a tinte marroni anziché grigie
  • Le gump 0xc850 e 0xef60 sono state aggiunte per raffigurare gli occhiali da sole nel paperdoll (uomo, donna)
  • Le gump 0xc512 e 0xec22 sono state aggiunte per raffigurare le mutande nel paperdoll (uomo, donna)

Inoltre, nell'ottica del passaggio a una distribuzione futura:

  • Le gump 0x2a6c e 0x2a6d, del tutto assenti nello ZHI originale, rappresentano la nuova finestra di stato di AOS e successivi

Hues

La pratica di inserire i colori nel verdata non è mai stata adottata ufficialmente da OSI e per questo è quasi sconosciuta e non documentata. I colori nel verdata possono essere rimappati solo a blocchi di 8. Non esiste, a quanto pare, un tool per estrarli, ma sono riuscito a scriverne uno ad hoc (parsestatic.py). I colori così rimappati sono:

  • 1153-1184
  • 1273-1312

Tile Data

Nelle espansioni più recenti, le gambe della plate sono state spostate sullo stesso layer dei pantaloni (4) anziché sul layer dedicato (24), che è usato per il supporto alle razze e le pelli dei PG. Come conseguenza, non è più impossibile indossare pantaloni e plate contemporaneamente a meno di non cambiare di nuovo il layer alle grafiche 0x1411 e 0x141a.

Usando UO Fiddler, il layer è indicato come "Quality"

Tools

  • UO Fiddler, rilasciato dagli stessi sviluppatori del POL, è uno strumento completo per la visualizzazione e la modifica dei files .mul. Integra inoltre un ottimo plugin (disabilitato per default) per la comparazione dei files.
  • SUMP è un ottimo tool multiuso:
Simple Ultima Multi Patcher .4
Currently supported UO clients: 4.x - 7.x
Note: wildcards are supported for filename.  For example: *.exe

Usage: SUMP.exe <filename> <options>
Example: SUMP.exe client.exe -m -l -s -b -g -e -h

Options:
-m : Apply multi-uo patch which allows you to run multiple clients.
-l : Apply always light patch.
-s : Remove stamina check when pushing through mobiles.
-b : Apply Batlin's sleep patch to reduce CPU usage.
-g : Apply Garret's patch to display no-draw items.
-e : Remove protocol encryption (and decryption).
-h : Apply hifi's global sound patch which enables sound for minimized client.
  • SpyUO è un ottimo tool per loggare i pacchetti inviati a ricevuti dal client, decifrati. Supporta quasi tutte le versioni del client dalla più vecchia fino all'ultima.

Problemi noti

Stamina Bug

Quello che viene comunemente chiamato stamina bug non è in realtà un bug ma bensì una feature del client. Utilizzando un POL dalla versione 096 in poi che supporti i reami multipli, il client viene informato del reame in cui si trova. Il reame di default è map0, ovvero Felucca. Le regole ufficiali OSI di movimento su Felucca prevedono che per oltrepassare una qualsiasi altra creatura si debba essere a piena stamina; trattandosi di una regola molto antica e mai modificata, questa è hardcodata anche nel client, per prevenire l'effetto "bounce".

Nonostante si tenti quindi di permettere il movimento, sarà il client a rifiutarsi di inviare il pacchetto di richiesta di movimento quando un'altra creatura è presente sulla sua strada e la stamina non è al massimo.

Questo problema è risolvibile patchando il client.