Помощь с аргументами.

Aizen Sosuke

Участник
Автор темы
120
20
Версия MoonLoader
.026-beta
Здравствуйте.
Пытаюсь проверить значение в аргументах.
Суть такая, если второй введенный аргумент != 16, либо != 17, либо != 18, либо != 19 - выводит сообщение.
Код:
Код:
function ClientCommand_SetBizMaifa(arg)
    arg1, arg2 = string.match(arg, '(.+) (.+)');
    
    if arg1 == nil or arg1 == '' or arg2 == nil or arg2 == '' then
        sampAddChatMessage(Prefix..' Вы ввели не все аргументы', -1);
    elseif arg2 ~= 16 or arg2 ~= 17 or arg2 ~= 18 or arg2 ~= 19 then
        sampAddChatMessage(Prefix..' Вы указали неверный айди', -1);
    else
        sampAddChatMessage('Вы указали '..arg1..' '..arg2, -1);
    end
end
Но проблема в том, что все равно, если я ввожу числа от 16 до 19, то меня шлёт на..., и выполняется этот код:
Код:
    elseif arg2 ~= 16 or arg2 ~= 17 or arg2 ~= 18 or arg2 ~= 19 then
        sampAddChatMessage(Prefix..' Вы указали неверный айди', -1);
Что я делаю не так?
 
Решение
В общем, не знаю, как так получилось, но проблема была решена.
Вместо or взял and, хотя вообще не знаю, почему оно работает с and, если сравнение получается, что число != 16 и != 17 и != 18 и !19
Может кто объяснить мне, тупому?
Lua:
elseif arg2 ~= '16' and arg2 ~= '17' and arg2 ~= '18' and arg2 ~= '19' then
    sampAddChatMessage(Prefix..' Вы указали неверный айди фракции', -1);
or = или
and = и

Попробуй
Lua:
    elseif <= 16 and arg2 >= 19 then
        sampAddChatMessage(Prefix..' Вы указали неверный айди', -1);
Лучше это используй, ну дело твое

Fomikus

Известный
Проверенный
474
342
Здравствуйте.
Пытаюсь проверить значение в аргументах.
Суть такая, если второй введенный аргумент != 16, либо != 17, либо != 18, либо != 19 - выводит сообщение.
Код:
Код:
function ClientCommand_SetBizMaifa(arg)
    arg1, arg2 = string.match(arg, '(.+) (.+)');
   
    if arg1 == nil or arg1 == '' or arg2 == nil or arg2 == '' then
        sampAddChatMessage(Prefix..' Вы ввели не все аргументы', -1);
    elseif arg2 ~= 16 or arg2 ~= 17 or arg2 ~= 18 or arg2 ~= 19 then
        sampAddChatMessage(Prefix..' Вы указали неверный айди', -1);
    else
        sampAddChatMessage('Вы указали '..arg1..' '..arg2, -1);
    end
end
Но проблема в том, что все равно, если я ввожу числа от 16 до 19, то меня шлёт на..., и выполняется этот код:
Код:
    elseif arg2 ~= 16 or arg2 ~= 17 or arg2 ~= 18 or arg2 ~= 19 then
        sampAddChatMessage(Prefix..' Вы указали неверный айди', -1);
Что я делаю не так?
(.+) ищет любые символы и возвращает любые символы и виде строки
Решение: tonumber или используй (%d+) (%d+)
 

Aizen Sosuke

Участник
Автор темы
120
20
(.+) ищет любые символы и возвращает любые символы и виде строки
Решение: tonumber или используй (%d+) (%d+)
Попробовал так:
Lua:
arg1, arg2 = arg:match('(%d+) (%d+)');
Все равно ничего не дало.
 

Aizen Sosuke

Участник
Автор темы
120
20
У тебя сравнение неправильное, надо ==
  • ~= не равно
я знаю, мне как раз оно и нужно.
Мне нужно выводить ошибку в случае, если второй аргумент != 16 либо != 17 либо != 18 либо != 19
можно по яснее проблему?
у меня есть команда, получающая два аргумента
для второго аргумента я хочу сделать проверку, что если он != 16 либо != 17 либо != 18 либо != 19 - выводим в чат ошибку.
 

Aizen Sosuke

Участник
Автор темы
120
20
В общем, не знаю, как так получилось, но проблема была решена.
Вместо or взял and, хотя вообще не знаю, почему оно работает с and, если сравнение получается, что число != 16 и != 17 и != 18 и !19
Может кто объяснить мне, тупому?
Lua:
elseif arg2 ~= '16' and arg2 ~= '17' and arg2 ~= '18' and arg2 ~= '19' then
    sampAddChatMessage(Prefix..' Вы указали неверный айди фракции', -1);
 

qdIbp

Автор темы
Проверенный
1,387
1,143
В общем, не знаю, как так получилось, но проблема была решена.
Вместо or взял and, хотя вообще не знаю, почему оно работает с and, если сравнение получается, что число != 16 и != 17 и != 18 и !19
Может кто объяснить мне, тупому?
Lua:
elseif arg2 ~= '16' and arg2 ~= '17' and arg2 ~= '18' and arg2 ~= '19' then
    sampAddChatMessage(Prefix..' Вы указали неверный айди фракции', -1);
or = или
and = и

Попробуй
Lua:
    elseif <= 16 and arg2 >= 19 then
        sampAddChatMessage(Prefix..' Вы указали неверный айди', -1);
Лучше это используй, ну дело твое
 
  • Нравится
Реакции: Aizen Sosuke