local inicfg = require('inicfg')
local ev = require('lib.samp.events')
local weap = require('game.weapons')
local scrName = 'dmglog.ini'
local ass = {
[3] = 'торс',
[4] = 'пах',
[5] = 'левую руку',
[6] = 'правая руку',
[7] = 'левую ногу',
[8] = 'правую ногу',
[9] = 'голову',
[49] = "Машины",
[50] = "Вертолеты",
[51] = "Взрыва",
[53] = "Утопления",
[54] = "Падения",
[200] = "-",
[201] = "-",
[255] = "Суицида",
[65535] = "-",
}
local ini = inicfg.load({
['param'] = {
autoclear = false,
takedmg = true,
givedmg = true,
flood = 50
}
}, scrName)
if not doesFileExist('moonloader/config/'..scrName) then
inicfg.save(ini, scrName) end
function main()
while not isSampAvailable() do wait(1000) end
if ini.param['autoclear'] then
sampfuncsLog("Clear Text...")
wait(5000)
for i = 1, ini.param['flood'] do
sampfuncsLog(" ")
end
end
sampfuncsLog('{ECE20B}[DMG logger] успешно загружен! список команд /dmginfo {4169E1}Автор: TimeLordRu')
sampRegisterChatCommand("dmginfo", function()
sampAddChatMessage("/floodc <число> - количество строк для флуда в консоль SF", 0x00ff00)
sampAddChatMessage("/autoclear - вкл/выкл автофлуда консоли при запуске скрипта в игру", 0x00ff00)
sampAddChatMessage("/givedmg - вкл/выкл логгирования нанесения урона по другим", 0x00ff00)
sampAddChatMessage("/takedmg - вкл/выкл логгирования нанесения урона по себе", 0x00ff00)
end)
sampRegisterChatCommand("floodc",function(arg)
ini.param['flood'] = tonumber(arg) > 0 and tonumber(arg) or 50
inicfg.save(ini, scrName)
sampAddChatMessage("Изменение количества строк флуда в консоль: "..arg, -1)
end)
wait(-1)
end
function ev.onSendCommand( cmd )
local menu = string.match(cmd, '^/(%a+)')
if ini.param[menu] ~= nil then
ini.param[menu] = not(ini.param[menu])
inicfg.save(ini, scrName)
sampAddChatMessage(string.format('Статус {ECE20B}[%s]{FFFFFF} %s', menu, (ini.param[menu] and 'Вкл' or 'Выкл')), -1)
return false
end
end
function ev.onSendTakeDamage(pId, dmg, weapon, bodypart)
if ini.param['takedmg'] then
if weapon < 47 then
sampfuncsLog( ('[%s] %s[%d] нанес Вам %d единиц урона оружием %s в %s'):format(os.date('%H:%M:%S'), sampGetPlayerNickname(pId), pId, dmg, weap.get_name(weapon), ass[bodypart]) )
elseif ass[weapon] then
sampfuncsLog( ('[%s] Отнялось %d единиц урона из-за %s'):format(os.date('%H:%M:%S'), dmg, ass[weapon]) )
end
end
end
function ev.onSendGiveDamage(pId, dmg, weapon, bodypart)
if ini.param['givedmg'] and weapon < 47 then --weap = weap.get_name(weapon) or ass[weapon]
sampfuncsLog( ('[%s] Вы нанесли %s[%d]: %d единиц урона оружием %s в %s'):format(os.date('%H:%M:%S'), sampGetPlayerNickname(pId), pId, dmg, weap.get_name(weapon), ass[bodypart]) )
end
end