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

evgkul

Пользователи
  • Публикации

    182
  • Зарегистрирован

  • Посещение

  • Победитель дней

    5

Сообщения, опубликованные пользователем evgkul


  1. Короутины сами по себе - довольно сложная для понимания тема (по сравнению с фанкшионами, к примеру). А тут так мало букв использовано для описания библиотеки. Попытался вкурить, что значит "проскочить" несколько подпрограмм и зачем это нужно. Не получилось. Видать, старею :(

    В пример глянь, там нагляднее


  2. Данная библиотека позволяет "проскочить" несколько подпрограмм при вызове coroutine.yield (и coroutine.resume в эту же подпрограмму).

    Пример:

     

     

    local yieldto = require('yieldto')
    
    local coroutines = {}
    
    for num = 1,5 do
    	coroutines[num] = coroutine.create(function()
    		local message
    		if num == #coroutines then
    			message='IT WORKS!'
    		end
    		print('Entered coroutine number',num)
    		if num < #coroutines then
    			_,message = coroutine.resume(coroutines[num+1])
    		else
    			coroutine.yieldto(coroutines[1],message)
    		end
    		print('Reentered coroutine number',num,'Message: ',message)
    		if num < #coroutines then
    			coroutine.resume(coroutines[num+1])
    		end
    	end)
    end
    
    coroutine.resume(coroutines[1])
    

    При вызове этого примера порядок переходов между подпрограммами следующий: 1,2,3,4,5,1,5,4,3,2,1

     

     

    Скачать

    • Нравится 1

  3. Распарси этот файл, в нём соотношения символов windows-1251 и Unicode. Потом по таблице на этой странице перегони их в UTF-8 (или, если лень заниматься велосипедостроительством, юзай этот кусок кода). Ну а если совсем лень - юзай уже перегнанную мной таблицу(ключ - cbvdjk в Windows-1251, значение - символ в UTF-8)

    • Нравится 1

  4. А этот фрагмент

    function printT(a) pcall(function() print(a) end) end
    Логичнее было бы написать так:

    print = print or function()end
    Такая конструкция позволит не вызывать каждый раз pcall и не менять везде в тексте программы print на printT

    А то и 

    local print = print or prn or function() end
    

  5. Вроде NEI даёт дампы.

    Но вот все мои парсеры состоят из string.sub в цикле и куче ifов

    Да и рецепты крафта - не дерево, а граф. Один предмет может крафтится по разному. И как компу понять, из чего крафтить? Вдруг кобла или олово в дефиците, а алмазов полно?


  6. Зачем?  -_- Это же ивент. Его должны ждать все, спрашивать в чате, мол, что там, что слышно. Зачем оно в цикле молотить должно и рожать миллион объектов, которым грош цена? Интереснее же в программе учитывать время, сутки, таймеры, онлайн, дни недели, когда ивенты чаще, 2-3 раза за сутки, когда реже. И приз соответствующий толковый, а не бегать, как  в жопу укушенный целый день сутками и фармить по одному ЮЮ. Кому это нужно?

     

    Ты же ждешь, например, стрим на твиче, или чемпионат по футболу, или 8-е Марта и прочее? Так ведь?

     

     

     

    будет. Все принтить в очки можно. Там же выше написали на пару постов, что планшет есть не у всех, работает только до 400 блоков. Или ты не читал пост? Что ты будешь с планшетом делать, если ссаный покемон заспавнился на координатах 8К+ от спавна и квестового компа? А самое главное, планшетом нет никакой возможности идентифицировать достоверно игрока, а wi-fi канал игрового компа скорее всего просто задудосят. 

     

    Но делай, как знаешь и как тебе удобнее. :)

     

    Вроде в опенкомпах есть команда, позволяющая залочить планшет или робота(не засунуть eeprom или разобрать)


  7. Придолбал костыль, вроде работает БЕЗ debug


    --getfenv и setfenv юзаются только один раз, можно особо не заморачиватся
    local tablo={} --Окружение
    local envtablo -- над этой таблицей будут проводится издевательства
    local function setfenv(func,argtablo)
      envtablo=argtablo
      local metatablo ={__index=envtablo,__newindex=envtablo}
      setmetatable(tablo,metatablo)
      return func
    end
    local function getfenv()
      return envtablo
    end
    local function prepare(func)
      setfenv(nil,_ENV)
      return func
    end
    return {setfenv=setfenv,getfenv=getfenv,prepare=prepare,tablo=tablo}
    

  8. LPeg для Lua уже есть и называется LuLPeg

     

    И да, для совместной работы я создал репу на C9, просите доступ кто будет участвовать.

    https://ide.c9.io/krutoy242/moonoc

     

    Я уже изменил там большенство либ и добавил свои, что бы всё запускалось на ОС.

    Там совместимость с LPeg неполная

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