Unragdoller

I’ve asked how to make this before but I still don’t get how I would make It basically I’m working on a gamemode SSRP and I need a weapon that will unragdoll players. Because I have a knockout script for when a player goes under 20 hp they ragdoll aka get knocked out. So I need this weapon so a medic can come and unragdoll them aka heal them.

Mind posting us your knockout script?

I take no credit for this I simply edited it.

–Maximium health to be knocked out in
healthLim = 20
–Minimum KO length (seconds)
minL = 20
–Maximum KO length (seconds)
maxL = 30
–Tell them how long they’re gone for
tellLength = true

addL = maxL - minL
spawnPos = {}
playerTimer = {}
playerLength = {}

function KnockOut(playerid, len)

local i = playerid


local ent = ents.Create( "prop_ragdoll" )
if not ent:IsValid() then return end

ent:SetModel( i:GetModel() )
ent:SetKeyValue( "origin", i:GetPos().x .. " " .. i:GetPos().y .. " " .. i:GetPos().z )
ent:Spawn()
ent:Activate() 

i:Lock()
i:StripWeapons()
i:Spectate(3)
i:SpectateEntity(ent)

i:DrawViewModel( false )
i:DrawWorldModel( false )
i:SendLua("GAMEMODE:AddNotify(\"You have been knocked unconcious\", NOTIFY_GENERIC, 5) surface.PlaySound(\"player/pl_fallpain3.wav\")")

if(not len) then timerA = math.ceil(math.random(addL))+minL else timerA = len end
timerB = math.ceil(math.random(9999))

if(tellLength) then i:SendLua("GAMEMODE:AddNotify(\"You will awaken in "..timerA.." seconds\", NOTIFY_GENERIC, 5) surface.PlaySound(\"player/pl_fallpain3.wav\")") end

timer.Create(tostring(timerB),timerA,0,WakeUp,i,ent,timerB)

end

function pSpawn( i )
–i:PrintMessage( 1, tostring(spawnPos*) )

if(spawnPos*) then 
	i:SetPos(spawnPos*:GetPos())
	spawnPos*:Remove()
	spawnPos* = false
end

end
hook.Add(“PlayerSpawn”,“PlayerSpawned”,pSpawn)

function pHurt(user)
if(user:Health() < healthLim) then
if(user:Health()>0) then
KnockOut(user)
end
end
end

hook.Add(“PlayerHurt”,“hurtPlayer”,pHurt)

function WakeUp(i, ent, timerN)
–rnd = math.ceil(math.random(100))
–i:SendLua(“GAMEMODE:AddNotify(”"…rnd…"", NOTIFY_GENERIC, 5) surface.PlaySound(“player/pl_fallpain3.wav”)")
–if(rnd > wakeChance) then
i:SendLua(“GAMEMODE:AddNotify(“You are awake”, NOTIFY_GENERIC, 5) surface.PlaySound(“player/pl_fallpain3.wav”)”)

	i:UnLock()
	--i:PrintMessage( 4, "kill

" )
i:KillSilent()
i:DrawViewModel( true )
i:DrawWorldModel( true )
spawnPos* = ent
timer.Remove(tostring(timerN))
–end
end

function setLength( i, command, arg )
if(i:IsAdmin()) then
a = string.sub(arg[1],1,string.find(arg[1],",")-1)
b = string.sub(arg[1],string.find(arg[1],",")+1)
minL = a
maxL = b
addL = a - b
i:SendLua(“GAMEMODE:AddNotify(“Length changed”, NOTIFY_GENERIC, 5) surface.PlaySound(“ambient/water/drip1.wav”)”)
end
end

concommand.Add( “ko_prob”, setLength )

function setHealth( i, command, arg )
if(i:IsAdmin()) then
lim = tonumber(arg[1])
if(lim > 100) then lim = 100 end
healthLim = lim
i:SendLua(“GAMEMODE:AddNotify(“Knockout health changed to “…lim…””, NOTIFY_GENERIC, 5) surface.PlaySound(“ambient/water/drip1.wav”)”)
end
end

concommand.Add( “ko_health”, setHealth )

function adminKO( i, command, arg )
if(i:IsAdmin()) then
a = string.sub(arg[1],1,string.find(arg[1],",")-1)
b = string.sub(arg[1],string.find(arg[1],",")+1)
a = player.GetByID(a)
KnockOut(a,b)
i:SendLua(“GAMEMODE:AddNotify(“Player KO’d”, NOTIFY_GENERIC, 5) surface.PlaySound(“ambient/water/drip1.wav”)”)
end
end

concommand.Add( “ko_adminko”, adminKO )

-snip-

Use lua tags in future please.

[lua]–Maximium health to be knocked out in
healthLim = 20
–Minimum KO length (seconds)
minL = 20
–Maximum KO length (seconds)
maxL = 30
–Tell them how long they’re gone for
tellLength = true

addL = maxL - minL
spawnPos = {}
playerTimer = {}
playerLength = {}

function KnockOut(playerid, len)

local i = playerid

local ent = ents.Create( “prop_ragdoll” )
if not ent:IsValid() then return end

ent:SetModel( i:GetModel() )
ent:SetKeyValue( “origin”, i:GetPos().x … " " … i:GetPos().y … " " … i:GetPos().z )
ent:Spawn()
ent:Activate()

i:Lock()
i:StripWeapons()
i:Spectate(3)
i:SpectateEntity(ent)

i:DrawViewModel( false )
i:DrawWorldModel( false )
i:SendLua(“GAMEMODE:AddNotify(“You have been knocked unconcious”, NOTIFY_GENERIC, 5) surface.PlaySound(“player/pl_fallpain3.wav”)”)

if(not len) then timerA = math.ceil(math.random(addL))+minL else timerA = len end
timerB = math.ceil(math.random(9999))

if(tellLength) then i:SendLua(“GAMEMODE:AddNotify(“You will awaken in “…timerA…” seconds”, NOTIFY_GENERIC, 5) surface.PlaySound(“player/pl_fallpain3.wav”)”) end

timer.Create(tostring(timerB),timerA,0,WakeUp,i,en t,timerB)
end

function pSpawn( i )
–i:PrintMessage( 1, tostring(spawnPos*) )

if(spawnPos*) then
i:SetPos(spawnPos*:GetPos())
spawnPos*:Remove()
spawnPos* = false
end

end
hook.Add(“PlayerSpawn”,“PlayerSpawned”,pSpawn)

function pHurt(user)
if(user:Health() < healthLim) then
if(user:Health()>0) then
KnockOut(user)
end
end
end

hook.Add(“PlayerHurt”,“hurtPlayer”,pHurt)

function WakeUp(i, ent, timerN)
–rnd = math.ceil(math.random(100))
–i:SendLua(“GAMEMODE:AddNotify(”"…rnd…"", NOTIFY_GENERIC, 5) surface.PlaySound(“player/pl_fallpain3.wav”)")
–if(rnd > wakeChance) then
i:SendLua(“GAMEMODE:AddNotify(“You are awake”, NOTIFY_GENERIC, 5) surface.PlaySound(“player/pl_fallpain3.wav”)”)

i:UnLock()
–i:PrintMessage( 4, "kill
" )
i:KillSilent()
i:DrawViewModel( true )
i:DrawWorldModel( true )
spawnPos* = ent
timer.Remove(tostring(timerN))
–end
end

function setLength( i, command, arg )
if(i:IsAdmin()) then
a = string.sub(arg[1],1,string.find(arg[1],",")-1)
b = string.sub(arg[1],string.find(arg[1],",")+1)
minL = a
maxL = b
addL = a - b
i:SendLua(“GAMEMODE:AddNotify(“Length changed”, NOTIFY_GENERIC, 5) surface.PlaySound(“ambient/water/drip1.wav”)”)
end
end

concommand.Add( “ko_prob”, setLength )

function setHealth( i, command, arg )
if(i:IsAdmin()) then
lim = tonumber(arg[1])
if(lim > 100) then lim = 100 end
healthLim = lim
i:SendLua(“GAMEMODE:AddNotify(“Knockout health changed to “…lim…””, NOTIFY_GENERIC, 5) surface.PlaySound(“ambient/water/drip1.wav”)”)
end
end

concommand.Add( “ko_health”, setHealth )

function adminKO( i, command, arg )
if(i:IsAdmin()) then
a = string.sub(arg[1],1,string.find(arg[1],",")-1)
b = string.sub(arg[1],string.find(arg[1],",")+1)
a = player.GetByID(a)
KnockOut(a,b)
i:SendLua(“GAMEMODE:AddNotify(“Player KO’d”, NOTIFY_GENERIC, 5) surface.PlaySound(“ambient/water/drip1.wav”)”)
end
end

concommand.Add( “ko_adminko”, adminKO ) [/lua]

So does anyone know how I would make a weapon that unragdolls people when they are ragdolled after they die? Basically a CPR weapon that makes them turn back.

Just make a swep that runs the WakeUp function?

well this is the secondry fire on my ragdoller swep with un ragdolls you but you prob will have to change a bit


 function SWEP:SecondaryAttack()
local eyetrace = self.Owner:GetEyeTrace(); 
if not eyetrace.Entity or !string.find(eyetrace.Entity:GetClass(), "ragdoll") then return end
 
for k,v in pairs(ents.GetAll()) do
if v.EnzoRagdoll == eyetrace.Entity then
v:Spawn() -- Spawn Player
v:SetPos(eyetrace.Entity:GetPos()) -- Get's the possishon to spawn player
eyetrace.Entity:Remove() -- Removes the ragdoll
if v:IsPlayer() then
v:UnSpectate() -- Stops Spectating the ragdoll
end
break
end
end
end