Поиск игроков онлайн из local

wheythisbitch1

Участник
Автор темы
43
5
Версия MoonLoader
.026-beta
Всех приветствую.
Подскажите пожалуйста как реализовать подобное:

Есть локальная (не получается у меня загрузку из .txt файла сделать) в которой ники игроков
players:
local players =
{
      "Test_One",
      "Test_Two",
};

Как сделать функцию которая по команде проверит, есть-ли онлайн тот, или иной игрок из списка?
players:
-- Если игроки есть
local id = sampGetPlayerIdByNickname(nickname)
sampAddChatMessage('Онлайн игрок ' .. nickname .. ' [ID: ' .. id .. ']', -1) -- Допустим игрок Test_One
wait(100)
sampAddChatMessage('Онлайн игрок ' .. nickname .. ' [ID: ' .. id .. ']', -1) -- Допустим игрок Test_Two
sampAddChatMessage('Проверка окончена. Всего игроков из списка: '.. --[[Какую-нибудь переменную всрать]], -1)

-- Если игроков нет
sampAddChatMessage('Проверка окончена. Всего игроков из списка: '.. --[[Какую-нибудь переменную всрать]], -1)

Спасайте, господа, голова у меня съехала уже с плеч.
Благодарю заранее за помощь.
 
Решение
Пытался очень долго вырезать код из этих скриптов - нихрена не выходит... Рукожоп...
ОК...
Lua:
require "lib.moonloader"
local sms = sampAddChatMessage
local nn = 'Ilya_Lua'

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable do wait(100) end
    sampRegisterChatCommand('dx',
    function()
        for i = 0,sampGetMaxPlayerId() do
            if sampGetPlayerNickname(i) == nn then
                sms('На сервере его ид '..i,-1)
                return i
            end
        end
    end)
    while true do wait(0)
    end
end

Дальше с таблицей справишься?

qdIbp

Автор темы
Проверенный
1,387
1,141
 
  • Нравится
Реакции: wheythisbitch1

wheythisbitch1

Участник
Автор темы
43
5
Пытался очень долго вырезать код из этих скриптов - нихрена не выходит... Рукожоп...
 

qdIbp

Автор темы
Проверенный
1,387
1,141
Пытался очень долго вырезать код из этих скриптов - нихрена не выходит... Рукожоп...
ОК...
Lua:
require "lib.moonloader"
local sms = sampAddChatMessage
local nn = 'Ilya_Lua'

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable do wait(100) end
    sampRegisterChatCommand('dx',
    function()
        for i = 0,sampGetMaxPlayerId() do
            if sampGetPlayerNickname(i) == nn then
                sms('На сервере его ид '..i,-1)
                return i
            end
        end
    end)
    while true do wait(0)
    end
end

Дальше с таблицей справишься?
 
  • Нравится
Реакции: wheythisbitch1

wheythisbitch1

Участник
Автор темы
43
5
@qdIbp Хелп


Code:
local nn =
{
    'Test_Player1',
    'Test_Player2',
    'Test_Player3',
    'Test_Player4'
};

function main()
    --if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(0) end
    repeat wait(0) until sampIsLocalPlayerSpawned() -- скрипт не будет работать до спавна педа
    sampRegisterChatCommand("ch", CheckPlayers)
end
--
function CheckPlayers()
  for i = 0, 201 do
    if sampGetPlayerNickname(i) == nn then
        sampAddChatMessage('На сервере его ид '..i,-1)
        return i
    end
end
end

Самп от безысходности крашит, всё верно по коду раскидано?
 

qdIbp

Автор темы
Проверенный
1,387
1,141
@qdIbp Хелп


Code:
local nn =
{
    'Test_Player1',
    'Test_Player2',
    'Test_Player3',
    'Test_Player4'
};

function main()
    --if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(0) end
    repeat wait(0) until sampIsLocalPlayerSpawned() -- скрипт не будет работать до спавна педа
    sampRegisterChatCommand("ch", CheckPlayers)
end
--
function CheckPlayers()
  for i = 0, 201 do
    if sampGetPlayerNickname(i) == nn then
        sampAddChatMessage('На сервере его ид '..i,-1)
        return i
    end
end
end

Самп от безысходности крашит, всё верно по коду раскидано?
Эх расстроил ты меня 😭
Lua:
local nn =
{
    'Test_Player1',
    'Test_Player2',
    'Test_Player3',
    'Test_Player4'
}

function main()
    --if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(0) end
    repeat wait(0) until sampIsLocalPlayerSpawned() -- скрипт не будет работать до спавна педа
    sampRegisterChatCommand("ch", CheckPlayers)
    while true do wait(0)
    
    end
end

function CheckPlayers()
    for i = 0, 201 do
        for k, v in ipairs(nn) do
            if sampGetPlayerNickname(i) == v then
                sampAddChatMessage('ID: '..i..' nick: '..v,-1)
            end
        end
    end
end
 
  • Влюблен
Реакции: wheythisbitch1

wheythisbitch1

Участник
Автор темы
43
5
Эх расстроил ты меня 😭
Lua:
local nn =
{
    'Test_Player1',
    'Test_Player2',
    'Test_Player3',
    'Test_Player4'
}

function main()
    --if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(0) end
    repeat wait(0) until sampIsLocalPlayerSpawned() -- скрипт не будет работать до спавна педа
    sampRegisterChatCommand("ch", CheckPlayers)
    while true do wait(0)
   
    end
end

function CheckPlayers()
    for i = 0, 201 do
        for k, v in ipairs(nn) do
            if sampGetPlayerNickname(i) == v then
                sampAddChatMessage('ID: '..i..' nick: '..v,-1)
            end
        end
    end
end
Как бы глупо не прозвучало, но, начало крашить скрипт...


123:
[23:15:18.014648] (error)    Script: cannot resume non-suspended coroutine
stack traceback:
    [C]: in function 'sampGetPlayerNickname'
Находит игроков и после этого сразу прощается


upd: Решено этим кодом


fix:
function CheckPlayers()
    local players = sampGetPlayerCount(false)
    for b = 0, 201 do
        for k, v in ipairs(NamePlayers) do
        if sampIsPlayerConnected(b) then name = sampGetPlayerNickname(b) end
        if name == v then
          if sampIsPlayerConnected(b) then
            -- Действие когда нашли нужного игрока
          end
        end
    end
end
end

По рукожопски, но работает, спасибо за помощь)
 
Последнее редактирование: