Cyberpunk enjoyer
Насчёт взломов я наслышан, что получали доступ к модулю игры, дампили и делали что хотели, но я честно не знаю как ограничить доступ с луа к некоторым WinApi функциям
Cyberpunk enjoyer
Snusmumriken
В жизни world of warcraft был очень интересный период, когда они предоставляли обычный require для модов, способный подгружать сишку. И вот там были такие знатные боты, которые всей пачкой игроков фармили одно и то же сутками гуляя по маршрутам )
Snusmumriken
Да и возможно ли это в условиях ffi
Отключить ffi для юзеров, предоставить песочницу.
Cyberpunk enjoyer
Только драйвером)
Не думаю что это поможет, ты находишься в процессе и ты имеешь полный доступ к своей же памяти
Igor
The Long Dark
Давненько меня там не было, походу. Не знал, что там мультиплеер появился, да ещё и модифицируемый.
Cyberpunk enjoyer
Отключить ffi для юзеров, предоставить песочницу.
А так функционала очень большого лишаю
Cyberpunk enjoyer
проще никак не бороться
Snusmumriken
Разумеется, что-то должно быть отсечено )
Cyberpunk enjoyer
Драйвер выше
Не совсем понял
Snusmumriken
Ну в общем пока оно не затрагивает толпы юзеров в ммо/сессионке, то может быть и не особо страшно.
Ruslan
Не совсем понял
Драйвер получает события раньше каких-то там жалких процессов
Ruslan
В доступе
Cyberpunk enjoyer
Драйвер получает события раньше каких-то там жалких процессов
Так, а причем здесь события, да и не раньше получает, а система с UM переходит в ринг 0, и там уже исполняет операцию. А насчёт доступа к винапи, модуль же находится в пространстве виртуальной памяти игры
Cyberpunk enjoyer
Ты никак не можешь ограничить себя к своей же памяти
Cyberpunk enjoyer
Ruslan
Или заморочиться и определять факт злоупотребления
Cyberpunk enjoyer
Вот я вам картинку нарисовал, когда вы находитесь в своей же памяти вы не можете никак ограничить себя
Cyberpunk enjoyer
а если лезете в другое приложения с его виртуальной памятью, то да
Cyberpunk enjoyer
вы легко можете с драйвера защитить регион от таких "взломщиков"
Cyberpunk enjoyer
вы легко можете с драйвера защитить регион от таких "взломщиков"
Крестиком это обозначено, извините, я плохо рисую...
Cyberpunk enjoyer
Или заморочиться и определять факт злоупотребления
Да, но когда человек уже получил что ему нужно, его ограничивать нету смысла, поэтому думаю самый лёгкий вариант это просто оставить как есть
Ruslan
Просто можно придумать както хитрый ход который будет отличать досту разраба и доступ левый
Ruslan
Хотя... не...есть же еще доступ под капотом....(служебные вещи)
Ruslan
Короче если сильно захотеть - можно думаю))
Cyberpunk enjoyer
Aydar
Не так удобно в использовании
Зато явно, мало ли какая фигня может с сервера скачаться вместо нужной либы :)
Ruslan
The Long Dark
Чем она лучше того же Rust? Почему игроки в нее играют? Тем более что она изначально сингл. Мультиплеер сделали фанаты? *Я не играл ни в ту ни в ту но раст видел на Ютубе
Cyberpunk enjoyer
Одна про выживание в пустой холодной Канаде
Cyberpunk enjoyer
где -50
Cyberpunk enjoyer
А раст это мультиплеер только
Ruslan
где -50
Понял, могу посоветовать вам, фанатам мороза, игру Cryostasis: Sleep of Reason
Aydar
Понял, могу посоветовать вам, фанатам мороза, игру Cryostasis: Sleep of Reason
Анабиоз, хорошая игра. Относительно старая, сейчас вряд-ли кому-то понравится.
Ruslan
Анабиоз, хорошая игра. Относительно старая, сейчас вряд-ли кому-то понравится.
Не знаю, графика и по сей день хорошо смотрится, за счёт умелого подхода к графике, она хорошо маскирует свою олдовость, имхо Там все так самобытно) мне понравилось но я до конца не прошёл)))) PS:Админы, если это все оффтоп, потрите)
Hello, World! 🎄
Как лучше добавлять элемент в таблицу? 'table.insert(t, 1)' или 't[#t+1] = 1' ?
table.insert Читается проще, синтаксиса меньше. Ну и как бы оно чо, зря существует?
Hello, World! 🎄
Hello, World! 🎄
Если скомпилировать lua код для vm lua, то получается везде одинакового инструкций
Snusmumriken
Ну кароч, точно есть более лучший вариант под названием i = i + 1 t[i] = v Потому что не вычисляет длину.
Hello, World! 🎄
table insert за 451 миллисекунд выполнился (1млн раз)
Snusmumriken
В луажыт?
Hello, World! 🎄
А вариант t[#t+1] за 374 (то есть быстрее)
Hello, World! 🎄
В луажыт?
просто lua
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})) Всё равно что убрать лишний слой вложенности.
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! 🎄
при использовании t[#t+1] мы экономим целый 31 байт
И в чем тогда преимущество table.insert если он компилируется в больший байткод и поэтому выполнение занимает больше времени?
Hello, World! 🎄
Зачем тогда было задавать вопрос?
Чтоб понять в чем приемущество table insert, может я не знаю что-то о нем и поэтому мои доказательства верны не во всех ситуациях
Snusmumriken
Вот так я конечно тоже делаю, когда имя таблицы в которую вставляем — слишком длинное и его лень печатать дважды ))0 А table.remove просто мало чем можно заменить.
И если ты захочешь вставить в произвольное место, тебе придётся сдвигать всё в цикле на Lua, что вряд ли будет быстрее.
Snusmumriken
Ну да, да, пара строчек экономии.
А тебе на Lua придётся писать, если захочешь вручную это сделать.
Snusmumriken
Хммм, у меня есть filter для массового удаления элементов с минимумом сдвигов, осталось накатать merge в произвольное место ))
Это понятно
Зачем тогда спрашивать про "в чём преимущество"?
Hello, World! 🎄
Хммм, у меня есть filter для массового удаления элементов с минимумом сдвигов, осталось накатать merge в произвольное место ))
У меня удаление работает так: array_del = {} прохожусь по массиву и добавляю в array_del индексы элементов для удаления. Далее новый массив, в цикле перебираю старый и добавляю только те элементы, которые отсутствуют в array_del (индексы элементов).