All pastes #364976 Raw Edit

Stuff

public text v1 · immutable
#364976 ·published 2007-02-20 15:09 UTC
rendered paste body


function toolnotify(str)

local allplayers=player.GetAll()

	for i=1,table.getn(allplayers) do

	if allplayers[i]:IsSuperAdmin() and allplayers[i]:GetTable().AdminDebug==true then

	allplayers[i]:PrintMessage(HUD_PRINTCONSOLE,"-----> TOOLGUN: "..str.."\n") 

	end

	end

end



function LimitReachedProcess( ply, str )

	if ply:IsUserGroup("superadmin") then return true end

	if string.find("ms_",str) then return true end

	local c = server_settings.Int( "sbox_max"..str, 0 )

	if ( ply:GetCount( str ) < c || c < 0 ) then return true end 

	ply:LimitHit( str ) 

	return false

end



function GM:PlayerSpawnProp( ply, model )

	return LimitReachedProcess( ply, "props" )

end

function GM:PlayerSpawnRagdoll( ply, model )

	return LimitReachedProcess( ply, "ragdolls" )

end

function GM:PlayerSpawnEffect( ply, model )

	return LimitReachedProcess( ply, "effects" )

end

function GM:PlayerSpawnVehicle( ply )

	return LimitReachedProcess( ply, "vehicles" )

end

function GM:PlayerSpawnSENT( ply, name )

	return LimitReachedProcess( ply, "sents" )	

end

function GM:PlayerSpawnNPC( ply, npc_type, equipment )

	return LimitReachedProcess( ply, "npcs" )	

end

function GM:PlayerNoClip( pl, on )

	if pl:IsUserGroup("superadmin") or pl:IsUserGroup("admin") or pl:IsUserGroup("trusted") then

	return true

	else

	return false

	end

end



function SpawnedProp( userid, model, propid ) 

str="-> USER "..userid:GetName().." SPAWNED "..model

local allplayers=player.GetAll()

	for i=1,table.getn(allplayers) do

	if allplayers[i]:IsSuperAdmin() and allplayers[i]:GetTable().AdminDebug==true then

	allplayers[i]:PrintMessage(HUD_PRINTCONSOLE,"-----> PROP: "..str.."\n") 

	end

	end

end

hook.Add( "PlayerSpawnedProp", "msproplog", SpawnedProp ); 



/*---------------------------------------------------------

   Name: gamemode:CanConstrain( ply, trace, mode )

   Return true if the player is allowed to do this constrain

---------------------------------------------------------*/

function GM:CanConstrain( ply, trace, mode )



	if (ply:IsUserGroup("superadmin")) then return true end

	if string.find(string.lower(mode),"proximity") and not ply:IsUserGroup("superadmin") then return false end



	if ( mode == "rope" and trace.Entity:GetClass()=="worldspawn") then

		return false

	end



	-- Not allowed to constrain their fellow players

	if (trace.Entity:IsValid() && trace.Entity:IsPlayer() or trace.Entity:GetClass()=="worldspawn") then

		return false

	end

	

	-- Give the entity a chance to decide

	if ( trace.Entity:GetTable().CanConstrain ) then

		return trace.Entity:GetTable():CanConstrain( ply, trace, mode )

	end

	

	--Msg( "Can Constrain "..mode.."\n" )



	if trace.Entity:GetTable().owner and not trace.Entity:GetTable().owner==ply:EntIndex() then return false end

	Msg("-> USER "..ply:Name().." TOOLMODE "..mode.." ENT "..trace.Entity:GetClass().."\n")

	xstring="-> USER "..ply:Name().." TOOLMODE "..mode.." ENT "..trace.Entity:GetClass()

	toolnotify(xstring)

	return true

	

end



/*---------------------------------------------------------

   Name: gamemode:CanConstruct( ply, trace, mode )

   Return true if the player is allowed to do this construction

---------------------------------------------------------*/

function GM:CanConstruct( ply, trace, mode )



	if ( mode == "remover" && !trace.Entity:IsValid()) then

		return false

	end

	

	if ( mode == "rope" and trace.Entity:GetClass()=="worldspawn") then

		return false

	end

	

	-- The jeep spazzes out when applying something

	-- todo: Find out what it's reacting badly to and change it in _physprops

	if ( mode == "physprop" && trace.Entity:IsValid() && trace.Entity:GetClass() == "prop_vehicle_jeep" ) then

		return false

	end

	

	if (ply:IsUserGroup("superadmin")) then return true end



	-- Give the entity a chance to decide

	if ( trace.Entity:GetTable().CanConstruct ) then

		return trace.Entity:GetTable():CanConstruct( ply, trace, mode )

	end



		if string.find(string.lower(mode),"proximity") and not ply:IsUserGroup("superadmin") then return false end



	if trace.Entity:GetTable().owner and not trace.Entity:GetTable().owner==ply:EntIndex() then return false end

	xstring="-> USER "..ply:Name().." TOOLMODE "..mode.." ENT "..trace.Entity:GetClass()

	toolnotify(xstring)

	return true

	

end



/*---------------------------------------------------------

   Name: gamemode:CanPose( ply, trace, mode )

   Return true if the player is allowed to do this constrain

---------------------------------------------------------*/

function GM:CanPose( ply, trace, mode )

	return true

end



/*---------------------------------------------------------

   Name: gamemode:CanRender( ply, trace, mode )

   Return true if the player is allowed to do this constrain

---------------------------------------------------------*/

function GM:CanRender( ply, trace, mode )

	if SERVER then

	if (ply:IsUserGroup("superadmin")) then return true end

	end

	if trace.Entity:GetTable().owner and not trace.Entity:GetTable().owner==ply:EntIndex() then return false end

	return true

end



/*---------------------------------------------------------

   Name: gamemode:CanTool( ply, trace, mode )

   Return true if the player is allowed to use this tool

---------------------------------------------------------*/

function GM:CanTool( ply, trace, mode )



	-- The jeep spazzes out when applying something

	-- todo: Find out what it's reacting badly to and change it in _physprops

	if ( mode == "physprop" && trace.Entity:IsValid() && trace.Entity:GetClass() == "prop_vehicle_jeep" ) then

		return false

	end

	



	if (ply:IsUserGroup("superadmin")) then return true end



	if string.find(string.lower(mode),"proximity") and not ply:IsUserGroup("superadmin") then return false end



	if ( mode == "rope" and trace.Entity:GetClass()=="worldspawn") then

		return false

	end



	if (mode=="colour" and trace.Entity:GetClass()=="ms_radio") then

		return false

	end

	if (mode=="material" and trace.Entity:GetClass()=="ms_radio") then

		return false

	end

	if (mode=="colour" and trace.Entity:GetClass()=="ms_radio_bug") then

		return false

	end

	if (mode=="material" and trace.Entity:GetClass()=="ms_radio_bug") then

		return false

	end

	

	if (trace.Entity:GetClass()=="func_door" or

	trace.Entity:GetClass()=="func_door_rotating" or

	trace.Entity:GetClass()=="prop_door_rotating" or

	trace.Entity:GetClass()=="func_breakable_surf" or

	trace.Entity:GetClass()=="func_button" or

	trace.Entity:GetClass()=="func_physbox" or

	trace.Entity:GetClass()=="func_tracktrain" or

	trace.Entity:GetClass()=="func_wall_toggle" ) then

	return false

	end

	



	-- Give the entity a chance to decide

	if ( trace.Entity:GetTable().CanTool ) then

		return trace.Entity:GetTable():CanTool( ply, trace, mode )

	end



	if trace.Entity:GetTable().owner and not trace.Entity:GetTable().owner==ply:EntIndex() then return false end

	xstring="-> USER "..ply:Name().." TOOLMODE "..mode.." ENT "..trace.Entity:GetClass()

	toolnotify(xstring)

	return true

	

end





/*---------------------------------------------------------

   Name: gamemode:GravGunPunt( )

   Desc: We're about to punt an entity (primary fire).

		 Return true if we're allowed to.

---------------------------------------------------------*/

function GM:GravGunPunt( ply, ent )



	if ( ent:IsValid() && ent:GetTable().GravGunPunt ) then

		return ent:GetTable():GravGunPunt( ply )

	end



	return self.BaseClass:GravGunPunt( ply, ent )

	

end



/*---------------------------------------------------------

   Name: gamemode:GravGunPickupAllowed( )

   Desc: Return true if we're allowed to pickup entity

---------------------------------------------------------*/

function GM:GravGunPickupAllowed( ply, ent )



	if ( ent:IsValid() && ent:GetTable().GravGunPickupAllowed ) then

		return ent:GetTable():GravGunPickupAllowed( ply )

	end



	return self.BaseClass:GravGunPickupAllowed( ply, ent )

	

end



/*---------------------------------------------------------

   Name: gamemode:PhysgunPickup( )

   Desc: Return true if player can pickup entity

---------------------------------------------------------*/

function GM:PhysgunPickup( ply, ent )



	if (ply:IsUserGroup("superadmin")) and ent:GetClass()=="player" then return true end



	if ( ent:IsValid() && ent:GetTable().PhysgunPickup ) then

		return ent:GetTable():PhysgunPickup( ply )

	end

	if (ent:GetClass()=="func_door" or

	ent:GetClass()=="func_door_rotating" or

	ent:GetClass()=="prop_door_rotating" or

	ent:GetClass()=="func_button" or

	ent:GetClass()=="func_breakable_surf" or

	ent:GetClass()=="func_wall_toggle" ) then

	return false

	end



	return self.BaseClass:PhysgunPickup( ply, ent )

	

end