Ulysses
General => Off-Topic => Topic started by: Kawo on December 27, 2013, 03:20:07 AM
-
Hello
I know that my problem is not related to ULX or something in around this topic but I need help.
I started my own TTT server. Everything is fine, but not spawns. After the round has ended, people spawn where they were on spectator. I have no idea what I should show you to help you helping me. Sorry for my grammar and other stuff. Thanks
-
I had this issue, found it to be related to a Coderhire Addon named "TrueTTT" If you remove that, I have a feeling the issue will be sorted.
-
But I don't have that addon. I got cannibalism, defibrillator, awp, tripwire, turret and the crossbow.
-
Start removing addons one by one and restarting the server until it starts working again. That's usually what I do when I have problems like that.
-
I tried and it did not work :/
-
Define "it did not work"
-
Nothing changed. Everyone still spawns where they were on spectator.
-
Can I see the lua of the defibrillator and the cannibalism mod?
Since defib has to do with spawning people where they died,
I would expect that to be the issue.
And as for cannibalism, I'm not sure.
Have you tried removing the defib yet?
If that doesn't work, perhaps remove cannibalism.
-
Defib:
if SERVER then
resource.AddFile("materials/vgui/ttt/icon_rg_defibrillator.png")
end
local STATE_NONE, STATE_PROGRESS, STATE_ERROR = 0, 1, 2
local color_red = Color(255, 0, 0)
SWEP.Base = "weapon_tttbase"
SWEP.HoldType = "slam"
SWEP.ViewModel = Model("models/weapons/v_c4.mdl")
SWEP.WorldModel = Model("models/weapons/w_c4.mdl")
--- TTT Vars
SWEP.Kind = WEAPON_EQUIP2
SWEP.AutoSpawnable = false
SWEP.CanBuy = {ROLE_TRAITOR}
SWEP.LimitedStock = true
if CLIENT then
SWEP.PrintName = "Defibrillator"
SWEP.Slot = 7
SWEP.Icon = "vgui/ttt/icon_rg_defibrillator.png"
SWEP.EquipMenuData = {
type = "item_weapon",
name = "Defribrillator",
desc = "Resurrect dead mates with this one!"
}
surface.CreateFont("DefibText", {
font = "Tahoma",
size = 13,
weight = 700,
shadow = true
})
function SWEP:DrawHUD()
local state = self:GetDefibState()
local scrW, scrH = ScrW(), ScrH()
local progress = 1
local outlineCol, progressCol, progressText = color_white, color_white, ""
if state == STATE_PROGRESS then
local startTime, endTime = self:GetDefibStartTime(), self:GetDefibStartTime() + 5
progress = math.TimeFraction(startTime, endTime, CurTime())
if progress <= 0 then
return
end
outlineCol = Color(0, 100, 0)
progressCol = Color(0, 255, 0, (math.abs(math.sin(RealTime() * 3)) * 100) + 20)
progressText = self:GetStateText() or "DEFIBRILLATING"
elseif state == STATE_ERROR then
outlineCol = color_red
progressCol = Color(255, 0, 0, math.abs(math.sin(RealTime() * 15)) * 255)
progressText = self:GetStateText() or ""
else
return
end
progress = math.Clamp(progress, 0, 1)
surface.SetDrawColor(outlineCol)
surface.DrawOutlinedRect(scrW / 2 - (200 / 2) - 1, scrH / 2 + 10 - 1, 202, 16)
surface.SetDrawColor(progressCol)
surface.DrawRect(scrW / 2 - (200 / 2), scrH / 2 + 10, 200 * progress, 14)
surface.SetFont("DefibText")
local textW, textH = surface.GetTextSize(progressText)
surface.SetTextPos(scrW / 2 - 100 + 2, scrH / 2 - 20 + textH)
surface.SetTextColor(color_white)
surface.DrawText(progressText)
end
end
function SWEP:SetupDataTables()
self:NetworkVar("Int", 0, "DefibState")
self:NetworkVar("Float", 1, "DefibStartTime")
self:NetworkVar("String", 0, "StateText")
end
function SWEP:Initialize()
self:SetDefibState(STATE_NONE)
self:SetDefibStartTime(0)
end
function SWEP:Deploy()
self:SetDefibState(STATE_NONE)
self:SetDefibStartTime(0)
return true
end
function SWEP:Holster()
self:SetDefibState(STATE_NONE)
self:SetDefibStartTime(0)
return true
end
function SWEP:PrimaryAttack()
if CLIENT then return end
local tr = util.TraceLine({
start = self.Owner:EyePos(),
endpos = self.Owner:EyePos() + self.Owner:GetAimVector() * 80,
filter = self.Owner
})
if IsValid(tr.Entity) and tr.Entity:GetClass() == "prop_ragdoll" then
if not tr.Entity.uqid then
self:FireError("FAILURE - SUBJECT BRAINDEAD")
return
end
local ply = player.GetByUniqueID(tr.Entity.uqid)
if IsValid(ply) then
self:BeginDefib(ply, tr.Entity)
else
self:FireError("FAILURE - SUBJECT BRAINDEAD")
return
end
else
self:FireError("FAILURE - INVALID TARGET")
end
end
function SWEP:BeginDefib(ply, ragdoll)
local spawnPos = self:FindPosition(self.Owner)
if not spawnPos then
self:FireError("FAILURE - INSUFFICIENT ROOM")
return
end
self:SetStateText("DEFIBRILLATING - "..string.upper(ply:Name()))
self:SetDefibState(STATE_PROGRESS)
self:SetDefibStartTime(CurTime())
self.TargetPly = ply
self.TargetRagdoll = ragdoll
self:SetNextPrimaryFire(CurTime() + 6)
end
function SWEP:FireError(err)
if err then
self:SetStateText(err)
else
self:SetStateText("")
end
self:SetDefibState(STATE_ERROR)
timer.Simple(1, function()
if IsValid(self) then
self:SetDefibState(STATE_NONE)
self:SetStateText("")
end
end)
self:SetNextPrimaryFire(CurTime() + 1.2)
end
function SWEP:FireSuccess()
self:SetDefibState(STATE_NONE)
self:SetNextPrimaryFire(CurTime() + 1)
hook.Call("UsedDefib", GAMEMODE, self.Owner)
self:Remove()
end
function SWEP:Think()
if CLIENT then return end
if self:GetDefibState() == STATE_PROGRESS then
if not IsValid(self.Owner) then
self:FireError()
return
end
if not (IsValid(self.TargetPly) and IsValid(self.TargetRagdoll)) then
self:FireError("ERROR - SUBJECT BRAINDEAD")
return
end
local tr = util.TraceLine({
start = self.Owner:EyePos(),
endpos = self.Owner:EyePos() + self.Owner:GetAimVector() * 80,
filter = self.Owner
})
if tr.Entity ~= self.TargetRagdoll then
self:FireError("ERROR - TARGET LOST")
return
end
if CurTime() >= self:GetDefibStartTime() + 5 then
if self:HandleRespawn() then
self:FireSuccess()
else
self:FireError("ERROR - INSUFFICIENT ROOM")
return
end
end
self:NextThink(CurTime())
return true
end
end
function SWEP:HandleRespawn()
local ply, ragdoll = self.TargetPly, self.TargetRagdoll
local spawnPos = self:FindPosition(self.Owner)
if not spawnPos then
return false
end
local credits = CORPSE.GetCredits(ragdoll, 0)
ply:SpawnForRound(true)
ply:SetCredits(credits)
ply:SetPos(spawnPos)
ply:SetEyeAngles(Angle(0, ragdoll:GetAngles().y, 0))
ragdoll:Remove()
return true
end
local Positions = {}
for i=0,360,22.5 do table.insert( Positions, Vector(math.cos(i),math.sin(i),0) ) end -- Populate Around Player
table.insert(Positions, Vector(0, 0, 1)) -- Populate Above Player
function SWEP:FindPosition(ply)
local size = Vector(32, 32, 72)
local StartPos = ply:GetPos() + Vector(0, 0, size.z/2)
local len = #Positions
for i = 1, len do
local v = Positions[i]
local Pos = StartPos + v * size * 1.5
local tr = {}
tr.start = Pos
tr.endpos = Pos
tr.mins = size / 2 * -1
tr.maxs = size / 2
local trace = util.TraceHull(tr)
if(not trace.Hit) then
return Pos - Vector(0, 0, size.z/2)
end
end
return false
end
EDIT -JamminR - Use code tags to keep the post tidy.
-
Cannibalism :
if SERVER then
AddCSLuaFile( "shared.lua" )
resource.AddFile("materials/vgui/ttt/ttt_cannibalism.vmt")
resource.AddFile("materials/vgui/ttt/ttt_cannibalism.vtf")
end
if CLIENT then
SWEP.PrintName = "Cannibalism"
SWEP.Slot = 7 -- add 1 to get the slot number key
SWEP.ViewModelFOV = 72
SWEP.ViewModelFlip = true
end
-- Always derive from weapon_tttbase.
SWEP.Base = "weapon_tttbase"
--- Standard GMod values
SWEP.HoldType = "melee"
SWEP.Primary.Delay = 10
SWEP.Primary.Recoil = 0
SWEP.Primary.Automatic = false
SWEP.Primary.Damage = 0
SWEP.Primary.Cone = 0.025
SWEP.Primary.Ammo = ""
SWEP.Primary.ClipSize = 1
SWEP.Primary.ClipMax = 1
SWEP.Primary.DefaultClip = 1
SWEP.IronSightsPos = Vector( 6.05, -5, 2.4 )
SWEP.IronSightsAng = Vector( 2.2, -0.1, 0 )
SWEP.ViewModel = "models/weapons/v_knife_t.mdl"
SWEP.WorldModel = "models/weapons/w_knife_t.mdl"
function SWEP:ShouldDropOnDie()
self:Remove()
end
function SWEP:OnDrop()
self:Remove()
end
function SWEP:PrimaryAttack()
if not self:CanPrimaryAttack() then return end
self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.Delay )
local tracedata = {}
tracedata.start = self.Owner:GetShootPos()
tracedata.endpos = self.Owner:GetShootPos() + (self.Owner:GetAimVector() * 100)
tracedata.filter = self.Owner
tracedata.mins = Vector(1,1,1) * -10
tracedata.maxs = Vector(1,1,1) * 10
tracedata.mask = MASK_SHOT_HULL
local tr = util.TraceHull( tracedata )
local ply = self.Owner
if IsValid(tr.Entity) then
if tr.Entity.player_ragdoll then
timer.Simple(0.1, function()
ply:Freeze(true)
ply:SetColor(Color(255,0,0,255))
end)
self.Weapon:SendWeaponAnim(ACT_VM_PRIMARYATTACK)
timer.Create("GivePlyHealth_"..self.Owner:UniqueID(),0.5,6,function() self.Owner:SetHealth(self.Owner:Health()+5) end)
timer.Simple(3.1, function()
ply:Freeze(false)
ply:SetColor(Color(255,255,255,255))
tr.Entity:Remove()
self:Remove()
end )
end
end
self.Weapon:SendWeaponAnim(ACT_VM_PRIMARYATTACK)
end
--- TTT config values
-- Kind specifies the category this weapon is in. Players can only carry one of
-- each. Can be: WEAPON_... MELEE, PISTOL, HEAVY, NADE, CARRY, EQUIP1, EQUIP2 or ROLE.
-- Matching SWEP.Slot values: 0 1 2 3 4 6 7 8
SWEP.Kind = WEAPON_EQUIP2
-- If AutoSpawnable is true and SWEP.Kind is not WEAPON_EQUIP1/2, then this gun can
-- be spawned as a random weapon. Of course this AK is special equipment so it won't,
-- but for the sake of example this is explicitly set to false anyway.
SWEP.AutoSpawnable = false
-- The AmmoEnt is the ammo entity that can be picked up when carrying this gun.
SWEP.AmmoEnt = ""
-- CanBuy is a table of ROLE_* entries like ROLE_TRAITOR and ROLE_DETECTIVE. If
-- a role is in this table, those players can buy this.
SWEP.CanBuy = {ROLE_TRAITOR}
-- InLoadoutFor is a table of ROLE_* entries that specifies which roles should
-- receive this weapon as soon as the round starts. In this case, none.
SWEP.InLoadoutFor = nil
-- If LimitedStock is true, you can only buy one per round.
SWEP.LimitedStock = true
-- If AllowDrop is false, players can't manually drop the gun with Q
SWEP.AllowDrop = true
-- If IsSilent is true, victims will not scream upon death.
SWEP.IsSilent = false
-- If NoSights is true, the weapon won't have ironsights
SWEP.NoSights = true
-- Equipment menu information is only needed on the client
if CLIENT then
-- Path to the icon material
SWEP.Icon = "vgui/ttt/ttt_cannibalism"
-- Text shown in the equip menu
SWEP.EquipMenuData = {
type = "Weapon",
desc = "CANNIBALISM! GET RID OF EVIDENCE AND GAIN HEALTH!"
};
end
EDIT -JamminR - Use code tags to keep the post tidy.
-
I've used those two sweps on my own local server with a bot, and it seems
they are not the problem.
Are there any other mods you have? Besides sweps.
-
I have RDM Manager, joining/leaving messages, mapvote and ULX Admin Mod
-
Try removing each of those one by one and test each time.
Don't remove ULX though.