Profilo
Il profilo è il testo che un giocatore scrive sul suo personaggio. Il client lo mostra con il pulsante Profilo del
paperdoll, e il giocatore modifica il proprio nella stessa finestra. Non serve nessun comando: il client trasforma il
pulsante nel pacchetto del profilo (0xB8).
Lettura e scrittura
Section titled “Lettura e scrittura”- Un giocatore legge il proprio profilo a qualsiasi distanza. Il profilo di un altro giocatore si legge quando entrambi stanno sulla stessa mappa entro 12 caselle e chi guarda non è escluso dal vederlo: il profilo di un giocatore nascosto è solo per lo staff. Il profilo di un NPC non si legge.
- La finestra mostra in alto il titolo del paperdoll (per esempio “Lord Anna, the Brave”), poi il testo. Sotto il testo del giocatore, una riga dice quanti giorni ha il personaggio: “Questo personaggio ha 3 giorno/i.”
- Un giocatore modifica solo il proprio profilo. Il pacchetto indica un seriale, ma il server non si fida mai: una modifica che indica un altro giocatore non cambia nessuno e non riceve risposta. Dopo una modifica il client chiede di nuovo, quindi il server non risponde.
- Il testo viene ripulito prima di essere tenuto: i caratteri di controllo (NUL compreso) e le metà isolate di una coppia surrogata vengono tolti, le interruzioni di riga restano, gli estremi vengono tagliati e il testo è ridotto a 511 caratteri. Un testo vuoto cancella il profilo.
Dove si tiene
Section titled “Dove si tiene”Il testo è la proprietà profile del personaggio, quindi il salvataggio del mondo lo scrive con il personaggio e non
serve nessuna migrazione. Un personaggio senza profilo non ha la proprietà.
Il modulo profile lo legge e lo scrive, per uno script o un comando dello staff:
| Funzione | Cosa fa |
|---|---|
profile.get(player) |
Il testo del profilo; una stringa vuota quando non c’è, per un NPC o per un seriale sconosciuto |
profile.set(player, text) |
Scrive il profilo, ripulito e tagliato come la modifica di un giocatore; nil o un testo vuoto lo cancella. true quando è cambiato |
Pacchetto
Section titled “Pacchetto”0xB8 arriva dal client con una modalità: 0 chiede di mostrare il profilo di un seriale, 1 lo modifica (due byte saltati, il
numero di caratteri, poi il testo UTF-16BE senza terminatore). Una richiesta con una modalità che il server non conosce, o una modifica
senza spazio per il conteggio, viene ignorata; una modifica legge i caratteri che contiene davvero, qualunque cosa dica il
conteggio, e una coppia surrogata rotta viene scartata dalla pulizia. Niente di tutto ciò costa al client la connessione. Il server risponde a una richiesta
di visualizzazione con 0xB8: il seriale, il titolo in Latin-1, poi il piè di pagina e il corpo in UTF-16BE. Sul filo il
piè di pagina viene per primo; il client lascia modificare il corpo al giocatore. Vedi Pacchetti.
Escluso di proposito
Section titled “Escluso di proposito”Il blocco del profilo che ha ModernUO, un trigger di script a ogni lettura o scrittura, un limite alla frequenza delle modifiche e un filtro di parole.
Creato con ❤️ da Tom
