118 lines
3.8 KiB
Lua
118 lines
3.8 KiB
Lua
|
-- modified version of https://github.com/Joelrau/S1x-IW6x-g_log-script (permission to use by author)
|
||
|
|
||
|
if (game:getdvar("gamemode") ~= "mp") then
|
||
|
return
|
||
|
end
|
||
|
|
||
|
-- setup dvars
|
||
|
game:setdvarifuninitialized("logfile", 1)
|
||
|
if (tonumber(game:getdvar("logfile")) < 1) then
|
||
|
return
|
||
|
end
|
||
|
game:setdvarifuninitialized("g_log", "logs/games_mp.log")
|
||
|
|
||
|
start_time = 0
|
||
|
|
||
|
function get_time()
|
||
|
local seconds = math.floor((game:gettime() - start_time) / 1000)
|
||
|
local minutes = math.floor(seconds / 60)
|
||
|
time = string.format("%d:%02d", minutes, seconds - minutes * 60)
|
||
|
while (string.len(time) < 6) do
|
||
|
time = " " .. time
|
||
|
end
|
||
|
time = time .. " "
|
||
|
return time
|
||
|
end
|
||
|
|
||
|
function create_path(path)
|
||
|
local dir = path:gsub("%/", "\\"):match("(.*[\\])")
|
||
|
os.execute("if not exist " .. dir .. " mkdir " .. dir)
|
||
|
end
|
||
|
|
||
|
function log_print(message)
|
||
|
local path = game:getdvar("g_log")
|
||
|
local file = io.open(path, "a")
|
||
|
if (file == nil) then
|
||
|
create_path(path)
|
||
|
file = assert(io.open(path, "a"))
|
||
|
end
|
||
|
file:write(get_time() .. message .. "\n")
|
||
|
file:close()
|
||
|
end
|
||
|
|
||
|
function init()
|
||
|
start_time = game:gettime()
|
||
|
|
||
|
log_print("------------------------------------------------------------")
|
||
|
log_print("InitGame")
|
||
|
|
||
|
-- player callbacks
|
||
|
level:onnotify("connected", function(player)
|
||
|
player:player_connected()
|
||
|
end)
|
||
|
level:onnotify("say", function(player, message, hidden)
|
||
|
player:say(message)
|
||
|
end)
|
||
|
level:onnotify("say_team", function(player, message, hidden)
|
||
|
player:say(message, "say_team")
|
||
|
end)
|
||
|
|
||
|
-- damage/killed hooks
|
||
|
game:onplayerdamage(player_damage)
|
||
|
game:onplayerkilled(player_killed)
|
||
|
|
||
|
-- other level notifies for log
|
||
|
level:onnotify("exitLevel_called", function()
|
||
|
log_print("ExitLevel: executed")
|
||
|
end)
|
||
|
level:onnotify("shutdownGame_called", function()
|
||
|
log_print("ShutdownGame:")
|
||
|
log_print("------------------------------------------------------------")
|
||
|
end)
|
||
|
end
|
||
|
|
||
|
function entity:player_connected()
|
||
|
log_print(string.format("J;%s;%i;%s", self:getguid(), self:getentitynumber(), self.name))
|
||
|
|
||
|
self:onnotifyonce("disconnect", function()
|
||
|
self:disconnect()
|
||
|
end)
|
||
|
end
|
||
|
|
||
|
function entity:disconnect()
|
||
|
log_print(string.format("Q;%s;%i;%s", self:getguid(), self:getentitynumber(), self.name))
|
||
|
end
|
||
|
|
||
|
function player_damage(self_, inflictor, attacker, damage, dflags, mod, weapon, vPoint, vDir, hitLoc)
|
||
|
if (game:isplayer(attacker) == 1) then
|
||
|
log_print(string.format("D;%s;%i;%s;%s;%s;%i;%s;%s;%s;%i;%s;%s", self_:getguid(), self_:getentitynumber(),
|
||
|
self_.team, self_.name, attacker:getguid(), attacker:getentitynumber(), attacker.team, attacker.name,
|
||
|
weapon, damage, mod, hitLoc))
|
||
|
else
|
||
|
log_print(string.format("D;%s;%i;%s;%s;%s;%i;%s;%s;%s;%i;%s;%s", self_:getguid(), self_:getentitynumber(),
|
||
|
self_.team, self_.name, "", "-1", "world", "", weapon, damage, mod, hitLoc))
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function player_killed(self_, inflictor, attacker, damage, mod, weapon, vDir, hitLoc, psTimeOffset, deathAnimDuration)
|
||
|
if (game:isplayer(attacker) == 1) then
|
||
|
log_print(string.format("K;%s;%i;%s;%s;%s;%i;%s;%s;%s;%i;%s;%s", self_:getguid(), self_:getentitynumber(),
|
||
|
self_.team, self_.name, attacker:getguid(), attacker:getentitynumber(), attacker.team, attacker.name,
|
||
|
weapon, damage, mod, hitLoc))
|
||
|
else
|
||
|
log_print(string.format("K;%s;%i;%s;%s;%s;%i;%s;%s;%s;%i;%s;%s", self_:getguid(), self_:getentitynumber(),
|
||
|
self_.team, self_.name, "", "-1", "world", "", weapon, damage, mod, hitLoc))
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- this function handles 'say' and 'say_team'
|
||
|
function entity:say(message, mode)
|
||
|
if (not mode) then
|
||
|
mode = "say"
|
||
|
end
|
||
|
|
||
|
log_print(string.format("%s;%s;%i;%s;%s", mode, self:getguid(), self:getentitynumber(), self.name, message))
|
||
|
end
|
||
|
|
||
|
init()
|