Cyberpunk enjoyer
Насчёт взломов я наслышан, что получали доступ к модулю игры, дампили и делали что хотели, но я честно не знаю как ограничить доступ с луа к некоторым WinApi функциям
Ruslan
Cyberpunk enjoyer
Snusmumriken
В жизни world of warcraft был очень интересный период, когда они предоставляли обычный require для модов, способный подгружать сишку. И вот там были такие знатные боты, которые всей пачкой игроков фармили одно и то же сутками гуляя по маршрутам )
Cyberpunk enjoyer
Только драйвером)
Не думаю что это поможет, ты находишься в процессе и ты имеешь полный доступ к своей же памяти
Igor
The Long Dark
Давненько меня там не было, походу. Не знал, что там мультиплеер появился, да ещё и модифицируемый.
Cyberpunk enjoyer
Ruslan
Cyberpunk enjoyer
проще никак не бороться
Snusmumriken
Разумеется, что-то должно быть отсечено )
Snusmumriken
Ну в общем пока оно не затрагивает толпы юзеров в ммо/сессионке, то может быть и не особо страшно.
Ruslan
Не совсем понял
Драйвер получает события раньше каких-то там жалких процессов
Ruslan
Ruslan
В доступе
Cyberpunk enjoyer
Ты никак не можешь ограничить себя к своей же памяти
Ruslan
Cyberpunk enjoyer
Ruslan
Или заморочиться и определять факт злоупотребления
Cyberpunk enjoyer
Вот я вам картинку нарисовал, когда вы находитесь в своей же памяти вы не можете никак ограничить себя
Cyberpunk enjoyer
а если лезете в другое приложения с его виртуальной памятью, то да
Cyberpunk enjoyer
вы легко можете с драйвера защитить регион от таких "взломщиков"
Ruslan
Cyberpunk enjoyer
Ruslan
Ruslan
Просто можно придумать както хитрый ход который будет отличать досту разраба и доступ левый
Ruslan
Хотя... не...есть же еще доступ под капотом....(служебные вещи)
Ruslan
Короче если сильно захотеть - можно думаю))
Aydar
Cyberpunk enjoyer
Ruslan
The Long Dark
Чем она лучше того же Rust? Почему игроки в нее играют? Тем более что она изначально сингл. Мультиплеер сделали фанаты?
*Я не играл ни в ту ни в ту но раст видел на Ютубе
Aydar
Cyberpunk enjoyer
Cyberpunk enjoyer
Одна про выживание в пустой холодной Канаде
Cyberpunk enjoyer
где -50
Cyberpunk enjoyer
А раст это мультиплеер только
Ruslan
где -50
Понял, могу посоветовать вам, фанатам мороза, игру Cryostasis: Sleep of Reason
Hello, World! 🎄
Как лучше добавлять элемент в таблицу?
'table.insert(t, 1)' или 't[#t+1] = 1' ?
ㅤ
table.insert
Читается проще, синтаксиса меньше.
Ну и как бы оно чо, зря существует?
Hello, World! 🎄
Hello, World! 🎄
Если скомпилировать lua код для vm lua, то получается везде одинакового инструкций
Hello, World! 🎄
Snusmumriken
Ну кароч, точно есть более лучший вариант под названием
i = i + 1
t[i] = v
Потому что не вычисляет длину.
Hello, World! 🎄
table insert за 451 миллисекунд выполнился (1млн раз)
Snusmumriken
В луажыт?
Hello, World! 🎄
А вариант t[#t+1] за 374 (то есть быстрее)
Hello, World! 🎄
Snusmumriken
Луажыт просто иногда разворачивает эту фигню
ㅤ
Ну это какая-то экономия на спичках всё равно. Вот это t[#t+1] хуже читается и оставляет больше возможностей для опечаток ИМХО. Если тебе нужно работать с таблицей в миллион элементов, держи счётчик, как Снус написал выше.
Hello, World! 🎄
И так теперь когда мы сравнили по скорости, давайте сравним по количеству занимаемой памяти после компиляции в lua bytecode
Hello, World! 🎄
1 это table.insert
2 это t[#t+1]
Cyberpunk enjoyer
Я не совсем понимаю, ты задал вопрос, зная ответ, и теперь доказываешь, что другие не правильно ответили?
Cyberpunk enjoyer
Зачем тогда было задавать вопрос?
Snusmumriken
Мм, t[#t + 1] таки даёт минимум возможностей для опечаток, и лично мне нравится что оно не заворачивается в функцию.
t[#t + 1] = Class:new(10, 20, 30, true, false, {arg1 = 10, arg2 = 20})
выглядит гораздо чётче и нагляднее чем
table.insert(t, Class:new(10, 20, 30, true, false, {arg1 = 10, arg2 = 20}))
Всё равно что убрать лишний слой вложенности.
ㅤ
Мм, t[#t + 1] таки даёт минимум возможностей для опечаток, и лично мне нравится что оно не заворачивается в функцию.
t[#t + 1] = Class:new(10, 20, 30, true, false, {arg1 = 10, arg2 = 20})
выглядит гораздо чётче и нагляднее чем
table.insert(t, Class:new(10, 20, 30, true, false, {arg1 = 10, arg2 = 20}))
Всё равно что убрать лишний слой вложенности.
t[#s+1]
t[s+1]
t[#t]
t[#t+2]
Hello, World! 🎄
1 это table.insert
2 это t[#t+1]
И того вариант t[#t+1] - 150 байт, а table.insert - 181 байт, при коде:
t = {}
t[#t+1] = 1 или table.insert(t, 1)
Hello, World! 🎄
Snusmumriken
t[#s+1]
t[s+1]
t[#t]
t[#t+2]
О-хо-хо. Вот сколько лет я это делаю (8 лет примерно), так ни разу и не опечатывался.
Особенно с +2.
Hello, World! 🎄
Зачем тогда было задавать вопрос?
Чтоб понять в чем приемущество table insert, может я не знаю что-то о нем и поэтому мои доказательства верны не во всех ситуациях
Snusmumriken
Вот так я конечно тоже делаю, когда имя таблицы в которую вставляем — слишком длинное и его лень печатать дважды ))0
А table.remove просто мало чем можно заменить.
ㅤ
ㅤ
И если ты захочешь вставить в произвольное место, тебе придётся сдвигать всё в цикле на Lua, что вряд ли будет быстрее.
Igor
Hello, World! 🎄
Snusmumriken
Ну да, да, пара строчек экономии.
Hello, World! 🎄
ㅤ
ㅤ
А тебе на Lua придётся писать, если захочешь вручную это сделать.
Hello, World! 🎄
Snusmumriken
Хммм, у меня есть filter для массового удаления элементов с минимумом сдвигов, осталось накатать merge в произвольное место ))
ㅤ
Это понятно
Зачем тогда спрашивать про "в чём преимущество"?