· 9 years ago · Oct 31, 2016, 10:22 AM
1 new Handle:g_hTuple, g_szQuery[ 512 ]
2
3 /* register_cvar ( SQL_HOST, SQL_USER, SQL_PASSWORD, SQL_DATABASE ), думаю понÑтно */
4
5 public plugin_cfg( )
6 {
7 set_task( 0.5, "DB_Init" )
8 }
9
10 public DB_Init( )
11 {
12 new szHost[ 32 ], szUser[ 32 ], szPass[ 32 ], szDB[ 32 ]
13 get_pcvar_string( g_pCvars[ SQL_HOST ], szHost, charsmax( szHost ) )
14 get_pcvar_string( g_pCvars[ SQL_USER ], szUser, charsmax( szUser ) )
15 get_pcvar_string( g_pCvars[ SQL_PASSWORD ], szPass, charsmax( szPass ) )
16 get_pcvar_string( g_pCvars[ SQL_DATABASE ], szDB, charsmax( szDB ) )
17
18 g_hTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDB )
19
20 if( g_hTuple == Empty_Handle )
21 {
22 set_fail_state( "Cant create connection tuple" )
23 }
24
25 formatex( g_szQuery, charsmax( g_szQuery ), "CREATE TABLE IF NOT EXISTS `amxx_maps` (`mapname` varchar(64) NOT NULL, `played` real NOT NULL)" )
26
27 SQL_ThreadQuery( g_hTuple, "Query_IngnoredHandle", g_szQuery )
28
29 set_task( 1.0, "DelayedLoadMapInfo" )
30 }
31
32 public DelayedLoadMapInfo( )
33 {
34 new szMapname[ 64 ], szError[ 128 ]
35 get_mapname( szMapname, charsmax( szMapname ) )
36
37 new Handle:map_query = SQL_PrepareQuery( g_hTuple, "SELECT `played` FROM amxx_maps WHERE mapname='%s'", szMapname )
38
39 if( !SQL_Execute( map_query ) )
40 {
41 SQL_QueryError( map_query, szError, charsmax( szError ) )
42 }
43 else
44 {
45 while( SQL_MoreResults( map_query ) )
46 {
47 new cData[ 1 ], t_played
48 t_played = SQL_ReadResult( map_query, 0 )
49
50 format( g_szQuery, charsmax( g_szQuery ), "UPDATE amxx_maps SET played=%d WHERE mapname='%s'", t_played + 1, szMapname )
51
52 SQL_ThreadQuery( g_hTuple, "Query_IngnoredHandle", g_szQuery, cData, 1 )
53
54 return;
55 }
56
57 formatex( g_szQuery, charsmax( g_szQuery ), "INSERT INTO `amxx_maps` VALUES('%s','%d')", szMapname, 1 )
58
59 SQL_ThreadQuery( g_hTuple, "Query_IngnoredHandle", g_szQuery )
60 }
61
62 return;
63 }
64
65 public Query_IngnoredHandle( iFailState, Handle:hQuery, szError[ ], iErrnum, cData[ ], iSize, Float:fQueueTime )
66 {
67 if( iFailState != TQUERY_SUCCESS )
68 {
69 log_amx( "SQL Error [ IngnoredHandle ]: #%d - %s", iErrnum, szError )
70 }
71
72 return;
73 }