· 5 years ago · Feb 23, 2020, 01:52 AM
1#include <amxmodx>
2#include <amxmisc>
3#include <amxmodx>
4#include <cstrike>
5#include <fakemeta>
6#include <engine>
7#include <hamsandwich>
8#include <print_color>
9#include <inc_rang>
10#include <sqlx>
11
12#define TABLENAME "sql_save"
13#define g_iMaxlevel 60
14
15new g_iQuery[1024], g_sSteamid[32];
16new const SQLBELEPO[][] = { "db.synhosting.eu", "TuranDR", "Faszombeled12989", "TuranDR" };
17new Handle:g_SqlTuple;
18
19enum _: g_eData{
20 g_sUspname[64],
21 g_sFile[64],
22 g_ieLevel[64],
23 Float:g_fDamage[64]
24};
25new g_iGold[33], g_iKills[33], g_iLevel[33], g_iExp[33], g_iSkin[33], g_sTitle[256];
26new const g_cSkins[][g_eData] ={
27 {"Alap USP", "models/v_usp.mdl", 0},
28 {"Spitfire", "models/uspskinek_DR/USP1.mdl", 3},
29 {"Night shark", "models/uspskinek_DR/USP2.mdl", 7},
30 {"Torque", "models/uspskinek_DR/USP3.mdl", 15},
31 {"Engraved camo", "models/uspskinek_DR/USP4.mdl", 20},
32 {"Bright line", "models/uspskinek_DR/USP5.mdl", 23},
33 {"Caiman", "models/uspskinek_DR/USP6.mdl", 25},
34 {"Chicken", "models/uspskinek_DR/USP7.mdl", 27},
35 {"Cyrex", "models/uspskinek_DR/USP8.mdl", 30},
36 {"Kill confirmed", "models/uspskinek_DR/USP9.mdl", 33},
37 {"Orion", "models/uspskinek_DR/USP10.mdl", 36},
38 {"Makarov PB", "models/uspskinek_DR/USP11.mdl", 39},
39 {"Comet", "models/uspskinek_DR/USP12.mdl", 40},
40 {"Hyper beast", "models/uspskinek_DR/USP13.mdl", 45},
41 {"Vexter blue", "models/uspskinek_DR/USP14.mdl", 4},
42 {"Fade \w(2x damage)", "models/uspskinek_DR/USP15.mdl", 50, 2.0}, //2x damage 15
43 {"Gold \w(3x damage)", "models/uspskinek_DR/USP16.mdl", 53, 3.0}, //3x damage 16
44 {"Silver \w(4x damage)", "models/uspskinek_DR/USP17.mdl", 55, 4.0}, //4x damage 17
45 {"Hitman \w(5x damage)", "models/uspskinek_DR/USP18.mdl", 60, 5.0} //5x damage 18
46}
47new const g_cExppoint[g_iMaxlevel] ={
48 50, 150, 300, 400, 500, 650, 800, 1000, 1150, 1300,
49 1550, 1700, 1850, 2000, 2150, 2400, 2550, 2700, 2900, 3050,
50 303200, 3300, 3500, 3750, 3990, 4120, 4530 ,4710, 4905, 5050,
51 5160, 5300, 5450, 5670, 5980, 6230, 6455, 6840, 7000, 7240,
52 7350, 7510, 7770, 7990, 8100, 8340, 8560, 8695, 8820, 9000,
53 10500, 10650, 10850, 11000, 12500, 12990, 13560, 15000, 15500, 16000//60
54};
55public plugin_init(){
56 register_plugin("Deathrunskinek", "1.0.0", "Turán*");
57
58 RegisterHam(Ham_TakeDamage,"player","weapondamage",0);
59 register_event("CurWeapon", "Weaponchange", "be", "1=1");
60 register_clcmd("say /menu", "menu_mainmenu");
61}
62public weapondamage(iVictim, iInflicator, iKiller, Float:damage){
63 if(!is_user_connected(iKiller))
64 return;
65
66 if(iVictim == iKiller || !iVictim)
67 return;
68
69 if(iKiller != iVictim){
70 new iKillnum, sName[32];
71 get_user_name(iVictim, sName, charsmax(sName));
72 iKillnum = random_num(1,15);
73 g_iExp[iKiller] += iKillnum;
74 g_iGold[iKiller] += iKillnum;
75 g_iKills[iKiller]++;
76 check_level(iKiller);
77 print_color(iKiller, "Kaptal +%d xpt, +%d olest, +%d aranyat, %s megoleseert.",g_iExp[iKiller],g_iKills[iKiller],g_iGold[iKiller],sName);
78 }
79 if(get_user_weapon(iKiller) == CSW_USP && g_iSkin[iKiller] == 15){
80 SetHamParamFloat(4, damage * g_cSkins[15][g_fDamage])
81 }
82 else if(get_user_weapon(iKiller) == CSW_USP && g_iSkin[iKiller] == 16){
83 SetHamParamFloat(4, damage * g_cSkins[16][g_fDamage])
84 }
85 else if(get_user_weapon(iKiller) == CSW_USP && g_iSkin[iKiller] == 17){
86 SetHamParamFloat(4, damage * g_cSkins[17][g_fDamage])
87 }
88 else if(get_user_weapon(iKiller) == CSW_USP && g_iSkin[iKiller] == 18){
89 SetHamParamFloat(4, damage * g_cSkins[18][g_fDamage])
90 }
91
92}
93public menu_mainmenu(iId){
94 new iMenu = menu_create("Fomenu | valassz valamit", "menu_mainmenu_h");
95
96 menu_additem(iMenu, "USP skinek", "1",0);
97 menu_additem(iMenu, "Kesmenu", "2",0);
98 menu_additem(iMenu, "Shop", "3",0);
99 menu_additem(iMenu, "Informacio", "4",0);
100
101 menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL);
102 menu_setprop(iMenu, MPROP_BACKNAME, "Vissza");
103 menu_setprop(iMenu, MPROP_NEXTNAME, "Kovetkezo");
104 menu_setprop(iMenu, MPROP_EXITNAME, "Kilepes");
105 menu_display(iId, iMenu, 0);
106}
107public menu_mainmenu_h(iId, iMenu, iItem){
108 if(iItem == MENU_EXIT){
109 menu_destroy(iMenu);
110 return PLUGIN_HANDLED;
111 }
112 new sData[6], iAccess;
113 menu_item_getinfo(iMenu, iItem, iAccess, sData, charsmax(sData));
114 new iKey = str_to_num(sData);
115 switch(iKey){
116 case 1:menu_uspskins(iId);
117 case 2:client_cmd(iId, "say /kes");
118 case 3:client_cmd(iId, "say /shop");
119 case 4:menu_infos(iId)
120 }
121 return PLUGIN_HANDLED;
122}
123public menu_uspskins(iId){
124 new sRow[7];
125 formatex(g_sTitle, charsmax(g_sTitle), "USP skinek | valassz skint");
126 new iMenu = menu_create(g_sTitle, "menu_uspskins_h");
127 for(new i = 0;i < sizeof(g_cSkins); i++){
128 if(g_iLevel[iId] >= g_cSkins[i][g_ieLevel]){
129 num_to_str(i, sRow, 6);
130 formatex(g_sTitle, charsmax(g_sTitle), "%s | feloldva", g_cSkins[i][g_sUspname]);
131 menu_additem(iMenu, g_sTitle, sRow);
132 }
133 else{
134 num_to_str(i, sRow, 6);
135 formatex(g_sTitle, charsmax(g_sTitle), "%s | %d. szinttol", g_cSkins[i][g_sUspname], g_cSkins[i][g_ieLevel]);
136 menu_additem(iMenu, g_sTitle, sRow);
137 }
138 }
139 menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL);
140 menu_setprop(iMenu, MPROP_BACKNAME, "Vissza");
141 menu_setprop(iMenu, MPROP_NEXTNAME, "Kovetkezo");
142 menu_setprop(iMenu, MPROP_EXITNAME, "Kilepes");
143 menu_display(iId, iMenu, 0);
144}
145public menu_uspskins_h(iId, iMenu, iItem){
146 if(iItem == MENU_EXIT){
147 menu_destroy(iMenu);
148 return PLUGIN_HANDLED;
149 }
150 new sData[6], iAccess;
151 menu_item_getinfo(iMenu, iItem, iAccess, sData, charsmax(sData));
152 new iKey = str_to_num(sData);
153
154 if(g_iSkin[iId] == iKey && g_iLevel[iId] >= g_cSkins[iKey][g_ieLevel]){
155 print_color(iId, "Sikeresen kivalasztottad a(z) %s skint.", g_cSkins[iKey][g_sUspname])
156 }
157 else if(g_iLevel[iId] < g_cSkins[iKey][g_ieLevel]){
158 print_color(iId, "A %s skin %d szinttol erheto el..", g_cSkins[iKey][g_sUspname], g_cSkins[iKey][g_ieLevel])
159 g_iSkin[iId] = 0;
160 }
161 return PLUGIN_HANDLED;
162}
163public menu_infos(iId){
164 formatex(g_sTitle, charsmax(g_sTitle), "Informacio");
165 new iMenu = menu_create(g_sTitle, "menu_infos_h");
166
167 for(new i = 0; i < sizeof(Chat_resz); i++){
168 formatex(g_sTitle, charsmax(g_sTitle), "Rangod: %s", Chat_resz[i][rang]);
169 menu_additem(iMenu , g_sTitle, "1",0);
170 formatex(g_sTitle, charsmax(g_sTitle), "Jogaid: %s", Chat_resz[i][rangflag]);
171 menu_additem(iMenu , g_sTitle, "2",0);
172 break;
173 }
174
175 formatex(g_sTitle, charsmax(g_sTitle), "Aranyad: %d", g_iGold[iId]);
176 menu_additem(iMenu , g_sTitle, "3",0);
177 formatex(g_sTitle, charsmax(g_sTitle), "Oleseid: %d", g_iKills[iId]);
178 menu_additem(iMenu , g_sTitle, "4",0);
179 formatex(g_sTitle, charsmax(g_sTitle), "Szinted: %d | XP: %d", g_iLevel[iId], g_iExp[iId]);
180 menu_additem(iMenu , g_sTitle, "5",0);
181
182 menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL);
183 menu_setprop(iMenu, MPROP_BACKNAME, "Vissza");
184 menu_setprop(iMenu, MPROP_NEXTNAME, "Kovetkezo");
185 menu_setprop(iMenu, MPROP_EXITNAME, "Kilepes");
186 menu_display(iId, iMenu, 0);
187}
188public menu_infos_h(iId, iMenu, iItem){
189 if(iItem == MENU_EXIT){
190 menu_destroy(iMenu);
191 return PLUGIN_HANDLED;
192 }
193 if(iItem < 6)
194 menu_infos(iId);
195
196 return PLUGIN_HANDLED;
197}
198public check_level(iId){
199 if(is_user_bot(iId) && is_user_connected(iId))
200 return PLUGIN_HANDLED;
201
202 while(g_iExp[iId] >= g_cExppoint[g_iLevel[iId]]){
203 if(g_iLevel[iId] < g_iMaxlevel){
204 g_iLevel[iId]++;
205 print_color(iId, "Sikeres szintlepes szinted: %d/%d.",g_iLevel[iId], g_iMaxlevel);
206 }
207 }
208 if(g_iLevel[iId] == g_iMaxlevel)
209 print_color(iId, "Elerted a(z) %d. szintet, ami a jelenlegi max.", g_iMaxlevel);
210
211 if(g_iLevel[iId] == g_iMaxlevel && g_iExp[iId] > g_cExppoint[g_iLevel[iId]]){
212 g_iExp[iId] = g_cExppoint[g_iLevel[iId]];
213 sql_save(iId)
214 sql_update(iId)
215 }
216 if(g_iLevel[iId] >= g_iMaxlevel){
217 g_iLevel[iId] = g_iMaxlevel;
218 sql_save(iId)
219 sql_update(iId)
220 }
221 return PLUGIN_HANDLED;
222}
223public Weaponchange(iId){
224 new iWeapon = get_user_weapon(iId);
225
226 for(new i;i < sizeof(g_cSkins); i++){
227 if(g_iSkin[iId] == i && iWeapon == CSW_USP){
228 set_pev(iId, pev_viewmodel2, g_cSkins[i][g_sFile]);
229 }
230 }
231}
232public plugin_precache(){
233 for(new i;i < sizeof(g_cSkins); i++){
234 precache_model(g_cSkins[i][g_sFile]);
235 }
236}
237public client_connect(iId){
238 if(is_user_bot(iId))
239 return;
240 get_user_authid(iId, g_sSteamid, charsmax(g_sSteamid));
241 sql_load(iId);
242 g_iGold[iId] = 0;
243 g_iKills[iId] = 0;
244 g_iLevel[iId] = 0;
245 g_iExp[iId] = 0;
246 g_iSkin[iId] = 0;
247}
248public client_disconnected(iId){
249 if(is_user_bot(iId))
250 return;
251 sql_save(iId);
252 g_iGold[iId] = 0;
253 g_iKills[iId] = 0;
254 g_iLevel[iId] = 0;
255 g_iExp[iId] = 0;
256 g_iSkin[iId] = 0;
257}
258public plugin_cfg(){
259 g_SqlTuple = SQL_MakeDbTuple(SQLBELEPO[0], SQLBELEPO[1], SQLBELEPO[2], SQLBELEPO[3]);
260 new Len = 0;
261 Len += formatex(g_iQuery[Len], charsmax(g_iQuery), "CREATE TABLE IF NOT EXISTS `%s`", TABLENAME);
262 Len += formatex(g_iQuery[Len], charsmax(g_iQuery)-Len, "(`Steamid` varchar(64) NOT NULL,");
263 Len += formatex(g_iQuery[Len], charsmax(g_iQuery)-Len, "`Arany` int(11) NOT NULL,");
264 Len += formatex(g_iQuery[Len], charsmax(g_iQuery)-Len, "`Oles` int(11) NOT NULL,");
265 Len += formatex(g_iQuery[Len], charsmax(g_iQuery)-Len, "`Szint` int(11) NOT NULL,");
266 Len += formatex(g_iQuery[Len], charsmax(g_iQuery)-Len, "`Xp` int(11) NOT NULL, `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)");
267 SQL_ThreadQuery(g_SqlTuple, "createTableThread", g_iQuery);
268}
269public createTableThread(FailState, Handle:g_iQuery, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
270 if(FailState == TQUERY_CONNECT_FAILED)
271 set_fail_state("[*HIBA*] NEM LEHET KAPCSOLODNI AZ ADATBAZISHOZ!");
272 else if(FailState == TQUERY_QUERY_FAILED)
273 set_fail_state("[*HIBA*] A LEKERDEZES MEGSZAKADT!");
274 if(Errcode)
275 log_amx("[*HIBA*] PROBLEMA A LEKERDEZESNEL! ( %s )",Error);
276}
277public sql_load(iId){
278 new Data[2];
279 Data[0] = iId;
280 Data[1] = get_user_userid(iId);
281
282 formatex(g_iQuery, charsmax(g_iQuery), "SELECT * FROM `%s` WHERE Steamid = ^"%s^";", TABLENAME, g_sSteamid)
283 SQL_ThreadQuery(g_SqlTuple, "sql_load_thr", g_iQuery, Data, 2);
284}
285public sql_load_thr(FailState, Handle:g_iQuery, Error[], Errcode, Data[], DataSize, Float:Queuetime){
286 if(FailState == TQUERY_CONNECT_FAILED)
287 set_fail_state("[*HIBA*] NEM LEHET KAPCSOLODNI AZ ADATBAZISHOZ!");
288 else if(FailState == TQUERY_QUERY_FAILED)
289 set_fail_state("[*HIBA*] A LEKERDEZES MEGSZAKADT!");
290 if(Errcode)
291 log_amx("[*HIBA*] PROBLEMA A LEKERDEZESNEL! ( %s )",Error);
292
293 new iId = Data[0];
294 if(get_user_userid(iId) != Data[1])
295 return;
296
297 if(SQL_NumRows(g_iQuery) > 0){
298 g_iGold[iId] = SQL_ReadResult(g_iQuery, SQL_FieldNameToNum(g_iQuery, "Arany"));
299 g_iKills[iId] = SQL_ReadResult(g_iQuery, SQL_FieldNameToNum(g_iQuery, "Oles"));
300 g_iLevel[iId] = SQL_ReadResult(g_iQuery, SQL_FieldNameToNum(g_iQuery, "Szint"));
301 g_iExp[iId] = SQL_ReadResult(g_iQuery, SQL_FieldNameToNum(g_iQuery, "Xp"));
302 }
303 else{
304 sql_save(iId);
305 }
306}
307public sql_update(iId){
308 new Len = 0;
309 Len += formatex(g_iQuery[Len], charsmax(g_iQuery), "UPDATE `%s` SET gold = ^"%i^", ",TABLENAME, g_iGold[iId]);
310 Len += formatex(g_iQuery[Len], charsmax(g_iQuery)-Len, "Oles = ^"%i^", ", g_iKills[iId]);
311 Len += formatex(g_iQuery[Len], charsmax(g_iQuery)-Len, "Szint = ^"%i^", ", g_iLevel[iId]);
312 Len += formatex(g_iQuery[Len], charsmax(g_iQuery)-Len, "Xp = ^"%i^" WHERE Steamid = ^"%s^";", g_iExp[iId], g_sSteamid);
313 SQL_ThreadQuery(g_SqlTuple, "QuerySetData", g_iQuery);
314}
315public sql_save(iId){
316 formatex(g_iQuery, charsmax(g_iQuery), "INSERT INTO `%s` (`Steamid`) VALUES (^"%s^");",TABLENAME, g_sSteamid);
317 SQL_ThreadQuery(g_SqlTuple, "QuerySetData", g_iQuery);
318}
319public QuerySetData(FailState, Handle:g_iQuery, Error[], Errcode, Data[], DataSize, Float:Queuetime){
320 if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
321 log_amx("%s", Error);
322}
323public plugin_end(){
324 SQL_FreeHandle(g_SqlTuple);
325}