· 9 years ago · Nov 26, 2016, 12:54 AM
1bool ConnectSQL()
2{
3 con = mysql_init(NULL);
4 if (!con)
5 return false;
6
7 my_bool my_true = true;
8 int my_int = 6000;
9 mysql_options(con, MYSQL_OPT_RECONNECT, &my_true);
10 mysql_options(con, MYSQL_OPT_READ_TIMEOUT, &my_int);
11
12 if (!mysql_real_connect(con, hosts, user, pass, db, 0, NULL, 0))
13 {
14 fprintf(stderr, "%s\n", mysql_error(con));
15
16 return false;
17 }
18
19 return true;
20}
21
22MYSQL_RES *MySQLQuery(char *msg, ...)
23{
24 /* Arglist */
25 char buffer[1024];
26 va_list arglist;
27 va_start(arglist, msg);
28 vsprintf(buffer, msg, arglist);
29 va_end(arglist);
30 /* Fim arlist */
31
32 // Está conectado?
33 if (con == NULL)
34 return NULL;
35
36 if (mysql_query(con, buffer))
37 {
38 if (mysql_affected_rows(con) == -1)
39 printf("ERROR 1 : %s - '%s'\n", mysql_error(con), buffer);
40
41 return false;
42 }
43
44 //if (mysql_affected_rows(con) == -1)
45 // printf("ERROR 2 : %s - '%s'\n", mysql_error(con), buffer);
46
47 MYSQL_RES *result = mysql_store_result(con);
48 return result;
49}
50
51void Log(INT32 clientId, INT32 type, char *msg, ...)
52{
53 /* Arglist */
54 char buffer[512];
55 va_list arglist;
56 va_start(arglist, msg);
57 vsprintf(buffer, msg, arglist);
58 va_end(arglist);
59 /* Fim arlist */
60
61 static char *queryLog = "INSERT INTO `log_%s` (data, type, accountId, message, macaddress) VALUES (now(), '%d', '%s', '%s', '%02X:%02X:%02X:%02X:%02X:%02X')";
62 static char *queryLogServer = "INSERT INTO `log_server` (type, date, message) VALUES ('%d', now(), '%s')";
63 static char *queryCreate = "\
64 CREATE TABLE IF NOT EXISTS `log_%s` (\
65 `index` int(11) NOT NULL AUTO_INCREMENT,\
66 `data` datetime NOT NULL,\
67 `type` int(11) NOT NULL,\
68 `accountId` varchar(32) NOT NULL,\
69 `message` varchar(512) NOT NULL,\
70 `macaddress` varchar(32) NOT NULL,\
71 PRIMARY KEY (`index`)\
72 ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;";
73
74 if(clientId >= MAX_PLAYER)
75 {
76 MySQLQuery(queryLogServer, type, buffer);
77
78 return;
79 }
80
81 MYSQL_RES* exists = MySQLQuery("SELECT * FROM information_schema.columns WHERE table_name = 'log_%s'", Users[clientId].User.Username);
82 if(mysql_num_rows(exists) <= 0)
83 MySQLQuery(queryCreate, Users[clientId].User.Username);
84 else
85 mysql_free_result(exists);
86
87 if(Users[clientId].Status == USER_PLAY)
88 {
89 char szTMP[512];
90 sprintf(szTMP, "%s - %s", Mob[clientId].Mobs.Player.Name, buffer);
91
92 MySQLQuery(queryLog, Users[clientId].User.Username, type, Users[clientId].User.Username, szTMP, Users[clientId].MacAddress[0], Users[clientId].MacAddress[1], Users[clientId].MacAddress[2], Users[clientId].MacAddress[3], Users[clientId].MacAddress[4], Users[clientId].MacAddress[5]);
93 return;
94 }
95
96 MySQLQuery(queryLog, Users[clientId].User.Username, type, Users[clientId].User.Username, buffer, Users[clientId].MacAddress[0], Users[clientId].MacAddress[1], Users[clientId].MacAddress[2], Users[clientId].MacAddress[3], Users[clientId].MacAddress[4], Users[clientId].MacAddress[5]);
97}