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 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
xStream 86 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 (изменено) Йайа Вот за это и не люблю копипастить - легко что-то недосмотреть. Сенькаю, обновлено и залито. ЗЫ Хочется фидбека по использованию, если кто решит попользовать. И всем спокойной ночи, кто в московском поясе Изменено 7 Января 2012 пользователем xStream Все, кто стоит на моем пути: идите нахрен и там погибните! © Ссылка на комментарий
Viнt@rь 50 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 (изменено) xStream, огромное спасибо за нет пакеты)), вот только на врядли знающие найдут им применение))), а многие даже не разберутся как ними пользоваться) Меня заинтересовало: Так же на подходе универсальное хранилище данных (а-ля доисторический pstor) и (ахахахаха, барабанная дробь)... - моя реализация сохраняемых таймеров с использованием этого самого хранилища. а именно универсальное хранилище - жду)) Изменено 7 Января 2012 пользователем Viнt@rь GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
xStream 86 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 (изменено) Для пользования ими есть специальные функции хелперы ОЧЕНЬ сильно упрощающие жизнь. Когда будет дошлифовано содержимое, то будет и мануал (а пока можно поглядеть readme.txt, там вполне реальные примеры приведены). Как минимум в одном моде уже используется (там люди знающие, поверь) и то радует - мои эксперименты не пропадут даром. Изменено 7 Января 2012 пользователем xStream Все, кто стоит на моем пути: идите нахрен и там погибните! © Ссылка на комментарий
Andrey07071977 18 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 Ну то что не пропадут даром - не сомневайся . Лично для себя вижу много чего интестного, как и для мода, так и просто поучиться. Поэксперементирую, напишу фидбэк подробней. Ссылка на комментарий
KD87 718 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 xStream, возможно, я не совсем понял код, но вроде как в методе read класса "net_alife_item" нет чтения updposition и updquaternion. Они должны читаться в случае, если num_items ~= 0. Если равно нулю, ни updposition, ни updquaternion нет. Что касается skeleton_flags, abramcumner прав, в acdc упрощено, сейчас приведу логику чтения. Ссылка на комментарий
*Shoker* 322 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 (изменено) Вот на pstor очень интересно посмотреть, особенно на запись таблиц. Сам давно уже пишу всё в текстовый файл но это накладывает определенённые ограничения (плюс я не знаю всех тонкостей функций чтения\записи что вывелось в не очень аккуратный код) Интересно будет глянуть на твою реализацию, там тоже будет перевод таблицы в строку как в АМК? Изменено 7 Января 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
xStream 86 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 xStream, возможно, я не совсем понял код, но вроде как в методе read класса "net_alife_item" нет чтения updposition и updquaternion. Они должны читаться в случае, если num_items ~= 0. Если равно нулю, ни updposition, ни updquaternion нет. Что касается skeleton_flags, abramcumner прав, в acdc упрощено, сейчас приведу логику чтения. Блин, я так спать не уйду А это разве не оно? { name = 'ph_position', type = 'f32v3', default = vector():set(0,0,0) }, { name = 'ph_rotation', type = 'q8v', default = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, len = 4*4 }, --quaterinon И if prop.name == "num_items" then updnum_items = ret["upd"..prop.name] if updnum_items==0 then return end info_mask = math.ceil(updnum_items/16) if not (bit_and(info_mask, 2)==0) then skip_props.ph_angular_vel = true end if not (bit_and(info_mask, 4)==0) then skip_props.ph_linear_vel = true end end Вот условное чтение, в зависимости от updnum_items Все, кто стоит на моем пути: идите нахрен и там погибните! © Ссылка на комментарий
Andrey07071977 18 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 (изменено) xStream Вчера наконец нашел время пограть с sandbox/timers, вот небольшой фидбэк: 1. В таймерах строка local self.trigger_time = time_global() + time_seconds * 1000 изменил на (убрал local) self.trigger_time = time_global() + time_seconds * 1000 2. Можно-ли регистрировать функцию калбэка находящююся в классе? Хотел инкапсулировать определенный функционал в классе, но не срабатывает регистрация типа: event("actor_hit"):register(sample_class:on_actor_hit) 3. Заметил интерсную особенность - если вызывать мою песочницу из твоих калбэков, то файл перезагрузит сам себя на лету. Т.О. можно делать изменения не выходя из игры и в protected environment Изменено 7 Января 2012 пользователем Andrey07071977 Ссылка на комментарий
xStream 86 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 Вот на pstor очень интересно посмотреть, особенно на запись таблиц. Сам давно уже пишу всё в текстовый файл но это накладывает определенённые ограничения (плюс я не знаю всех тонкостей функций чтения\записи что вывелось в не очень аккуратный код) Интересно будет глянуть на твою реализацию, там тоже будет перевод таблицы в строку как в АМК? А понять, как пишется очень просто Загляни в xs_helpers, там расширения для table есть: serialize и unserialize Добавлено через 1 мин.: Andrey07071977, таймеры, которые тут выкладывались - фигня, по ним не надо фидбека Все, кто стоит на моем пути: идите нахрен и там погибните! © Ссылка на комментарий
Viнt@rь 50 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 (изменено) xStream, по поводу нового универсального хранилища, посмущался спросить да бы не "задеть" тебя, но раз уж спросили, хотел бы узнать, будет как у АМК ЗП?))) и вопрос: как тогда замена "стандартного" пстора повлияет на игру? Изменено 7 Января 2012 пользователем Viнt@rь GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
xStream 86 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 (изменено) Из шапки, дабы немного удовлетворить любопытство: --[[--------------------------------------------------------------------- Библиотека универсального хранилища данных произвольного размера Основана на использовани нетпакетов объектов (используется новый тип объектов, описанный в конфигах, имеющие произвольную длину пакета). Хранилище подстраивается под размер хранимых данных. Использовать можно только после загрузки игры (присутствует актор) Удаление переменной производится так же, как и установка переменной - функцией set, как значение надо передать nil Получение переменной производится функцией get, второй параметр - значение по-умолчанию (опциональный параметр). Если переменной не существует и не указано значение по-умолчанию, будет возвращен nil Сразу после загрузки хранилища "кидается" событие storage_load Непосредственно перед сохранением - storage_save Разрешено хранить переменные следующих типов: булевое (хранится как байт) число (хранится всегда как float, если требуется хранение очень больших чисел, то рекомендуется использовать хук приведения к строке: ""..1234567890 - передавать на вход set) строка (хранится как последовательность байт + нулевой символ, конец строки; ограничение на длину строки - 8000 байт) таблицы (ПРОСТЫЕ! То есть: без метатаблиц, без нулевых символов и прочих бинарных данных, без рекурсий и только с простыми типами в ключах и значениях. Кроме того, объем таблицы очень сильно ограничен - при сериализации строка должна влазить в пакет, а значит ограничение примерно в 8000 байт текста.) Depends on: xs_sandbox xs_helpers (as sandbox's module) --]]--------------------------------------------------------------------- Viнt@rь, я не имею ни малейшего понятия, что там в АМК ЗП Я его в глаза не видела. То, что я сделала - не является замещением pstor. Это просто отдельное хранилище, которое можно использовать под различные нужды Изменено 7 Января 2012 пользователем xStream Все, кто стоит на моем пути: идите нахрен и там погибните! © Ссылка на комментарий
Viнt@rь 50 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 (изменено) Ясно))) Использовать можно только после загрузки игры (присутствует актор) Вот хз помогу или нет, но когда актор еще не доступен, можно вызывать загрузку из bind_stalker.script коллбэк actor_binder:load(reader) при этом передавая вызываемой функции обьект биндера(что в принципе и есть актор) ЗЫ может не правильно тебя понял) как я понял: ты имеешь ввиду, что можно использовать после появления db.actor а это коллбэк actor_binder:net_spawn(data) Изменено 7 Января 2012 пользователем Viнt@rь GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
abramcumner 1 145 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 xStream, я так понимаю там будет не новый тип объектов, а несколько обычных? Ссылка на комментарий
xStream 86 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 (изменено) Viнt@rь, нет, не помог Это условие не совсем корректное, но меня устраивает. Дело в том, что мне нужна гарантия, что все серверные объекты уже зарегистрированы. Учитывая, что в онлайн первым переходит актор, то делает это он сразу как раз после этой самой регистрации, что мне и требуется. ЗЫ А что там в АМК ЗП? Добавлено через 1 мин.: abramcumner, не поняла вопроса. Изменено 7 Января 2012 пользователем xStream Все, кто стоит на моем пути: идите нахрен и там погибните! © Ссылка на комментарий
Viнt@rь 50 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 (изменено) xStream --[[ Script: amk_pstor.script Create: 09.10.09 23:04 Copyright: AMK TEAM © Author: Меченый(Стрелок) Description: Замена сталкеровскому пстору ]] local amk_pstor ={["amk_files"]={}} function Save(file,Val,value,vtype) local save =true if not amk_pstor[file] then amk_pstor[file]={} end if amk_pstor and amk_pstor[file] and amk_pstor[file][Val] then amk_pstor[file][Val]=nil end amk_pstor[file][Val]={sName=utils.to_str(Val),sVal=utils.to_str(value),sType=utils.to_str(vtype)} for k,v in pairs(amk_pstor["amk_files"]) do if v and v==file then save=false end end if save==true then amk_pstor["amk_files"][#amk_pstor]=file end end function Load(file,name,val_if_not_exists) local result if amk_pstor and amk_pstor[file] and amk_pstor[file][name] then result= convert(amk_pstor[file][name].sVal,amk_pstor[file][name].sType) else result =val_if_not_exists end return result end function convert(str,typ) local result=nil if typ=="string" then result =utils.to_str(str) elseif typ=="number" then result =tonumber(str) elseif typ=="boolean" then result=loadstring(str) if type(result)=="boolean" then result=result else if str=="true" then result=true elseif str=="false" then result=false else result=nil end end end return result end class "CAmkPstor" function CAmkPstor:__init() end function CAmkPstor:Save() local name,val,file="","",nil for k,v in pairs(amk_pstor["amk_files"]) do if v then name=v for k,v in pairs(amk_pstor[v]) do val =v file =io.open("gamedata\\amk\\"..name..".amk", "w") if file~=nil then local data=utils.to_str(val.sName).."*"..utils.to_str(val.sVal).."@"..utils.to_str(val.sType) file:write(data, "\n") file:close() end file=nil end end end file =io.open("gamedata\\amk\\amk_files.amk", "w") for k,v in pairs(amk_pstor["amk_files"]) do if v then file:write(utils.to_str(v),"\n") end end file:close() end function CAmkPstor:Load() local file,bb=nil,"" file =io.open("gamedata\\amk\\amk_files.amk", "r") if file ~= nil then for line in file:lines() do if line~=nil then table.insert(amk_pstor["amk_files"],line) end end file:close() file=nil end for k,v in pairs(amk_pstor["amk_files"]) do if v then bb=v file=io.open("gamedata\\amk\\"..utils.to_str(v)..".amk", "r") for line in file:lines() do if line~=nil then local tbl={} tbl=self:Dumper(line) Save(bb,tbl.val,tbl.value,tbl.type) end end file:close() end end end function CAmkPstor:Dumper(line) local tbl={} local valu_pos =string.find(line,"*",1,true) local type_pos=string.find(line,"@",1,true) tbl.value =string.sub(line,valu_pos+1,type_pos-1) tbl.type=string.sub(line,type_pos+1) tbl.val=string.sub(line,1,valu_pos-1) return tbl end ЗЫ по поводу актора) в принципе оно все "канает" за него, лично я использую это для загрузки сохраненных таймеров, просто это удобно в тех случаях, если нужно что-то загрузить, до появления актора(хотя это редкие случаи, просто при этом можно быть уверенным, что не будет вылета изза того, что отсутствует актор)) Изменено 7 Января 2012 пользователем Viнt@rь GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
abramcumner 1 145 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 xStream, (используется новый тип объектов, описанный в конфигах, имеющие произвольную длину пакета) Все-таки именно один объект? Или несколько, добавляемых по необходимости? Ссылка на комментарий
xStream 86 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 Viнt@rь, ага, поняла. Нет, у меня нет никаких файлов. Механизм попроще, и как разделять, какое хранилище для какого сейва простым способом (в амк)? Что касается колбека, то именно на появление актора производится инициализация хранилища, раньше - нет, так как я не могу гарантировать его полную загрузку. Все, кто стоит на моем пути: идите нахрен и там погибните! © Ссылка на комментарий
Artos 99 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 (изменено) xStream: У Artos'a они далеко неактуальные. Можно попросить привести аргументы/примеры неактуальности модуля нет-пакетов (m_net_utils.script). Для справки: 1. Последняя доступная версия модуля нет-пакетов (m_net_utils.script) датирована 17.12.2011. 2. Последняя (актуальная) версия модуля всегда доступна в текущей на 'сегодня' версии SIMBION:SHOC, которую можно взять на сайте мода. 3. На этом форуме был выложен линк на версию от 27.10.20011 (см. #3067), которая и не сильно "устарела" и до сих пор доступна. 4. Модуль нет пакетов (m_net_utils.script) совместим со всеми версиями игры/патчей (ТЧ/ЧН/ЗП), начиная с 1.0006 и далее. Изменено 7 Января 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
xStream 86 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 (изменено) abramcumner, увидишь, все просто, но достаточно эффективно. Добавлено через 2 мин.: Artos, не злись! :-P Оказалось, что актуальные, ага. Только толку ноль. Что касается совместимости: ты опять делаешь убер-пупер-мега-скрипт Я не поддержу дискуссию. ЗЫ Чтобы посмотреть библиотеку пакетов, качать почти 200 метров... Изменено 7 Января 2012 пользователем xStream Все, кто стоит на моем пути: идите нахрен и там погибните! © Ссылка на комментарий
Viнt@rь 50 Опубликовано 7 Января 2012 Поделиться Опубликовано 7 Января 2012 (изменено) и как разделять, какое хранилище для какого сейва простым способом (в амк)? не совсем понял вопроса))), отвечу как понял: по идее там одно хранилище - один файл, в него то и сохраняется все, лично не пробывал как оно работает... Сама схема походу была как заготовка, так как даже не используется нигде... Изменено 7 Января 2012 пользователем Viнt@rь GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти