Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Wklejka 19wv82oc5jlw dodana przez freetu, 16.12.2012 01:39
Typ:



1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
529.
530.
531.
532.
533.
534.
535.
536.
537.
538.
539.
540.
541.
542.
543.
544.
545.
546.
547.
548.
549.
550.
551.
552.
553.
554.
555.
556.
557.
558.
559.
560.
561.
562.
563.
564.
565.
566.
567.
568.
569.
570.
571.
572.
573.
#pragma dynamic 131072 //I used to much memory =(
/*
 * ====================================================================================================
 * ====================================================================================================
 * 		---------------------------SURF_OLYMPICS-v1.5.2a--------BY: OneEyed---------------------------
 * ====================================================================================================
 * ====================================================================================================
 *	COMMENTS: 
 *		Install the plugin normally, and get ready to beat some freagin records!
 * ====================================================================================================
 *	REQUIRED:
 *		AMXX 1.70
 *
 *	MODULES:
 *		CSTRIKE
 *		ENGINE
 *		FAKEMETA
 *		NVAULT
 * ====================================================================================================
 *	CVARS: 
 *		surf_flyspeed <#> 				- Changes flying speed of surf_endzone tool
 *		surf_teamstack < 0 | 1 | 2 > 	- Forces players to be in a certain team.
 *		surf_godmode < 0 | 1 >			- Enables/Disables godmode on players.
 *		surf_semiclip < 0 | 1 > 		- Enables/Disables semi-clip on players.
 *	
 *	COMMANDS:
 *		surf_endzone					- Enables Surf EndZone Creation Tool
 *		surf_delete						- Enables Map Record Catagory Deletion menu.
 *		surf_on	< 0 | 1 >				- Enables/Disables plugin 99%.
 *
 *	CHAT COMMANDS:
 *		/spec							- Makes you a spectator.
 *		/respawn						- Respawns you.
 *		/top3							- Opens Map Top Records list.
 *		/help							- Opens help menu.
 *
 * ====================================================================================================
 *	PLUGIN DETAILS:
 *		When you spawn in, your in standby mode.  As soon as you jump, your game is activated and your
 *		records get recorded.  Current records are Map Completion, Speed, Hang Time, Distance, and
 *		Height.  The plugin automatically respawns users when you die or fall down.  Players also have
 *		a simulated Semi-clip, so they don't get stuck inside each other, but still allow to block
 *		each other.  To complete the map, touch the designated EndZone lightning bolt.
 *
 * ====================================================================================================
 *	CREDITS: 
 *		- Rukia found how to know if your on ladder. (drove me nuts yet it was so easy)
 *		- teame06/VEN for HLTV event.
 *		- teame06 help with new menu system, and Team_Select menu, and some inspiration =).
 *		- Xtrem3 found a major hang time exploit.
 *		- iron helix found a major height exploit.
 *		- XAD - used the same font color from his statsx motd.
 *		- door for helping me test some features.
 *		- Gorlag/Batman for his Flying code.
 *		- BASIC-MASTER, I copied his Special Effect. (not the code, just effect)
 *		- BAILOPAN for some of the weapon removal code from CSDM v1.
 *		- BAILOPAN, for his information on code optimization. (READ IT)
 *			-- http://www.sourcemod.net/devlog/?p=62
 * ====================================================================================================
 *	CHANGELOG:
 *
 *	v1.5.2a:
 *	- Reverted back to old method, will crash again on surf_xss and surf_maya 
 *		if you have plugins that precache models.  It's the maps fault for having 
 *		to many brush models.  Attempting to fix, completely breaks my plugin on normal maps.
 *
 *	v1.5.2:
 *	- Fixed crashing in surf_xss and surf_maya.
 *
 *	v1.5.1:
 *	- Fixed a bug with the semi-clip cvar.
 *	- Fixed a entity leak error with weapon removal.
 *
 *	v1.5:
 *	- Commentator can be turned on/off through a #define.
 *	- New CVARs: 
 *		- surf_godmode 	< 0 | 1 >	(Turns God Mode OFF/ON, for everyone.)
 *		- surf_semiclip  < 0 | 1 >	(Turns Semi-Clip OFF/ON, for everyone.)
 *	- New Commands:
 *		- surf_delete 			(Opens menu to delete records of current map.)
 *		- surf_on < 0 | 1 > 	(Turns plugin OFF/ON completely.)
 *	- Reworked Top Record System:
 *		- One person can't dominate an entire record, there will always be three
 *		- different players for every record catagory. Saved by STEAMID not name.
 *	- Weapons from game_player_equip entity are removed upon death, to prevent spam.
 *	- Players can now easily jump on top of users in Semi-Clip mode.
 *
 *	v1.1:
 *	- Changed the HUD system a little bit, to be less laggy.
 *	- Fixed an accidental logical error with clearing airtype records.
 *	- Blocked trigger_hurts that heal from teleporting.
 *	- Added Personal Statistics to /top3 window. 
 * ====================================================================================================
 */
 
/*======== User Changeable Defines =========*/
 
//Uncomment to add commentator text.
//#define COMMENTATOR		
 
#define STATS_COLOR_RED		255
#define STATS_COLOR_GREEN	180
#define STATS_COLOR_BLUE	0
#define STATS_LOC_X 		1.0
#define STATS_LOC_Y			0.5
 
#define RECORDS_HUD_DELAY	7.0
#define RECORD_COLOR_RED	220
#define RECORD_COLOR_GREEN	80
#define RECORD_COLOR_BLUE	0
#define RECORD_LOC_X		1.0
#define RECORD_LOC_Y		0.30
 
//EndZone Special Effects
#define PULSE_FREQUENCY		0.4 //in seconds
 
#define LINE_COLOR_RED		255
#define LINE_COLOR_GREEN	255
#define LINE_COLOR_BLUE		255
 
#define WAVE_COLOR_RED		0
#define WAVE_COLOR_GREEN	255
#define WAVE_COLOR_BLUE		0
 
/*==========================================*/
 
 
/*======================ONLY CODERS BEYOND THIS POINT!!=======================================*/
/*======================ONLY CODERS BEYOND THIS POINT!!=======================================*/
/*======================ONLY CODERS BEYOND THIS POINT!!=======================================*/
 
/*====================================================================================================
 How To Add A custom Record:
 	Update the globals to add your custom record info.  Scroll down to [Custom Records] and create your
 	custom record function and math there and at the end add the template Validate_BeatRecord.
 	If you have any global vars for your custom record, drop them inside the clean up functions, so 
 	they get reset.  After that, add your custom record function inside the core named JudgeJudy.
====================================================================================================*/
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <cstrike>
#include <nvault>
 
new Vault
static const VAULTNAME[] = "MapRecords"
 
new Vault_EndZone
static const ENDZONE_VAULT[] = "EndZones"
 
#define MAX_BUFFER_LENGTH 2047
#define MAX_TEXT_LENGTH 100
#define MAX_PLAYERS	32
/****************************************************/
/**************** Editable Globals ******************/
 
#define NUMRANKS 	3
#define NUMRECORDS 	5
 
//Record Types in order.
enum { 
	UKONCZONE = 1,
	PREDKOSC,
	CZASLOTU,
	ODLEGLOSC,
	WYSOKOSC
}
 
//These records require players to be in the air for recording.
#define NUM_AIR_RECORDS 		3
new AIR_RECORDS[NUM_AIR_RECORDS] = {
	CZASLOTU,
	ODLEGLOSC,
	WYSOKOSC
}
 
//These records are read at all times.
#define NUM_ANYTIME_RECORDS		1
new ANYTIME_RECORDS[NUM_ANYTIME_RECORDS] = {
	PREDKOSC	
}
 
//I predefined up to 7th rank. Be warned, show_motd can only hold 2047 characters in total.
//4 ranks uses nearly all that.  So some changes will need to be made if u want to display more.
//You shouldn't need more than 4, cause the records end up being very close to each other.
static const RANKS[NUMRANKS+1][] = { 
	"NULL", 
	"st", 
	"nd", 
	"rd" 
/*	"th", 
	"th", 
	"th", 
	"th" */
}
 
//The Titles order must match enum up top.
static const TITLES[NUMRECORDS+1][] = {
	"NULL",
	"Ukonczone",
	"Predkosc",
	"Czas lotu",
	"Odleglosc",
	"Wysokosc"
}
 
//symbols records use, order must match enum up top.
static const TYPES[NUMRECORDS+1][] = { "NULL", "sec", "mph", "sec", "ft", "ft" }
 
#if defined COMMENTATOR
static const BAD_COMMENT[4][] = { 
	"Wipe Out!", 
	"OUCH!", 
	"That's gotta hurt!", 
	"Try Again!" 
}
 
static const GOOD_COMMENT[5][] = { 
	"Way to go!", 
	"Awesome!", 
	"Nice!", 
	"Spectacular!", 
	"That's OUTRAGEOUS!" 
}
#endif
 
 
/****************************************************/
/**************** Record Variables ******************/
 
//Saved Personal Best Record
new Float:g_fPersonalRecord[MAX_PLAYERS+1][NUMRECORDS+1]
//Current Record of current run (prevents multiple records for top records in one jump)
new Float:g_fPersonalOld[MAX_PLAYERS+1][NUMRECORDS+1]
//Top Records of map 1st/2nd/3rd
new Float:g_fTopRecord[NUMRECORDS+1][NUMRANKS+1]
 
//For quick data accessing
new g_TopRecordName[NUMRECORDS+1][NUMRANKS+1][MAX_TEXT_LENGTH+1]
new g_TopRecordSteamId[NUMRECORDS+1][NUMRANKS+1][MAX_TEXT_LENGTH+1]
 
/****************************************************/
/************ Custom Record Variables ***************/
 
new Float:g_fTimeElapsed[MAX_PLAYERS+1]
new Float:g_fvecEndOrigin[MAX_PLAYERS+1][3]	//Where we currently are.
new Float:g_fvecPrevOrigin[MAX_PLAYERS+1][3]	//For Teleport Menu (Prev Location).
new Float:g_fHeight[MAX_PLAYERS+1]				//Height we reached.
new g_vecStartOrigin[MAX_PLAYERS+1][3] 		//Where we took off from wave/jump.
new bool:g_bDistCheck[MAX_PLAYERS+1]			//When to calculate distance.
 
/****************************************************/
/****************** Event Flags *********************/
 
new Float:g_Gametime
new Float:g_fShowHudDelay[MAX_PLAYERS+1]
 
new Float:g_fIsInAir[MAX_PLAYERS+1] //If this is not equal to current get_gametime(), player is in AIR.
new bool:g_bPlaystarted[MAX_PLAYERS+1]
new bool:g_bRespawning[MAX_PLAYERS+1]
new bool:g_bPlaying[MAX_PLAYERS+1]
new bool:g_bIsDead[MAX_PLAYERS+1]
 
//record beating flags, so we don't update only once... appropriately
new bool:g_bCheckPersonal[MAX_PLAYERS+1][NUMRECORDS+1]
new bool:g_bCheckTop[MAX_PLAYERS+1][NUMRECORDS+1]
 
 
/****************************************************/
/**************** Hud Text Messages *****************/
 
new g_StatText[MAX_PLAYERS+1][NUMRECORDS + 1][MAX_TEXT_LENGTH + 1]
new g_RecordText[MAX_PLAYERS+1][NUMRECORDS + 1][MAX_TEXT_LENGTH + 1]
 
new HudText_Records[MAX_BUFFER_LENGTH + 1]
new HudText_Stats[MAX_BUFFER_LENGTH + 1]
 
/****************************************************/
/****************** Misc Variables ******************/
new bool:g_bIsSurf
new bool:g_bRunOnce
new g_Maxplayers
new g_MapName[64]
new g_EndRound
new g_NoClip
 
//endzone misc.
new bool:g_bModifyMode[MAX_PLAYERS+1]
new bool:g_IsFlying[MAX_PLAYERS+1]
new bool:g_bFinished[MAX_PLAYERS+1]
 
//menus
new menu_teleport
new menu_modify[MAX_PLAYERS+1]
new menu_finished[MAX_PLAYERS+1]
new menu_help
new menu_savecheck
new menu_deletecheck
new menu_deleterecords
 
/****************************************************/
/************** Special FX Variables ****************/
 
new g_fxBeamSprite, g_fxWave
 
/****************************************************/
/**************** Entity Variables ******************/
 
//game_player_equip weapons
new g_StartWeap[32][64]
new g_TotalWeap
//teleport destinations
new g_TotalTeleDest
new g_TeleDest[100][32]
new g_TeleDestId[100]				
//trigger_teleports
new g_TotalTeleports
new g_TriggerTeleport[100][32]
new g_TriggerTeleId[100]	
//trigger hurts with healing
new g_TriggerHurtHealers[100]
new g_TrigHurtHealTotal
//linked info_target_destination & trigger_teleport
new g_LinkedTeleAndDest[100][2]
new g_TotalLinked	
//spawns info
new g_InfoPlayerStart
new g_InfoPlayerDeathmatch
new bool:g_bBothTeamsActive
//EndZone Vars
new g_EndzoneEntity
static const ENDZONE_MODEL[] = "models/chick.mdl" //this will be invisible (needed to set a bounding box)
/****************************************************/
//====================================================================================================
static const TITLE[] = "surf_olympics"
static const VERSION[] = "1.5.2a"
static const AUTHOR[] = "OneEyed"
//====================================================================================================
 
 
/*====================================================================================================
 [Initialize]
 
 Purpose:	Prepares the map by automating a bunch of information at start of map, so plugin won't lag 
			during gameplay.  Also validates if we're on a SURF_MAP.  If not plugin disables itself
			100%.
 
 Comment:	Added CVAR for internet query lookup of plugin.
 
====================================================================================================*/
public plugin_init() {
	register_plugin(TITLE,VERSION,AUTHOR)
	register_cvar(TITLE,"0",FCVAR_SERVER)
 
	if(g_bIsSurf)
		set_cvar_num(TITLE,1)
	else {
		set_cvar_num(TITLE,0)
		return PLUGIN_HANDLED
	}
 
	PRECACHE_MODELS()
 
	g_Maxplayers = get_maxplayers()
 
	//Find if map is missing a teams spawn points.
	if(g_InfoPlayerDeathmatch == 0 || g_InfoPlayerStart == 0)
		g_bBothTeamsActive = true
 
	LoadMenus()
 
	register_cvar("surf_flyspeed","1500")
	register_cvar("surf_teamstack","0")
	register_cvar("surf_semiclip","1")
	register_cvar("surf_godmode","0")
 
	register_clcmd("say /spec","cmdSpectate")
	register_clcmd("say /respawn","cmdRespawn")
	register_clcmd("say_team /respawn","cmdRespawn")
	register_clcmd("say /top3","recordLookUp")
	register_clcmd("say_team /top3","recordLookUp")
	register_clcmd("say","handle_say")
	register_clcmd("say_team", "handle_say")
 
	register_concmd("surf_on","cmdEnable",ADMIN_RCON,"<0|1> Enable / Disable Surf Olympics")
	register_concmd("surf_delete","cmdDeleteRecords",ADMIN_RCON, " Deletes Top Map Records by Type.")
	register_concmd("surf_endzone","cmdEZModify",ADMIN_RCON," Easy Endzone Creator!")
 
 
	register_menucmd(register_menuid("Team_Select",1), (1<<0)|(1<<1)|(1<<4)|(1<<5), "team_select") 
 
	register_event("DeathMsg", "Event_DeathMsg", "a")
	register_event("ResetHUD", "Event_ResetHUD", "be")
	register_event("SendAudio","Event_EndRound","a","2=%!MRAD_terwin","2=%!MRAD_ctwin","2=%!MRAD_rounddraw")
	register_event("TextMsg","Event_EndRound","a","1=4","2=#Game_Commencing")
	register_event("HLTV","Event_StartRound","a","1=0","2=0")
 
	register_touch("trigger_hurt", "player",  "Touch_TriggerHurt")
	register_touch("trigger_teleport", "player", "Touch_Teleport")
 
	//These are our slopes, considered like your in the air to EV_INT_flags so we need them.
	register_touch("player", "worldspawn", "Touch_World")
	register_touch("player", "func_water", "Touch_World")
	register_touch("player", "func_wall", "Touch_World")
	register_touch("player", "func_breakable", "Touch_World")
 
	register_touch("EndZone", "player", "Touch_EndZone")
	register_touch("player", "player", "Touch_Player")
 
	//CORE Loop
	//Meanest bitch of the south!
	new judge = create_entity("info_target")
	if (judge) {
		entity_set_string(judge, EV_SZ_classname, "JudgeJudy")
		entity_set_float(judge, EV_FL_nextthink, halflife_time() + 0.1)
		register_think("JudgeJudy", "JudgeJudy")
	}
 
	register_think("EndZone","setEffects")
 
	LoadRecords()
	return PLUGIN_HANDLED
}
 
PRECACHE_MODELS() {
	if(g_bIsSurf) {
		engfunc( EngFunc_PrecacheModel, "models/chick.mdl");	
		g_fxBeamSprite = engfunc( EngFunc_PrecacheModel,"sprites/lgtning.spr")//engfunc( EngFunc_PrecacheModel,
		g_fxWave = engfunc( EngFunc_PrecacheModel,"sprites/shockwave.spr")//engfunc( EngFunc_PrecacheModel,
	}	
}
 
/*====================================================================================================
 [Core]
 
 Purpose:	This is the core, it runs every 0.1 seconds.  Scans through all players.  Works by knowing
			when player enters team, dies, jumps to begin session, if player is in the air for record 
			logging, and prints their HUD of information.  All record checks are activated here, except
			for map completion.
 
 Comment:	The core of the plugin lies in Judge Judy's hands, so RESPECT!
			If your smart, you can add your own custom records to it.
 
====================================================================================================*/
public JudgeJudy(judge) {
 
	if(!g_EndRound && g_bIsSurf) {
 
		g_Gametime = get_gametime()
		g_NoClip = get_cvar_num("surf_semiclip")
 
		for(new id=1;id<=g_Maxplayers;id++) {
 
			if(!is_user_connected(id) || g_bModifyMode[id]) continue
 
			new team = get_user_team(id)
			if( team == 1 || team == 2 ) 
			{
				if(!g_bBothTeamsActive)
					check_team(id,team)
 
				if(!is_user_alive(id)) {
					if(!g_bIsDead[id]) {
						g_bIsDead[id] = true
						set_task(0.5,"AutoRespawn",id)
					}
					g_fIsInAir[id] = g_Gametime + 0.1
					continue
				}
 
				//part of semi-clip
				if(entity_get_int(id,EV_INT_solid) != SOLID_BBOX)
					entity_set_int(id,EV_INT_solid,SOLID_BBOX)
 
				new flags = entity_get_int(id, EV_INT_flags)
				new grounded = on_ground(id,flags)
				new bool:playstarted2 = g_bPlaystarted[id]
 
				// Time Elapsed Timer
				showTimeElapsed(id,playstarted2)
 
				//Player just spawned/teleported in, don't start anything until they touch ground
				if(!g_bPlaying[id]) {
					if(grounded) {
						clearAirRecords(id)	
						g_bPlaying[id] = true
					}
					continue
				}
				else {
 
					entity_get_vector(id,EV_VEC_origin,g_fvecEndOrigin[id])
					//player on ground.
					if(grounded)
					{	
						Validate_AirChecks(id)
						clearAirRecords(id)
 
					}
					else if(g_fIsInAir[id] < g_Gametime) //We're in the air do your stuff quickly.
					{	
						if(!playstarted2) //Player jumped lets begin recording everything
						{				
							g_fTimeElapsed[id] = g_Gametime
							playstarted2 = true
						}
 
						if(flags & FL_BASEVELOCITY)	//Block Trigger_Push Exploit (but still update HUD)
							clearAirRecords(id)
 
						if(g_bRespawning[id]) {		//Fix Teleport/Respawn exploit
							g_bRespawning[id] = false
							clearAirRecords(id)	
						}
 
						/*Records that require player in air*/
						Check_Distance(id)
						Check_Height(id)
						Check_HangTime(id)
						/************************************/
					}
 
					/*Records of player at all times*/
					Check_Speed(id)
					/*******************************/
				}
 
				g_bPlaystarted[id] = playstarted2
 
				showStats(id)	//Display HUD
 
			}
			else {
				if(g_NoClip && entity_get_int(id,EV_INT_solid) != SOLID_NOT)
					entity_set_int(id, EV_INT_solid, SOLID_NOT)
			}
		}
	}
	entity_set_float(judge, EV_FL_nextthink, halflife_time() + 0.1)
}
 
/*====================================================================================================
 [Display HUD]
 
 Purpose:	Displays Records/Stats to users.  show Records is displayed when user respawns/uses command.
 			showStats displays when user is playing.
 
 Comment:	$$
 
====================================================================================================*/
public showRecords(id)
{
	if((g_Gametime - g_fShowHudDelay[id]) > (RECORDS_HUD_DELAY + 1.0)) 
	{
		new rLen = format(HudText_Records, MAX_BUFFER_LENGTH, "Twoje rekordowe statystyki")
 
		for( new x = 2 ; x <= NUMRECORDS ; x++ )
			rLen += format(HudText_Records[rLen], MAX_BUFFER_LENGTH-rLen, "%s", g_RecordText[id][x])
 
		rLen += format(HudText_Records[rLen], MAX_BUFFER_LENGTH-rLen, "%s", g_RecordText[id][UKONCZONE])
 
		set_hudmessage(RECORD_COLOR_RED, RECORD_COLOR_GREEN, RECORD_COLOR_BLUE, RECORD_LOC_X, RECORD_LOC_Y, 1, 3.0, RECORDS_HUD_DELAY, 0.0, 1.0, 5)
		show_hudmessage(id,"%s",HudText_Records)
		g_fShowHudDelay[id] = g_Gametime
	}
 
}
 
public showTimeElapsed(id, bool:started) {
	if(g_EndzoneEntity && !g_bFinished[id] && started)
	{
		format(g_StatText[id][UKONCZONE],MAX_TEXT_LENGTH,"^nTwoj obecny czas %.1f sek",(g_Gametime