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 Опубликовано 25 Июня 2021 Поделиться Опубликовано 25 Июня 2021 (изменено) @Rod_K , попробуй уменьшить дистанцию с 12 до, например, 5 метров. В движке на дистанцию, с которой можно начинать диалог, ограничение стоит, не помню только, какое именно. И, да - ремарк в качестве основной схемы - это моветон. Изменено 25 Июня 2021 пользователем naxac 3 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1387810
WinCap 323 Опубликовано 25 Июня 2021 Поделиться Опубликовано 25 Июня 2021 (изменено) 7 часов назад, naxac сказал(а): И, да - ремарк в качестве основной схемы - это моветон. Много раз встречал подобное утверждение и до сих пор не знаю, что значит "основная/активная схема"? Объясните, пожалуйста. Изменено 25 Июня 2021 пользователем WinCap S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1387845
Painter 3 584 Опубликовано 25 Июня 2021 Поделиться Опубликовано 25 Июня 2021 @WinCap, под "основной схемой" подразумевается та схема, которая используется на постоянной основе для просто стоящего на месте NPC (или циклично перемещающего по определённым путям). Для этих целей используются walker и animpoint. Как правило, remark применяется исключительно для небольших сценок с последующим переходом на "основные схемы" (отыграл нужную анимацию/реплику в remark и снова перешёл в walker). Если использовать её в качестве постоянной, то NPC банально не вернётся "на своё место" после столкновения с противником (или если кто-то его случайно "отодвинет"). 1 ⠀ Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1387846
Rod_K 1 Опубликовано 25 Июня 2021 Поделиться Опубликовано 25 Июня 2021 @naxac К сожалению, ничего не происходит. Актор при приближении к нпс убирает оружие, бинокль и т.д. и стоит на месте. Диалоговое окно не появляется. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1387848
phalcor 60 Опубликовано 25 Июня 2021 Поделиться Опубликовано 25 Июня 2021 (изменено) Очередное кострище ушло в свободное плаванье (переместилось метров на 5 вверх): При этом координаты всех элеменетов костра одинаковые и указывают правильное местоположение: Скрытый текст [25.06.21 12:02:44.041] 1. smart_terrain -- bar_ecolog_kamp x=53.180000305176 y=-11.630000114441 z=-260.14001464844; id=15023; story_id=-1 [25.06.21 12:02:44.041] 2. space_restrictor -- yan_campfire1_restr x=53.180000305176 y=-11.630000114441 z=-260.14001464844; id=15026; story_id=-1 [25.06.21 12:02:44.042] 3. physic_object -- yan_campfire1 x=53.180000305176 y=-11.630000114441 z=-260.14001464844; id=15027; story_id=-1 [25.06.21 12:02:44.108] 4. zone_flame_small -- yan_campfire1_flame x=53.180000305176 y=-11.630000114441 z=-260.14001464844; id=60440; story_id=804729 [25.06.21 12:02:44.109] 5. lights_hanging_lamp -- yan_campfire1_light x=53.180000305176 y=-11.630000114441 z=-260.14001464844; id=60441; story_id=804730 Написал функцию принудительного перемещения с помощью нет-пакетов - при выполнении кострище на мгновение исчезает, а затем вновь появляется на старом месте. Скрытый текст function test25062021() for i = 1, 65534 do local obj = alife():object(i) if obj and obj:name()== "yan_campfire1" then --перемещение local xpos=obj.position.x local ypos=obj.position.y local zpos=obj.position.z ypos=ypos+5 --на 5 метров вверх! local vPos = vector():set(xpos,ypos,zpos) local pk = m_netpk.net_cse_abstract(obj) if pk:isOk() then log("!ОК!") local status = pk:setCallback( function(data) data.position = vPos --/ change property 'position' in 'cse_abstract' end ) end end end end Что это такое, и как это побороть (вернуть кострище на место!)? Изменено 25 Июня 2021 пользователем phalcor Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1387849
Colder 12 Опубликовано 25 Июня 2021 Поделиться Опубликовано 25 Июня 2021 Можно ли скриптово, переместить актора на другую локацию без использования спавна? Или где можно подсмотреть подобное? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1387850
I am Dead 918 Опубликовано 25 Июня 2021 Поделиться Опубликовано 25 Июня 2021 @Colder В некоторых спавнерах есть возможность телепортирования на другие Локи и был ещё мод "кпк разработчика" (если правильно помню название) ,там тоже есть такая возможность. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1387857
dsh 3 824 Опубликовано 25 Июня 2021 Поделиться Опубликовано 25 Июня 2021 @phalcor я пришел к выводу,что это проблема физики. Могу посоветовать только переспаун. В движке я пытался это исправить, но не уверен, получилось или нет. Точнее, не стал заморачиваться с проверкой, т.к. автоматический скриптовый переспаун, который уже работал на тот момент, меня устраивал. 1 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1387859
phalcor 60 Опубликовано 25 Июня 2021 Поделиться Опубликовано 25 Июня 2021 (изменено) @dsh Понятно, физика, будь она неладна. Удаляется кострище без проблем, а вот как его заспавнить из скрипта? В распакованном алл-спавне нашёл его секцию, но что-то не соображу, как сделать спавн? Скрытый текст [8380] ; cse_abstract properties section_name = physic_object name = yan_campfire1 position = 53.1800003051758,-11.6300001144409,-260.140014648438 direction = 0,0,0 unknown_id = 0 script_version = 7 ; cse_alife_object properties game_vertex_id = 1480 distance = 0.300000011920929 level_vertex_id = 66633 object_flags = 0xffffff3a custom_data = <<END [collide] ignore_static END ; cse_visual properties visual_name = dynamics\koster\koster_palki ; cse_ph_skeleton properties skeleton_name = skeleton_flags = 1 ; cse_alife_object_physic properties physic_type = 0x3 mass = 10 fixed_bones = bone01 Изменено 25 Июня 2021 пользователем phalcor Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1387860
Marafon6540 825 Опубликовано 25 Июня 2021 Поделиться Опубликовано 25 Июня 2021 (изменено) 28 минут назад, phalcor сказал(а): fixed_bones = bone01 Тебе надо зафиксировать вот эту кость. Попробуй в свою функцию после data.position = vPos добавить что-то типа data.physic_type = 3 data.mass = 10 data.fixed_bones = "bone01" Изменено 25 Июня 2021 пользователем Marafon6540 1 Трилогия Апокалипсис. Упавшая звезда. Честь наемника. v. 1.2 УЗЧН v.1.3 + ОГСРх64 Последний сталкер v. 1.2 ПС v. 1.3 + ОГСРх64 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1387863
phalcor 60 Опубликовано 25 Июня 2021 Поделиться Опубликовано 25 Июня 2021 @Marafon6540 добавил. Увы, всё также, исчезнет на секунду и снова появится на прежнем месте. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1387864
dsh 3 824 Опубликовано 25 Июня 2021 Поделиться Опубликовано 25 Июня 2021 2 hours ago, Marafon6540 said: Тебе надо зафиксировать вот эту кость. Это не поможет. В том месте, где происходит эта проблема, фиксированные кости не обрабатываются. Оно там о такой штуке просто не знает. Хотя это не отменяет необходимость фиксации костей. Но против этой проблемы - это не поможет. 2 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1387882
phalcor 60 Опубликовано 25 Июня 2021 Поделиться Опубликовано 25 Июня 2021 @dsh 10 минут назад, dsh сказал(а): Это не поможет. Ну пока да, не помогло. Если не сложно, подскажи, как ты из скрипта делаешь переспавн? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1387884
dsh 3 824 Опубликовано 25 Июня 2021 Поделиться Опубликовано 25 Июня 2021 @phalcor начать изучение этого вопроса можно вот отсюда https://github.com/dsh2dsh/op2ogse/blob/8b534ff69910d00c98ca3fcf9be5db2a95d0bac1/gamedata/scripts/ogse/ogse_campfire.script#L13 Вот, собственно говоря, сам переспаун https://github.com/dsh2dsh/op2ogse/blob/8b534ff69910d00c98ca3fcf9be5db2a95d0bac1/gamedata/scripts/ogse/ogse_campfire.script#L980 4 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1387891
Krolevarka 2 Опубликовано 25 Июня 2021 Поделиться Опубликовано 25 Июня 2021 Решил сделать фичу, как в ОП 2. При смерти ГГ выводится сообщение о том, что он сдох. Решил сделать также, но у меня не получилось. Вписал проверку жив ли ГГ в начальную инфопорцию. (Не знаю важно ли это) info_portion id="storyline_actor_start"> <task>storyline_eliminate_gunslinger</task> <action>my.god_spawn</action> <action>my.gg_podoh</action> </info_portion> Сам скрипт: function gg_podoh() if not db.actor:alive() then db.actor:give_info_portion("gg_pomer") end function sms_otpravka() local snd = sound_object([[device\pda\pda_tip]]) local sactor = alife():actor() local cactor = level.object_by_id(sactor.id) snd:play_no_feedback(db.actor,sound_object.s2d, 5, vector():set(0, 0, 0), 0.7) cactor:give_game_news("Система:\\n%c[255,200,200,200]ГГ сдох.", "ui_iconsTotal_found_money", Frect():set(0,0,83,47), 5001, 8 000) end end Пробовал также через news_manager.send_tip. Но это не помогло. Сам поршень: <info_portion id="gg_pomer"> <action>kalecheniy_death.sms_otpravka </action> </info_portion> Скорее всего скрипт неправильно написан, или же сообщения после смерти главного героя просто не отправляются. Уже кучу раз перепробовал и всё никак не получается. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1387946
naxac 2 595 Опубликовано 26 Июня 2021 Поделиться Опубликовано 26 Июня 2021 @Krolevarka , а откуда вызывается твоя функция, отправляющая сообщение? Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1387951
_g.script 3 669 Опубликовано 26 Июня 2021 Поделиться Опубликовано 26 Июня 2021 4 часа назад, Krolevarka сказал(а): просто не отправляются Сообщения после смерти ГГ вполне себе отправляются. Разве не обращал внимания, когда актор валяется мёртвый, а рандомные смс от сталкеров продолжают поступать. Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1387953
Krolevarka 2 Опубликовано 26 Июня 2021 Поделиться Опубликовано 26 Июня 2021 @naxac Решил сделать по другому. В bind_stalker создал проверку жив ли actor. Если не жив, то выдается инфопоршень. Этот инфопоршень отправляет сообщение. Скрытый текст if not db.actor:alive() then my.portion() end Скрытый текст <info_portion id="gg_smert"> <action>my.sms_otpravka</action> </info_portion> Скрытый текст function sms_otpravka(actor, npc) news_manager.send_tip(db.actor, "%c[255,255,128,128]System:\n%c[default]You are dead.", nil, nil, 40000) end function portion() db.actor:give_info_portion("gg_smert") end В итоге сообщение отправилось успешно. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1388068
Norman Eisenherz 354 Опубликовано 26 Июня 2021 Поделиться Опубликовано 26 Июня 2021 @Krolevarka Позвольте вмешаться: нужен ли вообще инфо-поршень, если действие выполняется один раз на перезагрузку? Может, достаточно будет такого варианта: Spoiler [scripts\bind_stalker.script] function actor_binder:update(delta) object_binder.update(self, delta) (+) if not db.actor:alive() then if not death_msg then death_msg = true news_manager.send_tip(…) end end Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1388098
Zander_driver 10 348 Опубликовано 26 Июня 2021 Поделиться Опубликовано 26 Июня 2021 (изменено) 39 минут назад, Norman Eisenherz сказал(а): нужен ли вообще инфо-поршень Не нужен. Просто ненужное, бесполезное, лишнее действие. Сродни религиозно-ритуальным действиям людей, не понимающих что они делают и как добиться желаемого. 2 часа назад, Krolevarka сказал(а): В bind_stalker создал проверку жив ли actor. Если не жив, то ...То почему бы не отправить сообщение прямо оттуда? Из колбека on_death или hit... @Norman Eisenherz, апдейт теребить для этого совсем не требуется. И, это более вредно, чем теребить без надобности инфопоршни. Изменено 26 Июня 2021 пользователем Zander_driver 1 1 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/565/#findComment-1388101
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти