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

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


Halford

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

@dsh в том то и дело, что ЭТОТ вариант не работает при оживлении Мухи в Госпитале.

Я проверил уже ВСЕ рестры и экшены. Я проверил уже ВСЕ поршни и координаты. на текущей Соли по сравнению с Солью 2010.

Не работает.

Иначе я бы не задавал этого вопроса.

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

Поэтому надо поменять условия оживления. Надо просто кинуть арт в рестр и выдать поршень. БЕЗ всякой варки. А уж остальное я в экшенах пропишу как надо.

Мне главное отследить чтобы определённый арт упал в определённый рестр и выдался поршень.

 

p.s.  я НЕ понимаю почему так происходит, что у 99% юзеров возникают проблемы с оживлением Мухи. Поэтому надо измениь и условия и действие и сделать всё проще.

Какая-то неведомая мне правка мешает. А поскольку Людмила (lsclon)покинула моддинг навсегда, а кроме неё никто не знает, то я прошу помощи у форума.

"Кругом зомби.....у меня кончаются патроны...."

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


Ссылка на сообщение
9 минут назад, Dennis_Chikin сказал:

что делают info в файлах level.spawn

Это info которые прописаны в кастом дате НПСов. Ну например на Кордоне в трупе бандита на элеваторе. Обыскал труп - выдался поршень.

И файл level.spawn не используется игрой вообще. Он используется только для СДК.

 

  • Полезно 1

"Кругом зомби.....у меня кончаются патроны...."

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


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

Вопрос такой:

- как удалить артефакт, который ГГ выкинул из рюкзака ?

Имя его известно  - af_kamen_udachy и арт такой в игре один единственный.

Функция

function del_art()
 del_obj_by_name("af_kamen_udachy")
 end

не работает. Артефакт продолжает оставаться на земле.

Спасибо.

 

"Кругом зомби.....у меня кончаются патроны...."

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


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

@abramcumner Ну это имя арта в конфиге. Мы получаем его в процессе варки и берём с собой. Никакой олспавн не задействован.

[af_kamen_udachy]:af_base
$spawn = "artifacts\af_kamen_udachy"
$npc = on
visual = physics\anomaly\artefact_kamenudachi.ogf
description = artifact_af_kamen_udachy

 и так далее, стандартный конфиг артефакта со свойствами.

Функция вызывается из логики рестра

[sr_idle@one]
on_info = {+spawn_muha_live} %=arhara_dialog.del_art%

Я не знаю что такое понятие "коллбек".

"ИД" это видимо story_id ? Его нет у этого арта, не назначался, потому что я могу назначить СИД только итему в оллспавне, а в конфигах это невозможно сделать. 

"Кругом зомби.....у меня кончаются патроны...."

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


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

@ComradE_AleX Бинокль использует 4 слот. Тебе придётся переназначать слоты и потом ещё в АИ-схеме поведения НПС сделать так, чтоб НПС не начал стрелять из Бинокля )))

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

Всё это может потянуть за собой такое... что лучше забыть про эту идею.

"Кругом зомби.....у меня кончаются патроны...."

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


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

Очередной вопрос.
Имеем стандартную функцию оригинала ТЧ по нанесению хита по обжекту

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



function hit_obj(actor, npc, p)
    local h = hit()
    local obj = level_object_by_sid(p[1])
    local sid = nil

    if not obj then
--        abort("HIT_OBJ [%s]. Target object does not exist", npc:name())
        return
    end

    h:bone(p[2])
    h.power = p[3]
    h.impulse = p[4]

    if p[5] then
        sid = tonumber(p[5])
        if sid then
            sid = level_object_by_sid(sid)
            if sid then
                h.direction = vector():sub(sid:position(), obj:position())
            end
        end
        if not sid then
            h.direction = vector():sub(patrol(p[5]):point(0), obj:position())
        end
    else
        h.direction = vector():sub(npc:position(), obj:position())
    end

    h.draftsman = sid or npc
    h.type = hit.wound
    obj:hit(h)
end

 

В оригинале параметры в неё передаются через рестр, например по бочкам на дороге к Выжигателю, которые падают с горы на ГГ.

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

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



function hit_mon()
  local h = hit()
  local obj = level_object_by_sid(14200)
  local sid = nil

  if not obj then
--    abort("HIT_OBJ [%s]. Target object does not exist", npc:name())
    return
  end

  h:bone("link")
  h.power = 1
  h.impulse = 1500

  if p[5] then
      sid = tonumber(p[5])
      if sid then
          sid = level_object_by_sid(14200)
          if sid then
              h.direction = vector():sub(sid:position(), obj:position())
          end
      end
      if not sid then
          h.direction = vector():sub(patrol(p[5]):point(0), obj:position())
      end
  else
      h.direction = vector():sub(npc:position(), obj:position())
  end

  h.draftsman = sid or npc
  h.type = hit.wound
  obj:hit(h)
end

 

Но ничего не происходит и лог ругается на строку

h.direction = vector():sub(npc:position(), obj:position())

пишет что  - _attempt_to_index_global_'npc'_(a_nil_value)

Может быть есть иные функции с прямыми параметрами, чтобы разрушить итем с СИДом ? Или чего-то не хватает в стандартной функции ?

Спасибо.

"Кругом зомби.....у меня кончаются патроны...."

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


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

@naxac Попробовал. Вроде и сработала функция, но итем не разрушился. Возможно маловаты значения мощности и импульса, тогда какие цифры ставить.

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

a7b395a5468cb4fe2362076022be8a96b2cda929

У него в модели путь к разрушению config\models\objects\monolith_generator.ltx

Там прописано fire_wound_immunity      = 0.15

Может у меня цифирьки маловаты выставлены для такой пулестойкости ? Не взрывается он...собака такая..

"Кругом зомби.....у меня кончаются патроны...."

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


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

@naxac Нет, увы не разрушается зараза. Поставил уже

h.power = 10000 и ничего не происходит.

А 4 пульки из ПКМа спокойно грохают его. Может что не так с функцией ?

"Кругом зомби.....у меня кончаются патроны...."

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


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

@abramcumner Да, так и есть. Андрей (Charsi) уже в скайпе подсказал такой же тип хита. Щас всё работает прекрасно. Монолитовский генератор взорвался.

Текущая функция если кому пригодится по нанесению хита на итем с СИДом:

function hit_mon()
  local h = hit()
  local obj = level_object_by_sid(14200)
  if not obj then return end
  h:bone("link")
  h.power = 10
  h.impulse = 1500
  h.direction = vector():set(0,0,0)
  h.draftsman = obj
  h.type = hit.fire_wound
  obj:hit(h)
end

Всем спасибо кто помогал.

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

"Кругом зомби.....у меня кончаются патроны...."

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


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

Очередной вопрос :

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

[spawn] \n
    wpn_saiga12c = 1 \n
    ammo_12x76_zhekan = 1 \n

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

Что за скрипт\конфиг отвечает за дефолтное наполнение ствола боеприпасом ?

Как сделать так, чтобы по дефолту у НПСа были в стволе именно те патроны (сразу !), которые ему добавлены в профиль ?

 

Спасибо.

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

"Кругом зомби.....у меня кончаются патроны...."

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


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

@nasar75 @shahvkit Хммм, но если я первым поставлю жекан, то у всех новичков-НПСов с обрезами и дробью  - будет заряжен жекан. А мне хотелось бы этого избежать.

Однако засада.

Спасибо.

 

Аааа... Стоп. Конфиг ствола. Понял.

Изменено пользователем BFG
  • Сочувствую 1

"Кругом зомби.....у меня кончаются патроны...."

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


Ссылка на сообщение
В 19.12.2017 в 16:05, Pir@t@s сказал:

 И по этому поводу у меня вопрос: логику и пути НПС на новых локациях как прописывать? Создавать файл «way_lxx_unknown.ltx» по аналогии с другими или это можно делать в других файлах, например: «way_aver.ltx».

Насколько помню, не надо ничего создавать. Прописывай пути в любом файле. АСДС через который ты работаешь, при компиле сам, по гейм_вертексам, всё соберёт как надо.

 

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

"Кругом зомби.....у меня кончаются патроны...."

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


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

Очередной нубский вопрос.

===============

Если я спавню любой итем, пусть например ящик, через оллспавн, то там помимо строки

position = x, y, z есть и строка direction = ....

 

Если я использую скриптовый спавн, типа alife():create("item",vector():set(x,y,z),lv,gv), то существует ли способ, каким-то образом указать и здесь direction = .... ?

 

Спасибо.

 

"Кругом зомби.....у меня кончаются патроны...."

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


Ссылка на сообщение
2 часа назад, ed_rez сказал:

в сами файлы описания персонажей, по типу character_desc_.....xml.

Вот точно не туда. Уж не знаю как сделано в Солянке, но пересмотрел в своё время кучу профилей НПСов по тем или иным причинам. Ни в одном не прописан ПДА. А они между тем с трупов как-то выпадают. Какой-то скрипт их туда доспавнивает с определённой степенью вероятности. Типа death_manager.script или что-то подобное.

Денис может появится и прояснит.

@AndrewMor Не правь пока профили НПСов, не делай лишнюю работу.

  • Спасибо 1
  • Нравится 1

"Кругом зомби.....у меня кончаются патроны...."

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


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

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

Поиском только правка game_relation находится, но это не то.

Спасибо.

"Кругом зомби.....у меня кончаются патроны...."

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


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

@_Val_ Гарик.

name = bar_bar_guard
character_profile = bar_barman_guard

object_flags = 0xffffffff
custom_data = <<END
[smart_terrains]
none = true

[logic]
cfg = scripts\garik.ltx
END
visual_name = actors\neytral\stalker_bar_security

garik.ltx

 

Секции [hit@garik] и [death@garik] это Соляночные. В оригинале их нет.

  • Спасибо 2

"Кругом зомби.....у меня кончаются патроны...."

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


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

@Mutantt 

В логике прописано:

 

Смотри секцию 

[remark2]
anim = guard_rac

и дальше ещё в ремарке3

 

esc_wolf.ltx

"Кругом зомби.....у меня кончаются патроны...."

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


Ссылка на сообщение
3 часа назад, Mutantt сказал:

А изменения в данном файле игра почует только после новой игры, или в любой момент?

Данный файл взят из НС2016, где логика Волка вынесена в отдельный файл.

====================================

В чистом ТЧ, тебе надо смотреть файл gulag_escape.script, там гулаг новичков в ДН прописан  и оттуда попадаем в gulag_escape.ltx в секцию Волка

section = "logic@esc_lager_volk", там менять анимку.

Все изменения логики вступают в силу ДО спавна НПСа\моба. Если он спавнится с НИ - значит нужна НИ.

=====================

Что касается удаления всех обжектов - это тебе поиском надо по "Школе Моддинга" пройтись. Были примеры такой функции.

"Кругом зомби.....у меня кончаются патроны...."

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


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

Нашёл на Вики-Сталкер  в " Разбор скрипта xr_effects" такую штуку:

==================

play_particle_on_path Проигрывает партикл на waypoint'е %=play_particle_on_path(<имя партикла>:<waypoint>)% xr_effects.play_particle_on_path(nil, nil, {"<имя партикла>","<waypoint>"})

 

=================
В скрипте у себя вижу такую функцию
 

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



function play_particle_on_path(actor, npc, p)
    local name = p[1]
    local path = p[2]
    local point_prob = p[3]
    if name == nil or path == nil then
        return
    end

    if point_prob == nil then
        point_prob = 100
    end
    
    local path = patrol(path)
    local count = path:count()
    for a = 0,count-1,1 do   
        local particle = particles_object(name)
        if math.random(100) <= point_prob then
            particle:play_at_pos(path:point(a))
        end
    end   
end
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

===================

Как мне сделать например чтоб партикл "explosions\\explosion_fuelcan" проигрался в координатах (123,456,789),23444,123

Каким образом имя партикла и цифры вписать в функцию ? Вызывать буду через логику рестра.

Спасибо.

 

p.s. и можно ли вообще на ТЧ проиграть партикл скриптом по координате локации, а не привязанным к НПСу или кости итема, как пишут на Вики ? А то может зря и вопрос-то задал.

 

 

"Кругом зомби.....у меня кончаются патроны...."

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


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

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