Malandrinus 615 Опубликовано 26 Октября 2011 Поделиться Опубликовано 26 Октября 2011 Artos, 1. Если ты (или кто-то ...) считаете такую строку кода валидной:second_speaker:set_relation(1--[[first_speaker:relation(obj)]], obj) а что не так? Закомментирован кусок кода блочным комментарием, но фрагмент синтаксически корректен. Добавлено через 11 мин.: _Призрак_, Есть ли на данный момент возможность повернуть объект типа physic_object? Пытался выбирать кость и хитовать ее - не подходит. Смотрел m_net_utils, но судя по коду возможности изменить direction у объекта при помощи нет_пакетов еще нет. А можно ли как нибудь по другому? Доуточню то, что выше сказал Artos. Поля из cse_abstract доступны в STATE_Write только в момент создания объекта. При этом нетпакет уже заполнен этими данными, но они ещё не прочитаны движком. Если в этот момент перепаковать пакет, то можно всё там поменять. По поводу физики и вращения. Это требует специального визуала для объекта. Надо добавить что-то типа маховика с вращательной степенью свободы. Затем методами класса сочленения (джоинта, вроде как) вращаешь маховик в одну сторону, а весь объект крутится при этом в другую. Точных названий классов сейчас не припомню, но можешь глянуть модуль управления дверью. Двери открываются как раз физическим вращением, и эти команды для этого и были экспортированы. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Artos 99 Опубликовано 26 Октября 2011 Поделиться Опубликовано 26 Октября 2011 (изменено) malandrinus 1. В данном конкретном случае нет ошибки и парсер игры не увидит ошибки в синтаксисе, но(!) это именно частный случай и не применим во многих других. Блочный комментарий внутри вызова метода валиден, внутри просто функции - ошибочен. Привычка использовать подобное - верный путь к набиванию шишек ... (ИМХО) 2. Когда возникает сомнение в корректности кода - стОит писать код 'классическим' способом, т.е. и без сокращений и тем более без сомнительных комментариев. Строка: second_speaker:set_relation(game_object.neutral, obj) - и ни чем по результату не отличима от исходной и при любом раскладе похволяет отсечь любые нюансы как парсера движка, так и прочее ... И чуть дополню/поправлю вышесказанное: Поля из cse_abstract доступны в STATE_Write только в момент создания объекта1. 'Только' - для немалого числа классов тут излишне. Немало обьектов периодически перезаписывают свои нет-пакеты в процессе игры и при этом можно получить доступ к секции 'cse_abstract', распарсив нет-пакет. Так что тут не все так однозначно и требует индивидуального подхода. А вот менять параметры 'на лету', т.е. для объекта в онлайне - порой чревато ... и требует специальных мер (если они вообще доступны). 2. Пытаться изменять параметры в секции 'cse_abstract' следует в методе 'STATE_Read', т.к. именно при этом серверный объект считывает измененные параметры. Но после этого клиентский объект должен как минимум синхронизироваться с серверным, т.к. должен быть хотя бы один раз метод 'STATE_Write' для объекта. Изменено 26 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 26 Октября 2011 Поделиться Опубликовано 26 Октября 2011 malandrinus Строка: second_speaker:set_relation(game_object.neutral, obj) - и ни чем по результату не отличима от исходной и при любом раскладе похволяет отсечь любые нюансы как парсера движка, так и прочее ... Именно, что ни чем не отличима. В обоих случаях один непись в течение нескольких минут бегает за другим, и в итоге они благополучно устраивают разборку. Если меняем отношения с ГГ - срабатывает мгновенно. Хотя и криво (непись продолжает сколь угодно долгое время воспринимать ГГ как дэнжер-объект с типом enemy_sound). Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Artos 99 Опубликовано 26 Октября 2011 Поделиться Опубликовано 26 Октября 2011 (изменено) Dennis_Chikin А почему ты считаешь, что изменив один параметр, и игнорируя наличие иных, ты достигнешь желаемого рузультата? Не стоит забывать, что в игре многое и взаимосвязано и взаимозависимо. Помимо взаимоотношений персоналий на них распространяются и общегрупповые правила и правила гулагов и прочее. Смотреть нужно в конкретной ситуации все взаимозависимые параметры и при необходимости менять и их. А при необходимости даже и денжеры сбрасывать ... Не стоит думать, что игра все сама за модмейкера разрулит. Приводи конкретную ситуацию (желательно применимо к исходной игре) и бум посмотреть ... Не рабочий метод и отсутствие результата после применения метода - далеко не одно и то же. Изменено 26 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Malandrinus 615 Опубликовано 26 Октября 2011 Поделиться Опубликовано 26 Октября 2011 Artos, Немало обьектов периодически перезаписывают свои нет-пакеты в процессе игры и при этом можно получить доступ к секции 'cse_abstract', распарсив нет-пакет. Это противоречит тому, что я знаю. По моим данным, вызов STATE_read/write не при записи/сохранении - результат прямого вызова этих методов со стороны скриптов, и при этом всегда в нём отсутствует начальная часть cse_abstract по понятным причинам. В немодифицированной игре эти вызовы происходят строго при загрузке/сохранении за исключением пары случаев, когда этими манипуляциями занимаются сами авторы игры (они и сами этим грешили, есть такое дело). Серверные данные переписываются постоянно, это факт, но вызовы STATE_read/write в этом не участвуют. Внутри движка клиентская часть имеет прямой доступ к серверной, и в этом попросту нет необходимости. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Artos 99 Опубликовано 26 Октября 2011 Поделиться Опубликовано 26 Октября 2011 (изменено) malandrinus Немного ранее, *Shoker*'у мимоходом давал информацию, что получать кол-во патронов в оружии можно и без использования сторонних апдейтеров ... Что имелось ввиду: Смотрим 'se_item.script', в котором к счастью имеются все классы для оружия (кстати и класс физ.объекта там же). Да, в оригинальном скрипте в этих классах отсутствуют коды с методами STATE_Read|Write, но внеся эти коды мы видим, что они работают(!) и есть доступ к начальной части нет-пакета с секцией 'cse_abstract'. Причем, чтение/запись нет-пакетов происходит не только при старте/сейве игры или при спавне соотв. объекта, но и в процессе(!) игры. Применительно к задаче, которую ставил себе *Shoker*', достаточно было мониторить активный для ГГ ствол (его ID) и для этого оружия распарсивать пакет (точнее его самый конец) чтобы получать значение текущего кол-ва патронов в стволе. Причем(!) не нужно утруждать ни себя ни игру сторонними принудительными вызовами, объект (движек) сам вызывает метод STATE_Write в нужное время (при изменении кол-ва) и дает нам требуемые данные. Есть только минус - при стрельбе очередью периодичность вызова этого метода ниже 'единичного выстрела' и имеется локальная погрешность. Пример кода для чтения в SHoC: function se_weapon_magazined:STATE_Read(reader, iSize) cse_alife_item_weapon.STATE_Read(self, reader, iSize) --/ можно распарсить cse_abstract!!! end function se_weapon_magazined:STATE_Write(packet) cse_alife_item_weapon.STATE_Write(self, packet) --/ можно распарсить cse_abstract!!! if self.id == idWeaponActor then --/ это оружие активное для ГГ? packet:r_seek(packet:w_tell() -5) --/ for SHOC local iAmmoElapsed = packet:r_u16() --/ текущее кол-во патронов в стволе packet:r_seek(packet:w_tell() +3) --/ ставим читалку в конец пакета printf("se_weapon_magazined:STATE_Write:Wpn=[%s],AmmoElapsed=[%s]", self:name(), iAmmoElapsed) end end К чему это? К тому, что, как писал выше, немалое кол-во класcов объектов, параметры которых динамически меняются, имеют вызовы методов STATE_Read|Write для объектов в прцессе игры, а значит(!) и есть доступ к начальной части пакета из которой как минимум можно прочитать секцию 'cse_abstract'. А раз можно прочитать - то скорее всего можно ее и изменить и попробовать заставить прочитать объект этот измененный нет-пакет ... даже в процессе игры, а не только на ее старте/сэйве. К принудительному чтению/записи нет-пакетов можмейкерами из своих скриптов это не имеет отношения. Примечание: При необходимости (и возможности) принудительно вызвать для объекта его 'штатные' STATE_Read|Write можно, например, переводом объекта он-офф-лайн ... Изменено 27 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 26 Октября 2011 Поделиться Опубликовано 26 Октября 2011 (изменено) А при необходимости даже и денжеры сбрасывать ... Не стоит думать, что игра все сама за модмейкера разрулит. Приводи конкретную ситуацию (желательно применимо к исходной игре) и бум посмотреть ... Сбрасывать - это как ? А ситуацию описывал чуть раньше. Соль. Конкретно я пытался поправить сцену на входе в Темную Долину. Там бандита можно лечить, после чего ГГ меняется группировка, а бандит выгоняется из под смарта val_escort и захватывается val_lager_bandits. И идет в этот самый лагерь. Было изменено лечение, с попыткой изменять отношения неписей. Изменения отношений я не вижу. Отношение к ГГ меняется, но бандит находится под дэнжером, и выгоняться из смарта - выгоняется, но не захватывается, а вместо этого начинает охотиться на долговцев. Результаты лечения других неписей в других местах - тоже странны. По логу - отношения неписей к ГГ меняются, а вот между собой - нет. P.S. Общегрупповые правила - похоже, да. Попробую посмотреть. Изменено 26 Октября 2011 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Artos 99 Опубликовано 27 Октября 2011 Поделиться Опубликовано 27 Октября 2011 (изменено) Dennis_Chikin Не нужно думать, что упомянув слово "Соль" - всем и всякому сразу и все ясно и известно. Например я, не плохо отношусь к НС, но чтобы разбитаться в деталях ... так что потрудитесь далее не удивляться неосведомленности мнигих в том, что вам ясно как свои пять пальцев. Из твоего пояснения ничего не понял, кто откуда выгоняется и за кем гоняется. Сорри. По денджерам: имеется конкретно схема 'xr_danger.script' и если потребно, то неслодно внести требуемые правки, дабы можно было в нужное время для нужного НПС сбрасывать иль изменять требуемое ... По отношениям: Если бы ты не только на НС был зациклен, то например, в том же HLC5, в котором есть и лечение раненых врагов и изменение отношений (и смена группировки вылесенного!) мог бы наблюдать, как 'групповые отношения' влияют на игру. Например ни что не влияет на отношения внутри группировки неписей, но если вылечить солдата и сменит ему группировку - свои же и пристрелят сразу, хотя их отношения и не изменялись. Также можешь легко убедиться, что сделав врагами того же Волка и сидящего у костра сталкера-новичка (в начале игры) - они будут мирно сосуществовать в своем гулаге и не кинутся убивать друг друга. В общем если не отпала нужда - объясняй 'на пальцах' применительно к понятным всем кодам и ситуациям. И повторю, 'не рабочесть метода' тут не при чем, просто это далеко не то, что тебе нужно и/или достаточно. Изменено 27 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Malandrinus 615 Опубликовано 27 Октября 2011 Поделиться Опубликовано 27 Октября 2011 Artos, Смотрим 'se_item.script', в котором к счастью имеются все классы для оружия (кстати и класс физ.объекта там же). Да, в оригинальном скрипте в этих классах отсутствуют коды с методами STATE_Read|Write, но внеся эти коды мы видим, что они работают(!) и есть доступ к начальной части нет-пакета с секцией 'cse_abstract'. ... Причем, чтение/запись нет-пакетов происходит не только при старте/сейве игры или при спавне соотв. объекта, но и в процессе(!) игры. ... При необходимости (и возможности) принудительно вызвать для объекта его 'штатные' STATE_Read|Write можно, например, переводом объекта он-офф-лайн ... Ещё раз, это не подтверждается моими наблюдениями. Специально взял чистую игру, выдал себе автомат, пострелял, убрал в оффлайн, вывел обратно в онлайн. Ничего такого нет. STATE_Read/Write вызываются строго один раз при появлении офлайнового объекта, и всякий раз при записи сохранения. Выход объекта в онлайн/уход в онлайн тоже на этом никак не сказывается. Проверь сам, только возьми чистую игру. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Artos 99 Опубликовано 27 Октября 2011 Поделиться Опубликовано 27 Октября 2011 (изменено) malandrinus Попробую и на чистой игре проверить, хотя не возьму в толк - в чем именно в этом отношении имеется различие между каким-либо модом и чистой ... Тем более чтобы это проверить - все одно потребуется внести изменения, хотя бы для вывода в читаемый лог. Суть то все одна, в чистой ничего само собою не видно (нет в логе), а как только вносим изменение - это уже и не чистая ... Каков критерий, чтобы говорить не о причудах модмейкера, а о работе именно исходных кодов? Пока однозначно для физ.объектов (cse_alife_object_physic) при переводе выбранного объекта (экспериментировал с вентилятором Сидоровича) в оффлайн и обратно - автоматически вызываются функции STATE_Write|Read и корректно читается секция 'cse_abstract'. Вот этот лог получен после первого апдейта актора: se_item:se_physic:STATE_Write:=[trader_ventilyator_0000]:r_tell=64714633:w_tell=86 Print_Table:NetPacket(trader_ventilyator_0000): dummy16 = [1] section_name = [physic_object] name = [trader_ventilyator_0000] s_gameid = [0] s_rp = [254] position.<userdata>.x = [-243.89122009277] position.<userdata>.y = [-23.180002212524] position.<userdata>.z = [-133.19967651367] position = [vec(x=-243.891:y=-23.180:z=-133.200)] direction.<userdata>.x = [0] direction.<userdata>.y = [-0.26178956031799] direction.<userdata>.z = [0] direction = [vec(x=0.000:y=-0.262:z=0.000)] respawn_time = [0] unknown_id = [102] parent_id = [65535] phantom_id = [65535] s_flags = [96] version = [118] script_version = [7] unused = [0] spawn_id = [101] extended_size = [0] se_item:se_physic:STATE_Read:=[trader_ventilyator_0000/102]:Size=75:r_tell=86:w_tell=159 - что полностью до знака соответствует параметрам этого объекта из all.spawn'а. Примечание: А вот для оружия прочитать в процессе игры эту секцию пока не удалось ... Только из первого пакета можно получить начальную секцию, позже ... только без 'cse_abstract' удается прочитать, мешает 'мусор'. Почему то после первого пакета далее w_tell постоянно равен 2 (двум) и никак не могу определить начало пакета ... Изменено 27 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Malandrinus 615 Опубликовано 27 Октября 2011 Поделиться Опубликовано 27 Октября 2011 (изменено) Artos, ты прав, на самом деле вызывается при переходе в онлайн. Однако, других моментов, когда это ещё вызывается, я пока не вижу. хотя не возьму в толк - в чем именно в этом отношении имеется различие между каким-либо модом и чистой разница может быть как небо и земля. Я сам, к примеру, использую перепаковку нетпакетом кастомдаты оружия. Это кстати можно в онлайне делать. А как сходу отличить вызов скриптом и вызов движком? Разве только по значению w_tell. Почему то после первого пакета далее w_tell постоянно равен 2 (двум) и никак не могу определить начало пакета ... Так вот это скорее всего скриптовые вызовы, поскольку в движковых в нетпакете уже есть данные cse_abstract и w_tell как раз и даёт их размер. Изменено 27 Октября 2011 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Artos 99 Опубликовано 27 Октября 2011 Поделиться Опубликовано 27 Октября 2011 (изменено) malandrinus Ну ... на то и модмейкеру голова, чтобы когда очень хотса - значит можно и поизвращаться ... Тот же физ-объект можно в игре удалить и вновь заспавнить на место удаленного, чтобы вызвать самый корректный первый пакет и его перепаковать. Но это все же уже изврат. P.S. В своих ковыряниях на эту тему НЕ использовал никаких скриптовых вызовов связанных с нет-пакетами для тестируемых объектоов. Хотя для активного оружия актора у меня как раз стоИт постоянное чтение из нет-пакета кол-ва патронов именно 'своим' скриптовым вызовом на чтение общего нет-пакета. Перепроверю с чистым переводом в офф-он ... Тут ты вероятно прав! Изменено 27 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Malandrinus 615 Опубликовано 27 Октября 2011 Поделиться Опубликовано 27 Октября 2011 Artos, Хотя для активного оружия актора у меня как раз стоИт постоянное чтение из нет-пакета кол-ва патронов именно 'своим' скриптовым вызовом на чтение общего нет-пакета. А зачем нетпакетом? Есть же вроде get_ammo_in_magazine Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Artos 99 Опубликовано 27 Октября 2011 Поделиться Опубликовано 27 Октября 2011 (изменено) malandrinus Неточно выразился ... В моде есть 'разрывные' патроны и чтобы определить, что именно они в стволе и именно пулей он них убит и должен 'взорваться' - мониторю текущий тип патрона в стволе (ammo_type) и по нему определяю секцию ... Штатных методов для этого нет. Перепроверил с оружием. Ты прав, это 'мои грабли' и 'штатные' вызовы в игре чтения/записи нет-пакетов пока тоже только при манипуляциях с онлайном обнаружил. P.P.S. Вот теперь, после обмена знаниями/навыками и ошибками, открыт путь к смене позиции и дирекции для объектов (неписей и пр.). Суть (для объектов в онлайне): - в подходящий момент отправляем объект в оффлайн и обратно в онлайн, одновременно выставив разрешающий флаг для чтения из нет-пакета секции 'cse_abstract' объекта и дав (запомнив) информацию по необходимым изменениям в координатах; - читаем в 'штатном' для объекта методе STATE_Read|Write нет-пакет и перепаковываем его с новыми параметрами. Изменено 27 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Lagos 688 Опубликовано 27 Октября 2011 Поделиться Опубликовано 27 Октября 2011 (изменено) Сделал я анимпоинт в смартерраине. Заспавнил сквад. Непись(у него новая группировка) ест хлеб, колбасу, но не играет на гитаре, и не рассказывает анекдоты... Как сделать? В файлах script_sound_music_and_stories и script_sound группировка прописна: [list_music_and_stories] attack_begin attack_begin_reply alife_stalker_counter_check alife_bandit_counter_check alife_dolg_counter_check alife_freedom_counter_check alife_army_counter_check alife_clear_sky_counter_check alife_stalker_counter_begin alife_stalker_counter_reply alife_bandit_counter_begin alife_bandit_counter_reply alife_dolg_counter_begin alife_dolg_counter_reply alife_freedom_counter_begin alife_freedom_counter_reply alife_army_counter_begin alife_army_counter_reply alife_clear_sky_counter_begin alife_clear_sky_counter_reply intro_music play_guitar reac_music play_harmonica intro_joke joke reac_joke reac_laugh ;*************************************************************** ;** Сбор отряда в атаку ;*************************************************************** [attack_begin] type = npc avail_communities = stalker, bandit, dolg, freedom, army, clear_sky npc_prefix = true path = alife\attack\attack_begin_ shuffle = rnd idle = 0,0,100 [attack_begin_reply] type = npc avail_communities = stalker, bandit, dolg, freedom, army, clear_sky npc_prefix = true path = alife\attack\begin_reply_ shuffle = rnd idle = 0,0,100 ;group_snd = true [alife_clear_sky_counter_check] type = actor actor_stereo = false npc_prefix = false path = characters_voice\human_02\csky\alife\counter_attack\check_ shuffle = seq idle = 0,0,100 [alife_stalker_counter_check] type = actor actor_stereo = false npc_prefix = false path = characters_voice\human_02\stalker\alife\counter_attack\check_ shuffle = seq idle = 0,0,100 [alife_bandit_counter_check] type = actor actor_stereo = false npc_prefix = false path = characters_voice\human_02\bandit\alife\counter_attack\check_ shuffle = seq idle = 0,0,100 [alife_dolg_counter_check] type = actor actor_stereo = false npc_prefix = false path = characters_voice\human_02\dolg\alife\counter_attack\check_ shuffle = seq idle = 0,0,100 [alife_freedom_counter_check] type = actor actor_stereo = false npc_prefix = false path = characters_voice\human_02\freedom\alife\counter_attack\check_ shuffle = seq idle = 0,0,100 [alife_army_counter_check] type = actor actor_stereo = false npc_prefix = false path = characters_voice\human_02\military\alife\counter_attack\check_ shuffle = seq idle = 0,0,100 [alife_clear_sky_counter_begin] type = actor actor_stereo = false npc_prefix = false path = characters_voice\human_02\stalker\alife\counter_attack\counter_attack_begin_ shuffle = rnd idle = 0,0,100 [alife_clear_sky_counter_reply] type = actor actor_stereo = false npc_prefix = false path = characters_voice\human_02\stalker\alife\counter_attack\reply_ shuffle = rnd idle = 0,0,100 [alife_stalker_counter_begin] type = actor actor_stereo = false npc_prefix = false path = characters_voice\human_02\stalker\alife\counter_attack\counter_attack_begin_ shuffle = rnd idle = 0,0,100 [alife_stalker_counter_reply] type = actor actor_stereo = false npc_prefix = false path = characters_voice\human_02\stalker\alife\counter_attack\reply_ shuffle = rnd idle = 0,0,100 [alife_bandit_counter_begin] type = actor actor_stereo = false npc_prefix = false path = characters_voice\human_02\bandit\alife\counter_attack\counter_attack_begin_ shuffle = rnd idle = 0,0,100 [alife_bandit_counter_reply] type = actor actor_stereo = false npc_prefix = false path = characters_voice\human_02\bandit\alife\counter_attack\reply_ shuffle = rnd idle = 0,0,100 [alife_dolg_counter_begin] type = actor actor_stereo = false npc_prefix = false path = characters_voice\human_02\dolg\alife\counter_attack\counter_attack_begin_ shuffle = rnd idle = 0,0,100 [alife_dolg_counter_reply] type = actor actor_stereo = false npc_prefix = false path = characters_voice\human_02\dolg\alife\counter_attack\reply_ shuffle = rnd idle = 0,0,100 [alife_freedom_counter_begin] type = actor actor_stereo = false npc_prefix = false path = characters_voice\human_02\freedom\alife\counter_attack\counter_attack_begin_ shuffle = rnd idle = 0,0,100 [alife_freedom_counter_reply] type = actor actor_stereo = false npc_prefix = false path = characters_voice\human_02\freedom\alife\counter_attack\reply_ shuffle = rnd idle = 0,0,100 [alife_army_counter_begin] type = actor actor_stereo = false npc_prefix = false path = characters_voice\human_02\military\alife\counter_attack\counter_attack_begin_ shuffle = rnd idle = 0,0,100 [alife_army_counter_reply] type = actor actor_stereo = false npc_prefix = false path = characters_voice\human_02\military\alife\counter_attack\reply_ shuffle = rnd idle = 0,0,100 ;************************************************************ ;** Игра на гитаре ;************************************************************ [intro_music] type = npc avail_communities = stalker, bandit, dolg, freedom, clear_sky npc_prefix = true path = talk\intros\intro_music_ shuffle = rnd idle = 1,1,100 [play_guitar] type = 3d avail_communities = stalker, bandit, dolg, freedom, clear_sky npc_prefix = true path = music\guitar_ shuffle = rnd idle = 1,1,100 [reac_music] type = npc avail_communities = stalker, bandit, dolg, freedom, clear_sky npc_prefix = true path = reactions\music\reaction_music_ shuffle = rnd idle = 1,1,100 group_snd = true [play_harmonica] type = 3d avail_communities = stalker, bandit, dolg, freedom, clear_sky npc_prefix = true path = music\harmonica_ shuffle = rnd idle = 1,1,100 ;*************************************************************** ;** Истории ;*************************************************************** [intro_joke] type = npc avail_communities = stalker, bandit, dolg, freedom, army, monolith, clear_sky npc_prefix = true path = talk\intros\intro_joke_ shuffle = rnd idle = 0,0,100 group_snd = true [joke] type = npc avail_communities = stalker, bandit, dolg, freedom, army, monolith, clear_sky npc_prefix = true path = talk\jokes\joke_ shuffle = rnd idle = 0,0,100 group_snd = true [reac_joke] type = npc avail_communities = stalker, bandit, dolg, freedom, army, monolith, clear_sky npc_prefix = true path = reactions\joke\reaction_joke_ shuffle = rnd idle = 0,0,100 group_snd = true [reac_laugh] type = npc avail_communities = stalker, bandit, dolg, freedom, army, monolith, clear_sky npc_prefix = true path = reactions\story\laughter_ shuffle = rnd idle = 0,0,100 group_snd = true [meet_hello] type = npc avail_communities = army, stalker, bandit, dolg, freedom, clear_sky npc_prefix = true path = states\meet\meet_hello_ shuffle = rnd idle = 2,2,100 [meet_hide_weapon] type = npc avail_communities = army, stalker, bandit, dolg, freedom, clear_sky npc_prefix = true path = states\meet\meet_hide_weapon_ shuffle = rnd idle = 5,7,100 [meet_use_no_default] type = npc avail_communities = army, stalker, bandit, dolg, freedom, clear_sky npc_prefix = true path = states\meet\meet_use_no_default_ shuffle = rnd idle = 1,1,100 [meet_use_no_fight] type = npc avail_communities = army, stalker, bandit, dolg, freedom, clear_sky npc_prefix = true path = states\meet\meet_use_no_fight_ shuffle = rnd idle = 2,2,100 [meet_use_no_weapon] type = npc avail_communities = army, stalker, bandit, dolg, freedom, clear_sky npc_prefix = true path = states\meet\meet_use_no_weapon_ shuffle = rnd idle = 5,7,100 [meet_use_no_talk_leader] type = npc avail_communities = army, stalker, bandit, dolg, freedom, clear_sky npc_prefix = true path = states\meet\meet_use_no_talk_leader_ shuffle = rnd idle = 5,7,100 [corpse_loot_begin] type = npc avail_communities = army, stalker, bandit, dolg, freedom, clear_sky npc_prefix = true path = states\loot\loot_begin_ shuffle = rnd idle = 10,11,100 [corpse_loot_good] type = npc avail_communities = army, stalker, bandit, dolg, freedom, clear_sky npc_prefix = true path = states\loot\loot_good_ shuffle = rnd idle = 10,11,100 [corpse_loot_bad] type = npc avail_communities = army, stalker, bandit, dolg, freedom, clear_sky npc_prefix = true path = states\loot\loot_bad_ shuffle = rnd idle = 10,11,100 [help_heavy] type = npc avail_communities = army, stalker, bandit, dolg, freedom, clear_sky npc_prefix = true path = help\wounded_heavy\help_ shuffle = rnd idle = 4,8,100 [help_thanks] type = npc avail_communities = army, stalker, bandit, dolg, freedom, killer, clear_sky npc_prefix = true path = help\wounded_thanx\thanx_ shuffle = rnd idle = 1,1,100 [wounded_medkit] type = npc avail_communities = army, stalker, bandit, dolg, freedom, killer, monolith, clear_sky npc_prefix = true path = help\wounded\medkit_ shuffle = rnd idle = 1,1,100 [post_combat_wait] type = npc actor_stereo = false npc_prefix = true group_snd = true path = fight\post_combat_wait\wait_ avail_communities = stalker, bandit, dolg, freedom, army, clear_sky shuffle = rnd idle = 3,5,100 [post_combat_wait_long] type = npc actor_stereo = false npc_prefix = true group_snd = true path = fight\post_combat_wait\wait_ avail_communities = stalker, bandit, dolg, freedom, army, clear_sky shuffle = rnd idle = 7,10,100 [post_combat_relax] type = npc actor_stereo = false npc_prefix = true group_snd = true path = fight\post_combat_wait\relax_ avail_communities = stalker, bandit, dolg, freedom, army, clear_sky shuffle = rnd idle = 1,1,100 [wait] type = npc avail_communities = stalker, bandit, dolg, freedom, army, monolith, clear_sky npc_prefix = true path = states\idle\idle_ shuffle = rnd idle = 7,10,100 Читаем шапку: 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;--/ Artos Добавлено через 43 мин.: Artos, ЗП. Модов нет. Изменено 27 Октября 2011 пользователем Artos Официальный сайт . Ссылка на комментарий
7.9 174 Опубликовано 27 Октября 2011 Поделиться Опубликовано 27 Октября 2011 (изменено) - в подходящий момент отправляем объект в оффлайн и обратно в онлайн, одновременно выставив разрешающий флаг для чтения из нет-пакета секции 'cse_abstract' объекта (?) и дав (запомнив) информацию по необходимым изменениям в координатах; В целом понято, новость хорошая, но всё-таки: - какие моменты являются "подходящими" (или "неподходящими")? - куда и как выставлять флаг? Изменено 27 Октября 2011 пользователем 7.9 всё легко Ссылка на комментарий
Artos 99 Опубликовано 27 Октября 2011 Поделиться Опубликовано 27 Октября 2011 (изменено) 7.9 Не торопись , пока информация дана скорее для опытных модмейкеров, которые предпочитают самостоятельно выбирать пути решения ... Вариантов может быть достаточно много. Дай хотя бы день-два на то, чтобы перепроверить отсутсвие каких-либо коллизий из-за подобного вмешательства в коды/алгоритмы игры. Пока могу сказать: - в модуль нет-пакетов (m_net_utils.script) добавлено чтение/изменение секции 'cse_abstract' для объектов (чтобы не плодить в каждом скрипте); - написан достаточно общий (в смысле применимости в модах) кусок кода для включения в штатные классы серверных объектов для чтения/перепаковки секции 'cse_abstract' в нет-пакетах (это по сути и один из вариантов 'установки флага' и 'задание новых параметров'); - опробовано на физ.объектах, сталкерах и монстрах ... Требуется некоторое время на проверку отсутствия коллизий с рестрикторами (если таковые прописаны) и иными нюансами (это по поводу 'неподходящих' моментов). Изменено 27 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
*Shoker* 322 Опубликовано 27 Октября 2011 Поделиться Опубликовано 27 Октября 2011 Artos Присоединяюсь к вопросу о флаге. > Ты прав, это 'мои грабли' А если не секрет, для чего они были необходимы. Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 27 Октября 2011 Поделиться Опубликовано 27 Октября 2011 (изменено) *Shoker* О 'граблях' уже дал ответ ранее. Мониторинг текущей секции патронов в стволе ГГ, что связано с периодичностью вызовов чтения нет-пакета активного оружия внес ошибку в проверку наличия штатных вызовов чтения/записи нет-пакетов серверных объектов. Без 'моих' вызовов - штатных вызовов в процессе игры не было. Т.е. справедлив вывод, что штатные вызовы чтения/записи нет-пакетов для серверных объектов происходят ТОЛЬКО при загрузке/сохранении игры и при переходе объектов в онлайн (что может быть вызвано искуственно модмейкером в процессе игры). Изменено 27 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Lagos 688 Опубликовано 27 Октября 2011 Поделиться Опубликовано 27 Октября 2011 (изменено) Дополню вопрос про сталкеров, сидящих у костра: поправил кое-чего: сталкеры теперь разговаривают. Но всё равно не играют на гитаре\гармошке... Помогите пожалуйста. P.S.: camp_zone присутствует. Изменено 27 Октября 2011 пользователем zoidberg123456789 Официальный сайт . Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти