Залив

This commit is contained in:
Refosel
2026-03-30 10:39:52 +03:00
commit 2b57c019cb
2010 changed files with 185745 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
include("shared.lua")
include('client/cl_hud.lua')
include("client/cl_outline.lua")
include("client/cl_menu.lua")
include("client/cl_takedown.lua")
include("client/cl_scoreboard.lua")
include("client/cl_abilities.lua")
include("client/cl_killfeed.lua")
include("client/cl_radar.lua")
include("client/cl_cutscenes.lua")
include("client/cl_killcam.lua")
include("client/cl_error.lua")
include("post_shared.lua")

View File

@@ -0,0 +1,109 @@
local meta = FindMetaTable("Player")
function meta:IsDowned()
return self:GetNWBool('Downed')
end
function meta:MovingDirection(threshold) --This function was made by OpenAI ChatGPT
threshold = threshold or 0.1
local vel = self:GetVelocity()
local forward = self:GetForward()
local right = self:GetRight()
local forwardDot = vel:Dot(forward)
local rightDot = vel:Dot(right)
if forwardDot > threshold then
return "forward"
elseif forwardDot < -threshold then
return "backward"
end
if rightDot > threshold then
return "right"
elseif rightDot < -threshold then
return "left"
end
return "stand"
end
hook.Add("CalcMainActivity", "TDMAnimsRevive", function(ply, vel)
if ply:IsDowned() and ply:GetNWString('SVAnim') == "" then
local anim1 = ply:LookupSequence("laststand_idle")
local anim2 = ply:LookupSequence("laststand_crawl_forward")
local anim3 = ply:LookupSequence("laststand_crawl_backward")
local anim4 = ply:LookupSequence("laststand_crawl_left")
local anim5 = ply:LookupSequence("laststand_crawl_right")
local dir = ply:MovingDirection(4)
local vel = ply:GetVelocity():Length2D() > 10
if dir == "forward" and vel then
return -1, anim2
elseif dir == "backward" and vel then
return -1, anim3
elseif dir == "left" and vel then
return -1, anim4
elseif dir == "right" and vel then
return -1, anim5
else
return -1, anim1
end
end
end)
hook.Add("Think", "TDMRevive", function()
local ply = LocalPlayer()
if ply:IsDowned() and ply:Alive() and !ply:ShouldDrawLocalPlayer() then
if not model then
model = ClientsideModel(ply:GetModel())
end
model:SetNoDraw(false)
model:SetAngles(Angle(0,ply:GetAngles().y+10,0))
model:ManipulateBoneAngles(model:LookupBone('ValveBiped.Bip01_R_Forearm'), Angle(0,270,0))
model:ManipulateBoneAngles(model:LookupBone('ValveBiped.Bip01_L_Forearm'), Angle(0,270,0))
model:ManipulateBoneAngles(model:LookupBone('ValveBiped.Bip01_R_UpperArm'), Angle(0,270,0))
model:SetCycle(ply:GetCycle())
model:SetModel(ply:GetModel())
local vel = ply:GetVelocity()
local anim1 = ply:LookupSequence("laststand_idle")
local anim2 = ply:LookupSequence("laststand_crawl_forward")
local anim3 = ply:LookupSequence("laststand_crawl_backward")
local anim4 = ply:LookupSequence("laststand_crawl_left")
local anim5 = ply:LookupSequence("laststand_crawl_right")
local speed = vel:Length2D() > 5
local dir = ply:MovingDirection(8)
if ply:EyeAngles().x > 25 then
ply:SetEyeAngles(Angle(25, ply:EyeAngles().y, 0))
end
if ply:EyeAngles().x < -25 then
ply:SetEyeAngles(Angle(-25, ply:EyeAngles().y, 0))
end
if dir == "forward" and speed then
model:ResetSequence(anim2)
elseif dir == "backward" and speed then
model:ResetSequence(anim3)
elseif dir == "left" and speed then
model:ResetSequence(anim4)
elseif dir == "right" and speed then
model:ResetSequence(anim5)
else
model:ResetSequence(anim1)
end
model:SetPos(ply:GetPos()+Vector(0,0,4)+ply:GetForward()*8+ply:GetRight()*8)
else
if model then
model:SetNoDraw(true)
end
end
end)
local delay = CurTime()+5
hook.Add("Think", "TDMApplyCommands", function()
if delay < CurTime() then
delay = CurTime()+5
for k, v in pairs(COD.ApplyCommands["Client"]) do
RunConsoleCommand(k, v)
end
end
end)

View File

@@ -0,0 +1,58 @@
local cutscene_table = {
[1] = {},
[2] = {},
[3] = {},
[4] = {},
}
function COD:PrecacheCutscene(path, frames, dest)
for i=1,frames do
local num = i
if num < 10 then
num = "000"..num
elseif num < 100 then
num = "00"..num
elseif num < 1000 then
num = "0"..num
end
local mat = Material(path..num..".jpg")
table.insert(dest, mat)
end
end
function COD:PlayCutscene(tab, sound, fps, screenfade)
local time = 0
local tab = cutscene_table[tab]
surface.PlaySound(sound)
hook.Add("HUDPaint", "!!!CODCutscene", function()
time = time + FrameTime()
local frame = math.ceil(time/(1/fps))
if frame > #tab then
hook.Remove("HUDPaint", "!!!CODCutscene")
COD.HideHUD = false
if screenfade then
LocalPlayer():ScreenFade(SCREENFADE.IN, color_black, 1, 1)
end
else
surface.SetMaterial(tab[frame])
surface.SetDrawColor(255,255,255)
surface.DrawTexturedRect(0, 0, ScrW(), ScrH())
COD.HideHUD = true
end
end)
end
COD:PrecacheCutscene("tdmg/heli/spawn_cutscene/", 111, cutscene_table[1])
COD:PrecacheCutscene("tdmg/heli/shotdown_bullet_cutscene/", 117, cutscene_table[2])
COD:PrecacheCutscene("tdmg/heli/shotdown_rocket_cutscene/", 100, cutscene_table[3])
COD:PrecacheCutscene("tdmg/nuke/explode_cutscene/", 296, cutscene_table[4])
net.Receive("COD.Cutscene", function()
local tab = net.ReadTable()
local num = tab.num_of_cutscene
local snd = tab.path_of_sound
local fps = tab.fps
local scr = tab.screenfade
COD:PlayCutscene(num, snd, fps, scr)
end)

View File

@@ -0,0 +1,46 @@
local noafk = false
hook.Add("Think", "ButtonCheckErrors", function()
local ply = LocalPlayer()
if ply:KeyDown(IN_FORWARD) then
noafk = true
end
if noafk then
hook.Remove("Think", "ButtonCheckErrors")
local mod = ClientsideModel("models/player/breen.mdl")
timer.Simple(1, function()
local seq = mod:LookupSequence("laststand_idle")
mod:Remove()
if seq == -1 then
local frame = vgui.Create("DFrame")
frame:SetSize( 300, 150 )
frame:Center()
frame:SetTitle("CUSTOM ANIMS DONT WORK!")
frame:MakePopup()
local Labels = vgui.Create("DLabel", frame)
Labels:SetText("Animations don't work! You can try to fix them using this button. If you still see T-Pose animations or game crashing, then try restarting the game and removing the animation mods.")
Labels:SetWrap(true)
Labels:SetPos( 25, 25 )
Labels:SetSize( 250, 75 )
local DermaButton = vgui.Create("DButton", frame)
DermaButton:SetText("Try Fix")
DermaButton:SetPos( 25, 100 )
DermaButton:SetSize( 250, 30 )
DermaButton.DoClick = function()
RunConsoleCommand("wos_dynabase_fixconflicts")
RunConsoleCommand("wos_dynabase_reloadmodels")
frame:Remove()
end
end
if jit.version_num != 20100 then
surface.PlaySound("npc/turret_floor/ping.wav")
chat.AddText(Color(255,0,0), "[WARNING] ", Color(255,255,255), "I advise you to install the x64 version to avoid errors and improve performance.")
end
end)
end
end)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,225 @@
local TickTable = {}
local KillCamStore = {}
local hm_mat = Material('tdmg/hud/hitmark.png')
local function TransferBones(base, ragdoll)
if !IsValid(base) or !IsValid(ragdoll) then return end
for i = 0, ragdoll:GetPhysicsObjectCount() - 1 do
local bone = ragdoll:GetPhysicsObjectNum( i )
if ( IsValid( bone ) ) then
local pos, ang = base:GetBonePosition( ragdoll:TranslatePhysBoneToBone( i ) )
if ( pos ) then bone:SetPos( pos ) end
if ( ang ) then bone:SetAngles( ang ) end
end
end
end
local function GiveHitMarker(kill)
local alpha = 255
if not kill then
surface.PlaySound("tdmg/impacts/hit.wav")
hook.Add("HUDPaint", "TDMGHitsMark", function()
surface.SetDrawColor(255,255,255,alpha)
surface.SetMaterial(hm_mat)
surface.DrawTexturedRect(ScrW()/2-32, ScrH()/2-32, 64, 64)
alpha = alpha - FrameTime()*500
if alpha <= 0 then
hook.Remove("HUDPaint", "TDMGHitsMark")
end
end)
else
surface.PlaySound("tdmg/impacts/kill.wav")
hook.Add("HUDPaint", "TDMGHitsMark", function()
surface.SetDrawColor(220,40,40,alpha)
surface.SetMaterial(hm_mat)
surface.DrawTexturedRect(ScrW()/2-32, ScrH()/2-32, 64, 64)
alpha = alpha - FrameTime()*500
if alpha <= 0 then
hook.Remove("HUDPaint", "TDMGHitsMark")
end
end)
end
end
function COD:StopKillcam()
local ply = LocalPlayer()
hook.Remove("HUDPaint", "!!!KillCamTDM")
hook.Remove("Tick", "!!!KillCamTDM")
hook.Remove("CalcView", "!!!KillCamTDM")
ply.InKillCam = false
COD.HideHUD = false
ply:ConCommand("-jump")
ply:ConCommand("+jump")
timer.Simple(0.1, function()
ply:ConCommand("-jump")
end)
ply:ScreenFade(SCREENFADE.IN, color_black, 0.5, 0)
for _, ent in ipairs(ents.GetAll()) do
if not ent.IsKillcamEnt and (ent:IsPlayer() or ent:IsNPC() or ent:IsWeapon() or ent:GetClass() == "prop_ragdoll" or string.match(ent:GetClass(), "tdm_")) then
ent:SetNoDraw(false)
end
end
for _, ent in pairs(KillCamStore) do
ent:SetNoDraw(true)
ent:Remove()
end
KillCamStore = {}
end
function COD:GetMeFromTable(tab)
local tab2 = tab.other
for k=1,#tab2.ent do
local v = tab2.ent[k]
if v == LocalPlayer():EntIndex() then
return tab.other.alive[k], tab.other.pos[k], tab.other.ang[k]
end
end
end
function COD:PlayKillcam(tabl, islast)
if !GetConVar("cod_killcam_enable"):GetBool() and not islast then return end
local frame = 0
local tab = tabl[frame]
LocalPlayer():ScreenFade(SCREENFADE.IN, color_black, 0.5, 0)
hook.Add("HUDPaint", "!!!KillCamTDM", function()
if istable(tab) then
local alive, opos = COD:GetMeFromTable(tab)
if alive then
local pos = (opos+Vector(0,0,72)):ToScreen()
draw.SimpleText("YOU", "TDMG_SmallFont1", pos.x, pos.y-16, Color(200,150,0), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
draw.SimpleText("", "TDMG_SmallFont1", pos.x, pos.y, Color(200,150,0), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
end
end
surface.SetDrawColor(0,0,0,200)
surface.DrawRect(0, 0, ScrW(), 100)
surface.SetDrawColor(0,0,0,200)
surface.DrawRect(0, ScrH()-100, ScrW(), 100)
if islast then
draw.SimpleText(COD.Language["killcam_2"], "TDMG_LargeFont1", ScrW()/2, 50, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
else
draw.SimpleText(COD.Language["killcam_1"], "TDMG_LargeFont1", ScrW()/2, 50, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
draw.SimpleText(COD.Language["killcam_3"], "TDMG_MediumFont1", ScrW()/2, ScrH()-50, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
end
end)
hook.Add("Tick", "!!!KillCamTDM", function(ply, origin, angles, fov)
local ply = LocalPlayer()
local drawframes = true
ply.InKillCam = true
frame = frame + 1
tab = tabl[math.ceil(frame)]
COD.HideHUD = true
if frame >= #tabl or ply:KeyDown(IN_JUMP) or COD.HUD_DisableSomeThink then
COD:StopKillcam()
drawframes = false
end
if drawframes then
if istable(tab) then
local s1 = tab.ply.snd
if istable(s1) then
for _, ss in ipairs(s1) do
ply:EmitSound(ss)
end
tab.ply.snd = ""
end
local b1 = tab.ply.blt
if b1 != {} then
b1.Callback = nil
b1.Tracer = 0
ply:FireBullets(b1)
tab.ply.blt = {}
end
local hit = tab.ply.hit
if hit == 1 then
GiveHitMarker()
elseif hit == 2 then
GiveHitMarker(true)
end
local tab2 = tab.other
for v, ent in pairs(tab2.ent) do
local ent = Entity(ent)
if !IsValid(ent.KCModel) and tab2.model[v] != "" then
ent.KCModel = ClientsideModel(tab2.model[v])
table.insert(KillCamStore, ent.KCModel)
else
ent.KCModel.IsKillcamEnt = true
ent.KCModel:SetPos(tab2.pos[v])
ent.KCModel:SetAngles(tab2.ang[v])
ent.KCModel:SetModel(tab2.model[v])
ent.KCModel:SetSequence(tab2.seq[v])
ent.KCModel:SetPoseParameter("move_x", 1)
ent.KCModel:SetCycle(tab2.cycle[v])
ent.KCModel:SetNoDraw(!tab2.alive[v])
if tab2.alive[v] then
ent.SpawnRagdoll = false
end
if !tab2.alive[v] and !ent.SpawnRagdoll then
ent.SpawnRagdoll = true
local rag = ClientsideRagdoll(tab2.model[v])
rag:SetPos(tab2.pos[v])
rag.IsKillcamEnt = true
rag:SetNoDraw(false)
table.insert(KillCamStore, rag)
TransferBones(ent.KCModel, rag)
end
end
end
end
for _, ent in ipairs(ents.GetAll()) do
if not ent.IsKillcamEnt and (ent:IsPlayer() or ent:IsNPC() or ent:IsWeapon() or ent:GetClass() == "prop_ragdoll" or string.match(ent:GetClass(), "tdm_")) then
ent:SetNoDraw(true)
end
end
end
end)
local lastang =
hook.Add("CalcView", "!!!KillCamTDM", function(ply, origin, angles, fov)
if istable(tab) then
lastang = tab.ply.ang
if tab.ply.lock then
local alive, pos = COD:GetMeFromTable(tab)
if alive and isvector(pos) then
pos = pos+Vector(0,0,32)
lastang = (pos-tab.ply.pos):GetNormalized():Angle()
end
end
local view = {
origin = tab.ply.pos,
angles = lastang,
fov = fov,
drawviewer = false,
znear = 0.1,
zfar = 10000,
}
return view
end
end)
end
net.Receive("COD.KillcamSend", function()
local flt = net.ReadUInt(32)
local tab = net.ReadData(flt)
local bool = net.ReadBool()
tab = util.Decompress(tab)
local tab2 = util.JSONToTable(tab)
COD:PlayKillcam(tab2, bool)
end)

View File

@@ -0,0 +1,84 @@
local killfeed = vgui.Create("DPanel")
killfeed:SetSize(500, 290)
killfeed:SetPos(10, 400)
killfeed.Paint = function(self, w, h) end
local nametab = {
["prop_dynamic"] = "Killstreak",
["env_explosion"] = "Explosion",
["tdm_package"] = "Care Package",
["vj_tdm_k9"] = "Dog",
["vj_tdm_npc"] = "AI Soldier",
}
killicon.Add("default", "tdmg/hud/skull", Color(255,255,255))
killicon.Add("takedown", "tdmg/hud/takedown", Color(255,255,255))
killicon.Add("knife", "tdmg/hud/knife", Color(255,255,255))
killicon.Add("explosion", "tdmg/hud/explosion", Color(255,255,255))
local function AddKillfeedEntry(attacker, inflictor, killed)
if !IsValid(killed) then return end
local entry = vgui.Create("DPanel", killfeed)
entry:SetSize(200, 30)
entry:Dock(TOP)
entry:DockMargin(5, 5, 5, 0)
entry.Paint = function(self, w, h) end
local color1 = Color(255, 255, 255)
local name = ""
if IsValid(attacker) and attacker != killed then
if attacker:IsPlayer() then
name = attacker:Nick()
color1 = team.GetColor(attacker:Team())
elseif attacker:GetNWFloat('Team') then
name = nametab[attacker:GetClass()] or attacker.PrintName or attacker:GetClass()
color1 = team.GetColor(attacker:GetNWFloat('Team'))
else
name = nametab[attacker:GetClass()] or attacker.PrintName or attacker:GetClass()
color1 = Color(200,200,200)
end
local attackerLabel = vgui.Create("DLabel", entry)
attackerLabel:SetText(name.." ")
attackerLabel:SetFont("TDMG_SmallFont1")
attackerLabel:SetColor(color1)
attackerLabel:SizeToContents()
attackerLabel:Dock(LEFT)
end
local inflictorLabel = vgui.Create("DKillIcon", entry)
inflictorLabel:SetPos(entry:GetPos())
inflictorLabel:SetName(inflictor)
inflictorLabel:SizeToContents()
inflictorLabel:Dock(LEFT)
if killed:IsPlayer() then
name = killed:Nick()
color1 = team.GetColor(killed:Team())
else
name = killed:GetPrintName()
color1 = Color(200,200,200)
end
local killedLabel = vgui.Create("DLabel", entry)
killedLabel:SetText(" "..name)
killedLabel:SetFont("TDMG_SmallFont1")
killedLabel:SetColor(color1)
killedLabel:SizeToContents()
killedLabel:Dock(LEFT)
timer.Simple(10, function()
if !IsValid(entry) then return end
entry:AlphaTo(0, 1, 0, function(ad, pnl)
pnl:Remove()
end)
end)
end
net.Receive("COD.Killfeed", function()
local tab = net.ReadTable()
local att = tab.attacker
local inf = tab.inflictor
local tar = tab.target
AddKillfeedEntry(att, inf, tar)
end)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,164 @@
OUTLINE_MODE_BOTH = 0
OUTLINE_MODE_NOTVISIBLE = 1
OUTLINE_MODE_VISIBLE = 2
local istable = istable
local render = render
local LocalPlayer = LocalPlayer
local Material = Material
local CreateMaterial = CreateMaterial
local hook = hook
local cam = cam
local ScrW = ScrW
local ScrH = ScrH
local IsValid = IsValid
local surface = surface
module( "outline", package.seeall )
local List, ListSize = {}, 0
local RenderEnt = NULL
local OutlineMatSettings = {
[ "$ignorez" ] = 1,
[ "$alphatest" ] = 1
}
local CopyMat = Material( "pp/copy" )
local OutlineMat = CreateMaterial( "OutlineMat", "UnlitGeneric", OutlineMatSettings )
local StoreTexture = render.GetScreenEffectTexture( 0 )
local DrawTexture = render.GetScreenEffectTexture( 1 )
local ENTS = 1
local COLOR = 2
local MODE = 3
function Add( ents, color, mode )
if ( ListSize >= 255 ) then return end --Maximum 255 reference values
if ( !istable( ents ) ) then ents = { ents } end --Support for passing Entity as first argument
if ( ents[ 1 ] == nil ) then return end --Do not pass empty tables
local t = {
[ ENTS ] = ents,
[ COLOR ] = color,
[ MODE ] = mode or OUTLINE_MODE_BOTH
}
ListSize = ListSize + 1
List[ ListSize ] = t
end
function RenderedEntity()
return RenderEnt
end
local function Render()
local ply = LocalPlayer()
local IsLineOfSightClear = ply.IsLineOfSightClear
local scene = render.GetRenderTarget()
render.CopyRenderTargetToTexture( StoreTexture )
local w = ScrW()
local h = ScrH()
render.Clear( 0, 0, 0, 0, true, true )
render.SetStencilEnable( true )
cam.IgnoreZ( true )
render.SuppressEngineLighting( true )
render.SetStencilWriteMask( 0xFF )
render.SetStencilTestMask( 0xFF )
render.SetStencilCompareFunction( STENCIL_ALWAYS )
render.SetStencilFailOperation( STENCIL_KEEP )
render.SetStencilZFailOperation( STENCIL_REPLACE )
render.SetStencilPassOperation( STENCIL_REPLACE )
cam.Start3D()
for i = 1, ListSize do
local v = List[ i ]
local mode = v[ MODE ]
local ents = v[ ENTS ]
render.SetStencilReferenceValue( i )
for j = 1, #ents do
local ent = ents[ j ]
if ( !IsValid( ent ) ) then continue end
if ( ( mode == OUTLINE_MODE_NOTVISIBLE && IsLineOfSightClear( ply, ent ) ) || ( mode == OUTLINE_MODE_VISIBLE && !IsLineOfSightClear( ply, ent ) ) ) then
continue
end
RenderEnt = ent
ent:DrawModel()
end
end
RenderEnt = NULL
cam.End3D()
render.SetStencilCompareFunction( STENCIL_EQUAL )
cam.Start2D()
for i = 1, ListSize do
render.SetStencilReferenceValue( i )
surface.SetDrawColor( List[ i ][ COLOR ] )
surface.DrawRect( 0, 0, w, h )
end
cam.End2D()
render.SuppressEngineLighting( false )
cam.IgnoreZ( false )
render.SetStencilEnable( false )
render.CopyRenderTargetToTexture( DrawTexture )
render.SetRenderTarget( scene )
CopyMat:SetTexture( "$basetexture", StoreTexture )
render.SetMaterial( CopyMat )
render.DrawScreenQuad()
render.SetStencilEnable( true )
render.SetStencilReferenceValue( 0 )
render.SetStencilCompareFunction( STENCIL_EQUAL )
OutlineMat:SetTexture( "$basetexture", DrawTexture )
render.SetMaterial( OutlineMat )
render.DrawScreenQuadEx( -1, -1, w ,h )
render.DrawScreenQuadEx( -1, 0, w, h )
render.DrawScreenQuadEx( -1, 1, w, h )
render.DrawScreenQuadEx( 0, -1, w, h )
render.DrawScreenQuadEx( 0, 1, w, h )
render.DrawScreenQuadEx( 1, 1, w, h )
render.DrawScreenQuadEx( 1, 0, w, h )
render.DrawScreenQuadEx( 1, 1, w, h )
render.SetStencilEnable( false )
end
hook.Add( "PostDrawEffects", "RenderOutlines", function()
hook.Run( "PreDrawOutlines" )
if ( ListSize == 0 ) then return end
Render()
List, ListSize = {}, 0
end )

View File

@@ -0,0 +1,213 @@
local cachedEntities = {}
local max_radar_distance = 800
local max_radar_distance_sqr = max_radar_distance ^ 2
local radar_scale = 2
local uav_update_rate = 5
local radarMat = Material("tdmg/hud/radar.png", "noclamp")
local glitchMat = Material("tdmg/hud/glitch.png", "noclamp")
local playerMat = Material("tdmg/hud/radar/player.png", "noclamp")
local enemyColor = Color(200, 50, 0)
local playerColor = Color(0, 150, 250)
local yourColor = Color(255, 255, 0)
local enemyMat = Material("tdmg/hud/radar/enemy.png", "noclamp")
local UAVEnemies = {}
local function GetFriends()
cachedEntities = {}
for k, v in pairs(ents.FindInSphere(LocalPlayer():GetPos(), max_radar_distance * radar_scale)) do
if !v:IsPlayer() or v == LocalPlayer() or !v:Alive() or v:Team() != LocalPlayer():Team() then continue end
table.insert(cachedEntities, v)
end
return cachedEntities
end
local function GetEnemies(ismuav)
cachedEntities = {}
for k, v in pairs(ents.FindInSphere(LocalPlayer():GetPos(), max_radar_distance * radar_scale)) do
if !v:IsPlayer() or v == LocalPlayer() or !v:Alive() or v:Team() == LocalPlayer():Team() then continue end
if not ismuav then
table.insert(cachedEntities, {pos = v:GetPos(), alpha = 255})
UAVEnemies = cachedEntities
else
table.insert(cachedEntities, v)
end
end
return cachedEntities
end
local function GetEntities()
cachedEntities = {}
for k, v in pairs(ents.FindInSphere(LocalPlayer():GetPos(), max_radar_distance * radar_scale)) do
if v:IsPlayer() or v:Health() <= 0 then continue end
if v:GetNWFloat('Team') > 0 then
table.insert(cachedEntities, v)
end
end
return cachedEntities
end
local IconsEntityTab = {
["tdm_harrier"] = {mat = Material("tdmg/hud/radar/jet.png"), rotate = true, size = 32, without_uav = true, bone = "tag_body"},
["tdm_infil"] = {mat = Material("tdmg/hud/radar/heli.png"), rotate = true, size = 32, without_uav = true, bone = "tag_body"},
["tdm_mi24"] = {mat = Material("tdmg/hud/radar/heli.png"), rotate = true, size = 32, without_uav = true, bone = "Body"},
["tdm_ah64"] = {mat = Material("tdmg/hud/radar/heli.png"), rotate = true, size = 32, without_uav = true, bone = "root"},
["tdm_drone"] = {mat = Material("tdmg/hud/radar/drone.png"), rotate = true, size = 16, without_uav = false},
["tdm_sentry"] = {mat = Material("tdmg/hud/radar/turret.png"), rotate = false, size = 24, without_uav = false},
["vj_tdm_k9"] = {mat = Material("tdmg/hud/radar/dog.png"), rotate = false, size = 20, without_uav = false},
["vj_tdm_npc"] = {mat = Material("tdmg/hud/radar/soldier.png"), rotate = false, size = 20, without_uav = false},
["vj_tdm_invasion_soldier1"] = {mat = Material("tdmg/hud/radar/enemy.png"), rotate = false, size = 16, without_uav = false},
["vj_tdm_invasion_soldier2"] = {mat = Material("tdmg/hud/radar/enemy.png"), rotate = false, size = 16, without_uav = false},
}
local function Draw()
if COD.HideHUD or !LocalPlayer():Alive() then return end
local w, h = ScrW(), ScrH()
local x, y, size = 10, 10, 250
local cx, cy = x + size / 2, y + size / 2
local playerSize = 24
local enemySize = 16
local IsMUAV = false
local ply = LocalPlayer()
draw.RoundedBox(0, x, y, size, size, Color(0, 0, 0, 200))
local localPos = ply:GetPos()
local localAng = ply:GetAngles()
if not COD.Counter_UAV_Active then
local entities = GetFriends()
for k, ent in pairs(entities) do
if !IsValid(ent) then continue end
local enemyPos = ply:GetPos() - ent:GetPos()
enemyPos:Rotate(Angle(180, (ply:EyeAngles().y) * -1, -180))
local ex = size / 2 * (enemyPos.y / max_radar_distance / radar_scale)
local ey = size / 2 * (enemyPos.x / max_radar_distance / radar_scale)
local posx = cx - ex - (enemySize / 2)
local posy = cy - ey - (enemySize / 2)
local mat = enemyMat
posx = math.Clamp(posx, x, x + size - playerSize / 2)
posy = math.Clamp(posy, y, y + size - playerSize / 2)
local size = playerSize
surface.SetDrawColor(playerColor)
surface.SetMaterial(playerMat)
surface.DrawTexturedRectRotated(posx + size / 4, posy + size / 4, size, size, (ent:IsPlayer() and ent:EyeAngles() or ent:GetAngles()).y + ply:EyeAngles().y * -1)
end
local entnpc = GetEntities()
for k, ent in pairs(entnpc) do
if !IsValid(ent) then continue end
local data = IconsEntityTab[ent:GetClass()]
local enemyPos = ply:GetPos() - ent:GetPos()
local enemyAng = ent:GetAngles().y
if data and data.bone then
local bonepos, boneang = ent:GetBonePosition(ent:LookupBone(data.bone))
enemyPos = ply:GetPos() - bonepos
enemyAng = boneang.y
end
enemyPos:Rotate(Angle(180, (ply:EyeAngles().y) * -1, -180))
local ex = size / 2 * (enemyPos.y / max_radar_distance / radar_scale)
local ey = size / 2 * (enemyPos.x / max_radar_distance / radar_scale)
local posx = cx - ex - (enemySize / 2)
local posy = cy - ey - (enemySize / 2)
posx = math.Clamp(posx, x, x + size - playerSize / 2)
posy = math.Clamp(posy, y, y + size - playerSize / 2)
local size = playerSize
if ent:GetNWFloat('Team') == LocalPlayer():Team() then
surface.SetDrawColor(playerColor)
else
surface.SetDrawColor(enemyColor)
end
if data then
if not data.without_uav and ent:GetNWFloat('Team') != LocalPlayer():Team() and (not COD.UAV_Active and not COD.Adv_UAV_Active) then continue end
surface.SetMaterial(data.mat)
size = data.size
if data.rotate then
surface.DrawTexturedRectRotated(posx + size / 4, posy + size / 4, size, size, enemyAng + ply:EyeAngles().y * -1)
else
surface.DrawTexturedRectRotated(posx + size / 4, posy + size / 4, size, size, 0)
end
else
surface.SetMaterial(enemyMat)
size = 12
surface.DrawTexturedRectRotated(posx + size / 4, posy + size / 4, size, size, 0)
end
end
if not COD.Adv_UAV_Active and COD.UAV_Active then
if uav_update_rate < CurTime() then
uav_update_rate = CurTime() + 4
GetEnemies()
end
local entities = UAVEnemies
for k, ent in pairs(entities) do
ent.alpha = math.max(ent.alpha - FrameTime()*75, 0)
local enemyPos = ply:GetPos() - ent.pos
enemyPos:Rotate(Angle(180, (ply:EyeAngles().y) * -1, -180))
local ex = size / 2 * (enemyPos.y / max_radar_distance / radar_scale)
local ey = size / 2 * (enemyPos.x / max_radar_distance / radar_scale)
local posx = cx - ex - (enemySize / 2)
local posy = cy - ey - (enemySize / 2)
local mat = enemyMat
posx = math.Clamp(posx, x, x + size - playerSize / 2)
posy = math.Clamp(posy, y, y + size - playerSize / 2)
local size = enemySize
surface.SetDrawColor(Color(enemyColor.r, enemyColor.g, enemyColor.b, ent.alpha))
surface.SetMaterial(enemyMat)
surface.DrawTexturedRectRotated(posx + size / 4, posy + size / 4, size, size, 0)
end
end
if COD.Adv_UAV_Active then
local entities = GetEnemies(true)
for k, ent in pairs(entities) do
if !IsValid(ent) then continue end
local enemyPos = ply:GetPos() - ent:GetPos()
enemyPos:Rotate(Angle(180, (ply:EyeAngles().y) * -1, -180))
local ex = size / 2 * (enemyPos.y / max_radar_distance / radar_scale)
local ey = size / 2 * (enemyPos.x / max_radar_distance / radar_scale)
local posx = cx - ex - (enemySize / 2)
local posy = cy - ey - (enemySize / 2)
local mat = enemyMat
posx = math.Clamp(posx, x, x + size - playerSize / 2)
posy = math.Clamp(posy, y, y + size - playerSize / 2)
local size = playerSize
surface.SetDrawColor(enemyColor)
surface.SetMaterial(playerMat)
surface.DrawTexturedRectRotated(posx + size / 4, posy + size / 4, size, size, (ent:IsPlayer() and ent:EyeAngles() or ent:GetAngles()).y + ply:EyeAngles().y * -1)
end
end
surface.SetMaterial(playerMat)
surface.SetDrawColor(yourColor)
surface.DrawTexturedRect(cx - playerSize / 2, cy - playerSize / 2, playerSize, playerSize)
else
surface.SetDrawColor(Color(255, 255, 255, 255))
surface.SetMaterial(glitchMat)
surface.DrawTexturedRect(x, y, size, size)
end
surface.SetDrawColor(Color(255, 255, 255, 255))
surface.SetMaterial(radarMat)
surface.DrawTexturedRect(x, y, size, size)
end
hook.Add("HUDPaint", "MWRadar", Draw)

View File

@@ -0,0 +1,238 @@
surface.CreateFont( "mw2score_servername", {
font = "ChatFont",
extended = false,
size = 20,
weight = 500,
blursize = 0,
scanlines = 0,
antialias = true,
underline = false,
italic = false,
strikeout = false,
symbol = false,
rotary = false,
shadow = false,
additive = false,
outline = false,
} )
surface.CreateFont( "mw2score_gamemodename", {
font = "ChatFont",
extended = false,
size = 40,
weight = 500,
blursize = 0,
scanlines = 0,
antialias = true,
underline = false,
italic = false,
strikeout = false,
symbol = false,
rotary = false,
shadow = false,
additive = false,
outline = false,
} )
surface.CreateFont( "mw2score_playername", {
font = "ChatFont",
extended = false,
size = 20,
weight = 500,
blursize = 0,
scanlines = 0,
antialias = true,
underline = false,
italic = false,
strikeout = false,
symbol = false,
rotary = false,
shadow = false,
additive = false,
outline = false,
} )
local Scoredefault_black = Color(0,0,0,200)
local plycolor = Color(255,255,255)
local servername = GetHostName()
local gamemodename = COD.Language["gamemode_"..COD.DataTable["Gamemode"]]
local servernamedata = {
text = servername,
xalign = TEXT_ALIGN_CENTER,
font = "mw2score_servername"
}
local gamemodenamedata = {
text = gamemodename,
xalign = TEXT_ALIGN_CENTER,
font = "mw2score_gamemodename"
}
local playertextdata= {
xalign = TEXT_ALIGN_LEFT,
font = "mw2score_playername"
}
local detaildata = {
xalign = TEXT_ALIGN_LEFT,
font = "ChatFont"
}
local avtab = {}
local function CreatePlayerAvatar(ply,x,y)
if !ply.mw2avatar then
local avatar = vgui.Create("AvatarImage")
avatar:SetPos(x,y)
avatar:SetSize(27,27)
avatar:SetPlayer(ply)
ply.mw2avatar = avatar
table.insert(avtab, avatar)
end
end
local function RemoveAvatars()
local players = player.GetAll()
for k, ply in ipairs(players) do
if ply.mw2avatar then
ply.mw2avatar:Remove()
ply.mw2avatar = nil
table.RemoveByValue(avtab, ply.mw2avatar)
end
end
for k, v in ipairs(avtab) do
v:Remove()
table.remove(avtab, k)
end
end
local team1_mat = Material('tdmg/hud/teams/specgru.png')
local team2_mat = Material('tdmg/hud/teams/kortac.png')
local function MW2SCORE_RenderScoreboard()
gamemodename = COD.Language["gamemode_"..COD.DataTable["Gamemode"]]
gamemodenamedata = {
text = gamemodename,
xalign = TEXT_ALIGN_CENTER,
font = "mw2score_gamemodename"
}
hook.Add("HUDPaint","MW2SCORE_RENDER",function()
local w,h = ScrW(),ScrH()
local xoffset = 50
local players = team.GetPlayers(1)
local players2 = team.GetPlayers(2)
table.sort(players, function(a,b)
return a:GetNWFloat('Score') > b:GetNWFloat('Score')
end)
table.sort(players2, function(a,b)
return a:GetNWFloat('Score') > b:GetNWFloat('Score')
end)
-- Server Name
surface.SetDrawColor(Scoredefault_black)
surface.DrawRect(0, h/15, w, 50)
servernamedata.pos = {w/2,h/8.5}
draw.TextShadow(servernamedata,2,255)
gamemodenamedata.pos = {w/2,h/14}
draw.TextShadow(gamemodenamedata,2,255)
detaildata.xalign = 1
detaildata.pos = {w-245,h/5.7}
detaildata.text = COD.Language["scoreboard_score"]
draw.TextShadow(detaildata,2,255)
detaildata.xalign = 1
detaildata.pos = {w-145,h/5.7}
detaildata.text = COD.Language["scoreboard_kd"]
draw.TextShadow(detaildata,2,255)
surface.SetDrawColor(color_white)
surface.SetMaterial(team2_mat)
surface.DrawTexturedRect(w-600, h/5.7-25, 72, 72)
draw.SimpleText(COD.Language["team2_name"], "mw2score_gamemodename", w-512, h/5.7+10, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
detaildata.xalign = 1
detaildata.pos = {400+xoffset,h/5.7}
detaildata.text = COD.Language["scoreboard_score"]
draw.TextShadow(detaildata,2,255)
detaildata.xalign = 1
detaildata.pos = {550,h/5.7}
detaildata.text = COD.Language["scoreboard_kd"]
draw.TextShadow(detaildata,2,255)
surface.SetDrawColor(color_white)
surface.SetMaterial(team1_mat)
surface.DrawTexturedRect(80, h/5.7-40, 80, 96)
draw.SimpleText(COD.Language["team1_name"], "mw2score_gamemodename", 170, h/5.7+10, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
for index, ply in ipairs(players) do
if !IsValid(ply) then continue end
if ply:IsPlayer() then
local name = ply:GetName()
local kills = ply:Frags()
local deaths = ply:Deaths()
local curteam = ply:Team()
local teamcolor = team.GetColor(curteam)
local row = (h/5)+(index*40)
CreatePlayerAvatar(ply, 100,row)
plycolor.r = teamcolor.r
plycolor.g = teamcolor.g
plycolor.b = teamcolor.b
surface.SetDrawColor(Scoredefault_black)
surface.DrawRect(95, row-5, 500, 35)
playertextdata.text = name
playertextdata.pos = {150,row}
playertextdata.color = plycolor
draw.TextShadow(playertextdata,2,255)
detaildata.pos = {450,row}
detaildata.text = tostring(ply:GetNWFloat('Score'))
draw.TextShadow(detaildata,2,255)
detaildata.pos = {550,row}
detaildata.text = tostring(kills.."/"..deaths)
draw.TextShadow(detaildata,2,255)
end
end
for index, ply in ipairs(players2) do
if !IsValid(ply) then continue end
if ply:IsPlayer() then
local name = ply:GetName()
local kills = ply:Frags()
local deaths = ply:Deaths()
local curteam = ply:Team()
local teamcolor = team.GetColor(curteam)
local row = (h/5)+(index*40)
CreatePlayerAvatar(ply, w-590 ,row)
plycolor.r = teamcolor.r
plycolor.g = teamcolor.g
plycolor.b = teamcolor.b
surface.SetDrawColor(Scoredefault_black)
surface.DrawRect(w-595, row-5, 500, 35)
playertextdata.text = name
playertextdata.pos = {w-540,row}
playertextdata.color = plycolor
draw.TextShadow(playertextdata,2,255)
detaildata.pos = {w-245,row}
detaildata.text = tostring(ply:GetNWFloat('Score'))
draw.TextShadow(detaildata,2,255)
detaildata.pos = {w-145,row}
detaildata.text = tostring(kills.."/"..deaths)
draw.TextShadow(detaildata,2,255)
end
end
end)
end
local function MW2SCORE_HideScoreboard()
hook.Remove("HUDPaint","MW2SCORE_RENDER")
RemoveAvatars()
end
hook.Add("ScoreboardShow","MW2SCORE_NoDefault",function()
MW2SCORE_RenderScoreboard()
COD.HideHUD = true
return true
end)
hook.Add("ScoreboardHide","MW2SCORE_HideScore",function()
MW2SCORE_HideScoreboard()
COD.HideHUD = false
end)
--original by StarFrost, i edited it for gamemode

View File

@@ -0,0 +1,132 @@
local sdeltaTime = sdeltaTime or 0
local SysTime = SysTime
local FrameTime = FrameTime
local start_delta_time = 0
local is_second_tick = false
hook.Add('Tick', 'sFixedDeltaTime', function()
if is_second_tick then
sdeltaTime = SysTime() - start_delta_time
else
start_delta_time = SysTime()
end
is_second_tick = not is_second_tick
end)
local function magnitude(vec)
local magnitude = vec
magnitude = magnitude.x ^ 2 + magnitude.y ^ 2 + magnitude.z ^ 2
magnitude = math.sqrt(magnitude)
return magnitude
end
local function MoveTowardsVector(current_vector, target_vector, delta_time)
local direction_vector = target_vector - current_vector
local magnitude = magnitude(direction_vector)
if magnitude <= delta_time or magnitude == 0 then
return target_vector
end
return current_vector + direction_vector / magnitude * delta_time
end
local rndhooks = {}
net.Receive("COD.TakedownCam", function()
local cam1 = net.ReadBool()
local float = net.ReadFloat()
local toplayer = net.ReadBool()
local rnd = math.random(1,999999999)
table.insert(rndhooks, "TakedownCam"..rnd)
if true then
local ply = LocalPlayer()
local delta = sdeltaTime
local deltanum = 2
local deltamult = 16
local ang_fix = ply:GetAngles()
local forwardplus = ang_fix:Forward()*math.Rand(32,64)
local rightplus = ang_fix:Right()*math.Rand(32,64)
local upplus = Vector(0,0,math.Rand(16,32))
if math.random(1,2) == 2 then
forwardplus = ply:GetForward()*math.Rand(-64,-32)
end
if math.random(1,2) == 2 then
rightplus = ply:GetRight()*math.Rand(-64,-32)
end
local endpos = ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1"))+forwardplus+rightplus+upplus
local curpos = ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1"))
local angle1 = Angle(0,0,0)
local dist = 0
local drawv = true
local tohead = false
timer.Simple(float/2, function()
deltamult = 0
end)
if toplayer then
timer.Simple(float, function()
tohead = true
deltamult = 128
end)
end
if cam1 then
hook.Add("CalcView", "TakedownCam"..rnd, function( ply, pos, angles, fov )
curpos = MoveTowardsVector(curpos, endpos, delta*deltanum)
angle1 = (ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1"))-curpos):GetNormalized():Angle()
dist = curpos:Distance(ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1")))
if tohead then
endpos = ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1"))
end
if deltamult > 0 then
deltanum = deltanum+FrameTime()*deltamult
end
if dist < 8 and tohead then
drawv = false
angle1 = ply:EyeAngles()
else
drawv = true
end
local view = {
angles = angle1,
origin = curpos,
fov = fov,
drawviewer = drawv,
nearz = 16,
}
if ply:Alive() then
COD.HideHUD = true
return view
end
end)
timer.Simple(float+0.7, function()
hook.Remove("CalcView", "TakedownCam"..rnd)
table.RemoveByValue(rndhooks, "TakedownCam"..rnd)
COD.HideHUD = false
end)
else
for _, v in pairs(rndhooks) do
hook.Remove("CalcView", v)
table.RemoveByValue(rndhooks, v)
end
COD.HideHUD = false
end
end
end)
hook.Add("CalcMainActivity", "!TDMAnims", function(ply, vel)
local str = ply:GetNWString('SVAnim')
local num = ply:GetNWFloat('SVAnimDelay')
local st = ply:GetNWFloat('SVAnimStartTime')
if str != "" then
ply:SetCycle((CurTime()-st)/num)
return -1, ply:LookupSequence(str)
end
end)

View File

@@ -0,0 +1,33 @@
-----------------
AddCSLuaFile("shared.lua")
AddCSLuaFile("client/cl_hud.lua")
AddCSLuaFile("client/cl_outline.lua")
AddCSLuaFile("client/cl_menu.lua")
AddCSLuaFile("client/cl_takedown.lua")
AddCSLuaFile("client/cl_scoreboard.lua")
AddCSLuaFile("client/cl_abilities.lua")
AddCSLuaFile("client/cl_killfeed.lua")
AddCSLuaFile("client/cl_radar.lua")
AddCSLuaFile("client/cl_cutscenes.lua")
AddCSLuaFile("client/cl_killcam.lua")
AddCSLuaFile("client/cl_error.lua")
AddCSLuaFile("post_shared.lua")
local files1 = file.Find("cod_tdm/*", "LUA")
for k, v in ipairs(files1) do
AddCSLuaFile("cod_tdm/"..v)
end
include("shared.lua")
include("server/sv_functions.lua")
include("server/sv_killstreaks.lua")
include("server/sv_takedown.lua")
include("server/sv_abilities.lua")
include("server/sv_killcam.lua")
include("server/sv_invasion.lua")
include("server/sv_knockout.lua")
include("server/sv_infected.lua")
include("server/sv_domination.lua")
include("other/sv_mwii_npc.lua")
include("post_shared.lua")

View File

@@ -0,0 +1,100 @@
COD.Language = {
["team1_name"] = "SpecGru",
["team2_name"] = "KorTac",
["scoreboard_score"] = "Pontuação",
["scoreboard_kd"] = "K/D",
["menu_warning_ks"] = "Aviso! Sua sequência de mortes será atualizada quando a rodada terminar.",
["menu_mainweapon"] = "Sua principal arma é: ",
["menu_secweapon"] = "Sua arma secundária é: ",
["menu_ks_choose"] = "Seleção de Killstreak - ",
["menu_mainperk"] = "Selecione o Vantagem Principal",
["menu_highperk"] = "Selecione a Vantagem Alta ",
["menu_choosemain"] = "Seleção de Armas Principais",
["menu_choosesec"] = "Seleção de Armas Secundárias",
["menu_apply"] = "Aplicar",
["hud_killed"] = "MATOU: ",
["hud_killer"] = "Matador: ",
["hud_teamdeathmatch"] = "MATA-MATA POR EQUIPES",
["hud_win"] = "VICTORY",
["hud_lose"] = "DEFEAT",
["hud_unlockmainperk"] = " - Vantagem principal desbloqueada!",
["hud_unlockhighperk"] = " - Alto Privilégio Desbloqueado!",
["hud_unlockkillstreak"] = "Pronto para usar!",
["hud_package"] = "Pressione [E] para pegar ",
["hud_fullpackage"] = "Pressione [E] para pegar o pacote",
["hud_revive"] = "Reanimando",
["hud_torevive"] = "Pressione E para reanimar",
["hud_reviver"] = "Você está sendo reanimado",
["hud_selfrevive"] = "Progresso do Auto-Revive",
["hud_toselfrevive"] = "Segure E para se auto-reviver",
["hud_kills"] = "matanças: ",
["hud_killstreak"] = "Sequência de mortes",
["hud_nuke"] = "LANÇAMENTO DE MÍSSEIS BALÍSTICOS DETECTADO",
["hud_scoreadd_1"] = "+100 Matar",
["hud_scoreadd_2"] = "+110 Tiro na cabeça",
["hud_scoreadd_3"] = "+150 Movimento do finalizador",
["hud_scoreadd_4"] = "+50 Reforços destruídos",
["hud_scoreadd_5"] = "+125 Melee",
["hud_scoreadd_6"] = "+100 Reanimar",
["hud_scoreadd_7"] = "+250 Pedido de Socorro",
["contols_main"] = "Controle:",
["contols_f1"] = "ESC - Editar Loadout",
["contols_e"] = "E - Movimento do Finalizador",
["contols_q"] = "Q, G - Jogar granada",
["contols_v"] = "V - Use Faca",
["contols_0"] = "7,8,9,0 - Use Sequência de morte",
["contols_tab"] = "Tab - Painel de pontos",
["contols_open"] = "Mantenha pressionada a tecla INSERT para abrir controles.",
["killstreak_1"] = "UAV",
["killstreak_2"] = "Bomb Drone",
["killstreak_3"] = "Armor",
["killstreak_4"] = "Care Package",
["killstreak_5"] = "Counter-UAV",
["killstreak_6"] = "Cluster Mine",
["killstreak_7"] = "Precision Airstrike",
["killstreak_8"] = "K9 Unit",
["killstreak_9"] = "Sentry Gun",
["killstreak_10"] = "Air Patrol",
["killstreak_11"] = "Mortar Strike",
["killstreak_12"] = "SAE",
["killstreak_13"] = "Overwatch Helo",
["killstreak_14"] = "VTOL",
["killstreak_15"] = "Reinforcement",
["killstreak_16"] = "Stealth Bomber",
["killstreak_17"] = "Chopper Gunner",
["killstreak_18"] = "Advanced UAV",
["killstreak_19"] = "Emergency Airdrop",
["killstreak_20"] = "AC-130",
["killstreak_21"] = "Juggernaut",
["killstreak_22"] = "MGB",
["perk_1_1"] = "Esquadrão Antibombas",
["perk_1_2"] = "Observador",
["perk_1_3"] = "Linha-dura",
["perk_1_4"] = "Reabastecimento",
["perk_1_1_desc"] = "Reduz os danos causados pela explosão.",
["perk_1_2_desc"] = "Capacidade de ver pacotes inimigos e reforços através das paredes.",
["perk_1_3_desc"] = "Reduz as sequências de morte em 1.",
["perk_1_4_desc"] = "A cada 30 segundos, você ganha 1 carregador para sua arma atual.",
["perk_2_1"] = "Solução rápida",
["perk_2_2"] = "Sobrevivente",
["perk_2_3"] = "Fantasma",
["perk_2_4"] = "Sangue frio",
["perk_2_1_desc"] = "Sua saúde se regenera após 3 segundos em vez de 8 segundos.",
["perk_2_2_desc"] = "Em vez de morrer, você entra no estado final do traço 1 vez por vida.",
["perk_2_3_desc"] = "Invisível para UAVs.",
["perk_2_4_desc"] = "Invisível para veículos e reforços inimigos.",
["gamemode_1"] = "Mata-Mata em equipe",
["gamemode_2"] = "Invasão",
["gamemode_3"] = "Nocaute",
["gamemode_1_desc"] = "Eliminate the enemy at all costs.",
["gamemode_2_desc"] = "Eliminate the enemy at all costs.",
["gamemode_3_desc"] = "Eliminate the enemy at all costs.",
}

View File

@@ -0,0 +1,169 @@
COD.Language = {
["team1_name"] = "SpecGru",
["team2_name"] = "KorTac",
["scoreboard_score"] = "Score",
["scoreboard_kd"] = "K/D",
["menu_warning_ks"] = "Warning! Your kill streak will be refreshed when the round ends.",
["menu_mainweapon"] = "Your main weapon is: ",
["menu_secweapon"] = "Your secondary weapon is: ",
["menu_ks_choose"] = "Killstreak selection - ",
["menu_mainperk"] = "Select Main Perk",
["menu_highperk"] = "Select High Perk",
["menu_choosemain"] = "Main Weapon Selection",
["menu_choosesec"] = "Secondary Weapon Selection",
["menu_apply"] = "Apply",
["hud_killer"] = "Killer: ",
["hud_killed"] = "KILLED: ",
["hud_teamdeathmatch"] = "TEAM DEATHMATCH",
["hud_win"] = "VICTORY",
["hud_lose"] = "DEFEAT",
["hud_unlockmainperk"] = " - Main Perk unlocked!",
["hud_unlockhighperk"] = " - High Perk Unlocked!",
["hud_unlockkillstreak"] = "Ready to use!",
["hud_package"] = "Press [E] to pick up ",
["hud_fullpackage"] = "Press [E] to pick up the package",
["hud_revive"] = "Revive Progress",
["hud_torevive"] = "Press E to revive",
["hud_reviver"] = "You are being revived",
["hud_selfrevive"] = "Self-Revive Progress",
["hud_toselfrevive"] = "Hold E to self-revive",
["hud_kills"] = "Kills: ",
["hud_killstreak"] = "Killstreak",
["hud_nuke"] = "MGB INBOUND",
["hud_scoreadd_1"] = "+100 Kill",
["hud_scoreadd_2"] = "+110 Headshot",
["hud_scoreadd_3"] = "+150 Finisher Move",
["hud_scoreadd_4"] = "+50 Reinforcements destroyed",
["hud_scoreadd_5"] = "+125 Melee",
["hud_scoreadd_6"] = "+100 Revive",
["hud_scoreadd_7"] = "+250 Mayday",
["hud_message_1"] = "First Infected",
["hud_message_2"] = "Last Survivor",
["hud_message_3"] = "+50 Survivor",
["hud_domination_1"] = "CAPTURE",
["hud_domination_2"] = "SECURE",
["hud_domination_3"] = "PROGRESS",
["hud_domination_4"] = "+200 Neutral zone captured",
["hud_domination_5"] = "+100 Enemy zone captured",
["hud_invasion_1"] = "SUPPLY BOXES ON THE WAY",
["hud_invasion_2"] = "HEAVY REINFORCEMENTS ON THE WAY",
["contols_main"] = "Control:",
["contols_f1"] = "ESC - Edit Loadout",
["contols_e"] = "E - Finisher Move",
["contols_q"] = "Q, G - Throw Grenade",
["contols_v"] = "V - Use Knife",
["contols_0"] = "7,8,9,0 - Use Killstreak",
["contols_tab"] = "Tab - Scoreboard",
["contols_open"] = "Hold INSERT to open controls.",
["killstreak_1"] = "UAV",
["killstreak_2"] = "Bomb Drone",
["killstreak_3"] = "Armor",
["killstreak_4"] = "Care Package",
["killstreak_5"] = "Counter-UAV",
["killstreak_6"] = "Cluster Mine",
["killstreak_7"] = "Precision Airstrike",
["killstreak_8"] = "K9 Unit",
["killstreak_9"] = "Sentry Gun",
["killstreak_10"] = "Air Patrol",
["killstreak_11"] = "Mortar Strike",
["killstreak_12"] = "SAE",
["killstreak_13"] = "Overwatch Helo",
["killstreak_14"] = "VTOL",
["killstreak_15"] = "Reinforcement",
["killstreak_16"] = "Stealth Bomber",
["killstreak_17"] = "Chopper Gunner",
["killstreak_18"] = "Advanced UAV",
["killstreak_19"] = "Emergency Airdrop",
["killstreak_20"] = "AC-130",
["killstreak_21"] = "Juggernaut",
["killstreak_22"] = "MGB",
["killstreak_desc_1"] = "UAV recon ship that reveals enemy locations on the minimap.",
["killstreak_desc_2"] = "A remote-controlled drone with an attached C4 charge.",
["killstreak_desc_3"] = "Gives a bag of armor for the whole team.",
["killstreak_desc_4"] = "Call in a random killstreak care package to your location.",
["killstreak_desc_5"] = "A drone that scrambles all enemy minimaps.",
["killstreak_desc_6"] = "Throw a device that launches a cluster of smaller mines within the immediate area.",
["killstreak_desc_7"] = "Call in twin jets for a precision strike along the best available path.",
["killstreak_desc_8"] = "Call in K9 unit for searching enemies.",
["killstreak_desc_9"] = "Automated turret that scans for nearby enemies, and fires incendiary based rounds.",
["killstreak_desc_10"] = "Three jets, track down air vehicles and shoot it down, freeing the airspace.",
["killstreak_desc_11"] = "Mark a target location to signal several waves of mortars to attack the area.",
["killstreak_desc_12"] = "Call in a trio of jets to release aerial explosives onto specified targets.",
["killstreak_desc_13"] = "An attack helo that will watch over positions and find enemy before engaging them.",
["killstreak_desc_14"] = "Releases a precision bomb before circling back and guarding a marked location.",
["killstreak_desc_15"] = "A helicopter that disembarks three soldiers with heavy training.",
["killstreak_desc_16"] = "Call in a bomber that releases a large line of explosives along its path.",
["killstreak_desc_17"] = "Control an assault chopper armed with a turret and air-to-land missiles.",
["killstreak_desc_18"] = "An orbital UAV that reveals the enemy's direction on the minimap in real time.",
["killstreak_desc_19"] = "Call in 3 random killstreak care packages to your location.",
["killstreak_desc_20"] = "A heavy assault gunship equipped with a missile, along with the 40mm and 25mm cannons.",
["killstreak_desc_21"] = "Juggernaut assault gear with minigun delivered by care package.",
["killstreak_desc_22"] = "A massive blow to your position. Will end the game in favor of your team.",
["main_menu_1"] = "Resume Game",
["main_menu_2"] = "Change Loadout",
["main_menu_3"] = "Settings",
["main_menu_4"] = "Main Menu",
["main_menu_settings_1"] = "Music: ",
["main_menu_settings_2"] = "Announcer: ",
["main_menu_settings_3"] = "Killсam: ",
["main_menu_settings_4"] = "Discord Server",
["main_menu_settings_cm"] = "Custom Music: ",
["main_menu_loadout"] = "Loadout",
["main_menu_loadout_wep"] = "Your choose:",
["main_menu_loadout_1"] = "Primary Weapon",
["main_menu_loadout_2"] = "Secondary Weapon",
["main_menu_loadout_3"] = "Killstreaks",
["main_menu_loadout_3_1"] = "Killstreaks selected - ",
["main_menu_loadout_4"] = "Perks",
["main_menu_loadout_5"] = "Finishing Moves",
["main_menu_loadout_6"] = "Apply",
["main_menu_loadout_7"] = "Exit",
["perk_1_1"] = "Bomb Squad",
["perk_1_2"] = "Spotter",
["perk_1_3"] = "Hardline",
["perk_1_4"] = "Resupply",
["perk_1_1_desc"] = "Reduces explosion damage.",
["perk_1_2_desc"] = "Ability to see enemy packages and reinforcements through walls.",
["perk_1_3_desc"] = "Reduce killstreaks by 1.",
["perk_1_4_desc"] = "Every 30 seconds, you gain 1 magazine for your current weapon.",
["perk_2_1"] = "Quick Fix",
["perk_2_2"] = "Survivor",
["perk_2_3"] = "Ghost",
["perk_2_4"] = "Cold Blooded",
["perk_2_1_desc"] = "Your health regenerates after 3 seconds instead of 8 seconds.",
["perk_2_2_desc"] = "Instead of dying, you enter the final dash state 1 time per life.",
["perk_2_3_desc"] = "Invisible to UAVs.",
["perk_2_4_desc"] = "Invisible to vehicles and enemy reinforcements.",
["gamemode_1"] = "TEAM DEATHMATCH",
["gamemode_2"] = "INVASION",
["gamemode_3"] = "KNOCK OUT",
["gamemode_4"] = "INFECTED",
["gamemode_5"] = "DOMINATION",
["gamemode_1_desc"] = "Eliminate the enemy at all costs.",
["gamemode_2_desc"] = "Eliminate the enemy at all costs.",
["gamemode_3_desc"] = "Eliminate the enemy at all costs.",
["gamemode_4_desc"] = "Survive or infect everyone.",
["gamemode_5_desc"] = "Control all sectors on the location.",
["killcam_1"] = "Your Death",
["killcam_2"] = "Final Kill",
["killcam_3"] = "Press SPACE to skip",
["admin_menu_title"] = "Admin Menu",
["admin_change_gamemode"] = "Change Gamemode",
}

View File

@@ -0,0 +1,99 @@
COD.Language = {
["team1_name"] = "SpecGru",
["team2_name"] = "KorTac",
["scoreboard_score"] = "Score",
["scoreboard_kd"] = "K/D",
["menu_warning_ks"] = "Warnung! Ihre Kill-Serie wird aktualisiert, wenn die Runde endet.",
["menu_mainweapon"] = "Deine Hauptwaffe ist: ",
["menu_secweapon"] = "Deine sekundäre Waffe ist: ",
["menu_ks_choose"] = "Killstreak-Auswahl - ",
["menu_mainperk"] = "Hauptvergünstigung auswählen",
["menu_highperk"] = "High Perk auswählen",
["menu_choosemain"] = "Hauptwaffenauswahl",
["menu_choosesec"] = "Auswahl der Sekundenwaffe",
["menu_apply"] = "Bewerben",
["hud_killed"] = "KILLED: ",
["hud_killer"] = "Killer: ",
["hud_teamdeathmatch"] = "TEAM DEATHMATCH",
["hud_win"] = "SIEG",
["hud_lose"] = "DEFEAT",
["hud_unlockmainperk"] = " - Hauptvergünstigung freigeschaltet!",
["hud_unlockhighperk"] = " - High Perk Unlocked!",
["hud_unlockkillstreak"] = "Bereit zur Verwendung!",
["hud_package"] = "Drücken Sie [E], um abzuholen ",
["hud_fullpackage"] = "Drücken Sie [E], um das Paket abzuholen",
["hud_revive"] = "Fortschritt wiederbeleben",
["hud_torevive"] = "Drücken Sie E, um wiederzubeleben",
["hud_reviver"] = "Du wirst wiederbelebt",
["hud_selfrevive"] = "Selbstbelebungsfortschritt",
["hud_toselfrevive"] = "Halten Sie E, um sich selbst zu beleben",
["hud_kills"] = "Kills: ",
["hud_killstreak"] = "Killstreak",
["hud_nuke"] = "BALLISTIC MISSILE LAUNCH DETECTED",
["hud_scoreadd_1"] = "+100 Kill",
["hud_scoreadd_2"] = "+110 Headshot",
["hud_scoreadd_3"] = "+150 Finisher Move",
["hud_scoreadd_4"] = "+50 Verstärkungen zerstört",
["hud_scoreadd_5"] = "+125 Nahkampf",
["hud_scoreadd_6"] = "+100 Revive",
["hud_scoreadd_7"] = "+250 Notruf",
["contols_main"] = "Kontrolle:",
["contols_f1"] = "ESC - Loadout bearbeiten",
["contols_e"] = "E - Finisher Move",
["contols_q"] = "Q, G - Granate werfen",
["contols_v"] = "V - Messer Verwenden",
["contols_0"] = "7,8,9,0 - Verwenden Sie Killstreak",
["contols_tab"] = "Tab - Anzeigetafel",
["contols_open"] = "Halten Sie INSERT, um die Steuerelemente zu öffnen",
["Killstreak_1"] = "UAV",
["Killstreak_2"] = "Bombendrohne",
["Killstreak_3"] = "Rüstung",
["Killstreak_4"] = "Pflegepaket",
["Killstreak_5"] = "Counter-UAV",
["Killstreak_6"] = "Cluster Mine",
["Killstreak_7"] = "Präzisionsluftangriff",
["Killstreak_8"] = "K9 Einheit",
["Killstreak_9"] = "Sentry Gun",
["Killstreak_10"] = "Luftpatrouille",
["Killstreak_11"] = "Mörtelstreik",
["Killstreak_12"] = "SAE",
["Killstreak_13"] = "Overwatch Helo",
["Killstreak_14"] = "VTOL",
["Killstreak_15"] = "Verstärkung",
["Killstreak_16"] = "Stealth Bomber",
["Killstreak_17"] = "Chopper Gunner",
["Killstreak_18"] = "Fortgeschrittene UAV",
["Killstreak_19"] = "Notfall-Airdrop",
["Killstreak_20"] = "AC-130",
["Killstreak_21"] = "Juggernaut",
["Killstreak_22"] = "Taktische Nuke",
["perk_1_1"] = "Bomb Squad",
["perk_1_2"] = "Spotter",
["perk_1_3"] = "Hardline",
["perk_1_4"] = "Nachschub",
["perk_1_1_desc"] = "Reduziert Explosionsschaden",
["perk_1_2_desc"] = "Fähigkeit, feindliche Pakete und Verstärkungen durch Wände zu sehen",
["perk_1_3_desc"] = "Killstreaks um 1 reduzieren",
["perk_1_4_desc"] = "Alle 30 Sekunden erhalten Sie 1 Magazin für Ihre aktuelle Waffe",
["perk_2_1"] = "Quick Fix",
["perk_2_2"] = "Überlebender",
["perk_2_3"] = "Geist",
["perk_2_4"] = "Kaltblut",
["perk_2_1_desc"] = "Ihre Gesundheit regeneriert sich nach 3 Sekunden statt nach 8 Sekunden",
["perk_2_2_desc"] = "Anstatt zu sterben, trittst du 1 Mal pro Leben in den endgültigen Strichzustand ein",
["perk_2_3_desc"] = "Unsichtbar für UAVs",
["perk_2_4_desc"] = "Unsichtbar für Fahrzeuge und feindliche Verstärkungen",
["gamemode_1"] = "Team Deathmatch",
["gamemode_2"] = "Invasion",
["gamemode_3"] = "Knockdown",
["gamemode_1_desc"] = "Eliminate the enemy at all costs.",
["gamemode_2_desc"] = "Eliminate the enemy at all costs.",
["gamemode_3_desc"] = "Eliminate the enemy at all costs.",
}

View File

@@ -0,0 +1,100 @@
COD.Language = {
["team1_name"] = "SpecGru",
["team2_name"] = "KorTac",
["scoreboard_score"] = "Pontszámok",
["scoreboard_kd"] = "Ö/H",
["menu_warning_ks"] = "Figyelem! A killstrek-ed frissülni fog a kör befejeztekor.",
["menu_mainweapon"] = "Az elsõdleges fegyvered: ",
["menu_secweapon"] = "A másodlagos fegyvered: ",
["menu_ks_choose"] = "Killstreak szelekció - ",
["menu_mainperk"] = "Kiválasztani való fõ perk",
["menu_highperk"] = "Kiválasztani való magas rangú perk",
["menu_choosemain"] = "Elsõdleges fegyver szelekció",
["menu_choosesec"] = "Másodlagos fegyver szelekció",
["menu_apply"] = "Hozzáad",
["hud_killed"] = "LIKVIDÁLVA: ",
["hud_killer"] = "Gyilkos: ",
["hud_teamdeathmatch"] = "TEAM DEATHMATCH",
["hud_win"] = "GYÕZELEM",
["hud_lose"] = "VERESÉG",
["hud_unlockmainperk"] = " - Fõ Perk feloldva!",
["hud_unlockhighperk"] = " - Magas rangú perk feloldva!",
["hud_unlockkillstreak"] = "Bevetésre kész!",
["hud_package"] = "Nyomd meg a [E] hogy fellved ",
["hud_fullpackage"] = "Nyomd meg a [E] hogy fellved a csomagot",
["hud_revive"] = "Felélesztés",
["hud_torevive"] = "Nyomd meg a E a felélesztés megkezdéséhez",
["hud_reviver"] = "Felélesztés alatt állsz",
["hud_selfrevive"] = "Önélesztés",
["hud_toselfrevive"] = "Tarsd nyomva az E hogy önélesztést hajts végre",
["hud_kills"] = "Ölések: ",
["hud_killstreak"] = "Killstreak",
["hud_nuke"] = "BALLISZTIKUS RAKÉTA KILÖVÕ EGYSÉG BEMÉRVE",
["hud_scoreadd_1"] = "+100 Ölés",
["hud_scoreadd_2"] = "+110 Fejlövés",
["hud_scoreadd_3"] = "+150 Kivégzés",
["hud_scoreadd_4"] = "+50 Erõsítés Megsemmisítve",
["hud_scoreadd_5"] = "+125 Közelharc",
["hud_scoreadd_6"] = "+100 Felélesztés",
["hud_scoreadd_7"] = "+250 Vészhívás",
["contols_main"] = "Vezérlõ:",
["contols_f1"] = "ESC - Loadout szerkesztése",
["contols_e"] = "E - Kivégzés",
["contols_q"] = "Q, G - Gránát",
["contols_v"] = "V - Kés",
["contols_0"] = "7,8,9,0 - Killstreak használata",
["contols_tab"] = "Tab - Eredmény lista",
["contols_open"] = "Nyomd meg az INSERT a vezérlõk megnyitásához.",
["killstreak_1"] = "UAV",
["killstreak_2"] = "Bomb Drone",
["killstreak_3"] = "Armor",
["killstreak_4"] = "Care Package",
["killstreak_5"] = "Counter-UAV",
["killstreak_6"] = "Cluster Mine",
["killstreak_7"] = "Precision Airstrike",
["killstreak_8"] = "K9 Unit",
["killstreak_9"] = "Sentry Gun",
["killstreak_10"] = "Air Patrol",
["killstreak_11"] = "Mortar Strike",
["killstreak_12"] = "SAE",
["killstreak_13"] = "Overwatch Helo",
["killstreak_14"] = "VTOL",
["killstreak_15"] = "Reinforcement",
["killstreak_16"] = "Stealth Bomber",
["killstreak_17"] = "Chopper Gunner",
["killstreak_18"] = "Advanced UAV",
["killstreak_19"] = "Emergency Airdrop",
["killstreak_20"] = "AC-130",
["killstreak_21"] = "Juggernaut",
["killstreak_22"] = "MGB",
["perk_1_1"] = "Bombaelhárító Osztag",
["perk_1_2"] = "Felderítõ",
["perk_1_3"] = "Tükkös Ív",
["perk_1_4"] = "Utánpótlás",
["perk_1_1_desc"] = "Csökkenti a robbanó hatásoktól elszenvedett sérülést.",
["perk_1_2_desc"] = "Olyan képesség ami hatására az utánpótlások és erõsítések a falon kereszül is láthatóvá válnak.",
["perk_1_3_desc"] = " 1-el csökkenti a killstrek-et.",
["perk_1_4_desc"] = "Minden 30 másodpercben kapsz egy tárrat az éppen használt fegyveredhez.",
["perk_2_1"] = "Gyors Ellátás",
["perk_2_2"] = "Túlélõ",
["perk_2_3"] = "Kisértet",
["perk_2_4"] = "Hideg vérû",
["perk_2_1_desc"] = "8 másodperc helyett az életerõd már 3 másodperc után regenerálódni kezd.",
["perk_2_2_desc"] = "Ahelyett hogy azonnal meghalnál belépsz egy haldoklási státuszba.",
["perk_2_3_desc"] = "Az UAV-nek láthatatlan leszel.",
["perk_2_4_desc"] = "Jármûveknek és ellenséges erõsítéseknek láthatatlan maradsz.",
["gamemode_1"] = "Team Deathmatch",
["gamemode_2"] = "Invasion",
["gamemode_3"] = "Knockdown",
["gamemode_1_desc"] = "Eliminate the enemy at all costs.",
["gamemode_2_desc"] = "Eliminate the enemy at all costs.",
["gamemode_3_desc"] = "Eliminate the enemy at all costs.",
}

View File

@@ -0,0 +1,100 @@
COD.Language = {
["team1_name"] = "SpecGru",
["team2_name"] = "KorTac",
["scoreboard_score"] = "Pontszámok",
["scoreboard_kd"] = "Ö/H",
["menu_warning_ks"] = "Figyelem! A killstrek-ed frissülni fog a kör befejeztekor.",
["menu_mainweapon"] = "Az elsõdleges fegyvered: ",
["menu_secweapon"] = "A másodlagos fegyvered: ",
["menu_ks_choose"] = "Killstreak szelekció - ",
["menu_mainperk"] = "Kiválasztani való fõ perk",
["menu_highperk"] = "Kiválasztani való magas rangú perk",
["menu_choosemain"] = "Elsõdleges fegyver szelekció",
["menu_choosesec"] = "Másodlagos fegyver szelekció",
["menu_apply"] = "Alkalmazás",
["hud_killed"] = "LIKVIDÁLVA: ",
["hud_killer"] = "Gyilkos: ",
["hud_teamdeathmatch"] = "TEAM DEATHMATCH",
["hud_win"] = "GYÕZELEM",
["hud_lose"] = "VERESÉG",
["hud_unlockmainperk"] = " - Fõ Perk feloldva!",
["hud_unlockhighperk"] = " - Magas rangú perk feloldva!",
["hud_unlockkillstreak"] = "Bevetésre kész!",
["hud_package"] = "Nyomd meg a [E] hogy fellved",
["hud_fullpackage"] = "Nyomd meg a [E] a csomag felvételéhez",
["hud_revive"] = "Felélesztés",
["hud_torevive"] = "Nyomd meg az E a felélesztés megkezdéséhez",
["hud_reviver"] = "Felélesztés folyamatban",
["hud_selfrevive"] = "Önélesztés",
["hud_toselfrevive"] = "Tarsd nyomva az E hogy önélesztést hajts végre",
["hud_kills"] = "Ölések: ",
["hud_killstreak"] = "Killstreak",
["hud_nuke"] = "BALLISZTIKUS RAKÉTA KILÖVÕ EGYSÉG BEMÉRVE",
["hud_scoreadd_1"] = "+100 Ölés",
["hud_scoreadd_2"] = "+110 Fejlövés",
["hud_scoreadd_3"] = "+150 Kivégzés",
["hud_scoreadd_4"] = "+50 Erõsítés Megsemmisítve",
["hud_scoreadd_5"] = "+125 Közelharc",
["hud_scoreadd_6"] = "+100 Felélesztés",
["hud_scoreadd_7"] = "+250 Vészhívás",
["contols_main"] = "Beállítások:",
["contols_f1"] = "ESC - Felszerelés szerkesztése",
["contols_e"] = "E - Kivégzés használata",
["contols_q"] = "Q, G - Gránát használata",
["contols_v"] = "V - Kés használata",
["contols_0"] = "7,8,9,0 - Killstreak használata",
["contols_tab"] = "Tab - Eredményjelzõ tábla",
["contols_open"] = "Nyomd meg az INSERT a beállítások megnyitásához.",
["killstreak_1"] = "UAV",
["killstreak_2"] = "Bomb Drone",
["killstreak_3"] = "Armor",
["killstreak_4"] = "Care Package",
["killstreak_5"] = "Counter-UAV",
["killstreak_6"] = "Cluster Mine",
["killstreak_7"] = "Precision Airstrike",
["killstreak_8"] = "K9 Unit",
["killstreak_9"] = "Sentry Gun",
["killstreak_10"] = "Air Patrol",
["killstreak_11"] = "Mortar Strike",
["killstreak_12"] = "SAE",
["killstreak_13"] = "Overwatch Helo",
["killstreak_14"] = "VTOL",
["killstreak_15"] = "Reinforcement",
["killstreak_16"] = "Stealth Bomber",
["killstreak_17"] = "Chopper Gunner",
["killstreak_18"] = "Advanced UAV",
["killstreak_19"] = "Emergency Airdrop",
["killstreak_20"] = "AC-130",
["killstreak_21"] = "Juggernaut",
["killstreak_22"] = "MGB",
["perk_1_1"] = "Bombaelhárító Osztag",
["perk_1_2"] = "Felderítõ",
["perk_1_3"] = "Keményvonalas",
["perk_1_4"] = "Utánpótlás",
["perk_1_1_desc"] = "Csökkenti a robbanó hatásoktól elszenvedett sérülést.",
["perk_1_2_desc"] = "Olyan képesség ami hatására az ellenséges utánpótlások és erõsítések a falon kereszül is láthatóvá válnak.",
["perk_1_3_desc"] = " 1-el csökkenti a killstrek-et.",
["perk_1_4_desc"] = "Minden 30 másodpercben kapsz 1 tárrat a jelenlegi fegyveredhez.",
["perk_2_1"] = "Gyors Ellátás",
["perk_2_2"] = "Túlélõ",
["perk_2_3"] = "Kisértet",
["perk_2_4"] = "Hideg vérû",
["perk_2_1_desc"] = "8 másodperc helyett az életerõd már 3 másodperc után regenerálódni kezd.",
["perk_2_2_desc"] = "Haldoklás helyett belépsz a final dash state-be 1-szer életenként.",
["perk_2_3_desc"] = "Az UAV-nek láthatatlan leszel.",
["perk_2_4_desc"] = "Ellenséges jármûveknek és erõsítéseknek láthatatlan maradsz.",
["gamemode_1"] = "Csapat Deathmatch",
["gamemode_2"] = "Invázió",
["gamemode_3"] = "Kiütés",
["gamemode_1_desc"] = "Eliminate the enemy at all costs.",
["gamemode_2_desc"] = "Eliminate the enemy at all costs.",
["gamemode_3_desc"] = "Eliminate the enemy at all costs.",
}

View File

@@ -0,0 +1,166 @@
COD.Language = {
["team1_name"] = "SpecGru",
["team2_name"] = "KorTac",
["scoreboard_score"] = "Wynik",
["scoreboard_kd"] = "K/D",
["menu_warning_ks"] = "Uwaga! Twój kill streak zostanie odnowiony w następnej rundzie.",
["menu_mainweapon"] = "Twoja główna broń to: ",
["menu_secweapon"] = "Twoja dodatkowa broń to: ",
["menu_ks_choose"] = "Wybór killstreak'a - ",
["menu_mainperk"] = "Wybierz Głównego Perka",
["menu_highperk"] = "Wybierz Wysokiego Perka",
["menu_choosemain"] = "Wybór głównej broni",
["menu_choosesec"] = "Wybór dodatkowej broni",
["menu_apply"] = "Zatwierdź",
["hud_killed"] = "Zabito: ",
["hud_killer"] = "Zabójca: ",
["hud_teamdeathmatch"] = "DRUŻYNOWY DEATHMATCH",
["hud_win"] = "ZWYCIĘSTWO",
["hud_lose"] = "PORAŻKA",
["hud_unlockmainperk"] = " - Główny Perk odblokowany!",
["hud_unlockhighperk"] = " - Wysoki Perk odblokowany!",
["hud_unlockkillstreak"] = "Gotowy do użycia!",
["hud_package"] = "Wciśnij [E] by podnieść ",
["hud_fullpackage"] = "Wciśnij [E] by podnieść paczkę",
["hud_revive"] = "Postęp podnoszenia",
["hud_torevive"] = "Wciśnij [E] by podnieść sojusznika",
["hud_reviver"] = "Jesteś podnoszony",
["hud_selfrevive"] = "Postęp samopodnoszenia",
["hud_toselfrevive"] = "Przytrzymaj [E] by się podnieść",
["hud_kills"] = "Zabójstwa: ",
["hud_killstreak"] = "Seria zabójstw",
["hud_nuke"] = "WYSTRZAŁ RAKIETY BALISTYCZNEJ WYKRYTY",
["hud_scoreadd_1"] = "+100 Zabójstwo",
["hud_scoreadd_2"] = "+110 Headshot",
["hud_scoreadd_3"] = "+150 Egzekucja",
["hud_scoreadd_4"] = "+50 Wsparcie zniszczone",
["hud_scoreadd_5"] = "+125 Wręcz",
["hud_scoreadd_6"] = "+100 Podniesienie",
["hud_scoreadd_7"] = "+250 Ostatni ratunek",
["hud_message_1"] = "Pierwszy zarażony",
["hud_message_2"] = "Ostatni ocalały",
["hud_message_3"] = "+50 Ocalały",
["hud_domination_1"] = "ZDOBYWANIE",
["hud_domination_2"] = "OBRONA",
["hud_domination_3"] = "POSTĘP",
["hud_domination_4"] = "+200 Zdobycie strefy neutralnej",
["hud_domination_5"] = "+100 Zdobycie strefy wroga",
["hud_invasion_1"] = "SKRZYNIE ZAPASOWE W DRODZE",
["hud_invasion_2"] = "SILNE WZMOCNIENIA W DRODZE",
["contols_main"] = "Klawisze:",
["contols_f1"] = "ESC - Edytuj wyposażenie",
["contols_e"] = "E - Egzekucja",
["contols_q"] = "Q, G - Rzuć granat",
["contols_v"] = "V - Użyj noża",
["contols_0"] = "7,8,9,0 - Użyj Killstreak",
["contols_tab"] = "Tab - Scoreboard",
["contols_open"] = "Przytrzymaj [INSERT] by otworzyć klawisze.",
["killstreak_1"] = "UAV",
["killstreak_2"] = "Dron z bombą",
["killstreak_3"] = "Pancerz",
["killstreak_4"] = "Pakiet Zaopatrzenia",
["killstreak_5"] = "Kontr-UAV",
["killstreak_6"] = "Mina",
["killstreak_7"] = "Precyzyjny Nalot",
["killstreak_8"] = "Jednostka K9",
["killstreak_9"] = "Wieżyczka",
["killstreak_10"] = "Patrol powietrzny",
["killstreak_11"] = "Ostrzał moździerzem",
["killstreak_12"] = "SAE",
["killstreak_13"] = "Helikopter Obserwacyjny",
["killstreak_14"] = "VTOL",
["killstreak_15"] = "Wsparcie",
["killstreak_16"] = "Zamaskowany bombowiec",
["killstreak_17"] = "Strzelec Helikoptera",
["killstreak_18"] = "Zaawansowany UAV",
["killstreak_19"] = "Awaryjny Zrzut",
["killstreak_20"] = "AC-130",
["killstreak_21"] = "Juggernaut",
["killstreak_22"] = "Taktyczny Nuke",
["killstreak_desc_1"] = "UAV - statek rozpoznawczy, który ujawnia położenie wrogów na minimapie.",
["killstreak_desc_2"] = "Sterowany zdalnie dron z zamocowaną ładunkiem C4.",
["killstreak_desc_3"] = "Daje torbę z pancerzem dla całej drużyny.",
["killstreak_desc_4"] = "Wywołuje losowy pakiet wsparcia na twoją pozycję.",
["killstreak_desc_5"] = "Dron, który zakłóca minimapy wrogów.",
["killstreak_desc_6"] = "Rzuć urządzenie, które wypuszcza gromadę mniejszych min w okolicy.",
["killstreak_desc_7"] = "Wezwij podwójne samoloty do precyzyjnego uderzenia po najlepszej dostępnej ścieżce.",
["killstreak_desc_8"] = "Wezwij jednostkę K9 do szukania wrogów.",
["killstreak_desc_9"] = "Automatyczna wieżyczka skanująca otoczenie w poszukiwaniu wrogów i strzelająca pociskami zapalającymi.",
["killstreak_desc_10"] = "Trzy samoloty, śledzące pojazdy powietrzne i strzelające do nich, zwalniając przestrzeń powietrzną.",
["killstreak_desc_11"] = "Zaznacz cel, by wywołać fale moździerzy na wybrane miejsce.",
["killstreak_desc_12"] = "Wezwij trójkę samolotów, by zrzuciły bomby na wskazane cele.",
["killstreak_desc_13"] = "Atakujący helikopter, który patroluje okolice i znajduje wrogów przed ich atakiem.",
["killstreak_desc_14"] = "Zrzuca precyzyjną bombę, po czym krąży wokół i pilnuje zaznaczonej pozycji.",
["killstreak_desc_15"] = "Helikopter, z którego wysiada trzech żołnierzy z ciężkim uzbrojeniem.",
["killstreak_desc_16"] = "Wezwij bombowiec, który zrzuci duży ładunek wybuchowy wzdłuż swojej trasy.",
["killstreak_desc_17"] = "Steruj atakującym helikopterem uzbrojonym w wieżyczkę i pociski powietrze-ziemia.",
["killstreak_desc_18"] = "Orbitalny UAV, który w czasie rzeczywistym ujawnia kierunek przeciwników na minimapie.",
["killstreak_desc_19"] = "Wezwij 3 losowe pakiety wsparcia na twoją pozycję.",
["killstreak_desc_20"] = "Ciężko uzbrojony helikopter szturmowy wyposażony w pociski rakietowe, wraz z działami 40mm i 25mm.",
["killstreak_desc_21"] = "Zestaw szturmowy Juggernaut z minigunem dostarczany przez pakiet opieki.",
["killstreak_desc_22"] = "Masywny cios dla twojej pozycji. Zakończy grę na korzyść twojego zespołu.",
["main_menu_1"] = "Wznów grę",
["main_menu_2"] = "Zmień ekwipunek",
["main_menu_3"] = "Ustawienia",
["main_menu_4"] = "Menu główne",
["main_menu_settings_1"] = "Muzyka: ",
["main_menu_settings_2"] = "Komentator: ",
["main_menu_settings_3"] = "Killcam: ",
["main_menu_settings_4"] = "Serwer Discord",
["main_menu_settings_cm"] = "Custom Muzyka: ",
["main_menu_loadout"] = "Ekwipunek",
["main_menu_loadout_wep"] = "Twój wybór:",
["main_menu_loadout_1"] = "Broń podstawowa",
["main_menu_loadout_2"] = "Broń dodatkowa",
["main_menu_loadout_3"] = "Seria zabójstw",
["main_menu_loadout_3_1"] = "Wybrane serie zabójstw - ",
["main_menu_loadout_4"] = "Zdolności specjalne",
["main_menu_loadout_5"] = "Zabójstwa specjalne",
["main_menu_loadout_6"] = "Zastosuj",
["main_menu_loadout_7"] = "Wyjście",
["perk_1_1"] = "Saper",
["perk_1_2"] = "Wywiadowca",
["perk_1_3"] = "Twardogłowy",
["perk_1_4"] = "Powtórne zaopatrzenie",
["perk_1_1_desc"] = "Redukuje obrażenia od eksplozji.",
["perk_1_2_desc"] = "Możliwość widzenia przez ściany pakietów i wsparcia przeciwnika.",
["perk_1_3_desc"] = "Redukuje wymóg killstreak o 1 punkt.",
["perk_1_4_desc"] = "Co 30 sekund, zyskujesz 1 magazynek do swojej obecnej broni.",
["perk_2_1"] = "Szybkie Leczenie",
["perk_2_2"] = "Ocalały",
["perk_2_3"] = "Duch",
["perk_2_4"] = "Zimnokrwisty",
["perk_2_1_desc"] = "Twoje zdrowie regeneruje się w 3 sekundy zamiast 8 sekund.",
["perk_2_2_desc"] = "Zamiast umrzeć, wchodzisz w stan ostatnich działań raz na życie.",
["perk_2_3_desc"] = "Niewidoczny dla każdego UAV.",
["perk_2_4_desc"] = "Niewidoczny dla pojazdów i wrogiego wsparcia.",
["gamemode_1"] = "Druzynowy Deathmatch",
["gamemode_2"] = "Inwazja",
["gamemode_3"] = "Knock Out",
["gamemode_4"] = "ZARAŻENI",
["gamemode_5"] = "DOMINACJA",
["gamemode_1_desc"] = "Wyeliminuj wrogów za wszelką cenę.",
["gamemode_2_desc"] = "Wyeliminuj wrogów za wszelką cenę.",
["gamemode_3_desc"] = "Wyeliminuj wrogów za wszelką cenę.",
["gamemode_4_desc"] = "Przetrwaj lub zainfekuj wszystkich.",
["gamemode_5_desc"] = "Zdobądź kontrolę nad wszystkimi sektorami na lokacji.",
["killcam_1"] = "Twoja śmierć",
["killcam_2"] = "Ostateczne zabójstwo",
["killcam_3"] = "Naciśnij SPACJĘ, aby pominąć",
}

View File

@@ -0,0 +1,169 @@
COD.Language = {
["team1_name"] = "СпецГру",
["team2_name"] = "КорТак",
["scoreboard_score"] = "Счёт",
["scoreboard_kd"] = "У/С",
["menu_warning_ks"] = "Внимание! Ваши серии убийств будут обновлены, после окончания раунда.",
["menu_mainweapon"] = "Ваше основное оружие: ",
["menu_secweapon"] = "Ваше дополнительное оружие: ",
["menu_ks_choose"] = "Выбор серии убийств - ",
["menu_mainperk"] = "Выбор основного перка",
["menu_highperk"] = "Выбор высшего перка",
["menu_choosemain"] = "Выбор основного оружия",
["menu_choosesec"] = "Выбор дополнительного оружия",
["menu_apply"] = "Применить",
["hud_killer"] = "Убийца: ",
["hud_killed"] = "ЖЕРТВА: ",
["hud_teamdeathmatch"] = "КОМАНДНЫЙ БОЙ",
["hud_win"] = "ПОБЕДА",
["hud_lose"] = "ПОРАЖЕНИЕ",
["hud_unlockmainperk"] = " - Разблокирован основной перк!",
["hud_unlockhighperk"] = " - Разблокирован высший перк!",
["hud_unlockkillstreak"] = "Готов к использованию!",
["hud_package"] = "Зажмите [E], чтобы подобрать ",
["hud_fullpackage"] = "Зажмите [E], чтобы подобрать посылку",
["hud_revive"] = "Прогресс реанимации",
["hud_torevive"] = "Зажмите E для реанимации",
["hud_reviver"] = "Вас реанимируют",
["hud_selfrevive"] = "Прогресс самореанимации",
["hud_toselfrevive"] = "Зажмите E для самореанимации",
["hud_kills"] = "Убийств: ",
["hud_killstreak"] = "Серия убийств",
["hud_nuke"] = "ОБНАРУЖЕН МАССИРОВАННЫЙ УДАР",
["hud_scoreadd_1"] = "+100 Ликвидация",
["hud_scoreadd_2"] = "+110 Выстрел в голову",
["hud_scoreadd_3"] = "+150 Добивающий удар",
["hud_scoreadd_4"] = "+50 Уничтожение подкрепления",
["hud_scoreadd_5"] = "+125 Рукопашный бой",
["hud_scoreadd_6"] = "+100 Реанимация",
["hud_scoreadd_7"] = "+250 Сигнал бедствия",
["hud_message_1"] = "Первый заражённый",
["hud_message_2"] = "Последний выживший",
["hud_message_3"] = "+50 Выживший",
["hud_domination_1"] = "ЗАХВАТИТЬ",
["hud_domination_2"] = "ЗАЩИЩАТЬ",
["hud_domination_3"] = "ПРОГРЕСС",
["hud_domination_4"] = "+200 Нейтральная зона захвачена",
["hud_domination_5"] = "+100 Вражеская зона захвачена",
["hud_invasion_1"] = "ЯЩИКИ СНАБЖЕНИЯ В ПУТИ",
["hud_invasion_2"] = "ТЯЖЕЛОЕ ПОДКРЕПЛЕНИЕ В ПУТИ",
["contols_main"] = "Управление:",
["contols_f1"] = "ESC - Изменить комплект",
["contols_e"] = "E - Добивающий удар",
["contols_q"] = "Q, G - Бросить гранату",
["contols_v"] = "V - Использовать нож",
["contols_0"] = "7,8,9,0 - Использование серии убийств",
["contols_tab"] = "Tab - Счёт",
["contols_open"] = "Зажмите INSERT, чтобы открыть управление.",
["killstreak_1"] = "БПЛА",
["killstreak_2"] = "Дрон-камикадзе",
["killstreak_3"] = "Броня",
["killstreak_4"] = "Посылка",
["killstreak_5"] = "Контр-БПЛА",
["killstreak_6"] = "Кассетная мина",
["killstreak_7"] = "Точечный авиаудар",
["killstreak_8"] = "Сторожевая собака",
["killstreak_9"] = "Турель",
["killstreak_10"] = "Воздушный патруль",
["killstreak_11"] = "Миномётный удар",
["killstreak_12"] = "Стратегический удар",
["killstreak_13"] = "Вертолёт поддержки",
["killstreak_14"] = "СВВП",
["killstreak_15"] = "Подкрепление",
["killstreak_16"] = "Стелс-бомбардировщик",
["killstreak_17"] = "Вертолёт со стрелком",
["killstreak_18"] = "МБПЛА",
["killstreak_19"] = "Экстренный груз",
["killstreak_20"] = "AC-130",
["killstreak_21"] = "Джаггернаут",
["killstreak_22"] = "MGB",
["killstreak_desc_1"] = "БПЛА, который показывает местоположение противника на мини-карте.",
["killstreak_desc_2"] = "Управляемый дрон с прикрепленным зарядом C4.",
["killstreak_desc_3"] = "Дает мешок брони для всей команды.",
["killstreak_desc_4"] = "Вызовите случайную посылку с серией убийств к себе.",
["killstreak_desc_5"] = "Дрон, который блокирует все вражеские миникарты.",
["killstreak_desc_6"] = "Взрывное устройство, которое запускает группу небольших мин в непосредственной близости.",
["killstreak_desc_7"] = "Вызов двойных реактивных самолетов для точного удара по наилучшему доступному пути.",
["killstreak_desc_8"] = "Вызов сторожевой собаки для поиска врагов.",
["killstreak_desc_9"] = "Автоматическая турель, которая сканирует ближайших врагов и стреляет зажигательными снарядами.",
["killstreak_desc_10"] = "Три самолета, выслеживающий воздушные транспортные средства, сбивает их, освобождая воздушное пространство.",
["killstreak_desc_11"] = "Отметьте целевое местоположение, чтобы дать сигнал нескольким волнам минометов атаковать область.",
["killstreak_desc_12"] = "Вызовите три реактивных самолета, чтобы сбросить взрывчатку с воздуха на указанные цели.",
["killstreak_desc_13"] = "Атакующий вертолет, который будет следить за позициями и находить врагов, прежде чем атаковать их.",
["killstreak_desc_14"] = "Выпускает прицельную бомбу, прежде чем вернуться и охранять отмеченное место.",
["killstreak_desc_15"] = "Вертолет, который высаживает трех солдат с тяжелой подготовкой.",
["killstreak_desc_16"] = "Вызов бомбардировщика, который выпускает на своем пути большую линию взрывчатки.",
["killstreak_desc_17"] = "Управляйте штурмовым вертолетом, вооруженным турелью и ракетами класса воздух-земля.",
["killstreak_desc_18"] = "Орбитальный БПЛА, который показывает направление противника на мини-карте в режиме реального времени.",
["killstreak_desc_19"] = "Вызовите к себе 3 случайные посылки с серией убийств.",
["killstreak_desc_20"] = "Тяжелый штурмовой боевой корабль, оснащенный ракетой, а также 40-мм и 25-мм пушками.",
["killstreak_desc_21"] = "Штурмовое снаряжение Джаггернаута с миниганом доставлено посылкой.",
["killstreak_desc_22"] = "Массированный удар по вашей позиции. Закончит игру в пользу вашей команды.",
["main_menu_1"] = "Продолжить игру",
["main_menu_2"] = "Изменить комплект",
["main_menu_3"] = "Настройки",
["main_menu_4"] = "Главное меню",
["main_menu_settings_1"] = "Музыка: ",
["main_menu_settings_2"] = "Диктор: ",
["main_menu_settings_3"] = "Момент смерти: ",
["main_menu_settings_4"] = "Дискорд сервер",
["main_menu_settings_cm"] = "Своя музыка: ",
["main_menu_loadout"] = "Комплект",
["main_menu_loadout_wep"] = "Ваш выбор:",
["main_menu_loadout_1"] = "Основное оружие",
["main_menu_loadout_2"] = "Доп. оружие",
["main_menu_loadout_3"] = "Серии убийств",
["main_menu_loadout_3_1"] = "Выбрано серий убийств - ",
["main_menu_loadout_4"] = "Перки",
["main_menu_loadout_5"] = "Добивающие удары",
["main_menu_loadout_6"] = "Применить",
["main_menu_loadout_7"] = "Выйти",
["perk_1_1"] = "Взрывотехник",
["perk_1_2"] = "Наблюдатель",
["perk_1_3"] = "Упрямство",
["perk_1_4"] = "Пополнение запасов",
["perk_1_1_desc"] = "Уменьшает урон от взрывов.",
["perk_1_2_desc"] = "Способность видеть через стены вражеские посылки и подкрепление.",
["perk_1_3_desc"] = "Уменьшение серий убийств на 1.",
["perk_1_4_desc"] = "Каждые 30 секунд, вам дается 1 магазин к текущему оружию.",
["perk_2_1"] = "Быстрое лечение",
["perk_2_2"] = "Выживание",
["perk_2_3"] = "Призрак",
["perk_2_4"] = "Хладнокровие",
["perk_2_1_desc"] = "Ваше здоровье востанавливается через 3 секунды, вместо 8 секунд.",
["perk_2_2_desc"] = "Вместо того чтобы умереть вы переходите в состояние последнего рывка 1 раз за жизнь.",
["perk_2_3_desc"] = "Невидимость для БПЛА.",
["perk_2_4_desc"] = "Невидимость для техники и вражеских подкреплений.",
["gamemode_1"] = "КОМАНДНЫЙ БОЙ",
["gamemode_2"] = "ВТОРЖЕНИЕ",
["gamemode_3"] = "НОКАУТ",
["gamemode_4"] = "ЗАРАЖЕНИЕ",
["gamemode_5"] = "ПРЕВОСХОДСТВО",
["gamemode_1_desc"] = "Ликвидируйте силы противника.",
["gamemode_2_desc"] = "Имея подкрепление, ликвидируйте силы противника.",
["gamemode_3_desc"] = "Ликвидируйте силы противника.",
["gamemode_4_desc"] = "Выживите или заразите всех.",
["gamemode_5_desc"] = "Контролируйте все сектора на локации.",
["killcam_1"] = "Ваша смерть",
["killcam_2"] = "Финальное убийство",
["killcam_3"] = "Нажмите SPACE чтобы пропустить",
["admin_menu_title"] = "Админ Меню",
["admin_change_gamemode"] = "Сменить режим",
}

View File

@@ -0,0 +1,166 @@
COD.Language = {
["team1_name"] = "SpecGru",
["team2_name"] = "KorTac",
["scoreboard_score"] = "Puntuación",
["scoreboard_kd"] = "K/D",
["menu_warning_ks"] = "Advertencia! Tu racha de bajas sera reiniciada cuando la ronda termine.",
["menu_mainweapon"] = "Tu arma principal es: ",
["menu_secweapon"] = "Tu arma secundaria es: ",
["menu_ks_choose"] = "Seleccion de rachas de bajas - ",
["menu_mainperk"] = "Seleccion de ventaja",
["menu_highperk"] = "Seleccion de ventaja definitiva",
["menu_choosemain"] = "Seleccion de arma principal",
["menu_choosesec"] = "Seleccion de arma secundaria",
["menu_apply"] = "Aplicar",
["hud_killed"] = "MUERTO: ",
["hud_killer"] = "Asesinado por: ",
["hud_teamdeathmatch"] = "DUELO POR EQUIPOS",
["hud_win"] = "VICTORIA",
["hud_lose"] = "DERROTA",
["hud_unlockmainperk"] = " - Ventaja principal Desbloqueada!",
["hud_unlockhighperk"] = " - Ventaja definitiva Desbloqueada!",
["hud_unlockkillstreak"] = "Listo para usar!",
["hud_package"] = "Presiona [E] para hagarrar ",
["hud_fullpackage"] = "Presiona [E] para tomar el paquete",
["hud_revive"] = "Reanimacion en progreso",
["hud_torevive"] = "Presiona E para Reanimar",
["hud_reviver"] = "Estas siendo reanimado",
["hud_selfrevive"] = "Auto-reanimacion en progreso",
["hud_toselfrevive"] = "Presiona E para Auto-reanimarte",
["hud_kills"] = "Bajas: ",
["hud_killstreak"] = "Racha de Bajas",
["hud_nuke"] = "MISIL BALISTICO DETECTADO",
["hud_scoreadd_1"] = "+100 Baja",
["hud_scoreadd_2"] = "+110 Disparo ala cabeza",
["hud_scoreadd_3"] = "+150 Remate",
["hud_scoreadd_4"] = "+50 Refuerzos Destruidos",
["hud_scoreadd_5"] = "+125 Cuerpo a cuerpo",
["hud_scoreadd_6"] = "+100 Reanimacion",
["hud_scoreadd_7"] = "+250 Llamado de alerta",
["hud_message_1"] = "Primer infectado",
["hud_message_2"] = "Ultimo sobreviviente",
["hud_message_3"] = "+50 Sobrevivientes",
["hud_domination_1"] = "CAPTURA",
["hud_domination_2"] = "DEFENDER",
["hud_domination_3"] = "PROGRESO",
["hud_domination_4"] = "+200 Zona neutral capturada",
["hud_domination_5"] = "+100 Zona enemiga capturada",
["hud_invasion_1"] = "CAJA DE SUMINISTROS EN CAMINO",
["hud_invasion_2"] = "REFUERZOS EN CAMINO",
["contols_main"] = "Controles:",
["contols_f1"] = "ESC - Editar Equipamiento",
["contols_e"] = "E - Remate",
["contols_q"] = "Q, G - Lanzar Granada",
["contols_v"] = "V - Cuchillo",
["contols_0"] = "7,8,9,0 - Racha de bajas",
["contols_tab"] = "Tab - Puntuacion",
["contols_open"] = "Manten INSERT para abrir los controles.",
["killstreak_1"] = "UAV",
["killstreak_2"] = "Bomb Drone",
["killstreak_3"] = "Armor",
["killstreak_4"] = "Care Package",
["killstreak_5"] = "Counter-UAV",
["killstreak_6"] = "Cluster Mine",
["killstreak_7"] = "Precision Airstrike",
["killstreak_8"] = "K9 Unit",
["killstreak_9"] = "Sentry Gun",
["killstreak_10"] = "Air Patrol",
["killstreak_11"] = "Mortar Strike",
["killstreak_12"] = "SAE",
["killstreak_13"] = "Overwatch Helo",
["killstreak_14"] = "VTOL",
["killstreak_15"] = "Reinforcement",
["killstreak_16"] = "Stealth Bomber",
["killstreak_17"] = "Chopper Gunner",
["killstreak_18"] = "Advanced UAV",
["killstreak_19"] = "Emergency Airdrop",
["killstreak_20"] = "AC-130",
["killstreak_21"] = "Juggernaut",
["killstreak_22"] = "MGB",
["killstreak_desc_1"] = "nave de reconocimiento UAV que muestra la ubicacion del enemigo en el mapa.",
["killstreak_desc_2"] = "Dron a control remoto que lleva una carga de C4.",
["killstreak_desc_3"] = "bolsa de armadura que otorga armadura a todo el equipo.",
["killstreak_desc_4"] = "Solicita un paquete de ayuda a tu ubicacion con una racha de bajas aleatoria.",
["killstreak_desc_5"] = "Dron que inhibe todos los minimapas de los enemigos.",
["killstreak_desc_6"] = "Arroja un dispositivo que lanza un racimo de minas pequeñas en el area mas cercana.",
["killstreak_desc_7"] = "jets que arrojaran un ataque aereo en el area.",
["killstreak_desc_8"] = "Solicita un perro de apoyo para buscar enemigos en el area.",
["killstreak_desc_9"] = "Torreta automatizada que identifica enemigos cercanos.",
["killstreak_desc_10"] = "Tres jets que eliminan alos vehiculos aereos enemigos en el area.",
["killstreak_desc_11"] = "Señala varias oleadas de morteros para atacar un lugar.",
["killstreak_desc_12"] = "Solicita un trio de aviones de combate que ataquen objetivos especificos.",
["killstreak_desc_13"] = "Helicoptero de escolta,vigilara tu posicion y marcara enemigos antes de atacar.",
["killstreak_desc_14"] = "Lanza un par de bombas de precision antes de regresar a proteger una zona marcada.",
["killstreak_desc_15"] = "Helicoptero de apoyo que desplegara soldados bien entrenados.",
["killstreak_desc_16"] = "Bombardero que lanzara una oleada de bombas mientras sigue su ruta.",
["killstreak_desc_17"] = "controla un helicoptero de asalto armado con torreta y misiles aire-tierra.",
["killstreak_desc_18"] = "UAV orbital sin objetivo,muestra al enemigo en tiempo real.",
["killstreak_desc_19"] = "Solicita tres paquetes de ayuda de rachas de bajas aleatorias a tu ubicacion.",
["killstreak_desc_20"] = "Solicita un avion artillado de asalto pesado equipado con un misil laser rastreador y cañones de 40MM y 25MM.",
["killstreak_desc_21"] = "Armadura juggernaut entregada por un paquete de ayuda.",
["killstreak_desc_22"] = "Una explosion gigante que terminara la partida a favor de tu equipo.",
["main_menu_1"] = "Continuar",
["main_menu_2"] = "Cambiar Equipamiento",
["main_menu_3"] = "Opciones",
["main_menu_4"] = "Menu principal",
["main_menu_settings_1"] = "Musica: ",
["main_menu_settings_2"] = "Anunciador: ",
["main_menu_settings_3"] = "Camara de muerte: ",
["main_menu_settings_4"] = "Servidor de discord",
["main_menu_settings_cm"] = "Custom Musica: ",
["main_menu_loadout"] = "Equipamiento",
["main_menu_loadout_wep"] = "Tu seleccion:",
["main_menu_loadout_1"] = "Arma Primaria",
["main_menu_loadout_2"] = "Arma secundaria",
["main_menu_loadout_3"] = "Racha de Bajas",
["main_menu_loadout_3_1"] = "Racha de Bajas seleccionada - ",
["main_menu_loadout_4"] = "Ventajas",
["main_menu_loadout_5"] = "Remates",
["main_menu_loadout_6"] = "Aplicar",
["main_menu_loadout_7"] = "Salir",
["perk_1_1"] = "Pelotón de explosivos",
["perk_1_2"] = "Rastreador",
["perk_1_3"] = "Línea dura",
["perk_1_4"] = "Reabastecimiento",
["perk_1_1_desc"] = "Reduce el daño por explosivos.",
["perk_1_2_desc"] = "Puedes ver paquetes y refuerzos enemigos atravez de las paredes.",
["perk_1_3_desc"] = "Reduce el coste de las bajas de rachas por 1.",
["perk_1_4_desc"] = "Cada 30 segundos ganas un cargador para tu arma.",
["perk_2_1"] = "Parche rápido",
["perk_2_2"] = "Superviviente",
["perk_2_3"] = "Fantasma",
["perk_2_4"] = "Sangre fría",
["perk_2_1_desc"] = "Tu salud se regenera despues de 3 segundos en vez de 8 segundos.",
["perk_2_2_desc"] = "Al morir, pasas a Última batalla con la posibilidad de autorreanimarte una vez por vida.",
["perk_2_3_desc"] = "Indetectable para UAVS.",
["perk_2_4_desc"] = "indetectable para vehiculos y refuerzos enemigos.",
["gamemode_1"] = "DUELO POR EQUIPOS",
["gamemode_2"] = "INVASION",
["gamemode_3"] = "KNOCK OUT",
["gamemode_4"] = "INFECTADO",
["gamemode_5"] = "DOMINIO",
["gamemode_1_desc"] = "Elimina al enemigo a toda costa.",
["gamemode_2_desc"] = "Elimina al enemigo a toda costa.",
["gamemode_3_desc"] = "Elimina al enemigo a toda costa.",
["gamemode_4_desc"] = "Sobrevive o infecta alos demas.",
["gamemode_5_desc"] = "Controla todos los sectores en el mapa.",
["killcam_1"] = "Tu muerte",
["killcam_2"] = "Muerte final",
["killcam_3"] = "ESPACIO para saltar",
}

View File

@@ -0,0 +1,166 @@
COD.Language = {
["team1_name"] = "SpecGru",
["team2_name"] = "KorTac",
["scoreboard_score"] = "Puan",
["scoreboard_kd"] = "K/D",
["menu_warning_ks"] = "Dikkat! Öldürme serisi tur bittikten sonra yenilenecek.",
["menu_mainweapon"] = "Ana silahın: ",
["menu_secweapon"] = "İkincil silahın: ",
["menu_ks_choose"] = "Öldürme serisi sırası seç - ",
["menu_mainperk"] = "Ana yetenek seçin",
["menu_highperk"] = "Gelişmiş yetenek seçin",
["menu_choosemain"] = "Ana silah seçimi",
["menu_choosesec"] = "İkincil silah seçimi",
["menu_apply"] = "Uygula",
["hud_killer"] = "Öldüren: ",
["hud_killed"] = "Ölen: ",
["hud_teamdeathmatch"] = "Takım Ölüm Savaşı",
["hud_win"] = "Zafer",
["hud_lose"] = "Yenilgi",
["hud_unlockmainperk"] = " - Ana yetenek açıldı!",
["hud_unlockhighperk"] = " - Gelişmiş yetenek açıldı!",
["hud_unlockkillstreak"] = "Kullanmaya hazır!",
["hud_package"] = "Almak için [E] bas ",
["hud_fullpackage"] = "Paketi almak için [E] bas",
["hud_revive"] = "Canlandırma süresi",
["hud_torevive"] = "Canlandırmak için E bas",
["hud_reviver"] = "Canlandırılıyorsun",
["hud_selfrevive"] = "Kendini canlandırma süresi",
["hud_toselfrevive"] = "Kendini canlandırmak için E bas",
["hud_kills"] = "Öldürmeler: ",
["hud_killstreak"] = "Öldürme serileri",
["hud_nuke"] = "Balistik füze atışı saptandı",
["hud_scoreadd_1"] = "+100 Öldürme",
["hud_scoreadd_2"] = "+110 Kafadan Vuruş",
["hud_scoreadd_3"] = "+150 Bitirici hareket",
["hud_scoreadd_4"] = "+50 Takviyeler yok edildi",
["hud_scoreadd_5"] = "+125 Yakın Dövüş",
["hud_scoreadd_6"] = "+100 Canlandırma",
["hud_scoreadd_7"] = "+250 Mayday",
["hud_message_1"] = "İlk Enfekte",
["hud_message_2"] = "Son Yaşayan",
["hud_message_3"] = "+50 Yaşayan",
["hud_invasion_1"] = "Malzeme kutuları yolda",
["hud_invasion_2"] = "Zırhlı Takviye birlikleri yolda",
["hud_domination_1"] = "Ele Geçir",
["hud_domination_2"] = "Savun",
["hud_domination_3"] = "Süreç",
["hud_domination_4"] = "+200 Boş bölge ele geçirildi",
["hud_domination_5"] = "+100 Düşman bölgesi ele geçirildi",
["contols_main"] = "Control:",
["contols_f1"] = "ESC - Teçhizatı düzenle",
["contols_e"] = "E - Bitirici hareket",
["contols_q"] = "Q, G - Bomba fırlat",
["contols_v"] = "V - Yakın dövüş",
["contols_0"] = "7,8,9,0 - Skor serisi kullan",
["contols_tab"] = "Tab - Skor tablosu",
["contols_open"] = "INSERT tuşuna basılı tutarak ayarları aç.",
["killstreak_1"] = "UAV",
["killstreak_2"] = "Bomba dronu",
["killstreak_3"] = "Zırh",
["killstreak_4"] = "Yardım paketi",
["killstreak_5"] = "Counter-UAV",
["killstreak_6"] = "Mayın",
["killstreak_7"] = "İkili hava saldırısı",
["killstreak_8"] = "K9 Köpekleri",
["killstreak_9"] = "Nöbetçi silahı",
["killstreak_10"] = "Hava devriyesi",
["killstreak_11"] = "Havan saldırısı",
["killstreak_12"] = "SAE",
["killstreak_13"] = "Gözcü Helikopter",
["killstreak_14"] = "VTOL",
["killstreak_15"] = "Takviye",
["killstreak_16"] = "Bomba Yağdırıcı",
["killstreak_17"] = "Savaş Helikopteri",
["killstreak_18"] = "Gelişmiş UAV",
["killstreak_19"] = "Çoklu yardım paketi",
["killstreak_20"] = "AC-130",
["killstreak_21"] = "Juggernaut",
["killstreak_22"] = "Nükleer Bomba",
["killstreak_desc_1"] = "Mini haritada düşman konumlarını ortaya çıkaran UAV keşif uçağı.",
["killstreak_desc_2"] = "C4 takılı uzaktan kumandalı bir drone.",
["killstreak_desc_3"] = "Tüm ekip için bir çanta dolusu zırh verir.",
["killstreak_desc_4"] = "Bulunduğunuz yere rastgele bir öldürmeserisi bakım paketi gönderin.",
["killstreak_desc_5"] = "Tüm düşman mini haritalarını karıştıran bir drone.",
["killstreak_desc_6"] = "Yakın çevrede bir dizi daha küçük mayın fırlatan bir cihaz atın.",
["killstreak_desc_7"] = "Mevcut en iyi yol boyunca kritik bir saldırı için ikiz jetleri arayın.",
["killstreak_desc_8"] = "Rakibi aramak için K9 köpeklerini çağır.",
["killstreak_desc_9"] = "Yakındaki düşmanları tarayan ve yanıcı mermiler ateşleyen otomatik taret.",
["killstreak_desc_10"] = "Üç jet, hava araçlarını takip edin ve vurarak hava sahasını boşaltın.",
["killstreak_desc_11"] = "Bölgeye saldırmak için birkaç havan topu dalgası sinyali vermek için bir hedef konumu işaretleyin.",
["killstreak_desc_12"] = "Belirli hedeflere hava patlayıcıları atmak için üç jet çağırın.",
["killstreak_desc_13"] = "Pozisyonları gözetleyecek ve onlarla çarpışmadan önce düşmanı bulan bir saldırı helikopteri.",
["killstreak_desc_14"] = "Geri dönüp işaretli bir yeri korumadan önce hassas bir bomba atar.",
["killstreak_desc_15"] = "Sıkı eğitimli üç askeri indiren bir helikopter.",
["killstreak_desc_16"] = "Yolu boyunca geniş bir patlayıcı hattı bırakan bir bombardıman uçağını çağırın.",
["killstreak_desc_17"] = "Taret ve havadan karaya füzelerle donanmış bir saldırı helikopterini kontrol edin.",
["killstreak_desc_18"] = "Mini haritada düşmanın yönünü gerçek zamanlı olarak gösteren yörüngesel bir UAV.",
["killstreak_desc_19"] = "Bulunduğunuz yere 3 rastgele öldürmeserisi bakım paketi gönderin.",
["killstreak_desc_20"] = "40 mm ve 25 mm toplarla birlikte bir füze ile donatılmış ağır taarruz savaş uçağı.",
["killstreak_desc_21"] = "Bakım paketi ile teslim edilen minigunlu devasa saldırı teçhizatı.",
["killstreak_desc_22"] = "Pozisyonunuza büyük bir darbe. Oyunu takımınızın lehine bitirecek.",
["main_menu_1"] = "Oyuna Devam",
["main_menu_2"] = "Ekipmanı Değiştir",
["main_menu_3"] = "Ayarlar",
["main_menu_4"] = "Ana Menü",
["main_menu_settings_1"] = "Müzik: ",
["main_menu_settings_2"] = "Spiker: ",
["main_menu_settings_3"] = "Ölüm Kamerası: ",
["main_menu_settings_4"] = "Discord Server",
["main_menu_settings_cm"] = "Custom Müzik: ",
["main_menu_loadout"] = "Ekipman",
["main_menu_loadout_wep"] = "Senin Seçimin:",
["main_menu_loadout_1"] = "Ana Silah",
["main_menu_loadout_2"] = "İkincil Silah",
["main_menu_loadout_3"] = "Öldürme Serisi",
["main_menu_loadout_3_1"] = "Öldürme Serisi Seçildi - ",
["main_menu_loadout_4"] = "Özellikler",
["main_menu_loadout_5"] = "İnfazlar",
["main_menu_loadout_6"] = "Kaydet",
["main_menu_loadout_7"] = "Çık",
["perk_1_1"] = "Bomba Timi",
["perk_1_2"] = "Gözcü",
["perk_1_3"] = "Kararlı",
["perk_1_4"] = "İkmal",
["perk_1_1_desc"] = "Patlama hasarını azaltır.",
["perk_1_2_desc"] = "Düşman paketlerini ve takviyelerini duvar arkasından gösteren yetenek.",
["perk_1_3_desc"] = "Skor serilerini 1 puan azaltır.",
["perk_1_4_desc"] = "Her 30 saniyede, mevcut silahına 1 şarjör kazanırsın.",
["perk_2_1"] = "Hızlı Yenilenme",
["perk_2_2"] = "Hayatta kalan",
["perk_2_3"] = "Gizli",
["perk_2_4"] = "Soğuk Kanlı",
["perk_2_1_desc"] = "Can yenileme hızın 8 saniyeden 3 saniyeye düşer.",
["perk_2_2_desc"] = "Öldüğün zaman, 1 kereliğe mahsus yere düşersin.",
["perk_2_3_desc"] = "UAV'lere karşı görünmez olursun.",
["perk_2_4_desc"] = "Araçlara ve düşman takviyelerine karşı görünmez olursun.",
["gamemode_1"] = "Takım Ölümsavaşı",
["gamemode_2"] = "Baskın",
["gamemode_3"] = "Nakavt",
["gamemode_4"] = "Enfeksiyon",
["gamemode_5"] = "Hakimiyet",
["gamemode_1_desc"] = "Ne pahasına olursa olsun düşmanı ortadan kaldırın.",
["gamemode_2_desc"] = "Ne pahasına olursa olsun düşmanı ortadan kaldırın.",
["gamemode_3_desc"] = "Ne pahasına olursa olsun düşmanı ortadan kaldırın.",
["gamemode_4_desc"] = "Hayatta kal yada enfekte et.",
["gamemode_5_desc"] = "Konumdaki tüm sektörleri ele geçirin.",
["killcam_1"] = "Ölümün",
["killcam_2"] = "Son öldürme",
["killcam_3"] = "Atlamak için SPACE bas",
}

View File

@@ -0,0 +1,166 @@
COD.Language = {
["team1_name"] = "СпецГру",
["team2_name"] = "КорТак",
["scoreboard_score"] = "Рахунок",
["scoreboard_kd"] = "У/С",
["menu_warning_ks"] = "Увага! Ваші серії вбивств будуть оновлені після закінчення раунду.",
["menu_mainweapon"] = "Ваша основна зброя: ",
["menu_secweapon"] = "Ваша додаткова зброя: ",
["menu_ks_choose"] = "Вибір серії вбивств - ",
["menu_mainperk"] = "Вибір основного перку",
["menu_highperk"] = "Вибір вищого перку",
["menu_choosemain"] = "Вибір основної зброї",
["menu_choosesec"] = "Вибір додаткової зброї",
["menu_apply"] = "Застосувати",
["hud_killer"] = "Вбивця: ",
["hud_killed"] = "УБИТИЙ: ",
["hud_teamdeathmatch"] = "КОМАНДНИЙ БІЙ",
["hud_win"] = "ПЕРЕМОГА",
["hud_lose"] = "УРАЖЕННЯ",
["hud_unlockmainperk"] = " - Розблоковано основний перк!",
["hud_unlockhighperk"] = " - Розблоковано вищий перк!",
["hud_unlockkillstreak"] = "Готовий до використання!",
["hud_package"] = "Затисніть [E], щоб підібрати ",
["hud_fullpackage"] = "Затисніть [E], щоб підібрати посилку",
["hud_revive"] = "Прогрес реанімації",
["hud_torevive"] = "Затисніть E для реанімації",
["hud_reviver"] = "Вас реанімують",
["hud_selfrevive"] = "Прогрес самореанімації",
["hud_toselfrevive"] = "Затисніть E для самореанімації",
["hud_kills"] = "Вбивств: ",
["hud_killstreak"] = "Серія вбивств",
["hud_nuke"] = "ЗНАЧЕНО ЗАПУСК МАССIРОВАННОГО УДАРА",
["hud_scoreadd_1"] = "+100 Ліквідація",
["hud_scoreadd_2"] = "+110 Постріл у голову",
["hud_scoreadd_3"] = "+150 удар, що добиває",
["hud_scoreadd_4"] = "+50 Знищення підкріплення",
["hud_scoreadd_5"] = "+125 Рукопашний бій",
["hud_scoreadd_6"] = "+100 Реанімація",
["hud_scoreadd_7"] = "+250 Сигнал лиха",
["hud_message_1"] = "Первый заражённый",
["hud_message_2"] = "Последний выживший",
["hud_message_3"] = "+50 Выживший",
["hud_domination_1"] = "ЗАХВАТИТЬ",
["hud_domination_2"] = "ЗАЩИЩАТЬ",
["hud_domination_3"] = "ПРОГРЕСС",
["hud_domination_4"] = "+200 Нейтральная зона захвачена",
["hud_domination_5"] = "+100 Вражеская зона захвачена",
["hud_invasion_1"] = "ЯЩИКИ СНАБЖЕНИЯ В ПУТИ",
["hud_invasion_2"] = "ТЯЖЕЛОЕ ПОДКРЕПЛЕНИЕ В ПУТИ",
["contols_main"] = "Керування:",
["contols_f1"] = "ESC - Змінити комплект",
["contols_e"] = "E - удар, що добиває",
["contols_q"] = "Q, G - Кинути гранату",
["contols_v"] = "V - Використовувати ніж",
["contols_0"] = "7,8,9,0 - Використання серії вбивств",
["contols_tab"] = "Tab - Рахунок",
["contols_open"] = "Затисніть INSERT, щоб відкрити керування.",
["killstreak_1"] = "БПЛА",
["killstreak_2"] = "Дрон-камікадзе",
["killstreak_3"] = "Броня",
["killstreak_4"] = "Посилання",
["killstreak_5"] = "Контр-БПЛА",
["killstreak_6"] = "Касетна міна",
["killstreak_7"] = "Точковий авіаудар",
["killstreak_8"] = "Вартовий собака",
["killstreak_9"] = "Турель",
["killstreak_10"] = "Повітряний патруль",
["killstreak_11"] = "Мінометний удар",
["killstreak_12"] = "Стратегічний удар",
["killstreak_13"] = "Вертоліт підтримки",
["killstreak_14"] = "СВВП",
["killstreak_15"] = "Підкріплення",
["killstreak_16"] = "Стелс-бомбардувальник",
["killstreak_17"] = "Гвинтокрил зі стрільцем",
["killstreak_18"] = "МБПЛА",
["killstreak_19"] = "Екстренний вантаж",
["killstreak_20"] = "AC-130",
["killstreak_21"] = "Джаггернаут",
["killstreak_22"] = "Балістична ракета",
["killstreak_desc_1"] = "БПЛА, который показывает местоположение противника на мини-карте.",
["killstreak_desc_2"] = "Управляемый дрон с прикрепленным зарядом C4.",
["killstreak_desc_3"] = "Дает мешок брони для всей команды.",
["killstreak_desc_4"] = "Вызовите случайную посылку с серией убийств к себе.",
["killstreak_desc_5"] = "Дрон, который блокирует все вражеские миникарты.",
["killstreak_desc_6"] = "Взрывное устройство, которое запускает группу небольших мин в непосредственной близости.",
["killstreak_desc_7"] = "Вызов двойных реактивных самолетов для точного удара по наилучшему доступному пути.",
["killstreak_desc_8"] = "Вызов сторожевой собаки для поиска врагов.",
["killstreak_desc_9"] = "Автоматическая турель, которая сканирует ближайших врагов и стреляет зажигательными снарядами.",
["killstreak_desc_10"] = "Три самолета, выслеживающий воздушные транспортные средства, сбивает их, освобождая воздушное пространство.",
["killstreak_desc_11"] = "Отметьте целевое местоположение, чтобы дать сигнал нескольким волнам минометов атаковать область.",
["killstreak_desc_12"] = "Вызовите три реактивных самолета, чтобы сбросить взрывчатку с воздуха на указанные цели.",
["killstreak_desc_13"] = "Атакующий вертолет, который будет следить за позициями и находить врагов, прежде чем атаковать их.",
["killstreak_desc_14"] = "Выпускает прицельную бомбу, прежде чем вернуться и охранять отмеченное место.",
["killstreak_desc_15"] = "Вертолет, который высаживает трех солдат с тяжелой подготовкой.",
["killstreak_desc_16"] = "Вызов бомбардировщика, который выпускает на своем пути большую линию взрывчатки.",
["killstreak_desc_17"] = "Управляйте штурмовым вертолетом, вооруженным турелью и ракетами класса воздух-земля.",
["killstreak_desc_18"] = "Орбитальный БПЛА, который показывает направление противника на мини-карте в режиме реального времени.",
["killstreak_desc_19"] = "Вызовите к себе 3 случайные посылки с серией убийств.",
["killstreak_desc_20"] = "Тяжелый штурмовой боевой корабль, оснащенный ракетой, а также 40-мм и 25-мм пушками.",
["killstreak_desc_21"] = "Штурмовое снаряжение Джаггернаута с миниганом доставлено посылкой.",
["killstreak_desc_22"] = "Массированный удар по вашей позиции. Закончит игру в пользу вашей команды.",
["main_menu_1"] = "Продолжить игру",
["main_menu_2"] = "Изменить комплект",
["main_menu_3"] = "Настройки",
["main_menu_4"] = "Главное меню",
["main_menu_settings_cm"] = "Своя музыка: ",
["main_menu_settings_1"] = "Музыка: ",
["main_menu_settings_2"] = "Диктор: ",
["main_menu_settings_3"] = "Момент смерти: ",
["main_menu_settings_4"] = "Дискорд сервер",
["main_menu_loadout"] = "Комплект",
["main_menu_loadout_wep"] = "Ваш выбор:",
["main_menu_loadout_1"] = "Основное оружие",
["main_menu_loadout_2"] = "Доп. оружие",
["main_menu_loadout_3"] = "Серии убийств",
["main_menu_loadout_3_1"] = "Выбрано серий убийств - ",
["main_menu_loadout_4"] = "Перки",
["main_menu_loadout_5"] = "Добивания",
["main_menu_loadout_6"] = "Применить",
["main_menu_loadout_7"] = "Выйти",
["perk_1_1"] = "Вибухотехнік",
["perk_1_2"] = "Спостерігач",
["perk_1_3"] = "Упертість",
["perk_1_4"] = "Поповнення запасів",
["perk_1_1_desc"] = "Зменшує збитки від вибухів.",
["perk_1_2_desc"] = "Здатність бачити через стіни ворожі посилки та підкріплення.",
["perk_1_3_desc"] = "Зменшення серій вбивств на 1.",
["perk_1_4_desc"] = "Кожні 30 секунд, вам дається 1 магазин до поточної зброї.",
["perk_2_1"] = "Швидке лікування",
["perk_2_2"] = "Виживання",
["perk_2_3"] = "Привид",
["perk_2_4"] = "Прохолодність",
["perk_2_1_desc"] = "Ваше здоров'я відновлюється через 3 секунди, замість 8 секунд.",
["perk_2_2_desc"] = "Замість того, щоб померти ви переходите в стан останнього ривка 1 раз за життя.",
["perk_2_3_desc"] = "Невидимість для БПЛА.",
["perk_2_4_desc"] = "Невидимість для техніки та ворожих підкріплень.",
["gamemode_1"] = "КОМАНДНЫЙ БОЙ",
["gamemode_2"] = "ВТОРЖЕНИЕ",
["gamemode_3"] = "НОКАУТ",
["gamemode_4"] = "ЗАРАЖЕНИЕ",
["gamemode_5"] = "ПРЕВОСХОДСТВО",
["gamemode_1_desc"] = "Ликвидируйте силы противника.",
["gamemode_2_desc"] = "Ликвидируйте силы противника.",
["gamemode_3_desc"] = "Ликвидируйте силы противника.",
["gamemode_4_desc"] = "Выживите или заразите всех.",
["gamemode_5_desc"] = "Контролируйте все сектора на локации.",
["killcam_1"] = "Ваша смерть",
["killcam_2"] = "Финальное убийство",
["killcam_3"] = "Нажмите SPACE чтобы пропустить",
}

View File

@@ -0,0 +1,34 @@
local lang = GetConVar("gmod_language"):GetString()
AddCSLuaFile('lang/russian.lua')
AddCSLuaFile('lang/ukrainian.lua')
AddCSLuaFile('lang/spanish.lua')
AddCSLuaFile('lang/turkish.lua')
AddCSLuaFile('lang/german.lua')
AddCSLuaFile('lang/lithuanian.lua')
AddCSLuaFile('lang/hungarian.lua')
AddCSLuaFile('lang/polish.lua')
AddCSLuaFile('lang/brazilian.lua')
AddCSLuaFile('lang/english.lua')
if lang == "ru" then
include('lang/russian.lua')
elseif lang == "uk" then
include('lang/ukrainian.lua')
elseif lang == "es-ES" then
include('lang/spanish.lua')
elseif lang == "tr" then
include('lang/turkish.lua')
elseif lang == "de" then
include('lang/german.lua')
elseif lang == "lt" then
include('lang/lithuanian.lua')
elseif lang == "hu" then
include('lang/hungarian.lua')
elseif lang == "pl" then
include('lang/polish.lua')
elseif lang == "pt-BR" then
include('lang/brazilian.lua')
else
include('lang/english.lua')
end

View File

@@ -0,0 +1,144 @@
if game.SinglePlayer() then return end
-----------------------------------------------------------------------=#
if SERVER then
util.AddNetworkString("MultiplayerSoundFix_PlaySound")
local ENT = FindMetaTable("Entity")
if !MPSNDFIX_SOUND_PLAY then MPSNDFIX_SOUND_PLAY = sound.Play end
if !MPSNDFIX_EMITSOUND then MPSNDFIX_EMITSOUND = ENT.EmitSound end
-----------------------------------------------------------------------=#
timer.Create("MPSOUNDFIX_RESET_PLY_NET_MSG_COUNT", 1, 0, function()
for _, ply in ipairs(player.GetAll()) do
ply.MPSNDFIX_NETMSGS = 0
end
end)
-----------------------------------------------------------------------=#
-----------------------------------------------------------------------=#
local function posObscured( pos1, pos2 )
return util.TraceLine({
start = pos1,
endpos = pos2,
mask = MASK_NPCWORLDSTATIC,
}).Hit
end
-----------------------------------------------------------------------=#
-----------------------------------------------------------------------=#
local function sound_Net( name, pos, lvl, pitch, vol )
if lvl < 100 then return end
for _, ply in ipairs(player.GetAll()) do
if ply.MPSNDFIX_NETMSGS and ply.MPSNDFIX_NETMSGS >= 10 then continue end
local dist = ply:GetPos():DistToSqr(pos)
if dist < 1970^2 then continue end
if dist > 8000^2 && posObscured( ply:WorldSpaceCenter(), pos ) then continue end
net.Start("MultiplayerSoundFix_PlaySound")
net.WriteString(name)
net.WriteVector(pos)
net.WriteUInt(lvl, 10)
net.WriteUInt(pitch, 9)
net.WriteFloat(vol)
net.Send(ply)
ply.MPSNDFIX_NETMSGS = ply.MPSNDFIX_NETMSGS + 1
end
end
-----------------------------------------------------------------------=#
-----------------------------------------------------------------------=#
function sound:Play( pos, lvl, pitch, vol )
sound_Net( self, pos or Vector(), lvl or 100, pitch or 100, vol or 1 )
MPSNDFIX_SOUND_PLAY( self, pos, lvl, pitch, vol )
end
-----------------------------------------------------------------------=#
-----------------------------------------------------------------------=#
function ENT:EmitSound( name, lvl, pitch, vol, ... )
if !self.GetClass or self:GetClass() == "gmod_tool" then return end -- Weird entities that we just skip
sound_Net( name, self:WorldSpaceCenter(), lvl or 100, pitch or 100, vol or 1 )
MPSNDFIX_EMITSOUND( self, name, lvl, pitch, vol, ... )
end
-----------------------------------------------------------------------=#
end
-----------------------------------------------------------------------=#
if CLIENT then
net.Receive("MultiplayerSoundFix_PlaySound", function()
local name = net.ReadString()
local pos = net.ReadVector()
local lvl = net.ReadUInt(10)
local pitch = net.ReadUInt(9)
local vol = net.ReadFloat()
sound.Play(name, pos, lvl, pitch, vol)
end)
end
--PENETRATION-----------------------------------------------------------=#
local matEasyPen = {
[MAT_GLASS] = 0,
[MAT_WOOD] = 1,
[MAT_PLASTIC] = 1,
}
local function Penetration(ent, data)
if IsValid(ent) then
if ent.CurrentPenetrationPower >= 0 then
data.Damage = data.Damage/1.5
data.Callback = function(ent, tr, dmg)
data.Src = tr.HitPos+data.Dir*4
if matEasyPen[tr.MatType] then
ent.CurrentPenetrationPower = ent.CurrentPenetrationPower - matEasyPen[tr.MatType]
else
ent.CurrentPenetrationPower = ent.CurrentPenetrationPower - 2
end
if tr.Entity and (tr.Entity:IsPlayer() or tr.Entity:IsNPC()) then
ent.CurrentPenetrationPower = ent.CurrentPenetrationPower - 1
data.IgnoreEntity = tr.Entity
end
if ent.CurrentPenetrationPower >= 0 and not tr.HitSky then
Penetration(ent, data)
end
end
ent:FireBullets(data)
end
end
end
hook.Add("EntityFireBullets", "TDM_Penetration", function(ent, data)
if ent.PenetrationPower and ent.PenetrationPower > 0 then
if ent.CurrentPenetrationPower == ent.PenetrationPower then
data.Callback = function(ent, tr, dmg)
if tr.Entity and (tr.Entity:IsPlayer() or tr.Entity:IsNPC()) then
ent.CurrentPenetrationPower = ent.CurrentPenetrationPower - 1
data.IgnoreEntity = tr.Entity
end
if matEasyPen[tr.MatType] then
ent.CurrentPenetrationPower = ent.CurrentPenetrationPower - matEasyPen[tr.MatType]
else
ent.CurrentPenetrationPower = ent.CurrentPenetrationPower - 2
end
if ent.CurrentPenetrationPower >= 0 and not tr.HitSky then
data.Src = tr.HitPos+data.Dir*4
Penetration(ent, data)
end
end
return true
end
end
end)

View File

@@ -0,0 +1,486 @@
local meta = FindMetaTable("Player")
local enb = FindMetaTable("Entity")
function enb:IsMWIINPC()
return self:IsNPC() or self:IsNextBot()
end
local function GetLongOfSequence(model, sequence)
local t = ents.Create("base_anim")
t:SetModel(model)
t:SetRenderMode(10)
t:Spawn()
local id, long = t:LookupSequence(sequence)
t:Remove()
return long, id
end
function enb:Freeze(bool)
if self:IsMWIINPC() then
if bool then
self:AddEFlags(EFL_NO_THINK_FUNCTION)
else
self:RemoveEFlags(EFL_NO_THINK_FUNCTION)
end
end
end
function enb:MWII_BE(bonename)
local bone = self:LookupBone(bonename)
if bone then
local ef = EffectData()
ef:SetOrigin(self:GetBonePosition(bone))
ef:SetColor(0)
util.Effect("BloodImpact", ef)
end
end
function enb:HeadBlow()
for i=1,4 do
local pos = self:GetBonePosition(self:LookupBone("ValveBiped.Bip01_Head1"))
local m = ents.Create("prop_physics")
m:SetModel("models/Gibs/HGIBS_scapula.mdl")
m:SetPos(pos)
m:SetAngles(AngleRand())
m:Spawn()
m:SetMaterial("models/flesh")
m:SetCollisionGroup(1)
m:GetPhysicsObject():SetVelocity(VectorRand(-64,64))
local ef = EffectData()
ef:SetOrigin(pos)
util.Effect("BloodImpact", ef)
timer.Simple(15, function()
if !IsValid(m) then return end
m:Remove()
end)
end
end
function MWIITransferBones( base, ragdoll )
if !IsValid( base ) or !IsValid( ragdoll ) then return end
for i = 0, ragdoll:GetPhysicsObjectCount() - 1 do
local bone = ragdoll:GetPhysicsObjectNum( i )
if ( IsValid( bone ) ) then
local pos, ang = base:GetBonePosition( ragdoll:TranslatePhysBoneToBone( i ) )
if ( pos ) then bone:SetPos( pos ) end
if ( ang ) then bone:SetAngles( ang ) end
end
end
end
downNPCsClassList = {
["vj_tdm_invasion_soldier1"] = true,
["vj_tdm_invasion_soldier2"] = true,
}
reviveNPCsClassList = {
["vj_tdm_invasion_soldier1"] = true,
["vj_tdm_invasion_soldier2"] = true,
}
takedownedNPCsClassList = {
["vj_tdm_invasion_soldier1"] = true,
["vj_tdm_invasion_soldier2"] = true,
}
takedownNPCsClassList = {
["vj_tdm_invasion_soldier1"] = true,
["vj_tdm_invasion_soldier2"] = true,
}
function enb:IsDowned()
if self:IsPlayer() then
return self:GetNWBool('Downed')
else
return self.Downed
end
end
function enb:MWIIsFriend(tar, neutral_too)
local dis = self:Disposition(tar)
if neutral_too then
return dis == 3 or dis == 4
else
return dis == 3
end
end
function enb:IsInFOVEnt(ent2)
local ent1Pos = self:GetPos()
local ent2Pos = ent2:GetPos()
local ent1Ang = self:GetAngles():Forward()
local direction = (ent1Pos - ent2Pos):GetNormalized()
local dot = direction:Dot(ent1Ang)
local fov = math.cos(math.rad(90))
if dot < fov then
return true
else
return false
end
end
local optimize_delay = 0
hook.Add("Think", "STDMFindNPCs", function()
if optimize_delay < CurTime() then
optimize_delay = CurTime()+1
local enttab = ents.FindByClass("*tdm_*")
for i=1,#enttab do
local ent = enttab[i]
if ent:IsNPC() and reviveNPCsClassList[ent:GetClass()] and !ent.Downed and !ent.Takedowning then
local tar = ent.ReviveThisTarget
if !IsValid(tar) then
local targets = ents.FindInSphere( ent:GetPos(), 512 )
for _, fri in ipairs(targets) do
if (fri:IsPlayer() or fri.IsMWIINPC and fri:IsMWIINPC()) and ent:MWIIsFriend(fri, true) then
if (fri:IsDowned() or fri.Downed) and !IsValid(fri.TargetReviver) then
fri.TargetReviver = ent
ent.ReviveThisTarget = fri
break
end
end
end
else
local pos = tar:GetPos()
local dist = pos:DistToSqr(ent:GetPos())
if not timer.Exists("HelpNPCToMWII"..ent:EntIndex()) then
timer.Create("HelpNPCToMWII"..ent:EntIndex(), 2, 1, function()
if !IsValid(ent) then return end
ent:SetLastPosition( pos )
ent:SetSchedule( SCHED_FORCED_GO_RUN )
if ent.IsVJBaseSNPC then
ent:VJ_TASK_GOTO_LASTPOS()
end
end)
end
if dist < 2500 and not ent.InSeqMWII then
local tk = ents.Create("mwii_sequence_npc")
tk.NPC = ent
tk.Target = tar
tk.Sequence = "revive"
tk:SetPos(ent:GetPos())
local ang1 = (pos - ent:GetPos()):Angle()
ang1.x, ang1.z = 0, 0
tk:SetAngles(ang1)
tk:Spawn()
ent.ReviveThisTarget = nil
end
if !tar:IsDowned() then
ent.ReviveThisTarget = nil
tar.TargetReviver = nil
end
end
end
if ent:IsNPC() and takedownNPCsClassList[ent:GetClass()] and !ent.Downed and !ent.Takedowning and !ent.CantUseTakedown and math.random(1,4) >= 2 then
local targets = ents.FindInSphere( ent:GetPos(), 200 )
for _, en in ipairs(targets) do
if (en:IsMWIINPC() and en:Health() > 0) and ent:IsInFOVEnt(en) and !ent:MWIIsFriend(en, true) and !en.CantUseTakedown then
if ent:EyePos():DistToSqr(en:EyePos()) < 5000 then
ent:NPC_Takedown(en)
break
else
if not timer.Exists("TakedownNPCToMWII"..ent:EntIndex()) then
timer.Create("TakedownNPCToMWII"..ent:EntIndex(), 2, 1, function()
if !IsValid(ent) or !IsValid(en) or en.Takedowning then return end
ent:SetLastPosition( en:GetPos() )
ent:SetSchedule( SCHED_FORCED_GO_RUN )
if ent.IsVJBaseSNPC then
ent:VJ_TASK_GOTO_LASTPOS()
end
end)
end
break
end
end
end
end
end
end
end)
hook.Add("OnNPCKilled", "STDMHook", function(ent)
if ent.Downed or ent.InSeqMWII then
ent:SetRenderMode(RENDERMODE_NORMAL)
end
end)
hook.Add("EntityTakeDamage", "!!!!!NPC_STDMHook", function(ply, dmg)
local att = dmg:GetAttacker()
local allowthis = ply:IsMWIINPC()
if allowthis and dmg:GetDamage() < ply:Health() and math.random(1,100) == 1 and not dmg:IsExplosionDamage() and not ply.AlreadyWasDowned and not ply.Takedowning and not ply:IsDowned() then
if ply:IsMWIINPC() and downNPCsClassList[ply:GetClass()] then
dmg:ScaleDamage(0)
ply.Downed = true
ply:SetHealth(50)
local tk = ents.Create("mwii_down_npc")
tk.NPC = ply
tk:SetPos(ply:GetPos())
tk:SetAngles(ply:GetAngles())
tk:Spawn()
ply.DownedEnt = tk
return true
end
end
if ply.CantDamageMWII then
dmg:ScaleDamage(0)
return true
end
end)
----------------------------------------------------------
function meta:IsAtBack(enemy) --This function was made by OpenAI ChatGPT
if !IsValid(enemy) then return end
local enemyForward = enemy:GetForward()
local enemyToPlayer = self:GetPos() - enemy:GetPos()
local angle = enemyForward:Angle():Forward():Dot(enemyToPlayer:GetNormalized())
local degrees = math.deg(math.acos(angle))
return degrees > 100
end
function meta:Takedown()
local tr = self:GetEyeTrace()
local ent = tr.Entity
local dist = tr.StartPos:Distance(tr.HitPos) < 96
local isnpc = ent:IsMWIINPC()
if (!ent:IsPlayer() and !isnpc) or (!isnpc and ent:Team() == self:Team()) or (isnpc and ent:MWIIsFriend(self)) or self:IsDowned() or ent.Takedowning or self.Takedowning or !ent:OnGround() or !self:OnGround() or !self:IsAtBack(ent) or not dist then
return
end
if isnpc and !ent:LookupBone("ValveBiped.Bip01_Spine") then
return
end
local downed = ent:IsDowned()
local _, rnd = table.Random(COD.Takedowns)
local float = rnd
if self:IsPlayer() and not self:IsBot() and self:GetNWString('TakedownAnim') != "00" then
float = self:GetNWString('TakedownAnim')
end
if not COD.Takedowns[float] then return end
if !isnumber(float) then
anim1, anim2 = "execution_"..float.."_attacker_stand", "execution_"..float.."_victim_stand"
if downed then
anim1, anim2 = "execution_"..float.."_attacker_laststand", "execution_"..float.."_victim_laststand"
end
end
print(float, anim1, anim2)
local zpos = self:GetPos()
local delay1 = select(2, self:LookupSequence(anim1))
local delay2 = COD.Takedowns[float].deathtime
if downed then
delay2 = COD.Takedowns[float].deathtime_laststand
end
local ang1 = ent:EyeAngles()
self:Freeze(true)
self:SetEyeAngles(Angle(ang1.x,ang1.y,0))
self:SetPos(ent:GetPos())
self:SetSVAnimation(anim1)
local wep = self:GetActiveWeapon()
if IsValid(wep) then
self.TakedowningGun = wep:GetClass()
else
self.TakedowningGun = ""
end
local wep = ent:GetActiveWeapon()
if IsValid(wep) then
ent.TakedowningGun = wep:GetClass()
else
ent.TakedowningGun = ""
end
self.TakedowningTarget = ent
self.Takedowning = true
self.TakedownIsFinished = false
self:SetActiveWeapon(nil)
local tk
if isnpc then
ent.Takedowning = true
tk = ents.Create("mwii_takedown_npc")
tk.NPC = ent
tk.Finisher = self
tk.Delay = delay2
tk.Sequence = anim2
tk:SetPos(ent:GetPos())
tk:SetAngles(ent:GetAngles())
tk:Spawn()
else
ent:SetActiveWeapon(nil)
ent.TakedowningTarget = self
ent.Takedowning = true
ent.TakedownIsFinished = false
ent:SetSVAnimation(anim2)
ent:Freeze(true)
ent:SetEyeAngles(Angle(ang1.x,ang1.y,0))
net.Start("COD.TakedownCam")
net.WriteBool(true)
net.WriteFloat(delay2)
net.WriteBool(false)
net.Send(ent)
timer.Simple(delay2, function()
if IsValid(ent) and IsValid(self) and self.Takedowning then
self.TakedownIsFinished = true
ent:Freeze(false)
ent:TakeDamage(ent:Health()+ent:Armor(), self)
ent.Takedowning = false
ent.TakedowningTarget = nil
ent:SetSVAnimation("")
end
end)
end
net.Start("COD.TakedownCam")
net.WriteBool(true)
net.WriteFloat(delay1)
net.WriteBool(true)
net.Send(self)
local bm = ent
if ent:IsMWIINPC() then
bm = tk
end
if downed then
COD.Takedowns[float].effect_laststand(self, ent, bm)
else
COD.Takedowns[float].effect(self, ent, bm)
end
timer.Simple(delay1, function()
if IsValid(self) and self.Takedowning then
self:Freeze(false)
self.Takedowning = false
self:SetSVAnimation("")
self:SelectWeapon(self.TakedowningGun)
if IsValid(ent) and ent:Health() > 0 then
self:SetPos(zpos)
end
end
end)
end
function enb:NPC_Takedown(ent)
local isnpc = ent:IsMWIINPC()
if (isnpc and !takedownedNPCsClassList[ent:GetClass()]) or self:IsDowned() or ent.Takedowning or self.Takedowning or !ent:OnGround() or !self:OnGround() then
return
end
if isnpc and !ent:LookupBone("ValveBiped.Bip01_Spine") then
return
end
local downed = ent:IsDowned()
local float = "00"
local rnd = math.random(1,33)
if rnd >= 10 then
float = ""..rnd
else
float = "0"..rnd
end
if not COD.Takedowns[float] then return end
if !isnumber(float) then
anim1, anim2 = "execution_"..float.."_attacker_stand", "execution_"..float.."_victim_stand"
if downed then
anim1, anim2 = "execution_"..float.."_attacker_laststand", "execution_"..float.."_victim_laststand"
end
end
local zpos = self:GetPos()
local delay1 = GetLongOfSequence("models/player/breen.mdl", anim1)
local delay2 = COD.Takedowns[float].deathtime
if downed then
delay2 = COD.Takedowns[float].deathtime_laststand
end
local ang1 = self:EyeAngles()
self:Freeze(true)
ent:SetAngles(Angle(0,ang1.y,0))
self:SetPos(ent:GetPos())
local wep = self:GetActiveWeapon()
if IsValid(wep) then
wep:SetClip1(0)
end
self.TakedowningTarget = ent
self.Takedowning = true
self.TakedownIsFinished = false
local tk = ents.Create("mwii_takedown_npc")
tk.NPC = self
tk.AttackerTime = delay2
tk.KillingEntityMode = true
tk.ToKill = ent
tk.Finisher = self
tk.Delay = delay1
tk.Sequence = anim1
tk:SetPos(ent:GetPos())
tk:SetAngles(ent:GetAngles())
tk:Spawn()
local tk2
if ent:IsPlayer() then
ent:SetActiveWeapon(nil)
ent.TakedowningTarget = self
ent.Takedowning = true
ent.TakedownIsFinished = false
ent:SetSVAnimation(anim2)
ent:Freeze(true)
ent:SetEyeAngles(Angle(ang1.x,ang1.y,0))
net.Start("COD.TakedownCam")
net.WriteBool(true)
net.WriteFloat(delay2)
net.WriteBool(false)
net.Send(ent)
else
ent.Takedowning = true
ent:SetAngles(Angle(0,ang1.y,0))
tk2 = ents.Create("mwii_takedown_npc")
tk2.NPC = ent
tk2.Finisher = self
tk2.Delay = delay2
tk2.Sequence = anim2
tk2:SetPos(ent:GetPos())
tk2:SetAngles(ent:GetAngles())
tk2:Spawn()
end
if !ent:IsPlayer() then
ent = tk2
end
local bm = ent
if ent:IsMWIINPC() then
bm = tk2
end
if downed then
COD.Takedowns[float].effect_laststand(tk, ent, bm)
else
COD.Takedowns[float].effect(tk, ent, bm)
end
timer.Simple(delay1, function()
if IsValid(self) and self.Takedowning then
self.Takedowning = false
if IsValid(ent) and ent:Health() > 0 then
self:SetPos(zpos)
end
end
end)
end
hook.Add("CreateEntityRagdoll", "MWIITDCreateRagdoll", function(owner, ragdoll)
local rag = owner:GetNWEntity('MWIIRag')
if IsValid(rag) then
MWIITransferBones( rag, ragdoll )
ragdoll:SetNoDraw(false)
if owner.HeadBlow then
ragdoll:ManipulateBoneScale(ragdoll:LookupBone("ValveBiped.Bip01_Head1"), Vector(0,0,0))
end
end
if owner:IsPlayer() and owner.HeadBlow then
ragdoll:ManipulateBoneScale(ragdoll:LookupBone("ValveBiped.Bip01_Head1"), Vector(0,0,0))
end
end)

View File

@@ -0,0 +1,2 @@
AddCSLuaFile("other/sh_fixes.lua")
include("other/sh_fixes.lua")

View File

@@ -0,0 +1,279 @@
local meta = FindMetaTable("Player")
function COD:IsAllowedSelfRevive()
return COD.DataTable["Gamemode"] != 3
end
function meta:StopSlide()
return self.Takedowning or self:GetNWBool('Downed') or self:GetNWString('SVAnim') != "" or self:WaterLevel() > 1 or !self:Alive() or !self:OnGround()
end
function meta:Sliding(bool)
if bool then
if isvector(self.SlidingVelocity) then return end
local ang = self:GetAngles()
ang.x = 0
ang.z = 0
local vec = ang:Forward()*32
self.SlidingDuration = CurTime()+1
self.SlidingVelocity = vec
self:SetNWBool('Sliding', true)
self:EmitSound("tdmg/ply/slide"..math.random(1,3)..".wav")
self:ViewPunch(Angle(-5,0,0))
else
self.SlidingVelocity = nil
self:SetNWBool('Sliding', false)
end
end
function meta:IsDowned()
return self:GetNWBool('Downed')
end
function meta:MovingDirection(threshold) --This function was made by OpenAI ChatGPT
threshold = threshold or 0.1
local vel = self:GetVelocity()
local forward = self:GetForward()
local right = self:GetRight()
local forwardDot = vel:Dot(forward)
local rightDot = vel:Dot(right)
if forwardDot > threshold then
return "forward"
elseif forwardDot < -threshold then
return "backward"
end
if rightDot > threshold then
return "right"
elseif rightDot < -threshold then
return "left"
end
return "stand"
end
function meta:Down()
if COD:IsAllowedSelfRevive() then
self:SetNWFloat('DownedTime', CurTime()+15)
else
self:SetNWFloat('DownedTime', CurTime()+30)
end
self:SetNWBool('Downed', true)
self:SetViewOffset( Vector(0,0,24) )
self:SetViewOffsetDucked( Vector(0,0,24) )
self:SetHealth(50)
self:SetJumpPower(0)
self.AlreadyWasDowned = true
self.ReviveNumber = 0
self:SetSVAnimation("laststand_down", true)
self:GodEnable()
self:SetActiveWeapon(nil)
timer.Simple(0.5, function()
if !IsValid(self) then return end
self:GodDisable()
end)
end
function meta:Revive(died)
self:SetViewOffset( Vector(0,0,64) )
self:SetViewOffsetDucked( Vector(0,0,32) )
self:SetJumpPower(128)
self:SetHealth(25)
if died then
self:Kill()
else
self:SetSVAnimation("laststand_standup", true)
end
self:SetNWBool('Downed', false)
self.RevivingSelf = false
end
hook.Add("SetupMove", "TDMSetupMove1", function(ply, mv, cmd)
if ply:IsDowned() then
if ply:KeyDown(IN_USE) or IsValid(ply:GetNWEntity('Reviver')) then
mv:SetForwardSpeed(1)
mv:SetSideSpeed(1)
else
mv:SetMaxSpeed(25)
mv:SetMaxClientSpeed(25)
end
end
if isvector(ply.SlidingVelocity) then
mv:SetMaxSpeed(1)
mv:SetMaxClientSpeed(1)
end
end)
hook.Add("Think", "TDMSliding", function()
for _, ent in ipairs(player.GetAll()) do
if isvector(ent.SlidingVelocity) then
ent:SetVelocity(ent.SlidingVelocity)
end
if ent:KeyDown(IN_SPEED) and ent:KeyDown(IN_DUCK) and not ent:Crouching() and !ent:StopSlide() then
ent:Sliding(true)
end
if !ent:KeyDown(IN_DUCK) and isvector(ent.SlidingVelocity) or ent.SlidingDuration and ent.SlidingDuration < CurTime() or ent:StopSlide() then
ent:Sliding(false)
end
end
end)
hook.Add("PlayerDeath", "TDMRevive", function(ply)
if ply:IsDowned() then
ply:Revive()
end
ply.AlreadyWasDowned = false
end)
hook.Add("Think", "TDMAnimsRevive", function()
local plys2 = player.GetAll()
for i=1,#plys2 do
local ply = plys2[i]
if ply:IsDowned() and ply:GetNWFloat('DownedTime') < CurTime() and (not ply:KeyDown(IN_USE) or !COD:IsAllowedSelfRevive()) and !IsValid(ply:GetNWEntity('Reviver')) and not ply.Takedowning then
ply:Revive(true)
end
if ply:Alive() and not ply:IsDowned() and ply:KeyDown(IN_USE) then
local tr = ply:GetEyeTrace()
local ent = tr.Entity
local dist = ply:EyePos():DistToSqr(tr.HitPos) < 5000
if ent:IsPlayer() and dist and ent:IsDowned() and ply:Team() == ent:Team() then
ent:SetNWEntity('Reviver', ply)
ply.RevivingThatEntity = ent
end
if !IsValid(ply.RevivingThatEntity) or !ply.RevivingThatEntity:Alive() or not ply.RevivingThatEntity:IsDowned() then
ply.RevivingThatEntity = nil
if ply:GetNWString('SVAnim') == "laststand_startrevive" and not ply.Takedowning then
ply:SetSVAnimation("")
end
end
end
if ply:IsDowned() then
local rev = ply:GetNWEntity('Reviver')
ply:SetActiveWeapon(nil)
if !IsValid(rev) and ply:KeyDown(IN_USE) and not ply.Takedowning and COD:IsAllowedSelfRevive() then
ply.ReviveNumber = ply.ReviveNumber + FrameTime()/5.5
if not ply.RevivingSelf then
ply:SetSVAnimation("laststand_selfrevive", true)
ply.RevivingSelf = true
end
elseif !IsValid(rev) and not ply:KeyDown(IN_USE) and not ply.Takedowning then
ply.ReviveNumber = 0
if ply.RevivingSelf then
ply:SetSVAnimation("")
ply.RevivingSelf = false
end
end
if IsValid(rev) then
if rev:KeyDown(IN_USE) and rev:GetEyeTrace().Entity == ply and not ply.Takedowning then
ply.ReviveNumber = ply.ReviveNumber + FrameTime()/3
rev:SetActiveWeapon(nil)
if not rev.RevivingTarget then
rev:SetSVAnimation("laststand_startrevive")
rev.RevivingTarget = true
end
else
if rev.RevivingTarget then
rev:SetSVAnimation("")
rev:SelectWeapon(rev:GetNWString('MainWep'))
rev.RevivingTarget = false
end
ply:SetNWEntity('Reviver', NULL)
end
end
if ply.ReviveNumber >= 1 then
ply.ReviveNumber = 0
ply:SetSVAnimation("")
if IsValid(rev) then
rev:ChangeScore(100)
rev:SetSVAnimation("")
rev:SelectWeapon(rev:GetNWString('MainWep'))
rev.RevivingTarget = false
COD:GiveMessageCenter({rev}, 5)
end
ply:Revive()
ply:SelectWeapon(ply:GetNWString('MainWep'))
end
else
ply:SetNWEntity('Reviver', NULL)
end
end
end)
hook.Add("CalcMainActivity", "TDMAnimsRevive", function(ply, vel)
if ply:IsDowned() and ply:GetNWString('SVAnim') == "" then
local anim1 = ply:LookupSequence("laststand_idle")
local anim2 = ply:LookupSequence("laststand_crawl_forward")
local anim3 = ply:LookupSequence("laststand_crawl_backward")
local anim4 = ply:LookupSequence("laststand_crawl_left")
local anim5 = ply:LookupSequence("laststand_crawl_right")
local dir = ply:MovingDirection(8)
local vel = ply:GetVelocity():Length2D() > 10
if dir == "forward" and vel then
return -1, anim2
elseif dir == "backward" and vel then
return -1, anim3
elseif dir == "left" and vel then
return -1, anim4
elseif dir == "right" and vel then
return -1, anim5
else
return -1, anim1
end
end
end)
local delay = CurTime()+5
hook.Add("Think", "TDMApplyCommands", function()
if delay < CurTime() then
delay = CurTime()+5
for k, v in pairs(COD.ApplyCommands["Server"]) do
RunConsoleCommand(k, v)
end
end
end)
concommand.Add("cod_jointeam", function(ply, cmd, args)
local float = tonumber(args[1])
if ply:IsSuperAdmin() then
ply:SetTeam(float)
ply:Spawn()
end
end)
---------------------------------------------------------------------
function COD:InfilStart()
if COD.DataTable["Gamemode"] == 4 then return end
local t1s, t2s = COD.DataTable["Team1_InfilSettings"], COD.DataTable["Team2_InfilSettings"]
for k1, v1 in pairs(t1s.positions) do
timer.Simple(0.1*k1, function()
local infil = ents.Create("tdm_player_infil")
infil:SetPos(v1)
infil:SetAngles(t1s.angles[k1])
infil.Infil = t1s.type
infil.TeamChoose = 1
infil:Spawn()
end)
end
for k2, v2 in pairs(t2s.positions) do
timer.Simple(0.1*k2, function()
local infil = ents.Create("tdm_player_infil")
infil:SetPos(v2)
infil:SetAngles(t2s.angles[k2])
infil.Infil = t2s.type
infil.TeamChoose = 2
infil:Spawn()
end)
end
end
hook.Add("COD.ChangeState", "TDM_Infil", function(start)
if COD.DataTable["Enable_InfilAnimations"] and start then
COD:InfilStart()
end
end)

View File

@@ -0,0 +1,40 @@
function COD:SpawnDominationFlags()
local tab = COD.DataTable["flag_Spawns"]
for i=1,3 do
local flag = ents.Create("tdm_domination_flag")
flag:SetPos(tab[i])
flag:Spawn()
end
end
------------------------------------------------------
hook.Add("PlayerDeath", "TDMPlayer_Domination", function(ply)
if COD.GameStarted and COD.DataTable["Gamemode"] == 5 then
if ply:Team() == 1 then
COD:AddFragsToData(2, -1)
elseif ply:Team() == 2 then
COD:AddFragsToData(1, -1)
end
end
end)
hook.Add("COD.ChangeState", "TDMPlayer_Domination", function(start)
if start and COD.DataTable["Gamemode"] == 5 then
COD:SpawnDominationFlags()
end
end)
local thinkdelay = 0
hook.Add("Think", "TDMPlayer_Domination", function()
if COD.GameStarted and COD.DataTable["Gamemode"] == 5 and thinkdelay < CurTime() then
thinkdelay = CurTime()+3
for k, v in ipairs(ents.FindByClass("tdm_domination_flag")) do
local team = v:GetNWFloat('Team')
if team > 0 then
COD:AddFragsToData(team, 1)
end
end
end
end)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,172 @@
COD.DelayGamemodeNumber = 999999999
function COD:JoinAllToTeam()
for _, ply in ipairs(player.GetAll()) do
ply:SetTeam(1)
ply:KillSilent()
ply:Spawn()
end
end
function COD:ShowTimer(num)
net.Start("COD.TimerShow")
net.WriteFloat(num)
net.Broadcast()
end
function COD:RandomInfection()
local tabp = player.GetAll()
local ply = table.Random(tabp)
for _, plys in ipairs(tabp) do
if plys != ply then
COD:GiveMessageCenter(plys, 9)
plys:ChangeScore(50)
end
end
if IsValid(ply) then
local pos = ply:GetPos()
local ang = ply:EyeAngles()
ply:SetTeam(2)
ply:KillSilent()
ply:Spawn()
COD:GiveMessageCenter(ply, 7)
timer.Simple(0.02, function()
if !IsValid(ply) then return end
ply:SetPos(pos)
ply:SetEyeAngles(ang)
end)
end
end
hook.Add("PlayerDeath", "TDMPlayer_Infection", function(ply, inf, att)
if COD.GameStarted and COD.DataTable["Gamemode"] == 4 then
COD.DataTable["Team1_Kills"] = 0
COD.DataTable["Team2_Kills"] = 0
if ply:Team() == 1 then
COD.TimeBeforeEnd = COD.TimeBeforeEnd+30
BroadcastLua([[
COD.TimeMatch = ]]..COD.TimeBeforeEnd..[[
]])
for _, plys in ipairs(team.GetPlayers(1)) do
COD:GiveMessageCenter(plys, 9)
plys:ChangeScore(50)
end
end
timer.Simple(0.1, function()
if !IsValid(ply) or ply:Team() == 2 then return end
ply:SetTeam(2)
if #team.GetPlayers(1) == 1 then
COD:GiveMessageCenter(player.GetAll(), 8)
end
end)
end
end)
hook.Add("PlayerSpawn", "TDMPlayer_Infection", function(ply)
if COD.GameStarted and COD.DataTable["Gamemode"] == 4 then
timer.Simple(0.01, function()
if !IsValid(ply) then return end
ply:SetNWFloat('Perk1', 4)
ply:SetNWFloat('Perk2', 0)
ply:SetNWFloat('Perk1_Choose', 0)
ply:SetNWFloat('Perk2_Choose', 0)
ply:SetNWFloat('KillStreak1', 0)
ply:SetNWFloat('KillStreak2', 0)
ply:SetNWFloat('KillStreak3', 0)
ply:SetPos(table.Random(COD.DataTable["simple_Spawns"]))
if ply:Team() == 2 then
ply:SetModel("models/humangrunt/cod4/captain_macmillan_pm.mdl")
ply:SetupHands()
ply:StripWeapons()
ply:Give('tdm_infection_knife')
ply:SetNWFloat('FragGrenades', 0)
ply:SetNWFloat('FlashGrenades', 0)
end
end)
end
end)
hook.Add("COD.ChangeState", "TDMPlayer_Infection", function(start)
if start and COD.DataTable["Gamemode"] == 4 then
COD.TimeBefore1PerkUnlock = math.huge
COD.TimeBefore2PerkUnlock = math.huge
COD.DisableSpawn = false
COD.DelayGamemodeNumber = CurTime()+COD.DataTable["Delay_Before_Start"]+21
COD.DisableEndGameByNoTeam = true
COD:JoinAllToTeam()
timer.Simple(COD.DataTable["Delay_Before_Start"]+10, function()
if COD.DataTable["Gamemode"] == 4 and COD.GameStarted then
COD:ShowTimer(10)
end
end)
timer.Simple(COD.DataTable["Delay_Before_Start"]+20, function()
if COD.DataTable["Gamemode"] == 4 and COD.GameStarted then
COD:RandomInfection()
end
end)
else
COD.DisableSpawn = false
end
end)
hook.Add("Think", "TDMPlayer_Infection", function()
if COD.GameStarted and COD.DataTable["Gamemode"] == 4 then
local team1, team1alive = team.GetPlayers(1), false
local team2alive = false
local loseteam = 0
for k, p in ipairs(team1) do
if p:Alive() then
team1alive = true
break
end
end
if #team.GetPlayers(2) != 0 then
team2alive = true
end
if team1alive and team2alive then
COD.DelayGamemodeNumber = CurTime()+2
loseteam = 0
elseif team1alive and not team2alive then
loseteam = 1
elseif team2alive and not team1alive then
loseteam = 2
COD.TimeBeforeEnd = 0
elseif not team1alive and not team2alive then
loseteam = 3
end
if COD.TimeBeforeStart < CurTime()+1 and team1alive then
loseteam = 1
COD.DelayGamemodeNumber = 0
end
if loseteam == 1 and COD.DelayGamemodeNumber < CurTime() then
COD.DataTable["Team1_Kills"] = 1
COD.DataTable["Team2_Kills"] = 0
BroadcastLua([[
COD.DataTable["Team2_Kills"] = ]]..COD.DataTable["Team2_Kills"]..[[
COD.DataTable["Team1_Kills"] = ]]..COD.DataTable["Team1_Kills"]..[[
]])
elseif loseteam == 2 and COD.DelayGamemodeNumber < CurTime() then
COD.DataTable["Team2_Kills"] = 1
COD.DataTable["Team1_Kills"] = 0
BroadcastLua([[
COD.DataTable["Team2_Kills"] = ]]..COD.DataTable["Team2_Kills"]..[[
COD.DataTable["Team1_Kills"] = ]]..COD.DataTable["Team1_Kills"]..[[
]])
elseif loseteam == 3 and COD.DelayGamemodeNumber < CurTime() then
COD.DataTable["Team1_Kills"] = 0
COD.DataTable["Team2_Kills"] = 0
BroadcastLua([[
COD.DataTable["Team2_Kills"] = ]]..COD.DataTable["Team2_Kills"]..[[
COD.DataTable["Team1_Kills"] = ]]..COD.DataTable["Team1_Kills"]..[[
]])
end
end
end)

View File

@@ -0,0 +1,335 @@
COD_Invasion = COD_Invasion or {}
COD_Invasion.current_ai_spawned_team1 = 0
COD_Invasion.current_ai_spawned_team2 = 0
COD_Invasion.current_ai_max_team = COD.DataTable["MaxAIInTeam"]
COD_Invasion.HeavyUnitsDelay = 0
COD_Invasion.HeavyUnits = false
COD_Invasion.SupportPackagesDelay = 0
COD_Invasion.SupportPackages = false
local delay_in_action = 0
local spawn_team1_delay = 0
local spawn_team2_delay = 0
local heli_team1_delay = 0
local heli_team2_delay = 0
------------------------------------------------------------------------
hook.Add("OnNPCKilled", "TDM_Invasion", function(ent, att)
if COD.DataTable["Gamemode"] == 2 then
local class1 = "vj_tdm_invasion_soldier1"
local class2 = "vj_tdm_invasion_soldier2"
if class1 == ent:GetClass() then
COD:AddFragsToData(2, 1)
COD_Invasion.current_ai_spawned_team1 = COD_Invasion.current_ai_spawned_team1 - 1
elseif class2 == ent:GetClass() then
COD:AddFragsToData(1, 1)
COD_Invasion.current_ai_spawned_team2 = COD_Invasion.current_ai_spawned_team2 - 1
end
end
if att:IsPlayer() then
att:AddFrags(1)
end
end)
hook.Add("PlayerDeath", "TDM_Invasion", function(ply)
if COD.DataTable["Gamemode"] == 2 then
if ply:Team() == 1 then
COD:AddFragsToData(2, 4)
elseif ply:Team() == 2 then
COD:AddFragsToData(1, 4)
end
end
end)
hook.Add("COD.ChangeState", "TDM_Invasion", function(start)
if COD.DataTable["Gamemode"] == 2 then
COD_Invasion:RemoveAllAI()
if start then
spawn_team1_delay = CurTime()+15
spawn_team2_delay = CurTime()+15
heli_team1_delay = CurTime()+30
heli_team2_delay = CurTime()+30
COD_Invasion:CreateStartAI()
COD_Invasion.HeavyUnits = false
COD_Invasion.SupportPackages = false
COD_Invasion.HeavyUnitsDelay = CurTime()+COD.GamemodeSettings[2]["Time_Before_HeavyUnits"]
COD_Invasion.SupportPackagesDelay = CurTime()+COD.GamemodeSettings[2]["Time_Before_SupportPackages"]
else
COD_Invasion.HeavyUnitsDelay = math.huge
COD_Invasion.SupportPackagesDelay = math.huge
end
end
end)
hook.Add("OnEntityCreated", "TDM_Invasion", function(ent)
local class1 = "vj_tdm_invasion_soldier1"
local class2 = "vj_tdm_invasion_soldier2"
if class1 == ent:GetClass() then
COD_Invasion.current_ai_spawned_team1 = COD_Invasion.current_ai_spawned_team1 + 1
elseif class2 == ent:GetClass() then
COD_Invasion.current_ai_spawned_team2 = COD_Invasion.current_ai_spawned_team2 + 1
end
end)
hook.Add("Think", "TDM_Invasion", function(start)
if COD.TimeBeforeEnd < CurTime() and COD.GameStarted then
COD_Invasion:RemoveAllAI()
end
if COD.GameStarted and COD.DataTable["Gamemode"] == 2 then
if COD_Invasion.HeavyUnitsDelay < CurTime() and not COD_Invasion.HeavyUnits then
COD_Invasion.HeavyUnits = true
COD:ShowAnnouncment(2)
end
if COD_Invasion.SupportPackagesDelay < CurTime() and not COD_Invasion.SupportPackages then
COD_Invasion.SupportPackages = true
COD_Invasion:SupplyPackages()
COD:ShowAnnouncment(1)
end
if delay_in_action < CurTime() then
delay_in_action = CurTime() + 1
local team1 = COD_Invasion:GetAICount(1)
local team2 = COD_Invasion:GetAICount(2)
local max = COD_Invasion.current_ai_max_team
if team1 < max and spawn_team1_delay < CurTime() then
spawn_team1_delay = CurTime() + 2
COD_Invasion:CreateSoldier(1)
if heli_team1_delay < CurTime() then
heli_team1_delay = CurTime()+math.random(60,120)
COD_Invasion:CreateHeli(1)
end
end
if team2 < max and spawn_team2_delay < CurTime() then
spawn_team2_delay = CurTime() + 2
COD_Invasion:CreateSoldier(2)
if heli_team2_delay < CurTime() then
heli_team2_delay = CurTime()+math.random(60,120)
COD_Invasion:CreateHeli(2)
end
end
end
end
end)
----------------------------------------------------------------------------------
function COD_Invasion:SupplyPackages()
heli_team1_delay = CurTime()+30
heli_team2_delay = CurTime()+30
for i, pos in ipairs(COD.DataTable["backup_Spawns"]) do
local tr2 = util.TraceLine( {
start = pos,
endpos = pos+Vector(0,0,99999),
filter = function( ent ) return ( ent:GetClass() == "prop_static" ) end,
} )
local height = math.Clamp(tr2.HitPos:Distance(pos), 100, 600)
local heli = ents.Create("prop_dynamic")
heli:SetModel("models/tdmg/heli.mdl")
heli:SetPos(pos+Vector(0,0,4))
heli:SetAngles(Angle(0,math.random(0,360),0))
heli:Spawn()
heli:ResetSequence("spawn")
heli:SetBodygroup(3, 1)
timer.Simple(1, function()
for i=1,10 do
local sproxy = ents.Create("tdm_infil_soundproxy")
sproxy:SetOwner(heli:GetOwner())
sproxy:SetPos(heli:GetPos())
sproxy:SetAngles(heli:GetAngles())
sproxy:SetParent(heli)
sproxy.Sound = "tdmg/sas1_veh1_int_quad_front_stat.wav"
sproxy.Bone = "tag_main_rotor_static"
sproxy.Vol = 100
sproxy:Spawn()
end
end)
timer.Simple(12, function()
if !IsValid(heli) then return end
local care = ents.Create("tdm_package")
care:SetPos(pos+Vector(0,0,height-64))
care:Spawn()
care:SetAngles(heli:GetAngles())
end)
timer.Simple(30, function()
if IsValid(heli) then
heli:Remove()
end
end)
end
end
function COD_Invasion:CreateSoldier(team, custompos, freezetime)
local sol = ents.Create("vj_tdm_invasion_soldier"..team)
if custompos then
sol:SetPos(custompos)
else
sol:SetPos(COD_Invasion:GetAIPosition(team))
end
sol.Team = team
sol:Spawn()
if freezetime then
sol:AddEFlags(EFL_NO_THINK_FUNCTION)
sol:SetSequence("idle_passive")
timer.Simple(freezetime, function()
if !IsValid(sol) then return end
sol:RemoveEFlags(EFL_NO_THINK_FUNCTION)
end)
end
end
function COD_Invasion:CreateHeli(team, custompos)
local h = ents.Create("tdm_infil")
if custompos then
h:SetPos(custompos)
else
h:SetPos(COD_Invasion:GetHeliPosition(team))
end
h.Team2Team = team == 2
h.Invasion = true
h.KillstreakModel = true
h.Team = team
h:Spawn()
h:SetNWFloat('Team', h.Team)
end
function COD_Invasion:CreateStartAI()
local spos_team1 = COD.DataTable["Team1_AISpawns"]
local spos_team2 = COD.DataTable["Team2_AISpawns"]
local hpos_team1 = COD.DataTable["Team1_HeliSpawns"]
local hpos_team2 = COD.DataTable["Team2_HeliSpawns"]
for k, v in pairs(spos_team1) do
COD_Invasion:CreateSoldier(1, v, COD.DataTable["Delay_Before_Start"]-2)
end
for k, v in pairs(spos_team2) do
COD_Invasion:CreateSoldier(2, v, COD.DataTable["Delay_Before_Start"]-2)
end
local delay = 0
if COD.DataTable["Enable_InfilAnimations"] then
delay = 20
end
timer.Simple(delay, function()
for k, v in pairs(hpos_team1) do
COD_Invasion:CreateHeli(1, v, COD.DataTable["Delay_Before_Start"]-2)
end
for k, v in pairs(hpos_team2) do
COD_Invasion:CreateHeli(2, v, COD.DataTable["Delay_Before_Start"]-2)
end
end)
end
function COD_Invasion:RemoveAllAI()
local soldiers = ents.FindByClass("vj_tdm_invasion_*")
COD_Invasion.current_ai_spawned_team1 = 0
COD_Invasion.current_ai_spawned_team2 = 0
for k, v in pairs(soldiers) do
v:Remove()
end
end
function COD_Invasion:GetAICount(team)
local soldiers = ents.FindByClass("vj_tdm_invasion_*")
local count = 0
for k, v in pairs(soldiers) do
if v.Team == team then
count = count + 1
end
end
return count
end
function COD_Invasion:GetAIPosition(team)
local enemy_players = player.GetAll()
local positions = {}
for _, pos in ipairs(COD.DataTable["simple_Spawns"]) do
local can = true
local gdist = 0
for _, en in ipairs(enemy_players) do
if en:Alive() and en:Team() != team then
local dist = en:GetPos():DistToSqr(pos)
if en:IsLineOfSightClear(pos) or dist < 50000 then
can = false
end
for v, n in ipairs(ents.FindInSphere(pos, 64)) do
if n:IsNPC() or n:IsPlayer() then
can = false
break
end
end
if dist > gdist then
gdist = dist
end
end
end
if can then
table.insert(positions, {vec = pos, dist = gdist})
end
end
if #positions > 0 then
local position, dist = positions[1].vec, 0
for _, p in ipairs(positions) do
if p.dist > dist then
dist = p.dist
position = p.vec
end
end
return position
else
return table.Random(COD.DataTable["simple_Spawns"])
end
end
function COD_Invasion:GetHeliPosition(team)
local enemy_players = ents.GetAll()
local positions = {}
for _, pos in ipairs(COD.DataTable["backup_Spawns"]) do
local can = true
local gdist = 0
for _, en in ipairs(enemy_players) do
if en:IsNPC() and en.Team != team or en:IsPlayer() and en:Team() != team then
local dist = en:GetPos():DistToSqr(pos)
if dist < 50000 then
can = false
end
if dist > gdist then
gdist = dist
end
end
end
if can then
table.insert(positions, {vec = pos, dist = gdist})
end
end
if #positions > 0 then
local position, dist = positions[1].vec, 0
for _, p in ipairs(positions) do
if p.dist > dist then
dist = p.dist
position = p.vec
end
end
return position
else
return table.Random(COD.DataTable["backup_Spawns"])
end
end

View File

@@ -0,0 +1,168 @@
util.AddNetworkString("COD.KillcamSend")
COD.LastKillData = {
length = 0,
data = ""
}
function COD:ShowLastKillCam(delay)
if not COD.DataTable["Enable_KillCam"] then return end
local len = COD.LastKillData.length
local tab = COD.LastKillData.data
timer.Simple(delay, function()
net.Start("COD.KillcamSend")
net.WriteUInt(len, 32)
net.WriteData(tab, len)
net.WriteBool(true)
net.Broadcast()
end)
end
function COD:ShowKillCam(ply, att, delay)
if not COD.DataTable["Enable_KillCam"] then return end
if !istable(ply) then
ply = {ply}
end
if not delay then
delay = 0
end
if att.KillCamTable then
local tab = att.KillCamTable
local num2 = #att.KillCamTable-300
for i=1,num2 do
table.remove(tab, 1)
end
local tab3 = util.TableToJSON(tab)
tab3 = util.Compress(tab3)
local flt = #tab3
if flt < 4294967295 then
for _, en in pairs(ply) do
if IsValid(en) then
net.Start("COD.KillcamSend")
net.WriteUInt(flt, 32)
net.WriteData(tab3, flt)
net.WriteBool(false)
net.Send(en)
end
end
COD.LastKillData = {
length = flt,
data = tab3
}
end
end
end
hook.Add("Tick", "RecordCamBot", function()
if COD.DataTable["Enable_KillCam"] then
local plyall = player.GetAll()
for k=1,#plyall do
local ply = plyall[k]
if !COD.DataTable["Enable_KillCam_WithBots"] and !ply:IsPlayer() then continue end
if not ply.KillCamTable then
ply.KillCamTable = {}
end
if #ply.KillCamTable > 500 then
table.remove(ply.KillCamTable, 1)
end
local plytab = {
model = ply:GetModel(),
ang = (ply:GetAimVector()):GetNormalized():Angle(),
pos = ply:EyePos()-ply:GetAimVector()*32+ply:GetUp()*16,
snd = "",
blt = {},
hit = 0
}
if ply:GetNWString('SVAnim') != "" then
plytab.ang = (ply:GetForward()*1-ply:GetRight()*2):GetNormalized():Angle()
plytab.pos = ply:GetAttachment(ply:LookupAttachment('eyes')).Pos+ply:GetRight()*64-ply:GetForward()*16
end
if ply.VMSND and istable(ply.VMSND) then
plytab.snd = ply.VMSND
ply.VMSND = nil
end
if ply.VMBLT then
plytab.blt = ply.VMBLT
ply.VMBLT = nil
end
if ply.VMHIT then
plytab.hit = ply.VMHIT
ply.VMHIT = nil
end
local otab = {
ent = {},
model = {},
pos = {},
ang = {},
cycle = {},
seq = {},
alive = {}
}
for i=1,#plyall do
local pl = plyall[i]
if pl:IsLineOfSightClear(ply) then
table.insert(otab.ent, pl:EntIndex())
table.insert(otab.model, pl:GetModel())
table.insert(otab.pos, pl:GetPos())
table.insert(otab.ang, Angle(0,math.Round(pl:EyeAngles().y),0))
table.insert(otab.cycle, pl:GetCycle())
table.insert(otab.seq, pl:GetSequenceName(pl:GetSequence()))
table.insert(otab.alive, pl:Alive())
end
end
table.insert(ply.KillCamTable, {
ply = plytab,
other = otab,
})
end
end
end)
hook.Add("EntityEmitSound", "RecordCamBot", function(data)
local ent = data.Entity
if ent:IsPlayer() or ent.IsBot and ent:IsBot() then
if not istable(ent.VMSND) then
ent.VMSND = {}
end
table.insert(ent.VMSND, data.SoundName)
end
end)
hook.Add("EntityTakeDamage", "RecordCamBot", function(ent, data)
local att = data:GetAttacker()
if (att:IsPlayer() or att.IsBot and att:IsBot()) and (ent:IsPlayer() or ent.IsBot and ent:IsBot()) then
att.VMHIT = 1
if data:GetDamage() >= ent:Health()+ent:Armor() then
att.VMHIT = 2
end
end
end)
hook.Add("EntityFireBullets", "RecordCamBot", function(ent, data)
if ent:IsPlayer() or ent.IsBot and ent:IsBot() then
if not istable(ent.VMSND) then
ent.VMSND = {}
end
ent.VMBLT = data
end
end)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,93 @@
COD.DelayGamemodeNumber = 999999999
hook.Add("PlayerDeath", "TDMPlayer_Knockout", function(ply)
if COD.GameStarted and COD.DataTable["Gamemode"] == 3 then
timer.Simple(0.1, function()
if !IsValid(ply) then return end
ply.DeathTime = CurTime()+999999999
end)
end
end)
hook.Add("PlayerSpawn", "TDMPlayer_Knockout", function(ply)
if COD.GameStarted and COD.DataTable["Gamemode"] == 3 then
timer.Simple(0.1, function()
if !IsValid(ply) then return end
ply:SetNWFloat('Perk1', 0)
ply:SetNWFloat('Perk2', 2)
ply:SetNWFloat('Perk1_Choose', 0)
ply:SetNWFloat('Perk2_Choose', 0)
ply:SetNWFloat('KillStreak1', 0)
ply:SetNWFloat('KillStreak2', 0)
ply:SetNWFloat('KillStreak3', 0)
end)
end
end)
hook.Add("COD.ChangeState", "TDMGmodStartMatch_Knockout", function(start)
if start and COD.DataTable["Gamemode"] == 3 then
COD.TimeBefore1PerkUnlock = math.huge
COD.TimeBefore2PerkUnlock = math.huge
COD.DisableSpawn = true
COD.DelayGamemodeNumber = CurTime()+5
COD.DisableEndGameByNoTeam = false
else
COD.DisableSpawn = false
end
end)
hook.Add("Think", "TDMGmodStartMatch_Knockout", function()
if COD.GameStarted and COD.DataTable["Gamemode"] == 3 then
local team1, team1alive = team.GetPlayers(1), false
local team2, team2alive = team.GetPlayers(2), false
local loseteam = 0
for k, p in ipairs(team1) do
if p:Alive() then
team1alive = true
break
end
end
for k, p in ipairs(team2) do
if p:Alive() then
team2alive = true
break
end
end
if team1alive and team2alive then
COD.DelayGamemodeNumber = CurTime()+2
loseteam = 0
elseif team1alive and not team2alive then
loseteam = 1
elseif team2alive and not team1alive then
loseteam = 2
elseif not team1alive and not team2alive then
loseteam = 3
end
if loseteam == 1 and COD.DelayGamemodeNumber < CurTime() then
COD.DataTable["Team1_Kills"] = COD.DataTable["MaxKills"]
BroadcastLua([[
COD.DataTable["Team2_Kills"] = ]]..COD.DataTable["Team2_Kills"]..[[
COD.DataTable["Team1_Kills"] = ]]..COD.DataTable["Team1_Kills"]..[[
]])
elseif loseteam == 2 and COD.DelayGamemodeNumber < CurTime() then
COD.DataTable["Team2_Kills"] = COD.DataTable["MaxKills"]
BroadcastLua([[
COD.DataTable["Team2_Kills"] = ]]..COD.DataTable["Team2_Kills"]..[[
COD.DataTable["Team1_Kills"] = ]]..COD.DataTable["Team1_Kills"]..[[
]])
elseif loseteam == 3 and COD.DelayGamemodeNumber < CurTime() then
COD.DataTable["Team1_Kills"] = 0
COD.DataTable["Team2_Kills"] = 0
BroadcastLua([[
COD.DataTable["Team2_Kills"] = ]]..COD.DataTable["Team2_Kills"]..[[
COD.DataTable["Team1_Kills"] = ]]..COD.DataTable["Team1_Kills"]..[[
]])
end
end
end)

View File

@@ -0,0 +1,237 @@
function COD:ConnectWeapon(ply, model, lang, lpos, scale, attachment, usebonemerge, boneang)
local wep = ents.Create('base_anim')
local attach = ply:GetAttachment(ply:LookupAttachment(attachment))
wep:SetPos(attach.Pos)
wep:SetModel(model)
wep:SetAngles(attach.Ang)
wep:SetParent(ply, ply:LookupAttachment(attachment))
if usebonemerge then
wep:AddEffects(EF_BONEMERGE)
end
if boneang and ply:LookupBone(boneang) then
wep:SetAngles(select(2, ply:GetBonePosition(ply:LookupBone(boneang))))
end
wep:Spawn()
wep:SetLocalAngles(lang)
wep:SetLocalPos(lpos)
wep:SetModelScale(scale, 0)
function wep:Think()
if !IsValid(ply) or not ply.Takedowning then
wep:Remove()
end
end
return wep
end
function COD:TakeThisIntoPhys(ent, removetime)
local wep = ents.Create("prop_physics")
wep:SetModel(ent:GetModel())
wep:SetAngles(ent:GetAngles())
wep:SetPos(ent:GetPos())
wep:SetCollisionGroup(COLLISION_GROUP_DEBRIS)
wep:Spawn()
wep:GetPhysicsObject():Wake()
timer.Simple(removetime, function()
if !IsValid(wep) then return end
wep:Remove()
end)
ent:Remove()
return wep, wep:GetPhysicsObject()
end
local knife_model = "models/tdmg/wep/combat_knife.mdl"
local pistol_model = "models/tdmg/wep/m18.mdl"
local ar_model = "models/viper/mw/weapons/w_galima.mdl"
local machete_model = "models/tdmg/wep/w_machete.mdl"
local pkm_model = "models/tdmg/wep/w_mw_pkm.mdl"
local shotgun_model = "models/tdmg/wep/w_rem870_p.mdl"
local sniper_model = "models/tdmg/wep/m82.mdl"
local sledgehammer_model = "models/tdmg/wep/w_sledgehammer.mdl"
local pickaxe_model = "models/tdmg/wep/wpn_h1_melee_pick_axe_wm.mdl"
local katana_model = "models/tdmg/wep/w_katana.mdl"
local new_pickaxe_model = "models/tdmg/wep/new/hatchet.mdl"
local new_katana_model = "models/tdmg/wep/new/katana.mdl"
local new_stick_model = "models/tdmg/wep/new/kalistick.mdl"
local modeltab = {knife_model, pistol_model, ar_model, machete_model, pkm_model, shotgun_model, sniper_model, sledgehammer_model, katana_model, new_stick_model, new_pickaxe_model, new_katana_model}
for _, v in pairs(modeltab) do
util.PrecacheModel(v)
end
local pl = FindMetaTable("Player")
util.AddNetworkString("COD.TakedownCam")
concommand.Add("cod_givetakedown", function(ply, cmd, args)
if args[1] then
local num = tostring(args[1])
ply:SetNWString('TakedownAnim', num)
end
end)
hook.Add("PlayerButtonDown", "TakeDownTDM", function(ply, but)
if ply:Alive() and but == KEY_E then
ply:Takedown()
end
end)
hook.Add("CalcMainActivity", "!TDMAnims", function(ply, vel)
local str = ply:GetNWString('SVAnim')
local num = ply:GetNWFloat('SVAnimDelay')
local st = ply:GetNWFloat('SVAnimStartTime')
if str != "" then
ply:SetCycle((CurTime()-st)/num)
return -1, ply:LookupSequence(str)
end
end)
hook.Add("Think", "TDMGmodTakedown", function()
for _, ply in ipairs(player.GetAll()) do
if ply.Takedowning and (not ply:Alive() or !ply.TakedownIsFinished and (!IsValid(ply.TakedowningTarget) or ply.TakedowningTarget:Health() <= 0)) then
ply.Takedowning = false
ply:SetSVAnimation("")
ply:Freeze(false)
net.Start("COD.TakedownCam")
net.WriteBool(false)
net.Send(ply)
if ply.TakedowningGun then
ply:SelectWeapon(ply.TakedowningGun)
end
elseif ply:IsBot() and ply.Takedowning and IsValid(ply.TakedowningTarget) then
ply:SetPos(ply.TakedowningTarget:GetPos())
ply:SetEyeAngles(ply.TakedowningTarget:EyeAngles())
end
end
end)
function pl:SetSVAnimation(anim, autostop)
self:SetNWString('SVAnim', anim)
self:SetNWFloat('SVAnimDelay', select(2, self:LookupSequence(anim)))
self:SetNWFloat('SVAnimStartTime', CurTime())
self:SetCycle(0)
if autostop then
local delay = select(2, self:LookupSequence(anim))
timer.Simple(delay, function()
if !IsValid(self) then return end
local anim2 = self:GetNWString('SVAnim')
if anim == anim2 then
self:SetSVAnimation("")
end
end)
end
end
function pl:IsAtBack(enemy) --This function was made by OpenAI ChatGPT
if !IsValid(enemy) then return end
local enemyForward = enemy:GetForward()
local enemyToPlayer = self:GetPos() - enemy:GetPos()
local angle = enemyForward:Angle():Forward():Dot(enemyToPlayer:GetNormalized())
local degrees = math.deg(math.acos(angle))
return degrees > 100
end
function pl:Takedown(forceentity)
local tr = self:GetEyeTrace()
local ent = tr.Entity
local dist = tr.StartPos:Distance(tr.HitPos) < 96
if forceentity then
dist = true
ent = forceentity
end
if !ent:IsPlayer() or ent:Team() == self:Team() or self:IsDowned() or ent.Takedowning or self.Takedowning or !ent:OnGround() or !self:OnGround() or !self:IsAtBack(ent) or not dist then
return
end
local float = self:GetNWString('TakedownAnim')
if float == "00" then
local _, rnd = table.Random(COD.Takedowns)
float = rnd
end
if not COD.Takedowns[float] or float == "00" then return end
if not COD.Takedowns[float] then return end
if !isnumber(float) then
anim1, anim2 = "execution_"..float.."_attacker_stand", "execution_"..float.."_victim_stand"
if ent:IsDowned() then
anim1, anim2 = "execution_"..float.."_attacker_laststand", "execution_"..float.."_victim_laststand"
end
end
local delay1 = select(2, self:LookupSequence(anim1))
local delay2 = COD.Takedowns[float].deathtime
if ent:IsDowned() then
delay2 = COD.Takedowns[float].deathtime_laststand
end
local ang1 = ent:EyeAngles()
self:Freeze(true)
self:SetEyeAngles(Angle(ang1.x,ang1.y,0))
self:SetPos(ent:GetPos())
self:SetSVAnimation(anim1)
local wep = self:GetActiveWeapon()
if IsValid(wep) then
self.TakedowningGun = wep:GetClass()
else
self.TakedowningGun = ""
end
local wep = ent:GetActiveWeapon()
if IsValid(wep) then
ent.TakedowningGun = wep:GetClass()
else
ent.TakedowningGun = ""
end
self.TakedowningTarget = ent
self.Takedowning = true
self.TakedownIsFinished = false
self:SetActiveWeapon(nil)
ent:SetActiveWeapon(nil)
ent.TakedowningTarget = self
ent.Takedowning = true
ent.TakedownIsFinished = false
ent:SetSVAnimation(anim2)
ent:Freeze(true)
ent:SetEyeAngles(Angle(ang1.x,ang1.y,0))
net.Start("COD.TakedownCam")
net.WriteBool(true)
net.WriteFloat(delay1)
net.WriteBool(true)
net.Send(self)
net.Start("COD.TakedownCam")
net.WriteBool(true)
net.WriteFloat(delay2)
net.WriteBool(false)
net.Send(ent)
if ent:IsDowned() then
COD.Takedowns[float].effect_laststand(self, ent)
else
COD.Takedowns[float].effect(self, ent)
end
timer.Simple(delay2, function()
if IsValid(ent) and IsValid(self) and self.Takedowning then
self.TakedownIsFinished = true
ent:Freeze(false)
ent:TakeDamage(ent:Health()+ent:Armor(), self)
ent.Takedowning = false
ent.TakedowningTarget = nil
ent:SetSVAnimation("")
end
end)
timer.Simple(delay1, function()
if IsValid(self) and self.Takedowning then
self:Freeze(false)
self:SetEyeAngles(Angle(ang1.x,ang1.y,0))
self.Takedowning = false
self:SetSVAnimation("")
self:SelectWeapon(self.TakedowningGun)
end
end)
end

View File

@@ -0,0 +1,609 @@
GM.Author = 'HarionPlayZ'
GM.Name = "Call Of Duty TDM"
--[[
Say thanks to this guys:
HarionPlayZ - Main Developer, ported CoD Animations to GMod.
TameCoot - Retargeted CoD Season 1 Animations
Kirloper - Gave MWII Animations
Shark_Vil - SLib Library
RefoselDev - Gave Hosting for server and many more
HPZ Development Team - Viewmodels, animations, languages and more.
----------------------------------------------------------------
help with Languages:
]]--
COD = COD or {}
AddCSLuaFile('languages.lua')
include('languages.lua')
AddCSLuaFile('takedowns.lua')
include('takedowns.lua')
COD.ApplyCommands = {
["Server"] = {
["sv_crazyphysics_warning"] = 0,
},
["Client"] = {},
}
COD.DataTable = {
["MaxKills"] = 75,
["MaxTime"] = 600,
}
local str = file.Read("cod_tdm/"..game.GetMap()..".lua", "LUA")
if str then
RunString(str)
end
COD.DataTable["Delay_Before_Start"] = 18
COD.DataTable["Enable_KillCam"] = true
COD.DataTable["Enable_KillCam_WithBots"] = true
COD.DataTable["Enable_RandomGamemode"] = true
COD.DataTable["Team1_Kills"] = 0
COD.DataTable["Team2_Kills"] = 0
COD.DataTable["MaxKills"] = 100
COD.DataTable["MaxTime"] = 600
COD.DataTable["MaxAIInTeam"] = 10
if not COD.DataTable["Gamemode"] then
COD.DataTable["Gamemode"] = 1
end
COD.GamemodeSettings = {
[1] = {
["MaxKills"] = 100,
["MaxTime"] = 600,
},
[2] = {
["MaxKills"] = 500,
["MaxTime"] = 900,
["Time_Before_HeavyUnits"] = 300,
["Time_Before_SupportPackages"] = 480,
},
[3] = {
["MaxKills"] = 100,
["MaxTime"] = 120,
},
[4] = {
["MaxKills"] = 100,
["MaxTime"] = 120,
},
[5] = {
["MaxKills"] = 200,
["MaxTime"] = 600,
},
}
team.SetUp(1, "SpecGru", Color(85,165,95))
team.SetUp(2, "KorTac", Color(195,165,85))
COD.Killstreaks = {
[1] = {
name = COD.Language["killstreak_1"],
desc = COD.Language["killstreak_desc_1"],
icon = Material('tdmg/hud/killstreaks/puav.png'),
kills = 4,
sound = "tdmg/killstreaks/uav_ready.wav",
func = function(ply)
COD:UAVCall(ply:Team(), false)
COD:GiveKSAnn(1, ply)
end,
},
[2] = {
name = COD.Language["killstreak_2"],
desc = COD.Language["killstreak_desc_2"],
icon = Material('tdmg/hud/killstreaks/drone.png'),
kills = 4,
sound = "tdmg/killstreaks/care_ready.wav",
func = function(ply)
COD:DroneSpawn(ply)
end,
},
[3] = {
name = COD.Language["killstreak_3"],
desc = COD.Language["killstreak_desc_3"],
icon = Material('tdmg/hud/killstreaks/armor.png'),
kills = 4,
sound = "tdmg/killstreaks/care_ready.wav",
func = function(ply)
ply:SetMaxArmor(250)
ply:SetArmor(250)
COD:GiveKSAnn(3, ply)
end,
},
[4] = {
name = COD.Language["killstreak_4"],
desc = COD.Language["killstreak_desc_4"],
icon = Material('tdmg/hud/killstreaks/carepackage.png'),
kills = 5,
sound = "tdmg/killstreaks/care_ready.wav",
func = function(ply)
ply:GiveRadioWep("package")
end,
},
[5] = {
name = COD.Language["killstreak_5"],
desc = COD.Language["killstreak_desc_5"],
icon = Material('tdmg/hud/killstreaks/counteruav.png'),
kills = 5,
sound = "tdmg/killstreaks/counter_uav_ready.wav",
func = function(ply)
COD:CounterUAVCall(ply)
end,
},
[6] = {
name = COD.Language["killstreak_6"],
desc = COD.Language["killstreak_desc_6"],
icon = Material('tdmg/hud/killstreaks/mine.png'),
kills = 5,
sound = "tdmg/killstreaks/care_ready.wav",
func = function(ply)
COD:SpawnCMine(ply)
end,
},
[7] = {
name = COD.Language["killstreak_7"],
desc = COD.Language["killstreak_desc_7"],
icon = Material('tdmg/hud/killstreaks/airstrike.png'),
kills = 6,
sound = "tdmg/killstreaks/airstrike_ready.wav",
func = function(ply)
ply:GiveRadioWep("airstrike")
end,
},
[8] = {
name = COD.Language["killstreak_8"],
desc = COD.Language["killstreak_desc_8"],
icon = Material('tdmg/hud/killstreaks/k9.png'),
kills = 6,
sound = "tdmg/dog/bark (7).wav",
func = function(ply)
COD:CallK9(ply)
COD:GiveKSAnn(8, ply)
end,
},
[9] = {
name = COD.Language["killstreak_9"],
desc = COD.Language["killstreak_desc_9"],
icon = Material('tdmg/hud/killstreaks/sentry.png'),
kills = 7,
sound = "tdmg/killstreaks/turret_ready.wav",
func = function(ply)
COD:SpawnSentry(ply)
end,
},
[10] = {
name = COD.Language["killstreak_10"],
desc = COD.Language["killstreak_desc_10"],
icon = Material('tdmg/hud/killstreaks/patrol.png'),
kills = 7,
sound = "tdmg/killstreaks/airstrike_ready.wav",
func = function(ply)
COD:AirPatrol(ply)
COD:GiveKSAnn(10, ply)
end,
},
[11] = {
name = COD.Language["killstreak_11"],
desc = COD.Language["killstreak_desc_11"],
icon = Material('tdmg/hud/killstreaks/mortar.png'),
kills = 7,
sound = "tdmg/killstreaks/airstrike_ready2.wav",
func = function(ply)
ply:GiveRadioWep("mortar")
end,
},
[12] = {
name = COD.Language["killstreak_12"],
desc = COD.Language["killstreak_desc_12"],
icon = Material('tdmg/hud/killstreaks/strat.png'),
kills = 8,
sound = "tdmg/killstreaks/airstrike_ready.wav",
func = function(ply)
ply:GiveRadioWep("strating_run")
end,
},
[13] = {
name = COD.Language["killstreak_13"],
desc = COD.Language["killstreak_desc_13"],
icon = Material('tdmg/hud/killstreaks/helicopter.png'),
kills = 9,
sound = "tdmg/killstreaks/heli_ready.wav",
func = function(ply)
ply:GiveRadioWep("helicopter")
end,
},
[14] = {
name = COD.Language["killstreak_14"],
desc = COD.Language["killstreak_desc_14"],
icon = Material('tdmg/hud/killstreaks/harrier.png'),
kills = 9,
sound = "tdmg/killstreaks/harrier_ready.wav",
func = function(ply)
ply:GiveRadioWep("harrier")
end,
},
[15] = {
name = COD.Language["killstreak_15"],
desc = COD.Language["killstreak_desc_15"],
icon = Material('tdmg/hud/killstreaks/backup.png'),
kills = 9,
sound = "tdmg/killstreaks/cover_ready.wav",
func = function(ply)
COD:CallReinforcment(ply)
COD:GiveKSAnn(15, ply)
end,
},
[16] = {
name = COD.Language["killstreak_16"],
desc = COD.Language["killstreak_desc_16"],
icon = Material('tdmg/hud/killstreaks/stealth.png'),
kills = 10,
sound = "tdmg/killstreaks/airstrike_ready2.wav",
func = function(ply)
ply:GiveRadioWep("airstrike_line")
end,
},
[17] = {
name = COD.Language["killstreak_17"],
desc = COD.Language["killstreak_desc_17"],
icon = Material('tdmg/hud/killstreaks/heli.png'),
kills = 10,
sound = "tdmg/killstreaks/heli_ready.wav",
func = function(ply)
if not COD.DataTable["Enable_ManualControl_ChopperGunner"] then
ply:GiveRadioWep("helicopterrun")
else
COD:HelicopterRun(ply, Vector())
end
end,
},
[18] = {
name = COD.Language["killstreak_18"],
desc = COD.Language["killstreak_desc_18"],
icon = Material('tdmg/hud/killstreaks/muav.png'),
kills = 12,
sound = "tdmg/killstreaks/uav_ready.wav",
func = function(ply)
COD:UAVCall(ply:Team(), true)
COD:GiveKSAnn(18, ply)
end,
},
[19] = {
name = COD.Language["killstreak_19"],
desc = COD.Language["killstreak_desc_19"],
icon = Material('tdmg/hud/killstreaks/airdrop.png'),
kills = 12,
sound = "tdmg/killstreaks/care_ready.wav",
func = function(ply)
ply:GiveRadioWep("emergencypackage")
end,
},
[20] = {
name = COD.Language["killstreak_20"],
desc = COD.Language["killstreak_desc_20"],
icon = Material('tdmg/hud/killstreaks/ac130.png'),
kills = 15,
sound = "tdmg/killstreaks/ac130_ready.wav",
func = function(ply)
COD:CallAC130(ply)
COD:GiveKSAnn(20, ply)
end,
},
[21] = {
name = COD.Language["killstreak_21"],
desc = COD.Language["killstreak_desc_21"],
icon = Material('tdmg/hud/killstreaks/jugger.png'),
kills = 15,
sound = "tdmg/killstreaks/care_ready.wav",
func = function(ply)
COD:GiveJuggernaut(ply)
COD:GiveKSAnn(21, ply)
end,
},
[22] = {
name = COD.Language["killstreak_22"],
desc = COD.Language["killstreak_desc_22"],
icon = Material('tdmg/hud/killstreaks/nuke.png'),
kills = 25,
sound = "tdmg/killstreaks/nuke_ready.wav",
func = function(ply)
COD:Nuke(ply:Team())
COD:GiveKSAnn(22, ply)
end,
},
}
COD.Perks = {
["Type1"] = {
[1] = {
name = COD.Language["perk_1_1"],
desc = COD.Language["perk_1_1_desc"],
icon = Material("tdmg/hud/perks/explodedef.png"),
},
[2] = {
name = COD.Language["perk_1_2"],
desc = COD.Language["perk_1_2_desc"],
icon = Material("tdmg/hud/perks/spectator.png"),
},
[3] = {
name = COD.Language["perk_1_3"],
desc = COD.Language["perk_1_3_desc"],
icon = Material("tdmg/hud/perks/star.png"),
},
[4] = {
name = COD.Language["perk_1_4"],
desc = COD.Language["perk_1_4_desc"],
icon = Material("tdmg/hud/perks/fastequip.png"),
},
},
["Type2"] = {
[1] = {
name = COD.Language["perk_2_1"],
desc = COD.Language["perk_2_1_desc"],
icon = Material("tdmg/hud/perks/fasthealth.png"),
},
[2] = {
name = COD.Language["perk_2_2"],
desc = COD.Language["perk_2_2_desc"],
icon = Material("tdmg/hud/perks/survival.png"),
},
[3] = {
name = COD.Language["perk_2_3"],
desc = COD.Language["perk_2_3_desc"],
icon = Material("tdmg/hud/perks/ghost.png"),
},
[4] = {
name = COD.Language["perk_2_4"],
desc = COD.Language["perk_2_4_desc"],
icon = Material("tdmg/hud/perks/invisiblity.png"),
},
},
}
COD.Loadout = {
["Pistols"] = {
[".357"] = {
class = "mg_357",
icon = Material("vgui/entities/mg_357"),
},
[".50 GS"] = {
class = "mg_deagle",
icon = Material("vgui/entities/mg_deagle"),
},
["M19"] = {
class = "mg_p320",
icon = Material("vgui/entities/mg_p320"),
},
["M1911"] = {
class = "mg_m1911",
icon = Material("vgui/entities/mg_m1911"),
},
["Renetti"] = {
class = "mg_m9",
icon = Material("vgui/entities/mg_m9"),
},
["Sykov"] = {
class = "mg_makarov",
icon = Material("vgui/entities/mg_makarov"),
},
["X16"] = {
class = "mg_glock",
icon = Material("vgui/entities/mg_glock"),
},
},
["SMGs"] = {
["AUG"] = {
class = "mg_augolf",
icon = Material("vgui/entities/mg_augolf"),
},
["CX-9"] = {
class = "mg_secho",
icon = Material("vgui/entities/mg_secho"),
},
["Fennec"] = {
class = "mg_victor",
icon = Material("vgui/entities/mg_victor"),
},
["ISO"] = {
class = "mg_charlie9",
icon = Material("vgui/entities/mg_charlie9"),
},
["MP5"] = {
class = "mg_mpapa5",
icon = Material("vgui/entities/mg_mpapa5"),
},
["MP7"] = {
class = "mg_mpapa7",
icon = Material("vgui/entities/mg_mpapa7"),
},
["P90"] = {
class = "mg_papa90",
icon = Material("vgui/entities/mg_papa90"),
},
["PP19 Bizon"] = {
class = "mg_beta",
icon = Material("vgui/entities/mg_beta"),
},
["Striker 45"] = {
class = "mg_smgolf45",
icon = Material("vgui/entities/mg_smgolf45"),
},
["UZI"] = {
class = "mg_uzulu",
icon = Material("vgui/entities/mg_uzulu"),
},
},
["Assault Rifles"] = {
["AK-47"] = {
class = "mg_akilo47",
icon = Material("vgui/entities/mg_akilo47"),
},
["AN-94"] = {
class = "mg_anovember94",
icon = Material("vgui/entities/mg_anovember94"),
},
["AS-VAL"] = {
class = "mg_valpha",
icon = Material("vgui/entities/mg_valpha"),
},
["CR-56 AMAX"] = {
class = "mg_galima",
icon = Material("vgui/entities/mg_galima"),
},
["FAL"] = {
class = "mg_falima",
icon = Material("vgui/entities/mg_falima"),
},
["FN SCAR 17"] = {
class = "mg_scharlie",
icon = Material("vgui/entities/mg_scharlie"),
},
["FR 5.56"] = {
class = "mg_falpha",
icon = Material("vgui/entities/mg_falpha"),
},
["Grau 5.56"] = {
class = "mg_sierra552",
icon = Material("vgui/entities/mg_sierra552"),
},
["Kilo 141"] = {
class = "mg_kilo433",
icon = Material("vgui/entities/mg_kilo433"),
},
["M13"] = {
class = "mg_mcharlie",
icon = Material("vgui/entities/mg_mcharlie"),
},
["M4A1"] = {
class = "mg_mike4",
icon = Material("vgui/entities/mg_mike4"),
},
["Oden"] = {
class = "mg_asierra12",
icon = Material("vgui/entities/mg_asierra12"),
},
["RAM-7"] = {
class = "mg_tango21",
icon = Material("vgui/entities/mg_tango21"),
},
},
["LMGs"] = {
["Bruen MK9"] = {
class = "mg_mkilo3",
icon = Material("vgui/entities/mg_mkilo3"),
},
["FiNN LMG"] = {
class = "mg_sierrax",
icon = Material("vgui/entities/mg_sierrax"),
},
["Holger-26"] = {
class = "mg_mgolf36",
icon = Material("vgui/entities/mg_mgolf36"),
},
["M91"] = {
class = "mg_kilo121",
icon = Material("vgui/entities/mg_kilo121"),
},
["MG34"] = {
class = "mg_mgolf34",
icon = Material("vgui/entities/mg_mgolf34"),
},
["PKM"] = {
class = "mg_pkilo",
icon = Material("vgui/entities/mg_pkilo"),
},
["RAAL MG"] = {
class = "mg_slima",
icon = Material("vgui/entities/mg_slima"),
},
["SA87"] = {
class = "mg_lima86",
icon = Material("vgui/entities/mg_lima86"),
},
},
["Sniper Rifles"] = {
["AX-50"] = {
class = "mg_alpha50",
icon = Material("vgui/entities/mg_alpha50"),
},
["Dragunov"] = {
class = "mg_delta",
icon = Material("vgui/entities/mg_delta"),
},
["HDR"] = {
class = "mg_hdromeo",
icon = Material("vgui/entities/mg_hdromeo"),
},
["Rytec AMR"] = {
class = "mg_xmike109",
icon = Material("vgui/entities/mg_xmike109"),
},
},
["Marksman Rifles"] = {
["Crossbow"] = {
class = "mg_crossbow",
icon = Material("vgui/entities/mg_crossbow"),
},
["EBR-14"] = {
class = "mg_mike14",
icon = Material("vgui/entities/mg_mike14"),
},
["Kar98k"] = {
class = "mg_kilo98",
icon = Material("vgui/entities/mg_kilo98"),
},
["MK2 Carabine"] = {
class = "mg_sbeta",
icon = Material("vgui/entities/mg_sbeta"),
},
["SKS"] = {
class = "mg_sksierra",
icon = Material("vgui/entities/mg_sksierra"),
},
["SPR"] = {
class = "mg_romeo700",
icon = Material("vgui/entities/mg_romeo700"),
},
},
["Shotguns"] = {
["725"] = {
class = "mg_charlie725",
icon = Material("vgui/entities/mg_charlie725"),
},
["Jak-12"] = {
class = "mg_aalpha12",
icon = Material("vgui/entities/mg_aalpha12"),
},
["Model 680"] = {
class = "mg_romeo870",
icon = Material("vgui/entities/mg_romeo870"),
},
["Origin-12"] = {
class = "mg_oscar12",
icon = Material("vgui/entities/mg_oscar12"),
},
["R9-0"] = {
class = "mg_dpapa12",
icon = Material("vgui/entities/mg_dpapa12"),
},
["VLK Rogue"] = {
class = "mg_mike26",
icon = Material("vgui/entities/mg_mike26"),
},
},
["Others"] = {
["Combat Knife"] = {
class = "tdm_infection_knife",
icon = Material("vgui/spawnicons/icon_cac_weapon_me_soscar_knife"),
},
},
}

File diff suppressed because it is too large Load Diff