Romz 142 Опубликовано 9 Октября 2015 Поделиться Опубликовано 9 Октября 2015 (изменено) По результатам прикручивания se_stor к ЗП, получился комплект скриптов и инструкций se_stor от 09.09.2013, lua_helper и lua_extension от 29.09.2013, для чистой ЗП, с учётом минимального вмешательства в игру (т.е. без изменения методов сохранения данных в модулях, кроме bind_actor) Скорее всего, на ЧН тоже подойдёт, с минимальными изменениями. Стоит ли выкладывать, и если да, то куда лучше? Изменено 9 Октября 2015 пользователем Romz 1 Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
abramcumner 1 157 Опубликовано 9 Октября 2015 Поделиться Опубликовано 9 Октября 2015 @Romz, в "Сборочный цех" по идее. 2 Ссылка на комментарий
Romz 142 Опубликовано 9 Октября 2015 Поделиться Опубликовано 9 Октября 2015 Возник вопрос. Коль скоро sr_psy_antenna и xr_statistic у меня схраняются/загружаются через чанки, может их тоже стоит убрать из стандартного actor_binder:save/load? Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
Labus 0 Опубликовано 10 Октября 2015 Поделиться Опубликовано 10 Октября 2015 Расшифруйте пожалуйста вот это: self.object:name() Ссылка на комментарий
hi_flyer 75 Опубликовано 10 Октября 2015 Поделиться Опубликовано 10 Октября 2015 Подскажите, спавню инвентарный итем. Допустим alife():create("wpn_bm16", db.actor:position():add(db.actor:direction():mul(4)), db.actor:level_vertex_id(), db.actor:game_vertex_id()). Каким образом ему можно установить его состояние (condition) ? Ссылка на комментарий
Карлан 1 049 Опубликовано 10 Октября 2015 Поделиться Опубликовано 10 Октября 2015 @hi_flyer, у меня используется такой код: local bobj = alife():create(section, npc_pos, npc_lv, npc_gv, npc_id) level.client_spawn_manager():add(bobj.id, 0, function(id,obj) obj:set_condition((math.random(visual[2],visual[3]))/100) end) 1 Ссылка на комментарий
Kirgudu 1 217 Опубликовано 11 Октября 2015 Поделиться Опубликовано 11 Октября 2015 (изменено) Romz, конечно. Сохранять и там и там избыточно. Labus, получить имя объекта. Карлан, согласен. (пишу с телефона, заметки и проч. недоступны) Изменено 11 Октября 2015 пользователем Kirgudu Инструмент Ссылка на комментарий
Romz 142 Опубликовано 11 Октября 2015 Поделиться Опубликовано 11 Октября 2015 @Kirgudu, Понял, архив поправлю и перезалью тогда. Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
Romz 142 Опубликовано 13 Октября 2015 Поделиться Опубликовано 13 Октября 2015 (изменено) Блин, туплю опять... local levels_list = {} ... ... local new_level_name = string.lower(level.name()) levels_list = GetVar("levelname") if table.find(levels_list, new_level_name) ~= true then start_quick_timer(2*60, ssbs(true)) if levels_list == nil then levels_list = levels_list{new_level_name} else table.insert(levels_list, new_level_name) end DelVar("levelname") SetVar("levelname", levels_list) end Что хочу получить: Взять таблицу из "levelname" - работает Если в ней нет имени текущей локации, то Запустить таймер на 2 игровые минуты - работает Если таблица пустая, создать её и положить в неё,как первый элемент, имя локации - не взлетает Если не пустая, то добавить к имеющимся элементам новый с именем локации - работает Записать в "levelname" новую таблицу - работает Подскажите, а? Изменено 13 Октября 2015 пользователем Romz Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
Desertir 202 Опубликовано 13 Октября 2015 Поделиться Опубликовано 13 Октября 2015 (изменено) @Romz, почему у тебя проверка на пустоту таблицы это сравнением с nil? Пустая таблица это вполне себе живая переменная, nil'ом не является. Далее не вполне внятная для меня конструкция levels_list = levels_list{new_level_name}. Это как вообще? Может levels_list = {new_level_name}? Я не совет даю, полноценной задачи не знаю, но я бы сделал так. Хеш таблица с именами локаций в качестве ключа, а значениями является флаг true|false. Без всяких заморочек с поиском, проверками на пустоту и прочими мною нелюбимыми действиями. Изменено 13 Октября 2015 пользователем Desertir 1 ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Romz 142 Опубликовано 13 Октября 2015 Поделиться Опубликовано 13 Октября 2015 почему у тебя проверка на пустоту таблицы это сравнением с nil? Пустая таблица это вполне себе живая переменная, nil'ом не являетсяПотому что в начале игры "levelname" не существует. (см. конструкцию) Далее не вполне внятная для меня конструкция levels_list = levels_list{new_level_name}. Это как вообще? Можетlevels_list = {new_level_name}? А вот в этом и затык. Щас попробую сделать, как ты написал.Говорю же - туплю... И поиск не даёт ничего... Пол-дня вокруг этого момента кружу... Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
Desertir 202 Опубликовано 13 Октября 2015 Поделиться Опубликовано 13 Октября 2015 Потому что в начале игры "levelname" не существует. (см. конструкцию)Из кода видно только то, что значению levels_list присваивается результат функции GetVar. Что и как она должна возвращать я не знаю. Если переменная может быть nil, тогда несколько вариантов и один из адекватных - передавать в функцию GetVar вторым аргументом дефолтовое значение. К чему я веду, у тебя эта проверка сработает один раз за всю игру, т.к. далее ты не присваиваешь этой переменной значение nil. Значение по умолчанию + проверка именно на количество. 1 ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Romz 142 Опубликовано 13 Октября 2015 Поделиться Опубликовано 13 Октября 2015 Из кода видно только то, что значению levels_list присваивается результат функции GetVar. Что и как она должна возвращать я не знаю.Ну я не стал весь скрипт копипастить, только проблемный фрагмент. А то, что она может быть nil, вроде и так понятно. Если переменная может быть nil, тогда несколько вариантов и один из адекватных - передавать в функцию GetVar вторым аргументом дефолтовое значениеНе всегда, т.к. игра может начаться с другой локи. у тебя эта проверка сработает один раз за всю игру, Само собой. Но имеем зато универсальность скрипта.В любом случае, твой совет про Может levels_list = {new_level_name}?Помог, спасибо! Без всяких заморочек с поиском, проверками на пустоту и прочими мною нелюбимыми действиями.Задачу я сформулировал тут. Самое простое решение - сохранять имена локаций в таблицу при первом их посещении после выброса. А в выброс - табличку обнулять. Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
Serge! 127 Опубликовано 14 Октября 2015 Поделиться Опубликовано 14 Октября 2015 Desertir сказал(а)почему у тебя проверка на пустоту таблицы это сравнением с nil? Пустая таблица это вполне себе живая переменная, nil'ом не являетсяПотому что в начале игры "levelname" не существует. (см. конструкцию) Во избежании всяких побочных моментов я обычно использую такую конструкцию local isBool = function(var) return var ~= nil and var ~= 0 and var ~= false and var ~= '' and var ~= {} end Ссылка на комментарий
Struck 61 Опубликовано 15 Октября 2015 Поделиться Опубликовано 15 Октября 2015 @Serge!, ты матчасть по луа в принципе открывал? 1 Ссылка на комментарий
Desertir 202 Опубликовано 15 Октября 2015 Поделиться Опубликовано 15 Октября 2015 @Serge!, какие побочные моменты может вызывать функция type(value)? ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Pir@t@s 36 Опубликовано 15 Октября 2015 Поделиться Опубликовано 15 Октября 2015 Прошу помощи. Как создать укрытия от выброса на новых локациях. Смотрел как это сделано на примере других модов , но так ничего не понял. Подскажите где найти данный материал. Прошу прошения забыл указать платформу SoC 1.0004 Ссылка на комментарий
Serge! 127 Опубликовано 15 Октября 2015 Поделиться Опубликовано 15 Октября 2015 какие побочные моменты может вызывать функция type(value)? Самые непредсказуемые, если в ненужное время, в ненужном месте вернет, например, тип "userdata". С другими я не сталкивался, если Вы такие знаете, то с благодарностью посмотрю и запомню. Ссылка на комментарий
Desertir 202 Опубликовано 15 Октября 2015 Поделиться Опубликовано 15 Октября 2015 @Serge!, а как ты думаешь, что вернет твоя функция isBool если в качестве var будет объект с типом userdata? По названию эта функция должна проверять, что var есть булево значение, тем не менее в ней есть проверка var ~= false и нет проверки на ту же userdata. Какая то загадочная функция. Почему тебе следующий вариант не нравится? function isBool(value) type(value) == 'boolean' end И действительно, в доки надо бы заглянуть и убедиться, что эта функция (type) возвращает конечное число строковых значений. ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Карлан 1 049 Опубликовано 15 Октября 2015 Поделиться Опубликовано 15 Октября 2015 @Serge!, тоже имело место быть, где инкапсуляция сыграла злую шутку (оболочка была на строку где использовался gsub с мощным патерном, как итог gsub не брал строку и происходил вылет), в явном виде все было в порядке. Но твой вариант все равно не катит (он противоречит здравому смыслу), проблемные варианты скорее исключения чем правила, и там проще проверять в явном виде. Дезертир тебе верно указал, что ~= false тут как-бы ага. возвращает конечное число строковых значений Расшифруй. если в качестве var будет объект с типом userdata В качестве var еще может быть функция и нить, на что функция даст true, хотя на самом деле false. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти