· 8 years ago · Jun 20, 2018, 02:58 PM
1#include <amxmodx>
2#include <cstrike>
3#include <sqlx>
4
5new g_szAuth[33][36]
6
7new g_szSQLTable[64], Handle:g_hSQLTuple, g_szQuery[256]
8
9new g_cvar_auth_type
10
11public plugin_init()
12{
13 register_plugin("[ZP] Ammo Bank", "1.0", "??? & PomanoB")
14
15 register_cvar("zp_bank_sql_host", "109.68.190.85")
16 register_cvar("zp_bank_sql_user", "bos93")
17 register_cvar("zp_bank_sql_pass", "KhDrsTQLNi0BVp")
18 register_cvar("zp_bank_sql_db", "weapons")
19 register_cvar("zp_bank_sql_type", "mysql")
20
21 new cvTable = register_cvar("zp_bank_table", "zp_bank")
22
23 g_cvar_auth_type = register_cvar("zp_bank_auth_type", "1")
24
25 get_pcvar_string(cvTable, g_szSQLTable, charsmax(g_szSQLTable))
26 new host[32],user[32],password[32],db[32]
27 get_cvar_string("zp_bank_sql_host",host,31)
28 get_cvar_string("zp_bank_sql_user",user,31)
29 get_cvar_string("zp_bank_sql_pass",password,31)
30 get_cvar_string("zp_bank_sql_db",db,31)
31
32 g_hSQLTuple = SQL_MakeDbTuple(host,user,password,db)
33
34 new iError, szError[256]
35 new Handle:hSQLConnection = SQL_Connect(g_hSQLTuple, iError, szError, charsmax(szError))
36 if(hSQLConnection != Empty_Handle)
37 {
38 SQL_QueryAndIgnore(hSQLConnection,
39 "CREATE TABLE IF NOT EXISTS `%s` (\
40 `USER_KEY` varchar(32) NOT NULL default '', \
41 `LAST_PLAY_DATE` timestamp(14) NOT NULL, \
42 `AP` int(10) NOT NULL default '0' ,\
43 `NAME` varchar(32) \
44 , PRIMARY KEY (`USER_KEY`) ) \
45 TYPE=MyISAM",
46 g_szSQLTable )
47
48 SQL_FreeHandle(hSQLConnection)
49 }
50 else
51 log_amx("plugin_init(): SQL Error #%d - %s", iError, szError)
52
53
54}
55
56public plugin_end()
57{
58 if (g_hSQLTuple)
59 SQL_FreeHandle(g_hSQLTuple)
60}
61
62public client_putinserver(id)
63{
64 static szAuth[36]
65
66 switch (get_pcvar_num(g_cvar_auth_type))
67 {
68 case 0:
69 get_user_authid(id, szAuth, charsmax(szAuth))
70 case 1:
71 get_user_ip(id, szAuth, charsmax(szAuth),1)
72 default:
73 get_user_name(id, szAuth, charsmax(szAuth))
74
75 }
76 copy(g_szAuth[id], charsmax(g_szAuth[]), szAuth)
77
78 LoadClient(id, szAuth)
79}
80
81public client_disconnect(id)
82{
83 SaveClient(id, g_szAuth[id])
84
85 g_szAuth[id][0] = 0
86}
87
88LoadClient(id, szAuth[])
89{
90 formatex(g_szQuery, charsmax(g_szQuery),
91 "SELECT `AP` FROM `%s` WHERE `USER_KEY` = '%s'",
92 g_szSQLTable, szAuth)
93
94 new cData[37]
95 cData[0] = id
96 copy(cData[1], charsmax(cData)-1, szAuth)
97
98 SQL_ThreadQuery(g_hSQLTuple, "LoadClient_QueryHandler", g_szQuery, cData, strlen(cData[1]))
99}
100
101public LoadClient_QueryHandler(iFailState, Handle:hQuery, szError[], iErrnum, cData[], iSize, Float:fQueueTime)
102{
103 if(iFailState != TQUERY_SUCCESS)
104 {
105 log_amx("LoadClient(): SQL Error #%d - %s", iErrnum, szError)
106 return
107 }
108
109 new id = cData[0]
110 static szAuth[36]
111 copy(szAuth, charsmax(szAuth), cData[1])
112
113 new iAmmoPacks = 0
114 if(SQL_NumResults(hQuery))
115 iAmmoPacks = SQL_ReadResult(hQuery, 0)
116
117 cs_set_user_money(id,iAmmoPacks )
118}
119
120SaveClient(id, szAuth[])
121{
122 new ammoc = cs_get_user_money(id)
123 new name[32]
124 get_user_name(id,name,31)
125
126 formatex(g_szQuery, charsmax(g_szQuery),
127 "INSERT INTO `%s` SET `USER_KEY`='%s', `AP`='%d', `LAST_PLAY_DATE`=SYSDATE(), `NAME`='%s' ON DUPLICATE KEY UPDATE `AP`='%d', `LAST_PLAY_DATE`=SYSDATE(), `NAME`='%s'",
128 g_szSQLTable, szAuth, ammoc, name, ammoc, name)
129
130 SQL_ThreadQuery(g_hSQLTuple, "SaveClient_QueryHandler", g_szQuery)
131}
132
133public SaveClient_QueryHandler(iFailState, Handle:hQuery, szError[], iErrnum, iData[], iSize, Float:fQueueTime)
134{
135 if(iFailState != TQUERY_SUCCESS)
136 log_amx("SaveClient(): SQL Error #%d - %s", iErrnum, szError)
137}