Dennis_Chikin 3 658 Опубликовано 4 Января 2015 Поделиться Опубликовано 4 Января 2015 (изменено) С чего начинать и где взять. Установка Lua:http://www.amk-team.ru/forum/index.php?showtopic=11584&p=629106 Руководство «Программирование на языке Lua», третье издание:http://www.amk-team.ru/forum/index.php?showtopic=11584&p=905308 Изменено 2 Марта 2015 пользователем Kirgudu Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Vano_Santuri 33 Опубликовано 14 Июля 2012 Поделиться Опубликовано 14 Июля 2012 Ни у кого не осталось таймеров xStream & malandrinus и расширенного хранилища? Можно в личку? А пост потрите... Что-то кончается, что-то начинается... Ссылка на комментарий
Viнt@rь 50 Опубликовано 30 Июля 2012 Поделиться Опубликовано 30 Июля 2012 Vano_Santuri ВОТ! все что осталось из таймеров-хранилищ от xStream, все остальные паки/скрипты на хостингах были удалены, в том числе и наработки malandrinus GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
Vano_Santuri 33 Опубликовано 14 Августа 2012 Поделиться Опубликовано 14 Августа 2012 Viнt@rь, спасибо. Если кто знает. Есть ли штатные функции кодирования значений? Нужно закодировать не код, а определенное значение. На подобие методов base64/base48 в php. local text="Мод делали тут" local text_code=code(text) -- кодированное значение типа "if3o8gl5w3hj5og" local text_decod =decode("text_code") ну и соответственно text_decod = text. Если такого встроенного алгоритма не имеется. Может кто-то баловался для себя с методами шифрования (простейшие от дураков и школоты) и может поделиться на безвозмездной основе? Что-то кончается, что-то начинается... Ссылка на комментарий
Artos 99 Опубликовано 14 Августа 2012 Поделиться Опубликовано 14 Августа 2012 Vano_Santuri, штатных "шифровальщиков" в Lua не предусмотрено ... Да и стОит ли заморачиваться, тратить времяя и воззвращаться к временам 5-ти летней давности, когда подобное пытались применить и в АМК-моде и др. ? Всегда найдется "не школьник" и отдаст "школоте" на растерзание любые подобные "закодированные" коды ... Да и почему игроку не давать возможности "поиздеваться" над самим собою, внося не или иные (даже глупые) правки? Ну а если приспичило - смотри потребное в стареньких версиях АМК-мода ... даже в немалом кол-ве нынешних модов остался амк-рудимент от выхолощенной amk.decode©. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Nazgool 250 Опубликовано 17 Августа 2012 Поделиться Опубликовано 17 Августа 2012 (изменено) Vano_Santuri Щтатный шифровальщик таки присутствует. Например : s = "This is string" -- Запаковка a = {string.byte(s,1,#s)} -- Распаковка print(string.char(unpack(a))) Конечно это не панацея, но это, как я у же сказал, это есть в стандартных методах. Но ничто не мешает написать свой код. Цитата из PIL string.dump (function) Возвращает строку, содержащую двоичное представление данной функции, так, что если после этого вызвать функцию loadstring указав ей в качестве параметра эту строку, то мы получим копию функции. function должна быть Lua функцией без внешних локальных переменных (upvalues). В этой функции и можно задать свой код шифровки/дешифровки, возвращающий результат. Изменено 17 Августа 2012 пользователем Gun12 Ссылка на комментарий
Vano_Santuri 33 Опубликовано 19 Августа 2012 Поделиться Опубликовано 19 Августа 2012 Gun12, Спасибо. А какой алгоритм используется при этом сжатии? Что-то кончается, что-то начинается... Ссылка на комментарий
Nazgool 250 Опубликовано 7 Сентября 2012 Поделиться Опубликовано 7 Сентября 2012 Vano_Santuri Да какой там алгоритм? Символы переводятся в их же числовые коды в текущей системе (например если это Windows)), а затем обратно. Другое дело что ты можешь создать свой алгоритм кодирования в функции, и сохранять бинарник этой функции...ну я уже писал. Ссылка на комментарий
ColR_iT 171 Опубликовано 9 Сентября 2012 Поделиться Опубликовано 9 Сентября 2012 Накопилось много вопросов по Lua в целом, буду задавать по порядку... Как выделяется память для таблиц? Подозреваю, что на каждый элемент таблицы, плюс если это хеш-таблица, то ещё и на ключи. Так ли это? Ссылка на комментарий
Artos 99 Опубликовано 9 Сентября 2012 Поделиться Опубликовано 9 Сентября 2012 ColR_iT, или ты некорректно сформулировал вопрос или ... полез в дебри исходников Lua, а не в общие вопросы программирования на этом языке. И 'таблицы' по структуре различны, а значит и 'выделение памяти' для них, и 'ключ' - собственно зачастую является элементом таблицы и конечно же и под него расходуются ресурсы/память... Или переформулируй вопрос или переходи к следующим ... тогда может будет понятна суть первого. :-) "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
ColR_iT 171 Опубликовано 9 Сентября 2012 Поделиться Опубликовано 9 Сентября 2012 Боюсь, что последующие вопросы не особо связаны какой-либо идеей, разве что они относятся к Lua. А вопрос вроде бы достаточно адекватен: как выделяется память под таблицы? Например для строки - это равно количество символов в строке плюс один байт. Ссылка на комментарий
Malandrinus 615 Опубликовано 10 Сентября 2012 Автор Поделиться Опубликовано 10 Сентября 2012 ColR_iT, как выделяется память под таблицы? Это зависит от того, какая часть таблицы используется. Если массив (т.е. непрерывные ключи от единицы), то в хипе выделяется память под линейный массив элементов и запоминается его размер. Если набор ключей произвольный, то естественно в том же хипе выделяется память под массив пар ключ-значение и тоже запоминается его размер. Одновременно могут присутствовать обе части. Например для строки - это равно количество символов в строке плюс один байт. Это не так. Строки в Lua не содержат символа-терминатора, а вместо этого запоминается их длина. Строки даже могут содержать символ с нулевым кодом. 2 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
*Shoker* 322 Опубликовано 11 Сентября 2012 Поделиться Опубликовано 11 Сентября 2012 (изменено) Не совсем уверен что вопрос по адресу, но может кто нибудь объяснить как правильно производить побитовую арифметику? То есть все эти bit_or\bit_and и прочие. (В сталкере по крайнем мере) Допустим есть функция из сталкера: file_list_open_ex("$game_saves$",bit_or(FS.FS_ListFiles,FS.FS_RootOnly),"*.sav") Второй параметр это флажки: C++ class FS { const FS_ClampExt = 4; const FS_ListFiles = 1; const FS_ListFolders = 2; const FS_RootOnly = 8; ... } И допустим я хочу применить 3 флажка: FS_RootOnly, FS_ListFiles, FS_ClampExt Каким образом я могу это сделать? Как мне их... расчитать, понять как скомбинировать... Вот если что список функций для работы с битами в сталкере: bit_and, bit_not, bit_or, bit_xor Ну и заодно есть ли аналоги этих функций в чистом луа? Зарание спасибо за любую помощь. Изменено 11 Сентября 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 11 Сентября 2012 Поделиться Опубликовано 11 Сентября 2012 (изменено) *Shoker*, аналогов функций работы с битами в чистом Lua нет, поэтому то и портированы в игру указанные тобою функции. Собственно названия функций сами подсказывают их функционал: 'or' - ИЛИ , 'and' = И и т.д. В lua_help или в справочнике можно уточнить необходимые аргументы (тип и кол-во) для использования функций. Учитывая, что в твоей задумке фигурируют три параметра, а функции принимают только по два или даже один (bit_not), то тебе просто придется использовать промежуточные резутаты, например: local my_flag = bit_or(FS.FS_ListFiles,FS.FS_RootOnly) --/ => 9 - промежуточный результат my_flag = bit_or(my_flag,FS_ClampExt) --/ => 13 - конечный ну и далее по твоему контексту: file_list_open_ex("$game_saves$", my_flag, "*.sav") Можно еще проще, учитывая то, что константы класса FS не изменны - сложить в уме все потребные константы (1+8+4 = 13) и написать: file_list_open_ex("$game_saves$", 13, "*.sav") ... но это уже не "по-программистски" Изменено 11 Сентября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
ColR_iT 171 Опубликовано 11 Сентября 2012 Поделиться Опубликовано 11 Сентября 2012 (изменено) В целом разобрался, спасибо. Ещё вопрос: есть ли принципиальная разница между использованием tbl[index] и tbl.index, возможно в скорости работы или ещё какие-нибудь нюансы? Изменено 11 Сентября 2012 пользователем ColR_iT Ссылка на комментарий
Desertir 202 Опубликовано 11 Сентября 2012 Поделиться Опубликовано 11 Сентября 2012 Совершенно разные записи. В первом случае index - переменная, а во втором это ключ-строка, т.е. константа. Возможно ты имел ввиду tbl["index"] и tbl.index Представление в виде a.name считается тождественным представлению a["name"]. Тут на счет скорости я ничего не могу сказать, разве что она очень мала в обоих случаях. Запись в квадратных скобках хороша при составном ключе, а запись через точку - если необходимо передать значение при известном ключе, например как чтение нет пакета АМК вариантом (в данном предложении идет речь о строковых ключах). 1 1 ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Artos 99 Опубликовано 11 Сентября 2012 Поделиться Опубликовано 11 Сентября 2012 (изменено) Desertir, просьба, выбирай топики "по себе" и не засоряй подобные топики бессмыслицей. Тебе видно не ведомо до сих пор и лень почитать этот же топик на тему, что ключами таблиц могут быть не только строки, но и функции ... ColR_iT, принципиальной разницы нет, как и в скорости. Не забываем, что Lua все одно читает (парсит) построчно код и транслирует его в соответсвии с заложенными в него правилами - в итоге оба варианта идентичны. Ну а нюансы - они всегда найдутся ... ;-) например, если в качестве index выступает аналогичный из другой таблицы, то при неудачном написании может получаться типа: tbl[tbl2[index2]] и при парсинге такой записи парсер вылетает по ошибке из-за наличия ']]' , что является одним из пары оператора комментирования. Поставив пробел ( tbl[ tbl2[index2] ] ) - "нюанс" исчезает. Изменено 11 Сентября 2012 пользователем Artos 1 "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Nazgool 250 Опубликовано 11 Сентября 2012 Поделиться Опубликовано 11 Сентября 2012 парсер вылетает по ошибке из-за наличия ']]' , что является одним из пары оператора комментированияЭто в Сталкере так? Т.е вылетает? Ведь в обычном lua пока не определён первый оператор "[[" ну или "--[[', то читает правильно. Ну или покажи пример с вылетом. Ссылка на комментарий
Artos 99 Опубликовано 11 Сентября 2012 Поделиться Опубликовано 11 Сентября 2012 (изменено) Gun12, да, это именно в контексте со СТАЛКЕРом, и именно нюанс, а не правило. 1. Не забываем, что в СТАЛКЕРЕ сдвоенные квадратные скобки '[[' - не только оператор группового комментирования, а и некий оператор, указыващий на обработку строчного значения: [[misc\script_sound]].."ltx" == "misc\\script_sound.ltx" 2. Не смог сейчас воспроизвести ошибку, но точно помню, что в некая комбинация парных скобок мне попортила кровь и пришлось по всем кодам мода пробежаться и проставить пробелы в стремных местах ... Сейчас смотрел на 1.0006, может это проблема на иной версии патча... Вполне возможно, что мой нюанс проявился когда комментировал групповым оператором комментирования строки с вложенными табличными указателями индексов ... Суть в словах: "Ну а нюансы - они всегда найдутся" ;-) Изменено 12 Сентября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
sapsan 336 Опубликовано 12 Сентября 2012 Поделиться Опубликовано 12 Сентября 2012 Ну а нюансы - они всегда найдутся ... ;-) например, если в качестве index выступает аналогичный из другой таблицы, то при неудачном написании может получаться типа: tbl[tbl2[index2]] и при парсинге такой записи парсер вылетает по ошибке из-за наличия ']]' , что является одним из пары оператора комментирования. Поставив пробел ( tbl[ tbl2[index2] ] ) - "нюанс" исчезает. Баг не работает. Или его доработать, или удалить и не пугать людей. 1. Не забываем, что в СТАЛКЕРЕ сдвоенные квадратные скобки '[[' - не только оператор группового комментирования, а и некий оператор, указыващий на обработку строчного значения: [[misc\script_sound]].."ltx" == "misc\\script_sound.ltx" 2. Не смог сейчас воспроизвести ошибку, но точно помню, что в некая комбинация парных скобок мне попортила кровь и пришлось по всем кодам мода пробежаться и проставить пробелы в стремных местах ... Сейчас смотрел на 1.0006, может это проблема на иной версии патча... Вполне возможно, что мой нюанс проявился когда комментировал групповым оператором комментирования строки с вложенными табличными указателями индексов ... 1. Это касается всего луа, а не персонально сталкера. Двойные квадратные скобки прежде всего работают как "длинные скобки" разрешающие более свободно форматировать строку, а потом уже используемые для блочного комментирования. 2. На ум приходит только "перехват" закрывающимися парными скобками другого блока из таких же парных скобок: --[[ local a = b[c[d]] ]] который должен быть исправлен на такое: --[=[ local a = b[c[d]] ]=] и так далее: --[==[ local d="e" --[=[ local a = b[c[d]] ]=] ]==] 1 Ссылка на комментарий
Desertir 202 Опубликовано 12 Сентября 2012 Поделиться Опубликовано 12 Сентября 2012 Artos, Твое "прошение" не могу удовлетворить, форум есть форум, какой бы тематикой он не обладал, так что я продолжу "засорять" тему "бессмыслицей". И абсолютно не аргументировано выражение "Тебе видно не ведомо до сих пор и лень почитать этот же топик на тему, что ключами таблиц могут быть не только строки, но и функции ..." Во-первых, я это знаю. Во-вторых, при чем здесь функции вообще? Если ты снова решил "пояснить", что ключом может быть что угодно (кроме nil), умоляю, не стОит. Сложилось такое чувство, что ты либо чего то не заметил, либо вообще не вдавался в суть вопроса\моего ответа. По порядку. Вызов tbl["index"] идентичен tbl.index - факт, при чем как в первом так и во втором случае получение значения из таблицы идет по строковому (подразумевается, что тип ключа - string) ключу "index" - тоже факт. А вот tbl[index] им уже не идентичен, потому что index не обязательно строка, а переменная, в качестве которой может быть и строка, и число, и черт знает что что взбредет программисту в голову. Единственный случай, когда вызовы действительно будут идентичны, это при index = "index". А при index = nil вообще будет вылет, по крайней мере в сталкере. А теперь почему "константа" и "составной ключ". При записи через точку, мы никак не сможем переделать ключ: добавить суффикс\префикс. Как будет tbl.index так и останется, нельзя написать tbl.in..dex. При записи в квадратных скобках можно этот ключ "собрать"\"составить" из строк tbl["in".."dex"] и т.п. Так каждый тип записи используется в разных ситуациях, один пример я уже приводил. PS: про уровни строк не слышал? Для комментирование использовать --[=[комментарий]=] да и все... local tbl = {["index"] = 1, index2 = 2, [3] = 3}local index = 3local a = tbl["index"] -- a = 1local b = tbl["index2"] -- b = 2local c = tbl.index -- c = 1local d = tbl.index2 -- d = 2local e = tbl[index] -- e = 3print(a,b,c,d,e) На некоторое уже ответили, пока я писал. 1 ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти