My SWEP is breaking the gamemode for about 30% of people.
7 replies, posted
I don't know why only some people are affected, but I have no clue what's up that the swep could break a whole gamemode and it only be for SOME people.
It's basicly a taser edit.
[LUA]if ( SERVER ) then
AddCSLuaFile( "shared.lua" )
SWEP.Weight = 2
SWEP.AutoSwitchTo = true
SWEP.AutoSwitchFrom = true
SWEP.HoldType = "pistol"
end
if ( CLIENT ) then
SWEP.PrintName = "Taser";
SWEP.Slot = 3;
SWEP.SlotPos = 1;
SWEP.DrawAmmo = false;
SWEP.DrawCrosshair = true;
end
SWEP.Author = "Joe Mammy";
SWEP.Contact = "";
SWEP.Purpose = "Tasering";
SWEP.Instructions = "Left click to bring down.";
SWEP.Spawnable = false
SWEP.AdminSpawnable = true
SWEP.ViewModel = "models/weapons/v_pistol.mdl"
SWEP.WorldModel = "models/weapons/w_pistol.mdl"
SWEP.Primary.ClipSize = 1
SWEP.Primary.DefaultClip = 40
SWEP.Primary.Automatic = false
SWEP.Primary.Ammo = "357"
SWEP.Secondary.ClipSize = -1
SWEP.Secondary.DefaultClip = -1
SWEP.Secondary.Automatic = true
SWEP.Secondary.Ammo = ""
local taseredrags = {}
local taseruniquetimer1 = 0
local taseruniquetimer2 = 0
function SWEP:Reload()
if ( CurTime() < GetGlobalInt("mReloadTimer") ) then
local mTime = CurTime()-GetGlobalInt("mReloadTimer")
self.Owner:PrintMessage( HUD_PRINTCENTER, "Tazer recharging...\n"..tostring(math.ceil(mTime*-1)).." seconds left.")
else
self.Weapon:DefaultReload( ACT_VM_RELOAD ) //animation for reloading
end
end
function SWEP:PrimaryAttack()
if ( !self:CanPrimaryAttack() ) then return end
local eyetrace = self.Owner:GetEyeTrace();
if !eyetrace.Entity:IsPlayer() then
if !eyetrace.Entity:IsNPC() then return end // Check to see if what the player is aiming at is an NPC or Player
end
self.Weapon:EmitSound("Weapon_StunStick.Activate")
if (!SERVER) then return end
distx = eyetrace.Entity:GetPos().x - self.Owner:GetPos().x
disty = eyetrace.Entity:GetPos().y - self.Owner:GetPos().y
distz = eyetrace.Entity:GetPos().z - self.Owner:GetPos().z
distLong = (distx*distx)+(disty*disty)+(distz*distz)
dist = math.sqrt(distLong)
if dist > 200 then
self.Owner:PrintMessage(HUD_PRINTCENTER, "Too Far Away!")
return end
self.BaseClass.ShootEffects( self )
self:TakePrimaryAmmo(1)
if eyetrace.Entity:IsPlayer() then
self:tasePlayer(eyetrace.Entity) // If the it is a player then bring them down tranqPlayer()
SetGlobalInt("mReloadTimer",CurTime()+10)
end
if eyetrace.Entity:IsNPC() then
self:taseNPC(eyetrace.Entity, self.Owner) // If the it is a NPC then bring them down with tranqNPC()
SetGlobalInt("mReloadTimer",CurTime()+10)
end
end
function SWEP:tasePlayer(ply)
-- create ragdoll
local rag = ents.Create( "prop_ragdoll" )
if not rag:IsValid() then return end
-- build rag
rag:SetModel( ply:GetModel() )
rag:SetKeyValue( "origin", ply:GetPos().x .. " " .. ply:GetPos().y .. " " .. ply:GetPos().z )
rag:SetAngles(ply:GetAngles())
-- player vars
rag.taseredply = ply
table.insert(taseredrags, rag)
-- "remove" player
ply:StripWeapons()
ply:DrawViewModel(false)
ply:DrawWorldModel(false)
ply:Spectate(OBS_MODE_CHASE)
ply:SpectateEntity(rag)
-- finalize ragdoll
rag:Spawn()
rag:Activate()
-- make ragdoll fall
rag:GetPhysicsObject():SetVelocity(4*ply:GetVelocity())
-- bring the motherfucker back
self:setrevivedelay(rag)
end
function SWEP:taseNPC(npc, npcShooter)
-- get info about npc
local skin = npc:GetSkin()
local wep = ""
local possibleWep = ents.FindInSphere(npc:GetPos(),0.01) -- find anything in the center basically
for k, v in pairs(possibleWep) do
if string.find(v:GetClass(),"weapon_") == 1 then
wep = v:GetClass()
end
end
local citType = "" -- citizen type
local citMed = 0 -- is it a medic? assume no
if npc:GetClass() == "npc_citizen" then
citType = string.sub(npc:GetModel(),21,21) -- get group number (e.g. models/humans/group0#/whatever)
if string.sub(npc:GetModel(),22,22) == "m" then citMed = 1 end -- medic skins have an "m" after the number
end
-- make ragdoll now that all info is gathered
local rag = ents.Create( "prop_ragdoll" )
if not rag:IsValid() then return end
-- build rag
rag:SetModel( npc:GetModel() )
rag:SetKeyValue( "origin", npc:GetPos().x .. " " .. npc:GetPos().y .. " " .. npc:GetPos().z )
rag:SetAngles(npc:GetAngles())
-- npc vars
rag.tasewasNPC = true
rag.tasenpcType = npc:GetClass()
rag.tasenpcWep = wep
rag.tasenpcCitType = citType
rag.tasenpcCitMed = citMed
rag.tasenpcSkin = skin
rag.tasenpcShooter = npcShooter
table.insert(taseredrags, rag)
--finalize
rag:Spawn()
rag:Activate()
-- make ragdoll fall
rag:GetPhysicsObject():SetVelocity(8*npc:GetVelocity())
--remove npc
npc:Remove()
self:setrevivedelay(rag)
end
function SWEP:setrevivedelay(rag)
if taseruniquetimer1 > 30 then
taseruniquetimer1 = 0
end
taseruniquetimer1 = taseruniquetimer1 + 1
timer.Create("revivedelay"..taseruniquetimer1, 5, 1, self.taserevive, self, rag )
end
function SWEP:taserevive(ent)
-- revive player
if !ent then return end
if ent.taseredply then
if ( !ent.taseredply:IsValid() ) then return end
local phy = ent:GetPhysicsObject()
ent:SetSolid(SOLID_NONE)
ent.taseredply:DrawViewModel(true)
ent.taseredply:DrawWorldModel(true)
ent.taseredply:Spawn()
ent.taseredply:SetPos(ent:GetPos())
ent.taseredply:SetVelocity(ent:GetPhysicsObject():GetVelocity())
ent.taseredply:SetMoveType(MOVETYPE_WALK)
ent.taseredply:ConCommand("pp_motionblur 1")
ent.taseredply:ConCommand("pp_motionblur_addalpha 0.06 ")
ent.taseredply:ConCommand("pp_motionblur_delay 0")
ent.taseredply:ConCommand("pp_motionblur_drawalpha 0.99 ")
if taseruniquetimer2 > 30 then
taseruniquetimer2 = 0
end
taseruniquetimer2 = taseruniquetimer2 + 1
timer.Create("pauseplayer"..taseruniquetimer2, 3, 1, self.pauseplayer, self, ent.taseredply)
-- revive npc
elseif ent.tasewasNPC then
local npc = ents.Create(ent.tasenpcType) -- create the entity
util.PrecacheModel(ent:GetModel()) -- precache the model
npc:SetModel(ent:GetModel()) -- and set it
local spawnPos = ent:GetPos()+Vector(0,0,0) -- position to spawn it
npc:SetPos(spawnPos) -- position
npc:SetSkin(ent.tasenpcSkin)
npc:SetAngles(Angle(0,ent:GetAngles().y,0))
if ent.tasenpcWep != "" then -- if it's an NPC and we found a weapon for it when it was spawned, then
npc:SetKeyValue("additionalequipment",ent.tasenpcWep) -- give it the weapon
end
if ent.taseentType == "npc_citizen" then
npc:SetKeyValue("citizentype",ent.tasenpcCitType) -- set the citizen type - rebel, refugee, etc.
if ent.tasenpcCitType == "3" && ent.tasenpcCitMed==1 then -- if it's a rebel, then it might be a medic, so check that
npc:SetKeyValue("spawnflags","131072") -- set medic spawn flag
end
end
npc:Spawn()
npc:Activate()
cleanup.Add (uplayer, "NPC", npc);
undo.Create ("Tasered NPC");
undo.AddEntity (npc);
undo.SetPlayer (ent.tasenpcShooter);
undo.Finish();
-- don't deal with other ents
else
return
end
for k, v in pairs(taseredrags) do
if v == ent then
table.remove( taseredrags, k )
end
end
ent:Remove()
end
function SWEP:pauseplayer(ply)
ply:SetMoveType(MOVETYPE_WALK )
ply:ConCommand("pp_motionblur 0")
end
function SWEP:SecondaryAttack()
end
[/LUA]
How is it breaking for people? Any lua errors for them at all? Also use [lua] tags.
My bad, edited to LUA tags. I didn't even know they existed. =P.
Here is all someone recorded. (It worked fine for me or I'd have more info)
I was told that the display looked like sandbox, no Q menu or TAB menu and no toolgun. Only physgun and gravgun. He was still able to spawn stoves with a bind he had though.
Also worth saying, the gamemode was DarkRP. The second I removed the taser, things worked fine again.
[lua]GamemodeError(RenderScreenspaceEffects): No Gamemode!
GamemodeError(PostRenderVGUI): No Gamemode!
GamemodeError(Think): No Gamemode!
GamemodeError(Tick): No Gamemode!
GamemodeError(DrawMonitors): No Gamemode!
GamemodeError(RenderScreenspaceEffects): No Gamemode!
GamemodeError(PostRenderVGUI): No Gamemode!
GamemodeError(Think): No Gamemode!
GamemodeError(DrawMonitors): No Gamemode!
GamemodeError(RenderScreenspaceEffects): No Gamemode!
GamemodeError(PostRenderVGUI): No Gamemode!
GamemodeError(Think): No Gamemode!
GamemodeError(Tick): No Gamemode!
GamemodeError(DrawMonitors): No Gamemode!
GamemodeError(RenderScreenspaceEffects): No Gamemode!
GamemodeError(PostRenderVGUI): No Gamemode!
GamemodeError(Think): No Gamemode!
[/lua]
They uploaded your SWEP and did not bother to update the cache on their FastDL, most likely.
It doesn't use FastDL.
then they have downloads disabled
Or the coding isn't sending the SWEP to the client, it MIGHT be possible to use AddCSFile to change this, but im not 100% positive
[QUOTE=Banana Lord.;35048910]then they have downloads disabled[/QUOTE]
Looked at their server.cfg unless it needs to be somewhere else too, it seems fine. Should I have them add it to autoexe incase it's not reading from this correctly?
[B]//Downloading
sv_downloadurl ""
sv_allowdownload 1
sv_allowupload 1
net_maxfilesize 20[/B]
Sorry, you need to Log In to post a reply to this thread.