Перейти к содержимому
  • 0
_bongo_

радар

Вопрос

Скрытый текст

 

local com = require('component')
local comp = require('computer')
local radar = com.isAvailable("radar") and com.radar or error("нет радара")
local gpu = com.gpu
local term = require('term')

gpu.setResolution(80,21)

local RadarBlackList = {DeGracia, Crowned17, Melamax, Venome_s, Fekton01, _bongo_}

while true do
local radar = radar.getPlayers()
for i = 1, #RadarBlackList do
for j = 1, #rad do
if radar.name[j] == RadarBlackList then
print("1")
else
print("0")
end
end
end
end

 

Сделал такой код который в теории должен работать, но он не работает + нечего не выводит
Если есть совпадение radar.name[j] == RadarBlackList, то он выводит 1, а если нету, то 0
но он даже 0 не выводит
можете разъяснить? А то я нечего не понимаю

Изменено пользователем _bongo_

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

В переменную сначала были вписаны данные по радару. Потом вдруг неожиданно в эту же переменную перезаписывают данные, но уже в виде массива со списком игроков. При перезаписи переменной, предыдущая информация удаляется. Я уверен что если данную программу зациклить, она проживет ... нет не проживет даже цикла.

Далее, выполнение цикла от 1 до #rad. Возникает вопрос, а это кто вообще?

Ну и сравнение, сравнивается игрок из данных от радара и ВЕСЬ массив блеклист.

Ну и там по мелочи, ники даны не в том формате, лишние библиотеки, это уже мелочи не требующие внимания

Исправленный код

Скрытый текст

local com = require('component')
local radar = com.isAvailable("radar") and com.radar or error("нет радара")
local RadarBlackList = {'DeGracia', 'Crowned17', 'Melamax', 'Venome_s', 'Fekton01', '_bongo_'}
--gpu.setResolution(80,21)


while true do
  local Players = radar.getPlayers() --получить массив с игроками. всеми
  for i = 1, #Players do -- прогнать список всех игроков
    local tmp = false --переключатель, чтобы понять есть игрок в черном списке или нет
    for j = 1, #RadarBlackList do --поиск и сортировка игроков из блеклиста
      if Players.name[i] == RadarBlackList[j] then --если игрок есть на радаре из блеклиста, не информировать об этом
        --print(Players.name[i].."1")
        tmp = true --если игрок есть, переключить переменную
        break --выбить из цикла, нефиг тратить процессорное время
      end
    end
    if not tmp then --проверка что нам попался игрок НЕ из черного списка
      print(Players.name[i]) --вывести его
    end
  end
  os.sleep(3)
end

 

 

Изменено пользователем Asior
убрал ГПУ и сон добавил

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Цитата

local radar = radar.getPlayers()

перезапись данных в переменной. Удивительно что он вообще хоть что то выводит

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а что не так? он ведь должен быть в цикле, я считываю инфу с людей в области радара

Изменено пользователем _bongo_

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это ожидаемо, так как я не знаю структуру массива, что выдает радар. Поэтому я использовал то, как у тебя написано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

спасибо, разобрался что не так было

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, _bongo_ сказал:

спасибо, разобрался что не так было

Рекомендую подробно описать, где нашел ошибку. Вдруг через 10-15 лет возникнет у кого-то такая же ошибка, и поисковик приведет его на этот сайт, где вместо ответа он найдет "Всем спасибо я разобрался", а как? Неизвестно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В моём коде были не правильно поставлены циклы, вы их поставили правильно в своём коде
и я понял уже как эти циклы правильно работают и тп
и ещё там 

if Players.name[i] == RadarBlackList[j], нужно исправить на if Players[i].name == RadarBlackList[j]
Players.name[i], нужно исправить на Players[i].name

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...