· 9 years ago · Jan 07, 2017, 06:12 PM
1#include <amxmodx>
2#include <amxmisc>
3#include <cstrike>
4#include <colorchat>
5#include <fun>
6#include <engine>
7#include <fakemeta>
8#include <hamsandwich>
9#include <dhudmessage>
10#include <sqlx>
11
12#define MAX_BUTTONS 100
13#define m_flWait 44
14#define TASK_TERRORIST 63463
15#define TASK_RESTART 63463
16#define OFFSET_PRIMARYWEAPON 116
17#define MAX_PLAYERS 32
18#define MAX_DISTANCE 100
19#define TASKID 3349
20#define DEF_TRAIL_LIFE 30
21#define TICK 0.1
22#define MAX_COLORS 200
23#define MAX_TEXT_LENGTH 200
24#define MAX_NAME_LENGTH 40
25#define NUM_SPRITES 12
26
27new szHost[] = "Hostname"
28new szUser[] = "Username"
29new szPass[] = "Password"
30new szDb[] = "Database"
31
32new Handle:g_SqlTuple
33new g_Error[512]
34
35new kj[39], reg_kj[40][40]
36new pw[39], reg_pw[40][40]
37
38new kjl[39], login_kj[40][40]
39new pwl[39], login_pw[40][40]
40new ipl[40], login_ip[40][40]
41
42new bool:reg_kj_b[33], bool:reg_pw_b[33]
43new bool:log_kj_b[33], bool:log_pw_b[33]
44
45new bool:Sisselogitud[33]
46new bool:Registeerimisel[33]
47new bool:g_iBlock[33] = true
48new g_iBC[33]
49
50new Terrorist, LastChoosenPlayer, List, Freerun
51new InList[33], Elud[33], Respawninud[33], SemiClip[33], Skin[33], Relv[33], Relv2[33], RememberMe[33], bool:AttackedWall[33]
52new g_iSMSPunktid[33], g_iID[33], g_iKordi[33], g_iLogitud[33], g_iSMSLevelid[33], bool:ThirdPerson[33], FreerunCount
53
54new const Prefix[] = "^4[Pastlate DR]^1"
55
56new gEnt[MAX_BUTTONS]
57new gUsed[MAX_BUTTONS]
58new giPointer = 0
59new gOnStart[MAX_BUTTONS]
60new Float:gDefaultDelay[MAX_BUTTONS]
61new Float:gDelay[MAX_BUTTONS]
62
63new gl_trail_life
64new gl_trail_size[MAX_PLAYERS]
65new gl_trail_brightness[MAX_PLAYERS]
66new gl_trail_type[MAX_PLAYERS]
67
68new gl_sprite_name[NUM_SPRITES][] = {
69 "sprites/laserbeam.spr",
70 "sprites/blueflare1.spr",
71 "sprites/dot.spr",
72 "sprites/flare5.spr",
73 "sprites/flare6.spr",
74 "sprites/plasma.spr",
75 "sprites/smoke.spr",
76 "sprites/xbeam5.spr",
77 "sprites/xenobeam.spr",
78 "sprites/xssmke1.spr",
79 "sprites/zbeam2.spr",
80 "sprites/zbeam3.spr"
81}
82
83new gl_sprite[NUM_SPRITES]
84new gl_def_sprite_size[NUM_SPRITES] = {
85 5, 12, 4, 16, 16, 6, 9, 4, 15, 14, 15, 20
86}
87
88new gl_def_sprite_brightness[NUM_SPRITES] = {
89 160, 255, 200, 255, 255, 230, 150, 150, 240, 220, 200, 200
90}
91
92new TrailStyle[33]
93
94new gl_player_position[MAX_PLAYERS][3]
95new gl_timer_count[MAX_PLAYERS]
96new const gl_timer_limit = 30
97
98new gl_player_colors[MAX_PLAYERS][3]
99
100new const pl_cm_class[] = "PlayerCamera"
101
102new WeaponNames[][] = {
103 "Puudub", "USP", "Glock", "Five Seven", "P228", "Double Elites", "Deagle", "TMP", "Mac10",
104 "UMP45", "P90", "MP5", "M3", "XM1014", "Scout", "AWP", "G3SG1", "SG550", "Famas",
105 "AUG", "SG552", "Galil", "M249", "M4A1", "AK47"
106}
107
108new const iWeapons[25][] = {
109 "", "weapon_usp", "weapon_glock18", "weapon_fiveseven", "weapon_p228", "weapon_elite",
110 "weapon_deagle", "weapon_tmp", "weapon_mac10", "weapon_ump45", "weapon_p90", "weapon_mp5navy",
111 "weapon_m3", "weapon_xm1014", "weapon_scout", "weapon_awp", "weapon_g3sg1", "weapon_sg550",
112 "weapon_famas", "weapon_aug", "weapon_sg552", "weapon_galil", "weapon_m249", "weapon_m4a1", "weapon_ak47"
113}
114
115new SkinNames[][] = {
116 "Puudub", "Troll Man", "Hitman", "Santa Claus", "Joker", "Lady"
117}
118
119new TrailNames[][] = {
120 "Puudub", "Laserbeam", "Blueflare", "Dot", "Flare 5", "Flare 6", "Plasma", "Smoke", "X Beam", "Xeno Beam",
121 "XS Smoke", "Z Beam 2", "Z Beam 3"
122}
123
124public plugin_cfg() {
125 setButtons()
126}
127
128public plugin_precache() {
129 precache_model("models/player/pastlad_Troll/pastlad_Troll.mdl")
130 precache_model("models/player/pastlad_Hitman/pastlad_Hitman.mdl")
131 precache_model("models/player/pastlad_Santa/pastlad_Santa.mdl")
132 precache_model("models/player/pastlad_Joker/pastlad_Joker.mdl")
133 precache_model("models/player/pastlad_Lady/pastlad_Lady.mdl")
134
135 precache_sound("events/tutor_msg.wav")
136 precache_sound("buttons/blip2.wav")
137
138 for (new i=0; i < NUM_SPRITES; i++) {
139 gl_sprite[i] = precache_model(gl_sprite_name[i])
140 }
141}
142
143public plugin_init() {
144 register_plugin("Deathrun Mod", "2.5", "Skylan")
145 init2()
146
147 register_clcmd("kasutajanimi", "RegMenu_KJ")
148 register_clcmd("parool", "RegMenu_PW")
149 register_clcmd("log_kasutajanimi", "LogMenu_KJ")
150 register_clcmd("log_parool", "LogMenu_PW")
151 register_clcmd("jointeam", "Block")
152 register_clcmd("joinclass", "Block")
153
154 register_clcmd("chooseteam", "chooseteam")
155
156 register_clcmd("say /reeglid", "Cmd_Rules")
157 register_clcmd("say_team /reeglid", "Cmd_Rules")
158
159 register_clcmd("say /sms", "Cmd_SMS")
160 register_clcmd("say_team /sms", "Cmd_SMS")
161
162 register_clcmd("say /vipmenu", "Cmd_Vipmenu")
163 register_clcmd("say_team /vipmenu", "Cmd_Vipmenu")
164
165 register_clcmd("say /pood", "Cmd_Shop")
166 register_clcmd("say_team /pood", "Cmd_Shop")
167
168 register_clcmd("say /revive", "Cmd_Respawn")
169 register_clcmd("say /respawn", "Cmd_Respawn")
170 register_clcmd("say_team /revive", "Cmd_Respawn")
171 register_clcmd("say_team /respawn", "Cmd_Respawn")
172
173 register_clcmd("say /fr", "Cmd_Freerun")
174 register_clcmd("say /fr", "Cmd_Freerun")
175 register_clcmd("say /free", "Cmd_Freerun")
176 register_clcmd("say /freerun", "Cmd_Freerun")
177 register_clcmd("say_team /free", "Cmd_Freerun")
178 register_clcmd("say_team /freerun", "Cmd_Freerun")
179
180 register_logevent("LogEvent_RoundStart", 2, "1=Round_Start")
181 register_logevent("LogEvent_RoundEnd", 2, "1=Round_End")
182
183 register_event("DeathMsg", "Event_Elud", "a")
184 register_event("SendAudio", "TerroWin", "a", "2&%!MRAD_terwin")
185
186 register_forward(FM_ClientKill, "Forward_ClientKill")
187 register_forward(FM_AddToFullPack, "Forward_FullPack", 1)
188 register_forward(FM_StartFrame, "Forward_StartFrame", 0)
189 register_forward(FM_Touch, "Forward_Touch")
190
191 register_message(get_user_msgid("StatusIcon"), "Msg_StatusIcon")
192
193 register_think(pl_cm_class,"Think_PlayerCamera")
194
195 RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1)
196 RegisterHam(Ham_Spawn, "weaponbox", "Ham_SpawnWeaponBox", 1)
197 RegisterHam(Ham_TakeDamage, "player", "Ham_TakeDamage_Pre", 0)
198 RegisterHam(Ham_TraceAttack, "func_button", "Ham_ButtonAttack")
199 RegisterHam(Ham_TraceAttack, "func_wall", "Ham_WallAttack")
200
201 if(engfunc(EngFunc_FindEntityByString, -1, "classname", "func_button")) {
202 RegisterHam(Ham_Use, "func_button", "Ham_ButtonUsed")
203 }
204
205 if(engfunc(EngFunc_FindEntityByString, -1, "classname", "func_rot_button")) {
206 RegisterHam(Ham_Use, "func_rot_button", "Ham_ButtonUsed")
207 }
208
209 if(engfunc(EngFunc_FindEntityByString, -1, "classname", "button_target")) {
210 RegisterHam(Ham_Use, "button_target", "Ham_ButtonUsed")
211 }
212
213 gl_trail_life = DEF_TRAIL_LIFE
214
215 fillButtons("func_button")
216 fillButtons("func_rot_button")
217 fillButtons("button_target")
218
219 set_task(1.0, "MySQL")
220 set_task(1.0, "StartHud", .flags="b")
221}
222
223public chooseteam(id) {
224 Cmd_ServerMenu(id)
225 return PLUGIN_HANDLED
226}
227
228public TerroCallback(id, menu, item) {
229 return cs_get_user_team(id) != CS_TEAM_T ? ITEM_ENABLED : ITEM_DISABLED
230}
231
232public CTCallback(id, menu, item) {
233 return cs_get_user_team(id) == CS_TEAM_CT ? ITEM_ENABLED : ITEM_DISABLED
234}
235
236public Cmd_ServerMenu(id) {
237 if(!is_user_connected(id) || !Sisselogitud[id]) {
238 return PLUGIN_HANDLED
239 }
240
241 new Text[256]
242 new tcb = menu_makecallback("TerroCallback")
243 new ctcb = menu_makecallback("CTCallback")
244
245 new menu = menu_create("\yServeri Menüü \w| \rPastlate DR", "ServerMenu_Handler")
246
247 menu_additem(menu, "Reeglid", "1", 0)
248 menu_additem(menu, "Teenused", "2", 0)
249 menu_addblank(menu, 0)
250 menu_additem(menu, "Vipmenüü", "3", 0)
251 menu_additem(menu, "Pood", "4", 0)
252 menu_additem(menu, "Anneta", "5", 0)
253 menu_additem(menu, "Respawn", "6", 0, ctcb)
254 menu_addblank(menu, 0)
255
256 switch(cs_get_user_team(id)) {
257 case CS_TEAM_CT: {
258 if(InList[id] > 0) {
259 formatex(Text, charsmax(Text), "Terroristiks \y[\r%i \w/ \r%i\y]", InList[id], List)
260 }
261 else {
262 formatex(Text, charsmax(Text), "Terroristiks \y[\r%i\y]", List)
263 }
264
265 menu_additem(menu, Text, "7", 0)
266 menu_additem(menu, "Spectaatoriks", "8", 0)
267 }
268
269 case CS_TEAM_T: {
270 if(InList[id] > 0) {
271 formatex(Text, charsmax(Text), "Terroristiks \y[\r%i \w/ \r%i\y]", InList[id], List)
272 }
273 else {
274 formatex(Text, charsmax(Text), "Terroristiks \y[\r%i\y]", List)
275 }
276
277 menu_additem(menu, Text, "7", 0, tcb)
278 menu_additem(menu, "Spectaatoriks", "8", 0, tcb)
279 }
280
281 case CS_TEAM_SPECTATOR: {
282 if(InList[id] > 0) {
283 formatex(Text, charsmax(Text), "Terroristiks \y[\r%i \w/ \r%i\y]", InList[id], List)
284 }
285 else {
286 formatex(Text, charsmax(Text), "Terroristiks \y[\r%i\y]", List)
287 }
288
289 menu_additem(menu, Text, "7", 0)
290 menu_additem(menu, "Counter - Terroristiks", "8", 0)
291 }
292 }
293
294 menu_additem(menu, "Logi välja", "9", 0)
295 menu_addblank(menu, 0)
296 menu_additem(menu, "Välju", "10", 0)
297
298 menu_setprop(menu, MPROP_PERPAGE, 0)
299 menu_display(id, menu, 0)
300 return PLUGIN_HANDLED
301}
302
303public ServerMenu_Handler(id, menu, item) {
304 if(!is_user_connected(id) || !Sisselogitud[id]) {
305 menu_destroy(menu)
306 return PLUGIN_HANDLED
307 }
308
309 new iPlayers[32], iNum, iPlayer
310 get_players(iPlayers, iNum, "c")
311
312 switch(item) {
313 case 0: Cmd_Rules(id)
314 case 1: Cmd_SMS(id)
315 case 2: Cmd_Vipmenu(id)
316 case 3: Cmd_Shop(id)
317 case 4: Cmd_Donate(id)
318 case 5: Cmd_Respawn(id)
319 case 6: {
320 if(InList[id] > 0) {
321 for(new i = 0; i < iNum; i++) {
322 iPlayer = iPlayers[i]
323
324 if(InList[id] < InList[iPlayer]) {
325 InList[iPlayer]--
326 }
327 }
328
329 List--
330 InList[id] = 0
331 client_print(id, print_center, "Sa lahkusid Terroristi ootejärjekorrast.")
332 client_cmd(id, "spk sound/events/tutor_msg")
333 }
334 else {
335 List++
336 InList[id] = List
337 client_print(id, print_center, "Sa liitusid Terroristi ootejärjekorraga.")
338 client_cmd(id, "spk sound/events/tutor_msg")
339 }
340 }
341
342 case 7: {
343 switch(cs_get_user_team(id)) {
344 case CS_TEAM_CT: {
345 cs_set_user_team(id, CS_TEAM_SPECTATOR)
346 user_silentkill(id)
347 }
348
349 case CS_TEAM_SPECTATOR: {
350 cs_set_user_team(id, CS_TEAM_CT)
351 }
352 }
353 }
354
355 case 8: {
356 RememberMe[id] = 0
357 Save_MySql(id)
358
359 kj[id] = 0
360 pw[id] = 0
361 kjl[id] = 0
362 pwl[id] = 0
363 g_iKordi[id] = 0
364 g_iLogitud[id] = 0
365 Relv[id] = 0
366 Skin[id] = 0
367 TrailStyle[id] = 0
368
369 reg_kj_b[id] = false
370 reg_pw_b[id] = false
371 log_pw_b[id] = false
372 log_kj_b[id] = false
373 Sisselogitud[id] = false
374 Registeerimisel[id] = false
375
376 gl_trail_type[id] = gl_sprite[0]
377 gl_trail_size[id] = gl_def_sprite_size[0]
378 gl_trail_brightness[id] = gl_def_sprite_brightness[0]
379
380 user_silentkill(id)
381 cs_set_user_team(id, CS_TEAM_SPECTATOR)
382
383 set_user_info(id, "_vgui_menus", "0")
384 set_task(1.0, "RegSystem", id)
385 }
386
387 case 9: {
388 menu_destroy(menu)
389 return PLUGIN_HANDLED
390 }
391 }
392 return PLUGIN_HANDLED
393}
394
395public Cmd_Rules(id) {
396 if(!is_user_connected(id) || !Sisselogitud[id]) {
397 return PLUGIN_HANDLED
398 }
399
400 show_motd(id, "http://pastlate.eu/rules/deathrun/design2_blue.php")
401 return PLUGIN_HANDLED
402}
403
404public Cmd_SMS(id) {
405 if(!is_user_connected(id) || !Sisselogitud[id]) {
406 return PLUGIN_HANDLED
407 }
408
409 new menu = menu_create("\ySMS Teenused \w| \rPastlate DR", "SMS_Handler")
410
411 menu_additem(menu, "VIP & Admin & Immunity", "1", 0)
412 menu_additem(menu, "Elud & Relvalevelid", "2", 0)
413
414 menu_setprop(menu, MPROP_EXITNAME, "Välju", 0)
415 menu_display(id, menu, 0)
416 return PLUGIN_HANDLED
417}
418
419public SMS_Handler(id, menu, item) {
420 if(!is_user_connected(id) || !Sisselogitud[id]) {
421 return PLUGIN_HANDLED
422 }
423
424 switch(item) {
425 case 0: show_motd(id, "http://pastlate.eu/teenused/deathrun/design2_blue.php")
426 case 1: show_motd(id, "http://pastlate.eu/teenused/deathrun/elud.php")
427 }
428 return PLUGIN_HANDLED
429}
430
431public Cmd_Vipmenu(id) {
432 if(!is_user_connected(id) || !Sisselogitud[id]) {
433 return PLUGIN_HANDLED
434 }
435
436 new menu = menu_create("\yVipmenüü \w| \rPastlate DR", "Vipmenu_Handler")
437
438 menu_additem(menu, "Relvad", "1", 0)
439 menu_additem(menu, "Skinid", "2", 0)
440 menu_additem(menu, "Trailid", "3", 0)
441
442 menu_setprop(menu, MPROP_EXITNAME, "Välju", 0)
443 menu_display(id, menu, 0)
444 return PLUGIN_HANDLED
445}
446
447public Vipmenu_Handler(id, menu, item) {
448 if(item == MENU_EXIT || !is_user_connected(id) || !Sisselogitud[id]) {
449 menu_destroy(menu)
450 return PLUGIN_HANDLED
451 }
452
453 switch(item) {
454 case 0: Cmd_Relvad(id)
455 case 1: Cmd_Skinnid(id)
456 case 2: Cmd_Trailid(id)
457 }
458 return PLUGIN_HANDLED
459}
460
461public Cmd_Relvad(id) {
462 if(!is_user_connected(id) || !Sisselogitud[id]) {
463 return PLUGIN_HANDLED
464 }
465
466 new menu = menu_create("\yVali Relv \w| \rPastlate DR \w", "Relvad_Handler")
467
468 for(new i = 1; i < sizeof(WeaponNames); i++) {
469 menu_additem(menu, WeaponNames[i])
470 }
471
472 menu_setprop(menu, MPROP_NEXTNAME, "Järgmine")
473 menu_setprop(menu, MPROP_BACKNAME, "Eelmine")
474 menu_setprop(menu, MPROP_EXITNAME, "Välju")
475 menu_display(id, menu, 0)
476 return PLUGIN_HANDLED
477}
478
479public Relvad_Handler(id, menu, item) {
480 if(item == MENU_EXIT || !is_user_connected(id) || !Sisselogitud[id]) {
481 menu_destroy(menu)
482 Cmd_Vipmenu(id)
483 return PLUGIN_HANDLED
484 }
485
486 if(!(get_user_flags(id) & ADMIN_LEVEL_H)) {
487 client_print(id, print_center, "Sa pead olema VIP, et võtta relvi.")
488 client_cmd(id, "spk sound/buttons/blip2")
489 Cmd_Relvad(id)
490 return PLUGIN_HANDLED
491 }
492
493 if(Relv2[id] < (item + 1)) {
494 client_print(id, print_center, "Sul pole piisavalt suur relvalevel selle jaoks.")
495 client_cmd(id, "spk sound/buttons/blip2")
496 return PLUGIN_HANDLED
497 }
498
499 Relv[id] = item + 1
500 Weapons(id)
501 client_print(id, print_center, "Sa võtsid endale uue relva.")
502 client_cmd(id, "spk sound/events/tutor_msg")
503 return PLUGIN_HANDLED
504}
505
506public Cmd_Skinnid(id) {
507 if(!is_user_connected(id) || !Sisselogitud[id]) {
508 return PLUGIN_HANDLED
509 }
510
511 new menu = menu_create("\yVali Skin \w| \rPastlate DR", "Skinnid_Handler")
512
513 for(new i = 1; i < sizeof(SkinNames); i++) {
514 menu_additem(menu, SkinNames[i])
515 }
516
517 menu_setprop(menu, MPROP_EXITNAME, "Välju", 0)
518 menu_display(id, menu, 0)
519 return PLUGIN_HANDLED
520}
521
522public Skinnid_Handler(id, menu, item) {
523 if(item == MENU_EXIT || !is_user_connected(id) || !Sisselogitud[id]) {
524 menu_destroy(menu)
525 return PLUGIN_HANDLED
526 }
527
528 if(!(get_user_flags(id) & ADMIN_LEVEL_H)) {
529 client_print(id, print_center, "Sa pead olema VIP, et valida endale skini.")
530 client_cmd(id, "spk sound/buttons/blip2")
531 Cmd_Skinnid(id)
532 return PLUGIN_HANDLED
533 }
534
535 if((item + 1) == Skin[id]) {
536 Skin[id] = 0
537 cs_reset_user_model(id)
538 client_print(id, print_center, "Sa eemaldasid endalt skini.")
539 client_cmd(id, "spk sound/events/tutor_msg")
540 return PLUGIN_HANDLED
541 }
542
543 Skin[id] = item + 1
544 Skins(id)
545 client_print(id, print_center, "Sa võtsid endale uue skini.")
546 client_cmd(id, "spk sound/events/tutor_msg")
547 return PLUGIN_HANDLED
548}
549
550public Cmd_Trailid(id) {
551 if(!is_user_connected(id) || !Sisselogitud[id]) {
552 return PLUGIN_HANDLED
553 }
554
555 new menu = menu_create("\yTrailid \w| \rPastlate DR", "Trailid_Handler")
556
557 for(new i = 1; i < sizeof(TrailNames); i++) {
558 menu_additem(menu, TrailNames[i])
559 }
560
561 menu_setprop(menu, MPROP_NEXTNAME, "Järgmine")
562 menu_setprop(menu, MPROP_BACKNAME, "Eelmine")
563 menu_setprop(menu, MPROP_EXITNAME, "Välju")
564 menu_display(id, menu, 0)
565 return PLUGIN_HANDLED
566}
567
568public Trailid_Handler(id, menu, item) {
569 if(item == MENU_EXIT || !is_user_connected(id) || !Sisselogitud[id]) {
570 menu_destroy(menu)
571 return PLUGIN_HANDLED
572 }
573
574 if(!(get_user_flags(id) & ADMIN_LEVEL_H)) {
575 client_print(id, print_center, "Sa pead olema VIP, et valida endale traili.")
576 client_cmd(id, "spk sound/buttons/blip2")
577 Cmd_Skinnid(id)
578 return PLUGIN_HANDLED
579 }
580
581 if((item + 1) == TrailStyle[id]) {
582 TrailStyle[id] = 0
583 kill_trail_msg(id)
584 client_print(id, print_center, "Sa eemaldasid endalt traili.")
585 client_cmd(id, "spk sound/events/tutor_msg")
586 return PLUGIN_HANDLED
587 }
588
589 TrailStyle[id] = item + 1
590 ColorChoose(id)
591 return PLUGIN_HANDLED
592}
593
594public ColorChoose(id) {
595 if(!is_user_connected(id) || !Sisselogitud[id]) {
596 return PLUGIN_HANDLED
597 }
598
599 new Menu = menu_create("\yVali Värv \w| \rPastlate DR", "ColorChoose_Handler")
600
601 menu_additem(Menu, "Punane", "1", 0)
602 menu_additem(Menu, "Roheline", "2", 0)
603 menu_additem(Menu, "Sinine", "3", 0)
604 menu_additem(Menu, "Roosa", "4", 0)
605 menu_additem(Menu, "Neoon Roheline", "5", 0)
606 menu_additem(Menu, "Neoon Sinine", "6", 0)
607
608 menu_setprop(Menu, MPROP_EXITNAME, "Välju", 0)
609 menu_display(id, Menu, 0)
610 return PLUGIN_HANDLED
611}
612
613public ColorChoose_Handler(id, menu, item) {
614 if(item == MENU_EXIT || !is_user_connected(id) || !Sisselogitud[id]) {
615 TrailStyle[id] = 0
616 menu_destroy(menu)
617 return PLUGIN_HANDLED
618 }
619
620 kill_trail_task(id)
621
622 gl_trail_life = 30
623 gl_trail_type[id] = gl_sprite[TrailStyle[id] - 1]
624 gl_trail_size[id] = gl_def_sprite_size[TrailStyle[id]]
625 gl_trail_brightness[id] = gl_def_sprite_brightness[TrailStyle[id]]
626
627 switch(item) {
628 case 0:{
629 gl_player_colors[id][0] = 255
630 gl_player_colors[id][1] = 0
631 gl_player_colors[id][2] = 0
632 }
633
634 case 1:{
635 gl_player_colors[id][0] = 0
636 gl_player_colors[id][1] = 255
637 gl_player_colors[id][2] = 0
638 }
639
640 case 2:{
641 gl_player_colors[id][0] = 0
642 gl_player_colors[id][1] = 0
643 gl_player_colors[id][2] = 255
644 }
645
646 case 3:{
647 gl_player_colors[id][0] = 255
648 gl_player_colors[id][1] = 0
649 gl_player_colors[id][2] = 144
650 }
651
652 case 4:{
653 gl_player_colors[id][0] = 92
654 gl_player_colors[id][1] = 218
655 gl_player_colors[id][2] = 0
656 }
657
658 case 5:{
659 gl_player_colors[id][0] = 0
660 gl_player_colors[id][1] = 200
661 gl_player_colors[id][2] = 200
662 }
663 }
664
665 get_user_origin(id, gl_player_position[id])
666 set_task(TICK, "check_position", TASKID + id, "", 0, "b")
667
668 trail_msg(id)
669
670 client_print(id, print_center, "Sa võtsid endale uue traili.")
671 client_cmd(id, "spk sound/events/tutor_msg")
672 return PLUGIN_HANDLED
673}
674
675public check_position(taskid) {
676 new origin[3], id = taskid - TASKID
677
678 if(!is_user_connected(id) || !is_user_alive(id) || !get_user_team(id) || TrailStyle[id] == 0) {
679 kill_trail_msg(id)
680 return
681 }
682
683 get_user_origin(id, origin)
684
685 if(origin[0] != gl_player_position[id][0] || origin[1] != gl_player_position[id][1] || origin[2] != gl_player_position[id][2]) {
686 if(get_distance(origin, gl_player_position[id]) > MAX_DISTANCE || gl_timer_count[id] >= gl_timer_limit / 2) {
687 kill_trail_msg(id)
688 trail_msg(id)
689 }
690
691 gl_player_position[id][0] = origin[0]
692 gl_player_position[id][1] = origin[1]
693 gl_player_position[id][2] = origin[2]
694 gl_timer_count[id] = 0
695 }
696 else {
697 if(gl_timer_count[id] < gl_timer_limit) {
698 gl_timer_count[id]++
699 }
700 }
701}
702
703kill_trail_task(id) {
704 if(task_exists(TASKID + id)) {
705 remove_task(TASKID + id)
706 }
707
708 kill_trail_msg(id)
709 gl_player_colors[id][0] = gl_player_colors[id][1] = gl_player_colors[id][2] = 0
710}
711
712kill_trail_msg(id) {
713 gl_timer_count[id] = 0
714
715 message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
716 write_byte(99) // TE_KILLBEAM
717 write_short(id)
718 message_end()
719}
720
721trail_msg(id) {
722 message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
723 write_byte(22) // TE_BEAMFOLLOW
724 write_short(id)
725 write_short(gl_trail_type[id])
726 write_byte(gl_trail_life)
727 write_byte(gl_trail_size[id])
728 write_byte(gl_player_colors[id][0])
729 write_byte(gl_player_colors[id][1])
730 write_byte(gl_player_colors[id][2])
731 write_byte(gl_trail_brightness[id])
732 message_end()
733}
734
735public Cmd_Shop(id) {
736 if(!is_user_connected(id) || !Sisselogitud[id]) {
737 return PLUGIN_HANDLED
738 }
739
740 if(!is_user_alive(id)) {
741 client_print(id, print_center, "Sa pead olema elus, et kasutada poodi.")
742 client_cmd(id, "spk sound/buttons/blip2")
743 return PLUGIN_HANDLED
744 }
745
746 new Text[256]
747
748 formatex(Text, charsmax(Text), "\yPood \w| \rPastlate DR^n\ySinu Raha\w: \r%i$", cs_get_user_money(id))
749 new menu = menu_create(Text, "Shop_Handler")
750
751 menu_additem(menu, "\y[\r5500$\y] \wHE Granaat", "1", 0)
752 menu_additem(menu, "\y[\r4000$\y] \wSmoke Granaat", "2", 0)
753 menu_additem(menu, "\y[\r6000$\y] \wFlashbang", "3", 0)
754 menu_additem(menu, "\y[\r4000$\y] \wSilent Run", "4", 0)
755 menu_additem(menu, "\y[\r2500$\y] \wNightvision", "5", 0)
756
757 menu_setprop(menu, MPROP_EXITNAME, "Välju", 0)
758 menu_display(id, menu, 0)
759 return PLUGIN_HANDLED
760}
761
762public Shop_Handler(id, menu, item) {
763 if(item == MENU_EXIT || !is_user_connected(id) || !is_user_alive(id) || !Sisselogitud[id]) {
764 menu_destroy(menu)
765 return PLUGIN_HANDLED
766 }
767
768 switch(item) {
769 case 0: {
770 if(user_has_weapon(id, CSW_HEGRENADE)) {
771 client_print(id, print_center, "Sul on juba HE Granaat.")
772 client_cmd(id, "spk sound/buttons/blip2")
773 return PLUGIN_HANDLED
774 }
775 else if(cs_get_user_money(id) < 5500) {
776 client_print(id, print_center, "Sul pole selle jaoks piisavalt raha.")
777 client_cmd(id, "spk sound/buttons/blip2")
778 return PLUGIN_HANDLED
779 }
780
781 give_item(id, "weapon_hegrenade")
782 cs_set_user_money(id, cs_get_user_money(id) - 5500)
783 client_print(id, print_center, "Sa ostsid endale HE Granaadi.")
784 }
785
786 case 1: {
787 if(user_has_weapon(id, CSW_SMOKEGRENADE)) {
788 client_print(id, print_center, "Sul on juba Smoke Granaat.")
789 client_cmd(id, "spk sound/buttons/blip2")
790 return PLUGIN_HANDLED
791 }
792 else if(cs_get_user_money(id) < 4000) {
793 client_print(id, print_center, "Sul pole selle jaoks piisavalt raha.")
794 client_cmd(id, "spk sound/buttons/blip2")
795 return PLUGIN_HANDLED
796 }
797
798 give_item(id, "weapon_smokegrenade")
799 cs_set_user_money(id, cs_get_user_money(id) - 4000)
800 client_print(id, print_center, "Sa ostsid endale Smoke Granaadi.")
801 }
802
803 case 2: {
804 if(user_has_weapon(id, CSW_FLASHBANG)) {
805 client_print(id, print_center, "Sul on juba Flashbang.")
806 client_cmd(id, "spk sound/buttons/blip2")
807 return PLUGIN_HANDLED
808 }
809 else if(cs_get_user_money(id) < 6000) {
810 client_print(id, print_center, "Sul pole selle jaoks piisavalt raha.")
811 client_cmd(id, "spk sound/buttons/blip2")
812 return PLUGIN_HANDLED
813 }
814
815 give_item(id, "weapon_flashbang")
816 cs_set_user_money(id, cs_get_user_money(id) - 6000)
817 client_print(id, print_center, "Sa ostsid endale Flashbangi.")
818 }
819
820 case 3: {
821 if(get_user_footsteps(id)) {
822 client_print(id, print_center, "Sul on juba Silent Run.")
823 client_cmd(id, "spk sound/buttons/blip2")
824 return PLUGIN_HANDLED
825 }
826 else if(cs_get_user_money(id) < 4000) {
827 client_print(id, print_center, "Sul pole selle jaoks piisavalt raha.")
828 client_cmd(id, "spk sound/buttons/blip2")
829 return PLUGIN_HANDLED
830 }
831
832 set_user_footsteps(id, 1)
833 cs_set_user_money(id, cs_get_user_money(id) - 4000)
834 client_print(id, print_center, "Sa ostsid endale Silent Runi.")
835 client_cmd(id, "spk sound/events/tutor_msg")
836 }
837
838 case 4: {
839 if(cs_get_user_nvg(id)) {
840 client_print(id, print_center, "Sul on juba Nightvision.")
841 client_cmd(id, "spk sound/buttons/blip2")
842 return PLUGIN_HANDLED
843 }
844 else if(cs_get_user_money(id) < 2500) {
845 client_print(id, print_center, "Sul pole selle jaoks piisavalt raha.")
846 client_cmd(id, "spk sound/buttons/blip2")
847 return PLUGIN_HANDLED
848 }
849
850 cs_set_user_nvg(id, 1)
851 engclient_cmd(id, "nightvision")
852 cs_set_user_money(id, cs_get_user_money(id) - 2500)
853 client_print(id, print_center, "Sa ostsid endale Nightvisioni.")
854 }
855 }
856
857 client_cmd(id, "spk sound/events/tutor_msg")
858 return PLUGIN_HANDLED
859}
860
861// =======================================================================================
862// gyiove
863
864public Cmd_Donate(id) {
865 if(!is_user_connected(id) || !Sisselogitud[id]) {
866 return PLUGIN_HANDLED
867 }
868
869 new Text[256]
870 formatex(Text, charsmax(Text), "\yVali Mängija \w| \rPastlate DR^n\ySinu Elud\w: \r%i \w", Elud[id])
871
872 static m, a, num[4], n[32]
873 m = menu_start("handle_plmenu", Text)
874
875 for(a = 1; a < 33; a++) {
876 if(!is_user_connected(a) || a == id || !Sisselogitud[a]) {
877 continue
878 }
879
880 get_user_name(a, n, 31)
881 format(num, 3, "%d", a)
882 menu_additem(m, n, num)
883 }
884
885 menu_end(id, m)
886 return PLUGIN_HANDLED
887}
888
889new temp1[256]
890
891init2() {
892 register_clcmd("send_info", "znv_hook")
893 register_forward(FM_PlayerPreThink, "znv_think")
894}
895
896new znv_input[33], znv_return[33][32]
897
898stock zn_input(id, returnfunc[]) {
899 znv_input[id] = 1
900 copy(znv_return[id], 31, returnfunc)
901 client_cmd(id, "messagemode send_info")
902}
903
904public znv_hook(id) {
905 if(!is_user_connected(id)) {
906 return
907 }
908
909 read_args(temp1, 1023)
910 remove_quotes(temp1)
911
912 if(temp1[0] == 0) {
913 return
914 }
915
916 znv_input[id] = 0
917
918 if(!callfunc_begin(znv_return[id])) {
919 return
920 }
921
922 callfunc_push_int(id)
923 callfunc_push_str(temp1, false)
924 callfunc_end()
925}
926
927new Float:znv_thinktime[33]
928
929public znv_think(id) {
930 if(!is_user_connected(id)) {
931 return
932 }
933
934 if(znv_thinktime[id] > get_gametime() || !znv_input[id]) {
935 return
936 }
937
938 client_cmd(id, "messagemode send_info")
939 znv_thinktime[id] = get_gametime() + 0.5
940}
941
942new atemp_z[33]
943
944public handle_plmenu(id, m, item) {
945 if(item == MENU_EXIT || !is_user_connected(id) || !Sisselogitud[id]) {
946 menu_destroy(m)
947 return PLUGIN_HANDLED
948 }
949
950 static i
951 i = menu_get(m, item)
952 menu_destroy(m)
953 atemp_z[id] = i
954 zn_input(id, "avc_returnamount")
955 return PLUGIN_HANDLED
956}
957
958public avc_returnamount(id, a[]) {
959 Donation(id, atemp_z[id], str_to_num(a))
960}
961
962stock menu_get(m, item) {
963 static i[7], ac, n[2], c
964 menu_item_getinfo(m, item, ac, i, 5, n, 1, c)
965 return str_to_num(i)
966}
967
968stock menu_start(handle[], title[], any:...) {
969 vformat(temp1, 1024, title, 3)
970 return menu_create(temp1, handle)
971}
972
973stock menu_end( id, m, const t_exit = 1 ) {
974 if(t_exit) {
975 menu_setprop(m, MPROP_EXIT, MEXIT_ALL)
976 }
977 else {
978 menu_setprop(m, MPROP_EXIT, MEXIT_NEVER)
979 }
980
981 menu_setprop(m, MPROP_BACKNAME, "Eelmine", 0)
982 menu_setprop(m, MPROP_NEXTNAME, "Järgmine", 0)
983 menu_setprop(m, MPROP_EXITNAME, "Välju", 0)
984 menu_display(id, m, 0)
985}
986
987// =======================================================================================
988
989public Donation(id, DonationTarget, Amount) {
990 if(!is_user_connected(id) || !is_user_connected(DonationTarget) || !Sisselogitud[id] || !Sisselogitud[DonationTarget]) {
991 return PLUGIN_HANDLED
992 }
993
994 new DonatorName[32], ReciverName[32]
995 get_user_name(id, DonatorName, 31)
996 get_user_name(DonationTarget, ReciverName, 31)
997
998 if(Elud[id] < Amount || Amount <= 0) {
999 Cmd_Donate(id)
1000 client_print(id, print_center, "Sul pole nii palju elusid.")
1001 client_cmd(id, "spk sound/buttons/blip2")
1002 return PLUGIN_HANDLED
1003 }
1004
1005 Elud[id] -= Amount
1006 Elud[DonationTarget] += Amount
1007
1008 ColorChat(0, NORMAL, "%s Mängija ^3%s^1 annetas ^3%i^1 elu mängijale ^3%s^1!", Prefix, DonatorName, Amount, ReciverName)
1009 client_cmd(id, "spk sound/events/tutor_msg")
1010 client_cmd(DonationTarget, "spk sound/events/tutor_msg")
1011 Log("[Annetus] Kasutaja %s annetas kasutajale %s %i elu. Pärast annetamist elude jaotus: Kasutaja %s elud: %i | Kasutaja %s elud: %i", login_kj[id], login_kj[DonationTarget], Amount, login_kj[id], Elud[id], login_kj[DonationTarget], Elud[DonationTarget])
1012 return PLUGIN_HANDLED
1013}
1014
1015public Cmd_Respawn(id) {
1016 if(!is_user_connected(id) || !Sisselogitud[id]) {
1017 return PLUGIN_HANDLED
1018 }
1019
1020 if(is_user_alive(id)) {
1021 client_print(id, print_center, "Sa pead olema surnud, et ennast respawnida.")
1022 client_cmd(id, "spk sound/buttons/blip2")
1023 return PLUGIN_HANDLED
1024 }
1025 else if(cs_get_user_team(id) != CS_TEAM_CT) {
1026 client_print(id, print_center, "Ainult CT'd saavad ennast respawnida.")
1027 client_cmd(id, "spk sound/buttons/blip2")
1028 return PLUGIN_HANDLED
1029 }
1030 else
1031 if(Respawninud[id] > 1) {
1032 client_print(id, print_center, "Sa saad ennast ainult 2 korda ühe roundi jooksul respawnida.")
1033 client_cmd(id, "spk sound/buttons/blip2")
1034 return PLUGIN_HANDLED
1035 }
1036 else
1037 if(GetCounterTerrorists() < 2) {
1038 client_print(id, print_center, "Vähemalt 2 CT'd peab olema elus, et ennast respawnida.")
1039 client_cmd(id, "spk sound/buttons/blip2")
1040 return PLUGIN_HANDLED
1041 }
1042
1043 new menu = menu_create("\ySoovid ennast respawnida? \w| \rPastlate DR", "Respawn_Handler")
1044
1045 switch(Respawninud[id]) {
1046 case 0: {
1047 menu_additem(menu, "Jah \y[\r1 elu\y]", "1", 0)
1048 }
1049
1050 case 1: {
1051 menu_additem(menu, "Jah \y[\r3 elu\y]", "1", 0)
1052 }
1053 }
1054
1055 menu_additem(menu, "Ei", "2", 0)
1056
1057 menu_setprop(menu, MPROP_PERPAGE, 0)
1058 menu_display(id, menu, 0)
1059 return PLUGIN_HANDLED
1060}
1061
1062public Respawn_Handler(id, menu, item) {
1063 if(!is_user_connected(id) || is_user_alive(id) || cs_get_user_team(id) != CS_TEAM_CT || !Sisselogitud[id]) {
1064 menu_destroy(menu)
1065 return PLUGIN_HANDLED
1066 }
1067
1068 new iPlayers[32], iNum
1069 get_players(iPlayers, iNum, "c")
1070
1071 new Name[32]
1072 get_user_name(id, Name, 31)
1073
1074 switch(item) {
1075 case 0: {
1076 switch(Respawninud[id]) {
1077 case 0: {
1078 if(Elud[id] < 1) {
1079 client_print(id, print_center, "Sul pole piisavalt elusi, et ennast respawnida.")
1080 client_cmd(id, "spk sound/buttons/blip2")
1081 return PLUGIN_HANDLED
1082 }
1083
1084 Elud[id] -= 1
1085 Respawninud[id]++
1086 ExecuteHamB(Ham_CS_RoundRespawn, id)
1087 ColorChat(0, NORMAL, "%s Mängija ^3%s^1 respawnis ennast!", Prefix, Name)
1088 client_cmd(id, "spk sound/events/tutor_msg")
1089 Log("[Respawn] Kasutaja %s respawnis ennast 1 elu eest. Pärast respawni kasutajal elusid: %i", login_kj[id], Elud[id])
1090 }
1091
1092 case 1: {
1093 if(Elud[id] < 3) {
1094 client_print(id, print_center, "Sul pole piisavalt elusi, et ennast respawnida.")
1095 client_cmd(id, "spk sound/buttons/blip2")
1096 return PLUGIN_HANDLED
1097 }
1098
1099 Elud[id] -= 3
1100 Respawninud[id]++
1101 ExecuteHamB(Ham_CS_RoundRespawn, id)
1102 ColorChat(0, NORMAL, "%s Mängija ^3%s^1 respawnis ennast!", Prefix, Name)
1103 client_cmd(id, "spk sound/events/tutor_msg")
1104 Log("[Respawn] Kasutaja %s respawnis ennast 3 elu eest. Pärast respawni kasutajal elusid: %i", login_kj[id], Elud[id])
1105 }
1106 }
1107 }
1108
1109 case 1: {
1110 menu_destroy(menu)
1111 return PLUGIN_HANDLED
1112 }
1113 }
1114 return PLUGIN_HANDLED
1115}
1116
1117public Cmd_Freerun(id) {
1118 if(!is_user_connected(id) || !Sisselogitud[id]) {
1119 return PLUGIN_HANDLED
1120 }
1121
1122 if(cs_get_user_team(id) != CS_TEAM_T) {
1123 client_print(id, print_center, "Sa pead olema Terrorist, et teha Freeruni.")
1124 client_cmd(id, "spk sound/buttons/blip2")
1125 return PLUGIN_HANDLED
1126 }
1127 else if(!is_user_alive(id)) {
1128 client_print(id, print_center, "Sa pead olema elus, et teha Freeruni.")
1129 client_cmd(id, "spk sound/buttons/blip2")
1130 return PLUGIN_HANDLED
1131 }
1132 else if(Freerun == 2) {
1133 client_print(id, print_center, "Sa ei saa enam Freeruni teha.")
1134 client_cmd(id, "spk sound/buttons/blip2")
1135 return PLUGIN_HANDLED
1136 }
1137 else if(Freerun == 1) {
1138 client_print(id, print_center, "Freerun on juba käimas.")
1139 client_cmd(id, "spk sound/buttons/blip2")
1140 return PLUGIN_HANDLED
1141 }
1142 else if(FreerunCount < 3) {
1143 client_print(id, print_center, "Freeruni saab teha iga 3 roundi tagant.")
1144 client_cmd(id, "spk sound/buttons/blip2")
1145 return PLUGIN_HANDLED
1146 }
1147
1148 new menu = menu_create("\ySoovid teha Freeruni? \w| \rPastlate DR", "Freerun_Handler")
1149
1150 menu_additem(menu, "Jah", "1", 0)
1151 menu_additem(menu, "Ei", "2", 0)
1152
1153 menu_setprop(menu, MPROP_PERPAGE, 0)
1154 menu_display(id, menu, 0)
1155 return PLUGIN_HANDLED
1156}
1157
1158public Freerun_Handler(id, menu, item) {
1159 if(!is_user_connected(id) || !Sisselogitud[id]) {
1160 return PLUGIN_HANDLED
1161 }
1162
1163 if(cs_get_user_team(id) != CS_TEAM_T) {
1164 client_print(id, print_center, "Sa pead olema Terrorist, et teha Freeruni.")
1165 client_cmd(id, "spk sound/buttons/blip2")
1166 return PLUGIN_HANDLED
1167 }
1168 else if(!is_user_alive(id)) {
1169 client_print(id, print_center, "Sa pead olema elus, et teha Freeruni.")
1170 client_cmd(id, "spk sound/buttons/blip2")
1171 return PLUGIN_HANDLED
1172 }
1173 else if(Freerun == 2) {
1174 client_print(id, print_center, "Sa ei saa enam Freeruni teha.")
1175 client_cmd(id, "spk sound/buttons/blip2")
1176 return PLUGIN_HANDLED
1177 }
1178 else if(Freerun == 1) {
1179 client_print(id, print_center, "Freerun on juba käimas.")
1180 client_cmd(id, "spk sound/buttons/blip2")
1181 return PLUGIN_HANDLED
1182 }
1183 else if(FreerunCount < 3) {
1184 client_print(id, print_center, "Freeruni saab teha iga 3 roundi tagant.")
1185 client_cmd(id, "spk sound/buttons/blip2")
1186 return PLUGIN_HANDLED
1187 }
1188
1189 new iPlayers[32], iNum
1190 get_players(iPlayers, iNum, "c")
1191
1192 switch(item) {
1193 case 0: {
1194 Freerun = 1
1195 FreerunCount = 0
1196 client_cmd(0, "spk sound/events/tutor_msg")
1197 }
1198
1199 case 1: {
1200 menu_destroy(menu)
1201 return PLUGIN_HANDLED
1202 }
1203 }
1204 return PLUGIN_HANDLED
1205}
1206
1207public LogEvent_RoundStart() {
1208 Freerun = 0
1209 FreerunCount++
1210
1211 new iPlayers[32], iNum
1212 get_players(iPlayers, iNum, "c")
1213
1214 for(new i = 0; i < iNum; i++) {
1215 Respawninud[iPlayers[i]] = 0
1216 set_task(10.0, "Task_Freerun", iPlayers[i])
1217 }
1218
1219 for(new i = 0; i < MAX_BUTTONS; i++) {
1220 gUsed[i] = gOnStart[i]
1221 restoreButton(gEnt[i])
1222 }
1223}
1224
1225public LogEvent_RoundEnd() {
1226 if(task_exists(TASK_TERRORIST)) {
1227 remove_task(TASK_TERRORIST)
1228 }
1229
1230 set_task(1.0, "TerroVahetus", TASK_TERRORIST)
1231}
1232
1233public Task_Freerun(id) {
1234 if(Freerun == 0) {
1235 Freerun = 2
1236 }
1237}
1238
1239public TerroVahetus() {
1240 new iPlayers[32], iNum, iPlayer, iName[32]
1241 get_players(iPlayers, iNum, "c")
1242
1243 Terrorist = ChooseRandomPlayer()
1244
1245 for(new i = 0; i < iNum; i++) {
1246 iPlayer = iPlayers[i]
1247
1248 kill_trail_msg(iPlayer)
1249
1250 if(is_user_connected(iPlayer) || Sisselogitud[iPlayer]) {
1251 if(cs_get_user_team(iPlayer) == CS_TEAM_T) {
1252 cs_set_user_team(iPlayer, CS_TEAM_CT)
1253 }
1254 }
1255 }
1256
1257 switch(List) {
1258 case 0: {
1259 if(is_user_connected(Terrorist)) {
1260 cs_set_user_team(Terrorist, CS_TEAM_T)
1261 }
1262
1263 get_user_name(Terrorist, iName, 31)
1264 ColorChat(0, NORMAL, "%s Ootejärjekorras ei ole kedagi. Terrorist valitakse suvaliselt!", Prefix)
1265 ColorChat(0, NORMAL, "%s Uus Terrorist on ^3%s^1.", Prefix, iName)
1266 client_cmd(Terrorist, "spk sound/events/tutor_msg")
1267 }
1268
1269 default: {
1270 List--
1271
1272 for(new i = 0; i < iNum; i++) {
1273 iPlayer = iPlayers[i]
1274
1275 if(is_user_connected(iPlayer) || Sisselogitud[iPlayer]) {
1276 if(InList[iPlayer] == 1) {
1277 InList[iPlayer] = 0
1278 get_user_name(iPlayer, iName, 31)
1279 cs_set_user_team(iPlayer, CS_TEAM_T)
1280
1281 ColorChat(0, NORMAL, "%s Uus Terrorist valiti ootejärjekorra alusel!", Prefix)
1282 ColorChat(0, NORMAL, "%s Uus Terrorist on ^3%s^1.", Prefix, iName)
1283 client_cmd(iPlayer, "spk sound/events/tutor_msg")
1284 }
1285 else if(InList[iPlayer] > 1) {
1286 InList[iPlayer]--
1287 }
1288 }
1289 }
1290 }
1291 }
1292 return PLUGIN_HANDLED
1293}
1294
1295public RoundRestart() {
1296 new iPlayers[32], iNum, iPlayer, iName[32]
1297 get_players(iPlayers, iNum, "c")
1298
1299 Terrorist = ChooseRandomPlayer()
1300 ColorChat(0, NORMAL, "%s Terrorist lahkus mängust!", Prefix)
1301
1302 switch(List) {
1303 case 0: {
1304 get_user_name(Terrorist, iName, 31)
1305 cs_set_user_team(Terrorist, CS_TEAM_T)
1306 ExecuteHamB(Ham_CS_RoundRespawn, Terrorist)
1307
1308 ColorChat(0, NORMAL, "%s Ootejärjekorras ei ole kedagi. Terrorist valitakse suvaliselt!", Prefix)
1309 ColorChat(0, NORMAL, "%s Uus Terrorist on ^3%s^1.", Prefix, iName)
1310 client_cmd(Terrorist, "spk sound/events/tutor_msg")
1311 }
1312
1313 default: {
1314 List--
1315
1316 for(new i = 0; i < iNum; i++) {
1317 iPlayer = iPlayers[i]
1318
1319 if(is_user_connected(iPlayer) || Sisselogitud[iPlayer]) {
1320 if(InList[iPlayer] == 1) {
1321 InList[iPlayer] = 0
1322 get_user_name(iPlayer, iName, 31)
1323 cs_set_user_team(iPlayer, CS_TEAM_T)
1324 ExecuteHamB(Ham_CS_RoundRespawn, iPlayer)
1325
1326 ColorChat(0, NORMAL, "%s Uus Terrorist valiti ootejärjekorra alusel!", Prefix)
1327 ColorChat(0, NORMAL, "%s Uus Terrorist on ^3%s^1.", Prefix, iName)
1328 client_cmd(iPlayer, "spk sound/events/tutor_msg")
1329 }
1330 else if(InList[iPlayer] > 1) {
1331 InList[iPlayer]--
1332 }
1333 }
1334 }
1335 }
1336 }
1337}
1338
1339public Event_Elud() {
1340 new Killer = read_data(1)
1341 new Victim = read_data(2)
1342
1343 if(cs_get_user_team(Victim) == CS_TEAM_CT && GetCounterTerrorists() > 1) {
1344 switch(Respawninud[Victim]) {
1345 case 0: {
1346 if(Elud[Victim] > 0) {
1347 Cmd_Respawn(Victim)
1348 }
1349 }
1350
1351 case 1: {
1352 if(Elud[Victim] > 2) {
1353 Cmd_Respawn(Victim)
1354 }
1355 }
1356 }
1357 }
1358
1359 new iPlayers[32], iNum
1360 get_players(iPlayers, iNum, "c")
1361
1362 new KillerNimi[33], VictimNimi[33]
1363
1364 get_user_name(Killer, KillerNimi, 32)
1365 get_user_name(Victim, VictimNimi, 32)
1366
1367 if(!is_user_alive(Killer) || cs_get_user_team(Killer) == cs_get_user_team(Victim) || Killer == Victim) {
1368 return PLUGIN_HANDLED
1369 }
1370
1371 if(Freerun == 1 && cs_get_user_team(Killer) == CS_TEAM_T) {
1372 set_user_health(Killer, 100)
1373 }
1374
1375 if(get_user_flags(Killer) & ADMIN_LEVEL_H) {
1376 Elud[Killer] += 2
1377 ColorChat(0, NORMAL, "%s VIP ^3%s^1 sai mängija ^3%s^1 tapmise eest^3 2^1 elu!", Prefix, KillerNimi, VictimNimi)
1378 client_cmd(Killer, "spk sound/events/tutor_msg")
1379 Log("[Kill] Kasutaja %s sai vastase tapmise eest 2 elu. Pärast tapmist kasutajal elusid: %i", login_kj[Killer], Elud[Killer])
1380 }
1381 else {
1382 Elud[Killer] += 1
1383 ColorChat(0, NORMAL, "%s Mängija ^3%s^1 sai mängija ^3%s^1 tapmise eest^3 1^1 elu!", Prefix, KillerNimi, VictimNimi)
1384 client_cmd(Killer, "spk sound/events/tutor_msg")
1385 Log("[Kill] Kasutaja %s sai vastase tapmise eest 1 elu. Pärast tapmist kasutajal elusid: %i", login_kj[Killer], Elud[Killer])
1386 }
1387 return PLUGIN_HANDLED
1388}
1389
1390public TerroWin() {
1391 new iPlayers[32], iNum, iPlayer
1392 get_players(iPlayers, iNum, "ae", "TERRORIST")
1393
1394 for(new i = 0; i < iNum; i++) {
1395 iPlayer = iPlayers[i]
1396
1397 new TerroNimi[32]
1398 get_user_name(iPlayer, TerroNimi, 31)
1399
1400 if(get_user_flags(iPlayer) & ADMIN_LEVEL_H) {
1401 Elud[iPlayer] += 2
1402 ColorChat(0, NORMAL, "%s VIP ^3%s^1 sai kõikide CT'de tapmise eest^3 2^1 elu!", Prefix, TerroNimi)
1403 client_cmd(iPlayer, "spk sound/events/tutor_msg")
1404 Log("[Round End] Kasutaja %s sai kõikide CT'de tapmise eest 2 elu. Pärast roundi lõppu kasutajal elusid: %i", login_kj[iPlayer], Elud[iPlayer])
1405 }
1406 else {
1407 Elud[iPlayer] += 1
1408 ColorChat(0, NORMAL, "%s Mängija ^3%s^1 sai kõikide CT'de tapmise eest^3 1^1 elu!", Prefix, TerroNimi)
1409 client_cmd(iPlayer, "spk sound/events/tutor_msg")
1410 Log("[Round End] Kasutaja %s sai kõikide CT'de tapmise eest 1 elu. Pärast roundi lõppu kasutajal elusid: %i", login_kj[iPlayer], Elud[iPlayer])
1411 }
1412 }
1413 return PLUGIN_HANDLED
1414}
1415
1416public Forward_ClientKill(const id) {
1417 if(!is_user_connected(id) || !is_user_alive(id) || cs_get_user_team(id) != CS_TEAM_T) {
1418 return FMRES_IGNORED
1419 }
1420
1421 client_print(id, print_console, "[Pastlate DR] Terrorist ei saa ennast tappa!")
1422 client_cmd(id, "spk sound/buttons/blip2")
1423 return FMRES_SUPERCEDE
1424}
1425
1426public Forward_FullPack(es, e, ent, host, flags, player, pSet) {
1427 if(player && SemiClip[ent] && SemiClip[host]) {
1428 set_es(es, ES_Solid, SOLID_NOT)
1429 set_es(es, ES_RenderMode, kRenderTransAlpha)
1430 set_es(es, ES_RenderAmt, 85)
1431 }
1432 return FMRES_IGNORED
1433}
1434
1435public Forward_StartFrame() {
1436 static iPlayers[32], iNum, iPlayer, iPlayer2, i, j
1437 get_players(iPlayers, iNum, "ache", "CT")
1438
1439 arrayset(SemiClip, 0, 32)
1440
1441 if(iNum <= 1) {
1442 return FMRES_IGNORED
1443 }
1444
1445 for(i = 0; i < iNum; i++) {
1446 iPlayer = iPlayers[i]
1447
1448 for(j = 0; j < iNum; j++) {
1449 iPlayer2 = iPlayers[j]
1450
1451 if(iPlayer == iPlayer2) {
1452 continue
1453 }
1454
1455 if(SemiClip[iPlayer] && SemiClip[iPlayer2]) {
1456 continue
1457 }
1458
1459 if(entity_range(iPlayer, iPlayer2) < 128) {
1460 SemiClip[iPlayer] = true
1461 SemiClip[iPlayer2] = true
1462 }
1463 }
1464 }
1465
1466 for(i = 0; i < iNum; i++) {
1467 iPlayer = iPlayers[i]
1468 set_pev(iPlayer, pev_solid, SemiClip[iPlayer] ? SOLID_NOT : SOLID_SLIDEBOX)
1469 }
1470 return FMRES_IGNORED
1471}
1472
1473public Forward_Touch(iEnt, Touched) {
1474 if(!is_user_connected(Touched) || !is_user_alive(Touched)) {
1475 return PLUGIN_HANDLED
1476 }
1477
1478 new szModel[32], iName[32]
1479 pev(iEnt, pev_model, szModel, charsmax(szModel))
1480
1481 if(equal(szModel, "models/w_flashbang.mdl")) {
1482 new Thrower = pev(iEnt, pev_owner)
1483
1484 if(is_user_connected(Thrower) && is_user_alive(Thrower)) {
1485 get_user_name(Touched, iName, 31)
1486 ColorChat(0, NORMAL, "%s Mängija ^3%s^1 suri, sest teda tabati Flashbangiga!", Prefix, iName)
1487 }
1488 }
1489 return PLUGIN_HANDLED
1490}
1491
1492public Msg_StatusIcon(msgid, msgdest, id) {
1493 static szMsg[8]
1494 get_msg_arg_string(2, szMsg, 7)
1495
1496 if(equal(szMsg, "buyzone") && get_msg_arg_int(1)) {
1497 set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1 << 0))
1498 return PLUGIN_HANDLED
1499 }
1500 return PLUGIN_CONTINUE
1501}
1502
1503public Ham_PlayerSpawn_Post(id) {
1504 if(!is_user_connected(id) || !is_user_alive(id)) {
1505 return HAM_IGNORED
1506 }
1507
1508 strip_user_weapons(id)
1509 give_item(id, "weapon_knife")
1510 set_pdata_int(id, OFFSET_PRIMARYWEAPON, 0)
1511 set_user_footsteps(id, 0)
1512
1513 if(cs_get_user_team(id) == CS_TEAM_T && FreerunCount >= 3) {
1514 set_task(1.0, "Free", id)
1515 }
1516
1517 if(get_user_flags(id) & ADMIN_LEVEL_H) {
1518 if(Relv[id] > 0) {
1519 set_task(0.1, "Weapons", id)
1520 }
1521 }
1522
1523 SMS_MySql(id)
1524 return HAM_IGNORED
1525}
1526
1527public Free(id) {
1528 if(Freerun == 0) {
1529 Cmd_Freerun(id)
1530 }
1531}
1532
1533public Ham_ButtonUsed(this, idcaller, idactivator, use_type, Float:value) {
1534 if(idcaller != idactivator) {
1535 return HAM_IGNORED
1536 }
1537
1538 if(pev(this, pev_frame) > 0.0) {
1539 return HAM_IGNORED
1540 }
1541
1542 new index = get_ent_index(this)
1543
1544 if(index == -1) {
1545 return HAM_IGNORED
1546 }
1547
1548 if(cs_get_user_team(idcaller) == CS_TEAM_T) {
1549 if(Freerun == 0) {
1550 Freerun = 2
1551 return HAM_IGNORED
1552 }
1553 else if(Freerun == 1) {
1554 client_print(idcaller, print_center, "Sa ei saa Freeruni ajal nuppe kasutada.")
1555 client_cmd(idcaller, "spk sound/buttons/blip2")
1556 return HAM_SUPERCEDE
1557 }
1558
1559 if(gUsed[index] <= 0 && gOnStart[index] != -1) {
1560 client_print(idcaller, print_center, "Sa oled seda nuppu juba kasutanud.")
1561 client_cmd(idcaller, "spk sound/buttons/blip2")
1562 return HAM_SUPERCEDE
1563 }
1564 else {
1565 if(gUsed[index] > 0) {
1566 if(--gUsed[index]) {
1567 return PLUGIN_HANDLED
1568 }
1569 else {
1570 return PLUGIN_HANDLED
1571 }
1572 }
1573 }
1574 }
1575
1576 set_task(0.1, "setDelay", this)
1577 return HAM_IGNORED
1578}
1579
1580public Ham_SpawnWeaponBox(iEntity) {
1581 set_pev(iEntity, pev_flags, FL_KILLME)
1582 dllfunc(DLLFunc_Think, iEntity)
1583 return HAM_IGNORED
1584}
1585
1586public Ham_TakeDamage_Pre(victim, inflictor, attacker, Float:damage, dmgbits) {
1587 if(!is_user_connected(attacker) || !is_user_alive(attacker) || !is_user_connected(victim) || !is_user_alive(victim) || cs_get_user_team(attacker) == cs_get_user_team(victim)) {
1588 return HAM_IGNORED
1589 }
1590
1591 if(Freerun == 1) {
1592 if(get_user_weapon(attacker) != CSW_KNIFE) {
1593 client_print(attacker, print_center, "Sa ei saa vastaseid relvaga tappa Freeruni ajal.")
1594 client_cmd(attacker, "spk sound/buttons/blip2")
1595 return HAM_SUPERCEDE
1596 }
1597 }
1598
1599 if(AttackedWall[attacker]) {
1600 return HAM_SUPERCEDE
1601 }
1602 return HAM_IGNORED
1603}
1604
1605public Ham_ButtonAttack(button, id, Float:damage, Float:direction[3], tracehandle, damagebits) {
1606 if(!is_user_connected(id) || !is_user_alive(id) || !(get_user_flags(id) & ADMIN_LEVEL_H) || cs_get_user_team(id) != CS_TEAM_T) {
1607 return HAM_IGNORED
1608 }
1609
1610 if(pev(button, pev_frame) > 0.0) {
1611 return HAM_IGNORED
1612 }
1613
1614 new index = get_ent_index(button)
1615
1616 if(index == -1) {
1617 return HAM_IGNORED
1618 }
1619
1620 if(Freerun == 0) {
1621 if(is_valid_ent(button)) {
1622 ExecuteHamB(Ham_Use, button, id, 0, 2, 1.0)
1623 entity_set_float(button, EV_FL_frame, 0.0)
1624 }
1625
1626 Freerun = 2
1627 return HAM_IGNORED
1628 }
1629 else if(Freerun == 1) {
1630 client_print(id, print_center, "Sa ei saa Freeruni ajal nuppe kasutada.")
1631 client_cmd(id, "spk sound/buttons/blip2")
1632 return HAM_SUPERCEDE
1633 }
1634
1635 if(gUsed[index] <= 0 && gOnStart[index] != -1) {
1636 client_print(id, print_center, "Sa oled seda nuppu juba kasutanud.")
1637 client_cmd(id, "spk sound/buttons/blip2")
1638 return HAM_SUPERCEDE
1639 }
1640 else {
1641 if(is_valid_ent(button)) {
1642 ExecuteHamB(Ham_Use, button, id, 0, 2, 1.0)
1643 entity_set_float(button, EV_FL_frame, 0.0)
1644 }
1645
1646 if(gUsed[index] > 0) {
1647 if(--gUsed[index]) {
1648 return HAM_IGNORED
1649 }
1650 else {
1651 return HAM_IGNORED
1652 }
1653 }
1654 }
1655
1656 set_task(0.1, "setDelay", button)
1657 return HAM_IGNORED
1658}
1659
1660public Ham_WallAttack(wall, id, Float:damage, Float:direction[3], tracehandle, damagebits) {
1661 if(!is_user_connected(id) || !is_user_alive(id)) {
1662 return HAM_IGNORED
1663 }
1664
1665 AttackedWall[id] = true
1666 set_task(0.1, "WallAttack", id)
1667 return HAM_IGNORED
1668}
1669
1670public WallAttack(id) {
1671 if(!is_user_connected(id) || !is_user_alive(id)) {
1672 return PLUGIN_HANDLED
1673 }
1674
1675 AttackedWall[id] = false
1676 return PLUGIN_HANDLED
1677}
1678
1679public setDelay(this) {
1680 new index = get_ent_index(this)
1681 set_pev(this, pev_nextthink, pev(this, pev_ltime) + gDelay[index] + 0.01)
1682}
1683
1684public Weapons(id) {
1685 strip_user_weapons(id)
1686 give_item(id, "weapon_knife")
1687 give_item(id, iWeapons[Relv[id]])
1688 set_task(0.1, "Ammo", id)
1689}
1690
1691public Ammo(id) {
1692 if(!is_user_connected(id) || !is_user_alive(id)) {
1693 return PLUGIN_HANDLED
1694 }
1695
1696 new iBullets
1697
1698 switch(get_user_weapon(id)) {
1699 case CSW_USP: iBullets = 100
1700 case CSW_GLOCK18: iBullets = 120
1701 case CSW_FIVESEVEN: iBullets = 100
1702 case CSW_P228: iBullets = 52
1703 case CSW_ELITE: iBullets = 120
1704 case CSW_DEAGLE: iBullets = 35
1705 case CSW_TMP: iBullets = 120
1706 case CSW_MAC10: iBullets = 120
1707 case CSW_AK47: iBullets = 90
1708 case CSW_M4A1: iBullets = 90
1709 case CSW_M249: iBullets = 200
1710 case CSW_FAMAS: iBullets = 90
1711 case CSW_MP5NAVY: iBullets = 120
1712 case CSW_GALI: iBullets = 90
1713 case CSW_AUG: iBullets = 90
1714 case CSW_SG552: iBullets = 90
1715 case CSW_SG550: iBullets = 90
1716 case CSW_G3SG1: iBullets = 90
1717 case CSW_SCOUT: iBullets = 90
1718 case CSW_AWP: iBullets = 30
1719 case CSW_XM1014: iBullets = 32
1720 case CSW_M3: iBullets = 32
1721 case CSW_P90: iBullets = 100
1722 case CSW_UMP45: iBullets = 100
1723 }
1724
1725 cs_set_user_bpammo(id, get_user_weapon(id), iBullets)
1726 return PLUGIN_HANDLED
1727}
1728
1729public Skins(id) {
1730 switch(Skin[id]) {
1731 case 1: cs_set_user_model(id, "pastlad_Troll")
1732 case 2: cs_set_user_model(id, "pastlad_Hitman")
1733 case 3: cs_set_user_model(id, "pastlad_Santa")
1734 case 4: cs_set_user_model(id, "pastlad_Joker")
1735 case 5: cs_set_user_model(id, "pastlad_Lady")
1736 }
1737
1738 if(!is_user_connected(id) || !is_user_alive(id)) {
1739 return PLUGIN_HANDLED
1740 }
1741
1742 ThirdPerson[id] = false
1743 Create_PlayerCamera(id)
1744 set_task(3.0, "Third_Person", id)
1745 return PLUGIN_HANDLED
1746}
1747
1748public Third_Person(id) {
1749 ThirdPerson[id] = true
1750}
1751
1752public client_PostThink(id) {
1753 if(!is_user_connected(id) || !is_user_alive(id)) {
1754 return PLUGIN_HANDLED
1755 }
1756
1757 if(cs_get_user_team(id) == CS_TEAM_T) {
1758 entity_set_int(id, EV_INT_watertype, -3)
1759 }
1760 return PLUGIN_CONTINUE
1761}
1762
1763// Jointeam / joinclass block + Login > CT
1764///////////////////////////////////////////
1765
1766public Block(id){
1767 if(g_iBlock[id]){
1768 return PLUGIN_HANDLED
1769 }
1770
1771 if(g_iBC[id] == 1){
1772 g_iBlock[id] = true
1773 }
1774
1775 g_iBC[id]++
1776 return PLUGIN_CONTINUE
1777}
1778
1779public CTks(id) {
1780 if(is_user_connected(id) || Sisselogitud[id]) {
1781 g_iBlock[id] = false
1782 g_iBC[id] = 0
1783
1784 client_cmd(id, "jointeam 2")
1785 client_cmd(id, "joinclass 1")
1786 }
1787}
1788
1789// Hud information
1790///////////////////////////////////////////
1791
1792public StartHud() {
1793 new iPlayers[32], iNum, id
1794 get_players(iPlayers, iNum, "c")
1795
1796 if(Freerun == 1) {
1797 set_dhudmessage(255, 255, 255, -1.0, 0.30, 0, 0.1, 1.0, 0.1, 0.1)
1798 show_dhudmessage(0, "Freerun [Nuga]")
1799 }
1800
1801 for(new i = 0; i < iNum; i++) {
1802 id = iPlayers[i]
1803
1804 if(!Sisselogitud[id] || !is_user_connected(id)) {
1805 return PLUGIN_HANDLED
1806 }
1807
1808 if(is_user_alive(id)) {
1809 set_dhudmessage(255, 255, 255, -1.0, 0.85, 0, 0.1, 1.0, 0.1, 0.1)
1810 show_dhudmessage(id, "%s^nRelvalevel: %i || Elusid: %i^nRelv: %s || Skin: %s || Trail: %s", login_kj[id], Relv2[id], Elud[id], WeaponNames[Relv[id]], SkinNames[Skin[id]], TrailNames[TrailStyle[id]])
1811 }
1812 else {
1813 new TargetID, Body
1814 get_user_aiming(id, TargetID, Body, 9999)
1815
1816 if(is_user_alive(TargetID)) {
1817 new iName[32]
1818 get_user_name(TargetID, iName, 31)
1819
1820 set_dhudmessage(255, 255, 255, -1.0, 0.75, 0, 0.1, 1.0, 0.1, 0.1)
1821 show_dhudmessage(id, "%s^nRelvalevel: %i || Elusid: %i || Raha: %i$^nRelv: %s || Skin: %s || Trail: %s", iName, Relv2[TargetID], Elud[TargetID], cs_get_user_money(TargetID), WeaponNames[Relv[TargetID]], SkinNames[Skin[TargetID]], TrailNames[TrailStyle[TargetID]])
1822 }
1823 }
1824 }
1825 return PLUGIN_CONTINUE
1826}
1827
1828// Client connect 'n disconnect
1829///////////////////////////////////////////
1830
1831public client_putinserver(id) {
1832 if(is_user_connected(id)) {
1833 set_user_info(id, "_vgui_menus", "0");
1834 set_task(1.0, "System", id)
1835
1836 Relv[id] = 0
1837 TrailStyle[id] = 0
1838 gl_trail_type[id] = gl_sprite[0]
1839 gl_trail_size[id] = gl_def_sprite_size[0]
1840 gl_trail_brightness[id] = gl_def_sprite_brightness[0]
1841 }
1842}
1843
1844public client_disconnect(id) {
1845 if(is_user_connected(id)) {
1846 if(cs_get_user_team(id) == CS_TEAM_T) {
1847 if(task_exists(TASK_RESTART)) {
1848 remove_task(TASK_RESTART)
1849 }
1850
1851 set_task(1.0, "RoundRestart", TASK_RESTART)
1852 }
1853
1854 if(InList[id] > 0) {
1855 new iPlayers[32], iNum, iPlayer
1856 get_players(iPlayers, iNum, "c")
1857
1858 for(new i = 0; i < iNum; i++) {
1859 iPlayer = iPlayers[i]
1860
1861 if(InList[id] < InList[iPlayer]) {
1862 InList[iPlayer]--
1863 }
1864 }
1865
1866 List--
1867 InList[id] = 0
1868 }
1869
1870 if(task_exists(TASKID + id)) {
1871 remove_task(TASKID + id)
1872 }
1873
1874 gl_player_colors[id][0] = gl_player_colors[id][1] = gl_player_colors[id][2] = 0
1875
1876 Save_MySql(id)
1877
1878 kj[id] = 0
1879 pw[id] = 0
1880 reg_kj_b[id] = false
1881 reg_pw_b[id] = false
1882 log_pw_b[id] = false
1883 log_kj_b[id] = false
1884 kjl[id] = 0
1885 pwl[id] = 0
1886 Sisselogitud[id] = false
1887 Registeerimisel[id] = false
1888 g_iKordi[id] = 0
1889 g_iLogitud[id] = 0
1890 TrailStyle[id] = 0
1891 Relv[id] = 0
1892 Skin[id] = 0
1893 }
1894 return PLUGIN_CONTINUE
1895}
1896
1897// Registeerimis & Sisse logimis s\FCsteem
1898//////////////////////////////////////////////////////////
1899
1900public System(id) {
1901 new szTemp[512]
1902 get_user_ip(id, ipl, charsmax(ipl), 1)
1903 remove_quotes(ipl)
1904
1905 login_ip[id] = ipl
1906
1907 new Data[1]
1908 Data[0] = id
1909
1910 format(szTemp, charsmax(szTemp), "SELECT * FROM amx_deathrun WHERE last_ip='%s' AND rememberme='1'", login_ip[id])
1911 SQL_ThreadQuery(g_SqlTuple, "remember_client", szTemp, Data, 1)
1912}
1913
1914public RegSystem(id) {
1915 new m = menu_create("\yRegistreerimis Süsteem \w| \rPastlate DR", "RegSystem_h")
1916
1917 menu_additem(m, "Registreeru", "1", 0)
1918 menu_additem(m, "Logi sisse", "2", 0)
1919 menu_addblank(m, 0)
1920 menu_additem(m, "Informatsioon", "3", 0)
1921 menu_additem(m, "Unustasid parooli?", "4", 0)
1922
1923 menu_setprop(m, MPROP_PERPAGE, 0)
1924 menu_display(id, m, 0)
1925}
1926
1927public RegSystem_h(id, menu, item) {
1928 if(!is_user_connected(id)) {
1929 menu_destroy(menu)
1930 return PLUGIN_HANDLED
1931 }
1932
1933 switch(item) {
1934 case 0: RegMenu_Q(id)
1935 case 1: LogMenu_Q(id)
1936 case 2: {
1937 ColorChat(id, NORMAL, "%s Registreerimis Süsteem^3 1.0^1 by ^3Pastlate DR^1.", Prefix)
1938 ColorChat(id, NORMAL, "%s Sa pead esmalt sisse logima või registreeruma, et mängida.", Prefix)
1939 RegSystem(id)
1940 }
1941
1942 case 3: {
1943 ColorChat(id, NORMAL, "%s Kui sa oled oma parooli unustanud, siis kontakteeru omanikega.", Prefix)
1944 ColorChat(id, NORMAL, "%s Foorum: ^3www.pastlate.eu^1, skype: ^3andr0-_-123^1, ^3romet.pastak^1.", Prefix)
1945 RegSystem(id)
1946 }
1947 }
1948
1949 menu_destroy(menu)
1950 return PLUGIN_HANDLED
1951}
1952
1953public RegMenu_Q(id) {
1954 static f[90]
1955
1956 formatex(f, charsmax(f),"\yRegistreerimine \w| \rPastlate DR")
1957 new m = menu_create(f, "RegMenu_Qh")
1958
1959 if(!reg_kj_b[id]) {
1960 formatex(f, charsmax(f), "Kasutajanimi: \yPole lisatud")
1961 menu_additem(m, f, "1", 0)
1962 }
1963 else {
1964 formatex(f, charsmax(f), "Kasutajanimi: \r%s", reg_kj[id])
1965 menu_additem(m, f, "1", 0)
1966 }
1967
1968 if(!reg_pw_b[id]) {
1969 formatex(f, charsmax(f), "Parool: \yPole lisatud")
1970 menu_additem(m, f, "2", 0)
1971 }
1972 else {
1973 formatex(f, charsmax(f), "Parool: \r%s", reg_pw[id])
1974 menu_additem(m, f, "2", 0)
1975 }
1976
1977 menu_additem(m, "Registreeru", "3", 0)
1978
1979 menu_setprop(m, MPROP_EXITNAME, "Tagasi", 0)
1980 menu_display(id, m, 0)
1981}
1982
1983public RegMenu_Qh(id, menu, item) {
1984 if(!is_user_connected(id)){
1985 menu_destroy(menu)
1986 return PLUGIN_HANDLED
1987 }
1988
1989 if(item == MENU_EXIT) {
1990 if(Registeerimisel[id]){
1991 Registeerimisel[id] = false
1992 }
1993
1994 RegSystem(id)
1995 menu_destroy(menu)
1996 return PLUGIN_HANDLED
1997 }
1998
1999 switch(item) {
2000 case 0: client_cmd(id, "messagemode kasutajanimi")
2001 case 1: client_cmd (id, "messagemode parool")
2002 case 2: Reg(id)
2003 }
2004 return PLUGIN_HANDLED
2005}
2006
2007public RegMenu_KJ(id) {
2008 if(!is_user_connected(id)){
2009 return PLUGIN_HANDLED
2010 }
2011
2012 read_args(kj, charsmax(kj))
2013 remove_quotes(kj)
2014
2015 new KJLength = strlen(kj)
2016
2017 if(equal(kj, "")){
2018 RegMenu_Q(id)
2019 client_print(id, print_center, "Sa ei kirjutanud kasutajanime.")
2020 client_cmd(id, "spk sound/buttons/blip2")
2021 return PLUGIN_HANDLED
2022 }
2023
2024 if(KJLength < 3){
2025 RegMenu_Q(id)
2026 client_print(id, print_center, "Kasutajanime pikkus on liiga lühike.")
2027 client_cmd(id, "spk sound/buttons/blip2")
2028 return PLUGIN_HANDLED
2029 }
2030
2031 if(KJLength > 30){
2032 RegMenu_Q(id)
2033 client_print(id, print_center, "Kasutajanime pikkus on liiga pikk.")
2034 client_cmd(id, "spk sound/buttons/blip2")
2035 return PLUGIN_HANDLED
2036 }
2037
2038 reg_kj[id] = kj
2039 reg_kj_b[id] = true
2040 RegMenu_Q(id)
2041 return PLUGIN_CONTINUE
2042}
2043
2044public RegMenu_PW(id) {
2045 if(!is_user_connected(id)){
2046 return PLUGIN_HANDLED
2047 }
2048
2049 read_args(pw, charsmax(pw))
2050 remove_quotes(pw)
2051
2052 new Length = strlen(pw)
2053
2054 if(equal(pw, "")){
2055 RegMenu_Q(id)
2056 client_print(id, print_center, "Sa ei kirjutanud parooli.")
2057 client_cmd(id, "spk sound/buttons/blip2")
2058 return PLUGIN_HANDLED
2059 }
2060
2061 if(Length < 3){
2062 RegMenu_Q(id)
2063 client_print(id, print_center, "Parooli pikkus on liiga lühike.")
2064 client_cmd(id, "spk sound/buttons/blip2")
2065 return PLUGIN_HANDLED
2066 }
2067
2068 if(Length > 30){
2069 RegMenu_Q(id)
2070 client_print(id, print_center, "Parooli pikkus on liiga pikk.")
2071 client_cmd(id, "spk sound/buttons/blip2")
2072 return PLUGIN_HANDLED
2073 }
2074
2075 reg_pw[id] = pw
2076 reg_pw_b[id] = true
2077 RegMenu_Q(id)
2078 return PLUGIN_CONTINUE
2079}
2080
2081public Reg(id) {
2082 if(!reg_pw_b[id] || !reg_kj_b[id]){
2083 RegMenu_Q(id)
2084 client_print(id, print_center, "Sa ei ole kirjutanud kasutajanime või parooli.")
2085 client_cmd(id, "spk sound/buttons/blip2")
2086 return PLUGIN_HANDLED
2087 }
2088
2089 Reg_MySql(id)
2090 Registeerimisel[id] = true
2091 return PLUGIN_CONTINUE
2092}
2093
2094
2095// Sisse logimine
2096///////////////////////////////////////////
2097
2098public LogMenu_Q(id) {
2099 static f[90]
2100
2101 formatex(f, charsmax(f),"\ySisse Logimine \w| \rPastlate DR")
2102 new m = menu_create(f, "LogMenu_Qh")
2103
2104 if(!log_kj_b[id]) {
2105 formatex(f, charsmax(f), "Kasutajanimi: \yPole lisatud")
2106 menu_additem(m, f, "1", 0)
2107 }
2108 else {
2109 formatex(f, charsmax(f), "Kasutajanimi: \r%s", login_kj[id])
2110 menu_additem(m, f, "1", 0)
2111 }
2112
2113 if(!log_pw_b[id]) {
2114 formatex(f, charsmax(f), "Parool: \yPole lisatud^n")
2115 menu_additem(m, f, "2", 0)
2116 }
2117 else {
2118 formatex(f, charsmax(f), "Parool: \r%s^n", login_pw[id])
2119 menu_additem(m, f, "2", 0)
2120 }
2121
2122 if(RememberMe[id] == 1) {
2123 menu_additem(m, "Mäleta mind: \rSees", "3", 0)
2124 }
2125 else if(RememberMe[id] == 0) {
2126 menu_additem(m, "Mäleta mind: \yVäljas", "3", 0)
2127 }
2128
2129 menu_additem(m, "Logi sisse", "4", 0)
2130
2131 menu_setprop(m, MPROP_EXITNAME, "Tagasi", 0)
2132 menu_display(id, m, 0)
2133}
2134
2135public LogMenu_Qh(id, menu, item) {
2136 if(!is_user_connected(id)){
2137 return PLUGIN_HANDLED
2138 }
2139
2140 if(item == MENU_EXIT) {
2141 RegSystem(id)
2142 menu_destroy(menu)
2143 return PLUGIN_HANDLED
2144 }
2145
2146 switch(item) {
2147 case 0: client_cmd(id, "messagemode log_kasutajanimi")
2148 case 1: client_cmd(id, "messagemode log_parool")
2149 case 2: {
2150 if(RememberMe[id] == 0) {
2151 RememberMe[id] = 1
2152 ColorChat(id, NORMAL, "%s Sinu kasutaja jääb nüüd sisselogituks.", Prefix)
2153 ColorChat(id, NORMAL, "%s Sa ei pea enam järgmine kord serveriga liitudes uuesti sisselogima.", Prefix)
2154 client_cmd(id, "spk sound/events/tutor_msg")
2155 LogMenu_Q(id)
2156 }
2157 else if(RememberMe[id] == 1) {
2158 RememberMe[id] = 0
2159 ColorChat(id, NORMAL, "%s Sinu kasutaja ei jää enam sisselogituks.", Prefix)
2160 ColorChat(id, NORMAL, "%s Te peate järgmine kord serveriga liitudes uuesti sisselogima.", Prefix)
2161 client_cmd(id, "spk sound/events/tutor_msg")
2162 LogMenu_Q(id)
2163 }
2164
2165 LogMenu_Q(id)
2166 }
2167
2168 case 3: Login(id)
2169 }
2170 return PLUGIN_HANDLED
2171}
2172
2173public LogMenu_KJ(id) {
2174 if(!is_user_connected(id)) {
2175 return PLUGIN_HANDLED
2176 }
2177
2178 read_args(kjl, charsmax(kjl))
2179 remove_quotes(kjl)
2180
2181 new Length = strlen(kjl)
2182
2183 if(equal(kjl, "")) {
2184 LogMenu_Q(id)
2185 client_print(id, print_center, "Sa ei kirjutanud kasutajanime.")
2186 client_cmd(id, "spk sound/buttons/blip2")
2187 return PLUGIN_HANDLED
2188 }
2189
2190 if(Length < 3) {
2191 LogMenu_Q(id)
2192 client_print(id, print_center, "Kasutajanime pikkus on liiga lühike.")
2193 client_cmd(id, "spk sound/buttons/blip2")
2194 return PLUGIN_HANDLED
2195 }
2196
2197 if(Length > 30) {
2198 LogMenu_Q(id)
2199 client_print(id, print_center, "Kasutajanime pikkus on liiga pikk.")
2200 client_cmd(id, "spk sound/buttons/blip2")
2201 return PLUGIN_HANDLED
2202 }
2203
2204 login_kj[id] = kjl
2205 log_kj_b[id] = true
2206 LogMenu_Q(id)
2207 return PLUGIN_CONTINUE
2208}
2209
2210public LogMenu_PW(id) {
2211 if(!is_user_connected(id)){
2212 return PLUGIN_HANDLED
2213 }
2214
2215 read_args(pwl, charsmax(pwl))
2216 remove_quotes(pwl)
2217
2218 new Length = strlen(pwl)
2219
2220 if(equal(pwl, "")) {
2221 LogMenu_Q(id)
2222 client_print(id, print_center, "Sa ei kirjutanud parooli.")
2223 client_cmd(id, "spk sound/buttons/blip2")
2224 return PLUGIN_HANDLED
2225 }
2226
2227 if(Length < 3){
2228 LogMenu_Q(id)
2229 client_print(id, print_center, "Parooli pikkus on liiga lühike.")
2230 client_cmd(id, "spk sound/buttons/blip2")
2231 return PLUGIN_HANDLED
2232 }
2233
2234 if(Length > 30){
2235 LogMenu_Q(id)
2236 client_print(id, print_center, "Parooli pikkus on liiga pikk.")
2237 client_cmd(id, "spk sound/buttons/blip2")
2238 return PLUGIN_HANDLED
2239 }
2240
2241 login_pw[id] = pwl
2242 log_pw_b[id] = true
2243 LogMenu_Q(id)
2244 return PLUGIN_CONTINUE
2245}
2246
2247public Login(id) {
2248 if(!log_pw_b[id] || !log_kj_b[id]){
2249 LogMenu_Q(id)
2250 client_print(id, print_center, "Sa ei ole kirjutanud kasutajanime või parooli.")
2251 client_cmd(id, "spk sound/buttons/blip2")
2252 return PLUGIN_HANDLED
2253 }
2254
2255 Log_MySql(id)
2256 return PLUGIN_CONTINUE
2257}
2258
2259// MySQL Osa
2260///////////////////////////////////////////
2261public MySQL() {
2262 g_SqlTuple = SQL_MakeDbTuple(szHost, szUser, szPass, szDb)
2263
2264 new ErrorCode, Handle:SqlConnection = SQL_Connect(g_SqlTuple, ErrorCode, g_Error, charsmax(g_Error))
2265 if(SqlConnection == Empty_Handle) {
2266 set_fail_state(g_Error)
2267 }
2268
2269 new Handle:Queries
2270
2271 Queries = SQL_PrepareQuery(SqlConnection, "CREATE TABLE IF NOT EXISTS `amx_deathrun` \
2272 (`id` INT AUTO_INCREMENT NOT NULL, `nimi` varchar(64) NOT NULL, `parool` varchar(64) NOT NULL, `elud` varchar(64) NOT NULL, `smselud` varchar(64) NOT NULL, `register_ip` varchar(64) NOT NULL, `last_ip` varchar(64) NOT NULL, `logitud` varchar(64), `levelid` varchar(64) NOT NULL, `smslevelid` varchar(64) NOT NULL, `rememberme` varchar(64) NOT NULL, primary key (id))")
2273
2274 if(!SQL_Execute(Queries)) {
2275 SQL_QueryError(Queries, g_Error, charsmax(g_Error))
2276 set_fail_state(g_Error)
2277 }
2278
2279 SQL_FreeHandle(Queries)
2280 SQL_FreeHandle(SqlConnection)
2281}
2282
2283public Log_MySql(id) {
2284 new szTemp[512]
2285
2286 new Data[1]
2287 Data[0] = id
2288
2289 format(szTemp, charsmax(szTemp), "SELECT * FROM `amx_deathrun` WHERE nimi='%s' and parool='%s'", login_kj[id], login_pw[id])
2290 SQL_ThreadQuery(g_SqlTuple, "register_client", szTemp, Data, 1)
2291}
2292
2293public Reg_MySql(id) {
2294 new szTemp[512]
2295
2296 new Data[1]
2297 Data[0] = id
2298
2299 format(szTemp, charsmax(szTemp), "SELECT * FROM `amx_deathrun` WHERE nimi='%s'", reg_kj[id])
2300 SQL_ThreadQuery(g_SqlTuple, "register_client", szTemp, Data, 1)
2301}
2302
2303public remember_client(FailState,Handle:Query, Error[], Errcode, Data[], DataSize) {
2304 if(FailState == TQUERY_CONNECT_FAILED) {
2305 log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error)
2306 }
2307 else if(FailState == TQUERY_QUERY_FAILED) {
2308 log_amx("Load Query failed. [%d] %s", Errcode, Error)
2309 }
2310
2311 new id
2312 id = Data[0]
2313
2314 if(SQL_NumResults(Query) < 1) {
2315 RegSystem(id)
2316 return PLUGIN_HANDLED
2317 }
2318 else if(SQL_NumResults(Query) > 1) {
2319 RegSystem(id)
2320 ColorChat(id, NORMAL, "%s Andmebaasis oli rohkem kui \FCks kasutaja, mille viimane k\FClastus oli sinu IP'ga.", Prefix)
2321 ColorChat(id, NORMAL, "%s Sa pead iseseisvalt sisse logima.", Prefix)
2322 client_cmd(id, "spk sound/buttons/blip2")
2323 return PLUGIN_HANDLED
2324 }
2325 else {
2326 new kj_nimi = SQL_FieldNameToNum(Query, "nimi")
2327 new kj_parool = SQL_FieldNameToNum(Query, "parool")
2328
2329 SQL_ReadResult(Query, kj_nimi, kjl, charsmax(kjl))
2330 SQL_ReadResult(Query, kj_parool, pwl, charsmax(pwl))
2331
2332 login_kj[id] = kjl
2333 login_pw[id] = pwl
2334
2335 RememberMe[id] = 1
2336 Log_MySql(id)
2337 }
2338 return PLUGIN_HANDLED
2339}
2340
2341public register_client(FailState,Handle:Query, Error[], Errcode, Data[], DataSize) {
2342 if(FailState == TQUERY_CONNECT_FAILED) {
2343 log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error)
2344 }
2345 else if(FailState == TQUERY_QUERY_FAILED) {
2346 log_amx("Load Query failed. [%d] %s", Errcode, Error)
2347 }
2348
2349 new id
2350 id = Data[0]
2351
2352 if(SQL_NumResults(Query) < 1) {
2353 if(Registeerimisel[id]) {
2354 new szTemp[512], reg_ip[40]
2355 get_user_ip(id, reg_ip, charsmax(reg_ip), 1)
2356
2357 format(szTemp, charsmax(szTemp), "INSERT INTO `amx_deathrun` ( `nimi` , `parool`, `elud`, `smselud`, `register_ip`, `last_ip`, `logitud`, `levelid`, `smslevelid`, `rememberme`)VALUES ('%s','%s', '0', '0', '%s', '0', '1', '0', '0', '0');", reg_kj[id] , reg_pw[id], reg_ip)
2358 SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp)
2359
2360 login_kj[id] = reg_kj[id]
2361 login_pw[id] = reg_pw[id]
2362
2363 ColorChat(id, NORMAL, "%s Sinu kasutaja on registreeritud. ^3Kasutajanimi^1: %s, ^3parool^1: %s", Prefix, reg_kj[id], reg_pw[id])
2364 client_cmd(id, "spk sound/events/tutor_msg")
2365 Sisselogimine(id)
2366 }
2367 else {
2368 LogMenu_Q(id)
2369 g_iKordi[id] += 1
2370 ColorChat(id, NORMAL, "%s Kasutajanimi või parool on vale.", Prefix)
2371 client_cmd(id, "spk sound/buttons/blip2")
2372
2373 if(g_iKordi[id] == 3){
2374 console_print(id, "[Pastlate DR] Sa kirjutasid vale parooli liiga palju kordi, sind kickiti serverist!")
2375 server_cmd("kick #%d", get_user_userid(id))
2376 }
2377
2378 }
2379 }
2380 else {
2381 if(Registeerimisel[id]) {
2382 RegMenu_Q(id)
2383 ColorChat(id, NORMAL, "%s See kasutajanimi on võetud. ", Prefix)
2384 client_cmd(id, "spk sound/buttons/blip2")
2385 }
2386 else {
2387 g_iLogitud[id] = SQL_ReadResult(Query, 7)
2388
2389 if(g_iLogitud[id] == 0) {
2390 new szTemp[512]
2391
2392 format(szTemp, charsmax(szTemp), "UPDATE `amx_deathrun` SET `logitud` = '1' WHERE nimi='%s' and parool='%s'", login_kj[id], login_pw[id])
2393 SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp)
2394
2395 g_iID[id] = SQL_ReadResult(Query, 0)
2396 Elud[id] = SQL_ReadResult(Query, 3)
2397 Relv2[id] = SQL_ReadResult(Query, 8)
2398 Sisselogimine(id)
2399
2400 if(get_user_flags(id) & ADMIN_LEVEL_H && Relv2[id] == 0) {
2401 Relv2[id] = 1
2402 }
2403 }
2404 else {
2405 LogMenu_Q(id)
2406 ColorChat(id, NORMAL, "%s See kasutaja on juba sisse logitud.", Prefix)
2407 client_cmd(id, "spk sound/buttons/blip2")
2408 }
2409 }
2410
2411 }
2412 return PLUGIN_HANDLED
2413}
2414
2415public SMS_MySql(id) {
2416 if(!is_user_connected(id) || !Sisselogitud[id]) {
2417 return
2418 }
2419
2420 new szTemp[512]
2421
2422 new Data[1]
2423 Data[0] = id
2424
2425 format(szTemp, charsmax(szTemp), "SELECT * FROM `amx_deathrun` WHERE nimi='%s'", login_kj[id])
2426 SQL_ThreadQuery(g_SqlTuple, "sms_punktid", szTemp, Data, 1)
2427}
2428
2429public sms_punktid(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) {
2430 if(FailState == TQUERY_CONNECT_FAILED) {
2431 log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error)
2432 }
2433 else if(FailState == TQUERY_QUERY_FAILED) {
2434 log_amx("Load Query failed. [%d] %s", Errcode, Error)
2435 }
2436
2437 new szTemp[512]
2438 new id
2439 id = Data[0]
2440
2441 g_iSMSPunktid[id] = SQL_ReadResult(Query, 4)
2442 g_iSMSLevelid[id] = SQL_ReadResult(Query, 9)
2443
2444 if(g_iSMSPunktid[id] > 0) {
2445 Elud[id] += g_iSMSPunktid[id]
2446 ColorChat(id, NORMAL, "%s Sa tellisid endale ^3%i^1 elu. Täname sind.", Prefix, g_iSMSPunktid[id])
2447 client_cmd(id, "spk sound/events/tutor_msg")
2448 Log("[SMS] Kasutaja %s ostis endale %i elu. Pärast ostu kasutajal elusid: %i", login_kj[id], g_iSMSPunktid[id], Elud[id])
2449
2450 format(szTemp, charsmax(szTemp), "UPDATE `amx_deathrun` SET `smselud` = '0' WHERE nimi='%s'", login_kj[id])
2451 SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp)
2452 }
2453
2454 if(g_iSMSLevelid[id] > 0) {
2455 Relv2[id] += g_iSMSLevelid[id]
2456
2457 if(Relv2[id] > 24) {
2458 Relv2[id] = 24
2459 }
2460
2461 ColorChat(id, NORMAL, "%s Sa tellisid endale ^3%i^1 levelit. Täname sind.", Prefix, g_iSMSLevelid[id])
2462 client_cmd(id, "spk sound/events/tutor_msg")
2463 Log("[SMS] Kasutaja %s ostis endale %i levelit. Pärast ostu kasutaja level: %i", login_kj[id], g_iSMSLevelid[id], Relv2[id])
2464
2465 format(szTemp, charsmax(szTemp), "UPDATE `amx_deathrun` SET `smslevelid` = '0' WHERE nimi='%s'", login_kj[id])
2466 SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp)
2467 }
2468 return PLUGIN_HANDLED
2469}
2470
2471public Save_MySql(id) {
2472 new szTemp[512], lastip[40]
2473 get_user_ip(id, lastip, charsmax(lastip), 1)
2474
2475 if(get_user_flags(id) & ADMIN_LEVEL_H && Relv2[id] == 1) {
2476 Relv2[id] = 0
2477 }
2478
2479 format(szTemp, charsmax(szTemp), "UPDATE amx_deathrun SET elud='%i', smselud='0', last_ip='%s', logitud='0', levelid='%i', smslevelid='0', rememberme='%i' WHERE nimi='%s' and parool='%s'", Elud[id], lastip, Relv2[id], RememberMe[id], login_kj[id], login_pw[id])
2480 SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp)
2481
2482 RememberMe[id] = 0
2483}
2484
2485public IgnoreHandle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) {
2486 SQL_FreeHandle(Query)
2487 return PLUGIN_HANDLED
2488}
2489
2490public Sisselogimine(id) {
2491 if(Registeerimisel[id]) {
2492 Elud[id] = 0
2493 Relv2[id] = 0
2494 Sisselogitud[id] = true
2495 CTks(id)
2496 ColorChat(id, NORMAL, "%s Tere tulemast ^3Pastlate Deathrun^1 serverisse!", Prefix)
2497 }
2498 else {
2499 Sisselogitud[id] = true
2500 CTks(id)
2501 ColorChat(id, NORMAL, "%s Tere tulemast tagasi, ^3%s^1!", Prefix, login_kj[id])
2502 }
2503}
2504
2505Create_PlayerCamera(id)
2506{
2507 new ent = -1
2508 while ((ent = find_ent_by_class(ent,pl_cm_class)) != 0)
2509 {
2510 if (entity_get_edict(ent,EV_ENT_owner) == id)
2511 {
2512 attach_view(id , ent)
2513 return
2514 }
2515 }
2516 ent = create_entity("info_target")
2517
2518 if( !ent )
2519 return;
2520
2521 entity_set_string(ent, EV_SZ_classname, pl_cm_class)
2522
2523 entity_set_model(ent, "models/w_usp.mdl")
2524
2525 entity_set_byte(ent, EV_INT_solid, SOLID_TRIGGER)
2526 entity_set_int(ent, EV_INT_movetype, MOVETYPE_FLYMISSILE)
2527
2528 entity_set_edict(ent, EV_ENT_owner, id)
2529
2530 entity_set_int(ent,EV_INT_rendermode, kRenderTransTexture)
2531 entity_set_float(ent, EV_FL_renderamt, 0.0 )
2532
2533 attach_view(id,ent)
2534 entity_set_float(ent, EV_FL_nextthink, get_gametime())
2535}
2536
2537public Think_PlayerCamera(ent)
2538{
2539 static owner
2540 owner = entity_get_edict(ent,EV_ENT_owner)
2541
2542 if( ThirdPerson[owner] || !is_user_alive(owner))
2543 {
2544 attach_view(owner,owner)
2545 remove_entity(ent)
2546 return PLUGIN_CONTINUE;
2547 }
2548
2549
2550 static Float:origin[3], Float:fAngle[3],Float:origin2[3];
2551 entity_get_vector(owner,EV_VEC_origin,origin)
2552 entity_get_vector(owner,EV_VEC_v_angle,fAngle)
2553
2554 origin2[0] = origin[0]
2555 origin2[1] = origin[1]
2556 origin2[2] = origin[2]
2557
2558 static Float:fVBack[3];
2559 angle_vector( fAngle, ANGLEVECTOR_FORWARD, fVBack );
2560
2561 origin[2] += 20.0;
2562
2563 origin[0] += ( -fVBack[0] * 150.0 );
2564 origin[1] += ( -fVBack[1] * 150.0 );
2565 origin[2] += ( -fVBack[2] * 150.0 );
2566
2567 trace_line(owner,origin2,origin,origin)
2568
2569 entity_set_vector(ent,EV_VEC_origin,origin)
2570
2571 entity_get_vector(owner,EV_VEC_velocity,origin2)
2572 entity_set_vector(ent,EV_VEC_velocity,origin2)
2573
2574 entity_set_vector(ent,EV_VEC_angles,fAngle)
2575 entity_set_float(ent, EV_FL_nextthink, get_gametime())
2576
2577 return PLUGIN_CONTINUE;
2578}
2579
2580ChooseRandomPlayer() {
2581 new iPlayers[32], iNum
2582 get_players(iPlayers, iNum, "ce", "CT")
2583
2584 if(iNum <= 1) {
2585 return iPlayers[0]
2586 }
2587
2588 new RandomNum = random(iNum)
2589 new RandomPlayer = iPlayers[RandomNum]
2590
2591 if(RandomPlayer == LastChoosenPlayer) {
2592 iPlayers[RandomNum] = iPlayers[--iNum]
2593 RandomPlayer = iPlayers[random(iNum)]
2594 }
2595
2596 LastChoosenPlayer = RandomPlayer
2597 return RandomPlayer
2598}
2599
2600GetCounterTerrorists() {
2601 static iPlayers[32], iNum
2602 get_players(iPlayers, iNum, "ae", "CT")
2603 return iNum
2604}
2605
2606setButtons() {
2607 new iDef = 1
2608 for(new i = 0; i < giPointer; i++) {
2609 gUsed[i] = iDef
2610 gOnStart[i] = iDef
2611 gDelay[i] = get_pdata_float(gEnt[i], m_flWait)
2612 gDefaultDelay[i] = gDelay[i]
2613 }
2614}
2615
2616fillButtons(const szClass[]) {
2617 new ent = -1
2618 while((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", szClass)) != 0) {
2619 gEnt[giPointer++] = ent
2620 set_pev(ent, pev_iuser4, giPointer)
2621 }
2622}
2623
2624get_ent_index(ent) {
2625 return pev(ent, pev_iuser4) - 1
2626}
2627
2628restoreButton(ent) {
2629 if(pev(ent, pev_frame) > 0.0) {
2630 new Float:Life
2631 pev(ent, pev_nextthink, Life)
2632 set_pev(ent, pev_ltime, Life - 0.01)
2633 }
2634}
2635
2636Log(const message_fmt[], any:...) {
2637 static message[256]
2638 vformat(message, sizeof(message) - 1, message_fmt, 2)
2639
2640 static filename[96]
2641 static dir[64]
2642
2643 if(!dir[0]) {
2644 get_basedir(dir, sizeof(dir) - 1)
2645 add(dir, sizeof(dir) - 1, "/logs")
2646 }
2647
2648 format_time(filename, sizeof(filename) - 1, "%m-%d-%Y")
2649 format(filename, sizeof(filename) - 1, "%s/Deathrun_%s.log", dir, filename)
2650
2651 log_to_file(filename, "%s", message)
2652}
2653/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
2654*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1061\\ f0\\ fs16 \n\\ par }
2655*/