Ulysses
General => Developers Corner => Topic started by: imSEnsE on May 05, 2018, 11:27:20 AM
-
Hey! I have been working on this add-on, so if i pick up a player with my physgun i can freeze them.. I'm done with that.. But I want to make a ULX command to toggle it.
But I am kinda stuck. How do i do this?
-
Though we're more than happy to help people code, you do realize some of the ability you speak of is included in ULX, correct?
https://github.com/TeamUlysses/ulx/blob/ecd205e771bdbe7be6a09dea7567ac33eca1fc12/lua/ulx/modules/sh/util.lua#L455
Admins and Players with "ulx physgunplayer" can use physgun other players and freeze them (if IsSandbox according to our checks)
Now, on to your own project.
Where exactly are you getting stuck?
What exactly are you trying to toggle?
Are you trying to toggle the ability of the physgun to freeze a player or not?
Or are you trying to toggle the person(s) freeze state after they've been frozen?
-
I have made the add-on, but i just have an new update idea which i am little confused on... I wan't to make a command that toggles the add-on, that i've made.
-
https://github.com/TeamUlysses/ulx/blob/ecd205e771bdbe7be6a09dea7567ac33eca1fc12/lua/ulx/modules/sh/util.lua#L171
Good example of a toggle. For us, it allows noclip for a player, or disables.
In the example code, it passes a single player, or multiple, in a table #target_plys.
PlayersArg
You could do single only with PlayerArg.
-
I see how this might work. In the moment of typing this I am opening Garry's Mod.
-
I see how this might work. In the moment of typing this, I am opening Garry's Mod.
Nope... Didn't work... Was some random error, idk what it said completely but I saw some "Ulib.cmds.Translate--something" idk.
-
Without seeing your code and the exact error, we're throwing pillows at elephants to try to fix a leaky pipe.
-
Here's the code, and the Error was something about TranslateCmds I think.
--[[Made By SEnsE/Nismo/A. Nismo]]--
if CLIENT then return end; if not SERVER then return end
--[[-----------------Script Here--------Don't Touch!-----------------]]--
hook.Remove( "PhysgunDrop", "ulxPlayerDrop")
local function isPlayer(ent) return (IsValid(ent) && ent.GetClass && ent:GetClass() == "player") end
hook.Add("PhysgunPickup", "_ply_physgungrab", function(ply, targ)
if IsValid(ply) and isPlayer(targ) then
if ply:query("ulx physgunplayer") then
local allowed, _ = ULib.getUser( "@", true, ply )
if isPlayer(allowed) then
if allowed.frozen && ply:query( "ulx unfreeze" ) then
allowed.phrozen = true;
allowed.frozen = false;
end
allowed._ulx_physgun = {p=targ:GetPos(), b=true}
end
end
end
end, HOOK_HIGH)
hook.Add("PlayerSpawn", "_ply_physgungrab", function(ply)
if ply._ulx_physgun then
if ply._ulx_physgun.b and ply._ulx_physgun.p then
timer.Simple(0.001, function()
ply:SetPos(ply._ulx_physgun.p);
ply:SetMoveType(MOVETYPE_NONE);
end);
end
end
end)
function physgun_freeze( calling_ply, target_ply, should_unfreeze)
local v = target_ply
if v:InVehicle() then
v:ExitVehicle()
end
if not should_unfreeze then
v:Lock()
v.frozen = true
v.phrozen = true
ulx.setExclusive( v, "frozen" )
else
v:UnLock()
v.frozen = nil
v.phrozen = nil
ulx.clearExclusive( v )
end
v:DisallowSpawning( not should_unfreeze )
ulx.setNoDie( v, not should_unfreeze )
if v.whipped then
v.whipcount = v.whipamt
end
end
hook.Add("PhysgunDrop", "_ulx_physgunfreeze", function(pl, ent)
if isPlayer(ent) then
ent:SetMoveType( MOVETYPE_WALK )
ent._ulx_physgun = {p=ent:GetPos(), b=false}
end
if IsValid(pl) and isPlayer(ent) then
if pl:query("ulx physgunplayer") then
local isFrozen = ( ent:IsFrozen() or ent.frozen or ent.phrozen );
ent:SetVelocity(ent:GetVelocity()*-1);
ent:SetMoveType(pl:KeyDown(IN_ATTACK2) and MOVETYPE_NOCLIP or MOVETYPE_WALK);
timer.Simple(0.001, function()
if pl:KeyDown(IN_ATTACK2) and not isFrozen then
if pl:query( "ulx freeze" ) then
ulx.freeze( pl, {ent}, false );
if ent.frozen then ent.phrozen = true end;
end
elseif pl:query( "ulx unfreeze" ) and isFrozen then
if pl:KeyDown(IN_ATTACK2) and pl:query( "ulx freeze" ) then
physgun_freeze(pl, ent, true)
timer.Simple(0.001, function() physgun_freeze(pl, ent, false) end);
else
ulx.freeze( pl, {ent}, true );
if not ent.frozen then ent.phrozen = nil end;
end
end
end);
else
ent:SetMoveType( MOVETYPE_WALK )
end
end
end)
local physgunfreeze = ulx.command( Utility, "ulx physgunfreeze", ulx_physgunfreeze, "!physgunfreeze" )
physgunfreeze:addParam{ type=ULib.cmds.PlayersArg, ULib.cmds.optional }
physgunfreeze:defaultAccess( Ulib.ACCES.ADMIN )
physgunfreeze:help( "Toggles Physgun Freeze Player Script" )
print ( "Physgun Player Loaded!" )
--[[Made By SEnsE/Nismo/A. Nismo]]--
-
Seriously, I can't stress this enough - you need to copy paste the exact error from console that you are getting.
It tells what line, it tells what code, and several lines that led to the bad part.
Quick look of your code shows that you should be placing the category Utility in quotes "Utility" - Translate expects a string there, passing it the word Utility likely returns nil, as there is no variable named Utility
local physgunfreeze = ulx.command( "Utility", ...)