фикс, изменил событие на onPlayerDeath - сервер всех сообщает кто сейчас помер)
добавил проверка в стриме ли - и получится обычный алерт как метод в килл-лист))
ну и ладно, но чтобы не зациклинило каждые мс в скрипт, а не событие. событие просто ловит и обрабатывает за это сэкономит в ~1 сек
если с проверкой то ничего не будет засорять, по идее должно правильно работать
-- modified by kyrtion <3
local sampev = require('samp.events')
local removed = {}
local function isRemovedPlayer(player_id)
-- safe code?.. protect for reloading script
if type(removed[player_id]) == 'nil' then
removed[player_id] = false
end
return removed[player_id]
end
local function removePlayer(player_id)
local bs = raknetNewBitStream()
raknetBitStreamWriteInt16(bs, player_id)
raknetEmulRpcReceiveBitStream(163, bs) -- RPC_SCRWORLDPLAYERREMOVE | sampfuncs.lua:143
raknetDeleteBitStream(bs)
end
local function doesCharExistBySampPlayerId(player_id)
local exist = sampGetCharHandleBySampPlayerId(player_id)
return exist
end
function sampev.onPlayerDeath(player_id)
if not doesCharExistBySampPlayerId(player_id) then return end
lua_thread.create(function()
wait(10)
-- again test exist in stream - protected crash
if doesCharExistBySampPlayerId(player_id) and sampGetPlayerHealth(player_id) <= 0 and not isRemovedPlayer(player_id) then
removed[player_id] = true
removePlayer(player_id)
end
end)
end
function sampev.onPlayerStreamIn(player_id)
removed[player_id] = false
end
function sampev.onPlayerStreamOut(player_id)
if isRemovedPlayer(player_id) then
removed[player_id] = nil
end
end
тестил на samp rp legacy в /tpmp - ОГ, теперь должно работать