Raised This Month: $ Target: $400
 0% 

problem usurf :|


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
Hunter4all
Junior Member
Join Date: Aug 2010
Old 12-05-2010 , 01:43   problem usurf :|
#1

i have some problem with the usurf.amxx plugin...it gives me the error:

L 12/05/2010 - 08:218: [AMXX] Displaying debug trace (plugin "usurf.amxx")
L 12/05/2010 - 08:218: [AMXX] Run time error 10: native error (native "cs_get_user_team")
L 12/05/2010 - 08:218: [AMXX] [0] usurf.sma::Spawn (line 543)

here is the sma:

Code:
/*

Copyleft 2007
Plugin thread: http://forums.alliedmods.net/showthread.php?t=16418

USURF
=====

Description
This mod is designed to assist in the running of a surf server. It
includes many features, such as surfing help, semiclip, checkpoints,
"BOOM" button removal and many more features.

Was previously known as "Surf Management / Tools"

Changelog:

	March 4, 2007 - v5.0 	- Renamed and fixed major bugs
	March 13, 2007 - v5.1 	- [FEATURE] Added timer
				  [FEATURE] Added bunnyhop
				  [FEATURE] Added team stack
				  [FEATURE] Added godmode
				  [BUG] Improved semiclip
				  [BUG] Fixed crashing on Linux servers
				  [BUG] Fixed crouching with checkpoints
				  [BUG] Fixed respawn to send people back
				  to their spawns rather than killing them
	March 16, 2007 - v5.2	- [FEATURE] Cleaned up the /surfhelp MOTD display
				  [FEATURE] Added menu to /surfhelp
				  [BUG] Fixed surf help showing more than once
				  [BUG] Optimized surf help section
				  [BUG] Added new commands to /surfhelp display
				  [BUG] Removed some old semiclip code that was
				  causing problems only for people on the same team
				  [BUG] Fixed checkpoints and timers working on
				  non-surf maps

Credits:
	XxAvalanchexX	- Post about blocking knife hits
					
*/

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#include <time>

#define TIMER_TASK 23981293
#define TIMER_INTERVAL 1.0
#define MAX_PLAYERS	32

new p_On
new p_AutoCvars
new p_Help
new p_HelpInterval
new p_Respawn
new p_RemoveDropped
new p_RemoveButton
new p_NoGuns
new p_SpawnDist
new p_Semiclip
new p_Cp
new p_CpDelay
new p_BunnyHop
new p_BunnyHopAutoJump
new p_Timer
new p_X
new p_Y
new p_R
new p_G
new p_B
new p_TeamStack
new p_Godmode

new bool:g_SurfMap

new Float:g_Origin[33][3]
new Float:g_Velocity[33][3]
new Float:g_Angles[33][3]
new Float:g_LastSave[33]

new g_Time[33]
new g_Timing[33]
new g_Timer[33]

new g_Maxplayers
new g_Menu[512]

new g_TimerMenu[] = "TimerMenu"

new g_TimerTask = TIMER_TASK
new Float:g_TimerInterval = TIMER_INTERVAL

new g_HudObject

new g_SemiclipThinkerClassname[] = "usurf_semiclip"
new g_SemiclipThinker

new g_Models[2][4] =
{
	{_:CS_T_ARCTIC,_:CS_T_GUERILLA,_:CS_T_LEET,_:CS_T_TERROR},
	{_:CS_CT_GIGN,_:CS_CT_GSG9,_:CS_CT_SAS,_:CS_CT_URBAN}
}

new g_SurfHelpMenu

public plugin_init()
{
	new VERSION[] = "5.2"
	
	register_plugin("uSurf",VERSION,"Hawk552")
	register_cvar("usurf_version", VERSION, FCVAR_SERVER)
	
	new NewVersion[10]
	format(NewVersion,9,"usurf %s",VERSION)
	register_cvar("surf_base_version",NewVersion,FCVAR_SERVER)

	g_Maxplayers = get_maxplayers()
	
	// Global Commands / Cvars
	p_On = register_cvar("usurf_on","1")
	
	//Auto Cvars
	p_AutoCvars = register_cvar("usurf_autocvars","1")
	
	// Before we do ANYTHING, let's see if it's a surf map or not.
	CheckSurf()
	
	if(get_pcvar_num(p_On))
		set_task(5.0,"ExecCvars")
	
	// Surf Help
	register_clcmd("say /surfhelp","CmdSurfhelp")
	register_clcmd("say /help","CmdSurfhelp")
	p_Help = register_cvar("usurf_help","1")
	p_HelpInterval = register_cvar("usurf_help_interval","60.0")
	set_task(get_pcvar_float(p_HelpInterval),"ShowSurfHelp")
	g_SurfHelpMenu = menu_create("Surf Help","SurfHelpHandle")
	menu_additem(g_SurfHelpMenu,"Surfing Help")
	menu_additem(g_SurfHelpMenu,"uSurf Commands")
	menu_additem(g_SurfHelpMenu,"About uSurf")
	
	// Checkpoints
	register_clcmd("say /checkpoint","CmdCheckpoint")
	register_clcmd("say /gocheck","CmdGoCheck")
	p_Cp = register_cvar("usurf_checkpoint","1")
	p_CpDelay = register_cvar("usurf_checkpoint_delay","20")
	
	// extra stuff
	p_RemoveDropped = register_cvar("usurf_remove_dropped","1")
	p_RemoveButton = register_cvar("usurf_remove_button","1")
	p_NoGuns = register_cvar("usurf_noguns","0")
	p_SpawnDist = register_cvar("usurf_spawn_dist","500")
	p_Semiclip = register_cvar("usurf_semiclip","0")
	p_TeamStack = register_cvar("usurf_teamstack","0")
	p_Godmode = register_cvar("usurf_godmode","1")
	
	// bunny hopping
	p_BunnyHop = register_cvar("usurf_bunnyhop","1")
	p_BunnyHopAutoJump = register_cvar("usurf_bunnyhop_autojump","1")
	
	// timer
	p_Timer = register_cvar("usurf_timer","1")
	p_X = register_cvar("usurf_timer_x","0.8")
	p_Y = register_cvar("usurf_timer_y","-0.8")
	p_R = register_cvar("usurf_timer_r","0")
	p_G = register_cvar("usurf_timer_g","0")
	p_B = register_cvar("usurf_timer_b","255")
	register_clcmd("say /timer","CmdTimer")
	register_menucmd(register_menuid(g_TimerMenu),1023,"TimerHandle")
	register_menucmd(register_menuid("Team_Select",1),MENU_KEY_1|MENU_KEY_2|MENU_KEY_5|MENU_KEY_6,"TeamHandle") 
	register_clcmd("jointeam","TeamHandle")
	g_HudObject = CreateHudSyncObj()
	register_dictionary("time.txt")
	
	register_forward(FM_SetModel,"ForwardSetModel")
	register_forward(FM_PlayerPreThink,"ForwardPlayerPreThink")
	register_forward(FM_Touch,"ForwardTouch")
	register_forward(FM_Think,"ForwardThink")
	register_forward(FM_TraceLine,"ForwardTraceLine",1)
	register_forward(FM_TraceHull,"ForwardTraceHull",1)
	
	CheckSurf()
	CheckButton()
	
	// Respawn
	p_Respawn = register_cvar("usurf_respawn","1")
	register_event("DeathMsg","EventDeathMsg","a")
	register_clcmd("say /respawn","CmdRespawn")
	set_task(1.0,"StandardTimer",_,_,_,"b")
	
	new Ent = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target"))
	if(!Ent)
		return
	
	set_pev(Ent,pev_classname,g_SemiclipThinkerClassname)
	new Float:Time
	global_get(glb_time,Time)
	set_pev(Ent,pev_nextthink,Time + 0.01)
	dllfunc(DLLFunc_Spawn,Ent)
	
	g_SemiclipThinker = Ent
}

public CheckSurf()
{
	new MapName[32]
	get_mapname(MapName,31)
	if(containi(MapName,"surf") != -1 || containi(MapName,"wurf_") != -1 || equali(MapName,"tentical"))
		g_SurfMap = true
		
	return PLUGIN_CONTINUE
}

public ExecCvars()
{
	if(get_pcvar_num(p_On) && get_pcvar_num(p_AutoCvars) && g_SurfMap)
	{
		new ConfigsDir[50],FileLocation[50]
		get_configsdir(ConfigsDir,49)
		
		format(FileLocation,49,"%s/surf.cfg",ConfigsDir)
		
		// I'm not going to update this, because the old file
		// natives are actually much easier to work with for
		// this purpose.
		if(file_exists(FileLocation))
			server_cmd("exec ^"%s^"",FileLocation)
		else
		{
			write_file(FileLocation,"sv_airaccelerate 100")
			write_file(FileLocation,"mp_freezetime 0")
			write_file(FileLocation,"amxx pause statsx.amxx")
			write_file(FileLocation,"amxx pause miscstats.amxx")
			write_file(FileLocation,"amxx pause stats_logging.amxx")
			// people seem to be stupid to fucking RTFM, so I really have to disable this by default
			write_file(FileLocation,"//humans_join_team ct // if you want all players on one team, use this")
			write_file(FileLocation,"echo Executing surf map config.",2)
			server_cmd("exec %s",FileLocation)
			
			format(FileLocation,49,"%s/amxx.cfg",ConfigsDir)
			if(file_exists(FileLocation))
			{
				write_file(FileLocation,"// AUTO WRITTEN BY USURF")
				write_file(FileLocation,"^n^nhumans_join_team any")
				write_file(FileLocation,"sv_airaccelerate 10")
			}
		}
	}
}

public client_disconnect(id)
{
	g_Origin[id][0] = 0.0
	
	g_Timing[id] = 0
	g_Time[id] = 0
	g_Timer[id] = 0
	g_LastSave[id] = 0.0
	
	g_Origin[id] = Float:{0.0,0.0,0.0}
}

public TeamHandle(id,Item)
{
	// to prevent memory corruption
	new Key = Item
	
	new Arg[2]
	read_argv(0,Arg,1)
	
	if(Arg[0] == 'j')
	{
		read_argv(1,Arg,1)
		Key = str_to_num(Arg) - 1
	}
	
	new TeamStack = get_pcvar_num(p_TeamStack)
	if(Key != 5 && Key != TeamStack - 1 && (TeamStack == _:CS_TEAM_T || TeamStack == _:CS_TEAM_CT))
	{
		client_print(id,print_center,"You must join the %s team.",TeamStack == 1 ? "Terrorist" : "Counter-Terrorist")
		engclient_cmd(id,"chooseteam")
		
		return PLUGIN_HANDLED
	}
	
	return PLUGIN_CONTINUE
}

public CmdTimer(id)
{
	if(!get_pcvar_num(p_Timer) || !get_pcvar_num(p_On) || !g_SurfMap)
		return
	
	new Len = format(g_Menu,sizeof g_Menu - 1,"uSurf Timer Menu^n^n1. %s Timer^n",g_Timer[id] ? "Disable" : "Enable")
	if(g_Timer[id])
		Len += format(g_Menu[Len],sizeof g_Menu - Len - 1,"2. %s Timing^n3. Reset Timer^n",g_Timing[id] ? "Stop" : "Begin")
	format(g_Menu[Len],sizeof g_Menu - Len - 1,"^n0. Exit")
	
	new Keys = g_Timer[id] ? MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_0 : MENU_KEY_1|MENU_KEY_0
		
	show_menu(id,Keys,g_Menu,-1,g_TimerMenu)
}

public TimerHandle(id,Key)
{
	switch(Key)
	{
		case 0 :
		{
			g_Timer[id] = !g_Timer[id]
			if(!g_Timer[id])
				ShowSyncHudMsg(id,g_HudObject,"")
		}
		case 1 :
		{
			g_Timing[id] = !g_Timing[id]
			g_Timing[id] ? set_task(g_TimerInterval,"Timer",id + g_TimerTask) : remove_task(id + g_TimerTask)
		}
		case 2 :
			g_Time[id] = 0
	}
	
	if(Key != 9)
		CmdTimer(id)
}

public Timer(id)
{
	g_Time[id - g_TimerTask] += floatround(g_TimerInterval)
	
	set_task(g_TimerInterval,"Timer",id)
}

public CmdSurfhelp(id)
{
	if(!get_pcvar_num(p_On) || !get_pcvar_num(p_Help) || !g_SurfMap)
		return PLUGIN_CONTINUE
	
	menu_display(id,g_SurfHelpMenu,0)		
	
	return PLUGIN_CONTINUE
}

public SurfHelpHandle(id,Menu,Key)
{
	static MOTD[4096], Title[16],Pos
	
	switch(Key)
	{
		case 0 :
		{
			copy(Title,15,"Surf Help")
			
			Pos = format(MOTD,sizeof MOTD - 1,"<style type=^"text/css^"><!--.sty1 {color: #CC9900;font-family: Arial, Helvetica, sans-serif;}--></style><body bgcolor=^"#000000^"><span class=^"sty1^"><strong><div align=^"center^">Surf Discipline</div></strong></span></p><table width=^"100%%^" border=^"1^"><table width=^"100%%^" border=^"1^">")
			Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td><span class=^"sty1^">To surf, jump or walk onto one of the curved walls (hereby referted to as 'ramps'). Then simply hold strafe (Default are the A and D keys). This will cause you to glide along the walls, or &quot;surf&quot;. </span></td></tr>")
			Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td><span class=^"sty1^">While surfing, never press up, down, or crouch; pressing those will cause you to slide off the wall and fall, which, in most surf maps, will cause you to get sent back to your spawn. </span></td></tr>")
			Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td><span class=^"sty1^">To change direction (in order to make it to the next ramp), press the button for the direction you wish to go before flying off of your current ramp.</span></td></tr>")
			Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td><span class=^"sty1^">Surfing takes pratice, so don't be discouraged if you don't get it right the first time.</span></td></tr>")
			Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"</table><p align=^"center^"><span class=^"sty1^"><strong>Powered by uSurf</strong></span></p></body></html>")
		}
		case 1 :
		{
			copy(Title,15,"uSurf Commands")
			
			Pos = format(MOTD,sizeof MOTD - 1,"<style type=^"text/css^"><!--.sty1 {color: #CC9900;font-family: Arial, Helvetica, sans-serif;}--></style>")
			Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<body bgcolor=^"#000000^"><strong><span class=^"sty1^"><div align=^"center^"><p>uSurf Commands</strong></p></span></div><table width=^"100%%^" border=^"1^">")
			Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td><span class=^"sty1^">say /surfhelp</span></td><td><span class=^"sty1^">Brings up this window.</span>/td></tr>")
			if(get_pcvar_num(p_Respawn))
				Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td><span class=^"sty1^">say /respawn</span></td><td><span class=^"sty1^">Sends you back to your spawn, or, in the event of a malfunction, allows you to respawn yourself manually.</span></td></tr>")
			if(get_pcvar_num(p_Cp))
			{
				new Cvar = get_pcvar_num(p_CpDelay)
				Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td><span class=^"sty1^">say /checkpoint</span></td><td><span class=^"sty1^">Saves a checkpoint at your current location. Use &quot;say /gocheck&quot; to go to it. You can save or load a checkpoint every %d seconds.</span></td></tr>",Cvar)
				Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td><span class=^"sty1^">say /gocheck</span></td><td><span class=^"sty1^">Allows you to go to one of your saved checkpoints. You can save or load a checkpoint every %d seconds.</span></td></tr>",Cvar)
			}
			if(get_pcvar_num(p_Timer))
				Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td><span class=^"sty1^">say /timer</span></td><td><span class=^"sty1^">Brings up a menu with various timer options, allowing you to time various events.</span></td></tr>")
			Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"</table><p align=^"center^"><span class=^"sty1^"><strong>Powered by uSurf</strong></span></p></body></html>")
		}
		case 2 :
		{
			copy(Title,15,"About uSurf")
			
			Pos = format(MOTD,sizeof MOTD - 1,"<style type=^"text/css^"><!--.sty1 {color: #CC9900;font-family: Arial, Helvetica, sans-serif;}--></style>")
			Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<body bgcolor=^"#000000^"><strong><span class=^"sty1^"><div align=^"center^">About uSurf</span></strong></div>")
			Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<span class=^"sty1^"><p>This plugin is designed to manage surf servers. It is the successor to Surf Management / Tools.</p>")
			Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<p>For more information or to download this plugin, go <a href=^"http://forums.alliedmods.net/showthread.php?t=16418^">here</a> (<a href=^"http://forums.alliedmods.net/showthread.php?t=16418^">http://forums.alliedmods.net/showthread.php?t=16418</a>)</p>")
			Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"</span><p align=^"center^"><span class=^"sty1^"><strong>Powered by uSurf</strong></span></p></body></html")
		}
		default :
			return
	}
	
	show_motd(id,MOTD,Title)
	menu_display(id,g_SurfHelpMenu,0)
}

public ShowSurfHelp()
{	
	if(g_SurfMap && get_pcvar_num(p_Help) && get_pcvar_num(p_On))
		client_print(0,print_chat,"[E-LIKE] Need help surfing? Say /surfhelp")
		
	set_task(get_pcvar_float(p_HelpInterval),"ShowSurfHelp")
}

public CmdCheckpoint(id)
{
	if(!get_pcvar_num(p_Cp) || !get_pcvar_num(p_On) || !g_SurfMap)
		return PLUGIN_HANDLED
	
	new Float:Time,Float:Delay = get_pcvar_float(p_CpDelay)
	global_get(glb_time,Time)
	
	new Float:TimePassed = Time - g_LastSave[id] 
	
	if(TimePassed < Delay)
	{
		client_print(id,print_chat,"[E-LIKE] You must wait %d seconds before saving again.",floatround(Delay - TimePassed))
		return PLUGIN_HANDLED
	}
	
	pev(id,pev_origin,g_Origin[id])
	if(pev(id,pev_button) & IN_DUCK)
		g_Origin[id][2] += 24.0
	pev(id,pev_velocity,g_Velocity[id])
	pev(id,pev_angles,g_Angles[id])
	g_LastSave[id] = Time
	
	client_print(id,print_chat,"[E-LIKE] You have saved this checkpoint.")
	
	return PLUGIN_HANDLED
}

public CmdGoCheck(id)
{
	if(!get_pcvar_num(p_Cp) || !get_pcvar_num(p_On) || !g_SurfMap)
		return PLUGIN_HANDLED
	
	if(!g_Origin[id][0])
	{
		client_print(id,print_chat,"[E-LIKE] You have not saved a checkpoint.")
		return PLUGIN_HANDLED
	}
	
	new Float:Time,Float:Delay = get_pcvar_float(p_CpDelay)
	global_get(glb_time,Time)
	
	new Float:TimePassed = Time - g_LastSave[id] 
	
	if(TimePassed < Delay)
	{
		client_print(id,print_chat,"[E-LIKE] You must wait %d seconds before going to a checkpoint.",floatround(Delay - TimePassed))
		return PLUGIN_HANDLED
	}
	
	engfunc(EngFunc_SetOrigin,id,g_Origin[id])
	set_pev(id,pev_velocity,g_Velocity[id])
	set_pev(id,pev_fixangle,1)
	set_pev(id,pev_angles,g_Angles[id])
	g_LastSave[id] = Time
	
	client_print(id,print_chat,"[E-LIKE] You have gone to your last checkpoint.")
	
	return PLUGIN_HANDLED
}

public CmdRespawn(id)
{	
        is_user_connected(id)

	new CsTeams:Team = cs_get_user_team(id)
	
	if(!get_pcvar_num(p_On))
		return client_print(id,print_chat,"[E-LIKE] Sorry, the surf plugin is currently disabled.")
	else if(!get_pcvar_num(p_Respawn))
		return client_print(id,print_chat,"[E-LIKE] Respawning is currently disabled.")
	else if(!g_SurfMap)
		return client_print(id,print_chat,"[E-LIKE] This is not a surf map.")
	
	if(Team == CS_TEAM_T || Team == CS_TEAM_CT)
		set_task(0.5,"Spawn",id)
	else
		return client_print(id,print_chat,"[E-LIKE] You must be on a team to respawn.")
	
	client_print(id,print_chat,is_user_alive(id) ? "[E-LIKE] You have been sent back to your spawn." : "[E-LIKE] You have been respawned.")
		
	return PLUGIN_CONTINUE
}

public StandardTimer()
{

	if(!get_pcvar_num(p_On) || !g_SurfMap)
		return
	
	static Players[32],Playersnum,Player,CsTeams:Team
	
	new TeamStack = get_pcvar_num(p_TeamStack)
	if(TeamStack == _:CS_TEAM_CT || TeamStack == _:CS_TEAM_T)
	{
		get_players(Players,Playersnum)
		
		for(new Count;Count < Playersnum;Count++)
		{
			Player = Players[Count]
			
			Team = cs_get_user_team(Player)
			if(_:Team != TeamStack && (Team == CS_TEAM_T || Team == CS_TEAM_CT))
				cs_set_user_team(Player,CsTeams:TeamStack,CsInternalModel:g_Models[TeamStack - 1][random_num(0,3)])
		}
	}
		
	if(!get_pcvar_num(p_Respawn))
		return
	
	get_players(Players,Playersnum,"b")
	
	for(new Count = 0;Count < Playersnum;Count++)
	{
		Player = Players[Count]
		Team = cs_get_user_team(Player)
		
		if(Team == CS_TEAM_T || Team == CS_TEAM_CT)
			Spawn(Player)
	}
}

public EventDeathMsg()	
{
	new id = read_data(2)
	set_task(0.5,"Spawn",id)
	
	global_get(glb_time,g_LastSave[id])
	g_LastSave[id] -= get_pcvar_num(p_CpDelay)
}

public Spawn(id)
{
        for(new id=1;id<=g_Maxplayers;id++) {

	new CsTeams:Team = cs_get_user_team(id)

	if(is_user_connected(id) && (Team == CS_TEAM_T || Team == CS_TEAM_CT) && get_pcvar_num(p_On) && get_pcvar_num(p_Respawn) && g_SurfMap)
	{
		dllfunc(DLLFunc_Spawn,id)
		set_task(0.2,"GiveSuit",id)
		set_task(0.3,"GiveItems",id)
	}
   }
}

public GiveSuit(id)
	fm_give_item(id,"item_suit")

public GiveItems(id)
{
	fm_give_item(id,"weapon_knife")
	fm_give_item(id,"weapon_scout")
}

// no, VEN did not write this, I did (although I found out later that he wrote something like it)
fm_give_item(id,Item[])
{
	if(containi(Item,"item_") == -1 && containi(Item,"weapon_") == -1 && containi(Item,"ammo_") == -1 && containi(Item,"tf_weapon_") == -1)
		return
	
	new Ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, Item)),Float:vOrigin[3]
	
	if(!pev_valid(Ent))
		return
		
	pev(id,pev_origin,vOrigin)
	set_pev(Ent,pev_origin,vOrigin)
	
	set_pev(Ent,pev_spawnflags,pev(Ent,pev_spawnflags)|(1<<30))
	
	dllfunc(DLLFunc_Spawn,Ent)
	
	new Solid = pev(Ent,pev_solid)
	
	dllfunc(DLLFunc_Touch,Ent,id)
	
	if(pev(Ent,pev_solid) == Solid)
		engfunc(EngFunc_RemoveEntity,Ent)
}

CheckButton()
	if(get_pcvar_num(p_RemoveButton) && get_pcvar_num(p_On) && g_SurfMap)
	{
		new Ent,Value[] = "classname",ClassName[] = "env_explosion"
		while((Ent = engfunc(EngFunc_FindEntityByString,Ent,Value,ClassName)) != 0)
			if(pev_valid(Ent))
				set_pev(Ent,pev_flags,pev(Ent,pev_flags)|FL_KILLME)
	}

public ForwardPlayerPreThink(id)
{
	if(!is_user_alive(id) || !get_pcvar_num(p_On) || !g_SurfMap)
		return
		
	new NoGuns = get_pcvar_num(p_NoGuns)
	
	if(NoGuns == 1)
	{
		new SpawnDistance = get_pcvar_num(p_SpawnDist)
		
		static Float:vOrigin[3]
		pev(id,pev_origin,vOrigin)
	
		new DeathMatch = engfunc(EngFunc_FindEntityByString,-1,"classname","info_player_deathmatch")
		new PlayerStart = engfunc(EngFunc_FindEntityByString,-1,"classname","info_player_start")
		
		if(DeathMatch && PlayerStart)
		{
			static Float:vDeathMatch_Origin[3]
			pev(DeathMatch,pev_origin,vDeathMatch_Origin)
	
			static Float:vPlayerStart_Origin[3]
			pev(PlayerStart,pev_origin,vPlayerStart_Origin)
		
			new Float:DeathMatch_Distance = get_distance_f(vOrigin,vDeathMatch_Origin)
			new Float:PlayerStart_Distance = get_distance_f(vOrigin,vPlayerStart_Origin)
		
			new Clip,Ammo,Weapon = get_user_weapon(id,Clip,Ammo)
			
			if(DeathMatch_Distance < SpawnDistance || PlayerStart_Distance < SpawnDistance)
			{
				if(Weapon != CSW_KNIFE && Weapon != CSW_C4 && Weapon != CSW_HEGRENADE && Weapon != CSW_FLASHBANG && Weapon != CSW_SMOKEGRENADE)
					client_cmd(id,"drop")
			} // Argh, stupid thing doesn't understand this if I don't add the brackets.
			else if(DeathMatch_Distance > SpawnDistance || PlayerStart_Distance > SpawnDistance)
				if(!user_has_weapon(id,CSW_SCOUT))
					fm_give_item(id,"weapon_scout")
		}
	}
	else if(NoGuns == 2)
	{		
		new Clip, Ammo, Weapon = get_user_weapon(id,Clip,Ammo)
			
		if(Weapon != CSW_KNIFE && Weapon != CSW_C4 && Weapon != CSW_HEGRENADE && Weapon != CSW_FLASHBANG && Weapon != CSW_SMOKEGRENADE)
			client_cmd(id,"drop")
	}
	else if(NoGuns == 3)
	{
		new Clip, Ammo, Weapon = get_user_weapon(id,Clip,Ammo)
			
		if(Weapon != CSW_KNIFE && Weapon != CSW_C4)
		{
			fm_strip_user_weapons(id)
			fm_give_item(id,"weapon_knife")
		}
	}
	
	if(get_pcvar_num(p_BunnyHop))
	{
		set_pev(id,pev_fuser2,0.0)
		
		if(get_pcvar_num(p_BunnyHopAutoJump) && pev(id,pev_button) & IN_JUMP)
		{
			new Flags = pev(id,pev_flags)
			if(!(Flags & FL_WATERJUMP) && pev(id,pev_waterlevel) < 2 && Flags & FL_ONGROUND)
			{
				new Float:Velocity[3]
				pev(id,pev_velocity,Velocity)
				Velocity[2] += 250.0
				set_pev(id,pev_velocity,Velocity)

				set_pev(id,pev_gaitsequence,6)
			}
		}
	}
	
	if(get_pcvar_num(p_Timer) && g_Timer[id])
	{
		static Time[33]
		
		set_hudmessage(get_pcvar_num(p_R),get_pcvar_num(p_G),get_pcvar_num(p_B),get_pcvar_float(p_X),get_pcvar_float(p_Y),0,0.0,6.0,0.0,0.0,-1)
		get_time_length(id,g_Time[id],timeunit_seconds,Time,32)
		ShowSyncHudMsg(id,g_HudObject,"Timer: %s",Time)
	}
}

public ForwardSetModel(id,Model[])
{	
	if(!pev_valid(id) || !g_SurfMap || !get_pcvar_num(p_On) || !strlen(Model) || !get_pcvar_num(p_RemoveDropped))
		return
	
	static ClassName[33]
	pev(id,pev_classname,ClassName,32)
	
	if(equali(ClassName,"weaponbox"))	
		set_task(0.1,"RemoveGun",id)
}

public RemoveGun(id)	
	if(pev_valid(id))
		engfunc(EngFunc_RemoveEntity,id)

public ForwardTouch(Ptr,Ptd)
{
	if(!pev_valid(Ptr) || !pev_valid(Ptd) || !g_SurfMap || !get_pcvar_num(p_On) || !get_pcvar_num(p_Respawn))
		return FMRES_IGNORED
	
	new id
	if(is_user_alive(Ptr))
		id = Ptr
	else if(is_user_alive(Ptd))
		id = Ptd
	
	if(!id)
		return FMRES_IGNORED
		
	static Classname[33]
	pev(id == Ptr ? Ptd : Ptr,pev_classname,Classname,32)
	if(equali(Classname,"trigger_hurt"))
	{
		Spawn(id)
		return FMRES_SUPERCEDE
	}
	
	return FMRES_IGNORED
}

public ForwardThink(Ent)
{
	if(Ent != g_SemiclipThinker || !g_SurfMap)
		return
	
	if(get_pcvar_num(p_Semiclip) && get_pcvar_num(p_On))
	{
		static Players[32],Playersnum,Player
		get_players(Players,Playersnum)
		
		for(new Count;Count < Playersnum;Count++)
		{			
			Player = Players[Count]
			if(!is_user_alive(Player))
				continue
			
			set_pev(Player,pev_solid,IsColliding(Player) ? SOLID_NOT : SOLID_BBOX)
		}
	}
	
	new Float:Time
	global_get(glb_time,Time)
	set_pev(Ent,pev_nextthink,Time + 0.01)
}

public ForwardTraceLine(Float:v1[3],Float:v2[3],EntToSkip,NoMonsters,TR)
{
	if(!get_pcvar_num(p_Godmode) || !g_SurfMap || !get_pcvar_num(p_On))
		return FMRES_IGNORED
	
	new id = get_tr(TR_pHit)
	if(!is_user_alive(id))
		return FMRES_IGNORED
		
	new Attacker
	while((Attacker = engfunc(EngFunc_FindEntityInSphere,Attacker,v1,10.0)) != 0)
		if(Attacker < 33 && Attacker > 0)
			break
	
	if(!is_user_alive(Attacker))
		return FMRES_IGNORED
	
	new Button = pev(Attacker,pev_button)
	if(!(Button & IN_ATTACK) && !(Button & IN_ATTACK2))
		return FMRES_IGNORED
	
	set_tr(TR_flFraction,1.0)
	
	return FMRES_IGNORED
}

public ForwardTraceHull(Float:v1[3],Float:v2[3],NoMonsters,Hull,EntToSkip,TR)
{
	if(!g_SurfMap || !get_pcvar_num(p_On) || !get_pcvar_num(p_Godmode))
		return FMRES_IGNORED
	
	new Button = pev(EntToSkip,pev_button)
	if(!(Button & IN_ATTACK) && !(Button & IN_ATTACK2))
		return FMRES_IGNORED
	
	set_tr(TR_flFraction,1.0)
	
	return FMRES_IGNORED
}

// thanks to VEN for this stock from Fakemeta Utilities
fm_strip_user_weapons(index) {
	new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "player_weaponstrip"))
	if (!pev_valid(ent))
		return 0

	dllfunc(DLLFunc_Spawn, ent)
	dllfunc(DLLFunc_Use, ent, index)
	
	engfunc(EngFunc_RemoveEntity, ent)

	return 1
}

IsColliding(id)
{
	if(pev(id,pev_flags) & FL_ONGROUND || pev(id,pev_button) & IN_JUMP)
		return false
	
	new Ent,Float:Origin[3]
	pev(id,pev_origin,Origin)
		
	while((Ent = engfunc(EngFunc_FindEntityInSphere,Ent,Origin,36.0)) != 0)
		if(Ent > 0 && Ent <= 32 && is_user_alive(Ent) && Ent != id)
			return true
	
	return false
}
can someone help me please ?

edit: forgot to say that this is for a Counter Strike 1.6 Server

Last edited by Hunter4all; 12-05-2010 at 01:46.
Hunter4all is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 11:17.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode