· 7 years ago · Oct 08, 2018, 08:06 PM
1
2#define MAX_POBJECTS 35
3
4// When server starts
5// for(new i = 0; i < MAX_POBJECTS; i++)LoadObjects(i);
6
7LoadObjetcs(id){
8 Obj[id][Exists] = 0;
9 new DB_Query[64];
10 mysql_format(Database2, DB_Query, sizeof(DB_Query), "SELECT * FROM `usersobjectsinfo`");
11 mysql_tquery(Database2, DB_Query, "LoadObjectsCoordinates","i", id);
12 return 1;
13
14}
15
16public LoadObjectsCoordinates(id){
17 new Cache: cache, tempid, count;
18 cache = cache_save();
19 cache_set_active(cache);
20
21 if(cache_num_rows() > 0){
22 cache_get_value_int(0, "OBJECTID", tempid);
23 if(tempid){
24 count++;
25 cache_get_value_name(0, "USERNAME", Object[id][ObjOwner], MAX_PLAYER_NAME + 1);
26 cache_get_value_name_float(0, "POSX", Object[id][PosX]);
27 cache_get_value_name_float(0, "POSY", Object[id][PosY]);
28 cache_get_value_name_float(0, "POSZ", Object[id][PosZ]);
29 cache_get_value_name_float(0, "ROTX", Object[id][RX]);
30 cache_get_value_name_float(0, "ROTY", Object[id][RY]);
31 cache_get_value_name_float(0, "ROTZ", Object[id][RZ]);
32 Object[id][ObjectID] = CreateDynamicObject(tempid, Object[id][PosX], Object[id][PosY], Object[id][PosZ], Object[id][RX], Object[id][RY], Object[id][RZ]);
33 printf("Created %d objects", count);
34 Object[id][Exists] = 1;
35 }
36
37 cache_delete(cache);
38
39 return 1;
40 }
41
42 printf("Couldn't load any objects");
43 return 1;
44}
45
46// When a player registers
47
48CreatePlayerTable(){
49 new MySQLOpt: option_id = mysql_init_options(), DB_Query[1024];
50 mysql_set_option(option_id, AUTO_RECONNECT, true);
51
52 Database2 = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_SERVER_DATABASE, option_id);
53
54 if(Database2 == MYSQL_INVALID_HANDLE || mysql_errno(Database2) != 0) {
55 print("I couldn't connect object database, kicking player.");
56 //Kick(playerid);
57 return 1;
58 }
59
60 print("I have connected to object database.");
61
62 strcat(DB_Query, "CREATE TABLE IF NOT EXISTS `usersobjectsinfo`");
63 strcat(DB_Query,"(`ID` int(11) NOT NULL AUTO_INCREMENT,");
64 strcat(DB_Query,"`USERNAME` varchar(24),`POSX` float(12),"); // To get track of who created that obj
65 strcat(DB_Query,"`POSY` float(12),");
66 strcat(DB_Query,"`POSZ` float(12),");
67 strcat(DB_Query,"`ROTX` float(12),");
68 strcat(DB_Query,"`ROTY` float(12),");
69 strcat(DB_Query,"`ROTZ` float(12),");
70 strcat(DB_Query,"`OBJECTID` mediumint(7) NOT NULL,");
71 strcat(DB_Query,"PRIMARY KEY (`ID`))");
72 mysql_tquery(Database2, DB_Query);
73
74 return 1;
75}
76
77// When player creates an object using /build command
78// CMD:build CreateObject, SaveObject(playerid, objectid)
79
80SaveObjects(playerid, id){
81 new DB_Query[256];
82 mysql_format(Database2, DB_Query, sizeof DB_Query, "SELECT * FROM `usersobjectsinfo` WHERE `USERNAME` = '%e'", P[playerid][Name]);
83 mysql_tquery(Database2, DB_Query, "OnPlayerSaveObjects", "ii", playerid, id);
84 return 1;
85}
86
87public OnPlayerSaveObjects(playerid, id){
88 new Cache: rand = cache_save(), tempid0;
89 cache_set_active(rand);
90 new DB_Query[256];
91
92 while(cache_num_rows()){
93 print("cache num rows are != 0");
94 cache_get_value_int(0, "OBJECTID", tempid0);
95 printf("id= %d tempid0= %d", id, tempid0);
96
97 // CODE BELOW DOESN'T GET EXECUTED
98
99 if(id == tempid0){ // Object already exists
100 mysql_format(Database2, DB_Query, sizeof DB_Query, "UPDATE `usersobjectsinfo` SET `POSX`=%0.4f,`POSY`=%0.4f,`POSZ`=%0.4f,`ROTX`=%0.4f,`ROTY`=%0.4f,`ROTZ`=%0.4f,`OBJECTID`=%d WHERE `USERNAME`= '%e' LIMIT 1",
101 Obj[id][PosX], Obj[id][PosY], Obj[id][PosZ], Obj[id][RX], Obj[id][RY], Obj[id][RX], id, Obj[id][ObjOwner]);
102 printf("%s tempid0 = id", Obj[id][ObjOwner]);
103 mysql_tquery(Database2, DB_Query);
104 cache_delete(rand);
105 return 1;
106 }
107 // New object
108 mysql_format(Database2, DB_Query, sizeof DB_Query, "INSERT INTO `usersobjectsinfo` (`USERNAME`,`POSX`,`POSY`,`POSZ`,`ROTX`,`ROTY`,`ROTZ`,`OBJECTID`) VALUES ('%e','%0.3f','%0.3f','%0.3f','%0.3f','%0.3f','%0.3f','%d')",
109 P[playerid][Name],Obj[id][PosX], Obj[id][PosY], Obj[id][PosZ], Obj[id][RX], Obj[id][RY], Obj[id][RX], id);
110 printf("%s tempid0 != id", Obj[id][ObjOwner]);
111 mysql_tquery(Database2, DB_Query);
112 cache_delete(rand);
113 return 1;
114
115 }
116
117 print("Couldnt execute any object-saving queries");
118 return 1;
119}