I understand that asking for scripts isn't a great thing to do generally, but I'm pretty stuck here and was wondering if someone could help.
I was wondering if someone could piece together a snippet that would make all players on the server, regardless of their "team" to no-collide with each-other.
Wrong section lel.
[highlight](User was banned for this post ("Why reply/this is the correct section" - NiandraLades))[/highlight]
Collision can be tricky.. Don't change it frequently as it'll cause vehicles to fall through the world, and other issues.
If you keep the function static, then it is fine.
[code]//
// Needs to be shared for prediction ( so it isn't like walking through water )
//
hook.Add( "ShouldCollide", "UpdateCollisions", function( _e1, _e2 )
// If both ents are valid and both are players then don't collide - Only return non-nil in hook for the behavior we want to change
if ( IsValid( _e1 ) && IsValid( _e2 ) && _e1:IsPlayer( ) && _e2:IsPlayer( ) ) then
return false;
end
end );
//
// Client has no business going further
//
if ( CLIENT ) then return; end
//
// Should only need to be done once on PlayerInitialSpawn
//
hook.Add( "PlayerSpawn", "UpdateCollisions", function( _p )
_p:EnableCustomCollisions( true );
_p:SetCustomCollisionCheck( true );
end );[/code]
[QUOTE=Acecool;46374290]Collision can be tricky.. Don't change it frequently as it'll cause vehicles to fall through the world, and other issues.
If you keep the function static, then it is fine.
[code]//
// Needs to be shared for prediction ( so it isn't like walking through water )
//
hook.Add( "ShouldCollide", "UpdateCollisions", function( _e1, _e2 )
// If both ents are valid and both are players then don't collide - Only return non-nil in hook for the behavior we want to change
if ( IsValid( _e1 ) && IsValid( _e2 ) && _e1:IsPlayer( ) && _e2:IsPlayer( ) ) then
return false;
end
end );
//
// Client has no business going further
//
if ( CLIENT ) then return; end
//
// Should only need to be done once on PlayerInitialSpawn
//
hook.Add( "PlayerSpawn", "UpdateCollisions", function( _p )
_p:EnableCustomCollisions( true );
_p:SetCustomCollisionCheck( true );
end );[/code][/QUOTE]
This is perfect! One little issue though, admins can no longer physgun players if needed. Any way of fixing that or is it a trade-off?
Players are also unable to inflict any damage onto one-another.
There should be no issue with that... Make sure the Physgun pickup hook returns true for admins targeting players.
[QUOTE=Acecool;46375784]There should be no issue with that... Make sure the Physgun pickup hook returns true for admins targeting players.[/QUOTE]
I'm thinking that somehow this is effecting ULX's player physgun hook. Not entirely sure how though. As for players not receiving damage from one-another, no idea how that's happening either. Bullets pass straight through players and don't even register as hits. Probably also a ULX conflict.
ULX rewrites the hook system to give itself priority.. probably because a lot of addons return non-nil values in hooks for anything other than their intended circumstance.. but they shouldn't have ( both ulx and any addon maker that returns non-nil in a hook.Add for any other behavior than the intended target / purpose of the hook )..
ULX causes a lot of issues because of their system, and other addons can cause issues too... What addons, other than ulx, are you running?
[QUOTE=Acecool;46376507]ULX rewrites the hook system to give itself priority.. probably because a lot of addons return non-nil values in hooks for anything other than their intended circumstance.. but they shouldn't have ( both ulx and any addon maker that returns non-nil in a hook.Add for any other behavior than the intended target / purpose of the hook )..
ULX causes a lot of issues because of their system, and other addons can cause issues too... What addons, other than ulx, are you running?[/QUOTE]
ULX, Ulib, gCompute & all its prerequisites, custom thirdperson by CapsAdmin. That's it.
[B]Edit:[/B]
Here is ULX's player pickup stuff, if it helps in any way.
[code]
--------------------
-- Hooks --
--------------------
-- This cvar also exists in DarkRP (thanks, FPtje)
local cl_cvar_pickup = "cl_pickupplayers"
if CLIENT then CreateClientConVar( cl_cvar_pickup, "1", true, true ) end
local function playerPickup( ply, ent )
local access, tag = ULib.ucl.query( ply, "ulx physgunplayer" )
if ent:GetClass() == "player" and ULib.isSandbox() and access and not ent.NoNoclip and not ent.frozen and ply:GetInfoNum( cl_cvar_pickup, 1 ) == 1 then
-- Extra restrictions! UCL wasn't designed to handle this sort of thing so we're putting it in by hand...
local restrictions = {}
ULib.cmds.PlayerArg.processRestrictions( restrictions, ply, {}, tag and ULib.splitArgs( tag )[ 1 ] )
if restrictions.restrictedTargets == false or (restrictions.restrictedTargets and not table.HasValue( restrictions.restrictedTargets, ent )) then
return
end
ent:SetMoveType( MOVETYPE_NONE ) -- So they don't bounce
return true
end
end
hook.Add( "PhysgunPickup", "ulxPlayerPickup", playerPickup, -5 ) -- Allow admins to move players. Call before the prop protection hook.
if SERVER then ULib.ucl.registerAccess( "ulx physgunplayer", ULib.ACCESS_ADMIN, "Ability to physgun other players", "Other" ) end
local function playerDrop( ply, ent )
if ent:GetClass() == "player" then
ent:SetMoveType( MOVETYPE_WALK )
end
end
hook.Add( "PhysgunDrop", "ulxPlayerDrop", playerDrop )
[/code]
Still haven't been able to work this one out. Suggestions anybody?
Sorry, you need to Log In to post a reply to this thread.