• От чего компьютер решил просыпаться?

    Varikorek
    @Varikorek
    Python разработчик ботов, и Java Mobile Dev.
    выспался))
    Ответ написан
    Комментировать
  • Как получить данные из JSON файла?

    Локальный файл? Ставь Node!

    UPD
    1. запускаете ваш script.js в среде Node
    2. в самом скрипте читаете локальный файл db.json
    3. превращаете json из файла в массив с помощью const array = JSON.parse(ваша_json_строка)
    4. создаете на основе полученного массива динамическую таблицу!


    UPD2
    Возможно, я поторопился с ответом. Попробуйте такой вариант. Но придется решать проблемы с CORS
    Ответ написан
    6 комментариев
  • Какие 3d редакторы сейчас актуальны в геймдеве?

    Ratislavka
    @Ratislavka
    В геймдеве в основном используется Maya - для hard surface (стены здания, радио и тд) ZBrush для создания моделей персонажей и монстров. Substance Painter для текстурирования моделей. 3DCoat используют в основном для ретопологии. Разницы что использовать особой нету. Я имею ввиду что основы в 3ds maya blender cinema одинаковы, научешься работать в одном будет не сложно пересесть на другой.
    Ответ написан
    Комментировать
  • Можно ли рендерить CPU+GPU в Cinema 4D? и чем лучше?

    В чистой Cinema таких приколов нет.

    Есть сторонний рендер - V-ray. В основном используется на 3D Max, но так же есть и на Cinema. В настройках рендера можно выставить режим V-ray RT, который предполагает рендер CPU+GPU. Редко этот режим очень плохо работает и глючит... А чаще всего вообще не работает :D

    Использование, для рендера, CPU + GPU не рационально. Прирост от производительности CPU небольшой. К тому же, всё ухудшает программная сложность связки CPU и GPU, из за которой прирост к производительности ещё меньше (короче, реализация хромает).

    Лучше всего рендерить на GPU. В стандартной cinema, начиная с версии R19, есть Pro Render, который работает на GPU. Нооо, точно скажу, что в версиях R19 и R20 он очень сырой. Работать практически невозможно. (Про последующие версии не знаю).

    Остались только сторонние рендеры на GPU. Из самых популярных есть только два - Octane и Redshift. (Тема бесконечных срачей). Если кратко:
    Octan работает только с видеокартами NVidia. Можно очень быстро создавать реалистичные сцены. Но, что то вне реализма (к примеру low poly композиция) будет создать проблематично.Проще, чем Redshift.
    Redshift работает на всех видкокартах. Более гибкая настройка, чем у Octan. Может как в реализм, так и во что то другое. Сложнее освоиться, чем в Octan.

    В целом всё. Если есть конкретные вопросы - задавай.
    Ответ написан
    1 комментарий
  • Как сделать возможным вывод программы в консоль?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    если нужно в динамике - одновременно выводить на консоль, писать в файл и тут же сразу построчно анализировать поступающую информацию, то тут чуть сложнее, хоть и не немного, вот небольшой пример:
    работа через файл
    #!/usr/bin/env bash
    
    # функции бот1 и бот2 которые постоянно выводят рандомно числа от 0 до 9 с интервалом в 2 секунды
    bot1(){
    	while true; do
    		echo "Bot1: $[RANDOM%10]"
    		sleep 2
    	done
    }
    
    bot2(){
    	while true; do
    		echo "Bot2: $[RANDOM%10]"
    		sleep 2
    	done
    }
    
    # путь к лог-файлу куда будем писать логи от ботов
    LOG=/tmp/botsLog.txt
    
    # удаляем лог-файл (если ненужно то закоментирвоать)
    rm -rf $LOG
    
    # запускаем ботов в фоновом(&) режиме, 
    # а также начинаем выводит поступающую от них информацию на консоль и писать в общий лог-файл
    bot1 | tee -a $LOG &
    sleep 1
    bot2 | tee -a $LOG &
    
    # функция анализа лог-файла (потока)
    analysisLogs() {
    	# запускаем постоянное построчное чтение поступающих данных в функцию
    	while read -r data; do
    		# здесь мы задаём фильтры и то что выполнить если совпадёт условие
    		case "$data" in
    			"Bot1: 0" ) echo "Бот 1 выдал ноль"
    				;;
    			"Bot2: 0" ) echo "Бот 2 выдал ноль"
    				;;
    		esac
    	done
    }
    
    # tail выводит поступающие данные по мере роста лог-файла (мониторит)
    # в данном случае мы передаём появляющиеся данные из файла в функцию analysisLogs
    tail -f $LOG | analysisLogs 
    
    # это необходимо чтобы главная программа преждевременно не завершилась 
    # пока не завершаться запущенные в ней фоновые(&) потоки
    wait
    
    exit

    с комментариями думаю будет понятней
    ctrl+c завершить скрипт

    можно конечно и через переменную сделать но это будет не так красиво да и не по феншую, кстати здесь мы пишем в ОЗУ так как /tmp у большинства дистрибутивов примонтирован в оперативной памяти.

    Если же не хочется вообще писать данные на диск или в озу, так как логи обычно склонны к накоплению если их не чистить да или просто ненужны, то можно просто использовать именованный канал(FIFO-файлы) с которым можно работать как с файлом(читать/писать) но при этом он будет выступать просто в роли промежуточного буфера, для этого в нашей программе нужно поменять всего две строчки(создать именованный канал и вместо tail использовать обычный cat )
    работа через fifo-файл
    #!/usr/bin/env bash
    
    # бот1 и бот2 просто постоянно выводят рандомно числа от 0 до 9 с интервалом в 2 секунды
    bot1(){
    	while true; do
    		echo "Bot1: $[RANDOM%10]"
    		sleep 2
    	done
    }
    
    bot2(){
    	while true; do
    		echo "Bot2: $[RANDOM%10]"
    		sleep 2
    	done
    }
    
    # путь к лог-файлу куда будем писать логи от ботов
    LOG=/tmp/botsLog.txt
    
    # удаляем лог-файл
    rm -rf $LOG
    
    # создаём именованный канал (FIFO-файл)
    mkfifo $LOG
    
    # запускаем ботов в фоновом(&) режиме, 
    # а также начинаем выводит поступающую от них информацию на консоль и писать в общий fifo-файл
    bot1 | tee -a $LOG &
    sleep 1
    bot2 | tee -a $LOG &
    
    # функция анализа поступающих данных
    analysisLogs() {
    	# запускаем постоянное построчное чтение поступающих данных в функцию
    	while read -r data; do
    		# здесь мы задаём фильтры и то что выполнить если сработает условие
    		case "$data" in
    			"Bot1: 0" ) echo "Бот 1 выдал ноль"
    				;;
    			"Bot2: 0" ) echo "Бот 2 выдал ноль"
    				;;
    		esac
    	done
    }
    
    # читаем файл(FIFO-файл) и передаём появляющиеся данные в функцию analysisLogs
    cat $LOG | analysisLogs 
    
    # это необходимо чтобы главная программа преждевременно не завершилась 
    # пока не завершаться запущенные в ней фоновые(&) потоки
    wait
    
    exit
    Ответ написан
    1 комментарий
  • Как сделать выдачу роли на сервере при написании боту в лс?

    Alexandre888
    @Alexandre888 Куратор тега Discord
    Javascript-разработчик
    проверить, сообщение было отправлено в текстовый канал или в ЛС боту:
    message.channel.type === "dm";

    выдать роль:
    let role = client.guilds.cache.get("id_сервера")
        .roles.cache.find /* или .get() */ (// условие //)
      
      client.guilds.cache.get("id_сервера")
        .members.cache.get(message.author.id)
        .roles.add(role)
    Ответ написан
  • Как сделать отправку сообщения бота в один текстовый канал?

    Alexandre888
    @Alexandre888 Куратор тега Боты
    Javascript-разработчик
    Ответ написан
    Комментировать
  • Как сделать боту комманду включения музыки по ссылки с ютуба на голосовом канале?

    h0w4rd
    @h0w4rd
    Python dev.
    Я даже не стал вникать в суть, просто посмотрел на код 30 секунд. Рекомендую почитать комментарии и последовать советам. И пожелаю удачи.
    import discord
    from discord.ext import commands
    # У меня зрение -3,5, но использования этого я не увидел.
    from pytube import YouTube
    
    bot = commands.Bot(command_prefix="!")
    # Все что, не закрыто иксами - можно узнать. А, что закрыто - секретно и ДОЛЖНО быть скрыто. А лучше вообще токен не показывать)
    TOKEN = "Njc1MzUwNTkzOTIwODI3Mzk0.xxxxx.xxxxx-xxxxx"
    yt_url = 'https://www.youtube.com/results?'
    game = discord.Game("Krunker.io")
    
    @bot.event # загрузка
    async def on_ready():
        print("Bot was launched!")
        await bot.change_presence(activity=game)
    
    @bot.command(pass_context=True)
    async def music(ctx, channel):
        url = ctx.message.content # вернет что-то вроде "!music youtube.com/watch"
        url = url.strip('https://www.youtube.com/watch?v=naIKplXzxTY') # почитайте что делает strip()
    
        vc = await bot.connect() # "бот, подключись!", а куда не сказано.
        vc.play(discord.FFmpegPCMAudio(url)) # ссылка на HTML страницу... а нужно АУДИО поток, а не станица. библиотека не может догадаться, что от нее хотят.
        vc.is_playing() # почитайте про "if"
        vc.pause() # зачем останавливать поток
        vc.resume() # и включать ._.
        vc.stop() # а после останавливать
    
    bot.run(TOKEN)
    Ответ написан
    Комментировать