Как отправить СМС игроку после его смерти ?

wuwkun_Jlec

Новичок
Автор темы
13
3
Версия MoonLoader
.025-beta
Должно работать: 1) я убиваю игрока 2) ему автоматом отправляется СМСочка.
Код:
-- СМСочка
if playerId ~= nil and active then
    if not isPlayerDead(PLAYER_HANDLE) and not damage ~= nil then
        hp = sampGetPlayerHealth(playerId)
        new_hp = hp - damage
    
        lua_thread.create(function()
            wait(0)
            if new_hp == 0 or new_hp < 0 then
                sampSendChat("/sms "..playerid.." qq!")
            elseif new_hp < load_settings.settings.cell_hp then
                sampSendChat("/sms "..playerid.." qq")
            end
        end)
    end
    playerId = nil
end
 
Решение
Код:
require "lib.moonloader"
-- локалки

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
        sampAddChatMessage('СМСОЧКА', 0xFFFFFF)
    while true do
    wait(0)
    -- SMSka
    local result, target = getCharPlayerIsTargeting(playerHandle)
    if result then result, playerid = sampGetPlayerIdByCharHandle(target) end -- Если зажата пкм на игроке, то получаем ID.
        if result then     --взят id игрока и его можно использовать
            if not isPlayerDead(PLAYER_HANDLE) and not damage ~= nil then
                if not isPlayerDead(PLAYER_HANDLE) and not damage ~= nil then
                    hp = sampGetPlayerHealth(playerId)...

wuwkun_Jlec

Новичок
Автор темы
13
3
Откуда playerid берешь?
Код:
function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
        sampAddChatMessage('СМСОЧКА', 0xFFFFFF)
    while true do
    wait(0)
    -- SMSka
    local result, target = getCharPlayerIsTargeting(playerHandle)
    if result then result, playerid = sampGetPlayerIdByCharHandle(target) end -- Если зажата пкм на игроке, то получаем ID.
        if result then     --взят id игрока и его можно использовать
            if not isPlayerDead(PLAYER_HANDLE) and not damage ~= nil then
                if not isPlayerDead(PLAYER_HANDLE) and not damage ~= nil then
                    hp = sampGetPlayerHealth(playerId)
                    new_hp = hp - damage
           
                    lua_thread.create(function()
                        wait(0)
                        if new_hp == 0 or new_hp < 0 then
                            sampSendChat("/sms "..playerid.." qq")
                        elseif new_hp < load_settings.settings.cell_hp then
                            sampSendChat("/sms "..playerid.." qq")
                        end
                    end)
                end
            end  
        end
    end
end
сделал даже так но все равно не выкупаю что к чему, так как все это собирал из разных других луашек
 
Последнее редактирование:

wuwkun_Jlec

Новичок
Автор темы
13
3
полный скрипт скинь.
откуда damage получаешь?:
Код:
require "lib.moonloader"
-- локалки

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
        sampAddChatMessage('СМСОЧКА', 0xFFFFFF)
    while true do
    wait(0)
    -- SMSka
    local result, target = getCharPlayerIsTargeting(playerHandle)
    if result then result, playerid = sampGetPlayerIdByCharHandle(target) end -- Если зажата пкм на игроке, то получаем ID.
        if result then     --взят id игрока и его можно использовать
            if not isPlayerDead(PLAYER_HANDLE) and not damage ~= nil then
                if not isPlayerDead(PLAYER_HANDLE) and not damage ~= nil then
                    hp = sampGetPlayerHealth(playerId)
                    new_hp = hp - damage
          
                    lua_thread.create(function()
                        wait(0)
                        if new_hp == 0 or new_hp < 0 then
                            sampSendChat("/sms "..playerid.." qq")
                        elseif new_hp < load_settings.settings.cell_hp then
                            sampSendChat("/sms "..playerid.." qq")
                        end
                    end)
                end
            end 
        end
    end
end
на данный момент он такой
брал от сюда проверку на жив/мертв перс
 

wulfandr

Известный
636
260
Код:
require "lib.moonloader"
-- локалки

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
        sampAddChatMessage('СМСОЧКА', 0xFFFFFF)
    while true do
    wait(0)
    -- SMSka
    local result, target = getCharPlayerIsTargeting(playerHandle)
    if result then result, playerid = sampGetPlayerIdByCharHandle(target) end -- Если зажата пкм на игроке, то получаем ID.
        if result then     --взят id игрока и его можно использовать
            if not isPlayerDead(PLAYER_HANDLE) and not damage ~= nil then
                if not isPlayerDead(PLAYER_HANDLE) and not damage ~= nil then
                    hp = sampGetPlayerHealth(playerId)
                    new_hp = hp - damage
         
                    lua_thread.create(function()
                        wait(0)
                        if new_hp == 0 or new_hp < 0 then
                            sampSendChat("/sms "..playerid.." qq")
                        elseif new_hp < load_settings.settings.cell_hp then
                            sampSendChat("/sms "..playerid.." qq")
                        end
                    end)
                end
            end
        end
    end
end
на данный момент он такой
брал от сюда проверку на жив/мертв перс
ну типа того сделал, проще всего в общем, проверяй.


Lua:
require "lib.moonloader"
local lsampev, sampev = pcall(require, 'lib.samp.events') assert(lsampev, 'Library \'lib.samp.events\' not found')

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampAddChatMessage('СМСОЧКА', 0xFFFFFF)
    wait(-1)
end

function sampev.onPlayerDeathNotification(killerId, killedId, reason)
    if killerId ~= nil and reason ~= nil and killedId ~= nil then
        local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
        if sampIsPlayerConnectedFixed(killerId) and sampIsPlayerConnectedFixed(killedId) then
            if killerId == myid then
                lua_thread.create(function()
                    wait(100)
                    sampSendChat('/sms '..killedId..' привет родной!')
                end)
            end
        end
    end
end

function sampIsPlayerConnectedFixed(id)
    local id = tonumber(id)
    local myid = select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))
    if sampIsPlayerConnected(id) or id == myid then
        return true
    else
        return false
    end
end
 
  • Нравится
Реакции: wuwkun_Jlec

wuwkun_Jlec

Новичок
Автор темы
13
3
ну типа того сделал, проще всего в общем, проверяй.


Lua:
require "lib.moonloader"
local lsampev, sampev = pcall(require, 'lib.samp.events') assert(lsampev, 'Library \'lib.samp.events\' not found')

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampAddChatMessage('СМСОЧКА', 0xFFFFFF)
    wait(-1)
end

function sampev.onPlayerDeathNotification(killerId, killedId, reason)
    if killerId ~= nil and reason ~= nil and killedId ~= nil then
        local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
        if sampIsPlayerConnectedFixed(killerId) and sampIsPlayerConnectedFixed(killedId) then
            if killerId == myid then
                lua_thread.create(function()
                    wait(100)
                    sampSendChat('/sms '..killedId..' привет родной!')
                end)
            end
        end
    end
end

function sampIsPlayerConnectedFixed(id)
    local id = tonumber(id)
    local myid = select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))
    if sampIsPlayerConnected(id) or id == myid then
        return true
    else
        return false
    end
end
работает идеально, благодарю за помощь
ну типа того сделал, проще всего в общем, проверяй.


Lua:
require "lib.moonloader"
local lsampev, sampev = pcall(require, 'lib.samp.events') assert(lsampev, 'Library \'lib.samp.events\' not found')

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampAddChatMessage('СМСОЧКА', 0xFFFFFF)
    wait(-1)
end

function sampev.onPlayerDeathNotification(killerId, killedId, reason)
    if killerId ~= nil and reason ~= nil and killedId ~= nil then
        local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
        if sampIsPlayerConnectedFixed(killerId) and sampIsPlayerConnectedFixed(killedId) then
            if killerId == myid then
                lua_thread.create(function()
                    wait(100)
                    sampSendChat('/sms '..killedId..' привет родной!')
                end)
            end
        end
    end
end

function sampIsPlayerConnectedFixed(id)
    local id = tonumber(id)
    local myid = select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))
    if sampIsPlayerConnected(id) or id == myid then
        return true
    else
        return false
    end
end
протестил сегодня, ибо вчера не так много времени были, он перестает работать, как пропадает табличка с киллами. вчера проверял на монсере и на срп на каптах только, вне каптов не тестил. сегодня затестил и только заметил
 
Последнее редактирование:

neverlane

t.me/neverlane00
Друг
1,010
1,165
Событие onPlayerDeathNotification срабатывает только тогда, когда есть килллист, можно сделать другим способом, через событие onSendTakeDamage
Lua:
local checkEv, sampev = pcall(require, 'samp.events') -- безопасная подгрузка либы через pcall
if checkEv then -- если либа подгрузилась
    function sampev.onSendTakeDamage(playerId, damage, weapon, bodypart) -- функция получения дамага от игрока
        local result, myid = sampGetPlayerIdByCharHandle(PLAYER_PED) -- получаем свой ID
        if result and sampIsLocalPlayerSpawned() then -- если получили и мы заспавнены
            if sampGetPlayerHealth(myid) - damage <= 0 then -- если наше текущее хп минус дамаг меньше или равно нулю
                if sampIsPlayerConnected(playerId) then -- проверяем, подключен ли чел (т.к это работает и на дамаг от сервера)
                    sampSendChat(('/sms %d я твою мать на авито продал бро :)'):format(playerId)) -- отправляем смсочку
                end
            end
        end
    end
else -- если либа не подгрузилась
    print('ЭЭЭЭЭ а почему samp.lua не подгрузился?')
end
 
  • Нравится
Реакции: NES и kin4stat

wulfandr

Известный
636
260
Событие onPlayerDeathNotification срабатывает только тогда, когда есть килллист, можно сделать другим способом, через событие onSendTakeDamage
Lua:
local checkEv, sampev = pcall(require, 'samp.events') -- безопасная подгрузка либы через pcall
if checkEv then -- если либа подгрузилась
    function sampev.onSendTakeDamage(playerId, damage, weapon, bodypart) -- функция получения дамага от игрока
        local result, myid = sampGetPlayerIdByCharHandle(PLAYER_PED) -- получаем свой ID
        if result and sampIsLocalPlayerSpawned() then -- если получили и мы заспавнены
            if sampGetPlayerHealth(myid) - damage <= 0 then -- если наше текущее хп минус дамаг меньше или равно нулю
                if sampIsPlayerConnected(playerId) then -- проверяем, подключен ли чел (т.к это работает и на дамаг от сервера)
                    sampSendChat(('/sms %d я твою мать на авито продал бро :)'):format(playerId)) -- отправляем смсочку
                end
            end
        end
    end
else -- если либа не подгрузилась
    print('ЭЭЭЭЭ а почему samp.lua не подгрузился?')
end
он просил смс тому, кого он убил
 

neverlane

t.me/neverlane00
Друг
1,010
1,165
он просил смс тому, кого он убил
а, ну тогда
Lua:
local checkEv, sampev = pcall(require, 'samp.events') -- безопасная подгрузка либы через pcall
if checkEv then -- если либа подгрузилась
    function sampev.onSendGiveDamage(playerId, damage, weapon, bodypart) -- функция отправки дамага
        if sampIsLocalPlayerSpawned() then -- если мы заспавнены
            if sampGetPlayerHealth(playerId) - damage <= 0 then -- если хп чела - нанесенный дамаг меньше или равно 0
                if sampIsPlayerConnected(playerId) then -- проверяем, подключен ли чел
                    sampSendChat(('/sms %d пососи ууууууу'):format(playerId)) -- отправляем смсочку
                end
            end
        end
    end
else -- если либа не подгрузилась
    print('ЭЭЭЭЭ а почему samp.lua не подгрузился?')
end
 
  • Нравится
Реакции: Otvertka1337 и BlackCherry

wulfandr

Известный
636
260
а, ну тогда
Lua:
local checkEv, sampev = pcall(require, 'samp.events') -- безопасная подгрузка либы через pcall
if checkEv then -- если либа подгрузилась
    function sampev.onSendGiveDamage(playerId, damage, weapon, bodypart) -- функция отправки дамага
        if sampIsLocalPlayerSpawned() then -- если мы заспавнены
            if sampGetPlayerHealth(playerId) - damage <= 0 then -- если хп чела - нанесенный дамаг меньше или равно 0
                if sampIsPlayerConnected(playerId) then -- проверяем, подключен ли чел
                    sampSendChat(('/sms %d пососи ууууууу'):format(playerId)) -- отправляем смсочку
                end
            end
        end
    end
else -- если либа не подгрузилась
    print('ЭЭЭЭЭ а почему samp.lua не подгрузился?')
end
ложные срабатывания, пишет sendchat два раза
 
  • Вау
Реакции: neverlane

realmoneyking

Новичок
10
2
Должно работать: 1) я убиваю игрока 2) ему автоматом отправляется СМСочка.
Код:
-- СМСочка
if playerId ~= nil and active then
    if not isPlayerDead(PLAYER_HANDLE) and not damage ~= nil then
        hp = sampGetPlayerHealth(playerId)
        new_hp = hp - damage
   
        lua_thread.create(function()
            wait(0)
            if new_hp == 0 or new_hp < 0 then
                sampSendChat("/sms "..playerid.." qq!")
            elseif new_hp < load_settings.settings.cell_hp then
                sampSendChat("/sms "..playerid.." qq")
            end
        end)
    end
    playerId = nil
end
Переименовать пару слов под себя, и юзай.
для некоторых сделал, у кого NotePad++ нету, что бы текст сделать в lua файле.
 

Вложения

  • smsKAMA.lua
    1.2 KB · Просмотры: 50
  • Эм
Реакции: sdfy