shadowslayer133
09-06-10, 03:30 PM
I was experimenting with LUA tables and eventually wrote a lua script that stored stats, and displayed stats when requested.
Type #Stats
Typing that will display your kills your deaths and you K/D Ratio
This works well on PvP servers where people are curious on how well they are doing.
TEST_Death = {}
TEST_Kill = {}
TEST_KD = {}
TEST_NAME = {}
local KDMessage = "#stats"
function KillDeath_OnChat(event, plr, message, type, language)
if (message == KDMessage) and (TEST_Death[plr:GetName()] == nil) and (TEST_Kill[plr:GetName()] == nil) then
TEST_Death[plr:GetName()] = 0
TEST_Kill[plr:GetName()] = 0
end
if (message == KDMessage) and (TEST_Kill[plr:GetName()] == nil) then
TEST_Kill[plr:GetName()] = 0
end
if (message == KDMessage) and (TEST_Death[plr:GetName()] == nil) then
TEST_Death[plr:GetName()] = 0
end
if (message == KDMessage) then
TEST_NAME[plr:GetName()] = plr:GetName()
plr:SendBroadcastMessage("|cFF0000FF Stats since last server restart")
plr:SendBroadcastMessage("|cFFFF0000 "..TEST_NAME[plr:GetName()].." Stats")
plr:SendBroadcastMessage("|cFFFFFF00 Kills: "..TEST_Kill[plr:GetName()].."")
plr:SendBroadcastMessage("|cFFFFFF00 Deaths: "..TEST_Death[plr:GetName()].."")
TEST_KD[plr:GetName()] = TEST_Kill[plr:GetName()] / TEST_Death[plr:GetName()]
if (TEST_Death[plr:GetName()] == 0) and (TEST_Kill[plr:GetName()] == 0) then
TEST_KD[plr:GetName()] = 0
end
plr:SendBroadcastMessage("|cFFFFFF00 Kills to deaths ratio: "..TEST_KD[plr:GetName()].."")
end
end
function TEST_Death.OnKillPlayer(event, pPlayer)
TEST_Death[pPlayer:GetName()] = TEST_Death[pPlayer:GetName()] or 0 --assigns the variable to 0 if one doesn't exist
TEST_Death[pPlayer:GetName()] = TEST_Death[pPlayer:GetName()] + 1
pPlayer:SendBroadcastMessage("|cFFADD8E6 You have died "..TEST_Death[pPlayer:GetName()].." times since the server restarted.")
end
function TEST_Kill.OnKillPlayer2(event, pPlayer, pVictim)
TEST_Kill[pPlayer:GetName()] = TEST_Kill[pPlayer:GetName()] or 0
TEST_Kill[pPlayer:GetName()] = TEST_Kill[pPlayer:GetName()] + 1
pPlayer:SendBroadcastMessage("|cFFADD8E6 You have Killed "..TEST_Death[pPlayer:GetName()].." people since the server restarted.")
end
RegisterServerHook(6, TEST_Death.OnKillPlayer)
RegisterServerHook(2, TEST_Kill.OnKillPlayer2)
RegisterServerHook(16, "KillDeath_OnChat")
Fixed 0/0 problem
Type #Stats
Typing that will display your kills your deaths and you K/D Ratio
This works well on PvP servers where people are curious on how well they are doing.
TEST_Death = {}
TEST_Kill = {}
TEST_KD = {}
TEST_NAME = {}
local KDMessage = "#stats"
function KillDeath_OnChat(event, plr, message, type, language)
if (message == KDMessage) and (TEST_Death[plr:GetName()] == nil) and (TEST_Kill[plr:GetName()] == nil) then
TEST_Death[plr:GetName()] = 0
TEST_Kill[plr:GetName()] = 0
end
if (message == KDMessage) and (TEST_Kill[plr:GetName()] == nil) then
TEST_Kill[plr:GetName()] = 0
end
if (message == KDMessage) and (TEST_Death[plr:GetName()] == nil) then
TEST_Death[plr:GetName()] = 0
end
if (message == KDMessage) then
TEST_NAME[plr:GetName()] = plr:GetName()
plr:SendBroadcastMessage("|cFF0000FF Stats since last server restart")
plr:SendBroadcastMessage("|cFFFF0000 "..TEST_NAME[plr:GetName()].." Stats")
plr:SendBroadcastMessage("|cFFFFFF00 Kills: "..TEST_Kill[plr:GetName()].."")
plr:SendBroadcastMessage("|cFFFFFF00 Deaths: "..TEST_Death[plr:GetName()].."")
TEST_KD[plr:GetName()] = TEST_Kill[plr:GetName()] / TEST_Death[plr:GetName()]
if (TEST_Death[plr:GetName()] == 0) and (TEST_Kill[plr:GetName()] == 0) then
TEST_KD[plr:GetName()] = 0
end
plr:SendBroadcastMessage("|cFFFFFF00 Kills to deaths ratio: "..TEST_KD[plr:GetName()].."")
end
end
function TEST_Death.OnKillPlayer(event, pPlayer)
TEST_Death[pPlayer:GetName()] = TEST_Death[pPlayer:GetName()] or 0 --assigns the variable to 0 if one doesn't exist
TEST_Death[pPlayer:GetName()] = TEST_Death[pPlayer:GetName()] + 1
pPlayer:SendBroadcastMessage("|cFFADD8E6 You have died "..TEST_Death[pPlayer:GetName()].." times since the server restarted.")
end
function TEST_Kill.OnKillPlayer2(event, pPlayer, pVictim)
TEST_Kill[pPlayer:GetName()] = TEST_Kill[pPlayer:GetName()] or 0
TEST_Kill[pPlayer:GetName()] = TEST_Kill[pPlayer:GetName()] + 1
pPlayer:SendBroadcastMessage("|cFFADD8E6 You have Killed "..TEST_Death[pPlayer:GetName()].." people since the server restarted.")
end
RegisterServerHook(6, TEST_Death.OnKillPlayer)
RegisterServerHook(2, TEST_Kill.OnKillPlayer2)
RegisterServerHook(16, "KillDeath_OnChat")
Fixed 0/0 problem