Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий
naxac 2 477 Опубликовано 21 Января 2016 Поделиться Опубликовано 21 Января 2016 (изменено) @Winsor, aem_lamp и lights_hanging_lamp в твоём коде - это не секции, а названия полей, которые будут внесены в движковый clsid с присвоением числового значения - идентефикатора нового класса. Чтобы потом можно было сделать что-то вроде "if obj:clsid() == clsid.lights_hanging_lamp then...". А разве можно к одному клиентскому классу привязать два разных серверных? Изменено 21 Января 2016 пользователем naxac 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
abramcumner 1 172 Опубликовано 22 Января 2016 Поделиться Опубликовано 22 Января 2016 (изменено) @Winsor, с этим ознакомился: Регистрация скриптовых классов с помощью object_factory? Изменено 22 Января 2016 пользователем abramcumner 1 Ссылка на комментарий
Winsor 178 Опубликовано 22 Января 2016 Поделиться Опубликовано 22 Января 2016 @naxac, т.е. такой строкой я делаю следующее cs_register (object_factory, "client_class_name", "server_class_script.class", "section_class_type", "script_clsid") 1) регистрирую в системе новый clsid script_clsid, который используется в скриптах при обращению clsid.script_clsid 2) регистрирую в системе новый тип section_class_type, который используется в описании секций объектов class=section_class_type 3) регистрирую в системе серверный класс server_class_script.class для наследования от alife_cse_* 4) регистрирую в системе связь, которая при создании серверного объекта типа section_class_type будет создавать клиентский класс client_class_name правильно? @abramcumner, да. только вопросов не убавило Вот например там написано что связка с аналогичными идентификаторами должна замещать уже существующую. почему в моем примере при наличии 1) пункт 2) просто не работает? если закомментить 1) - то все хорошо. или вопрос - как определить правильно клиентский класс (вернее наличие к нему привязки), если в регистраторе она отсутствует. Если взять для примера движковый object_factory_register - то там есть такое ADD(CClimableObject ,CSE_ALifeObjectClimable ,CLSID_OBJECT_CLIMABLE ,"obj_climable"); при создании у себя cs_register (object_factory, "CClimableObject", "se_objects.se_climable", "O_CLMBL", "obj_climable") мой класс se_objects.se_climable игнорируется. Почему? вроде все правильно. Ссылка на комментарий
abramcumner 1 172 Опубликовано 22 Января 2016 Поделиться Опубликовано 22 Января 2016 @Winsor, O_CLMBL случайно не равен CLSID_OBJECT_CLIMABLE? Придумывай свои CLSID. 1 Ссылка на комментарий
Winsor 178 Опубликовано 22 Января 2016 Поделиться Опубликовано 22 Января 2016 @Winsor, O_CLMBL случайно не равен CLSID_OBJECT_CLIMABLE? Придумывай свои CLSID. так как раз и хочется заменить существующую привязку на свою. т.е. подставить для лестниц свой серверный класс. в all.spawn, например, все лестницы типа O_CLMBL , менять на свой новый clsid - это совсем не вариант, sed конечно никто не отменял - но почему не работает моя подмена, как написано в документе? Ссылка на комментарий
abramcumner 1 172 Опубликовано 22 Января 2016 Поделиться Опубликовано 22 Января 2016 @Winsor, в исходниках нет подмены. Новая связка просто добавляется в список. А из-за использования неустойчивой сортировки может находится как оригинальная запись, так и новая добавленная. Сделай все-таки свой clsid. Никакого седа не нужно. У O_CLMBL всего одна секция. 1 Ссылка на комментарий
Winsor 178 Опубликовано 22 Января 2016 Поделиться Опубликовано 22 Января 2016 @abramcumner, может я конечно чего то не понял, но секция одна, а использование этой секции многократное. Или Вы предлагаете заменить в system.ltx , например, [climable_object] class = O_CLMBL на [climable_object] class = O_WCLB и сделать такое: cs_register (object_factory, "CClimableObject", "se_objects.se_climable", "O_WCLB", "obj_climable") Это позволит без изменения all.spawn в se_objects.se_climable получить доступ ко всем серверным объектам лестниц ? Правильно? Спасибо за разъяснения! Ссылка на комментарий
Charsi 440 Опубликовано 22 Января 2016 Поделиться Опубликовано 22 Января 2016 @Winsor, в движке, который ты используешь, класс CClimableObject экспортирован? Просто cs_register хочет вторым аргументом идентификатор экспортированного клиентского класса, а в оригинале экспортирован лишь серверный класс cse_alife_object_climable. 1 Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий
vampirnik77 121 Опубликовано 24 Января 2016 Поделиться Опубликовано 24 Января 2016 (изменено) Добрый Вечер! Вопрос возник, если предмет есть у актора, то parent Id предмета равен id актора? Изменено 24 Января 2016 пользователем vampirnik77 Официальная страница проекта Neof-One Crew Ссылка на комментарий
naxac 2 477 Опубликовано 24 Января 2016 Поделиться Опубликовано 24 Января 2016 @vampirnik77, да. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
vampirnik77 121 Опубликовано 24 Января 2016 Поделиться Опубликовано 24 Января 2016 (изменено) И логичный вопрос, как правильно получить parent id? Такой финт ушами не работает. local obj = alife():object(ItemId) local parent = obj:parent() local parent_id = parent:id() Изменено 24 Января 2016 пользователем vampirnik77 Официальная страница проекта Neof-One Crew Ссылка на комментарий
Eugen81 1 008 Опубликовано 24 Января 2016 Поделиться Опубликовано 24 Января 2016 @vampirnik77 parent = obj.parent_id http://www.amk-team.ru/forum/topic/12839-kovyriaem-op-2/?p=924965 Ссылка на комментарий
naxac 2 477 Опубликовано 24 Января 2016 Поделиться Опубликовано 24 Января 2016 Такой финт ушами не работаетЭто потому, что ты с серверным объектом обращаешься как с клиентским.Всё гораздо проще: local obj = alife():object(ItemId) parent_id = obj.parent_idЕсли parent_id будет равен 65535, значит у объекта нет "хозяина". Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Sla-Sla 43 Опубликовано 28 Января 2016 Поделиться Опубликовано 28 Января 2016 Может кому-нибудь пригодится... function play_sound(snd, npc_id, num1, num2) if npc_id == nil then npc_id = db.actor:id() end xr_sound.get_safe_sound_object(snd):play_no_feedback(npc_id, sound_object.s2d, num1, vector(), num2) end Использование: play_sound([[interface\inv_take]],db.actor, 0, 1.0) 1 Ссылка на комментарий
vampirnik77 121 Опубликовано 28 Января 2016 Поделиться Опубликовано 28 Января 2016 Добрый Вечер комрады. Кто пользуется модулями Artos'a(в частности se_stor и m_timers), подскажите как сохранять таймеры? Буду благодарен. Официальная страница проекта Neof-One Crew Ссылка на комментарий
TIGER_VLAD 361 Опубликовано 28 Января 2016 Поделиться Опубликовано 28 Января 2016 (изменено) @vampirnik77, Если все правильно подключил, таймеры должны сохраняться. Изменено 28 Января 2016 пользователем TIGER_VLAD 1 Ссылка на комментарий
vampirnik77 121 Опубликовано 29 Января 2016 Поделиться Опубликовано 29 Января 2016 @TIGER_VLAD, Тогда вопрос снят. Официальная страница проекта Neof-One Crew Ссылка на комментарий
Kondr48 314 Опубликовано 31 Января 2016 Поделиться Опубликовано 31 Января 2016 (изменено) Вопрос такой, нужен модуль таймеров, которые не "загнуться" через игровой месяц и в которых можно по имени таймера получить остаток времени. Есть ли такие? В ОГСЕ, может, или еще где-то? P.S. также интересует, как лучше проигрывать зацикленный звук на апдейте? Изменено 31 Января 2016 пользователем Kondr48 Ссылка на комментарий
naxac 2 477 Опубликовано 1 Февраля 2016 Поделиться Опубликовано 1 Февраля 2016 проигрывать зацикленный звук на апдейте local snd = sound_object("music\\track") functon update() if not snd:playing() then snd:play_at_pos(bla, bla) -- аргументы не помню, загляни в lua_help end end 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Anonim 680 Опубликовано 2 Февраля 2016 Поделиться Опубликовано 2 Февраля 2016 Вопрос к профи Как чекнуть погоду рестриктором? Нужно для локации где не требуется загрузка подземелье, т.е обьеденённые локации. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти