1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
-- NOTE(fusion): This file contains sample initial data. It's wrapped into a
-- transaction to avoid errors from leaving the database in some partial state.
BEGIN;
-- 111111/tibia
INSERT INTO Accounts (AccountID, Email, Auth)
VALUES (111111, '@tibia', '\x206699cbc2fae1683118c873d746aa376049cb5923ef0980298bb7acbba527ec9e765668f7a338dffea34acf61a20efb654c1e9c62d35148dba2aeeef8dc7788');
-- NOTE(fusion): This would generally be a sequence of insertions but the way
-- PostgreSQL handles unique auto increment columns makes so manually inserted
-- values end up colliding with generated values at some point.
-- On a real scenario, we'd never have manually assigned ids unless we're
-- restoring some database dump, in which case it would also have saved
-- sequences.
WITH
WorldIns AS (
INSERT INTO Worlds (Name, Type, RebootTime, Host, Port, MaxPlayers,
PremiumPlayerBuffer, MaxNewbies, PremiumNewbieBuffer)
VALUES ('Zanera', 0, 5, 'localhost', 7172, 1000, 100, 300, 100)
RETURNING WorldID, Name
),
CharacterIns AS (
INSERT INTO Characters (WorldID, AccountID, Name, Sex)
SELECT W.WorldID, C.AccountID, C.Name, C.Sex
FROM WorldIns AS W,
LATERAL (VALUES
(111111, 'Gamemaster on ' || W.Name, 1),
(111111, 'Player on ' || W.Name, 1)
) AS C (AccountID, Name, Sex)
RETURNING CharacterID, Name
)
INSERT INTO CharacterRights(CharacterID, Name)
SELECT C.CharacterID, R.RightName
FROM CharacterIns AS C,
(VALUES
('NOTATION'),
('NAMELOCK'),
('STATEMENT_REPORT'),
('BANISHMENT'),
('FINAL_WARNING'),
('IP_BANISHMENT'),
('KICK'),
('HOME_TELEPORT'),
('GAMEMASTER_BROADCAST'),
('ANONYMOUS_BROADCAST'),
('NO_BANISHMENT'),
('ALLOW_MULTICLIENT'),
('LOG_COMMUNICATION'),
('READ_GAMEMASTER_CHANNEL'),
('READ_TUTOR_CHANNEL'),
('HIGHLIGHT_HELP_CHANNEL'),
('SEND_BUGREPORTS'),
('NAME_INSULTING'),
('NAME_SENTENCE'),
('NAME_NONSENSICAL_LETTERS'),
('NAME_BADLY_FORMATTED'),
('NAME_NO_PERSON'),
('NAME_CELEBRITY'),
('NAME_COUNTRY'),
('NAME_FAKE_IDENTITY'),
('NAME_FAKE_POSITION'),
('STATEMENT_INSULTING'),
('STATEMENT_SPAMMING'),
('STATEMENT_ADVERT_OFFTOPIC'),
('STATEMENT_ADVERT_MONEY'),
('STATEMENT_NON_ENGLISH'),
('STATEMENT_CHANNEL_OFFTOPIC'),
('STATEMENT_VIOLATION_INCITING'),
('CHEATING_BUG_ABUSE'),
('CHEATING_GAME_WEAKNESS'),
('CHEATING_MACRO_USE'),
('CHEATING_MODIFIED_CLIENT'),
('CHEATING_HACKING'),
('CHEATING_MULTI_CLIENT'),
('CHEATING_ACCOUNT_TRADING'),
('CHEATING_ACCOUNT_SHARING'),
('GAMEMASTER_THREATENING'),
('GAMEMASTER_PRETENDING'),
('GAMEMASTER_INFLUENCE'),
('GAMEMASTER_FALSE_REPORTS'),
('KILLING_EXCESSIVE_UNJUSTIFIED'),
('DESTRUCTIVE_BEHAVIOUR'),
('SPOILING_AUCTION'),
('INVALID_PAYMENT'),
('TELEPORT_TO_CHARACTER'),
('TELEPORT_TO_MARK'),
('TELEPORT_VERTICAL'),
('TELEPORT_TO_COORDINATE'),
('LEVITATE'),
('SPECIAL_MOVEUSE'),
('MODIFY_GOSTRENGTH'),
('SHOW_COORDINATE'),
('RETRIEVE'),
('ENTER_HOUSES'),
('OPEN_NAMEDOORS'),
('INVULNERABLE'),
('UNLIMITED_MANA'),
('KEEP_INVENTORY'),
('ALL_SPELLS'),
('UNLIMITED_CAPACITY'),
('ATTACK_EVERYWHERE'),
('NO_LOGOUT_BLOCK'),
('GAMEMASTER_OUTFIT'),
('ILLUMINATE'),
('CHANGE_PROFESSION'),
('IGNORED_BY_MONSTERS'),
('SHOW_KEYHOLE_NUMBERS'),
('CREATE_OBJECTS'),
('CREATE_MONEY'),
('CREATE_MONSTERS'),
('CHANGE_SKILLS'),
('CLEANUP_FIELDS'),
('NO_STATISTICS')
) AS R (RightName)
WHERE C.Name LIKE 'Gamemaster%' COLLATE "default";
COMMIT;
|