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

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


Halford

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

1.
В оригинальном варианте:
 self.idle_time = 24*5  -- (игровые часы) время между выдачами задания повторно, 5 игровых дней

24 * 1час * 5 = 5 суток. (1 час - единица измерения)

Вообще, там оно дальше как вызывается (например):

task_desc.next_time = game.hours()+self.idle_time

Получаем время в часах и прибавляем к нему нашу константу.


Т.е., можно и то, что выше даже попробовать ради интереса..

 

Изменено пользователем Купер
  • Полезно 1

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


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

@mmindwork , в начале скрипта есть табл. констант поправочных коэффициентов для уровней сложности:

-- какую часть патронов оставлять в стволах в зависимости от сложности игры
local ammo_dfcy = { default = 0.6, stalker = 0.4, veteran = 0.3, master = 0.2 }

 

  • Полезно 2

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


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

@DarkSnowder , при считывании из табл. anom_list получаем недопустимый первый аргумент.

На первый-первый погляд ( ! ) что-то странное здесь:

function enumerate_anoms()
...
--* по идее же, перебираем в цикле игровые id, а что есть 40000 при этом? id же мах = 65535 ?
    for id=1,40000,1 do
...
end

 

 

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


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

@bsanek628 , [wpn_fort_s1]:wpn_fort

Все параметры не указанные явно в конфиге дочерней секции [wpn_fort_s1] , будут читаться из конфига родительской секции [wpn_fort].

  • Нравится 1
  • Согласен 1
  • Полезно 2

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


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

@gam ,

Скрытый текст

изменение silencer_status , snd_*,  *_particles , боюсь ошибиться, но вполне себе сработает даже при замене "на горячую". Но, да, во избежание, в самом общем случае "... НИ не так уж совсем не дельный совет".

 

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


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

По умолчанию - нет. Либо скриптовые костыли с динамической подменой модели оружия, либо кастомные движки, наподобие OGSR.

  • Нравится 1
  • Полезно 1

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


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

Ёжкин бабай, и чего только народ не нароет по сусекам!
Дата: 13.12.2010
Платформа: ТЧ 1.0004


@bsanek628 ,
прекондишены и экшены в upgrade_actions.script.

Скрытый текст
-- у актора достаточно денег
function semenov_actor_upgrade_have_money_to_silence(actor, npc)
    return actor:money() >= 5000
end
-- забираем их у него
function semenov_actor_upgrade_give_money_to_silence(actor, npc)
    dialogs.relocate_money(npc, 5000, "out")
end

 

С последующей проверкой в нужных диалогах.

dialogs_yantar.xml:

Скрытый текст
           <phrase id="110">
                <text>sgm_semenov_modify_dialog_6</text>
                <precondition>upgrade_actions.semenov_actor_upgrade_have_money_to_silence</precondition>
                <action>upgrade_actions.semenov_actor_upgrade_give_money_to_silence</action>
                <action>upgrade_actions.actor_give_groza</action>
                <next>111</next>


SGM_xml_dialogs.xml:

Скрытый текст
    <string id="sgm_semenov_modify_dialog_7">
        <text>Установить безшумный комплект...(За 5 тисяч)</text>
    </string>
        <string id="sgm_semenov_modify_dialog_8">
        <text>Вы выбрали "безшумный комплект"...Теперь давайте денежки и "Гром", и я приступлю к работе!</text>
    </string>

 

И, соответственно, для каждого механика. В зависимости от конкретного апргейда.

Изменено пользователем Купер
  • Полезно 3
  • Жуть! 2

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


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

И чего только не найдёшь любопытства ради.

Кстати, а зачем ПЫС дублировали вот это вот пресловутое "Убить Стрелка" ?
 

Скрытый текст

 

bind_stalker.script:

--* проверка начала игры
     if self.bCheckStart then
        printf("SET DEFAULT INFOS")        
        if not has_alife_info("storyline_actor_start") and (level.name() == "l01_escape") then
--* поршень с привязаннным таском
            self.object:give_info_portion("storyline_actor_start")          
        end

 

+ info_protions.xml

 <info_portion id="storyline_actor_start">
    <task>storyline_eliminate_gunslinger</task>
  </info_portion>

 

 

 

 

И тут же рестриктор:

Скрытый текст

 

[logic]
active = sr_idle

[sr_idle]
on_actor_inside = {-esc_kill_gunslinger} nil %+esc_kill_gunslinger =run_postprocess(agr_u_fade)%

 

info_l01escape.xml

    <info_portion id="esc_kill_gunslinger">
        <task>storyline_eliminate_gunslinger</task>
...
    </info_portion>

 

 

 

---

Скрытый текст

Крот, да не смешно на самом деле: интересно, это обычное ПЫС-ское "как всегда" или действительно есть какой-то сермяжный смысл?

 

Изменено пользователем Купер
  • Смешно 1

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


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

@Nowislaw , вот тут и дальше.

Хмм... а вот тоже почитал бы с интересом на внятном языке как это всё работает :russian_ru:.

  • Спасибо 1
  • Согласен 2

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


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

@Ali_Babai_45 ,

1. Стандартный блокнот в новых версиях Win (8+) по умолчанию как раз сохраняет файлы в "неправильной" для Сталкера кодировке. UTF with BOM (на всякий случай).

2. У N++, к сожалению, очень давно поломано автоопределение кодировки при открытии (есть такая настройка у него) - кодировка открываемого файла определяется наобум.

ANSI / Windows 1251 для скриптов. Вот это вот: "кириллица макинтош" точно жуть. тынц тынц тынц

3. Вообще, кириллица в скриптах - дичайший моветон на самом деле, хотя мы все так и делаем :biggrin:.

game.translate_string("...") - почему бы не использовать?

 

  • Спасибо 1
  • Нравится 2
  • Полезно 1

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


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

@boneset-hq ,
по умолчанию для военных логика схемы meet не назначается. xr_meet.script

Скрытый текст
   elseif npc_community == "military" or
            npc_community == "monolith" or
            npc_community == "killer" or
            npc_community == "bandit" or
            npc_community == "zombied" then
        def.meet_state        = ""
        def.meet_state_wpn    = ""
        def.init_meet        = ""
        def.victim            = ""
        def.victim_wpn        = ""
        def.use                = "false"
        def.use_wpn            = "false"
        def.syndata            = ""
        def.precond            = "visibility"
        def.abuse            = "false"


Перенастроить/добавить для нужного перса обработку этой схемы в соответствии с соответствующими параметрами для требуемой секции логики его логики. gulag_escape.ltx:

Скрытый текст
[camper@esc_blockpost_commander_day]
path_walk = commander_walk
path_look = commander_look
meet = meet@abc --* примерно так

[meet@abc] <--* примерно так
meet_state  =...
meet_state_wpn =...
victim  =...
victim_wpn  =...
use  =...
use_wpn =...
syndata =...
meet_dialog =...

 

Ориентируясь, например, на того же Кузнецова под мостом.

Изменено пользователем Купер
  • Полезно 1

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


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

Требуется помощь зала.

Что может быть не так в регулярках вида:

%s*([_%w]+)%s*%=%s*([+=-\|}{)(/@_%s%,%.%w]+)%s*

и

%s*([%\%.-_%w]+)%s*%|%s*([-_%w]+)%s*

 

Используются в качестве шаблонов для функции string.gmatch()

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


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

@agden , гулагу лагеря новичков (gulag_escape.ltx) в настройках прописан диалог при встрече:

Скрытый текст
[logic@esc_lager_walker1]
active = walker1@esc_lager

[walker1@esc_lager]
path_walk  = guard_walk1
path_look  = guard_look1
meet = meet@lager <- вот здесь

[meet@lager]
meet_dialog = esc_lager_no_talk <- сам диалог

 

В самом диалоге настроен прекондишен для начала общения по поршню, полученному ГГ (dialogs_escape.xml):

Скрытый текст
<dialog id="esc_lager_no_talk">
            <phrase id="0">
                <text />
                <next>1</next>
...
            </phrase>

            <phrase id="1">
                <text />
это поршень, необходимый для начала диалога
                <dont_has_info>tutorial_wounded_start</dont_has_info>
                <next>11</next>
            </phrase>
иначе с ГГ общаться не будем
           <phrase id="11">
                <text>esc_lager_no_talk_11</text>
                <next>111</next>
            </phrase>

            <phrase id="111">
                <text>esc_lager_no_talk_111</text>
                <action>dialogs.break_dialog</action>
            </phrase>


А этот поршень как раз и выдаётся при стартовом диалоге Сидоровича.

Скрытый текст
    <dialog id="escape_trader_start_dialog">

...
             <phrase id="199">
                <text>escape_trader_start_dialog_199</text>
                <action>escape_dialog.give_weapon_to_actor</action>
                <action>escape_dialog.give_knife_to_actor</action>
                <give_info>esc_trader_direct</give_info>
Вот здесь
                <give_info>tutorial_wounded_start</give_info>
                <next>1999</next>
            </phrase>

 

 

Изменено пользователем Купер
  • Согласен 1

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


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

@agden , там у ПЫС в начале на самом деле жуткая каша из билдов и релиза. Разгребать которую...

 

В info_01escape.xml к нему привязано задание "Забрать флешку у разведчика"

    <info_portion id="tutorial_wounded_start">
         <task>esc_flash_task</task> <-- здесь
        <article>sl_first_opinions</article>   <!--commented -->
    </info_portion>

Которое тянет в свою очередь свои поршни (получил задание, взял предмет, выполнил задание и т.д.)

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

Изменено пользователем Купер

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


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

map_spots.xml

<quest_pointer></quest_pointer>

p.s.: @imcrazyhoudini, забыл добавить. Сам параметр динамический. ЕМНИП (не помню за давностью лет), теоретически на каждый тип устанавливаемой метки можно назначить свой тип указателя на неё.

тип метки - тип указателя
    <blue_location>
для глобальной карты
        <level_map spot="blue_spot"            pointer="quest_pointer"/>
для миникарты
        <mini_map spot="blue_mini_spot"        pointer="quest_pointer"/>
    </blue_location>

 

Изменено пользователем Купер
  • Спасибо 1
  • Нравится 1

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


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

А зачем в ночном состоянии гулага NPC дневные работы, по идее? Т.е., вот это вот:

state = {0,1}

 

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


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

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