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 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
dsh 3 824 Опубликовано 24 Января 2017 Поделиться Опубликовано 24 Января 2017 @Dennis_Chikin, точно такое же результат, как и @Kirgudu, я получаю на движке из OGSE. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Карлан 1 049 Опубликовано 24 Января 2017 Поделиться Опубликовано 24 Января 2017 Помнится, когда-то давно была рубка по поводу string.*( s, ... ) vs. s:*( ... ) Сегодня внезапно обнаружил, что for ss in s:*() пытается скорее получить что-то из s, чем из s:*() Так @Nazgool же про это достаточно подробно изложил, только вот я не помню, тут на форуме, или мне в скайпе. Одно другому не равно в определенных случаях, и это понятно. Дело не в сталкерском луа, а в синтаксисе, вполне обычная ситуация и для оригинального луа, если я, конечно, верно понял о чем ты. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 24 Января 2017 Поделиться Опубликовано 24 Января 2017 Уточняю ситуацию: local s = npc:in_restrictions() for ss in string.gmatch( s, "([^%s,]+)" ) do log( "info", "motivator_binder(%s):death_callback, single: %s", self.npc_name, ss ) end- работает.for ss in s:gmatch( "([^%s,]+)" ) do - вылет с невнятной руганью. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 27 Января 2017 Поделиться Опубликовано 27 Января 2017 (изменено) v:normalize() и v:set_length( 1 ) - это таки одно и тоже, или таки нет ? Что-то про вектора вообще как-то во всех доках стыдливо умалчивают... И еще... Помнится, обсуждалось, но я так и не понял: 4294967296 - это как ? int64 ? Изменено 27 Января 2017 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
abramcumner 1 146 Опубликовано 27 Января 2017 Поделиться Опубликовано 27 Января 2017 Помнится, обсуждалось, но я так и не понял: 4294967296 - это как ? int64 ?float. Как раз уже пошла ошибка в младших разрядах. Ссылка на комментарий
Zander_driver 10 333 Опубликовано 5 Февраля 2017 Поделиться Опубликовано 5 Февраля 2017 v:normalize() и v:set_length( 1 ) - это таки одно и тоже, или таки нет ? По смыслу должно быть то же. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 18 Марта 2017 Поделиться Опубликовано 18 Марта 2017 Добрый день!Можно ли силами Lua подключиться к процессу и в определённый адрес записать значение? Ссылка на комментарий
Graff46 598 Опубликовано 22 Марта 2017 Поделиться Опубликовано 22 Марта 2017 Подскажите что это делает? prefetch("_G") Ссылка на комментарий
Nazgool 250 Опубликовано 28 Марта 2017 Поделиться Опубликовано 28 Марта 2017 (изменено) Это аналог require(module_name) из академического.. lua. Идет подгрузка модуля(файла) с именем module_name. Изменено 28 Марта 2017 пользователем Nazgool Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 11 Июня 2017 Поделиться Опубликовано 11 Июня 2017 (изменено) А ни кто, случайно, не в курсе: нет ли у ЛУА ТЧ (возможно, какой-то одной из версий движка) особенностей в конструкции for k, v in pairs() do ... ? В частности, эквиалентна ли она вариантам for k, _ in pairs() do ... и for k in pairs() do, если v не нужно совсем ? В смысле, во всех ли версиях поведение одинаково ? Изменено 11 Июня 2017 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Nazgool 250 Опубликовано 20 Июня 2017 Поделиться Опубликовано 20 Июня 2017 Доводилось использовать несколько версий lua ТЧ а также стандартные 5.1 - 5.3 Различий не замечал. А записи абсолютно эквивалентны."k" и "v" (да как угодно их называй) - это локальные переменные внутри цикла. Функция "pairs (t)" в любой версии (по крайней мере использованных мною) возвращает три значения - функцию next, таблицу t и nil. Т.е. for k, v in pairs(t) do можно переписать как: for k, v in next,t,nil do И теперь видно, что мы имеем дело с функцией "next" Т.е. твой вопрос переадресовывается от функции "pairs" к функции "next" Впрочем и за next-ом различных версий я тоже ничего криминального не замечал, т.е. она как возвращала два значения, так и возвращает. Те самые "k" и "v" . А как ты их будешь использовать - это сугубо твоё дело. Хоть "k" и "_" , хоть "_" и "v" , хоть только "k". Ссылка на комментарий
Nazgool 250 Опубликовано 14 Августа 2017 Поделиться Опубликовано 14 Августа 2017 (изменено) Dennis_Chikin Я хоть и ответил, но до чертиков в интересно, а что же такое случилось с lua, что в загалi возник такой вопрос? Это к чему? Ты (Dennis_Chikin) такой человек, что (все уже привыкли, что знаешь много) вроде такие вопросы от тебя слышать как-то... необычно что-ли? Ну как-то так выходит. Изменено 14 Августа 2017 пользователем Nazgool Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 15 Августа 2017 Поделиться Опубликовано 15 Августа 2017 Ну как - нарвался на странное, вот и спрашиваю: мало ли, кто-то где-то такое же видел. Стандарты - стандартами, реализации могут быть разными, и очень даже нестандартными. Причем даже исходники не спасут, поскольку черт его знает, из чего конкретный бинарь собирали. 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Graff46 598 Опубликовано 21 Августа 2017 Поделиться Опубликовано 21 Августа 2017 Вопрос по luabind: class (my_new_class) (parent_class) function my_new_class:_init () ... end Можно ли обращаясь к my_new_class получить его предка, т. е. parent_class ? Ссылка на комментарий
dsh 3 824 Опубликовано 1 Декабря 2017 Поделиться Опубликовано 1 Декабря 2017 Даже не знаю, в какую тему правильнее. Наверное сюда, т.к. это наверное к lua больше относиться. Как объяснить вот такое поведение? db.actor_test = nil _G.actor_test = "shit" log3( "dsh: actor_test = %s", tostring( db.actor_test ) ) В лог выводит "shit". dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Desertir 202 Опубликовано 2 Декабря 2017 Поделиться Опубликовано 2 Декабря 2017 @dsh а что такое db? У меня есть два предположения. Первое `db == _G` и второе, что у db есть метатаблица с __index, которая возвращает значение из _G. Ну и есть вариант, что я не угадал (= ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
dsh 3 824 Опубликовано 2 Декабря 2017 Поделиться Опубликовано 2 Декабря 2017 @Desertir db - это db.script. Насчёт метатаблицы, я никакой метатаблицы не назначал. Да и это поведение не только с db.script, а с любым скриптом. Например, вот такой вариант this.replace_params тоже пойдёт в _G, если replace_params не будет определен. И вот я думаю, как бы мне от такого поведения избавиться, и при этом не поломать глобальные переменные. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
AndreySol 215 Опубликовано 2 Декабря 2017 Поделиться Опубликовано 2 Декабря 2017 6 часов назад, dsh сказал: db.actor_test = nil ... В лог выводит "shit". Видимо такая особенность луа - неинициализированная глобальная переменная подменяется значением одноименной из _G. Если сделать так: db.actor_test = "actor_test" _G.actor_test = "shit" то у меня выводит "actor_test". Ссылка на комментарий
dsh 3 824 Опубликовано 2 Декабря 2017 Поделиться Опубликовано 2 Декабря 2017 Поиск показывает, что проблема эта в lua давно известна. @Desertir угадал верно, это из-за неявной метатаблицы, которую в моем случае делает module() с package.seeall. Вот что пишут вот тут, к примеру: Quote package.seeall gives the module a metatable with an __index that points to the global table, so the module can now use global variables. The problem with this is that the user of the module can now see global variables through the module И похоже, простых вариантов этого избежать - нет. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Nazgool 250 Опубликовано 6 Декабря 2017 Поделиться Опубликовано 6 Декабря 2017 (изменено) dsh Всё просто кажется сложным. На самом деле обычно не хватает времени разобраться. А дела обстоят так. Действительно, у таблицы 'db' существует метаблица, которая посредством метаметода '__index' ссылается на глобальную таблицу '_G'. Поэтому совершенно естественно, что при запросе несуществующего поля таблицы 'db', поиск поля с таким именем происходит в таблице, на которую указывает '__index'. Т.е. в таблице '_G' И это не прихоть игры, таковы законы Lua. Любой модуль (module) при указании 'package.seeall' будет искать "недостающие" поля в таблице '_G'. И избавиться от такого поведения (как вы говорите) можно совершенно стандартными способами Lua. Для это существую стандартные функции Lua - rawget и rawset. Т.е. давайте перепишем Ваш пример так: rawset(db, 'actor_test',nil) _G.actor_test = "shit" И теперь напечатайте: log3( "dsh: actor_test = %s", tostring( rawget(db.actor_test)) Изменено 6 Декабря 2017 пользователем Nazgool Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти