· 9 years ago · Oct 12, 2016, 11:48 PM
1#include <amxmodx>
2#include <colorchat>
3#include <fun>
4#include <sqlx>
5#include <fakemeta>
6
7enum _:Typ_Kill {
8 Szint,
9 Xp,
10 Pont,
11 Oles
12}
13enum _:Typers {
14 Cost[8],
15 Name[32],
16 Model[64]
17}
18
19new g_IKills[Typ_Kill][33], g_IKes[Typ_Kill][33];
20new const g_IPrefix[] = "[Only Knife 1.0]";
21new SynHud;
22
23new Handle:g_SqlTuple;
24new const SQL_INFO[][] = {
25 "",
26 "",
27 "",
28 ""
29};
30
31new const g_iSzintKesek[][Typers] = {
32 {0, "Alap Kés", "models/v_knife.mdl"},
33 {15, "Kés", "models/onlyknife/Szint/v_.mdl"},
34 {30, "Kés", "models/onlyknife/Szint/v_.mdl"},
35 {55, "Kés", "models/onlyknife/Szint/v_.mdl"},
36 {70, "Kés", "models/onlyknife/Szint/v_.mdl"},
37 {85, "Kés", "models/onlyknife/Szint/v_.mdl"}
38};
39new const g_iPontKesek[][Typers] = {
40 {0, "Alap Kés", "models/v_knife.mdl"},
41 {500, "Kés", "models/onlyknife/Pont/v_.mdl"},
42 {1000, "Kés", "models/onlyknife/Pont/v_.mdl"},
43 {1500, "Kés", "models/onlyknife/Pont/v_.mdl"},
44 {2000, "Kés", "models/onlyknife/Pont/v_.mdl"}
45}
46new const g_iOlesKesek[][Typers] = {
47 {0, "Alap Kés", "models/v_knife.mdl"},
48 {50, "Kés", "models/onlyknife/Oles/v_.mdl"},
49 {100, "Kés", "models/onlyknife/Oles/v_.mdl"},
50 {150, "Kés", "models/onlyknife/Oles/v_.mdl"},
51 {200, "Kés", "models/onlyknife/Oles/v_.mdl"}
52};
53
54public plugin_init() {
55 register_plugin("OnlyKnife", "1.0", "Yoltan.");
56
57 register_clcmd("drop", "Fomenu");
58 register_clcmd("say /menu", "Fomenu");
59
60 register_event("DeathMsg", "Halal", "a");
61 register_event("CurWeapon", "FegyverValtas", "be", "1=1");
62
63 SynHud = CreateHudSyncObj();
64 set_task(3.0, "Hud_M", 0, _, _, "b");
65}
66public Hud_M() {
67 new players[32], pnum, id;
68 get_players(players, pnum, "c");
69
70 for(new i;i<pnum; i++) {
71 id = players[i];
72 set_hudmessage(255, 255, 255, 0.10, 0.2, 0, 6.0, 12.0);
73 ShowSyncHudMsg(id, SynHud, "Szint: %d^nTapasztalat:%d/%d^nPont:%d Ölés:%d", g_IKills[Szint][id],
74 g_IKills[Xp][id], g_IKills[Pont][id], g_IKills[Oles][id]);
75 }
76}
77public plugin_precache() {
78 for(new i;i < sizeof(g_iSzintKesek); i++)
79 precache_model(g_iSzintKesek[i][Model]);
80 for(new i;i < sizeof(g_iPontKesek); i++)
81 precache_model(g_iPontKesek[i][Model]);
82 for(new i;i < sizeof(g_iOlesKesek); i++)
83 precache_model(g_iOlesKesek[i][Model]);
84}
85public FegyverValtas(id) {
86 new Gun = get_user_weapon(id);
87
88 for(new i;i < sizeof(g_iSzintKesek); i++) {
89 if(g_IKes[Szint][id] == i && Gun == CSW_KNIFE)
90 set_pev(id, pev_viewmodel2, g_iSzintKesek[i][Model]);
91 }
92 for(new i;i < sizeof(g_iPontKesek); i++) {
93 if(g_IKes[Pont][id] == i && Gun == CSW_KNIFE)
94 set_pev(id, pev_viewmodel2, g_iPontKesek[i][Model]);
95 }
96 for(new i;i < sizeof(g_iOlesKesek); i++) {
97 if(g_IKes[Oles][id] == i && Gun == CSW_KNIFE)
98 set_pev(id, pev_viewmodel2, g_iOlesKesek[i][Model]);
99 }
100}
101public Halal() {
102 new id = read_data(1);
103 new Num; Num += random_num(11, 17);
104
105 if(id == read_data(2) && id == 0)
106 return PLUGIN_HANDLED;
107
108 g_IKills[Pont][id] += 2;
109 g_IKills[Oles][id] ++;
110
111 if(g_IKills[Szint][id] > 0 && g_IKills[Szint][id] < 1000)
112 g_IKills[Xp][id] += Num;
113
114 if(g_IKills[Xp][id] < 100) {
115 new Nev[32]; get_user_name(id, Nev, 31);
116 g_IKills[Szint][id] ++;
117 g_IKills[Xp][id] -= 100;
118 ColorChat(0, NORMAL, "^4%s ^1Játékos ^3%s ^1Szinted Ugrott.", g_IPrefix, Nev);
119 }
120
121 ColorChat(id, NORMAL, "^4%s ^1Kaptál +2 Pont | +1 Ölés | %d Xp- t.", g_IPrefix, Num);
122 return PLUGIN_HANDLED;
123}
124public Fomenu(id) {
125 new menu = menu_create("\rOnly Knife \d| \yFőmenű\r*", "Fomenu_h");
126
127 menu_additem(menu, "Kések", "1", 0);
128 menu_additem(menu, "Bolt\d(Extra Cuccok)", "2", 0);
129
130 menu_display(id, menu, 0);
131}
132public Fomenu_h(id, menu, item)
133{
134 if(item == MENU_EXIT)
135 {
136 menu_destroy(menu);
137 return;
138 }
139
140 new data[9], access, callback, szName[64];
141 menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
142
143 switch(item)
144 {
145 case 1:Kesek_M(id);
146 case 2:Bolt_M(id);
147 }
148}
149public Kesek_M(id) {
150 new menu = menu_create("\rOnly Knife \d| \yKések\r*", "KesekM_h");
151
152 menu_additem(menu, "Szint Kések", "1", 0);
153 menu_additem(menu, "Pont Kések", "2", 0);
154 menu_additem(menu, "Ölés Kések", "3", 0);
155
156 menu_display(id, menu, 0);
157}
158public KesekM_h(id, menu, item)
159{
160 if(item == MENU_EXIT)
161 {
162 menu_destroy(menu);
163 return;
164 }
165
166 new data[9], access, callback, szName[64];
167 menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
168
169 switch(item)
170 {
171 case 1:Szint_Kesek(id);
172 case 2:Pont_Kesek(id);
173 case 3:Oles_Kesek(id);
174 }
175}
176public Szint_Kesek(id){
177 new cim[128], num[8];
178 new menu = menu_create("\rOnly Knife \d| \ySzint Kések", "KesekS_h");
179
180 for(new i;i < sizeof(g_iSzintKesek); i++) {
181 num_to_str(i, num, charsmax(num));
182 format(cim, charsmax(cim), g_IKills[Szint][id] >= g_iSzintKesek[i][Cost] ? "\w%s \d(Aktiv)":"\w%s \d(%d Szint)", g_iSzintKesek[i][Name], g_iSzintKesek[i][Cost]);
183 menu_additem(menu, cim, num);
184 }
185 menu_display(id, menu, 0);
186}
187public KesekS_h(id, menu, item)
188{
189 if(item == MENU_EXIT)
190 {
191 menu_destroy(menu);
192 return;
193 }
194
195 new data[9], access, callback, szName[64];
196 menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
197
198 if(g_IKills[Szint][id] >= g_iSzintKesek[item][Cost]){
199 g_IKes[Szint][id] = item;
200 g_IKes[Oles][id] = 0;
201 g_IKes[Pont][id] = 0;
202 Knife(id)
203 ColorChat(id, NORMAL, "^4%s ^1Sikeresen kiválasztodtad a ^4%s^1-t.",g_IPrefix, g_iSzintKesek[item][Name]);
204 }
205 else {
206 ColorChat(id, NORMAL, "^4%s ^1Nincs elég szinted kell még %d.", g_IPrefix, g_iSzintKesek[item][Cost]);
207 Szint_Kesek(id);
208 }
209}
210public Pont_Kesek(id){
211 new cim[128], num[8];
212 new menu = menu_create("\rOnly Knife \d| \yPont Kések", "KesekP_h");
213
214 for(new i;i < sizeof(g_iPontKesek); i++) {
215 num_to_str(i, num, charsmax(num));
216 format(cim, charsmax(cim), g_IKills[Pont][id] >= g_iPontKesek[i][Cost] ? "\w%s \d(Aktiv)":"\w%s \d(%d Pont)", g_iPontKesek[i][Name], g_iPontKesek[i][Cost]);
217 menu_additem(menu, cim, num);
218 }
219 menu_display(id, menu, 0);
220}
221public KesekP_h(id, menu, item)
222{
223 if(item == MENU_EXIT)
224 {
225 menu_destroy(menu);
226 return;
227 }
228
229 new data[9], access, callback, szName[64];
230 menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
231
232 if(g_IKills[Pont][id] >= g_iPontKesek[item][Cost]){
233 g_IKes[Pont][id] = item;
234 g_IKes[Szint][id] = 0;
235 g_IKes[Oles][id] = 0;
236 Knife(id)
237 g_IKills[Pont][id] -= g_iPontKesek[item][Cost]
238 ColorChat(id, NORMAL, "^4%s ^1Sikeresen kiválasztodtad a ^4%s^1-t.",g_IPrefix, g_iPontKesek[item][Name]);
239 }
240 else {
241 ColorChat(id, NORMAL, "^4%s ^1Nincs elég pontod kell még %d.", g_IPrefix, g_iPontKesek[item][Cost]);
242 Pont_Kesek(id);
243 }
244}
245public Oles_Kesek(id){
246 new cim[128], num[8];
247 new menu = menu_create("\rOnly Knife \d| \yOles Kések\r*", "KesekO_h");
248
249 for(new i;i < sizeof(g_iOlesKesek); i++) {
250 num_to_str(i, num, charsmax(num));
251 format(cim, charsmax(cim), g_IKills[Oles][id] >= g_iOlesKesek[i][Cost] ? "\w%s \d(Aktiv)":"\w%s \d(%d Ölés)", g_iOlesKesek[i][Name], g_iOlesKesek[i][Cost]);
252 menu_additem(menu, cim, num);
253 }
254 menu_display(id, menu, 0);
255}
256public KesekO_h(id, menu, item)
257{
258 if(item == MENU_EXIT)
259 {
260 menu_destroy(menu);
261 return;
262 }
263
264 new data[9], access, callback, szName[64];
265 menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
266
267 if(g_IKills[Oles][id] >= g_iOlesKesek[item][Cost]){
268 g_IKes[Oles][id] = item;
269 g_IKes[Pont][id] = 0;
270 g_IKes[Szint][id] = 0;
271 Knife(id)
272 ColorChat(id, NORMAL, "^4%s ^1Sikeresen kiválasztodtad a ^4%s^1-t.",g_IPrefix, g_iOlesKesek[item][Name]);
273 }
274 else {
275 ColorChat(id, NORMAL, "^4%s ^1Nincs elég ölésed kell még %d.", g_IPrefix, g_iOlesKesek[item][Cost]);
276 Oles_Kesek(id);
277 }
278}
279public Knife(id) {
280 strip_user_weapons(id);
281 give_item(id, "weapon_knife");
282}
283public Bolt_M(id) {
284 new menu = menu_create("\rOnly Knife \d| \yBolt\r*", "Bolt_h");
285
286 menu_additem(menu, "+25 Hp \d(25 Pont)", "1", 0);
287 menu_additem(menu, "+20 Gyorsaság\d(20 Pont)", "2", 0);
288 menu_additem(menu, "+20 Gravitáció\d(50 Pont)", "3", 0);
289
290 menu_display(id, menu, 0);
291}
292public Bolt_h(id, menu, item)
293{
294 if(item == MENU_EXIT)
295 {
296 menu_destroy(menu);
297 return;
298 }
299
300 new data[9], access, callback, szName[64];
301 menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
302
303 switch(item) {
304 case 1: {
305 if(g_IKills[Pont][id] >= 25) {
306 g_IKills[Pont][id] -= 25;
307 set_user_health(id, get_user_health(id)+25);
308 }
309 else ColorChat(id, NORMAL, "^4%s ^1Nincs elég pontod.", g_IPrefix);
310 }
311 case 2: {
312 if(g_IKills[Pont][id] >= 20) {
313 g_IKills[Pont][id] -= 20;
314 set_user_maxspeed(id, Float:300.0);
315 }
316 else ColorChat(id, NORMAL, "^4%s ^1Nincs elég pontod.", g_IPrefix);
317 }
318 case 3: {
319 if(g_IKills[Pont][id] >= 50) {
320 g_IKills[Pont][id] -= 50;
321 set_user_gravity(id, 0.80);
322 }
323 else ColorChat(id, NORMAL, "^4%s ^1Nincs elég pontod.", g_IPrefix);
324 }
325 }
326}
327public client_disconnect(id) {
328 if(!is_user_bot(id))
329 Update_SQL(id);
330}
331public client_putinserver(id) {
332 g_IKills[Szint][id] = 0;
333 g_IKills[Xp][id] = 0;
334 g_IKills[Pont][id] = 0;
335 g_IKills[Oles][id] = 0;
336
337 g_IKes[Szint][id] = 0;
338 g_IKes[Pont][id] = 0;
339 g_IKes[Oles][id] = 0;
340
341 if(!is_user_bot(id)) {
342 Load_Sql(id);
343 }
344}
345public plugin_cfg() {
346 g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0], SQL_INFO[1], SQL_INFO[2], SQL_INFO[3]);
347
348 new query[2048], len;
349
350 len += formatex(query[len], charsmax(query), "CREATE TABLE IF NOT EXISTS `kesmod`");
351 len += formatex(query[len], charsmax(query)-len, "(`Nev` varchar(32) NOT NULL,");
352 len += formatex(query[len], charsmax(query)-len, "`Lvl` int(11) NOT NULL, `Xp` int(11) NOT NULL, `Pont` int(11) NOT NULL, `Oles` int(11) NOT NULL,");
353 len += formatex(query[len], charsmax(query)-len, "`kes1` int(11) NOT NULL,`kes2` int(11) NOT NULL, `kes3` int(11) NOT NULL, `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)");
354
355 SQL_ThreadQuery(g_SqlTuple, "createTableThread", query);
356}
357public Load_Sql(id) {
358 new query[2048];
359 new Data[1], Nev[32]; get_user_name(id, Nev, 31);
360 Data[0] = id;
361
362 formatex(query, charsmax(query), "SELECT * FROM `kesmod` WHERE Nev = ^"%s^";", Nev);
363 SQL_ThreadQuery(g_SqlTuple, "QuerySelectData", query, Data, 1);
364}
365public QuerySelectData(FailState, Handle:query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
366 if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
367 log_amx("%s", Error);
368 return;
369 }
370 else {
371 new id = Data[0];
372
373 if(SQL_NumRows(query) > 0) {
374 g_IKills[Szint][id] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "Lvl"));
375 g_IKills[Xp][id] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "Xp"));
376 g_IKills[Pont][id] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "Pont"));
377 g_IKills[Oles][id] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "Oles"));
378 g_IKes[Szint][id] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "kes1"));
379 g_IKes[Pont][id] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "kes2"));
380 g_IKes[Oles][id] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "kes3"));
381 }
382 else Save_SQL(id);
383 }
384}
385public Save_SQL(id) {
386 new query[2048], len;
387 new Nev[32]; get_user_name(id, Nev, 31);
388
389 len += formatex(query[len], charsmax(query), "INSERT INTO `kesmod` (`Nev`, ");
390 len += formatex(query[len], charsmax(query)-len, "`Szint`, `Xp`, `Pont`, `Oles`,");
391 len += formatex(query[len], charsmax(query)-len, "`kes1`, `kes2`, `kes3`) VALUES (^"%s^", ", Nev);
392 len += formatex(query[len], charsmax(query)-len, "^"0^",^"0^",^"0^",^"0^",");
393 len += formatex(query[len], charsmax(query)-len, "^"0^",^"0^",^"0^");");
394
395 SQL_ThreadQuery(g_SqlTuple, "QuerySetData", query);
396}
397public Update_SQL(id) {
398 new query[2048], len;
399 new Nev[32]; get_user_name(id, Nev, 31);
400
401 len += formatex(query[len], charsmax(query), "UPDATE `kesmod` SET Szint = ^"%i^", ", g_IKills[Szint][id]);
402 len += formatex(query[len], charsmax(query)-len, "Xp = ^"%i^", Pont = ^"%i^", Oles = ^"%i^",", g_IKills[Xp][id], g_IKills[Pont][id], g_IKills[Oles][id]);
403 len += formatex(query[len], charsmax(query)-len, "kes1 = ^"%i^", kes2 = ^"%i^", kes3 = ^"%i^" WHERE Nev = ^"%s^";", g_IKes[Szint][id], g_IKes[Pont][id], g_IKes[Oles][id]);
404
405 SQL_ThreadQuery(g_SqlTuple, "QuerySetData", query);
406}
407public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
408 if(FailState == TQUERY_CONNECT_FAILED)
409 set_fail_state("[HIBA*] NEM TUDTAM CSATLAKOZNI AZ ADATBAZISHOZ!");
410 else if(FailState == TQUERY_QUERY_FAILED)
411 set_fail_state("Query Error");
412 if(Errcode)
413 log_amx("[HIBA*] HIBAT DOBTAM: %s",Error);
414}
415public QuerySetData(FailState, Handle:query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
416 if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
417 log_amx("%s", Error);
418 return;
419 }
420}
421public plugin_end() {
422 SQL_FreeHandle(g_SqlTuple);
423}