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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/
naxac 2 595 Опубликовано 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/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-988733
abramcumner 1 230 Опубликовано 22 Января 2016 Поделиться Опубликовано 22 Января 2016 (изменено) @Winsor, с этим ознакомился: Регистрация скриптовых классов с помощью object_factory? Изменено 22 Января 2016 пользователем abramcumner 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-988772
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 игнорируется. Почему? вроде все правильно. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-988780
abramcumner 1 230 Опубликовано 22 Января 2016 Поделиться Опубликовано 22 Января 2016 @Winsor, O_CLMBL случайно не равен CLSID_OBJECT_CLIMABLE? Придумывай свои CLSID. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-988781
Winsor 178 Опубликовано 22 Января 2016 Поделиться Опубликовано 22 Января 2016 @Winsor, O_CLMBL случайно не равен CLSID_OBJECT_CLIMABLE? Придумывай свои CLSID. так как раз и хочется заменить существующую привязку на свою. т.е. подставить для лестниц свой серверный класс. в all.spawn, например, все лестницы типа O_CLMBL , менять на свой новый clsid - это совсем не вариант, sed конечно никто не отменял - но почему не работает моя подмена, как написано в документе? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-988784
abramcumner 1 230 Опубликовано 22 Января 2016 Поделиться Опубликовано 22 Января 2016 @Winsor, в исходниках нет подмены. Новая связка просто добавляется в список. А из-за использования неустойчивой сортировки может находится как оригинальная запись, так и новая добавленная. Сделай все-таки свой clsid. Никакого седа не нужно. У O_CLMBL всего одна секция. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-988802
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 получить доступ ко всем серверным объектам лестниц ? Правильно? Спасибо за разъяснения! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-988813
Charsi 441 Опубликовано 22 Января 2016 Поделиться Опубликовано 22 Января 2016 @Winsor, в движке, который ты используешь, класс CClimableObject экспортирован? Просто cs_register хочет вторым аргументом идентификатор экспортированного клиентского класса, а в оригинале экспортирован лишь серверный класс cse_alife_object_climable. 1 Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-988821
vampirnik77 121 Опубликовано 24 Января 2016 Поделиться Опубликовано 24 Января 2016 (изменено) Добрый Вечер! Вопрос возник, если предмет есть у актора, то parent Id предмета равен id актора? Изменено 24 Января 2016 пользователем vampirnik77 Официальная страница проекта Neof-One Crew Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-989327
naxac 2 595 Опубликовано 24 Января 2016 Поделиться Опубликовано 24 Января 2016 @vampirnik77, да. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-989333
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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-989334
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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-989386
naxac 2 595 Опубликовано 24 Января 2016 Поделиться Опубликовано 24 Января 2016 Такой финт ушами не работаетЭто потому, что ты с серверным объектом обращаешься как с клиентским.Всё гораздо проще: local obj = alife():object(ItemId) parent_id = obj.parent_idЕсли parent_id будет равен 65535, значит у объекта нет "хозяина". Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-989437
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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-990141
vampirnik77 121 Опубликовано 28 Января 2016 Поделиться Опубликовано 28 Января 2016 Добрый Вечер комрады. Кто пользуется модулями Artos'a(в частности se_stor и m_timers), подскажите как сохранять таймеры? Буду благодарен. Официальная страница проекта Neof-One Crew Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-990197
TIGER_VLAD 361 Опубликовано 28 Января 2016 Поделиться Опубликовано 28 Января 2016 (изменено) @vampirnik77, Если все правильно подключил, таймеры должны сохраняться. Изменено 28 Января 2016 пользователем TIGER_VLAD 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-990223
vampirnik77 121 Опубликовано 29 Января 2016 Поделиться Опубликовано 29 Января 2016 @TIGER_VLAD, Тогда вопрос снят. Официальная страница проекта Neof-One Crew Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-990232
Kondr48 314 Опубликовано 31 Января 2016 Поделиться Опубликовано 31 Января 2016 (изменено) Вопрос такой, нужен модуль таймеров, которые не "загнуться" через игровой месяц и в которых можно по имени таймера получить остаток времени. Есть ли такие? В ОГСЕ, может, или еще где-то? P.S. также интересует, как лучше проигрывать зацикленный звук на апдейте? Изменено 31 Января 2016 пользователем Kondr48 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-990725
naxac 2 595 Опубликовано 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/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-990948
Anonim 680 Опубликовано 2 Февраля 2016 Поделиться Опубликовано 2 Февраля 2016 Вопрос к профи Как чекнуть погоду рестриктором? Нужно для локации где не требуется загрузка подземелье, т.е обьеденённые локации. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/350/#findComment-991231
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти