Тип переменной

Tema05

Известный
Автор темы
1,500
458
Версия MoonLoader
.025-beta
Есть команда /invite (значение) и я проверяю является ли значение числом. Но при проверке check всегда равно string
Lua:
local check
sampRegisterChatCommand("invite", invite)
function invite(arg)
check = type(arg)
sampAddChatMessage(check, -1)
if check == "number"
  then
   lua_thread.create(function()
    sampSendChat("/do Ключ от раздевалки в кармане.")
    wait(2000)
    sampSendChat("/me достал ключ от раздевалки из кармана")
    wait(2000)
    sampSendChat("/todo Добро пожаловать!*передав ключ человеку напротив")
    wait(2000)
    sampSendChat("Раздевалка на 2 этаже.")
    wait(2000)
    sampSendChat("/invite " .. arg)
   end)
  else
   sampAddChatMessage("[SMIHelper] {FFFFFF}/invite [id]", 0x3399FF)
end
end
 
Решение
Решил сделать проверку является ли аргумент положительным и целым числом ввожу в аргумент 2 и в if arg == check выводит false хотя строчка sampAddChatMessage(arg .. " " .. check, -1) пишет "2 2"
Lua:
function invite(arg)
check = tonumber(arg)
if check ~= nil
  then
   check = arg
   arg = math.abs(arg)
   arg = math.floor(arg)
   if arg == check
    then
     sampAddChatMessage("+", -1)
   end
   sampAddChatMessage(arg .. " " .. check, -1)
   if arg < 1000
    then
     lua_thread.create(function()
      sampSendChat("/do Ключ от раздевалки в кармане.")
      wait(2000)
      sampSendChat("/me достал ключ от раздевалки из кармана")
      wait(2000)
      sampSendChat("/todo Добро пожаловать!*передав ключ человеку напротив")...

Tema05

Известный
Автор темы
1,500
458
Оно всегда string, преобразуй в number
Кто "они" и по сути если я их преобразую что-то в number то при проверке всегда будет number
Пробовал добавить но всё равно выводит string
Lua:
local check = imgui.ImInt(0)
local arg = imgui.ImInt(0)
 

trefa

3d print
Всефорумный модератор
2,124
1,288
Кто "они" и по сути если я их преобразую что-то в number то при проверке всегда будет number
Пробовал добавить но всё равно выводит string
Lua:
local check = imgui.ImInt(0)
local arg = imgui.ImInt(0)
Вобще причем тут imgui?
И в функции только один аргумент, чтоб получить раздельные данные нужно самому через регулярку вытаскивать.
 

molimawka

Известный
Друг
443
656
Кто "они" и по сути если я их преобразую что-то в number то при проверке всегда будет number
Пробовал добавить но всё равно выводит string
Lua:
local check = imgui.ImInt(0)
local arg = imgui.ImInt(0)
43221
 

Tema05

Известный
Автор темы
1,500
458
Решил сделать проверку является ли аргумент положительным и целым числом ввожу в аргумент 2 и в if arg == check выводит false хотя строчка sampAddChatMessage(arg .. " " .. check, -1) пишет "2 2"
Lua:
function invite(arg)
check = tonumber(arg)
if check ~= nil
  then
   check = arg
   arg = math.abs(arg)
   arg = math.floor(arg)
   if arg == check
    then
     sampAddChatMessage("+", -1)
   end
   sampAddChatMessage(arg .. " " .. check, -1)
   if arg < 1000
    then
     lua_thread.create(function()
      sampSendChat("/do Ключ от раздевалки в кармане.")
      wait(2000)
      sampSendChat("/me достал ключ от раздевалки из кармана")
      wait(2000)
      sampSendChat("/todo Добро пожаловать!*передав ключ человеку напротив")
      wait(2000)
      sampSendChat("Раздевалка на 2 этаже.")
      wait(2000)
      sampSendChat("/invite " .. arg)
     end)
   end
  else
   sampAddChatMessage("[SMIHelper] {FFFFFF}/invite [id]", 0x3399FF)
end
end
 

molimawka

Известный
Друг
443
656
Решил сделать проверку является ли аргумент положительным и целым числом ввожу в аргумент 2 и в if arg == check выводит false хотя строчка sampAddChatMessage(arg .. " " .. check, -1) пишет "2 2"
Lua:
function invite(arg)
check = tonumber(arg)
if check ~= nil
  then
   check = arg
   arg = math.abs(arg)
   arg = math.floor(arg)
   if arg == check
    then
     sampAddChatMessage("+", -1)
   end
   sampAddChatMessage(arg .. " " .. check, -1)
   if arg < 1000
    then
     lua_thread.create(function()
      sampSendChat("/do Ключ от раздевалки в кармане.")
      wait(2000)
      sampSendChat("/me достал ключ от раздевалки из кармана")
      wait(2000)
      sampSendChat("/todo Добро пожаловать!*передав ключ человеку напротив")
      wait(2000)
      sampSendChat("Раздевалка на 2 этаже.")
      wait(2000)
      sampSendChat("/invite " .. arg)
     end)
   end
  else
   sampAddChatMessage("[SMIHelper] {FFFFFF}/invite [id]", 0x3399FF)
end
end
Боже что ты делаешь? Ты присваиваешь check уже число проверяешь что оно не nil а потом опять строку. Зачем ? Почему? Лучше попроси чтобы тебе написали за маленькую цену.
 
  • Нравится
Реакции: Tema05

Tema05

Известный
Автор темы
1,500
458
Выводит что arg = 2 и check = 2 при этом if arg == check равно false Как?!
43226

Боже что ты делаешь? Ты присваиваешь check уже число проверяешь что оно не nil а потом опять строку. Зачем ? Почему? Лучше попроси чтобы тебе написали за маленькую цену.
если ты про check = arg то согласен просто пытался сделать что-то чтоб заработало как надо
 
Последнее редактирование:

molimawka

Известный
Друг
443
656
  • Нравится
Реакции: Tema05

Tema05

Известный
Автор темы
1,500
458
Всё сделал check = tonumber(arg) check присваинает тип number а arg имеет тип string
Решил сделать проверку является ли аргумент положительным и целым числом ввожу в аргумент 2 и в if arg == check выводит false хотя строчка sampAddChatMessage(arg .. " " .. check, -1) пишет "2 2"
Lua:
function invite(arg)
check = tonumber(arg)
if check ~= nil
  then
   check = arg
   arg = math.abs(arg)
   arg = math.floor(arg)
   if arg == check
    then
     sampAddChatMessage("+", -1)
   end
   sampAddChatMessage(arg .. " " .. check, -1)
   if arg < 1000
    then
     lua_thread.create(function()
      sampSendChat("/do Ключ от раздевалки в кармане.")
      wait(2000)
      sampSendChat("/me достал ключ от раздевалки из кармана")
      wait(2000)
      sampSendChat("/todo Добро пожаловать!*передав ключ человеку напротив")
      wait(2000)
      sampSendChat("Раздевалка на 2 этаже.")
      wait(2000)
      sampSendChat("/invite " .. arg)
     end)
   end
  else
   sampAddChatMessage("[SMIHelper] {FFFFFF}/invite [id]", 0x3399FF)
end
end
Lua:
local check
function invite(arg)
arg = tonumber (arg)
check = arg
if arg then
  arg = math.abs(arg)
  arg = math.floor(arg)
  if arg == check
    then
     print("+")
  end
end
print(arg .. " " .. check)
end
invite("2")
Додумался сам до того как увидел твой пост но всё равно спасибо за помощь
Lua:
function invite(arg)
 check = tonumber(arg)
 if check ~= nil
  then
   arg = math.abs(arg)
   arg = math.floor(arg)
   sampAddChatMessage(arg .. " " .. check, -1)
   if arg == check and arg < 1000
    then
     lua_thread.create(function()
      sampSendChat("/do Ключ от раздевалки в кармане.")
      wait(2000)
      sampSendChat("/me достал ключ от раздевалки из кармана")
      wait(2000)
      sampSendChat("/todo Добро пожаловать!*передав ключ человеку напротив")
      wait(2000)
      sampSendChat("Раздевалка на 2 этаже.")
      wait(2000)
      sampSendChat("/invite " .. arg)
     end)
   end
  else
   sampAddChatMessage("[SMIHelper] {FFFFFF}/invite [id]", 0x3399FF)
 end
end