почему скрипт крашит , самп диалоги

Oki_Bern

Участник
Автор темы
169
6
Версия MoonLoader
Другое
почему с переменной GROVE_NICKNAME крашит в диалогам?
код по кусочкам

Код:
function main()
  if not isSampfuncsLoaded() or not isSampLoaded() then
    return
  end
  while not isSampAvailable() do
    wait(100)
  end
 
 lua_thread.create(ghettolist)
  wait(-1)
end

function ghettolist()
while true do wait(0)
for id = 0, 1000 do
  if sampIsPlayerConnected(id) and sampGetPlayerColor(id) == 0xAA09A400 then
    local GROVE_NICKNAME = ("GROVE  \t %s [id %s]\n"):format(sampGetPlayerNickname(id), id)
  end
end
end
end



Диалоги:
Код:
        {
          title = "Тест ",
          onclick = function()
            sampShowDialog(
              15,
              "1",
              "Organization\tNickname\n".. GROVE_NICKNAME,
              "Выбрать",
              "Закрыть",
              5
          )
        end
        },
 
Решение
показывает, но ток 1 ник
потому что ты записываешь только 1 ник, логично же?)
не до конца понял зачем ты создаешь поток и беск цикл для этой переменной, если можешь в событии onclick и прописать получение всех ников


Lua:
onclick = function()
    local output = "Organization\tNickname"

    for id = 0, 1000 do
      if sampIsPlayerConnected(id) and sampGetPlayerColor(id) == 0xAA09A400 then
        output = ("%s\nGROVE  \t %s [id %s]"):format(output, sampGetPlayerNickname(id), id)
      end
    end

    sampShowDialog(15, "1", output, "Выбрать", "Закрыть", 5)
end

Oki_Bern

Участник
Автор темы
169
6
local GROVE_NICKNAME, наверное потому что ты создаешь ее локальной и в контексте твоего диалога ее нет (т.е. ты конкатенируешь nil к строке -> краш)
Понял, убрал, показывает, но ток 1 ник
 

wojciech?

Известный
213
127
показывает, но ток 1 ник
потому что ты записываешь только 1 ник, логично же?)
не до конца понял зачем ты создаешь поток и беск цикл для этой переменной, если можешь в событии onclick и прописать получение всех ников


Lua:
onclick = function()
    local output = "Organization\tNickname"

    for id = 0, 1000 do
      if sampIsPlayerConnected(id) and sampGetPlayerColor(id) == 0xAA09A400 then
        output = ("%s\nGROVE  \t %s [id %s]"):format(output, sampGetPlayerNickname(id), id)
      end
    end

    sampShowDialog(15, "1", output, "Выбрать", "Закрыть", 5)
end
 
  • Влюблен
Реакции: Oki_Bern

Oki_Bern

Участник
Автор темы
169
6
потому что ты записываешь только 1 ник, логично же?)
не до конца понял зачем ты создаешь поток и беск цикл для этой переменной, если можешь в событии onclick и прописать получение всех ников


Lua:
onclick = function()
    local output = "Organization\tNickname"

    for id = 0, 1000 do
      if sampIsPlayerConnected(id) and sampGetPlayerColor(id) == 0xAA09A400 then
        output = ("%s\nGROVE  \t %s [id %s]"):format(output, sampGetPlayerNickname(id), id)
      end
    end

    sampShowDialog(15, "1", output, "Выбрать", "Закрыть", 5)
end
Пасибки