помогите со скриптом

Fasz fiatal

Известный
Автор темы
327
67
Версия MoonLoader
Другое
при активации выдает ошибку "attempt to call global 'sampGetPlayerNickName' (a nil value)" (через эту переменную идет несколько действий, но ругается только на это)

вот код

Код:
function(id)
    if id == "" then
     sampAddChatMessage ("PROBIV: {00FF00}для использования {FF0000}/probiv{00FF00} нужен ид игрока", main_color)
    else
    local connected = sampIsPlayerConnected(id)
    if not connected then
     sampAddChatMessage ("PROBIV: {00FF00}Игрока нет на сервере", main_color)
    else
     local nick = sampGetPlayerNickName(id)
      local pnpc = sampIsPlayerNpc(id)
        if pnpc then
         npc = "Да"
        else
         npc = "Нет"
        end
        local paused = sampIsPlayerPaused(id)
        if paused then
         afk = "Да"
        else
         afk = "Нет"
        end
     sampAddChatMessage("{0000FF}PROBIV: {00FF00} Nick: "..nick..", iD: "..id..", NPC: "..npc..", AFK: "..afk..".", -1)
    end
    end
 
Последнее редактирование:
Решение
при активации выдает ошибку "attempt to call global 'sampGetPlayerNickName' (a nil value)" (через эту переменную идет несколько действий, но ругается только на это)

вот код

function(id)
if id == "" then
sampAddChatMessage ("PROBIV: {00FF00}для использования {FF0000}/probiv{00FF00} нужен ид игрока", main_color)
else
local connected = sampIsPlayerConnected(id)
if not connected then
sampAddChatMessage ("PROBIV: {00FF00}Игрока нет на сервере", main_color)
else
local nick = sampGetPlayerNickName(id)
local pnpc = sampIsPlayerNpc(id)
if pnpc then
npc = "Да"
else
npc = "Нет"
end
local paused = sampIsPlayerPaused(id)
if paused then...

Andrinall

Известный
702
527
при активации выдает ошибку "attempt to call global 'sampGetPlayerNickName' (a nil value)" (через эту переменную идет несколько действий, но ругается только на это)

вот код

function(id)
if id == "" then
sampAddChatMessage ("PROBIV: {00FF00}для использования {FF0000}/probiv{00FF00} нужен ид игрока", main_color)
else
local connected = sampIsPlayerConnected(id)
if not connected then
sampAddChatMessage ("PROBIV: {00FF00}Игрока нет на сервере", main_color)
else
local nick = sampGetPlayerNickName(id)
local pnpc = sampIsPlayerNpc(id)
if pnpc then
npc = "Да"
else
npc = "Нет"
end
local paused = sampIsPlayerPaused(id)
if paused then
afk = "Да"
else
afk = "Нет"
end
sampAddChatMessage("{0000FF}PROBIV: {00FF00} Nick: "..nick..", iD: "..id..", NPC: "..npc..", AFK: "..afk..".", -1)
end
end
zstring name = sampGetPlayerNickname(int id) -- 0B36
Соблюдение регистра букв важно в именах функций и т.п.

И на будущее, используй [code] сюда код [/code] для вставки своего кода. Табуляцию разгребать из простого текста это жесть.
Lua:
sampRegisterChatCommand("probiv", function(id)
    if #id == 0 or not tonumber(id) then return sampAddChatMessage("PROBIV: {00FF00}для использования {FF0000}/probiv{00FF00} нужен ид игрока", main_color) end
    if not sampIsPlayerConnected(tonumber(id)) then return sampAddChatMessage ("PROBIV: {00FF00}Игрока нет на сервере", main_color) end
    id = tonumber(id)

    sampAddChatMessage(
        ("{0000FF}PROBIV: {00FF00} Nick: %s, iD: %d, NPC: %s, AFK: %s."):format(
            sampGetPlayerNickname(id),
            id,
            (sampIsPlayerNpc(id) and "Да" or "Нет"),
            (sampIsPlayerPaused(id) and "Да" or "Нет")
        ),
        -1
    )
end
 
Последнее редактирование:
  • Нравится
Реакции: вайега52 и qdIbp

Fasz fiatal

Известный
Автор темы
327
67
zstring name = sampGetPlayerNickname(int id) -- 0B36
Соблюдение регистра букв важно в именах функций и т.п.

И на будущее, используй [code] сюда код [/code] для вставки своего кода. Табуляцию разгребать из простого текста это жесть.
Lua:
sampRegisterChatCommand("probiv", function(id)
    if #id == 0 or not tonumber(id) then return sampAddChatMessage("PROBIV: {00FF00}для использования {FF0000}/probiv{00FF00} нужен ид игрока", main_color) end
    if not sampIsPlayerConnected(tonumber(id)) then return sampAddChatMessage ("PROBIV: {00FF00}Игрока нет на сервере", main_color) end
    id = tonumber(id)

    sampAddChatMessage(
        ("{0000FF}PROBIV: {00FF00} Nick: %s, iD: %d, NPC: %s, AFK: %s."):format(
            sampGetPlayerNickName(id),
            id,
            (sampIsPlayerNpc(id) and "Да" or "Нет"),
            (sampIsPlayerPaused(id) and "Да" or "Нет")
        ),
        -1
    )
end
выбивает такую же ошибку и сразу вопрос тогда, возможно ли вывести организацию игрока?
 
Последнее редактирование:

Andrinall

Известный
702
527
выбивает такую же ошибку и сразу вопрос тогда, возможно ли вывести организацию игрока?
Не должно выбивать ошибку.
Значит ты используешь эту функцию без установленного SAMPFUNCS.
(upd: или я долблюсь в глаза и не увидел, как мне т9 поменял букву в имени функции :D)

Lua:
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    repeat wait(100) until isSampAvailable()

    sampRegisterChatCommand("probiv", function(id)
        if #id == 0 or not tonumber(id) then return sampAddChatMessage("PROBIV: {00FF00}для использования {FF0000}/probiv{00FF00} нужен ид игрока", main_color) end
        if not sampIsPlayerConnected(tonumber(id)) then return sampAddChatMessage ("PROBIV: {00FF00}Игрока нет на сервере", main_color) end
        id = tonumber(id)

        sampAddChatMessage(
            ("{0000FF}PROBIV: {00FF00} Nick: %s, iD: %d, NPC: %s, AFK: %s."):format(
                sampGetPlayerNickname(id),
                id,
                (sampIsPlayerNpc(id) and "Да" or "Нет"),
                (sampIsPlayerPaused(id) and "Да" or "Нет")
            ),
            -1
        )
    end)

    wait(-1)
end

По поводу организации.
Если игроку в табе сервер устанавливает цвет ника под организацию и эти цвета фиксированные(не как на трп с crew например), то можно составить таблицу цветов организаций и сопоставлять цвет ника.

Lua:
local fractions = {
    [0xFFFFFFFF]  = "Player",
    [0xFF22FF22] = "Cop",
    -- etc
}

function getPlayerFraction(id)
    if not sampIsPlayerConnected(id) then return "NC" end
    if sampIsPlayerNpc(id) then return "NPC" end
    local color = sampGetPlayerColor(id)
    if fractions[color] == nil then return "UNK" end
    return fractions[color]
end


В противном случае - придётся вытаскивать из других источников, таких как: текстдравы(если это где-то вообще есть), диалог статистики и т.п.
 
Последнее редактирование:

Fasz fiatal

Известный
Автор темы
327
67
Значит ты используешь эту функцию без установленного SAMPFUNCS.
в том то и дело, что сампфункс, клео, мунлоадер и даже модлоадер установлены и все равно выдает ошибку (проверка на работу сампфункса тоже стоит)
В противном случае - придётся вытаскивать из других источников, таких как: текстдравы(если это где-то вообще есть), диалог статистики и т.п.
https://www.blast.hk/threads/53538/ возможно сделать подобное, но не используя сторонние сайты, а чисто через игру? чтобы можно было не только на даймонде использовать
 

Andrinall

Известный
702
527
https://www.blast.hk/threads/53538/ возможно сделать подобное, но не используя сторонние сайты, а чисто через игру? чтобы можно было не только на даймонде использовать
Только в том случае, если проект предоставляет такие данные(на сайте или в api каком-то)