[TTT] Custom Ideas [Request]

Hello guys, I would like some custom things for my server, I will be paying of course.

-Poison Dart for Traitors
-Ability to disguise as Innocent Players as Traitor
-Revive other Traitors as Traitor
-Revive other players as Detective

-Custom Menu which includes custom guns.
-Special saving “Karma” and “Points” system that saves when you exit the server.
-Some more things, which you can buy with your “Points” such as Full Heal, Speed Boost, Faster Reload, etc.

Points are earned for innocents killing traitors, as well as traitors killing innocents. Traitor weapons, such as knives, will cost a certain number of “Points” also.

Of course, I will be paying for these. Please message me on my Skype at: darkshadow120 or Steam if you are interested. Thank you for reading my thread, and If I have any more ideas, I will let you know.

None of those are original. Also, what do you mean by “Ability to disguise as Innocent Players as Traitor”? Like, change the name on hover? Not going to work with microphones and chat would just cause confusion and more.

For the poison dart, a simple google search would have helped you:

[LUA]if SERVER then
AddCSLuaFile( “shared.lua” )
end

SWEP.HoldType = “pistol”

if CLIENT then
SWEP.PrintName = “Poison Dart”
SWEP.Author = “TTT”
SWEP.Slot = 6
SWEP.SlotPos = 0

SWEP.EquipMenuData = {
type=“Weapon”,
–model=“models/weapons/w_pist_usp.mdl”,
desc=“Shoot someone to poison him.”
};

SWEP.Icon = “VGUI/ttt/icon_poisondart”
end

SWEP.Base = “weapon_tttbase”
SWEP.Primary.Recoil = 1
SWEP.Primary.Damage = 1
SWEP.Primary.Delay = 120
SWEP.Primary.Cone = 0.0
SWEP.Primary.ClipSize = 1
SWEP.Primary.Automatic = true
SWEP.Primary.DefaultClip = 1
SWEP.Primary.ClipMax = 1
SWEP.Primary.Ammo = “” --“Pistol”

SWEP.Kind = WEAPON_EQUIP
SWEP.CanBuy = {ROLE_TRAITOR} – only traitors can buy
–SWEP.WeaponID = AMMO_SIPISTOL

SWEP.AmmoEnt = “” --“item_ammo_pistol_ttt”

SWEP.IsSilent = true
SWEP.LimitedStock = true

SWEP.ViewModel = “models/weapons/v_pist_usp.mdl”
SWEP.WorldModel = “models/weapons/w_pist_usp.mdl”

SWEP.Primary.Sound = Sound( “Weapon_USP.SilencedShot” )
SWEP.IronSightsPos = Vector( 4.48, -4.34, 2.75)
SWEP.IronSightsAng = Vector(-0.5, 0, 0)

SWEP.PrimaryAnim = ACT_VM_PRIMARYATTACK_SILENCED
SWEP.ReloadAnim = ACT_VM_RELOAD_SILENCED

function SWEP:Deploy()
self.Weapon:SendWeaponAnim(ACT_VM_DRAW_SILENCED)
return true
end

–[[-- We were bought as special equipment, and we have an extra to give
function SWEP:WasBought(buyer)
if IsValid(buyer) then – probably already self.Owner
buyer:GiveAmmo( 16, “Pistol” )
end
end]]
function SWEP:PrimaryAttack(worldsnd)

self.Weapon:SetNextSecondaryFire( CurTime() + self.Primary.Delay )
self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.Delay )

if not self:CanPrimaryAttack() then return end

if not worldsnd then
self.Weapon:EmitSound( self.Primary.Sound )
else
WorldSound(self.Primary.Sound, self:GetPos())
end

self:ShootBullet( self.Primary.Damage, self.Primary.Recoil, self.Primary.NumShots, self.Primary.Cone, self.Doors, self.Force, self.TracerName )
if SERVER then
if self.Owner:GetEyeTrace().HitNonWorld and self.Owner:GetEyeTrace().Entity:IsPlayer() then

local en = self.Owner:GetEyeTrace().Entity
local uni = en:UniqueID()
en:EmitSound(“ambient/voices/citizen_beaten” … math.random(1,5) … “.wav”,500,100)
timer.Create(en:UniqueID() … “poisondart”, 1, 0, function()

if ValidEntity(en) and en:IsTerror() then
if ValidEntity(self.Owner) then
en:TakeDamage(1,self.Weapon,self.Owner)
else
en:TakeDamage(1,self.Weapon,self.Weapon)
end
else
timer.Destroy(uni … “poisondart”)
end
end)

end
end
self:TakePrimaryAmmo( 1 )

if not ValidEntity(self.Owner) or self.Owner:IsNPC() or (not self.Owner.ViewPunch) then return end

self.Owner:ViewPunch( Angle( math.Rand(-0.2,-0.1) * self.Primary.Recoil, math.Rand(-0.1,0.1) *self.Primary.Recoil, 0 ) )

if ( (SinglePlayer() and SERVER) or CLIENT ) then
self.Weapon:SetNetworkedFloat( “LastShootTime”, CurTime() )
end

end[/LUA]

Alternative version:

[LUA]if SERVER then
AddCSLuaFile( “shared.lua” )
end

SWEP.HoldType = “pistol”

if CLIENT then
SWEP.PrintName = “Poison dart gun”
SWEP.Author = “PrawkC”
SWEP.Slot = 6
SWEP.SlotPos = 0

SWEP.EquipMenuData = {
type=“Weapon”,
model=“models/weapons/w_pist_usp.mdl”,
desc="Poison dart gun, uses normal pistol
ammo.

Victims will die after 15 seconds of being shot"
};

SWEP.Icon = “VGUI/ttt/icon_silenced”
end

SWEP.Base = “weapon_tttbase”
SWEP.Primary.Recoil = 1.7
SWEP.Primary.Damage = 0
SWEP.Primary.Delay = 0.32
SWEP.Primary.Cone = 0.014
SWEP.Primary.ClipSize = 1
SWEP.Primary.Automatic = false
SWEP.Primary.DefaultClip = 1
SWEP.Primary.ClipMax = 1
SWEP.Primary.Ammo = “AMMO_SIPISTOL”

SWEP.Kind = WEAPON_EQUIP
SWEP.CanBuy = {ROLE_TRAITOR} – only traitors can buy
SWEP.WeaponID = AMMO_SIPISTOL

SWEP.IsSilent = true

SWEP.ViewModel = “models/weapons/v_pist_usp.mdl”
SWEP.WorldModel = “models/weapons/w_pist_usp.mdl”

SWEP.Primary.Sound = Sound( “Weapon_USP.SilencedShot” )
SWEP.IronSightsPos = Vector( 4.48, -4.34, 2.75)
SWEP.IronSightsAng = Vector(-0.5, 0, 0)

SWEP.PrimaryAnim = ACT_VM_PRIMARYATTACK_SILENCED
SWEP.ReloadAnim = ACT_VM_RELOAD_SILENCED

seconds = 5

function SWEP:Deploy()
self.Weapon:SendWeaponAnim(ACT_VM_DRAW_SILENCED)
return true
end

– We were bought as special equipment, and we have an extra to give
function SWEP:WasBought(buyer)
if IsValid(buyer) then – probably already self.Owner
buyer:GiveAmmo( 1, “AMMO_SIPISTOL” )
makeMenus()
end
end

function makeMenus()

DFrame1 = vgui.Create(‘DFrame’)
DFrame1:SetSize(166, 71)
DFrame1:SetPos(216, 159)
DFrame1:SetTitle(‘Poison Dart Death Timer’)
DFrame1:SetDeleteOnClose(false)
DFrame1:ShowCloseButton(false)

DNumSlider1 = vgui.Create(‘DNumSlider’)
DNumSlider1:SetParent(DFrame1)
DNumSlider1:SetSize(154, 40)
DNumSlider1:SetPos(222, 184)
DNumSlider1:SetDecimals(0)
DNumSlider1:SetFloatValue(0)
DNumSlider1:SetFraction(0)
DNumSlider1.OnMouseReleased = function() end
DNumSlider1.OnValueChanged = function() end
DNumSlider1:SetText(‘Seconds to take’)
DNumSlider1:SetValue(5)
DNumSlider1:SetMinMax( 5, 120)

end

function SWEP:Think()

while self.Owner:KeyDown(IN_RELOAD) do
DFrame1:MakePopup()
DNumSliders1.MakePopup()
seconds = DNumSlider1:GetValue()
end

end

function SWEP:PrimaryAttack() //when +attack1 happens

// Make sure we can shoot first
if ( !self:CanPrimaryAttack() ) then return end

local traceRes = self.Owner:GetEyeTrace()

local bullet = {} //creates a table for the properties of the bullet
bullet.Src 		= self.Owner:GetShootPos() // Source, where you are standing
bullet.Dir 		= self.Owner:GetAimVector() // direction of bullet, where you are looking
bullet.Damage	= self.Damage //how much damage it does to people
bullet.AmmoType = self.Primary.Ammo //what type of ammo you are using
bullet.TracerName	= "Tracer"	

self.Owner:FireBullets( bullet ) //actually shoots the bullet.

self.Weapon:EmitSound ( "Weapon_USP.SilencedShot", 100, 100 )

function playerDamage()
traceRes.Entity:TakeDamage(100,self.Owner)
end
// this makes the sound, which I specified earlier in the code
bullet.Callback	= function ( attacker, tr, dmginfo ) 
	if traceRes.Entity:IsPlayer() then
	timer.Simple( seconds , playerDamage)
	end

end
self:TakePrimaryAmmo(2) //removes 2 ammo from our clip
bullet.Callback()	

end //end our function[/LUA]

Slightly glitchy on occasions but works.

Reviving people is just dumb, it ruins the idea behind TTT. If you really need to revive people, do it with admin commands incase someone gets RDMed right at the beginning or so.

Thanks bro, by “Ability to disguise as Innocent Players as Traitor” I mean, instead of the normal disguise, it would make your name as another player that is an innocent.

Yeah, that’s really bad. No thanks. Just more RDM, RDM everywhere. Forgot to mention that Poison Dart is also so overpowered that it makes no sense. The karma thing is already available in TTT config, “karma persists”.

I dont really see how it could be anymore overpowered than the knife.

Knife is regularly 50 hp, it requires two stabs/throws most of the time and with good reaction and aims, it’s possible to kill the guy with the knife. If you really need to, change it to 35 hp to balance it more.

Poison Dart can kill you as you spawn next round under some cases because of bugs and bad coding.