111 lines
4.3 KiB
Go
111 lines
4.3 KiB
Go
package common
|
|
|
|
import (
|
|
"time"
|
|
|
|
"zombiezen.com/go/sqlite"
|
|
"zombiezen.com/go/sqlite/sqlitex"
|
|
)
|
|
|
|
// Represents a character in the game.
|
|
type Character struct {
|
|
ID int64 `db:"id"`
|
|
AccountID int32 `db:"account_id"`
|
|
ServerID int32 `db:"server_id"`
|
|
Name string `db:"name"`
|
|
Race int8 `db:"race"`
|
|
Class int8 `db:"class"`
|
|
Gender int8 `db:"gender"`
|
|
Deity int8 `db:"deity"`
|
|
BodySize float64 `db:"body_size"`
|
|
BodyAge float64 `db:"body_age"`
|
|
CurrentZoneID int32 `db:"current_zone_id"`
|
|
Level int32 `db:"level"`
|
|
TradeskillClass int8 `db:"tradeskill_class"`
|
|
TradeskillLevel int32 `db:"tradeskill_level"`
|
|
SogaWingType int32 `db:"soga_wing_type"`
|
|
SogaChestType int32 `db:"soga_chest_type"`
|
|
SogaLegsType int32 `db:"soga_legs_type"`
|
|
SogaHairType int32 `db:"soga_hair_type"`
|
|
SogaFacialHairType int32 `db:"soga_facial_hair_type"`
|
|
SogaModelType int32 `db:"soga_model_type"`
|
|
LegsType int32 `db:"legs_type"`
|
|
ChestType int32 `db:"chest_type"`
|
|
WingType int32 `db:"wing_type"`
|
|
HairType int32 `db:"hair_type"`
|
|
FacialHairType int32 `db:"facial_hair_type"`
|
|
ModelType int32 `db:"model_type"`
|
|
X float64 `db:"x"`
|
|
Y float64 `db:"y"`
|
|
Z float64 `db:"z"`
|
|
Heading float64 `db:"heading"`
|
|
InstanceID int32 `db:"instance_id"`
|
|
StartingCity int8 `db:"starting_city"`
|
|
Deleted bool `db:"deleted"`
|
|
UnixTimestamp int32 `db:"unix_timestamp"`
|
|
CreatedDate time.Time `db:"created_date"`
|
|
LastPlayed time.Time `db:"last_played"`
|
|
LastSaved int32 `db:"last_saved"`
|
|
AdminStatus int32 `db:"admin_status"`
|
|
IsOnline bool `db:"is_online"`
|
|
GroupID int32 `db:"group_id"`
|
|
Alignment int8 `db:"alignment"`
|
|
FirstWorldLogin bool `db:"first_world_login"`
|
|
ZoneDuplicatingID int32 `db:"zone_duplicating_id"`
|
|
}
|
|
|
|
// Creates the characters table if it doesn't exist.
|
|
func CreateCharactersTable(conn *sqlite.Conn) error {
|
|
return sqlitex.ExecScript(conn, `
|
|
CREATE TABLE IF NOT EXISTS characters (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
account_id INTEGER NOT NULL DEFAULT 0,
|
|
server_id INTEGER NOT NULL DEFAULT 0,
|
|
name TEXT NOT NULL DEFAULT '',
|
|
race INTEGER NOT NULL DEFAULT 0,
|
|
class INTEGER NOT NULL DEFAULT 0,
|
|
gender INTEGER NOT NULL DEFAULT 0,
|
|
deity INTEGER NOT NULL DEFAULT 0,
|
|
body_size REAL NOT NULL DEFAULT 0,
|
|
body_age REAL NOT NULL DEFAULT 0,
|
|
current_zone_id INTEGER NOT NULL DEFAULT 253,
|
|
level INTEGER NOT NULL DEFAULT 1,
|
|
tradeskill_class INTEGER NOT NULL DEFAULT 0,
|
|
tradeskill_level INTEGER NOT NULL DEFAULT 1,
|
|
soga_wing_type INTEGER NOT NULL,
|
|
soga_chest_type INTEGER NOT NULL,
|
|
soga_legs_type INTEGER NOT NULL,
|
|
soga_hair_type INTEGER NOT NULL,
|
|
soga_facial_hair_type INTEGER NOT NULL DEFAULT 0,
|
|
soga_model_type INTEGER NOT NULL,
|
|
legs_type INTEGER NOT NULL,
|
|
chest_type INTEGER NOT NULL,
|
|
wing_type INTEGER NOT NULL,
|
|
hair_type INTEGER NOT NULL,
|
|
facial_hair_type INTEGER NOT NULL DEFAULT 0,
|
|
model_type INTEGER NOT NULL,
|
|
x REAL NOT NULL DEFAULT 0,
|
|
y REAL NOT NULL DEFAULT 0,
|
|
z REAL NOT NULL DEFAULT 0,
|
|
heading REAL NOT NULL DEFAULT 0,
|
|
instance_id INTEGER NOT NULL DEFAULT 0,
|
|
starting_city INTEGER NOT NULL DEFAULT 1,
|
|
deleted INTEGER NOT NULL DEFAULT 0,
|
|
unix_timestamp INTEGER NOT NULL DEFAULT 0,
|
|
created_date TEXT NOT NULL DEFAULT '0000-00-00 00:00:00',
|
|
last_played TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
last_saved INTEGER NOT NULL DEFAULT 0,
|
|
admin_status INTEGER NOT NULL DEFAULT 0,
|
|
is_online INTEGER NOT NULL DEFAULT 0,
|
|
group_id INTEGER NOT NULL DEFAULT 0,
|
|
alignment INTEGER NOT NULL DEFAULT 0,
|
|
first_world_login INTEGER NOT NULL DEFAULT 0,
|
|
zone_duplicating_id INTEGER NOT NULL DEFAULT 0
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS CharIDX ON characters(name);
|
|
CREATE INDEX IF NOT EXISTS CharZoneIDX ON characters(current_zone_id);
|
|
CREATE INDEX IF NOT EXISTS CharAcctIDX ON characters(account_id);
|
|
`)
|
|
}
|