Tverd
Хотел спросить, а никто не находил случайно photon.lua декомпилированную? Это фотоновская библиотека для работы с сетью reliable udp. Они ее раздают бесплатно, но скомпиленную, мне лично не удалось ее декомпилить...
Tverd
Ага, LuaDec виснет на в определенном месте, забивает всю память компа ) Можно переводить по функциям, но боюсь что большая часть исходников теряется при этом. Вот. А интересно почему, они реализовали Reliable UDP на голых UDP сокетах luasocket и на чистом луа.
Snusmumriken
1. Есть enet, со схожим функционалом комнат и udp, 2. https://github.com/tarjoilija/rum/blob/master/rum.lua Чем тебя udp не устраивает? Необходимостью строить оболочку вокруг, которая регулирует отправку сообщений пачками и их скорость, чтобы не забить канал? UDP при этом гораздо, гораздо быстрее. У TCP, перед отправкой сообщения, приходится посылать комбу "Готов? - Угу! - Принимай!", которая утраивает пинг. Кому это надо? :3
Tverd
Дык я как раз и говорю что меня UDP как раз таки и устраивает! А Reliable UDP устраивает вдвойне! )))) щас посмотрю что там на гите
Snusmumriken
На гите - просто образец штуки которая принимает-посылает пакеты.
Tverd
ага, интересная штука, спасибо
Tverd
enet юзаю, но его хрен прикрутишь к короне
Snusmumriken
Там нельзя подключать dll-ки? Берешь и подключаешь, через package.cpath или еще что-то такое.
Tverd
Тут такой момент, если билдать готовое приложение, то либо это делается на сервере короны, либо нужно иметь платный интерпрайз. Если интерпрайз, то все норм, dll можно любые впихнуть, если фри версия, то только те, которые бесплатно и у них
Tverd
Точнее не бесплатно, а расположенные на их сервере
Yogurt
А кто-то юзал lua с mongo?
Snusmumriken
Подозреваю что это аналогично redis'у. Правда, там отдельный с++-драйвер
Tverd
И что произойдет? ) Если вжухать? )))))
Tverd
/help@FailsBot
kuradi
Tverd
Нда, как же тперь без вжуха? )))))))
Snusmumriken
Приветы не только от роботов!
Snusmumriken
( ・ω・。)つ━☆・*。 ⊂ ノ ・゜+. しーJ °。+ *´¨) .· ´¸.·*´¨) ¸.·*¨) (¸.·´ (¸.·'* ☆
Yogurt
/vzhuh ololol
FailsBot
( ・ω・。)つ━☆・*。 ⊂  ノ    ・゜+. しーJ   °。+ *´¨)          .· ´¸.·*´¨) ¸.·*¨)           (¸.·´ (¸.·'* ☆ ololol
🦥Alex Fails
И что произойдет? ) Если вжухать? )))))
Бот не запускался, пока я отрывал инфу с бэкапов, т.к. я вайпнул планшет
Tverd
/vzhuh@FailsBot
🦥Alex Fails
Ща я поднял опять бота. Но опять же на планшете
FailsBot
( ・ω・。)つ━☆・*。 ⊂  ノ    ・゜+. しーJ   °。+ *´¨)          .· ´¸.·*´¨) ¸.·*¨)           (¸.·´ (¸.·'* ☆ FailsBot
Tverd
ну ок )))) не думаю что это особо надо, но тут уж как кому нравится )
🦥Alex Fails
Это первая тестовая фича😂 тут этот бот для других целей
Tverd
интересно для каких?
Tverd
банить? кикать? )
🦥Alex Fails
Чтот тип того. И собирать по хештегам что-то подобие базы знаний
🦥Alex Fails
И списки чатов
Tverd
ну это дело хорошее ) плюсую )
Иван
В lua таблицы по ссылкам же передаются? Или по значению?
Иван
Чёт я говна написал:
Иван
Иван
Можно тоже самое как-то получше сделать?
Tverd
Я бы допустим заменил ipairs на цикл, это раз
Иван
В смысле на цикл? А это не цикл?
Tverd
на for i=1, #self._types[component.name]
Иван
Аа
Tverd
пихнул бы self._types... бла бла в переменную, раз это таблица
Иван
пихнул бы self._types... бла бла в переменную, раз это таблица
Если я сделаю local types = self._types[component.type] .... table.remove(types, 1) Удалится ли 1 в self._types[component.type] ? То есть types это копия таблицы или ссылка/алиас на неё?
Tverd
ссылка, однозначно
Иван
И когда из функций возвращаю?
Tverd
в луа на таблицы всегда ссылки
Иван
А, ништяк
Tverd
и когда из фукнции возвращаешь - тоже ссылку возвращаешь
Tverd
потом можно подумать, а не написать тебе так: return table.remove(бла...бла)
Иван
Хм. Тогда я могу сделать две таблицы с одними и теми-же объектами но по разным ключам. Из одной удобно и быстро достать массив объектов заданного типа, а из другой удалить по айдишнику.
Tverd
Ну да, и как вариант можно в одной таблице хранить и по id - как массив, и по ключу как dict или hash
Иван
Выходит вот так
Иван
Только корректно ли удалится component из _types при удалении его из _components...
Иван
А видать вообще не удалится
Tverd
неа, не удалится
Иван
Ну значит цикл неизбежен. Разве что: self._types[type][component.id] = component
Tverd
а ты где-то потом используешь _componentIdsIncrement?
Иван
И удалять: table.remove(self._types[component.type], component.id)
Иван
а ты где-то потом используешь _componentIdsIncrement?
Только для уникальных айдишников компонентов. Чтобы иметь для них какой-нибудь ключ и сравнивать "тот ли или не тот"
Tverd
ну да, только есть одни момент... если попробуешь удалить еще один элемент, то он уже не будет ссылаться на номер в массиве
Иван
То есть в данном случае у меня component.id сиве, а не ключом хеш-таблицы?
Иван
ой
Иван
То есть в данном случае у меня component.id становится номером в массиве, а не ключом хеш-таблицы?
Tverd
да, если ты делаешь table.remove - таблица сдвигается
Tverd
дырки не будет
Иван
а если = nil ?)
Tverd
если ты сделаешь table[id] = nil - будет дырка
Tverd
и цикл будет идти до дырки
Иван
Ах да, что-то не подумал, что мне нужно получать в итоге именно массивы компонентов и получать их нужно часто-часто, а вот удалять лишь иногда.
Tverd
цикл это который i=1, #tbl или ipairs
Tverd
ну обычный цикл - самый быстрый
Иван
В таком случае как-то так
Иван
Наверное таблицы можно и напрямую сравнивать, а не их айдишники, но эти айдишники всё-равно скорее всего где-то понадобятся.
Tverd
ну норм, только еще раз спрошу, не хочешь сделать return table.remove(...)?
Иван
А что он вернёт?
Tverd
это будет быстрый tail call
Tverd
вернет компоненту
Иван
компоненту?
Tverd
там ошибка у тебя, cmpnt где?
Иван
ой)