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

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


Halford

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

Irish Rover, выше уже было сказано про переспрашивания ... :nono:

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

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

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


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

Priboj37, все довольно просто:

Хотим удалить дефолтный звук в бункере Сидоровича?

Вариант 1 ("в лоб"):

Заменяем в файл \gamedata\sounds\scripts\magnitofon\magnitofon_2.ogg на заглушку, т.е. берем $no_sound.ogg копируем и переименовываем ... Ву-а-ля, звук пропал.

 

Вариант 2 (если звук magnitofon_2.ogg еще где-то задействован):

а) открываем \gamedata\levels\l01_escape\level.snd_static в hex-редакторе и исправляем magnitofon_2 -> magnitofon_0;

б) берем $no_sound.ogg, копируем в папку \gamedata\sounds\scripts\magnitofon\ и переименовываем его в magnitofon_0.ogg

... звук исчез.

 

Добавлено через 16 мин.:

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

Если твоя фраза "Smart terrain удалил" не означает, что ты ему в алл.спавне или нет-пакетами в игре не поставил [smart_terrains] none = true, то смарт ты ему НЕ удалил, а только отключил явную привязку. В gulag_escape.script для Волка имеется персональная работенка и ... при первом удобном случае он ее может получить. Ну а при других условиях и вполне может уйти, как ему пописано, и на Склады ... Так что смотри сюжет и все связанное с Волком, и исправляй как тебе надобно.

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

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

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


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

(чуть поправлю и дополню)

Тайник, если указан в качестве аргумента (k) при вызове function CTreasure:give_treasure(k, npc) будет выдан, если нет каких-то ограничений на него (типа "уже выдан").

От аргумента npc тут зависит только расчет вероятности наполнения тайника и вполне этот аргумент может и отсутствовать.

 

А вот ошибки при правке исходных скриптов НЕ следует допускать.

В строке 315 исходного скрипта treasure_manager.script из мода читаем:

for kk,vv in pairs(table_percent[i]) do

- и посмотри, Driv3r, какова эта строка у тебя.

 

Так же, при постинге кодов в своих сообщениях используй соответствующий тег [cоde], дабы сохранять читабельность скрипта (его форматирование/отступы).

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

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

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


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

Driv3r

Нет таких "прямых" функций, т.к. разработчики посчитали излишним заниматься подобной писаниной в скриптах.

Если уже имеется:

treasure_manager.get_treasure_manager():give_treasure("treasure_name")

, то зачем же изобретать еще нечто аналогичное?

Тайник и так выдается только актору и в специальном указании на это не нуждается, а имя - смотри процитированную функцию и твоя желаемая функция превратится в:

treasure_manager.get_treasure_manager():give_treasure("0000_esc_topol")

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

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

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


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

Сяк, заинтересовал вопрос и то, что если это "так", то странно что только сейчас всплывает.

Прошу уточни, на NLC6 "Начало", с включенными в мод новыми локациями, имеется ли "прописаны везде где нужно", чтобы проверить и поэкспериментировать?

В чем выражается эта "непроходимость" с новых на старые? Вообще любые НПС (даже из респавнеров) не мигрируют к местам получения работ? Не получают работы на "старых локациях" или только некие персонажи не хотят переходить?

 

Добавлено через 4 мин.:

ruslan.barc

Для чего игроку залезать в лог и шугаться всего того, чего он не понимает? :crazy:

Если озаботился, то давно бы почитал про логи ...

Ответить на твой конечный вопрос (реальная проблема?) может только разработчик мода, оставивший в кодах технологический вывод в лог о неких необнаруженных КПК.

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

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

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

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


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

SkyLoader, как может быть в природе то, чего не позволяет сам движек игры?

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

Ну и как ты представляешь себе "заканчивающиеся болты"?

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

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


Ссылка на сообщение
Сяк: Респавнеры внутри новых локаций работают нормально - гулаги заполняются и при переполнении неписи выходят с локации
- это понятно, раз говоришь, что переходы "новые->старые" работают.

Если отключить на новых респавнеры, оставив гулаги, то со старых локаций респавнеры не заполняют новые локации? Ведь можно "пометить" старичков и проследить их появление на новых ...

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

 

panzyuza, раз помянул про "мод есть" - то и назвал бы его, иль он только у тебя на винте?

Да и не "в тему" твои наблюдения, т.к. не про появление на новых локах вопрос, а наоборот, "новые=>X=>старые", т.е. с новых на старые не проходят (как следует из вопроса).

 

Добавлено через 19 мин.:

SkyLoader

Активированный предмет - это то, что принадлежит актору (НПС) и чем в данный момент манипулирует актор (НПС). Для актора это в сумме - активный слот.

Если же предмет не принадлежит актору (НПС) и выстрелен/брошен - он уже не активен для актора (НПС). Или когда актор переключил номер активного слота.

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

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

По сути, в этот момент у актора в руке один болт бывший активным и новый болт в слоте, который еще не активен.

 

Вообще, с "движковым" болтом лучше не связываться без действительной нужды, для него есть немало нюансов в игре ...

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

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

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


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

Jein, решение у данного вопроса может быть только одно - полная переделка движка и алгоритмов скриптов. Что конечно не будет решено (именно для SoC/CS/CoP) и еще через 5 лет.

Проблема появления лагов обусловлена далеко не только частными причинами, которые ты упомянул (by bardak&Dennis_Chikin), т.е. ящиками и текстурами и описание может растянуться на несколько страниц форума, и что является оффтопиком для топика.

Общее условие - переход объектов из оффлайна в онлайн, точнее вхождение объектов в радиус 'switch_distance', при котором может поисходить самое разное ... и очень многое зависит от конкретных кодов (скриптов/конфигов) игры/мода.

Действительно, львиную долю возникающего порой лага занимает инициализация попавших в активную область объектов и их логики. Но тут даже полное переписывание скриптов логики мало спасает, хотя и дает некоторый результат. Последствия расширения активной области тобою уже описаны и нет смысла комментиовать.

 

Твой эксеримент со спавном патронов, по большому счету, вообще из другой оперы, т.к. основной лаг ты получаешь именно из-за спавна каждой из 4000 пачек. Если ты считаешь, что алгоритм спавна расходует мизер, то и сильно заблуждаешься и помноженный на 4 тысячи - это уже "паровоз", а не мизер.

 

А, вообще, я бы посоветовал игрокам относиться к подобным лагам как к поворотам при слаломе на большой скорости, т.е. не притормозишь - или вылетишь с дистанции или вообще перевернешься ... Ну а модмейкерам - не лениться оптимизировать новые и имеющиеся скрипты/алгоритмы и не плодить в Зоне излишних объектов, особенно с биндерами/логикой и своими скриптами-обработчиками (к примеру, упомянутые выше "заканчивающиеся болты").

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

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


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

SkyLoader

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

1. Как уже упоминал, болт спавнится движком независимо от скриптов/алл.спавна.

2. (упрощенно) Болт в слоте не имеет до некоторого момента своей серверной копии и отсутствует скриптовой серверный класс. Сервеная копия объекта появляется в момент собственно броска или выбрасывания/трансфера. ... (в общем покидания болтом своего владельца). В это времы возникает и визуал объекта (а не его худа) и можно как-то поупражняться с удалением или перемещением уже брошенного болта.

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

3. Выбошенный болт (валяющийся на земле) удаляется из игры автоматически движком (в соответствии с конфигом своей секции), что достаточно непредсказуемо с точки зрения точного времени.

... ну и др. Не зря, при иттерациях по инвентарю неписей иль актора болт игнорируется ...

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

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

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


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

panzyuza

Ошибки со строкою лога: any vertex in patrol path [xxx_walk] in inaccessible for object [xxx_NNNNN] встречаются во многих модах и избавиться от них довольно сложно.

Во-первых, мало кому кроме тебя что-то говорит твое упоминатие default_in_restrictors. Так что ничего "странного".

Во-вторых, ты почти прав, некий НПС не "не может попасть внутрь", а не может найти доступнго для него пути для попадания внутрь.

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

Что можно посоветовать:

1. Если для твоих НПС бегущих в укрытие установлено движение по путям: oNPC:set_path_type(game_object.patrol_path) - то как минимум следует ему дать большую свободу, т.е. задать движение по вертексам: oNPC:set_path_type(game_object.level_path)

2. Мониторить доступные пути и принудительно с путей следования убирать/отключать аномалии. Коды подобного можно найти во многих модах, хотя бы в том же АМК.

3. Не перенаселять логации неписями и не сликом усердствовать с кол-вом аномалий, особенно на путях следования неписей.

... ну и др.

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

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


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

panzyuza, не гадай, а анализируй и проверяй.

При чем тут при твоем вылете по именно вертексам на пути следования - какие-то ограничения на количество иль группировки? Если тут у тебя что-то не так - то и лог ошибки будет иной.

Если же не устраивает набитое укрытие или сомнения по возможным ошибкам - создавай доп.укрытия и подправляй схему, разводя неписей по разным углам.

Бежать же не в свое укрытие непись не может (хотя, кто там знает что тобою наковыряно в схеме ...). Если нет укрытия - то и не бежит, если есть - то бежит именно туда, куда ему прописал ты же сам своим скриптом. Мозгов у ботов в игре нет, кроме как AI-схем, которыми ты как раз и управляешь (ну не считая общих движковых). Вот и думай и заставляй их вести себя так как тебе нужно, а не как им "хочется". ;-)

 

Примечание: Будешь писать небрежно - ответы будут ... ну очень иными. Уважай тех, кто читает твои посты, плз.

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

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

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


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

panzyuza

Схема - зачастую это только часть алгоритма, хотя и основная. Беря в свой мод чью-то готовую схему, как раз не считаю достоинством "ничего не трогал", т.к. полностью автономных схем, не зависимых от сторонних скриптов и/или не нуждающихся в сторонней поддержке практически не бывает. Вот и твой случай об этом говорит, возможно тобою "не довзяты" некие необязательные коды.. Ошибка по вертексам не только присуща именно схеме выброса. И при модулях динамических иль иных аномалий подоюные ошибки увеличиваются, и при обходах аномалий и пр. ... Беря чье-то и не изучая, не подстраивая "под себя" - получаешь сырую солянку и ... чем больше таких копипаст-заимствований - тем выше вероятности ошибок или иных непоняток.

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

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

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


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

SkyLoader, не стОит "засорять" этим топик ...

1. Топики по ковырянию движка и достижениям в этом - в ином месте.

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

3. И, наконец, а НАФИГА?

Похоже те, кто зациклился на "заканчивающийся" болтах совсем забыли или даже не понимают - а зачем вообще болты!

В игре актор способен кидать болты, дабы проверить наличие аномалии.

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

Но что мешает кидать любой камешек иль патрон иль банку с консервой? Только несовершенство движка игры ограничивает ассортимент ...

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

Ну а то, что и неписи кидают болты вами игнорируется. Ведь и им тогда нужно бы болты ограничивать. И их болты актор тоже способен набирать и затариваться ... В общем, одну несуразность заменяете на другие. Моддинг ради моддинга.

 

 

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

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

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


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

panzyuza

"Редкость" в данном случае - понятие все же относительное ... Можно неумелыми кодами и их применением и почаще такие вылеты сделать. Можно, понаворочав кучу переповерок и подстраховок, ошибку сделать редкой.

И, странно слышать подобные сетования и удивления спустя пять лет после выхода игры.

Да, считай все так "плохо" ... и, если не устраивает - переписывай движек с его алгоритмами, или же ищи способы свести к минимуму.

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

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

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


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

Хм, что-то в игре не замечено прожекторов в автоматикой, чтобы сами "лупоглазиком" шарили по местности ...

Тут иль новую модель делать и крутить "головкою" как вентилятор у Сидоровича иль еще что-то.

Но, если приспичило и наплевать на "реализЬм", то что мешает крутить дирекцию объекту нужного прожектора? Объекты прожекторов вполне доступны и нет-пакетами можно поробовать реализовать "просвечивание".

(это именно намек, т.к. сам не пробовал ...)

 

P.S. Вот как то посоветовать повозиться с классом entity_action не осмелился ;-), у самого больше вопосов, чем ответов. ИМХО, стоило бы в "справочнике" эту тему приподнять и осветить хотя бы на упрощенном прикладном уровне ...

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

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

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


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

Roman82

Ты бы вначале почитал бы вообше материалы по моддингу.

При чем тут что-то "отдельно" от всего? Любой тип/класс предмета/объекта - стоит особняком от других.

Но если у актора есть в инвентаре какой-то предмет, то проверка db.actor:object(section_item) ~= nil работает для ВСЕХ без исключения.

Заменяешь section_item на свои "ammo_5.45x39_fmj" иль "grenade_f1" иль "ammo_vog-25" и все должно получаться.

Если же у тебя не получается - учи матчасть!

 

Добавлено через 3 мин.:

ColR_iT

Строка return db.actor:object("ammo_5.45x39_fmj") ~= nil полностью эквиваленттна твоему варианту, т.к. возвращает только булевы значения в любом случае.

Если же необходимо проверять и db.actor в игре(?), то тогда безопасный код таков:

return (db.actor ~= nil and db.actor:object("ammo_5.45x39_fmj") ~= nil) 

или

if db.actor and db.actor:object("ammo_5.45x39_ap") ~= nil then
    return true
else
    return false
end

 

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

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

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


Ссылка на сообщение
Roman82: ...Перерыл все моды, нигде подобной проверки не нашел...

...

И главное, ни в одном моде я не нашел проверок на боеприпасы. Вот что странно.

...

Матчасть я выучил 5 лет назад.

Как видно рыл в модах пятилетней давности, когда они только появлялись ... и были единичны и в пару килобайт :crazy:

Глупо, подозревать, что подобных проверок нет в модах: метания гранат (от xStream), в схеме стрельбы неписями из подствольников и в схеме менеджера оружия. Не говори глупости! В любом мало-мальски глобальном моде таких проверок море ...

Странно не отсутствие таких проверок в модах и в оригинальной игре, они там есть и у всех работают, а то, что именно у тебя не работает.

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

А вот это:

Убираю прекондишены на гранату и боеприпасы, диалог начинает работать.
Скорее говорит об ошибке скрипта. Если бы потрудился бы последовать совету ColR_iT и расшифровал бы более понятн что же подразумеваешь под "работает" - возможно было бы и более конкретно что-то сказать.

И, видно понятие лога в твоих "учениях" матчасти отсутствовало ... а то бы давно бы вывел в лог нужную информацию и не гадал бы на кофейной гуще.

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

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

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


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

Zander_driver

1. Появиться на локации у тебя кто-нибудь должен!

Твой респавнер на локации предбанника обязан при старте игры заспавнить как минимум 4-х неписей и далее отреспавнивать по паре ...

А вот останутся ли они в игре и на локации - это уже иной вопрос.

Поставь вывод в лог строки при создании этим респавнером неписей и смотри - получат ли они работу или будут удалены.

 

2. Очень странно, что ты засунул работы для гулага на одной локации в скрипт работ для другой (gulag_escape.script). В чем заключается такой "экономный" смысл, когда ничего не мешает и везде именно так и делается писать работы и пр. параметры гулагов именно в скрипт работ для конкретной локации, регистрируя его в xr_gulag.script.

 

3. Заодно не мешает показать начало xr_gulag.script, где регистрируется и собственно новая локация в табличке level_groups. Если не зарегистрирована локация то ... откуда твои респавнящиеся неписи будут получать свойство squad? Не уверен что дефолтный 0 даст возможность работать именно в твоем гулаге.

 

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

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


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

Zander_driver, перебирайся с подобными ковыряниями и гданиями в соответствующий топик "[soC] Ковыряемся в файлах", т.к. к скрипам твои проблемы имеют самое последнее отношение. Там же (и в этом топике) почитай уже понаписанное про респавнеры.

Вообще советую вначале подучить матчасть по статьям создания смартов/гулагов и потренироваться на каком-нибудь простеньком на том же Кордоне, а не замахиваться на все новое (локация+смат+гулаг+респавн+группировка+...), тем более делаешь все методом "тыка" и "в темную" (без инфы в логах).

 

Если заглянешь в se_respawn.script, то даже по комментам разрабов игры и закомменированным строкам вывода в лог можно многое понять (было бы желание). Сам респавнер действительно спавнится движком по твоей инфе из алл.спавно, но с какого такого ... респавном неписей движек должен заниматься?

Не путай переходы для ГГ с "переходами" для неписей. Тебе скорее всего и с этим еще придется повозиться ... но это уже потом, а пока - неписи НЕ используют переходов по которым ходит актор.

 

Ну и как с респавнером, поставив вывод в лог в smart_terrain.script ты сможешь не гадать, а видеть идет/пришел/начал работу и сколько таких в твоем гулаге. И если нет таких - разбирайся, почему же твой гулаг не принимает на работу. Что мешает "ручками" заспавнить подходящих неписей и отследить - идут ли они в гулаг или нет и почему?

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

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


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

SkyLoader, ну не тебе же пояснять, что зависания биндеров могут иметь самые разные причины и готовых ответов не может быть.

Засучивай рукава и ...

- или анализируй все строки кодов относящиеся к биндеру твоего непися;

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

Вероятнее всего у тебя все же зависание из-за гулаговой логики, хотя она у тебя и простейшая. Раз в оффлайне твой НПС дошагивает до работы - смотри в онлайновых кодах биндера апдейта гулага. Возможно некорректные методы применяешь или иные ошибки ...

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

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

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


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

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