Перейти к контенту

[SoC] Ковыряемся в файлах


Halford

Рекомендуемые сообщения

Vecz, по интересующему тебя моду имеется конкретный топик Nature Winter в Мастерской, вот туда и следует задавать подобные вопросы. Текущий топик ориентирован на оригинальную игру и общеизвестные для нее изменения.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

gruber, ColR_iT, невозможно дать ответ на некорректно заданный вопрос. "спавн количества" - само словосочетаное абсурдно.

Если автора вопроса интересует именно 'что' отвечает за количество спавнящихся НПС на Кордоне (исключая заспавненных через алл.спавн) - то конечно отвечают респавнеры, параметры которых все же заданы тоже в алл.спавне, в том числе и респавнер около деревни новичков. Но и он не один, кто НПС спавнит на Кордоне, и в конструкторе респавнеров можно при необходимости изменить кол-ва спавнящихся и даже нет-пакетами изменить и запомнить на требуемое значение.

Если же в вопросе подразумевается - 'что' отвечает на кол-во НПС на Кордоне и в частности в деревне новичков - то конечно же параметры гулагов этим управляют, точнее кол-ва работ, которые выдаются кордонными гулагами. В этом случае, НПС могут приходить на Кордон и с других локаций, так что не только кордонные респавнеры в этом учавствуют.

 

ColR_iT, мы можем только гадать о действительном предназначении файла game_stats.script и его функционала. По сути, функции не используются в финалке ТЧ и можно сделать предположение исходя из самого названия скрипта и то, чем он занимается - это дебаговый модуль (для разрабов).

 

Shredder, если ты удалишь или закомментируешь все вызовы этого скрипта и удалишь его - то в игре ничего не изменится, а только ресурсы освободятся. Этот же результат и в ЧН и в ЗП.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

Struck, в очередной раз оращаю внимание на то, что вопросы нужно формулировать так, чтобы на них можно было бы отвечать, а не "базарить" ... Ведь спрашиваешь бессмыслицу!

Что ты называешь скриптовым диалогом? Цепочку соответствующих функций, в которые движек передает агрументы и в том числе первые два, которые нередко называют как speaker1 и speaker2? И тебя интересует как это движек делает? Не думаю, что тебя заинтересовал ассемблер и работа движка на низком уровне. Да и ответы на это тебе могли бы дать только те, кто имеет исходники движка.

Функция relocate_item - является рядовой функцией и ее использование ровно такое же как и всех остальных, которые могут быть использованы и в алгоритмах диалогов (не обязательно скриптовых). Вот более важно, что сами разработчики для этой функции дали комментарий: "Obsolete, do not use!!!" и любое бездумное использование этой функции чревато последствиями...

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

Struck, с подобными вопросами уже не ко мне, ты просто напросто начинаешь погадалки, а не думаешь что и как нужно для реализации твоей же задумки.

Не знаю что ты подразумеваешь под talk_message, но если это то, что выводит сам диалог - то это всего лишь строка, которая прописана в самом диалоге. А уж если ты при обработке этой строки подключишь свои сторонние функции, которые также могут выдавать некие строки на худ - то и получмишь в итоге то, что они выдадут.

Сорри, но гадай дальше без меня, может еще кто подключится ...

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

SkyLoader, смотрим в исходники, например для wpn_toz34:

orientation = 0, 30, 0 ;значение устанавливается в градусах

- коммент от разрабов(!) и ты просто не замечаешь разницы, изменив на 0,1 градуса...

Изменено пользователем Artos
  • Нравится 1

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

CuJIbBEP, "мигание" лампочек сделать не так и сложно, учитывая, что для класса hanging_lamp имеются методы turn_on()/turn_off().

Для фонариков сделать несколько сложнее, т.к. их "вкл/откл" в игре осуществляется аттачем и деаттачем фонариков "к лбам" неписей... смотри схему sr_light.

 

Стрелоk,

1. В моде "SIMBION" актор летает не В вертолете, а вместе с вертолетом. Если при виде от 1-го лица это не сильно заметно, то легко видно при включении вида от 3-го лица. Т.о. в моде создана иллюзия управляемого полета актора на вертушке для вида от 1-го лица, а не сам полет.

2. В игре (СТАЛКЕР) посадить актора в объекты класса вертушек и полетать невозможно, в отличии, например, от класса машин. Тем более невозможно "посадить пассажиром". Хотя ... при развитой фантазии и навыках в кодинге и приложив время и усилия, создать иллюзию в общем-то как-то возможно.

 

Rover_M51, жди LA и возможно SkyLoader порадует тебя автоматической винтовкой с зум-прицелом. ИМХО, это уже скорее чистый чит, а не развитие игры...

По 1 и 2 - без правки движка - все это фантазии.

Ну а подбираемыми "рюкзачки-тайнички" вполне можно сделать, и помнится даже в каком-то моде это было сделано (может кто и напомнит), так что делай...

Изменено пользователем Artos
  • Нравится 2

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

volazar, твоя проблема крылась в том, что неуместно применять для сталкеров схемы предназначенные для рестрикторов.

Схема sr_idle - для рестрикторов и попытка применить(перейти на нее) для сталкера - как раз и приводит к твоим "пути Зоны неисповедимы", т.е. непись остается под схемой кампера (сидит на пятой точке) ... Если требуется пауза в логике, то следует ее организовывать на сталкеровских схемах логики, а не абы какая под руку попадется. Экономия строк в логике подобным образом - плохая идея.

Изменено пользователем Artos
  • Нравится 1

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

А может... 'пожалеть' - как раз дать осуществиться мыслям... :dash2: Так сразу все мучения закончатся... :crazy:

 

1. Чтобы говорить про он-лайн или клиентского объекта - нужно понимать что же это такое и делать свои попытки-проверки не а бы где и когда, а как минимум в нужное (подходящее) время.

2.

изменил: имя на light_alarm_glass_0004, координаты, gv и lv, остальное не трогал
- таким образом ты спавнишь объект в ту-же самую точку!

gv и lv - при подобном спавне несут информацию только о локации.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

В данном случае (про спавл ламны) вообще говорить про оффлайны достаточно бессмысленно

 

Судя по первому посту ("остальное не трогал"), лампа должна иметь флаги object_flags = 0xffffffba:

UseSwitches = 0

SwitchOnline = 1

SwitchOffline = 0

Interactive = 1

VisibleForAI = 1

UsefulForAI = 1

OfflineNoMove = 0

...

т.е. никак не может быть в НЕ в онлайне!

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

1. Был не прав, в том что не заметив в фразе 'изменил ... координаты' - сказал про 'ту же' точку. Если их (координаты) изменить с умом - можно и в другую точку на этой (иль иной) локации. ;-)

2. malandrinus, мы все же говорим по контексту вопроса и о спавне лампочки на текущей локации. И конечно же о том времени, когда лампочка уже должна быть в онлайне, т.е. забиндена соотв.биндером (net_spawn). Иначе можно договориться и до того, что не запустив игру - лампочка тоже не в онлайне...

 

Предлагаю прекратить предложенную викторину "кто отгадает что же в очередной раз учудил AndreySol", т.к. по представленной им информации (и о спавне и о проверке) можно о чем угодно и сколь угодно гадать.

Начнем с того, что получить объект лампочки по его имени - уже глупая затея! В исходной игре лампочек с именем "light_alarm_glass_0000" - больше дюжины(!), да и лампочек "light_alarm_glass_0004" не меньше(!). Т.о. какую лампочку начинает проверять AndreySol - только ему самому и движку ведомо.

С подобными подходами можно сколь угодно гадать :shok: и бесконечно долго :dash2: ... :fool:

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

malandrinus, зря мы все же продолжаем это обсуждение, но ...

1. В моей фразе подразумевалось, что если лампочка заспавнена правильно в алл.спавне (т.е. и на текущей локации), то она при старте игры (после выхода в онлайн всех соответствующих объектов на карте) - обязана быть в онлайне. Это прописано ей именно флагами.

Т.е. подразумеваю, что заспавненная лампочка на текщей локации после ее инициализации в качестве серверного объекта - обязана быть забинденной и выйти в онлайн.

2. А вот с твоим замечанием по set_switch_online не совсем согласен. Это всего лишь команда движку для перевода объекта в онлайн. Если лампочка уже(!) в онлайне - то эта команда будет просто проигнорирована. Т.е. если свою проверку AndreySol делает, например, в апдейте лампочки иль на апдейтах актора (но не в самом начале игры) - то никакой (пере)инициализации выхода в онлайн у лампочки нет. Она уже должна быть в онлайне, в соответствии с флагами спавна. Ну а этой командой может быть выпихнута в онлайн, если данная команда дана в самом начале, т.е. непосредственно при появлении серверного объекта лампы... хотя это все одно должен сделать сам движек (опять же по флагам).

Т.о. set_switch_online - в данном контескте бессмысленная команда в какое бы время не была бы отдана, т.к. или лампочка должна быть в онлайне "само-собою" или же движек не может ее вывести в онлайн по какой-то причине и повторно его "просить" об этом врядли поможет...

 

P.S. О недопустимости наличия объектов с одинаковыми именами на одной локации мною говорилось пару лет назад и неоднократно. К сожалению возражения типа "А я заспавнил и у меня все нормально" и отсутствие возможности доказать "ненормальность" по исходникам движка иль по логам, делает эту проблему(ошибку) актуальной и сегодня и... завтра. :-(

Ну и опять не согласен полностью со словами:

использование имени в основном стало глупой затеей благодаря модостроителям
- как раз контекст вопроса о лампочках говорит о вине в подобной 'глупости' разработчиков GSC, которые и лампочки и костры и т.п. сами начали добавлять в алл.спавн под одинаковыми именами, а не использовали хотя бы в SDK - 'level_prefix_ ', переводя его при компиляции спавна в соответствующий префикс локации... Кстати, даже это, перевод 'level_prefix_ ' в типа 'esc_','agr_'... и то не делали везде ни разработчики ни, взяв с них "пример", нынешние маперы ... Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

volazar, та сам то прочел и понял о чем спрашиваешь?

all.spawn - это бинарный файл-конфиг для начального спавна объектов движком и к скриптовому спавну (нет-пакетами) никакого отношения не имеет.

Если ты имеешь ввиду распаковку all.spawn'а - то формат представляемых данных сильно зависит от самого распаковцика (декомпилятора) и значения типа 0xfffffffa вполне могут быть представлены и иначе, т.е. в десятичном формате.

Ничто тебе не мешает это сделать самостоятельно имея под рукой простенький калькулятор переводящий из HEX в DEC. Для получения "соотв. числу" следует от полученного значения отнять 4294967295 (это десятичное значение для 0xffffffff).

Т.о., например для 0xffffff3a имеешь: 4294967098 - 4294967295 = -197

 

Если же имеешь ввиду смысловые значения для каждого бита флага, то:

а) параметров, которые несут информацию именно в виде битовых флагов, в all.spawn'е не менее десятка, поэтому следует в вопросе конкретно говорить о каком именно параметре тебя интересует информация.

б) на форуме имеется поиск, которым и следует пользоваться...

в) смею предположить, что тебя заинтересовала информация по параметру 'object_flags', о которой уже раз давалась на форумах информация. Сейчас не помню ссылку на первоначальный пост с материалами от KD87 и malandrinus'а, но вот выжимка:

Флажок				 двоичное дес. Функция-аксессор * назначение
======================================================================
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). Обратите внимание, имя отличается от функции для чтения флажка.

 

г) если говоришь о нет-пакетах... то стОит заглянуть именно в модуль (функции) работы с нет-пакетами, чтобы не было для тебя же недопоняток в соответствии того, что те видишь в распаковке all.spawn'а и в реальной работе скриптов. Примечание: в модуле m_netpk.script есть достаточная информация по флагам всех параметров.

Изменено пользователем Artos
  • Нравится 1

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

volazar, раз пользуешься модулем m_netpk.script, тогда чего же спрашиваешь про значения флагов? Там все флаги расписаны, включая семантические имена...

А получается как раз не 5, а -5 (минус пять)!

 

Да и расчитывается просто: Отбрасываем, чтобы не путаться старшие байты и смотрим только последний 'fa' => 250

т.е. имеем десятичное число 250, отняв от которого 255 (ff) получаем -5

Можно иначе: Переводим 'fa' в бинарное значение, т.е. именно в флаги: 'fa' => 11111010

Смотрим что за флаги сброшены: это будут

UseSwitches = 1

SwitchOffline = 4

Т.е. 1+4 = 5

Для сброса флагов требуется от их 'ff' отнять 5 , т.е. 255 - 5 = 250 => 'fa'

 

Ну а суть всех этих значений флагов - сброшен флаг SwitchOffline - который не дает вертолету уходить о оффлайн, т.е. он всегда будет в онлайне (конечно после его спавна и если он на текущей локации).

 

Примечание: В модуле m_netpk.script при изменении любых параметров вертушек (да и машин/ящиков) биты вышеупомянутых флагов сбрасываются автоматически. Да и значение параметра 'skeleton_name' изменяется с '$editor' на 'idle', если не задано иное.

Изменено пользователем Artos
  • Нравится 1

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

Buusty, чтобы вертушка нормально взлетала и садилась - нужно управлять скоростью.

Изначально в схеме стоИт дефолтная скорость =30, что даже для свободного полета несколько многовато. При взлете, стартующая схема (heli_move) заставляет вертушку "бросаться с места в карьер"... причем движек еще не просчитал нормально высоту (GetRealAltitude).

Совет:

1. Задавать начальную точку взлета непосредственно над текущей точкой (над вертушкой) - метров ~5, чтобы вертушка взлетала вертикально, а не "вперед". При наличии горизонтальной составляющей (т.е. "вперед") движение по путям просчитывается не от точки к точке, а с вариациями, которые порой и "проваливают" вертушку под уровень.

2. Задавать или в самой логике схемы и/или в точках пути ограниченные скорости. Например у меня ранее было задано для "взлетной" точки так: p0:name = pm00|v=8|dv=15 - т.е. при взлете стартовая скорость 8 (можно и поменьше), ауже в точке взлета 15. Т.о. вертушка плавно с ускорением вертикально взлетает на высоту 2-5 метров и уже далее устремляется в полет (к следующей точке).

3. Ну и ... можно отказаться от полета "по путям" и переделать схему полностью для полетов по задаваемым точкам (по координатам), контролируя скриптами, а не движком и высоту и скорость и прочее...

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

Struck, не засоряй топик банальными вопросами! Открой статью по логике и по нужной схеме (ссылки в шапке) - и почитай.

Можешь открыть саму схему (скрипт) и посмотреть какие параметры она (не)использует:

--/ Функция чтения настроек. В нее передается секция, откуда их нужно читатью

function init_meet(npc, ini, section, st, scheme)

 

]snork[, а взять и посмотреть самому как это уже сделано в модах (хотя бы в том же AMK) - лень? Ждешь когда тебе готовые строки выложат?

Посмотри логику для "сирен" на базах и доработай ее, чтобы когда выброс - завывала (не забудь по окончании - отключать).

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

]snork[, распакуй all.spawn и найди в alife_l01_escape.ltx объект name = esc_matugalnik - это и есть сирена на блокпосте.

В этой секции объекта и смотри его логику, в которой по получению соотв.инфопоршня (+esc_blockpost_alarm) активируется соответствующая секция логики ([ph_sound@alarm]) и проигрывается snd = alarm1.

По аналогии - делай и для других баз...

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

Struck, если тебя не устраивает существующая схема то... или юзаешь другую (подходящуюю) или засучиваешь рукава и пишешь свою иль дорабатываешь под себя имеющуюся.

Схема "meet" разработчиками задумана как встреча двух сталкеров и смотреть "не на собеседника" им как то в голову не пришло. Поэтому в схеме жестко задано: look_object = victim. Не подходит - меняй...

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

Стрелоk, убирай, плз, строки кодов под спойлеры, не захламляя ими топик...

И почему бы тебе не посмотреть как правильно нужно сделать в многочисленных модах, а не пытаться копипастить с ошибками?

Твоя ошибка: создавая ссылку на коллбэк в классе биндера ( self.object:set_callback(callback.use_object, self.use_obj, self) ) ты его (сам метод) НЕ создаешь, а засунул внутрь имеющегося on_item_drop ... Почитай мануалы по Lua и прекрати писать скрипты методом тыка.

 

BFG, нет никаких параметров, отвечающих за задержку перед началом боя, это особенности функционирования AI-схем.

Что собственно происходит перед началом каждого боя? Спавнятся нужные монстры/неписи в нужном месте и им активируется схема 'camper' и ... они тупо (стОя на месте!) выискивают врага-цель. Пока они не увидят (не услышат) врага (актора) - они ничего не предпринимают, т.к. схема ничего иного не предусматривает.

Т.о. если только дорабатывать новой схемой, типа "поиск врага в пределах зоны", может заставить начать бой вместе в актором.

 

Zander_driver, если говорить строго (а это в данном случае важно), в нет пакете нет никаких имен параметров, а те, которые получены после чтения нет-пакета - по сути повторяют имена из распаковки all.spawn'а, а еще точнее - соответствующим настройкам / параметрам из SDK.

Подсмотренное тобою значение 2048 - говорит только об одном: об ошибочном задании/чтении/трактовке этого парамета, т.к., как правило, значение (индекс) для каждой аномалии свое... А то, что у тебя у всех одинаково - ну так и спавнишь свои "рандомные" по одному и тому же шаблону.

Суть этого параметра - это индекс места спавна артефакта, который (индекс) описан в section2.bin, и как правило, у каждой аномалии свой.

Возьми последние версии uACDC и распакуй с ключиком -af, да и посмотреть что-к-чему в SDK можно.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

Struck, ты вновь с вопросами в стиле "аля для СП"... почему бы тебе там же их и не задавать? :nono:

 

1. Раз нашел "портянку", для чего переспрашивать и устраивать в топике "Бюро находок"? Нашел - изучай, в исходной игре более логики для Борова нет.

2. "Трудно иль нет" - зависит от навыков чтения и работы со скриптами и желания самому понять и сделать. Для тех, кто считает себя "нубом" в скриптах, лентяям и торопыжкам - трудно, для остальных...

Квестов на нахождение нескольких предметов понаписано в модах уже на десяток туторов... С добавлением через task manager тоже не мало. Так что для многих это не трудно.

Однако, такая возможность сильно зависит от того, что за "итемы" ты собрался добавлять в квесты. Например, пару бутылок и закуску - тебе врядли удастся добавить, т.к. прежде всего придется научить task manager узнавать что такие итемы имеются в игре.

2.б. Для квестовых неписей диалоги на "наличие работы" добавить не сложно, примеров предостаточно, однако с похотелкою "для каждого НПС" - придется обломиться... Таскменеджер понимает заказчиков для квестов по наличию у них сида (story_id), да еще и прописать их в него придется попотеть... Так что если сможешь каждому неписю, который спавнится в игру, прописать свой сид и зарегистрируешь в таскменеджере - тогда и о диалогах можешь подумать. ну иль ... переписать сам таскменеджер, чтобы он сам узнавал "каждого"... :crazy:

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

proger_Dencheek, твоя ошибка вероятно обусловлена тем, что пытаешься получить доступ к гейм-объекту (онлайновому) не дожидаясь его выхода в онлайн, т.е. не пропустив пару-тройку апдейтов после спавна костюма.

Также, если твой НПС за пределами алайфа (switch_distance) - то не стОит надеяться заполучить онлайн-костюм, если непись в оффлайне.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...