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 605 Опубликовано 18 Января 2021 Поделиться Опубликовано 18 Января 2021 (изменено) @Jekyll , вот это owner_id = bit_not(0) заменить на owner_id = p_obj.id Хотя, по идее, при owner_id = -1 хит и так должен наноситься "от имени" аномалии. Изменено 18 Января 2021 пользователем naxac 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1364781
AndreySol 215 Опубликовано 18 Января 2021 Поделиться Опубликовано 18 Января 2021 11 часов назад, naxac сказал(а): хит и так должен наноситься "от имени" аномалии. А в движке Вы смотрели, действительно имеется проверка, что если owner_id = -1, то берем ID аномалии? Прежде, чем говорить об идее, надобно смотреть в исходники движка. У нас идеи одни, а у разрабов того времени, они могли сильно отличаться... Это мое личное мнение. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1364887
Это популярное сообщение. naxac 2 605 Опубликовано 19 Января 2021 Это популярное сообщение. Поделиться Опубликовано 19 Января 2021 (изменено) @AndreySol , разумеется, прежде, чем писать, я посмотрел код в движке. Скрытый текст void CCustomZone::CreateHit ( u16 id_to, u16 id_from, const Fvector& hit_dir, float hit_power, s16 bone_id, const Fvector& pos_in_bone, float hit_impulse, ALife::EHitType hit_type) { if (OnServer()) { if(m_owner_id != u32(-1) ) // проверка id_from = (u16)m_owner_id; NET_Packet l_P; Fvector hdir = hit_dir; SHit Hit = SHit(hit_power, hdir, this, bone_id, pos_in_bone, hit_impulse, hit_type); Hit.GenHeader(GE_HIT, id_to); Hit.whoID = id_from; Hit.weaponID = this->ID(); Hit.Write_Packet(l_P); u_EventSend (l_P); }; } @Jekyll, присмотрелся внимательнее - у тебя ошибка в функции. При записи пакета параметр max_power пропущен. Изменено 19 Января 2021 пользователем naxac 4 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1364912
Jekyll 92 Опубликовано 19 Января 2021 Поделиться Опубликовано 19 Января 2021 3 часа назад, naxac сказал(а): При записи пакета параметр max_power пропущен. И правда... Вернул на место - все заработало как надо... Не представлял даже, что отсутствие этого параметра так важно и может сломать нанесение хита неписям... Урок усвоен. New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1364922
ARTLantist 16 Опубликовано 22 Января 2021 Поделиться Опубликовано 22 Января 2021 Как вывести сообщение в верхней центральной точке, где высвечиваетсч активное задание при нажатии таб? Мне нужен именно скрипт, отвечающий жа это, хочу заменить таким типом сообщения то, которое просто приходит на пда. Нужно сделать сообщение для дозиметра. Не хочется засорять историю сообщений пда постоянными измерениями уровня радиации. Как проверить наличие артефакта (любого) в инвентаре гг? И как сделать функцию, которая будет каждую секунду прибавлять немного радиации? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1365720
naxac 2 605 Опубликовано 23 Января 2021 Поделиться Опубликовано 23 Января 2021 @ARTLantist , вот в этой теме можешь найти ответы. Поиском пользуйся. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1365790
strannik-rus 0 Опубликовано 24 Января 2021 Поделиться Опубликовано 24 Января 2021 Добрый день, подскажите пожалуйста, как прописать скрипт на дверь в сталкер зов припяти, чтоб дверь открывалась нажатием клавиши "F" (использовать). Скрипт двери я прописал, но дверь открывается только в одну сторону и только тогда, когда актер в нее упирается. А хотелось бы как в игре, чтоб выскочило сообщение (открыть дверь - нажмите F) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1366008
gam 118 Опубликовано 24 Января 2021 Поделиться Опубликовано 24 Января 2021 @strannik-rus ЕМНИП в ЗОВЕ это работает от рестрикторов. Но не факт конечно. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1366013
strannik-rus 0 Опубликовано 28 Января 2021 Поделиться Опубликовано 28 Января 2021 25.01.2021 в 11:50, Купер сказал(а): @strannik-rus , стандартный набор логики ph_door. От части к части, в принципе, не сильно менялся. Пример ingame: gamedata\configs\scripts\jupiter\jup_b1_door.ltx Показать [logic] active = ph_door@locked [ph_door@locked] locked = true closed = true snd_open_start = trader_door_locked tip_open = jup_b1_door_is_closed on_info = {=actor_in_zone(jup_b1_open_door_zone)} ph_door@close [ph_door@close] locked = false closed = true snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop on_use = {+jup_b1_give_task} ph_door@open %+jup_b1_already_visited%, ph_door@open tip_open = tip_door_open on_info = {!actor_in_zone(jup_b1_open_door_zone)} ph_door@locked [ph_door@open] locked = false closed = false snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop tip_close = jup_b1_bar_door on_info = {+jup_b1_give_task -jup_b1_already_visited} ph_door@locked %+jup_b1_already_visited% Смотри, что мог упустить Это логика закрытой двери, тоесть выскакивает сообщение, что дверь закрыта изнутри. Но я уже нашел ту, что нужно. Правильная - вот такая: Скрытый текст [collide] ignore_static [logic] active = ph_door@close [ph_door@close] locked = false closed = true snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop on_use = ph_door@open [ph_door@open] locked = false closed = false snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop on_use = ph_door@close Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1366795
Colder 12 Опубликовано 28 Января 2021 Поделиться Опубликовано 28 Января 2021 Всем привет! Парни подскажите функцию на проверку рядом активной аномалии. Например: если аномалия ЖАРКА рядом с гг находится в радиусе 2 метров происходит то или иное действие! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1366844
Zander_driver 10 357 Опубликовано 28 Января 2021 Поделиться Опубликовано 28 Января 2021 @Colder Если совсем примитивно реализовать, то функция должна перебирать все 65к объектов в игре, выбирая среди них нужные аномалии и проверяя дистанцию до каждой. Если реализовать более сложно и грамотно, то к аномалиям нужен скриптовый биндер. Каждый биндер при подключении к объекту (читай - при входе его в онлайн), регистрирует его в некой таблице-буфере, и искомая функция перебирает уже этот буфер, опять же проверяя дистанцию до каждой аномалии. Второй способ выгоднее тем, что перебираются только аномалии. А не все-подряд объекты. Что-то еще более-другое, вряд ли возможно выдумать на оригинальном движке. А движок вы кстати не уточнили... 1 Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил. Я понял что моя старая подпись что-то нарушает. Удалил все ссылки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1366846
_g.script 3 670 Опубликовано 28 Января 2021 Поделиться Опубликовано 28 Января 2021 (изменено) @Colder обозначь аномалию, как объект и установи условие, при котором между ГГ и объектом будет меньше указанного расстояния для выполнения необходимого действия. И, как и обозначил Zander, это перебор 65 тысяч объектов, но способ рабочий. Если движок 10006 и ранее, посмотри в файлах амк-мода (amk_anoms.script), как определить аномалию. Дальше методом научного тыка тебе станет уже понятнее. Изменено 28 Января 2021 пользователем mole venomous 1 Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1366851
AndreySol 215 Опубликовано 29 Января 2021 Поделиться Опубликовано 29 Января 2021 @Colder @Zander_driver @mole venomous А может проще сделать ребята? У аномалий есть биндер(bind_anomaly.script), как уже выше сказали, и у него есть ф-ция function anomaly_binder:update(delta) object_binder.update(self, delta) end Вот в ней и делать проверку на расстояние до актера и выполнять что необходимо. У меня сейчас биндер подключен к двум типам аномалий, для одних одни действия, для других - другие. А те аномалии, что мне не нужны были - биндер не подключен, и соответстввенно нагрузки на движок не создают + биндер работает только для тех аномалий, которые онлайн. 2 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1366960
Colder 12 Опубликовано 29 Января 2021 Поделиться Опубликовано 29 Января 2021 Изменяюсь спросить а может кто скинуть bind_anomaly? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1366991
AndreySol 215 Опубликовано 29 Января 2021 Поделиться Опубликовано 29 Января 2021 @Colder Активация биндера в конфигах аномалий, для примера радиоактивных: [zone_radioactive] GroupControlSection = spawn_group_zone $spawn = "zones\radioactive" ;$prefetch = 16 class = Z_RADIO script_binding = bind_anomaly.init_radiation ; <----- это добавить hit_impulse_scale = 0.001; 0.01 И сам скрипт-файл биндера. 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1367017
DibokDibokin 1 Опубликовано 29 Января 2021 Поделиться Опубликовано 29 Января 2021 Здравствуйте. Есть ли способ держать принудительно в онлайне нпс с указанными story_id и нпс, которые находятся в указанном смарт_террейне? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1367033
AndreySol 215 Опубликовано 29 Января 2021 Поделиться Опубликовано 29 Января 2021 (изменено) @DibokDibokin Конечно есть. Выставить флаг flSwitchOffline в false, что запретит объекту переход в оффлайн. Для одиночного непися способов два: - в all.spawn выставить для object_flags соответствующее значение(в СДК просто, в разобранном ACDC спавне - сложнее); - скриптово, с помощью ф-ции set_switch_offline(int id, bool v) класса alife_simulator, вторым параметром false. Для гулагов, в настройках работ есть такой параметр, который вроде может запрещать офф\он лайн. Но там точно не помню, давно там не ковырялся. Изменено 29 Января 2021 пользователем AndreySol 1 2 3 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1367039
Colder 12 Опубликовано 30 Января 2021 Поделиться Опубликовано 30 Января 2021 @AndreySol Сделал так : Скрытый текст function radiation_anomaly_binder:update(delta) object_binder.update(self, delta) local actor = db.actor if actor then local dist = actor:position():distance_to(self.object:position()) if dist <= 10 then local hud = get_hud() hud:AddCustomStatic("radiation_hud_static", true) else local hud = get_hud() hud:RemoveCustomStatic("radiation_hud_static", false) end end end Но она почему то не горит а маргает Скрытый текст local actor = db.actor if actor then local dist = actor:position():distance_to(self.object:position()) if dist <= 15 then local hud = get_hud() hud:AddCustomStatic("radiation_hud_static", true) elseif dist <= 25 then local hud = get_hud() hud:RemoveCustomStatic("radiation_hud_static", false) Вот так нормально, можно даже наверно попроще! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1367100
naxac 2 605 Опубликовано 30 Января 2021 Поделиться Опубликовано 30 Января 2021 @Colder Скрытый текст function radiation_anomaly_binder:update(delta) object_binder.update(self, delta) local actor = db.actor if actor then local dist = actor:position():distance_to(self.object:position()) local st = get_hud():GetCustomStatic("radiation_hud_static") if dist <= 10 then if not st then get_hud():AddCustomStatic("radiation_hud_static"), true) end else if st then get_hud():RemoveCustomStatic("radiation_hud_static") end end end end 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1367114
Colder 12 Опубликовано 30 Января 2021 Поделиться Опубликовано 30 Января 2021 @naxac не работает И не вылетает Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/542/#findComment-1367116
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти