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/
mdm64 586 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 Доброго времени! Сильно заинтересовал такой вопрос - в ТЧ есть масхалат, точнее маскировочный экзоскелет, в котором можно некоторое время шариться под самым носом у врагов и они только головами водят, но не трогают. Как реализовать такую маскировку в ЗП, если это реально? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1350829
HellRatz 2 941 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 @mdm64, вставлю 5 копеек и не более. Не утверждаю, т.к не скриптер. Но большинство кода можно перенести из платформы в платформу, что и делали первые модификации на ЗП — там тянули фишки из модов на ТЧ (Те же контейнеры для артов). Думаю, если у тебя есть скрипт этого экзоскелета, можно попробовать его адаптировать напрямую. Во всяком случае, я бы начал с этого, чем писать с нуля. 3 GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Раритетные моды на моем облаке — на память о былом. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1350840
mdm64 586 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 @HellRatz, Согласен, идея более чем разумная. Мы тут с моей головой посовещались и я решил... высказать простое предположение по возможной реализации "невидимки" - по сути, если вспомнить реакцию враждебных НПС из той же Солянки, требуется при надевании такого масхалата прописать запрет на стрельбу со стороны врагов и всё. И будет тот же самый эффект. Я хорошо помню, что неписи даже какое-то время шли за мной с оружием, кричали "враг, враг!", но не стреляли. Но честно говоря, я сейчас не представляю, как эту возможность реализовать. Понятно, что требуется скрипт и инфопоршни, чтобы при одевании масхалата выдавался поршень и скрипт отрабатывал запрет ведения огня любыми неписями... Думается, так оно и реализовано, это по мне так самый простой вариант "Невидимки". Хотя, может быть и ошибаюсь... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1350844
Painter 3 591 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 Цитата Как реализовать такую маскировку в ЗП, если это реально? @mdm64, один из вариантов реализации маскхалата можно подсмотреть здесь. 1 ⠀ Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1350850
mdm64 586 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 (изменено) @Jurok, Этот параметр является штатным для движка ЗП - "npc_blindness_koeff" (видимость ГГ НПС, в метрах.)? или это только для правленого движка? @Jurok, Если я правильно понимаю, в этом способе работают следующие файлы: Скрытый текст npc_blindness_koeff = 19 ;видимость ГГ НПС, в метрах. Скрытый текст function ReadOutfitBlindnessKoeff(section) local ltx = system_ini() if ltx:line_exist(section,"npc_blindness_koeff") then return ltx:r_float(section,"npc_blindness_koeff") else return 80 end end function transparent_gg() local range1, id, obj_around, alife_obj, dist_act_npc local outfit_in_slot=db.actor:item_in_slot(7) if db.actor == nil then return nil end if db.actor:item_in_slot(7) == nil then range1 = 80 elseif outfit_in_slot~=nil and ReadOutfitBlindnessKoeff(outfit_in_slot:section())>0.0 then range1 = ReadOutfitBlindnessKoeff(outfit_in_slot:section()) else range1 = 80 end for id = 1, 65534 do obj_around = level.object_by_id(id) if obj_around ~= nil and IsStalker(obj_around) then alife_obj = alife():object(id) if alife_obj then dist_act_npc = db.actor:position():distance_to(alife_obj.position) end if dist_act_npc <= 120 then if obj_around then obj_around:set_range(range1) end else if obj_around then obj_around:set_range(80) end end end end end function timer_trans() timer_transparent = timer_transparent + 1 if timer_transparent >= 50 then timer_transparent = 0 transparent_gg() end end Скрытый текст trans_outfit.timer_trans() -- уменьшение дистанции видимости при одевании соотв. броников -- јпдейт доступности дл¤ симул¤ции. simulation_objects.get_sim_obj_registry():update_avaliability(alife():actor()) bind_stalker_ext.actor_on_update(self,delta) --alun_utils.debug_write("actor update END 2") end Скрытый текст mus_vol = 0 amb_vol = 0 b_discard_settings_shown = false timer_transparent = 0 --маскхалат Я ничего не пропустил или всё-таки что-то не доглядел? Изменено 29 Сентября 2020 пользователем mdm64 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1350852
dsh 3 824 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 2 hours ago, mdm64 said: высказать простое предположение по возможной реализации "невидимки Один из вариантов - это использовать enemy_callback. Т.е. если невидимка в слоте, то всем мобам этот коллбек отвечает, что актор невкусный и они его игнорируют. 2 3 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1350865
Romann 628 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 2 часа назад, mdm64 сказал: Думается, так оно и реализовано. Хотя, может быть и ошибаюсь... Ошибаешься. 2 часа назад, HellRatz сказал: большинство кода можно перенести из платформы в платформу Я как-то тоже подумывал перенести "невидимку" на КоК, там конечно есть свой "маскхалат", но вот хочется именно тот самый скрипт невидимки от @НаноБот, там используется некий "инвиз", что за зверь и где он в скриптах вообще объявляется я так и не нашёл(или плохо искал), или может он из движка не знаю, так и забил на это. Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz). Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб). Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge. Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1350866
WinCap 324 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 3 часа назад, mdm64 сказал: возможной реализации "невидимки" Как уже сказал @dsh, самый простой вариант добавить новое условие в функцию "is_enemy()" в "xr_combat_ignore.script". Если надет нужный броник, то функция возвращает false. Скрытый текст function is_enemy(obj, enemy, st, not_check_sim) ... if st.enabled == false then return true end -- МаскХалат if enemy:id() == db.actor:id() then local bronik = db.actor:item_in_slot(7) if bronik and bronik:section() == "maskhalat" then return false end end ... end 1 3 S.T.A.L.K.E.R. CoP Objects >200 шт (upd 21.05.26) - Скачать (Яндекс-диск) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1350872
mdm64 586 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 @WinCap, Да, согласен, действительно очень просто, решение в несколько строк... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1350874
Romann 628 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 11 минут назад, WinCap сказал: самый простой вариант Ну не всё так просто - это не реализация "невидимки", это всего лишь некий игнор, враг просто не будет атаковать, но по факту актора будут все видеть, и даже на него реагировать. И назвать такое "невидимкой" у меня лично язык не повернётся, ИМХО. А вот сделать полную реализацию невидимки, когда мобы актора не просто игнорят - а полностью не видят и не реагируют - вот это уже "невидимка". 4 Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz). Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб). Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge. Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1350875
mdm64 586 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 (изменено) @Romann, Соглашусь полностью, но именно так была реализована "невидимка" в Солянке, просто другой реализации я не видел. Я бы даже сказал так - это именно маскхалат, когда враги тебя ощущают, но не видят отчётливо настолько, чтобы стрелять. А "невидимка" это да - когда сидят "три мартышки"... и четвёртая с КПК.... Изменено 29 Сентября 2020 пользователем mdm64 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1350877
WinCap 324 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 @mdm64, вариант скрипта, с проверкой расстояния и времени суток: Скрытый текст if enemy:id() == db.actor:id() then local bronik = db.actor:item_in_slot(7) if bronik and bronik:section() == "maskhalat" then local dist = 10 -- ночью if in_time_interval(10, 17) then dist = 50 -- днем else if in_time_interval(6, 21) then dist = 35 -- утром/вечером end if obj:position():distance_to(enemy:position()) > dist then return false end end end 1 1 S.T.A.L.K.E.R. CoP Objects >200 шт (upd 21.05.26) - Скачать (Яндекс-диск) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1350880
mdm64 586 Опубликовано 29 Сентября 2020 Поделиться Опубликовано 29 Сентября 2020 @WinCap, А ведь на этот скрипт можно "прикрутить" совершенно уникальные условия для выполнения тех или иных квестов! И в частности, с фотографированием нужных объектов или НПС... Вот только нигде пока не нашёл аддона с фотиком, как в Фотографе... 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1350881
phalcor 60 Опубликовано 30 Сентября 2020 Поделиться Опубликовано 30 Сентября 2020 А возможно заспавнить физический объект? Например, деревянный ящик, такой, как рядом с Прапором? На котором магнитофон стоит. Делаю, как ниже. Рюкзак спавнится, а какую секцию указать для ящика? local a_pos = db.actor:position() local xpos=a_pos.x+2 local ypos=a_pos.y local zpos=a_pos.z local lv=db.actor:level_vertex_id() local gv=db.actor:game_vertex_id() local newOBJ=alife():create("inventory_box", xyz(xpos,ypos,zpos), lv,gv) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1351012
HellRatz 2 941 Опубликовано 30 Сентября 2020 Поделиться Опубликовано 30 Сентября 2020 53 минуты назад, phalcor сказал: а какую секцию указать для ящика? Нужно создать предмет (естественно не подбираемый, хотя можно и ящики собирать если нужно) с визуалом ящика, потом спавнить как любой предмет. Но все же советую делать такие вещи через СДК, подобные костыли — уровень 2007 года. 1 2 GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Раритетные моды на моем облаке — на память о былом. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1351016
phalcor 60 Опубликовано 30 Сентября 2020 Поделиться Опубликовано 30 Сентября 2020 @HellRatz, получается, что самый обычный деревянный ящик скриптом я заспавнить не смогу без создания своего предмета? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1351018
HellRatz 2 941 Опубликовано 30 Сентября 2020 Поделиться Опубликовано 30 Сентября 2020 2 минуты назад, phalcor сказал: обычный деревянный ящик скриптом я заспавнить не смогу Деревянный ящик — это зашитая в спавн секция динамического объекта с прописанным визуалом этого самого ящика. Соответственно — нет. Тебе нужно по аналогии создать в конфигах предмет с прописанным визуалом, и спавнить непосредственно предмет, а не модель. 1 GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Раритетные моды на моем облаке — на память о былом. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1351020
phalcor 60 Опубликовано 30 Сентября 2020 Поделиться Опубликовано 30 Сентября 2020 (изменено) Получилось! 1. Создаём свой предмет в items.ltx: [phalcor_woodbox]:O_PHYS_S visual = dynamics\box\big_box.ogf ;Большой деревянный зелёный ящик remove_time = 9999 2.Спавним предмет с секцией "phalcor_woodbox" 3. всё. Изменено 30 Сентября 2020 пользователем phalcor 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1351021
Black_Raven_03 43 Опубликовано 2 Октября 2020 Поделиться Опубликовано 2 Октября 2020 (изменено) Нужна помощь - при попытке выполнить такой код: Скрытый текст function dots:dots1() edit_box = self:GetEditBox("edit_box") edit_box2 = self:GetEditBox("edit_box2") clan = tostring(edit_box:GetText()) amount = tonumber(edit_box2:GetText()) --get_console():execute(clan) --get_console():execute(amount) --get_console():execute("Started") if db.actor then -- self:on_quit() -- get_console():execute("main_menu off") get_console():execute("Phase1") if clan==nil then clan="stalker" end if amount==nil then amount=1 end --current=relation_registry:community_goodwill(clan, 0) get_console():execute("Phase2") relation_registry:set_community_goodwill(clan, 0, math.min(5000, amount)) get_console():execute("Phase3") end end вылетает на стол с такой вот ошибкой: [02.10.20 16:23:52.569] ******************************************************************************** [02.10.20 16:23:52.576] ********************************************************************************* [02.10.20 16:23:52.576] [print_output([CScriptEngine::lua_pcall_failed])] SCRIPT RUNTIME ERROR: [luabind::detail::free_functions::function_dispatcher] Caught unhandled exception! stack traceback: [C]: at 0x07fed88bf770 [C]: in function 'set_community_goodwill' g:\stalker_shoc_na7\gamedata\scripts\ui_prestige.script:72: in function <g:\stalker_shoc_na7\gamedata\scripts\ui_prestige.script:52> [02.10.20 16:23:52.576] ********************************************************************************* [02.10.20 16:23:52.576] FATAL ERROR [error]Expression : FATAL ERROR [error]Function : CScriptEngine::lua_pcall_failed [error]File : d:\_work\forks\ogsr-engine\ogsr_engine\common_ai\script_engine.cpp [error]Line : 52 [error]Description : [CScriptEngine::lua_pcall_failed]: [luabind::detail::free_functions::function_dispatcher] Caught unhandled exception! [02.10.20 16:23:52.576] ***************************[ScriptCrashHandler]********************************** [02.10.20 16:23:52.576] stack traceback: [C]: at 0x07fed88bf770 [C]: in function 'set_community_goodwill' g:\stalker_shoc_na7\gamedata\scripts\ui_prestige.script:72: in function <g:\stalker_shoc_na7\gamedata\scripts\ui_prestige.script:52> [02.10.20 16:23:52.576] Locals: [02.10.20 16:23:52.576] string (*temporary) : [luabind::detail::free_functions::function_dispatcher] Caught unhandled exception! [02.10.20 16:23:52.576] End [02.10.20 16:23:52.576] Locals: [02.10.20 16:23:52.576] Table: (*temporary) [02.10.20 16:23:52.576] function (*temporary).set_community_goodwill : [[function]] [02.10.20 16:23:52.576] function (*temporary).clear_personal_relations : [[function]] [02.10.20 16:23:52.576] function (*temporary).community_goodwill : [[function]] [02.10.20 16:23:52.576] function (*temporary).change_community_goodwill : [[function]] [02.10.20 16:23:52.576] function (*temporary).set_personal_goodwill : [[function]] [02.10.20 16:23:52.576] function (*temporary).clear_personal_goodwill : [[function]] [02.10.20 16:23:52.576] function (*temporary).get_personal_goodwill : [[function]] [02.10.20 16:23:52.576] function (*temporary).change_personal_goodwill : [[function]] [02.10.20 16:23:52.576] string (*temporary) : stalker [02.10.20 16:23:52.576] number (*temporary) : 0.000000 [02.10.20 16:23:52.576] number (*temporary) : 2000.000000 [02.10.20 16:23:52.576] End [02.10.20 16:23:52.576] Locals: [02.10.20 16:23:52.576] Userdata: self [02.10.20 16:23:52.576] userdata self.dialog : (CUIStatic): 00000000170B2A80 [02.10.20 16:23:52.576] Userdata: self.owner [02.10.20 16:23:52.576] userdata self.owner.message_box : (CUIMessageBoxEx): 0000000040B32920 [02.10.20 16:23:52.576] number self.owner.mbox_mode : 0.000000 [02.10.20 16:23:52.576] userdata self.owner.shniaga : (CUIMMShniaga): 0000000040781180 [02.10.20 16:23:52.576] End [02.10.20 16:23:52.576] ********************************************************************************* [02.10.20 16:23:52.576] ******************************************************************************** Вот чего ОГСРу неймётся, кто-нить может объяснить? Какое исключение и где именно? Изменено 4 Октября 2020 пользователем Опричник спойлер Скрытый текст AMD Ryzen 5 3600, 32GB DDR4-3200, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, CoP SGM Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM, ОП-2.2 ZC! Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1351195
dsh 3 824 Опубликовано 2 Октября 2020 Поделиться Опубликовано 2 Октября 2020 28 minutes ago, Black_Raven_03 said: relation_registry:set_community_goodwill Скорее всего вот в этом. Разве relation_registry - это класс и у него есть метод set_community_goodwill? 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/533/#findComment-1351201
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти