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

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


Halford

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

Я решил "перекинуть" свои старые (сделанные в ЧН) артефакты в Зов Припяти. С артефактом как предмет инвентаря всё нормально - он покупается, продаётся, используется, выкидывается и т.д.. Но как объект он совсем никакой.

1. Я взял модельку настоящую, скопировал, hex-редактором открыл, прописал новую текстуру, длину строки не изменял. Присвоил своему артефакту этот визуал и просто полез в аномалии искать артефакт (именно так вроде в ЧН и работало всё). Артефакта не нашёл... потом здесь увидел про конфиги аномалий.

Нашёл их, вставил свои артефакты, начал новую игру, не нашёл артефактов.

Потом поставил start_artefact на название секции моего артефакта. Теперь в аномалии просто нет артефактов. Я подумал, что просто его не засекает детектор... нашёл в configs/ui что-то про детектор, вставил строчку с названием моего артефакта. Опять не работает. Решил, что это дело с $spawn в секции, которое равно "artefacts/thermal_5_fire"

Только вот я не нашёл нигде artefacts/thermal_5_fire

 

Почему не работает и надо ли мне искать "artefacts/thermal_5_fire"?

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


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

Кто-нибудь уже пытался спаунить новых персонажей без all.spawn в ЗП? Просто я в ЧН сделал персонажа, щас сделал в Зове Припяти. В принципе, работает всё - спаунится, не вылетает - но говорить со мной персонаж не хочет. Говорит про старшего, но он-то только что был заспаунен и хрен знает, где у него старший, да и вообще он мне нужен как полноценный персонаж. Думаю, это как-то с логикой связано... но я "перепроверял" всё - т.е. не просто копировал из ЧН-овских файлов код, а подстраивал под ЗП (сильно не изменился он), но логика теперь вместе с персонажем в custom_data не прописывается... у некоторых персонажей такая строчка осталось, но закомментированной. В общем, я хочу сделать персонажа, с которым можно поговорить, который будет стоять на месте (а не бродить по локации), и при этом не будет пытаться слиться в одно целое с другим персонажем (как у меня получалось при присваивании ему логики ключевых персонажей вроде барменов, продавцов и техников). Итак, что мне делать?

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

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


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

Я сейчас только что персонажу "выдал" кучу диалогов, а также визуал и класс Сыча, может он сейчас хоть чего-нибудь поменяет... хоть сольётся с Сычом, там уже разберёмся :)

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

Далее, <actor_dialog> - это просто ссылка на первую ветку диалога, т.е. например напишем <actor_dialog>tkach_dialog</actor_dialog> и, если у нас есть tkach_dialog, появится возможность поговорить по первой ветке этого диалога, а дальше уже по развитию диалога...

А класс я ему, кстати, выдавал со словом commander (т.е. копировал, хотя может это не так важно?)

---

Похоже, класс или визуал ничего не меняют... ну, по крайней мере таким персонажам, или придётся через all.spawn или разбираться в остальных файлах, сейчас пойду посмотрю npc_profile и spawn_sections...

---

В общем, пока что ничего нового я не нашёл... есть идея создать диалог (можно просто две или три ветки, и без текста (т.е. например dialog_1, dialog_2 и dialog_3)) и вставить <actor_dialog>[название диалога]</actor_dialog> во все секции персонажей какой-нибудь локации (Затона, например), в классе/id'е которых содержится слово commander и искать на локации какую-нибудь "звёздочку", если диалог есть, значит мы ищем в правильном направлении, а если нету, значит или мы вставили диалог не всем таким персонажам, или нам нужно было вставить его совсем другим персонажам... но это уже завтра =)

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

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


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

Пиши это:

 

function money_check()
  return db.actor:money()>=2000
end

 

Я такой же скрипт писал в ЧН, тоже у меня ругался... :lol:

 

Вроде надо писать название вот этого money_check в <precondition></precondition>, вот так:

 

    <dialog id="tkach_money"> - id диалога
    <precondition>dialogs_marsh.money_check</precondition> - проверка денег
        <phrase_list> - ветки диалога
            <phrase id="1">
                <text>tkach_mon_1</text>
                <next>2</next>
        <next>3</next>
            </phrase>
            ...
            <phrase id="0">
                <text>tkach_mon_0</text>
                <next>1</next>
            </phrase>
        </phrase_list>
    </dialog>

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

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


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

Скорее всего (если я тебя правильно понял), тебе в gamedata/configs/gameplay/character_*.xml

Вместо * могут быть items, food, items_2 и т.д.

Если что, то такая структура файла:

 

bread = 1, prob=0.5 \n

kolbasa = 1, prob=0.5 \n

vodka = 1, prob=0.5 \n

 

bread - название предмета (из gamedata/configs/misc/items.ltx)

1 - сколько

prob=0.5 - вероятность выпадения (50% стоит)

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

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


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

Записывай в info_*.xml (например, вместо * - zaton или jupiter) <info_portion id="[название инфопоршня]"></info_portion> и в ветку диалога

<dialog id="jup_buy_car">
    <dont_has_info>[название записанного инфопоршня]</dont_has_info>
        <phrase_list>
            <phrase id="0">
            ...
            <phrase id="5">
                <text>jup_cars_005</text>
                <give_info>[название инфопоршня]</give_info>
            </phrase>
        </phrase_list>   
    </dialog>

 

Т.е. мы задаём вместе с precondition'ом проверку инфопоршня - если есть, то диалога нет, а если нету - то он есть и в конце (ну, я в 5-ую фразу вставил) диалога, в завершающую (обычно так) фразу выдаём инфопоршень, поэтому диалога не будет. Названия инфопоршня в коде должны быть одинаковыми. Также можно проверять только одну фразу (ставим перед <phrase id="..."> проверку в виде <dont_has_info> или <has_info> (нет или есть инфопоршень)) или ставить несколько проверок, т.е., например, написать ещё диалог, если он "успешно" проходит (например, герой не нагрубил собеседнику и за это получил инфопоршень), можно поговорить с собеседником о машине.

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

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


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

1) Да, правильно понял.

2) Так и надо сделать.

А насчёт той фразы, я думаю, надо просто убрать строку с <dont_has_info>

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


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

По идее (и это скорее всего так и есть) sell - значит "продавать", => это они тебе такое оружие могут продать. Т.е. в игре когда торгуешь, у них не обязательно есть АК, т.к. не всегда они его тебе продадут (из-за этой самой вероятности, я так понимаю). В items нету, значит, нужно идти по другому адресу: gamedata\configs\gameplay\character_desc_*.xml, где * - название локации и вручную вписывать в каждую секцию сталкеров (это там, где конструкция (снизу секции) <actor_dialog></actor_dialog> отсутствует) нужные тебе стволы (т.е. их названия, а также можно написать те же bread=... или вообще #include "gameplay\*.xml", где * - твоё название файла, в который ты запишешь свои стволы, и будешь его менять, чтобы всё время по этим секциям не шататься).

  Пример секции сталкера (Показать)
Изменено пользователем Tkachov

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


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

После некоторых экспериментов и "прочёсывания" файлов, я пришёл к следующему умозаключению:

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

Почему я так решил? Да я Сыча заспаунил (т.е. с его specific character id'ом НПС), а он идёт да бормочет про своего "старшего". А ещё я где-то рылся (щас уже не помню, какой-то скрипт), нашёл функцию, читать не стал, длинная была, но точно помню то ли комментарии, то ли названия функций или чего-то в этом роде, где было про проверку id'а НПС - типа, зарегистирован он или нет.

Пойду искать дальше, если узнаю чего про спаун НПС - напишу здесь.

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


Ссылка на сообщение
  Po-meceniy писал(а):
Как называется инфопоршши разговора со Стрелком и окончания игры (вы не садитесь в вертолёт).

Я тут рылся в скриптах и наткнулся на твои инфопоршни:

Покидаешь: pri_a28_actor_in_zone_leave

Остаёшься: pri_a28_actor_in_zone_stay

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


Ссылка на сообщение
  Nikapol писал(а):
не могу найти фалы отвечающие за повышение репутации ГГ у группировок. вообще какие фалы отвечают за репу в игре? нашел тока ачивменты. но не могу разобраться где прописано сока, например репы нуна чтоб монолитовцы вступили в долг? думаю мысль моя ясна :?)

 

Не знаю про "сколько репы нужно, чтоб монолитовцы вступили в Долг", но есть некоторые файлы скриптов, в которых есть функции, повышающие расположение группировок к игроку. Вроде это gamedata/scripts/xr_effects.script, после комментария

-- Функции для работы с отношениями

Там сначала сделать другом/нейтралом/врагом, потом ещё функции, дальше есть одна или несколько функций, повышающих расположение группировок. Ищи ;)

 

  igor822605 писал(а):
FATAL ERROR

 

[error]Expression : error handler is invoked!

[error]Function : invalid_parameter_handler

[error]File : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp

[error]Line : 805

[error]Description :

 

 

stack trace:

На строку 805 в файле D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp

И ещё что-то то ли про функцию, то ли про неправильный параметр - invalid_parameter_handler

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


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

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