KD87 718 Опубликовано 27 Сентября 2011 Поделиться Опубликовано 27 Сентября 2011 Clayman, karavan, переводите непись в оффлайн, переписываете ему нет-пакет, заменяя object_flags. Из object_flags убираете флаг flCanSwitchOffline. Ссылка на комментарий
karavan 36 Опубликовано 27 Сентября 2011 Поделиться Опубликовано 27 Сентября 2011 KD87 Спасибо, конечно. Но как это сделать? Я с нет пакетами не работаю вообще. Да и не будет ли это приводить к битым сейвам, перегрузкам стека и прочим мелким радостям? З.Ы.: Если есть желание, объясни пожалуйста, как это можно реализовать? З.З.Ы.: А нет ли в СДК 0.7 готовых галочек и т.п. для того чтобы НПС не уходил в оффлайн? Я конечно не нашел, но может у кого-то более глубокие знания в СДК 0.7 чем у меня. Неужели разрабам не понадобилась такая функция для НПС? Ссылка на комментарий
Malandrinus 615 Опубликовано 27 Сентября 2011 Поделиться Опубликовано 27 Сентября 2011 karavan, А нет ли в СДК 0.7 готовых галочек и т.п. для того чтобы НПС не уходил в оффлайн? Неписи уходят в онлайн/оффлайн по скриптовым правилам, не просто на основе некой галочки. Для этого в серверном классе сталкеров и кажется ещё монстров есть методы can_switch_online/can_switch_offline. Они периодически вызываются движком (примерно раз в секунду) и возвращают логическое значение, которое соответственно и говорит движку, можно или нет сменить состояние непися. Посмотри их, там имеется некая логика на основе в том числе наличия инфопорций и пр. Для неживых объектов движок опрашивает два серверных флажка, имеющих тот-же самый смысл. Их установить можно с помощью вызовов alife():set_switch_online(id, <true/false>) alife():set_switch_offline(id, <true/false>) Не проверял, но кажется тоже самое делают вызовы can_switch_online/can_switch_offline с логическим аргументом. Флажок опять же проверяется не для всех объектов. Для некоторых движок просто всегда возвращает находиться в онлайне или оффлайне вне зависимости от чего бы то ни было. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Clayman 104 Опубликовано 27 Сентября 2011 Поделиться Опубликовано 27 Сентября 2011 karavan, самое смешное, что в в параметрах НПС в СДК 0.7 есть галочки can_switch_online/can_switch_offline, но кто спавнит НПС в ЗП через СДК? Правильно, никто... Поэтому я даже не проверял, работает ли это. Ссылка на комментарий
Malandrinus 615 Опубликовано 27 Сентября 2011 Поделиться Опубликовано 27 Сентября 2011 Clayman, в параметрах НПС в СДК 0.7 есть галочки can_switch_online/can_switch_offline, но кто спавнит НПС в ЗП через СДК? Правильно, никто... Эти галки есть у всех объектов во всех версиях SDK, поскольку это базовый серверный флажок, но эффект имеют разный, примерно как я описал выше. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Artos 99 Опубликовано 28 Сентября 2011 Поделиться Опубликовано 28 Сентября 2011 karavan: ... как сделать что бы НПС в скваде не переходил в оффлайн? KD87: ... переводите непись в оффлайн, переписываете ему нет-пакет, заменяя object_flags. Из object_flags убираете флаг flCanSwitchOffline. karavan: Но как это сделать? Я с нет пакетами не работаю вообще. ... объясни пожалуйста, как это можно реализовать? 1. Берешь готовый скрипт/функции для работы с нет-пакетами в SCoP, например, 'm_net_utils.script'; 2. Получаешь по какому-либо признаку (ID, story_id, ...) серверный объект своего НПС (soNPC); 3. Считываешь нет-пакет своего объекта (tP); 4. Меняешь в этом пакете значение параметра 'object_flags' на требуемое, т.е. сбросив, как советует KD87 флаг ' flCanSwitchOffline'; 5. Перезаписываешь нет-пакет своему НПС; 6. Для подстраховки, переводишь своего NPC в оффлайн и обратно. Все это конспективно примерно так: function Set_Always_OnLine(idNPC) --/< на входе игровой ID local soNPC = idNPC and alife():object(idNPC) --/ серверный объект НПС if soNPC and IsStalker(soNPC) and m_net_utils then --/ проверки готовности/возможности local tP = m_net_utils.Get_Data_Stalker(soNPC) --/ читаем нет-пакет tP.object_flags --/ меняешь параметр на нужное значение m_net_utils.Set_Data_Stalker(tP,soNPC) --/ сохраняем измененный нет-пакет if level.object_by_id(id) then --/ если объект в онлайне: --/ тут перевод online->offline->online end end end Остается найти требуемые скрипты/функции для нет пакетов и переводов 'офф-он-лайн' и попросить KD87 уточнить в 'object_flags' бит 'flCanSwitchOffline'. KD87, не мог бы ты дать по-битовую информацию (какой бит чему соответствует) для 'object_flags' и, по возможности, др. аналогичных флаговых параметров в нет-пакетах объектов. Заранее спасибо. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Malandrinus 615 Опубликовано 28 Сентября 2011 Поделиться Опубликовано 28 Сентября 2011 (изменено) Да не нужны нетпакеты для изменения флагов flCanSwitchOffline/flCanSwitchOnline. Я выше написал, какие функции за это отвечают. Информация по флажкам, которую смог нарыть сам. Флажок двоичное дес. Функция-аксессор * назначение ====================================================================== flUseSwitches 0000000000001 1 используется только редактором level editor из SDK и отвечает за видимость в редакторе флажков flSwitchOnline и flSwitchOffline flSwitchOnline 0000000000010 2 can_switch_online возможность перехода в онлайн flSwitchOffline 0000000000100 4 can_switch_offline возможность перехода в оффлайн flInteractive 0000000001000 8 interactive ** Такое ощущение, что ни на что не влияет flVisibleForAI 0000000010000 16 используется на клиентской стороне, в частности для зон отвечает за возможность реакции на контакт flUsefulForAI 0000000100000 32 кроме участия в interactive имет смысл для инвентарного предмета, в частности, влияет на торговлю flOfflineNoMove 0000001000000 64 move_offline по идее должен отвечать за отсутствие движения в оффлайне, но не используется flUsedAI_Locations 0000010000000 128 used_ai_locations*** При спавне будет привязан к сетке, при наличии таковой под объектом. Иначе будет создан в воздухе. flGroupBehaviour 0000100000000 256 неизвестно flCanSave 0001000000000 1024 can_save Сохранять ли объект. Если флажок снят, то при перезагрузке объект исчезнет. flVisibleForMap 0010000000000 2048 visible_for_map Устанавливает видимость на миникарте flUseSmartTerrains 0100000000000 4096 неизвестно flCheckForSeparator 1000000000000 8192 неизвестно * Для многих объектов соответствующая функция не связана с флагом, а имеет логику, специфичную для данного объекта. ** Функция interactive также учитывает флажки flVisibleForAI и flUsefulForAI *** В ЗП имеется функция для установки флажка use_ai_locations(bool). Обратите внимание, имя отличается от функции для чтения флажка. Изменено 28 Сентября 2011 пользователем malandrinus 1 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
KD87 718 Опубликовано 28 Сентября 2011 Поделиться Опубликовано 28 Сентября 2011 (изменено) Описание неполное. Я как-то пытался сделать полный разбор, но не закончил. Сначала основы. object_flags - это битовое поле, в котором каждый бит соответствует бинарному флагу (то есть, вкл/выкл). Проверяется наличие/отсутствие флага операцией битового И по нужной маске. Теперь сам разбор object_flags: enum object_flags { flUseSwitches = 1 flSwitchOnline = 2 flSwitchOffline = 4 flInteractive = 8 flVisibleForAI = 10h flUsefulForAI = 20h flOfflineNoMove = 40h flUsedAI_Locations = 80h flGroupBehaviour = 100h flCanSave = 200h flVisibleForMap = 400h flUseSmartTerrains = 800h flCheckForSeparator = 1000h } 1. flUseSwitches Будучи выставленым, разрешает движку использовать второй и третий флажок. 2. flSwitchOnline Определяет возможность перевода объекта в онлайн. Проверяется методом can_switch_online, точнее, двумя его реализациями: 3. flSwitchOffline Определяет возможность перевод объекта в оффлайн. Проверяется двумя реализациями метода can_switch_offline: Хочу обратить внимание, что для некоторых объектов выставление этого флага бессмысленно. В некоторых классах метод can_switch_offline() перегружен и выдает false всегда. Это следующие классы: CSE_ALifeObjectClimable (лестницы) CSE_ALifeObjectBreakable (бьющиеся объекты) CSE_AlifeSpaceRestrictor и все наследующие от него 4. flInteractive Непонятно, но без пятого и шестого флага этот флаг бессмысленен. 5. flOfflineNoMove Определяет возможность перевода объекта в онлайн (?) 6. flUsedAI_Locations Определяет, куда спавнить объект. Если true - объект заспавнится в ближайшей АИ-ноде, если false - по заданным координатам. Соответственно, для объектов, возвращающих true в used_ai_locations() необходим корректный level_vertex_id, для остальных - нет. 7. flGroupBehaviour Имеет смысл лишь для объектов класса CSE_AlifeHumanAbstract и объектов наследующих от него классов. Что означает - мне неизвестно. 8. flCanSave Определяет возможность сохранения объекта. Характерно,что для всех объектов классов, наследующих от CSE_PHSkeleton возможность сохранения определяется не object_flags, а skeleton_flags (четвертый бит, FL_NOT_SAVE). Как и раньше, для управления флагом есть два метода: 9. flCheckForSeparator Это вроде флаг для компилятора АИ. Устанавливает, проверять ли данный спейс-рестриктор на разделение АИ-сетки. Замечания (для финалки ТЧ!): 1)CSE_ALifeObjectClimable, CSE_AlifeSpaceRestrictor и CSE_ALifeObjectBreakable возвращает false в can_switch_offline() и used_ai_locations() 2)возвращают false в used_ai_locations(): CSE_ALifeObjectPhysic, CSE_ALifePHSkeletonObject, CSE_ALifeObjectHangingLamp, CSE_ALifeObjectProjector, CSE_AlifeCreatureCrow, CSE_AlifeCreaturePhantom, CSE_AlifeItemBolt 3)у CSE_ALifeObjectHangingLamp в flags должны стоять третий и четвертый бит, иначе движок считает рендер ненастроенным (FL_R1 и FL_R2) 4)CSE_ALifeCreatureAbstract возвращают true в used_ai_locations() 5)CSE_AlifeTrader возвращает false в interactive() 6)CSE_AlifeItemBolt возвращает false в can_save() 7)CSE_AlifeItemAmmo добавляет в can_switch_offline() условие if m_elapsed, то есть в коробке должны оставаться патроны. Как дополнение: malandrinus совершенно правильно заметил, что методы can_switch_offline и can_switch_online для некоторых объектов в скриптах перегружены. Поэтому соответствующие поля object_flags для таких объектов могут и не работать. Изменено 28 Сентября 2011 пользователем KD87 Ссылка на комментарий
SibireaStalker 0 Опубликовано 29 Сентября 2011 Поделиться Опубликовано 29 Сентября 2011 (изменено) Можно ли реализовать, чтобы партикл использовался постоянно? Вот есть партикл хита монстра в аномалии, мне нужно, чтобы он использовался постоянно. Как это можно реализовать? Условия, при которых он должен использоваться постоянно!? ColR_iT Изменено 29 Сентября 2011 пользователем ColR_iT Выводы модмейкера: 1)Вылетает - это хорошо. Значит, работает 2) Если хочешь сделать что-то хорошо, делай сам! 3) Если падёшь духом, падёт и мод. 4) Он живой... Ссылка на комментарий
Wookie 7 Опубликовано 1 Октября 2011 Поделиться Опубликовано 1 Октября 2011 Как правильно ставить math.random? Просто хотел чтобы в начале игры у игрока была рандомная точка спавна, перенос сделал с помощью метода db.actor:set_actor_position поставил рандом x[math.random(14)] (было 14 видов координат). Всегда относит к шевченко (центр локации - 0, 0, 0). https://www.youtube.com/embed/U0no-6tCxhU Канал на "Трубе" Ссылка на комментарий
_Призрак_ 11 Опубликовано 1 Октября 2011 Поделиться Опубликовано 1 Октября 2011 Ты бы показал свой код и тогда можно было бы что либо говорить Freedom Ссылка на комментарий
Калтер 0 Опубликовано 1 Октября 2011 Поделиться Опубликовано 1 Октября 2011 Ребят подскажите пожайлуста как сделать: 1.Кончающиеся болты. 2.Не исчезающие болты(чтобы после того как их выкинули, через несколько секунд они не пропадали в некуда). Я брал configs гранаты и менял визуал на болт. Но ни чего не вышло... Ссылка на комментарий
shurik 0 Опубликовано 2 Октября 2011 Поделиться Опубликовано 2 Октября 2011 Кто может уменьшить модель до размеров, чтобы помещалась в руки более менее ровно, помогите плиз. Ссылка на комментарий
SibireaStalker 0 Опубликовано 2 Октября 2011 Поделиться Опубликовано 2 Октября 2011 Можно ли реализовать, чтобы партикл использовался постоянно? Вот есть партикл хита монстра в аномалии, мне нужно, чтобы он использовался постоянно. Как это можно реализовать? Условия, при которых он должен использоваться постоянно!? ColR_iT ColR_iT, мне нужно, чтобы партикл был постоянно. В аномальках для этого дела есть строчка idle_particle, а у монстров... не знаю. Выводы модмейкера: 1)Вылетает - это хорошо. Значит, работает 2) Если хочешь сделать что-то хорошо, делай сам! 3) Если падёшь духом, падёт и мод. 4) Он живой... Ссылка на комментарий
Rolan 22 Опубликовано 3 Октября 2011 Поделиться Опубликовано 3 Октября 2011 Всем привет, народ, а модлеьки артефактов с ТЧ работают на ЗП? Ссылка на комментарий
Clayman 104 Опубликовано 3 Октября 2011 Поделиться Опубликовано 3 Октября 2011 Rolan, так проверь в конфиге арта пропиши визуал.. Слушайте, тут страницу назад обсуждалось снятие карты уровня, таки действительно проблема... Никогда не пробовал, а тут перекомпилил левел, дай думаю попробую снять карту с новой геометрией... Вобщем снимается только на статике и в мутном качестве, т.е. какая погода есть, такую и снимает, все в тумане... sv_setweather map походу вообще ни на что не влияет... На dx9 снимает все в пересвеченном желтом цвете, на dx10-dx11 вообще не снимает, т.е. снимок показывает, но в файл не пишет.. Не пойму, от чего это зависит, от видеокарты? Ссылка на комментарий
Rolan 22 Опубликовано 3 Октября 2011 Поделиться Опубликовано 3 Октября 2011 Clayman, на минимальных настроках снимай. статика. ТЧ нету при себе, вот и спрашиваю. Ссылка на комментарий
LOG@N 0 Опубликовано 3 Октября 2011 Поделиться Опубликовано 3 Октября 2011 (изменено) Всем доброго времени суток. Написал вот такую ф-ию лечения ГГ: function healing() if db.actor.heаlth < 1 then db.actor.heаlth = 1 end Сделал активацию через диалог. Загружаюсь, говорю с НПС и ничего не происходит. В чем проблема? Изменено 3 Октября 2011 пользователем LOG@N Ссылка на комментарий
Clayman 104 Опубликовано 3 Октября 2011 Поделиться Опубликовано 3 Октября 2011 LOG@N, по аналогии с существующим скриптом видимо нужно добавить: function healing(first_speaker, second_speaker) В оригинале функция лечения выглядит так: function medic_magic_potion(first_speaker, second_speaker) db.actor.health = 1 db.actor.power = 1 db.actor.radiation = -1 db.actor.bleeding = 1 end Можно ее и вызывать.. Ссылка на комментарий
7.9 174 Опубликовано 3 Октября 2011 Поделиться Опубликовано 3 Октября 2011 (изменено) LOG@N, у тебя ошибка в синтаксисе - проверяйся. Изменено 3 Октября 2011 пользователем 7.9 всё легко Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти