Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a5863b828b |
101
killsay.lua
101
killsay.lua
@@ -48,6 +48,8 @@ local player_data = {}
|
|||||||
|
|
||||||
local mark_data = {}
|
local mark_data = {}
|
||||||
local script_image
|
local script_image
|
||||||
|
local killed_players = {}
|
||||||
|
local recent_textdraws = {}
|
||||||
|
|
||||||
local script_states = {
|
local script_states = {
|
||||||
antiflood = false
|
antiflood = false
|
||||||
@@ -68,7 +70,7 @@ local settings = inicfg.load({
|
|||||||
|
|
||||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
killsay_variation = 0,
|
killsay_variation = 0,
|
||||||
killsay_variation_custom = u8[[<5B><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]],
|
killsay_variation_custom = "",
|
||||||
killsay_distance = false,
|
killsay_distance = false,
|
||||||
|
|
||||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
@@ -296,17 +298,41 @@ local function sendRolePlay(nickname, id)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
local function sampGetPlayerIdByNickname(nick)
|
||||||
local function killsay(id)
|
for i = 0, 1003 do
|
||||||
local x, y, z, nickname
|
if sampIsPlayerConnected(i) and sampGetPlayerNickname(i) == nick then
|
||||||
local _, handle = sampGetCharHandleBySampPlayerId(id)
|
return i
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
local function killsay(nickname_or_id)
|
||||||
|
if script_states.antiflood then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
script_states.antiflood = true
|
||||||
|
|
||||||
|
local x, y, z, nickname, id
|
||||||
|
|
||||||
|
if type(nickname_or_id) == "number" then
|
||||||
|
id = nickname_or_id
|
||||||
|
if sampIsPlayerConnected(id) then
|
||||||
|
nickname = (sampGetPlayerNickname(id)):gsub("^%b[]", "")
|
||||||
|
end
|
||||||
|
else
|
||||||
|
nickname = nickname_or_id
|
||||||
|
id = sampGetPlayerIdByNickname(nickname)
|
||||||
|
end
|
||||||
|
|
||||||
|
local _, handle = sampGetCharHandleBySampPlayerId(id)
|
||||||
if _ then x, y, z = getCharCoordinates(handle) end
|
if _ then x, y, z = getCharCoordinates(handle) end
|
||||||
if sampIsPlayerConnected(id) then nickname = (sampGetPlayerNickname(id)):gsub("^%b[]", "") end
|
|
||||||
|
|
||||||
local px, py, pz = getCharCoordinates(PLAYER_PED)
|
local px, py, pz = getCharCoordinates(PLAYER_PED)
|
||||||
|
|
||||||
if not (x and y and z and nickname) or x == "" or y == "" or z == "" or nickname == "" then
|
if not (x and y and z and nickname and id ~= nil) or x == "" or y == "" or z == "" or nickname == "" then
|
||||||
print("[" .. os.date("%H:%M:%S") .. "]: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
print("[" .. os.date("%H:%M:%S") .. "]: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
||||||
print("[" .. os.date("%H:%M:%S") .. "]: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
print("[" .. os.date("%H:%M:%S") .. "]: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
||||||
return false
|
return false
|
||||||
@@ -331,6 +357,8 @@ local function killsay(id)
|
|||||||
sampSendChat("/fs ".. nickname .. "[" .. id .. "] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
sampSendChat("/fs ".. nickname .. "[" .. id .. "] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
script_states.antiflood = false
|
||||||
end
|
end
|
||||||
|
|
||||||
local function centerColumnText(text)
|
local function centerColumnText(text)
|
||||||
@@ -597,20 +625,61 @@ function main()
|
|||||||
sampRegisterChatCommand("killsay", function() imgui_states.window_state[0] = not imgui_states.window_state[0] end)
|
sampRegisterChatCommand("killsay", function() imgui_states.window_state[0] = not imgui_states.window_state[0] end)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
function sampev.onShowTextDraw(id, data)
|
||||||
function sampev.onSendGiveDamage(id, damage, weaponid, bodypart)
|
if id == 2050 and data.text:find(".- %- .- %- KILL") then
|
||||||
if id ~= 65535 and sampGetPlayerHealth(id) - damage <= 0 and imgui_buffers.script_state[0] then
|
local current_time = os.clock()
|
||||||
lua_thread.create(function()
|
recent_textdraws[data.text] = current_time
|
||||||
wait(350)
|
|
||||||
if sampGetPlayerHealth(id) <= 0 and isCharDead(select(2, sampGetCharHandleBySampPlayerId(id))) and not script_states.antiflood then
|
lua_thread.create(function() wait(50)
|
||||||
script_states.antiflood = true
|
if recent_textdraws[data.text] ~= current_time then
|
||||||
killsay(id)
|
return
|
||||||
script_states.antiflood = false
|
end
|
||||||
|
|
||||||
|
local current_text = sampTextdrawGetString(2050)
|
||||||
|
if current_text and current_text:match(".- %- .- %- KILL") then
|
||||||
|
local nick = current_text:match("([^%s]-) %-")
|
||||||
|
if nick and not killed_players[nick] then
|
||||||
|
killed_players[nick] = true
|
||||||
|
killsay(nick) wait(1500)
|
||||||
|
recent_textdraws[data.text] = nil
|
||||||
|
killed_players[nick] = nil
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function sampev.onPlayerDeathNotification(killer_id, victim_id)
|
||||||
|
if sampIsPlayerConnected(victim_id) then
|
||||||
|
local nick = sampGetPlayerNickname(victim_id)
|
||||||
|
if killer_id == select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)) and not killed_players[nick] then
|
||||||
|
lua_thread.create(function()
|
||||||
|
killed_players[nick] = true
|
||||||
|
killsay(victim_id) wait(1500)
|
||||||
|
killed_players[nick] = nil
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function sampev.onSendGiveDamage(id, damage)
|
||||||
|
if sampIsPlayerConnected(id) then
|
||||||
|
local nick = sampGetPlayerNickname(id)
|
||||||
|
if id == 65535 or killed_players[nick] then return end
|
||||||
|
if sampGetPlayerHealth(id) - damage <= 0 then
|
||||||
|
lua_thread.create(function() wait(350)
|
||||||
|
local _, char = sampGetCharHandleBySampPlayerId(id)
|
||||||
|
if sampGetPlayerHealth(id) <= 0 and isCharDead(char) and not killed_players[nick] then
|
||||||
|
killed_players[nick] = true
|
||||||
|
killsay(id) wait(1500)
|
||||||
|
killed_players[nick] = nil
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
-- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
function sampev.onServerMessage(color, text)
|
function sampev.onServerMessage(color, text)
|
||||||
if imgui_buffers.script_state[0] and imgui_buffers.use_mark[0] and text:find("^.+%[.*%]% {FFFFFF%}(.*)%[(.*)%]: DCHECKSEALKPOSX.+Y.+Z.+") then
|
if imgui_buffers.script_state[0] and imgui_buffers.use_mark[0] and text:find("^.+%[.*%]% {FFFFFF%}(.*)%[(.*)%]: DCHECKSEALKPOSX.+Y.+Z.+") then
|
||||||
|
|||||||
Reference in New Issue
Block a user