· 6 years ago · Jul 18, 2019, 08:12 PM
1local function initDB()
2 GAMEMODE.Database = assert(mysql.New{
3 Host = "198.27.74.181",
4 User = "santosrp",
5 Pass = "A$fj1x6E3Tm#",
6 Name = "santosrp"
7 }, "Couldn't connect to database! Retrying in 5..")
8 if not GAMEMODE.Database then timer.Simple(5, initDB) return end
9
10 hook.Add("Tick", "MySQLPoll", mysql.Poll)
11
12 hook.Call("postDatabaseConnected") --godlike
13 hook.Call("postDatbaseBaseTablesCreated")
14 hook.Call("postDatabaseTablesCreated")
15
16 santosRP.Items.LoadItems()
17 santosRP.Vehicles.LoadVehicles( CarList )
18
19end
20hook.Add("Initialize", "InitMySQL", initDB)
21
22hook.Add("postDatabaseConnected","CreateBaseTables", function()
23 GAMEMODE.Database:RawQuery[[
24 CREATE TABLE IF NOT EXISTS `santosrp`.`player` (
25 `id` INT NOT NULL AUTO_INCREMENT,
26 `steamid` BIGINT UNSIGNED NOT NULL COMMENT 'this hold all players that ever joined and assigns them an id',
27 PRIMARY KEY (`id`),
28 UNIQUE INDEX `id_UNIQUE` (`id` ASC),
29 UNIQUE INDEX `steamid_UNIQUE` (`steamid` ASC))
30 ENGINE = InnoDB;
31 ]]
32
33 GAMEMODE.Database:RawQuery[[
34 CREATE TABLE IF NOT EXISTS `santosrp`.`item` (
35 `id` INT NOT NULL AUTO_INCREMENT,
36 `name` VARCHAR(100) NOT NULL,
37 UNIQUE INDEX `name_UNIQUE` (`name` ASC),
38 PRIMARY KEY (`id`),
39 UNIQUE INDEX `id_UNIQUE` (`id` ASC))
40 ENGINE = InnoDB;
41 ]]
42
43 GAMEMODE.Database:RawQuery[[
44 CREATE TABLE IF NOT EXISTS `santosrp`.`vehicle` (
45 `id` INT NOT NULL AUTO_INCREMENT,
46 `name` VARCHAR(100) NOT NULL,
47 UNIQUE INDEX `name_UNIQUE` (`name` ASC),
48 PRIMARY KEY (`id`),
49 UNIQUE INDEX `id_UNIQUE` (`id` ASC))
50 ENGINE = InnoDB;
51 ]]
52
53 GAMEMODE.Database:RawQuery[[
54 CREATE TABLE IF NOT EXISTS `santosrp`.`player_info` (
55 `player_id` INT NOT NULL,
56 `rpname` VARCHAR(25) NULL,
57 `money` BIGINT UNSIGNED NOT NULL,
58 `bank_money` BIGINT NOT NULL,
59 `model` VARCHAR(100) NULL,
60 `color` VARCHAR(15) NULL,
61 PRIMARY KEY (`player_id`),
62 UNIQUE INDEX `player_id_UNIQUE` (`player_id` ASC),
63 CONSTRAINT `fk_player_info_player1`
64 FOREIGN KEY (`player_id`)
65 REFERENCES `santosrp`.`player` (`id`)
66 ON DELETE NO ACTION
67 ON UPDATE NO ACTION)
68 ENGINE = InnoDB;
69 ]]
70
71 GAMEMODE.Database:RawQuery[[
72 CREATE TABLE IF NOT EXISTS `santosrp`.`player_inventory` (
73 `id` INT NOT NULL AUTO_INCREMENT,
74 `player_id` INT NOT NULL,
75 `item_id` INT NOT NULL,
76 `slot` INT NOT NULL,
77 `amount` INT NOT NULL,
78 PRIMARY KEY (`id`, `item_id`, `player_id`),
79 UNIQUE INDEX `id_UNIQUE` (`id` ASC),
80 INDEX `fk_player_inventory_items1_idx` (`item_id` ASC),
81 INDEX `fk_player_inventory_players1_idx` (`player_id` ASC),
82 CONSTRAINT `fk_player_inventory_items1`
83 FOREIGN KEY (`item_id`)
84 REFERENCES `santosrp`.`item` (`id`)
85 ON DELETE NO ACTION
86 ON UPDATE NO ACTION,
87 CONSTRAINT `fk_player_inventory_players1`
88 FOREIGN KEY (`player_id`)
89 REFERENCES `santosrp`.`player` (`id`)
90 ON DELETE NO ACTION
91 ON UPDATE NO ACTION)
92 ENGINE = InnoDB
93 ]]
94
95 GAMEMODE.Database:RawQuery[[
96 CREATE TABLE IF NOT EXISTS `santosrp`.`player_vehicles` (
97 `id` INT NOT NULL AUTO_INCREMENT,
98 `player_id` INT NOT NULL,
99 `vehicle_id` INT NOT NULL,
100 PRIMARY KEY (`id`, `vehicle_id`, `player_id`),
101 UNIQUE INDEX `id_UNIQUE` (`id` ASC),
102 INDEX `fk_player_vehicles_vehicle1_idx` (`vehicle_id` ASC),
103 INDEX `fk_player_vehicles_players1_idx` (`player_id` ASC),
104 CONSTRAINT `fk_player_vehicles_vehicles1`
105 FOREIGN KEY (`vehicle_id`)
106 REFERENCES `santosrp`.`vehicle` (`id`)
107 ON DELETE NO ACTION
108 ON UPDATE NO ACTION,
109 CONSTRAINT `fk_player_vehicles_players1`
110 FOREIGN KEY (`player_id`)
111 REFERENCES `santosrp`.`player` (`id`)
112 ON DELETE NO ACTION
113 ON UPDATE NO ACTION)
114 ENGINE = InnoDB
115 ]]
116
117 GAMEMODE.Database:RawQuery[[
118 CREATE TABLE IF NOT EXISTS `santosrp`.`player_clothing` (
119 `id` INT NOT NULL AUTO_INCREMENT,
120 `player_id` INT NOT NULL,
121 `item_id` INT NOT NULL,
122 PRIMARY KEY (`id`, `item_id`, `player_id`),
123 UNIQUE INDEX `id_UNIQUE` (`id` ASC),
124 INDEX `fk_player_clothing_items1_idx` (`item_id` ASC),
125 INDEX `fk_player_clothing_players1_idx` (`player_id` ASC),
126 CONSTRAINT `fk_player_clothing_items1`
127 FOREIGN KEY (`item_id`)
128 REFERENCES `santosrp`.`item` (`id`)
129 ON DELETE NO ACTION
130 ON UPDATE NO ACTION,
131 CONSTRAINT `fk_player_clothing_players1`
132 FOREIGN KEY (`player_id`)
133 REFERENCES `santosrp`.`player` (`id`)
134 ON DELETE NO ACTION
135 ON UPDATE NO ACTION)
136 ENGINE = InnoDB
137 ]]
138
139 GAMEMODE.Database:RawQuery[[
140 CREATE TABLE IF NOT EXISTS `santosrp`.`player_skills` (
141 `id` INT NOT NULL AUTO_INCREMENT,
142 `player_id` INT NOT NULL,
143 `skills` INT NOT NULL,
144 PRIMARY KEY (`id`, `player_id`),
145 UNIQUE INDEX `id_UNIQUE` (`id` ASC),
146 INDEX `fk_player_skills_players1_idx` (`player_id` ASC),
147 CONSTRAINT `fk_player_skills_players1`
148 FOREIGN KEY (`player_id`)
149 REFERENCES `santosrp`.`player` (`id`)
150 ON DELETE NO ACTION
151 ON UPDATE NO ACTION)
152 ENGINE = InnoDB
153 ]]
154
155 GAMEMODE.Database:RawQuery[[
156 CREATE TABLE IF NOT EXISTS `SantosRP_Organizations` (
157 `idx` varchar(255) NOT NULL,
158 `pass` text,
159 `players` text,
160 PRIMARY KEY (`idx`)
161 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
162 ]]
163end)
164
165concommand.Add( 'santosrp_mysql_createall', function()
166
167 GAMEMODE.Database:RawQuery[[
168 CREATE TABLE IF NOT EXISTS `santosrp`.`player` (
169 `id` INT NOT NULL AUTO_INCREMENT,
170 `steamid` BIGINT UNSIGNED NOT NULL COMMENT 'this hold all players that ever joined and assigns them an id',
171 PRIMARY KEY (`id`),
172 UNIQUE INDEX `id_UNIQUE` (`id` ASC),
173 UNIQUE INDEX `steamid_UNIQUE` (`steamid` ASC))
174 ENGINE = InnoDB;
175 ]]
176
177 GAMEMODE.Database:RawQuery[[
178 CREATE TABLE IF NOT EXISTS `santosrp`.`item` (
179 `id` INT NOT NULL AUTO_INCREMENT,
180 `name` VARCHAR(100) NOT NULL,
181 UNIQUE INDEX `name_UNIQUE` (`name` ASC),
182 PRIMARY KEY (`id`),
183 UNIQUE INDEX `id_UNIQUE` (`id` ASC))
184 ENGINE = InnoDB;
185 ]]
186
187 GAMEMODE.Database:RawQuery[[
188 CREATE TABLE IF NOT EXISTS `santosrp`.`vehicle` (
189 `id` INT NOT NULL AUTO_INCREMENT,
190 `name` VARCHAR(100) NOT NULL,
191 UNIQUE INDEX `name_UNIQUE` (`name` ASC),
192 PRIMARY KEY (`id`),
193 UNIQUE INDEX `id_UNIQUE` (`id` ASC))
194 ENGINE = InnoDB;
195 ]]
196
197 GAMEMODE.Database:RawQuery[[
198 CREATE TABLE IF NOT EXISTS `santosrp`.`player_info` (
199 `player_id` INT NOT NULL,
200 `rpname` VARCHAR(25) NULL,
201 `money` BIGINT UNSIGNED NOT NULL,
202 `bank_money` BIGINT NOT NULL,
203 `model` VARCHAR(100) NULL,
204 `color` VARCHAR(15) NULL,
205 PRIMARY KEY (`player_id`),
206 UNIQUE INDEX `player_id_UNIQUE` (`player_id` ASC),
207 CONSTRAINT `fk_player_info_player1`
208 FOREIGN KEY (`player_id`)
209 REFERENCES `santosrp`.`player` (`id`)
210 ON DELETE NO ACTION
211 ON UPDATE NO ACTION)
212 ENGINE = InnoDB;
213 ]]
214
215 GAMEMODE.Database:RawQuery[[
216 CREATE TABLE IF NOT EXISTS `santosrp`.`player_inventory` (
217 `id` INT NOT NULL,
218 `player_id` INT NOT NULL,
219 `item_id` INT NOT NULL,
220 `amount` INT NOT NULL,
221 PRIMARY KEY (`id`, `item_id`, `player_id`),
222 UNIQUE INDEX `id_UNIQUE` (`id` ASC),
223 INDEX `fk_player_inventory_items1_idx` (`item_id` ASC),
224 INDEX `fk_player_inventory_players1_idx` (`player_id` ASC),
225 CONSTRAINT `fk_player_inventory_items1`
226 FOREIGN KEY (`item_id`)
227 REFERENCES `santosrp`.`item` (`id`)
228 ON DELETE NO ACTION
229 ON UPDATE NO ACTION,
230 CONSTRAINT `fk_player_inventory_players1`
231 FOREIGN KEY (`player_id`)
232 REFERENCES `santosrp`.`player` (`id`)
233 ON DELETE NO ACTION
234 ON UPDATE NO ACTION)
235 ENGINE = InnoDB
236 ]]
237
238 GAMEMODE.Database:RawQuery[[
239 CREATE TABLE IF NOT EXISTS `santosrp`.`player_vehicles` (
240 `id` INT NOT NULL AUTO_INCREMENT,
241 `player_id` INT NOT NULL,
242 `vehicle_id` INT NOT NULL,
243 PRIMARY KEY (`id`, `vehicle_id`, `player_id`),
244 UNIQUE INDEX `id_UNIQUE` (`id` ASC),
245 INDEX `fk_player_vehicles_vehicle1_idx` (`vehicle_id` ASC),
246 INDEX `fk_player_vehicles_players1_idx` (`player_id` ASC),
247 CONSTRAINT `fk_player_vehicles_vehicles1`
248 FOREIGN KEY (`vehicle_id`)
249 REFERENCES `santosrp`.`vehicle` (`id`)
250 ON DELETE NO ACTION
251 ON UPDATE NO ACTION,
252 CONSTRAINT `fk_player_vehicles_players1`
253 FOREIGN KEY (`player_id`)
254 REFERENCES `santosrp`.`player` (`id`)
255 ON DELETE NO ACTION
256 ON UPDATE NO ACTION)
257 ENGINE = InnoDB
258 ]]
259
260 GAMEMODE.Database:RawQuery[[
261 CREATE TABLE IF NOT EXISTS `santosrp`.`player_clothing` (
262 `id` INT NOT NULL AUTO_INCREMENT,
263 `player_id` INT NOT NULL,
264 `item_id` INT NOT NULL,
265 PRIMARY KEY (`id`, `item_id`, `player_id`),
266 UNIQUE INDEX `id_UNIQUE` (`id` ASC),
267 INDEX `fk_player_vehicles_item1_idx` (`item_id` ASC),
268 INDEX `fk_player_vehicles_players1_idx` (`player_id` ASC),
269 CONSTRAINT `fk_player_vehicles_item1`
270 FOREIGN KEY (`item_id`)
271 REFERENCES `santosrp`.`item` (`id`)
272 ON DELETE NO ACTION
273 ON UPDATE NO ACTION,
274 CONSTRAINT `fk_player_vehicles_players1`
275 FOREIGN KEY (`player_id`)
276 REFERENCES `santosrp`.`player` (`id`)
277 ON DELETE NO ACTION
278 ON UPDATE NO ACTION)
279 ENGINE = InnoDB
280 ]]
281
282 GAMEMODE.Database:RawQuery[[
283 CREATE TABLE IF NOT EXISTS `santosrp`.`player_skills` (
284 `id` INT NOT NULL AUTO_INCREMENT,
285 `player_id` INT NOT NULL,
286 `skills` INT NOT NULL,
287 PRIMARY KEY (`id`, `player_id`),
288 UNIQUE INDEX `id_UNIQUE` (`id` ASC),
289 INDEX `fk_player_skills_players1_idx` (`player_id` ASC),
290 CONSTRAINT `fk_player_skills_players1`
291 FOREIGN KEY (`player_id`)
292 REFERENCES `santosrp`.`player` (`id`)
293 ON DELETE NO ACTION
294 ON UPDATE NO ACTION)
295 ENGINE = InnoDB
296 ]]
297
298 GAMEMODE.Database:RawQuery[[
299 CREATE TABLE IF NOT EXISTS `SantosRP_Organizations` (
300 `idx` varchar(255) NOT NULL,
301 `pass` text,
302 `players` text,
303 PRIMARY KEY (`idx`)
304 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
305 ]]
306
307end)
308
309concommand.Add( 'santosrp_mysql_dropall' , function( )
310 if not santosRP.isBeta then return end
311 GAMEMODE.Database:RawQuery [[ DROP TABLE `santosrp`.`SantosRP_Organizations`, `santosrp`.`player_inventory`, `santosrp`.`player_vehicles`, `santosrp`.`player_info`;]]
312 GAMEMODE.Database:RawQuery [[ DROP TABLE `santosrp`.`item`, `santosrp`.`vehicle`, `santosrp`.`player`;]]
313end)