Salta ai contenuti

Gruppo

Un gruppo è un insieme di al massimo dieci giocatori che si vedono nella finestra del gruppo del client e parlano insieme. Si forma in gioco con i pulsanti del gruppo del client, senza alcun comando: il client li trasforma nei pacchetti del gruppo (comando esteso 0xBF, sottocomando 0x06).

  1. Un giocatore apre la finestra del gruppo e preme Aggiungi; il client chiede un bersaglio, e il giocatore sceglie un altro giocatore. L’invito crea il gruppo quando chi invita non ne ha uno, e chi invita lo guida.
  2. Il client del giocatore invitato mostra il proprio invito (cliloc 1008089, dopo una riga con il nome di chi invita) e i pulsanti per accettare e rifiutare. Un invito a cui non si risponde entro invite_timeout_seconds (30) viene rifiutato, e il capo legge che è scaduto.
  3. Accettando si aggiunge il giocatore: tutti ricevono il nuovo elenco dei membri e leggono chi è entrato.

Un invito viene rifiutato, con una riga che ne spiega il motivo, quando il bersaglio è un NPC, il giocatore stesso, qualcuno che è già in un gruppo o ha già un invito, si trova a più di invite_range tessere (8) o su un’altra mappa, oppure quando i membri e gli inviti già riempiono il gruppo (max_members, 10). Solo il capo invita, una volta che il gruppo esiste.

  • Un membro esce con il pulsante Esci; il capo rimuove un membro con il pulsante Rimuovi e un bersaglio. Il capo non può rimuovere se stesso: esce.
  • Quando il capo esce, il membro successivo nell’ordine di ingresso prende la guida, tutti leggono chi è e gli inviti in attesa vengono annullati.
  • Un personaggio lascia il suo gruppo quando la sua sessione si chiude, quindi un capo che esce dal gioco passa il gruppo a un altro e un membro che esce dal gioco semplicemente non c’è più. Un gruppo non viene salvato: un riavvio scioglie ogni gruppo.
  • Un gruppo di uno non è un gruppo: quando restano meno di due membri viene sciolto, e l’ultimo membro riceve l’elenco vuoto.

Il client invia ciò che un giocatore scrive nella chat di gruppo (/p text, o la riga di chat della finestra) a tutto il gruppo, e un messaggio privato (in stile /tell, con un membro scelto) solo a quel membro. Un messaggio viene ripulito e tagliato a chat_max_length (128) caratteri, uno vuoto viene scartato, e un detenuto della prigione non può usare la chat di gruppo. I giocatori morti possono. La gilda e l’alleanza hanno le loro chat, vedi Gilde.

  • Quando un giocatore entra, i membri e il nuovo arrivato vedono a vicenda la barra di stato, ovunque si trovino.
  • I punti ferita di un membro fuori dalla tua vista (più lontano del raggio visivo, o su un’altra mappa) arrivano alla finestra del tuo gruppo; lo stesso vale per mana e stamina di ogni altro membro. Una barra è una quota di 100: non leggi mai i numeri reali di un altro giocatore.
  • ClassicUO chiede le posizioni dei membri mentre la mappa del mondo è aperta (l’estensione di protocollo 0xF0), e il server risponde con i membri fuori vista: vengono disegnati sulla mappa. I segnaposto propri dell’Enhanced Client (waypoint 0xE5 e 0xE6) non sono realizzati, perché il server non sa ancora distinguere l’Enhanced Client da quello classico.

Gli incantesimi che colpiscono un punto (Chain Lightning, Meteor Swarm, Earthquake, Mass Curse, Wither, i campi di veleno e di paralisi, e chi sta accanto al bersaglio di Poison Strike) lasciano in pace i membri del gruppo del lanciatore, e le creature che un membro possiede: magic.valid_indirect interroga il modulo party, party.are_friends(player, other). Vale anche per un assassino, che può colpire un estraneo blu. Il campo di fuoco non li brucia e Mass Dispel non dissolve le loro creature evocate (magic.is_party_friend). Gli incantesimi che aiutano (Arch Cure, Arch Protection) non cambiano: aiutano ogni membro e tutti gli altri come prima. Il danno di una pozione che esplode e gli attacchi ad area dei mostri non cambiano neppure.

La casella del client “i membri possono saccheggiare il mio cadavere” viene conservata per ogni membro (party.CanLoot), e per ora nulla la legge.

[ultima.party]
max_members = 10 # Players a party holds, invitations waiting included, from 2 to 10.
invite_timeout_seconds = 30 # Seconds an invitation waits for an answer.
invite_range = 8 # Tiles away the invited player may stand.
chat_max_length = 128 # Characters of a chat message; a longer one is cut.

Il modulo party risponde con party.of(player), il gruppo a cui appartiene un giocatore come { id, leader, members }, con party.is_member(a, b), se due giocatori ne condividono uno, e con party.are_friends(player, other), se l’altro è un membro del gruppo del giocatore o una creatura posseduta da uno di loro. Quattro eventi dicono cosa succede ai gruppi: party_invite, party_joined, party_left (con il motivo left, kicked o logout) e party_disbanded (too_small o emptied).

I segnaposto dell’Enhanced Client arrivano quando il server saprà distinguere quel client da quello classico. La condivisione del bottino, della fama e del karma, e il gruppo nei duelli e nelle missioni, non sono ancora previsti.

Creato con ❤️ da Tom

Offrimi un caffè