Well, I'm not deriving from sandbox so I don't see kills and deaths on the top right of the screen.
Is there any way to activate them?
If not, what would be a good simple way to make a custom one that actually works? (I.e; lines don't overlap, scroll upwards accordingly, etc)
[QUOTE=MisterTickles;28536541]Well, I'm not deriving from sandbox so I don't see kills and deaths on the top right of the screen.
Is there any way to activate them?
If not, what would be a good simple way to make a custom one that actually works? (I.e; lines don't overlap, scroll upwards accordingly, etc)[/QUOTE]
Take it from sandbox.
Ahh, that's a good idea. I've looked around but can't seem to find it. Can you hint me towards what keywords I'm looking for?
I think I mentioned to you that I tried it and it's actually in base gamemode, something of yours is overwriting it.
I don't think it's in the base gamemode. Isn't it coded in C++? Included in the sourcecode. Like CS:S has it too. So it's something in source.
I did see it in base, Freze.
Check cl_deathnotice.lua
I tried copying the WHOLE code in my gamemode and adjusting it and it still didn't work. Something's pretty odd.
[QUOTE=Drew P. Richard;28546167]something of yours is overwriting it.[/QUOTE]
[QUOTE=Freze;28546226]I don't think it's in the base gamemode. Isn't it coded in C++? Included in the sourcecode. Like CS:S has it too. So it's something in source.[/QUOTE]
What I meant was, you don't have to derive from sandbox to get that. :)
[editline]11th March 2011[/editline]
Looking in base gamemode, check it:
[lua]
/*---------------------------------------------------------
Name: gamemode:PlayerDeath( )
Desc: Called when a player dies.
---------------------------------------------------------*/
function GM:PlayerDeath( Victim, Inflictor, Attacker )
// Don't spawn for at least 2 seconds
Victim.NextSpawnTime = CurTime() + 2
Victim.DeathTime = CurTime()
// Convert the inflictor to the weapon that they're holding if we can.
// This can be right or wrong with NPCs since combine can be holding a
// pistol but kill you by hitting you with their arm.
if ( Inflictor && Inflictor == Attacker && (Inflictor:IsPlayer() || Inflictor:IsNPC()) ) then
Inflictor = Inflictor:GetActiveWeapon()
if ( !Inflictor || Inflictor == NULL ) then Inflictor = Attacker end
end
if (Attacker == Victim) then
umsg.Start( "PlayerKilledSelf" )
umsg.Entity( Victim )
umsg.End()
MsgAll( Attacker:Nick() .. " suicided!\n" )
return end
if ( Attacker:IsPlayer() ) then
umsg.Start( "PlayerKilledByPlayer" )
umsg.Entity( Victim )
umsg.String( Inflictor:GetClass() )
umsg.Entity( Attacker )
umsg.End()
MsgAll( Attacker:Nick() .. " killed " .. Victim:Nick() .. " using " .. Inflictor:GetClass() .. "\n" )
return end
umsg.Start( "PlayerKilled" )
umsg.Entity( Victim )
umsg.String( Inflictor:GetClass() )
umsg.String( Attacker:GetClass() )
umsg.End()
MsgAll( Victim:Nick() .. " was killed by " .. Attacker:GetClass() .. "\n" )
end
[/lua]
And here's cl_deathnotice:
[lua]
local hud_deathnotice_time = CreateConVar( "hud_deathnotice_time", "6", FCVAR_REPLICATED, "Amount of time to show death notice" )
// These are our kill icons
local Color_Icon = Color( 255, 80, 0, 255 )
local NPC_Color = Color( 250, 50, 50, 255 )
killicon.AddFont( "prop_physics", "HL2MPTypeDeath", "9", Color_Icon )
killicon.AddFont( "weapon_smg1", "HL2MPTypeDeath", "/", Color_Icon )
killicon.AddFont( "weapon_357", "HL2MPTypeDeath", ".", Color_Icon )
killicon.AddFont( "weapon_ar2", "HL2MPTypeDeath", "2", Color_Icon )
killicon.AddFont( "crossbow_bolt", "HL2MPTypeDeath", "1", Color_Icon )
killicon.AddFont( "weapon_shotgun", "HL2MPTypeDeath", "0", Color_Icon )
killicon.AddFont( "rpg_missile", "HL2MPTypeDeath", "3", Color_Icon )
killicon.AddFont( "npc_grenade_frag", "HL2MPTypeDeath", "4", Color_Icon )
killicon.AddFont( "weapon_pistol", "HL2MPTypeDeath", "-", Color_Icon )
killicon.AddFont( "prop_combine_ball", "HL2MPTypeDeath", "8", Color_Icon )
killicon.AddFont( "grenade_ar2", "HL2MPTypeDeath", "7", Color_Icon )
killicon.AddFont( "weapon_stunstick", "HL2MPTypeDeath", "!", Color_Icon )
killicon.AddFont( "weapon_slam", "HL2MPTypeDeath", "*", Color_Icon )
killicon.AddFont( "weapon_crowbar", "HL2MPTypeDeath", "6", Color_Icon )
local Deaths = {}
local function PlayerIDOrNameToString( var )
if ( type( var ) == "string" ) then
if ( var == "" ) then return "" end
return "#"..var
end
local ply = Entity( var )
if (ply == NULL) then return "NULL!" end
return ply:Name()
end
local function RecvPlayerKilledByPlayer( message )
local victim = message:ReadEntity();
local inflictor = message:ReadString();
local attacker = message:ReadEntity();
GAMEMODE:AddDeathNotice( attacker:Name(), attacker:Team(), inflictor, victim:Name(), victim:Team() )
end
usermessage.Hook( "PlayerKilledByPlayer", RecvPlayerKilledByPlayer )
local function RecvPlayerKilledSelf( message )
local victim = message:ReadEntity();
if ( !IsValid( victim ) ) then return end
GAMEMODE:AddDeathNotice( nil, 0, "suicide", victim:Name(), victim:Team() )
end
usermessage.Hook( "PlayerKilledSelf", RecvPlayerKilledSelf )
local function RecvPlayerKilled( message )
local victim = message:ReadEntity();
local inflictor = message:ReadString();
local attacker = "#" .. message:ReadString();
GAMEMODE:AddDeathNotice( attacker, -1, inflictor, victim:Name(), victim:Team() )
end
usermessage.Hook( "PlayerKilled", RecvPlayerKilled )
local function RecvPlayerKilledNPC( message )
local victimtype = message:ReadString();
local victim = "#" .. victimtype;
local inflictor = message:ReadString();
local attacker = message:ReadEntity();
GAMEMODE:AddDeathNotice( attacker:Name(), attacker:Team(), inflictor, victim, -1 )
local bIsLocalPlayer = (IsValid(attacker) && attacker == LocalPlayer())
local bIsEnemy = IsEnemyEntityName( victimtype )
local bIsFriend = IsFriendEntityName( victimtype )
if ( bIsLocalPlayer && bIsEnemy ) then
achievements.IncBaddies();
end
if ( bIsLocalPlayer && bIsFriend ) then
achievements.IncGoodies();
end
if ( bIsLocalPlayer && (!bIsFriend && !bIsEnemy) ) then
achievements.IncBystander();
end
end
usermessage.Hook( "PlayerKilledNPC", RecvPlayerKilledNPC )
local function RecvNPCKilledNPC( message )
local victim = "#" .. message:ReadString();
local inflictor = message:ReadString();
local attacker = "#" .. message:ReadString();
GAMEMODE:AddDeathNotice( attacker, -1, inflictor, victim, -1 )
end
usermessage.Hook( "NPCKilledNPC", RecvNPCKilledNPC )
/*---------------------------------------------------------
Name: gamemode:AddDeathNotice( Victim, Attacker, Weapon )
Desc: Adds an death notice entry
---------------------------------------------------------*/
function GM:AddDeathNotice( Victim, team1, Inflictor, Attacker, team2 )
local Death = {}
Death.victim = Victim
Death.attacker = Attacker
Death.time = CurTime()
Death.left = Victim
Death.right = Attacker
Death.icon = Inflictor
if ( team1 == -1 ) then Death.color1 = table.Copy( NPC_Color )
else Death.color1 = table.Copy( team.GetColor( team1 ) ) end
if ( team2 == -1 ) then Death.color2 = table.Copy( NPC_Color )
else Death.color2 = table.Copy( team.GetColor( team2 ) ) end
if (Death.left == Death.right) then
Death.left = nil
Death.icon = "suicide"
end
table.insert( Deaths, Death )
end
local function DrawDeath( x, y, death, hud_deathnotice_time )
local w, h = killicon.GetSize( death.icon )
local fadeout = ( death.time + hud_deathnotice_time ) - CurTime()
local alpha = math.Clamp( fadeout * 255, 0, 255 )
death.color1.a = alpha
death.color2.a = alpha
// Draw Icon
killicon.Draw( x, y, death.icon, alpha )
// Draw KILLER
if (death.left) then
draw.SimpleText( death.left, "ChatFont", x - (w/2) - 16, y, death.color1, TEXT_ALIGN_RIGHT )
end
// Draw VICTIM
draw.SimpleText( death.right, "ChatFont", x + (w/2) + 16, y, death.color2, TEXT_ALIGN_LEFT )
return (y + h*0.70)
end
function GM:DrawDeathNotice( x, y )
local hud_deathnotice_time = hud_deathnotice_time:GetFloat()
x = x * ScrW()
y = y * ScrH()
// Draw
for k, Death in pairs( Deaths ) do
if (Death.time + hud_deathnotice_time > CurTime()) then
if (Death.lerp) then
x = x * 0.3 + Death.lerp.x * 0.7
y = y * 0.3 + Death.lerp.y * 0.7
end
Death.lerp = Death.lerp or {}
Death.lerp.x = x
Death.lerp.y = y
y = DrawDeath( x, y, Death, hud_deathnotice_time )
end
end
// We want to maintain the order of the table so instead of removing
// expired entries one by one we will just clear the entire table
// once everything is expired.
for k, Death in pairs( Deaths ) do
if (Death.time + hud_deathnotice_time > CurTime()) then
return
end
end
Deaths = {}
end
[/lua]
Okay touché. I wasn't aware ;).
I fixed it for him, he was overriding HUDPaint, and he wasn't sending the usermessage. =D
Well that wasn't good :D
Drew is a god
Sorry, you need to Log In to post a reply to this thread.