Romz 142 Опубликовано 5 Октября 2015 Поделиться Опубликовано 5 Октября 2015 @Charsi, Ха, вона как... Не знал... Для сохранения "а был ли на этой локе выброс?" - просто записываю через запятую все локи на которых побывал актор, в отдельное поле того же se_stor. а при собственно выбросе - очищаю этот список.Остроумно! А я через флаги пытаюсь... Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
Kirgudu 1 204 Опубликовано 6 Октября 2015 Поделиться Опубликовано 6 Октября 2015 local clstp = sobj:CLASS_TYPE() Попробуй так: local clstp = sobj and type(sobj.CLASS_TYPE) == 'function' and sobj:CLASS_TYPE() На тот случай, если для данного конкретного объекта не сработало «if SOBJ then». Инструмент Ссылка на комментарий
Struck 61 Опубликовано 6 Октября 2015 Поделиться Опубликовано 6 Октября 2015 (изменено) ощущение не-связанности рук приятно. Плавали, после того как надоело ждать по 10 минут загрузки игры кинули якорь. что я делаю не так? Все не так, код совершенно некорректный, надо использовать метатаблицы. Объект и пространство имен это немного разные понятия , к тому же я совершенно не уверен о возможности добавления методов к серверному объекту (пробуй получать метатаблицу того-же актора и что-нибудь добавить/переопределить). Тут ты, очевидно, добавляешь метод объекту, а не полю, чего ты еще ждал от такого кода? Изменено 6 Октября 2015 пользователем Struck Ссылка на комментарий
Romz 142 Опубликовано 6 Октября 2015 Поделиться Опубликовано 6 Октября 2015 (изменено) По se_stor вопрос. Вроде прописал везде, как нужно. Но при начале НИ имею вылет ! [SCRIPT ERROR]: c:\gam\s-cop\gamedata\scripts\_g.script:1082: attempt to call field 'exformat' (a nil value) FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : ..\xrServerEntities\script_engine.cpp [error]Line : 193 [error]Description : <no expression> [error]Arguments : LUA error: c:\gam\s-cop\gamedata\scripts\_g.script:1082: attempt to call field 'exformat' (a nil value) А строка 1082 у меня получается в _g.script вот здесь --/------------------------------------------------------------------ --/ print-log (вывод отладочной информации) --/------------------------------------------------------------------ local console --/ функция вывода сообщения в игровую консоль to_log = debug_print or logf or log1 or function(fmt,...) if not console then console = get_console() end console:execute("load ~:"..string.exformat(fmt,...)) --1082 end В lua_extension "exformat" переопределяется. Может, для ЗП не prefetch("lua_extension"), а как-то по-другому? Переподключил по-новой. НИ сработала, но через некоторое время Expression : fatal error Function : CScriptEngine::lua_error File : ..\xrServerEntities\script_engine.cpp Line : 193 Description : <no expression> Arguments : LUA error: c:\gam\s-cop\gamedata\scripts\se_stor.script:118: attempt to call field 'size' (a nil value) Нашёл такую же проблему здесь: http://www.amk-team.ru/forum/index.php?showtopic=6185&p=794361 Но всё, что советовали, у меня уже есть, а вылет всё равно присутствует. ИМХО, prefetch("lua_extension") не срабатывает, как должен... Попробую ещё его в начало _g.script прописать... Не-а, не взлетело... Как эту заразу работать заставить? Всё, сдаюсь. Не могу заставить se_stor работать... Разного рода шаманства тоже не помогают. Попробую обойтись pstor Изменено 6 Октября 2015 пользователем Romz Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
Kirgudu 1 204 Опубликовано 6 Октября 2015 Поделиться Опубликовано 6 Октября 2015 @Romz, проверь каким-нибудь чекером, что lua_extensions.script не имеет ошибок. Маловероятно, но возможно, что он из-за этого не загружается. Кроме того, до и после после prefetch попробуй проверить (например, выводом в лог) тип переопределяемого метода. Если всё в порядке, type(table.size) должно выдать значение 'function'. 1 Инструмент Ссылка на комментарий
Romz 142 Опубликовано 6 Октября 2015 Поделиться Опубликовано 6 Октября 2015 проверь каким-нибудь чекером, что lua_extensions.script не имеет ошибок После внесения изменений в скрипты всегда проверяю папку scripts script Syntax Checker-ом, потому что вполне могу где-то забыть then Он ошибок не выдал по этим скриптам. Кроме того, до и после после prefetch попробуй проверить Щас попробую.Вот бред же... Цепляю lua_helper от того же @Artos-а - всё норм, всё работает. lua_extension подцепился. Следом цепляю se_stor - всё, lua_extension не виден... lua_extension из lua_helper немного новее того, что с se_stor, но именно эти функции и там, и там одинаковые. Все файлы брал в этой теме, и в "Сборочном цехе" @Artos в своё время обещал выложить обновлённый se_stor, но так и не сподобился. Самый новый - от 09.09.2013 lua helper брал по ссылке @Artos-а - версия от 27.09.2013 Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
Kirgudu 1 204 Опубликовано 6 Октября 2015 Поделиться Опубликовано 6 Октября 2015 Он сподобился, но выложил как раз от 09.09, а потом вроде удалил. Даже и не знаю, что посоветовать. Объективных причин скрытию lua_extension я не вижу... в ЧН цепляется без проблем. Попробуй вместо prefetch("lua_extension") использовать if lua_extension then end И да, что показала проверка типа table.size до и после префетча? Инструмент Ссылка на комментарий
Romz 142 Опубликовано 6 Октября 2015 Поделиться Опубликовано 6 Октября 2015 И да, что показала проверка типа table.size до и после префетча? Как и следовало ожидать STRING:nil; ! [ERROR] --- Failed to load script lua_extension STRING:nil; Щас пробую закинуть lua_extension от 09.09.2013 Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
Kirgudu 1 204 Опубликовано 6 Октября 2015 Поделиться Опубликовано 6 Октября 2015 (изменено) Ещё предложение. В lua_extension есть функция fStringExtraFormat, в комплекте se_stor от 09.2013 она идёт в самом начале.В функции в двух местах есть шаблон '%\%[s|d|f]' (строки 65 и 78) и в одном месте шаблон '%\%[d|s|f]' (строка 72). Попробуй убрать в этих шаблонах вертикальную черту. @Charsi говорит, что после такого изменения lua_extension у него в ЗП загрузился (а до того также не был виден). Изменено 6 Октября 2015 пользователем Kirgudu Инструмент Ссылка на комментарий
Romz 142 Опубликовано 6 Октября 2015 Поделиться Опубликовано 6 Октября 2015 (изменено) Щас пробую закинуть lua_extension от 09.09.2013 То же самое. Не хочет цепляться lua_extension @Kirgudu, Не, не взлетает... Кста, с одним lua_helper он он тоже не цепляется, оказывается. Просто сразу ошибку не вызывает. Самое интересное, что сам lua_helper прицепился и функции из него вызываются. Изменено 6 Октября 2015 пользователем Romz Добавлено Kirgudu, 6 Октября 2015 Попробуй то, что я выше написал. Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
Kirgudu 1 204 Опубликовано 6 Октября 2015 Поделиться Опубликовано 6 Октября 2015 (изменено) Тогда как рабочий вариант могу посоветовать взять из lua_extension только используемые функции и вставить их куда-то ещё, да хоть в тот же _g.script. Это exformat, table.size и, возможно, что-то ещё, что вызывается в se_stor, а также вызывается уже из этих функций. Конечно, это довольно ёмкая и, вероятно, ненужная исходя из твоих задач работа. Но чисто ради спортивного интереса я бы попробовал и рассказал о результатах здесь - вдруг кому поможет в аналогичной ситуации. Заодно, может быть, при последовательном переносе обнаружится причина, по которой полный модуль не хочет в ЗП грузиться. К сожалению, сам я не смогу этим заняться как минимум неделю, а то и больше. Изменено 6 Октября 2015 пользователем Kirgudu 2 Инструмент Ссылка на комментарий
Romz 142 Опубликовано 6 Октября 2015 Поделиться Опубликовано 6 Октября 2015 Попробуй вместо prefetch("lua_extension") использовать if lua_extension then endТак тоже попробовал, с равно тем же результатом. Тогда как рабочий вариант могу посоветовать взять из lua_extension только используемые функции и вставить их куда-то ещё, да хоть в тот же _g.script. Это exformat, table.size и, возможно, что-то ещё, что вызывается в se_stor, а также вызывается уже из этих функций.Попробую.Собственно, вот виновник всего кипеша local function fStringExtraFormat(fmt,...) --/ локальная функция: перевод аргумента в стринг local val2str = function(val,lua_type) if lua_type == 'table' then if tonumber(val.x) and tonumber(val.y) and tonumber(val.z) then return string.format('tbl{x=%.3f:y=%.3f:z=%.3f}',val.x,val.y,val.z) --/> end local tbl,str,separator = {},'tbl{',"" for key,_ in pairs(val) do table.insert(tbl, key == tonumber(key) and tostring(key) or key) end table.sort(tbl) for _,key in ipairs(tbl) do if (tonumber(key) or 0) > 0 then str = str..separator..tostring(val[tonumber(key)]) else str = str..separator..key.." = "..tostring(val[key]) end separator = ", " end return str..'}' --/> elseif lua_type == 'userdata' then --/#?# а нужно ли привязываться к движку? if type(val.getP) == 'function' then if type(val.x) == 'number' and type(val.y) == 'number' and type(val.z) == 'number' then return string.format('vec(x=%.3f:y=%.3f:z=%.3f)',val.x,val.y,val.z) --/> end return '<vector>' --/> elseif type(val.setHMSms) == 'function' then return 'CTime('..val:dateToString(0).." "..val:timeToString(3)..")" --/> D/M/Y h:m:s:ms end elseif lua_type == 'string' then return val --string.format("%q", val) --/> elseif lua_type == 'boolean' then return val and "true" or "false" --/> elseif lua_type == 'number' then return tostring(val) --/> end return "<"..lua_type..">" --/> end --/ основное тело функции: парсинг исходной строки if type(fmt) == 'string' then if fmt:match('%\%[s|d|f]') then --/ есть патерн(ы)? if next({...}) then --/ есть аргумент(ы)? local arg,val,lua_type,i = {...},nil,nil,nil for i=1,#arg do val = arg[i] --/ значение текущего аргумента lua_type = type(val) --/ тип текущего аргумента if lua_type == 'number' then fmt = fmt:gsub('%\%[d|s|f]',val,1) else fmt = fmt:gsub('%\%s',val2str(val,lua_type),1) end end end fmt = fmt:gsub('%\%[s|d|f]',"<NOT_arg!>") --/ заглушка от отсутствия аргументов end else fmt = val2str(fmt,type(fmt)) end return fmt --/> string --/ с заменой обычных пробелов (sym_space='\032') на печатные ('\160') --return fmt:gsub('%s','\160') --/> string end Я закомментировал в lua_extension эту функцию, после чего lua_extension благополучно подцепился. Давайте вместе разбираться, что не нравится движку ЗП... Я не очень опытен в скриптах но... Функция в функции - это нормально? 1 Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
Kirgudu 1 204 Опубликовано 6 Октября 2015 Поделиться Опубликовано 6 Октября 2015 (изменено) Функция в функции - это нормально? Хоть десяток функций друг в друга вкладывай. Тут дело в другом... надо думать. Пока предложение следующее. Вариант 1. Функция fStringExtraFormat (она же exformat в глобальном пространстве _G) используется только для вывода отладочной информации в модуле хранилища. Закомментируй её целиком, также закомментируй: lua_extension: строки 874-876, 929-931 se_stor: строки 47-49 При добавлении из _g_ADD.script не надо добавлять строки 53-67. Всё должно заработать, но без вывода возможной отладочной информации. Вариант 2. Попробуй вместо комментирования всего и вся поменять в шаблонах этой функции %\% на %% (в четырёх местах). Изменено 6 Октября 2015 пользователем Kirgudu 1 1 Инструмент Ссылка на комментарий
Romz 142 Опубликовано 6 Октября 2015 Поделиться Опубликовано 6 Октября 2015 (изменено) Попробуй вместо комментирования всего и вся поменять в шаблонах этой функции %\% на %% (в четырёх местах). Применил сразу этот вариант. Только заменил %\% на %:%. lua_extension нормально подцепился, отладочные сообщения в лог посыпались. local function fStringExtraFormat(fmt,...) --/ локальная функция: перевод аргумента в стринг local val2str = function(val,lua_type) if lua_type == 'table' then if tonumber(val.x) and tonumber(val.y) and tonumber(val.z) then return string.format('tbl{x=%.3f:y=%.3f:z=%.3f}',val.x,val.y,val.z) --/> end local tbl,str,separator = {},'tbl{',"" for key,_ in pairs(val) do table.insert(tbl, key == tonumber(key) and tostring(key) or key) end table.sort(tbl) for _,key in ipairs(tbl) do if (tonumber(key) or 0) > 0 then str = str..separator..tostring(val[tonumber(key)]) else str = str..separator..key.." = "..tostring(val[key]) end separator = ", " end return str..'}' --/> elseif lua_type == 'userdata' then --/#?# а нужно ли привязываться к движку? if type(val.getP) == 'function' then if type(val.x) == 'number' and type(val.y) == 'number' and type(val.z) == 'number' then return string.format('vec(x=%.3f:y=%.3f:z=%.3f)',val.x,val.y,val.z) --/> end return '<vector>' --/> elseif type(val.setHMSms) == 'function' then return 'CTime('..val:dateToString(0).." "..val:timeToString(3)..")" --/> D/M/Y h:m:s:ms end elseif lua_type == 'string' then return val --string.format("%q", val) --/> elseif lua_type == 'boolean' then return val and "true" or "false" --/> elseif lua_type == 'number' then return tostring(val) --/> end return "<"..lua_type..">" --/> end --/ основное тело функции: парсинг исходной строки if type(fmt) == 'string' then if fmt:match('%:%[s|d|f]') then --/ есть патерн(ы)? if next({...}) then --/ есть аргумент(ы)? local arg,val,lua_type,i = {...},nil,nil,nil for i=1,#arg do val = arg[i] --/ значение текущего аргумента lua_type = type(val) --/ тип текущего аргумента if lua_type == 'number' then fmt = fmt:gsub('%:%[d|s|f]',val,1) else fmt = fmt:gsub('%:%s',val2str(val,lua_type),1) end end end fmt = fmt:gsub('%:%[s|d|f]',"<NOT_arg!>") --/ заглушка от отсутствия аргументов end else fmt = val2str(fmt,type(fmt)) end return fmt --/> string --/ с заменой обычных пробелов (sym_space='\032') на печатные ('\160') --return fmt:gsub('%s','\160') --/> string end se_stor не подключал, но, думаю, теперь всё нормально будет Вариант с %/%, я думаю, тоже бы прокатил. se_stor не подключал, но, думаю, теперь всё нормально будетНифига не угадал Подцепил se_stor. На НИ вылетел с логом * [win32]: free[2011336 K], reserved[87760 K], committed[2095144 K] * [ D3D ]: textures[1098559 K] * [x-ray]: process heap[592287 K], game lua[33214 K], render[103 K] * [x-ray]: economy: strings[27513 K], smem[535318 K] _se_actor: set load marker: 201 _se_actor: LOAD DIF: 1 ! [SCRIPT ERROR]: No such operator defined FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : ..\xrServerEntities\script_engine.cpp [error]Line : 193 [error]Description : <no expression> [error]Arguments : LUA error: No such operator defined stack trace: Ну это уже с утра разбиратся буду. Похоже, что это в bind_stalker косяк... Изменено 6 Октября 2015 пользователем Romz 1 1 Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
Kirgudu 1 204 Опубликовано 7 Октября 2015 Поделиться Опубликовано 7 Октября 2015 (изменено) Только заменил %\% на %:% Вариант с %/%, я думаю, тоже бы прокатил. В корне неверное решение. Лучше б тогда просто закомментировал по первому варианту. Тут надо понимать, что и для чего было сделано. @Artos написал шаблоны вида '%\%[s|d|f]', чтобы работало такое формирование строки, выводимой в лог: exformat("something %s something else %d something else 2]", param1, param2) То есть берётся исходная строка, в которую в подстановочные места, обозначенные %s, %d или %f, добавляются значения дополнительных аргументов. Строго говоря, артосовский шаблон тоже не совсем верен - как справедливо заметил в кулуарной беседе @Charsi, в нём должно быть экранирование процента процентом же, а не escape-символ. Но, как ни странно, в ТЧ и ЧН шаблон Артоса не приводит к «невидимости» модуля и нормально работает. Ты же добавляешь ещё один символ, который приводит к неправильной работе указанного выше вывода в лог. Функция в твоей редакции просто не найдёт %s и др. и выведет исходную строку в лог как есть, без подстановки аргументов. Правильным вариантом шаблона должен быть именно тот, что приведён выше: '%%...' и без вертикальных чёрточек между символами в квадратных скобках. Например, '%%[sdf]' или '%%'. Изменено 7 Октября 2015 пользователем Kirgudu 1 Инструмент Ссылка на комментарий
Romz 142 Опубликовано 7 Октября 2015 Поделиться Опубликовано 7 Октября 2015 Artos написал шаблоны вида '%\%[s|d|f]', чтобы работало такое формирование строки, выводимой в лог: exformat("something %s something else %d something else 2]", param1, param2) То есть берётся исходная строка, в которую в подстановочные места, обозначенные %s, %d или %f, добавляются значения дополнительных аргументов. Ааа... Я посчитал это просто разделителем, между двумя значениями, тем более в других местах встречается вариант %/% и там косая - именно разделитель между значениями. А вертикальная черта - проглотилась нормально. Ок, поправлю. Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
Romz 142 Опубликовано 7 Октября 2015 Поделиться Опубликовано 7 Октября 2015 (изменено) Ну это уже с утра разбиратся буду. Похоже, что это в bind_stalker косяк...Нифига это не онЭтот вылет ловлю, когда пытаюсь закоментить вот этот кусок кода в lua_helper.script local log = function(fmt,...) _G.log(sModule..":"..tostring(fmt),...) end if to_log and type(string.exformat) == 'function' then log = function(fmt,...) to_log(string.exformat(fmt,...)) end end local printf = function(...) log(...) end --< конкретно вот эту строчку Сразу уточню - printf и log у меня и так работают. Поэтому хотел отрубить самопальные логи на основе get_console():execute А вот если не трогать этот момент, то НИ начинается, а затем вылетает с таким логом ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [error]ABORT CALLED: se_stor:save_chunks:=[weathers],file=[level_weathers]~not_exist:<Error!> ATTENTION! Game is interrupted! The information in lines above. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Log file has been saved successfully! ! [SCRIPT ERROR]: c:\gam\s-cop\gamedata\scripts\se_stor.script:113: attempt to call global 'exit' (a nil value) FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : ..\xrServerEntities\script_engine.cpp [error]Line : 193 [error]Description : <no expression> [error]Arguments : LUA error: c:\gam\s-cop\gamedata\scripts\se_stor.script:113: attempt to call global 'exit' (a nil value) Я подозреваю, что это связано с ... 1. Собственно сам модуль se_stor.script: 1.1 Скрипт se_stor.script имеет настройки, позволяющие использовать хранилище в разных версиях игры/модов (SoC|CS|CoP). В данной версии комплекта скрипт полностью настроен на использование с оригинальной версией SoC (ТЧ патчи v1.0004 и выше). ... 4. В скрипте биндера актора (bind_stalker.script/bind_actor.script) требуется внести изменения помеченный в примере знаком #+#. 4.1. В методы 'save' и 'load' биндера необходимо добавить строки вызова соотв. функций (save/load) скрипта хранилища. 4.2. Если не предполанается изменение алгоритма хранения внешних модулей (погода, ...), то требуется организовать внешний доступ к биндеру актора. 4.3. В данном комплекте хранение данных модулями заданий, тайников, пси-зон вынесены в отдельные бинарные последовательности (chunks), что позволяет не вносить изменения в эти модули. Однако необходимо описать в настройках хранилища (в таблице tPkChunks) внешние модули, в которых требуется сохранение данных в чанках (chunks). Посоветовал бы все же сменить алгоритм хранения данных на хранение в виде субтаблиц в общей таблице 'storehouse'. ... Это выдержки из readme_se_stor.txtИсходя из этого, я подозреваю, что игра как раз и пытается грузить что-то из этих самых "чанков" но не находит их, потому что их тупо нет. Так вот, из readme_se_stor.txt совершенно не понятно, как ... сменить алгоритм хранения данных на хранение в виде субтаблиц в общей таблице 'storehouse'. ... Поиском пробежался по сайту - ничего тоже не нашёл...Кроме того, в se_stor присутствует для записи local function save_storehouse() и local function save_chunks() но вот для загрузки имеется только local function read_chunks() Собственно, вопрос к знатокам: как бороться и с этими двумя фигнями? Или, может, есть у кого нормально работающий se_stor под ЗП? Изменено 7 Октября 2015 пользователем Romz Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
Карлан 1 049 Опубликовано 7 Октября 2015 Поделиться Опубликовано 7 Октября 2015 @Romz, если не ошибаюсь, последний se_stor глючный в принципе (проблема то-ли с записью, то-ли с чтением чанков, то-ли и с тем и с тем), надо искать более раннюю версию. У меня где-то комплект этих приблуд валялся, найду - скину. Возможно @Kirgudu поможет с этим раньше меня. 1 Ссылка на комментарий
Kirgudu 1 204 Опубликовано 7 Октября 2015 Поделиться Опубликовано 7 Октября 2015 (изменено) @Карлан, у меня более старая версия se_stor встроена в мод (платформа ЧН), причём с изменениями, так что выковыривать оттуда будет сложно. @Romz, всё намного проще. Если ты глянешь в se_stor таблицу tPkChunks, то увидишь, что в ней для ЗП перечислены модули, которые Артос предлагал сохранять в чанках. В том числе и level_weathers. А этот модуль у тебя либо отсуствует, либо в нём нет метода save - отсюда и принудительный вылет в функции сохранения чанков. Проверь для начала это. Если судить по ЧН, в модуле level_weathers действительно нет публичного метода save. Там надо сначала получить экземпляр класса, у которого уже этот метод будет. Стандартно этот экземпляр класса сохраняется в экземпляре класса актора. Поэтому level_weathers мы из tPkChunks удаляем, вместо этого возвращаем в actor_binder:save() такую строчку: self.weather_manager:save(packet)Также надо вернуть аналогичную строчку в actor_binder:load() Затем надо проверить остальные модули, которые Artos добавил в чанки для ЗП. sr_psy_antenna и treasure_manager имеют публичные методы save и load (повторяю на всякий случай, пишу для ЧН! ЗП нет в наличии, но там по аналогии), их оставляем в чанках. task_manager в ЧН публичных save и load не имеет - его из чанков убираем, возвращая в actor_binder:save() и actor_binder:load() (если в ЗП по-другому, действовать соответственно). bind_actor - тут Artos для ЧН ошибся, этот модуль называется bind_stalker. Возможно, для ЗП это тоже так. Публичные методы save и load в него ты добавляешь согласно инструкции se_stor. Внутри них дёргаются опять же добавленные ext_save и ext_load, а там - пишутся/читаются данные ещё кое-каких внешних модулей. Записываемые/читаемые в ext_save и ext_load модули надо не тупо взять из примера se_stor (который, как мы знаем, сделан для ТЧ), а сверить с оригинальными save и load ЗП. Надеюсь, понятно расписал. Уверен на 99%, если внести все эти поправки, se_stor заработает. И это стало бы хорошим взносом для всех будущих пользователей хранилища в любых частях игры. Возможно, на следующей неделе у меня самого будет время посидеть и соорудить готовые примеры использования модуля для всех платформ, а не только для ТЧ, как это сделано в оригинальном комплекте. Поправка насчёт weather_manager. Его сохранение/загрузку Artos прописал и в таблицу чанков, и в доп. методы ext_save и ext_load. Это, понятное дело, избыточно (разве только в ЗП в этом модуле есть публичные save и load). Поэтому делаем что-то одно - либо оставляем в ext_save/load и убираем из таблицы чанков, либо убираем и из таблицы и из ext_save/load, но возвращаем в save/load. Изменено 7 Октября 2015 пользователем Kirgudu 1 Инструмент Ссылка на комментарий
Romz 142 Опубликовано 7 Октября 2015 Поделиться Опубликовано 7 Октября 2015 (изменено) А как провернуть сие как ... сменить алгоритм хранения данных на хранение в виде субтаблиц в общей таблице 'storehouse'. ... Поиском пробежался по сайту - ничего тоже не нашёл... Или оно только Артосу извесно? Изменено 7 Октября 2015 пользователем Romz Шаман - СисАдмин Всяко-разно: для ЧН Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти