Сталкер Монолита: У GSC похоже была задумка сделать для ГГ свои группировки, а для НПС свои.
А так это просто группировка, может отношениями и отличается, и названием (см. тексты).
а зачем новая группировка?
Действительно, а нужна ли 'новая' группировка для ГГ, при игре за ту или иную группировку или же достаточно имеющихся?
Как в кодах игры идентифицируется ГГ (игрок)? По Id (db.actor:id()), по ClassId (clsid.actor), по имени ("single_player"). иные способы, как правило, экзотичны/эксклюзивны.
Как различаются неписи? По ClassId, который для всех группировок сталкеров/бандитов/военных/монолитовцев/... одинаков (clsid.script_stalker/clsid.stalker) и конечно по группировке (community).
Однозначного ответа нет, т.к. для этого необходимо знать все нюансы кодов как оригинала, так и мода, под который делаются изменения.
Если НЕ сделать новую группировку - могут быть различные коллизии (в том числе и фатальные). Многие алгоритмы, например, сканируя Id объектов ограничиваются минимальными перепроверками (типа: IsStalker(object), что может привести к обращениям с объектом-актор как к серверным объектом. Однако ... серверный объект актора имеет значительные отличия от того же долговца или монолитовца. С ним не пройдет проверка типа: se_obj:character_community() или иные!
Если же создать новую группировку и даже сделать ее максимально идентичной (dolg->actor_dolg и т.п.) то можно нарваться на иного плана коллизии. Логика, прописанная многим объектам, не знает как правило, о новой группировке и ... те же БТРы/вертушки, которым в исключения поставлены дружественные вояки, будут поливать огнем Астора-милитари. И т.п.
Т.о. как создание новых квази-группировок для ГГ, так и использование имеющихся, для перевода в них ГГ, имеют свои нюансы, которые можно учесть только перелопатив все коды (скрипты и логику) и внеся соответствующие изменения.
ИМХО, плодить группировки более простой путь (им пошли разрабы), но при желании использовать все имеющиеся группировки и их пополнения в модах ("чистое небо", "греховцы", ...) приводит к большой вероятности 'запутаться. Использование уже имеющихся (и добавляемых) - более трудоемко в процессе отлова критичных ошибок, но ... 'по-чище и по-проще'.
Futura
Невнимательность оказывает всегда плохое подспорье и как правило приводит к "... но безрезультатно".
Отслеживать группировки по 'clsid' уместнно только для монстров, а не для гуманоидов.
Отслеживать 'гуманоидные' группировки следует по obj:community() (для клиентских объектов) или se_obj:character_community() (для серверных, к коим ограниченно относится actor и данный метод не применим).
При чем тут 'object_factory' - не понял ни мысли ни смысла.
Но одна из основных идей моего поста, не в том 'как и чем тебе' отслеживать, а в том, что о 'созданной тобою' новой группировке (даже грамотно прописанной в основных конфигах) не ведают многие уже имеющиеся алгоритмы/функции и ... именно это нужно учитывать при принятии решения "создавать иль нет". А если и создавать, то быть готовым перелопатить все скрипты/логику в поисках и устранении коллизий.
Artos
Как раз для этого довольно просто использовать net-packet смарта (могу написать пример).
...
У меня как раз не созидательное, а созерцательное настроение, поэтому постараюсь подбросить материальчика сегодня-завтра.
Хочу спросить. Созидательное настроение не появилось :-)?
Отлично понимаю о чём Вы.
Сам, частенько бывает, начинаю за здравие, а заканчиваю...
Хорошо, подожду. Уж чему-чему, а этому в нашей стране хорошо научили.
erlik
Дружище, извини что резковато получилось. Сам не знаю что нашло.
отредактировал(а) Gun12: 03-05-2010 23:39 GMT3 час. Не стань номинантом премии Дарвина.
Не забыл, помню.
Если бы появилось созидательное, то ... ковырял бы коды сборки (работы ой как еще много) не встревая в разговоры, но и созерцательное (при котором порой есть настроение пописАть) прерывают кой-какие дела.
Начал писать и ... решил кое-что перепроверить/убедиться еще разок. Как нередко бывает, подувлекся, появились кой-какие вопросы, нашел кой-какие ответы ... вот и тяну пока резину. :-)
P.S. Кстати, хотел спросить (чисто спортивное любопытство) по твоему варианту добавления группировки актор-монолит: "А почему ты присвоил индекс 'arena_enemy, 16, actor_monolith, 18', если логика предполагает очевидные 17?" Движек вроде бы именно эти цифирьки хранит у себя в качестве идентификаторов группировок ... и пропуск/разрыв не известно как (и разрабам вероятно) может повлиять.
Теперь всем сразу стало необходимо доказать насколько я не прав.
я только хотел уточнить зачем было это усложнение - так как по себе знаю как эту таблицу реляций (сам штук 10 группировок в свое время насоздавал) муторно настраивать под новую группировку.
И все. Твой скрипт-> твое решение -и никто его не оспаривает. Так что не принимай так уж серьезно (в плане якобы скрытой в контексте вопроса критики ) эти questions...:-)
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
(не в качестве поддержки/критики, а ... познания ради) erlik
Если бы мне довелось писать кусок кода для включения его кем-то куда-то в оригинал игры ... то я бы тоже пошел этим путем (созданием группировки-клона). Ведь разрабы, создав уже аналоги группировок долга и свободы, расчистили основные коллизии при попадании ГГ в иную группировку.
Однако, когда начал расчищать завалы в Симбионе (там тоже понаплодили в свое время ...), то понял, что наступил период необходимости перевода 'кол-ва в каКчество' :-) и ... кастрировал квази-группировки. Однако, пришлось немало кодов/логики править (да и немало наверное осталось).
Artos, стыдно сказать, ну да ладно. Пусть хоть другие не ошибутся.
Затупил. Добавил сначала третьим номером.
Запустил. Что за ерунда? В лагере все друг с другом передрались.
Поставил 17-м тоже самое.
Ну на 18-м меня расклинило. Забыл в конце колонку добавить с actor_monolith.
Ржал долго с себя. Да так и оставил. Лень стало переделывать.
А есть какие тонкости?
Gun12
К сожалению о тонкостях мы можем только гадать, т.к. нет исходников движка.
Моя практика ковыряния говорит о том, что настройки из "game_relations.ltx" считываются движком и запоминаются, но ... очевидно, что глупо хранить строковые переменные/значения при наличии введенных разрабами же числовых идентификаторов.
Если предположить, что строится некий массив/таблица, в которых запоминаются идентификаторы, а не стринги, то ... как и при сканировании любого массива - при первом же натыкании на 'nil', процесс заканчивается.
Можно конечно заметить, что разрабы уже сами 'пропустили' индексы 3 и 4, но ... их то они могли "заглушить", чего естествено в любом случае не сделали с последующими.
Именно поэтому вероятно (действие заглушки на 3 и 4) у тебя не получилось первоначально (или могло не получиться).
В общем я стараюсь к этому конфиг-файлу подходить очень аккуратно, не внося ничего лишнего и сохраняя "причуды" разрабов ... Ведь ошибки/коллизии всплывут (ли?) только в процессе игры и не факт, что вначале.
В кодах Сталкера столько мусора и нюансов, что стараюсь без нужды не рисковать ... хотя и не брезгую лопатить 'все и вся'.
В своем "game_relations.ltx", кстати, оставив разных 'actor_killer' в качестве "напоминалки" на будущее, отделив их именно пробельным пропуском индекса (понимаю, мусор и следовало бы удалить, но ... а жаба душит, а вдруг понадобятся).
Artos, вряд ли. Для того чтобы это НЕ работало нужно как минимум два условия.
1. Таблица собирается как массив, посредством того же string.gmatch, и ключами ставятся эти числа.
2. Обход осуществляется с помощью ipairs или for
Неужели разрабы сделали всё для таких сложностей?
Хотя, согласен, отбрасывать такой вариант нельзя.
P.S. С резюме согласен. Не стОит искать приключений. Они сами нас найдут.
отредактировал(а) Gun12: 04-05-2010 00:33 GMT3 час. Не стань номинантом премии Дарвина.
Gun12
Я не о "неработоспособности' варианта(ов) с пропущенными индексами. В свое время версии Симбиона работали с подобными пропусками и вроде бы нормально, но ... именно вроде бы. Не могу утверждать, т.к. задавшись целью отловить некоторые отдельные и редкие странности во взаимоотношениях группировок так и не смог получить однозначных соответствий с пропусками.
Ну а как собирается массив, тоже можно догадываться. Если принять во внимание пристрастие разрабов к считыванию по-строчно и парсингом текущих строк, то как раз и получается - дырявая таблица. А потрудились ли они ее нормализовать/отсортировать - вопрос без ответа.
Ну да это мы уже залезли в дебри гадалок/предполагалок и врядли чего нагадаем. :-)
Резюме: Можно использовать и как есть. Но я добавляю: при необходимости не стОит усложнять и добавлять неоднозначностей.
SIT DEMON
Не находишь свою логику порочной?
Не сжигающее пламя - неписи у костра дохнут -> не убивающие аномалии - неписи в них дохнут -> неубивающие пули - ниписи от них дохнут ...
Может вообще из Зоны убрать все опасное и потенциально приводящее к гибели, да и монстров превратить в одомашненные варианты?!
По сути: Не костры нужно делать (ИМХО) неубивающими, а неписей научить не 'заходить/садиться' в костры. Костер вообще то в кодах игры является одним из типов аномалий и наносить ущерб должен. Схема кампа должна предотвращать попадание неписей в костер, рассаживая их на безопасном расстоянии.
В чистой игре порой бывает, что неписи, под управлением других схем логики, забредают в костры, но ... и сами разрабы не очень то озаботились подправить енто дело. Что же говорить о неопытных игроках?
Если есть желание - копай в сторону исправления схем поведения неписей и их чувствительности к кострам, т.к. сейчас костры то кусаются, но неписи НЕ считают их опасными, не подозревая даже откуда идут повреждающие хиты и соответственно не обходят костры на безопасном расстоянии.
karavan
Хорошо. Задам вопрос по другому:
В каких конфигах и что нужно изменить, чтобы костёр не наносил повреждения?
P.S: Цель вопроса - получить ответ.
Ночи напролёт, водка как вода, что нас не убьёт, то всё ерунда. То что не убьёт, делает сильней, если ты устал, то проспись и пей !!!
Всё! Выяснил! Надо было effective_radius на "ноль" установить.
отредактировал(а) SIT DEMON: 04-05-2010 05:40 GMT3 час. Ночи напролёт, водка как вода, что нас не убьёт, то всё ерунда. То что не убьёт, делает сильней, если ты устал, то проспись и пей !!!
Можно. Учись текстурить и снимай автопортрет.
Кстати, в подтверждение моим словам - посмотри на лица НПС из ТЧ, ЗП, ЧН - сногие из ключевых НПС рисовались с реальных людей.
Вот смотрите: Чтоб стартануть новый файл с Русским текстом в ТЧ, нужно в файле localization.ltx прописать имя нового файла.
Вопрос: Как тоже самое сделать в ЗП?Ведь в файле localization.ltx из ЗП не написаны файлы текста, как в ТЧ.
Ради интереса посмотрел - действитель**50316ea8aab1bb10eeba** localization.ltx прописана секция
[code][string_table][/code]
Лично мне она напоминает XML тег
[code][/code]
Возможно где-то завязана ссылка из тега на эту секцию, а уже в ней записано :
[code]language = rus[/code]
Что может быть ссылкой на папку RUS
Из этого, повторю - предположительно, получается, что в эту папку можно просто добавлять свои файлы, а игра уже считает их автоматом (не знаю, может быть добавит модуль с названием по имени файла )
отредактировал(а) Gun12: 04-05-2010 19:04 GMT3 час. Не стань номинантом премии Дарвина.
Spore Не в тему пишешь! Тебе >>>СЮДА<<<. Диминох ставь fire_wound_protection на 1, а не 1.0.
добавлено спустя 35 минут
Кстати, такой вопрос. Пробовал артефактам в Т.Ч. сделать свойства увеличивать грузоподъёмность. Просто прописать как в Ч.Н. прописано, не катит. Можно ли это как то сделать, если да, то как?
отредактировал(а) TheDoktor: 05-05-2010 10:10 GMT3 час.
Я – хозяин своей судьбы, но только судьба знает, где закончится мой путь.
В этой секции задаются параметры артефакта, начиная от внешнего вида и заканчивая коэффициентами различных эффектов вроде вывода радиации. Сделаем копию секции, принадлежающей "Медузе", и заменим её название с af_medusa на af_romashka.
Должно выйти примерно вот так:
[af_romashka]:af_base
GroupControlSection = spawn_group
$spawn = "artifacts\moscito romashka"
Назначение некоторых параметров, влияющих на одевшего артефакт:
health_restore_speed - прирост к скорости восстановления здоровья
radiation_restore_speed - прирост скорость вывода радиации
satiety_restore_speed - прирост к голоду
power_restore_speed - прирост к выносливости
bleeding_restore_speed - прирост к скорости остановки кровотечений
Создание описания и имени артефакта
Заходим в gamedata\config\text\rus и открываем файл string_table_enc_zone.xml. Добавим туда строку с названием артефакта. "Ромашка"
Теперь у артефакта есть имя, но одного его недостаточно. Нужно сделать описание.
Поэтому добавим и его. Очень странный артефакт. Впервые появился в Зоне где-то в 2011 году, но толку от него - ноль. Ученые
не обнаружили никакого влияния артефакта на организм носителя.
Все, поздравляю, вы только что создали свой первый артефакт! :)
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.