Documentation
¶
Index ¶
- Variables
- type AddItemToContainer
- type Animation
- type BuyWindow
- type CharacterList
- type ClientViewRange
- type ClilocMessage
- type CloseGump
- type CompressedWriter
- type ConnectToGameServer
- type Contents
- type ContentsItem
- type ContextMenu
- type DeleteObject
- type DragItem
- type DrawPlayer
- type DropApproved
- type EnterWorld
- type EquippedMobile
- type EquippedMobileItem
- type FullSkillUpdate
- type GUMP
- type GlobalLightLevel
- type GraphicalEffect
- type LoginComplete
- type LoginDenied
- type MoveAcknowledge
- type MoveItemReject
- type MoveMobile
- type MoveReject
- type MoveSpeed
- type Music
- type NameResponse
- type OPLInfo
- type OPLPacket
- type ObjectInfo
- type OpenContainerGump
- type OpenPaperDoll
- type Packet
- type PersonalLightLevel
- type Ping
- type SellWindow
- type ServerList
- type ServerListEntry
- type SingleSkillUpdate
- type Sound
- type Speech
- type StartingLocation
- type StatusBarInfo
- type Target
- type TextEntryGUMP
- type Time
- type UpdateHealth
- type VendorBuySequence
- type Version
- type WornItem
Constants ¶
This section is empty.
Variables ¶
var StartingLocations = []StartingLocation{
{"New Haven", "New Haven Bank"},
{"Yew", "The Empath Abbey"},
{"Minoc", "The Barnacle"},
{"Britain", "The Wayfarer's Inn"},
{"Moonglow", "The Scholars Inn"},
{"Trinsic", "The Traveler's Inn"},
{"Jhelom", "The Mercenary Inn"},
{"Skara Brae", "The Falconer's Inn"},
{"Vesper", "The Ironwood Inn"},
}
StartingLocations is the list of starting locations in correct order.
Functions ¶
This section is empty.
Types ¶
type AddItemToContainer ¶
type AddItemToContainer struct {
// The ID of the item being added to the container
Item uo.Serial
// Graphic of the item being added to the container
Graphic uo.Graphic
// Graphic offset of the item
GraphicOffset int
// Stack amount, truncated to 0-0xFFFF inclusive
Amount int
// Location of the item in the container. X=Y=0xFFFF means random location.
Location uo.Location
// The ID of the container and container gump to add this item to
Container uo.Serial
// Hue of the item
Hue uo.Hue
}
AddItemToContainer adds an item to an already-open container gump.
func (*AddItemToContainer) Write ¶
func (p *AddItemToContainer) Write(w io.Writer)
Write implements the Packet interface.
type Animation ¶
type Animation struct {
// Serial of the mobile to animate
Serial uo.Serial
// Animation type
AnimationType uo.AnimationType
// Animation action
AnimationAction uo.AnimationAction
}
Animation tells the client to animate a mobile.
type BuyWindow ¶
type BuyWindow struct {
// Serial of the container of the buy window.
Serial uo.Serial
// The list of items in the container in normal order. The Write method
// takes care of reversing the order.
Items []ContentsItem
}
BuyWindow transfers the buy window details to the client.
type CharacterList ¶
type CharacterList struct {
// Names of all of the characters, empty string for open slots.
Names []string
}
CharacterList is sent on game server login and lists all characters on the account as well as the new character starting locations.
func (*CharacterList) Write ¶
func (p *CharacterList) Write(w io.Writer)
Write implements the Packet interface.
type ClientViewRange ¶
type ClientViewRange struct {
// The demanded range
Range byte
}
ClientViewRange sets the client's view range
func (*ClientViewRange) Write ¶
func (p *ClientViewRange) Write(w io.Writer)
Write implements the Packet interface.
type ClilocMessage ¶
type ClilocMessage struct {
// Serial of the speaker
Speaker uo.Serial
// Body of the speaker
Body uo.Body
// Hue of the text
Hue uo.Hue
// Font of the text
Font uo.Font
// Cliloc message number
Cliloc uo.Cliloc
// Name of the speaker
Name string
// List of arguments for the message
Arguments []string
}
ClilocMessage sends a localized message to the client.
func (*ClilocMessage) Write ¶
func (p *ClilocMessage) Write(w io.Writer)
Write implements the Packet interface.
type CloseGump ¶
type CloseGump struct {
// Serial of the gump to close
Gump uo.Serial
// Button response for the gump response packet, use 0 for close gump
Button int
}
CloseGump sends a force gump close BF subcommand to forcefully close a gump on the client.
type CompressedWriter ¶
type CompressedWriter struct {
// contains filtered or unexported fields
}
CompressedWriter wraps the process of writting compressed server packets.
func NewCompressedWriter ¶
func NewCompressedWriter() *CompressedWriter
NewCompressedWriter returns a CompressedWriter ready for use.
type ConnectToGameServer ¶
type ConnectToGameServer struct {
// IP is the IP address of the server.
IP net.IP
// Port is the port the server listens on.
Port uint16
// Key is the connection key.
Key uo.Serial
}
ConnectToGameServer is sent to instruct the client how to connect to a game server.
func (*ConnectToGameServer) Write ¶
func (p *ConnectToGameServer) Write(w io.Writer)
Write implements the Packet interface.
type Contents ¶
type Contents struct {
// The items in the container
Items []ContentsItem
// If true items are listed in reverse order
ReverseOrder bool
}
Contents sends the contents of a container to the client.
type ContentsItem ¶
type ContentsItem struct {
// Serial of the item
Serial uo.Serial
// Item graphic
Graphic uo.Graphic
// Item graphic offset, this gets truncated between 0-255 inclusive
GraphicOffset int
// Stack amount
Amount int
// Location of the item in the container
Location uo.Location
// Serial of the container to add the item to
Container uo.Serial
// Hue of the item
Hue uo.Hue
// Price of the item if it is being sold
Price uint32
// Shop description if it is being sold
Description string
}
ContentsItem represents one item in a Contents packet.
type ContextMenu ¶
type ContextMenu struct {
// Serial of the object this context menu is to appear over
Serial uo.Serial
// Entries of the menu
Entries []ctxMenuEntry
}
ContextMenu sends a context menu to the client.
func (*ContextMenu) Add ¶
func (p *ContextMenu) Add(id uint16, cliloc uo.Cliloc)
Add adds an entry to the context menu. The cliloc parameter must be in the range 3,000,000 - 3,060,000 inclusive.
func (*ContextMenu) Write ¶
func (p *ContextMenu) Write(w io.Writer)
Write implements the Packet interface.
type DeleteObject ¶
DeleteObject tells the client to forget about an object
func (*DeleteObject) Write ¶
func (p *DeleteObject) Write(w io.Writer)
Write implements the Packet interface.
type DragItem ¶
type DragItem struct {
// Graphic is the graphic of the item being moved
Graphic uo.Graphic
// Graphic offset, used for stacked graphics. This is truncated to 8-bits
// and must be positive.
GraphicOffset int
// Hue of the item being moved
Hue uo.Hue
// Amount in the stack
Amount int
// Source mobile serial, uo.SerialSystem for the map
Source uo.Serial
// Source position
SourceLocation uo.Location
// Destination mobile serial, uo.SerialSystem for the map
Destination uo.Serial
// Destination position
DestinationLocation uo.Location
}
DragItem makes the client play an animation of the item being dragged from the source to the destination.
type DrawPlayer ¶
type DrawPlayer struct {
// Serial of the player
ID uo.Serial
// Body graphic
Body uo.Body
// Skin hue
Hue uo.Hue
// Flags field
Flags uo.MobileFlags
// Location of the mobile
Location uo.Location
// Direction the mobile is facing
Facing uo.Direction
}
DrawPlayer updates the player's location and appearance
func (*DrawPlayer) Write ¶
func (p *DrawPlayer) Write(w io.Writer)
Write implements the Packet interface.
type DropApproved ¶
type DropApproved struct{}
DropApproved is sent to the client to acknowledge a drop or equip request.
func (*DropApproved) Write ¶
func (p *DropApproved) Write(w io.Writer)
Write implements the Packet interface.
type EnterWorld ¶
type EnterWorld struct {
// Player serial
Player uo.Serial
// Body graphic
Body uo.Body
// Position
Location uo.Location
// Direction the player is facing and if running.
Facing uo.Direction
// Server dimensions
Width, Height int
}
EnterWorld is sent just after character login to bring them into the world.
func (*EnterWorld) Write ¶
func (p *EnterWorld) Write(w io.Writer)
Write implements the Packet interface.
type EquippedMobile ¶
type EquippedMobile struct {
// ID of the mobile
ID uo.Serial
// Body of the mobile
Body uo.Body
// Position of the mobile
Location uo.Location
// Direction the mobile is facing
Facing uo.Direction
// Running flag
IsRunning bool
// Hue of the mobile
Hue uo.Hue
// Flags
Flags uo.MobileFlags
// Notoriety type
Notoriety uo.Notoriety
// List of equipped items
Equipment []*EquippedMobileItem
}
EquippedMobile is sent to add or update a mobile with equipment graphics.
func (*EquippedMobile) Write ¶
func (p *EquippedMobile) Write(w io.Writer)
Write implements the Packet interface.
type EquippedMobileItem ¶
type EquippedMobileItem struct {
// ID of the item
ID uo.Serial
// Graphic of the item
Graphic uo.Graphic
// Layer of the item
Layer uo.Layer
// Hue of the item
Hue uo.Hue
}
EquippedMobileItem is used to send information about the equipment a mobile is wearing.
type FullSkillUpdate ¶
type FullSkillUpdate struct {
// Slice of all skill values
SkillValues []int16
}
FullSkillUpdate sends an update for all skills.
func (*FullSkillUpdate) Write ¶
func (p *FullSkillUpdate) Write(w io.Writer)
Write implements the Packet interface.
type GUMP ¶
type GUMP struct {
// Sender code of the GUMP layout
Sender uo.Serial
// TypeCode of the GUMP returned in reply packets
TypeCode uo.Serial
// Layout string for the GUMP
Layout string
// Location of the GUMP on screen
Location uo.Location
// Text lines
Lines []string
// If true the GUMP data will be sent uncompressed
DoNotCompress bool
}
GUMP sends a non-compressed generic GUMP to the client.
type GlobalLightLevel ¶
type GlobalLightLevel struct {
// Light level to set
LightLevel uo.LightLevel
}
GlobalLightLevel sets the overall light level for the client.
func (*GlobalLightLevel) Write ¶
func (p *GlobalLightLevel) Write(w io.Writer)
Write implements the Packet interface.
type GraphicalEffect ¶
type GraphicalEffect struct {
// Behavior of the effect
GFXType uo.GFXType
// Serial of the source object
Source uo.Serial
// Serial of the target object
Target uo.Serial
// First frame of the effect
Graphic uo.Graphic
// Source location
SourceLocation uo.Location
// Target location
TargetLocation uo.Location
// Speed of the animation in FPS?
Speed uint8
// Duration of the animation 1=Slowest, 0=Even slower for some reason
Duration uint8
// If true the projectile will not attempt to change facing during flight
Fixed bool
// If true the projectile will explode on impact
Explodes bool
// Hue of the effect
Hue uo.Hue
// Render mode of the effect
GFXBlendMode uo.GFXBlendMode
}
GraphicalEffect sends a graphical effect packet to the client
func (*GraphicalEffect) Write ¶
func (p *GraphicalEffect) Write(w io.Writer)
Write implements the Packet interface.
type LoginComplete ¶
type LoginComplete struct{}
LoginComplete is sent after character login is successful.
func (*LoginComplete) Write ¶
func (p *LoginComplete) Write(w io.Writer)
Write implements the Packet interface.
type LoginDenied ¶
type LoginDenied struct {
// The reason for the login denial
Reason uo.LoginDeniedReason
}
LoginDenied is sent when character login is denied for any reason.
func (*LoginDenied) Write ¶
func (p *LoginDenied) Write(w io.Writer)
Write implements the Packet interface.
type MoveAcknowledge ¶
type MoveAcknowledge struct {
// Sequence number of the move from the client
Sequence int
// Notoriety of the player
Notoriety uo.Notoriety
}
MoveAcknowledge acknowledges a ClientWalkRequest packet.
func (*MoveAcknowledge) Write ¶
func (p *MoveAcknowledge) Write(w io.Writer)
Write implements the Packet interface.
type MoveItemReject ¶
type MoveItemReject struct {
Reason uo.MoveItemRejectReason
}
MoveItemReject rejects a pick-up, drop, or equip request
func (*MoveItemReject) Write ¶
func (p *MoveItemReject) Write(w io.Writer)
Write implements the Packet interface.
type MoveMobile ¶
type MoveMobile struct {
// Serial of the mobile to update
ID uo.Serial
// Body of the mobile
Body uo.Body
// Location of the mobile
Location uo.Location
// Facing
Facing uo.Direction
// Running flag
Running bool
// Hue
Hue uo.Hue
// Mobile flags
Flags uo.MobileFlags
// Notoriety
Notoriety uo.Notoriety
}
MoveMobile moves an existing mobile on the client side
func (*MoveMobile) Write ¶
func (p *MoveMobile) Write(w io.Writer)
Write implements the Packet interface.
type MoveReject ¶
type MoveReject struct {
// Sequence number of the movement request rejected
Sequence byte
// Location of the mobile after the rejection
Location uo.Location
// Facing of the mobile
Facing uo.Direction
}
MoveReject sends a movement rejection packet to the client.
func (*MoveReject) Write ¶
func (p *MoveReject) Write(w io.Writer)
Write implements the Packet interface.
type MoveSpeed ¶
MoveSpeed sets the movement speed of the player on the client. This is a psuedo-packet for General Information packet 0xBF-0x0026. Note that this does NOT set the walk/run/mount state of the client. This is for God mode stuff I guess.
type NameResponse ¶
type NameResponse struct {
Serial uo.Serial // Serial of the object who's name we are sending.
Name string // Name of the object
}
NameResponse is sent to the client in response to a NameRequest.
func (*NameResponse) Write ¶
func (p *NameResponse) Write(w io.Writer)
Write implements the Packet interface.
type OPLInfo ¶
type OPLInfo struct {
Serial uo.Serial // Serial of the object this packet pertains to.
Hash uint32 // Hash of the OPL packet
}
OPLInfo is sent to notify the client of OPL revision changes.
type OPLPacket ¶
type OPLPacket struct {
Serial uo.Serial // Serial of the object this packet is for
Hash uint32 // Hash of the packet
Entries []string // List of all tooltip entries
TailEntries []string // List of all tooltip entries that should be appended to the tail
// contains filtered or unexported fields
}
OPLPacket is sent in response to generic packet 0x10 and populates object tooltips.
func (*OPLPacket) AppendColor ¶
AppendColor adds an entry to the OPLPacket in the given color.
type ObjectInfo ¶
type ObjectInfo struct {
// If true we are sending information about a multi
IsMulti bool
// Serial of the item or multi
Serial uo.Serial
// Graphic of the item or index of the multi into multi.mul
Graphic uo.Graphic
// Add this number to the graphic index if amount > 1
GraphicIncrement int
// Amount, must be at least 1, no greater than 60000 - always 1 for multi
Amount int
// Location of the item or multi
Location uo.Location
// Facing of the item - always 0 for multi
Facing uo.Direction
// Layer of the item or 0 if not equipable or multi
Layer uo.Layer
// Hue - 0 if multi
Hue uo.Hue
// If true the object will be moveable even if normally not. Note that even
// when this is false the client may still treat the object as movable
// depending on the contents of the tile definition for the graphic.
Movable bool
}
ObjectInfo sends information about a single item or multi to the client.
func (*ObjectInfo) Write ¶
func (p *ObjectInfo) Write(w io.Writer)
Write implements the Packet interface.
type OpenContainerGump ¶
type OpenContainerGump struct {
// The ID of the Gump
GumpSerial uo.Serial
// The gump graphic
Gump uo.GUMP
}
OpenContainerGump opens a container gump on the client.
func (*OpenContainerGump) Write ¶
func (p *OpenContainerGump) Write(w io.Writer)
Write implements the Packet interface.
type OpenPaperDoll ¶
type OpenPaperDoll struct {
// Serial of the mobile to display the paper doll of
Serial uo.Serial
// Text displayed in the name and title area. Note this gets truncated to
// 60 characters when sent to the client.
Text string
// If true the character is currently in war mode
WarMode bool
// If true the player may alter the paper doll
Alterable bool
}
OpenPaperDoll tells the client to open the paper doll window for a mobile
func (*OpenPaperDoll) Write ¶
func (p *OpenPaperDoll) Write(w io.Writer)
Write implements the Packet interface.
type PersonalLightLevel ¶
type PersonalLightLevel struct {
// Serial of the mobile
Serial uo.Serial
// Light level to set
LightLevel uo.LightLevel
}
PersonalLightLevel sets the personal light level for the mobile.
func (*PersonalLightLevel) Write ¶
func (p *PersonalLightLevel) Write(w io.Writer)
Write implements the Packet interface.
type Ping ¶
type Ping struct {
// Key byte of the client ping request
Key byte
}
Ping is sent to the client in response to a client ping packet.
type SellWindow ¶
type SellWindow struct {
// Serial of the vendor we are buying from
Vendor uo.Serial
// List of items the player is allowed to sell to the vendor
Items []ContentsItem
}
SellWindow is sent to the client to open the vendor sell window.
func (*SellWindow) Write ¶
func (p *SellWindow) Write(w io.Writer)
Write implements the Packet interface.
type ServerList ¶
type ServerList struct {
// Entries in the server list (order is important!)
Entries []ServerListEntry
}
ServerList lists all of the available game servers during login.
func (*ServerList) Write ¶
func (p *ServerList) Write(w io.Writer)
Write implements the Packet interface.
type ServerListEntry ¶
type ServerListEntry struct {
// Name of the server
Name string
// IP address of the server to ping
IP net.IP
}
ServerListEntry represents one entry in the server list.
type SingleSkillUpdate ¶
type SingleSkillUpdate struct {
// Which skill changed
Skill uo.Skill
// New raw value of the skill (0-1000)
Value int
// Lock state
Lock uo.SkillLock
}
SingleSkillUpdate sends an update for a single skill.
func (*SingleSkillUpdate) Write ¶
func (p *SingleSkillUpdate) Write(w io.Writer)
Write implements the Packet interface.
type Sound ¶
type Sound struct {
// Which sound to play
Sound uo.Sound
// Where the sound is coming from
Location uo.Location
}
Sound tells the client to play a sound from a specific location.
type Speech ¶
type Speech struct {
// Serial of the speaker
Speaker uo.Serial
// Body of the speaker
Body uo.Body
// Type of speech
Type uo.SpeechType
// Hue of the text
Hue uo.Hue
// Font of the text
Font uo.Font
// Name of the speaker (truncated to 30 bytes) (empty for system)
Name string
// Text of the message spoken
Text string
}
Speech is sent to the client for all kinds of speech including system messages and prompts.
type StartingLocation ¶
type StartingLocation struct {
// Name of the city.
City string
// Name of the building or area.
Area string
}
StartingLocation represents one starting location for new character creation.
type StatusBarInfo ¶
type StatusBarInfo struct {
// Serial of the mobile this status applies to
Mobile uo.Serial
// Name of the mobile (this gets truncated to 30 characters)
Name string
// Current hit points
HP int
// Max hit points
MaxHP int
// Can the player change the name of this mobile?
NameChangeFlag bool
// If true the mobile is female
Female bool
// Strength
Strength int
// Dexterity
Dexterity int
// Intelligence
Intelligence int
// Current stamina
Stamina int
// Max stamina
MaxStamina int
// Current mana
Mana int
// Max mana
MaxMana int
// Total amount of gold this mobile is currently holding
Gold int
// Armor rating
ArmorRating int
// Current weight of all equipment and inventory
Weight int
// Total stats cap
StatsCap int
// Current number of follower slots used
Followers int
// Maximum number of follower slots
MaxFollowers int
}
StatusBarInfo sends basic status info to the client.
func (*StatusBarInfo) Write ¶
func (p *StatusBarInfo) Write(w io.Writer)
Write implements the Packet interface.
type Target ¶
type Target struct {
// Serial of the targeting cursor
Serial uo.Serial
// Type of targeting request
TargetType uo.TargetType
// Cursor display type
CursorType uo.CursorType
}
Target is used to send and recieve targeting commands to the client
type TextEntryGUMP ¶
type TextEntryGUMP struct {
Serial uo.Serial // Serial of the GUMP
Value string // Current value of the text entry field
Description string // Description of the text requested
CanCancel bool // If true allow the client to cancel the GUMP
MaxLength int // Maximum response length
}
TextEntryGUMP is sent to request a string of text from the client via a client-side GUMP.
func (*TextEntryGUMP) Write ¶
func (p *TextEntryGUMP) Write(w io.Writer)
Write implements the Packet interface.
type UpdateHealth ¶
type UpdateHealth struct {
Serial uo.Serial // Serial of the object this packet pertains to.
Hits int // Current hit points
MaxHits int // Maximum hit points
}
UpdateHealth is sent to notify the client of the current HP levels of another mobile. The health is normalized to a 4% resolution.
func (*UpdateHealth) Write ¶
func (p *UpdateHealth) Write(w io.Writer)
Write implements the Packet interface.
type VendorBuySequence ¶
type VendorBuySequence struct {
// Serial of the vendor
Vendor uo.Serial
// Serial of the sell container
ForSale uo.Serial
// Serial of the bought container
Bought uo.Serial
// List of items in the sell container
ForSaleItems []ContentsItem
// List of items in the bought container
BoughtItems []ContentsItem
}
VendorBuySequence implements the required sequence of packets to open an NPC buy window.
func (*VendorBuySequence) Write ¶
func (p *VendorBuySequence) Write(w io.Writer)
Write implements the Packet interface.
type Version ¶
type Version struct{}
Version is sent to the client to request the client version of the packet.
type WornItem ¶
type WornItem struct {
// The item being worn
Item uo.Serial
// Graphic of the item
Graphic uo.Graphic
// Layer of the item
Layer uo.Layer
// Mobile wearing the item
Wearer uo.Serial
// Hue of the item
Hue uo.Hue
}
WornItem is sent to clients to inform them of an item added to a mobile's equipment.