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 Ссылка на комментарий
Norman Eisenherz 320 Опубликовано 2 Апреля 2023 Поделиться Опубликовано 2 Апреля 2023 @Kirgudu И снова дьявол кроется в деталях: если сравнить имена объектов, то в твоем сейве имя pseudodog_weak#, а у меня проблема с мутантом, который живет в пещере за АТП и имеет уникальное имя esc_pseudodog_strong. У слабой псевдособаки вызов binder:load действительно ловится, у этой – нет. В [all.spawn] для этого зверя указано section_name = pseudodog_weak, то есть вроде бы точно такая же псевдособака. 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Zander_driver 10 342 Опубликовано 3 Апреля 2023 Поделиться Опубликовано 3 Апреля 2023 10 часов назад, Norman Eisenherz сказал: У слабой псевдособаки вызов binder:load действительно ловится, у этой – нет. А что у них прописано в script_binding в их секциях? Неужели нечто разное... (Тогда надо прописать штатный биндер, и будет ловить нормально) Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
Norman Eisenherz 320 Опубликовано 3 Апреля 2023 Поделиться Опубликовано 3 Апреля 2023 (изменено) Нашлась еще одна неведома зверушка: кабан esc_bd__m_boar_e_0007, который спавнится в виде трупа среди аномалий западнее а/м моста (или севернее вагончика, где лежит раненый Толик). @Zander_driver Оба мутанта описаны только в [all.spawn]. Единственная запись со словом script: script_version = 6. В исходных конфигах одна ссылка для всех вариантов: script_binding = bind_monster.bind. Изменено 3 Апреля 2023 пользователем Norman Eisenherz Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
h0N0r 365 Опубликовано 4 Апреля 2023 Поделиться Опубликовано 4 Апреля 2023 @Norman Eisenherz Затестил скрипт с переменной, она тру после первого юза / сейвлоада, но сбрасывается в false при смене уровня. Если добавить в se_monster.script: function se_monster:keep_saved_data_anyway() return true end то будет сохранение. К примеру, если подобный блок удалить в se_zones.script для se_restrictor, то их логика будет сбрасываться на начало после смены уровня. ; test sr [logic] active = sr_idle@1 [sr_idle@1] on_info = {+ai4_sr_to_2} sr_idle@2 %=send_tip(SR_to_section_2)% [sr_idle@2] on_info = {+ai4_sr_to_3} sr_idle@3 %=send_tip(SR_to_section_3)% on_game_timer = 50 | {-ai4_sr_to_3} %+ai4_sr_to_3% [sr_idle@3] 1 2 https://sites.google.com/view/xray-sdk-0-4-smg Ссылка на комментарий
Norman Eisenherz 320 Опубликовано 4 Апреля 2023 Поделиться Опубликовано 4 Апреля 2023 Да, оно: потестил на начальных зверях (+ еще два уника в подземке НИИ), состояние запоминается правильно. Есть ли информация о причине такого ограничения? Не приведет ли снятие запрета к записи каких-нибудь неправильных данных в нетпакет? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
h0N0r 365 Опубликовано 8 Апреля 2023 Поделиться Опубликовано 8 Апреля 2023 @Norman Eisenherz Насчёт ограничений, есть исходники ориг. ТЧ: https://github.com/mortany/xray xrServer_Object_Base.cpp, //client object custom data serialization SAVE u16 client_data_size = (u16)client_data.size(); https://sites.google.com/view/xray-sdk-0-4-smg Ссылка на комментарий
Norman Eisenherz 320 Опубликовано 8 Апреля 2023 Поделиться Опубликовано 8 Апреля 2023 Не знаю, насколько это подходит… Нашел в OGSR [se_stalker.script] вот такой комментарий: Spoiler -- Dsh (c): -- Это включать не нужно, будут проблемы. Ни движок, ни скрипты на это -- не расчитаны. Проблема в том, что оно работает и клиентские данные -- сохраняются. При том, все данные, не только то, что скрипты -- запишут, но и то, что движок сохраняет. В этом-то и -- проблема. Например, движок сохраняется информацию о best_danger и -- вот что получается. На Янтаре у долговца был best_danger, ну пусть -- другой долговец. Теперь мы уходим с локации и best_danger остается -- в клиентских данных. Через некоторое время этот долговец тоже -- уходит с Янтаре и мы с ним пересекаемся в Баре. И что мы видим? -- Долговец в истерике, т.к. у него есть best_danger, который был -- загружен из клиентских данных, т.к. они не были очищены из-за -- keep_saved_data_anyway(). Тоже самое с хитовой памятью. На другой -- локации у непися всплывает хит, m_object которого нет, т.к. он -- остался на той локации, где хит был нанесен. -- -- Со скриптами тоже проблема всплывает. Например, в -- xr_logic. Представим, что непись был в смарте, получил там работу и -- у него была активная логика. Мы ушли с локации и активная логика -- была сохранена в клиентских данных. Потом непися выгнали из смарта -- и его приняли в другой. Все это было в оффлайне и клиентские данные -- все еще содержат активную логику первоначального смарта. Теперь мы -- пересекаемся с ним на какой-нибудь локации и тут xr_logic -- восстанавливает его активную логику и оказывается, что никакой -- вертекс пути это логики, на этой локации не существует. Движок -- обижается и падает. -- -- Переделывать все это я не вижу смысла. Сохранение активной логики -- скриптовыми методами требует меньших усилий, чем приведение всего -- этого в порядок. -- -- function se_stalker:keep_saved_data_anyway() -- return true -- end Вроде как мутанты тоже должны запоминать условия последних стычек, но за полное прохождение вылетов не случилось – видимо, принудительное сохранение для них безопаснее, чем для NPC. 2 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
h0N0r 365 Опубликовано 9 Апреля 2023 Поделиться Опубликовано 9 Апреля 2023 14 часов назад, Norman Eisenherz сказал: Не знаю, насколько это подходит… Мне напомнило о том самом алайфе, без смартов и прочего, где ии более живой и без принудительного склероза. https://sites.google.com/view/xray-sdk-0-4-smg Ссылка на комментарий
Norman Eisenherz 320 Опубликовано 10 Апреля 2023 Поделиться Опубликовано 10 Апреля 2023 Можно ли методом obj:set_nonscript_usable(false) "окирпичить" предмет вроде аптечки или оружия? Какой биндер править? Прямое изменение при сбросе предмета не мешает потом его поднять и использовать. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Zander_driver 10 342 Опубликовано 10 Апреля 2023 Поделиться Опубликовано 10 Апреля 2023 7 часов назад, Norman Eisenherz сказал: не мешает потом его поднять и использовать. И не помешает, т.к. аптечки и подобное юзаются движком напрямую, без участия скриптов. Тут либо править движок, либо пользоваться колбеками наподобие before_use , которые опять же найти можно в исправленных движках. 1 2 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
madrazor 10 Опубликовано 12 Апреля 2023 Поделиться Опубликовано 12 Апреля 2023 Есть ли в сталкере возможность спавнить вейпоинты через скрипт? Ссылка на комментарий
mole venomous 3 510 Опубликовано 13 Апреля 2023 Поделиться Опубликовано 13 Апреля 2023 (изменено) На движке ОГСР можно вынести пути во внешний файл. А скриптом можно заспавнить НПС, которому в кастом дате указать пути, пописанные в этом файле. Скрытый текст Указать путь к путям () в файле external.ltx Дальше ручками добавлять новые секции с прописанными к ним кастом-датами. А в кастом дате уже указываем пути и остальное: Или при спауне скриптом сразу записывать дату, но, насколько помню, таким образом не всё туда запишется. Скрытый текст Пример с функциями АМК-мода: local obj=amk.spawn_item("ros_killer_respawn_1",vector():set(-70.358726501465,-13.440641403198,-160.03511047363),107,201811) if (IsStalker(obj)) then local t=amk.read_stalker_params(obj) t.custom="[logic]\nactive=walker\n[walker]\npath_walk=add_merc_esc_walk\npath_look=add_merc_esc_look" amk.write_stalker_params(t,obj) end Изменено 13 Апреля 2023 пользователем mole venomous 1 Здесь могла быть ваша реклама. Ссылка на комментарий
imcrazyhoudini 210 Опубликовано 13 Апреля 2023 Поделиться Опубликовано 13 Апреля 2023 @mole venomous по-моему он спросил не о кастом дате, а о возможности спавнить вэй-поинт скриптом. ищу человека, который смог бы заняться разработкой погоды на OGSR. кто может помочь - пишите в ЛС. Ссылка на комментарий
mole venomous 3 510 Опубликовано 13 Апреля 2023 Поделиться Опубликовано 13 Апреля 2023 Может, я чего-то не знаю. Но точки путей, это объекты, которые можно заспавнить? Я лишь подумал, что некорректно поставлен вопрос 1 Здесь могла быть ваша реклама. Ссылка на комментарий
dsh 3 824 Опубликовано 13 Апреля 2023 Поделиться Опубликовано 13 Апреля 2023 В OGSR точки пути можно и скриптом создавать, если нужно именно через скрипт. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
mole venomous 3 510 Опубликовано 13 Апреля 2023 Поделиться Опубликовано 13 Апреля 2023 (изменено) 5 часов назад, dsh сказал: можно и скриптом создавать Сложно представить ситуацию, когда это нужно. Скрытый текст ситуации, когда ГГ даёт НПСу указание, как подчинённому, типа "Стоять здесь!". И он остаётся там навсегда уолкером, например, а не в ремарке. Изменено 13 Апреля 2023 пользователем mole venomous 1 Здесь могла быть ваша реклама. Ссылка на комментарий
Zander_driver 10 342 Опубликовано 13 Апреля 2023 Поделиться Опубликовано 13 Апреля 2023 8 часов назад, mole venomous сказал: Но точки путей, это объекты, которые можно заспавнить? Нет. Во всяком случае это НЕ игровой объект в его классическом представлении (серверный, клиентский, имеет id, секцию, конфиг, класс...) - нет. Точки путей это более простая вещь, которая таким объектом не является. Заспавнить их нельзя. Скриптом создать (в OGSR) - можно. 1 час назад, mole venomous сказал: Сложно представить ситуацию, когда это нужно Сложно представить? А если еще подумать? Что можно ТОЛЬКО ТАК и делать? Все случаи, когда нам надо путь динамически создать, а не прибить его раз-навсегда гвоздями в алл.спавн. Это только исключительно динамическое создание через скрипт. По другому никак. 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. Ссылка на комментарий
mole venomous 3 510 Опубликовано 13 Апреля 2023 Поделиться Опубликовано 13 Апреля 2023 @Zander_driver , Скрытый текст ты сейчас не согласен с тем, что сам утверждаешь? Судя по красному крестику. Если что, там у меня не вопрос, хоть и со знаком вопроса. Это недоумение. К вопросу о том, как заспавнить поинты. Ну да ладно. Не нужно быть матёрым кодером, что бы понимать, что точки путей это не объекты. Поэтому вопрос юзера был, как я считаю, некорректным. 17 минут назад, Zander_driver сказал: динамически создать Об этом я думал. И первое, что всплыло в голове, была СЗ. Не знаю, как у тебя там... Но не вижу в этом острой необходимости. Моб-хоумами с разными радиусами не так сложно поиграться, а для сталкеров я бы не стал так рандомно накидывать. Ну это моё видение, я допускаю одинаковые пути. Здесь могла быть ваша реклама. Ссылка на комментарий
Zander_driver 10 342 Опубликовано 13 Апреля 2023 Поделиться Опубликовано 13 Апреля 2023 1 минуту назад, mole venomous сказал: Но не вижу в этом острой необходимости. Скрытый текст В одно окно смотрели двое. Один увидел дождь и грязь. Другой — листвы зелёной вязь, весну и небо голубое. В одно окно смотрели двое. В чем я только-что еще раз, в стопятисотый раз убедился. Что глядя на одни и те же, вроде бы, вещи, и даже одинаково их понимая, кажется. Видеть можно совершенно противоположные, разные "явления"... Ну или не видеть. А я вижу... и почему-то только я? 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. Ссылка на комментарий
mole venomous 3 510 Опубликовано 13 Апреля 2023 Поделиться Опубликовано 13 Апреля 2023 (изменено) @Zander_driver , 8 минут назад, Zander_driver сказал: Видеть можно совершенно противоположные, разные "явления" так всегда было. И во всём. Но это не повод для грусти, вообще то. Я бы так сказал: Не вижу острой необходимости. Вообще то, я сам любитель рандома. Ещё со времён "Диабло". Но считаю, что он не должен быть совсем хаотичным. Ну то есть, мне не лень будет сделать с десяток дорог, из которых каждый раз будет выбрана одна. Изменено 13 Апреля 2023 пользователем mole venomous Здесь могла быть ваша реклама. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти