Все посты %s в %S - AMK Team
Перейти к контенту

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


Halford

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

Очередной мозговой завис по логике у меня и у НПСа.

Цель : проследить за НПСом, так чтобы он меня не заметил до определённой точки. Логика моба такая

[logic]
active = kamp            ;изначально моб сидит у костра и ещё не знает ничего
danger = danger_ignore
on_death = death
on_hit = hit

[kamp]
center_point = koster_center 
path_walk = koster_center_task
radius = 2.4
show_spot = false
on_info = {+gans_go} walker  ; оппачки, поступил поршень из диалога ГГ с другим НПСом ,
                             ; что типа надо бы последить вон за тем ГАНСом.

[walker]                     ; Ганс отправляется в свой путь до первой точки остановки
path_walk = gans_walk        ; отслеживается растояние до ГГ не больше 40 и не меньше 25 метров     
path_look = gans_look
on_actor_dist_le_nvis = 25 | kamp1 %+gans_kvest_proval +gans_nazad%    ; иначе провал задания, Ганс топает назад
on_actor_dist_ge_nvis = 40 | walker5 %+gans_kvest_proval%            ; к костру откуда ушёл.
on_timer = 11000 | walker1
show_spot = false
meet = no_meet

[walker1]                      ; следующая точка пути, как всегда осматриваемся на стрёме, потом топаем дальше
path_walk = gans1_walk         ; проверки на провал задания такие же 
path_look = gans1_look
on_actor_dist_le_nvis = 25 | kamp1 %+gans_kvest_proval +gans_nazad%
on_actor_dist_ge_nvis = 40 | walker5 %+gans_kvest_proval%
on_timer = 13000 | walker2
show_spot = false
meet = no_meet

[walker2]
path_walk = gans2_walk
path_look = gans2_look
on_actor_dist_le_nvis = 25 | kamp1 %+gans_kvest_proval +gans_nazad%
on_actor_dist_ge_nvis = 40 | walker5 %+gans_kvest_proval%
on_timer = 17000 | walker3
show_spot = false
meet = no_meet

[walker3]
path_walk = gans3_walk
path_look = gans3_look
on_actor_dist_le_nvis = 25 | kamp1 %+gans_kvest_proval +gans_nazad%
on_actor_dist_ge_nvis = 40 | walker5 %+gans_kvest_proval%
on_timer = 22000 | walker4
show_spot = false
meet = no_meet

[walker4]
path_walk = gans4_walk
path_look = gans4_look
on_actor_dist_le_nvis = 20 | kamp2
meet = meet

[kamp1]                               ; тот же костёр откуда ушёл моб. Сюда же он и вернулся с пути
center_point = koster_center          ; когда понял шо его запалили
path_walk = koster_center_task
radius = 2.4
meet = meet

[kamp2]                              ; конечная точка пути моба, куда он собственно и шёл
center_point = gans_center           ; и где что то вобщем будет с ним. Что ? Я ещё не придумал. Пусть сидит там.
path_walk = gans_center_task
radius = 0.4
meet = meet

[walker5]                           
path_walk = gans5_walk
path_look = gans5_look
on_timer = 20000 | %+spawn_gans2 =zasada.dell_gans% ; в случае провала задания Ганс удаляется,и спавнится его братан.
show_spot = false
meet = no_meet

[danger_ignore]
ignore_distance = 0
ignore_distance_corpse = 0
ignore_distance_sound = 0

[meet]
use = true
use_wpn = true
meet_talk_enabled = true

[death]
on_info = %+gans_kvest_proval%

[hit]
on_info = {=hit_by_actor} %+gans_kvest_proval%
END
story_id = 17070
.....
.....

 

 

Но дело в том, что как только я получаю поршень +gans_go, то задание сразу уходит в провал. Пробовал на разных расстояниях, всё равно - провал задания. Убирал проверки с [walker] и [walker1], тогда он встаёт от костра, идёт по путям, но потом по достижении [walker2] задание всё равно уходит в провал независимо от того на каком расстоянии ГГ.

 

Что с ним делать и какие ещё проверки поставить ? Уже 2 день его туда сюда гоняю по локации. Ни в какую.

Спасибо.

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

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


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

 

 

Попробуй убрать таймеры

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

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

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


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

Имеется новый рабочий вертолёт. Хотел поменять ему партиклы взрыва, чтобы отличались от дефолтного, выбрал в PE другой взрыв.

Унаследовал секцию, сделал так:

[k_50]:helicopter
GroupControlSection = spawn_group
$prefetch = 1
cform = skeleton
class = C_HLCP_S
script_binding = bind_heli.bind
visual = physics\vehicles\к_50\к_50.ogf

explode_particle  = anomaly2\body_tear_02

В оллспавне, само собой назначил :

section_name = к_50

Всё летает, работает ... но вертолёт по прежнему взрывается с дефолтным партиклом (explosions\expl_mushroom_01).

 

ЧЯДНТ ?

Спасибо.

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

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


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

Проблема такая :

Имеется итем, с анимацией. Спавнится стандартно, через экшен в диалоге, функцией alife():create(.....)

Конфиг такой:

[predmet]:identity_immunities
GroupControlSection = spawn_group
discovery_dependency = 
$spawn  = "arhara_items\predmet"
;$prefetch  = 32
class = II_ATTCH
cform = skeleton
visual = physics\decor_4\predmet.ogf
radius = 1
quest_item = true
can_take = false
description = predmet
skeleton_name = run_idle
physic_type = 0x3
fixed_bones = link
cost = 0

Почему то, если я спавню его через оллспавн, то итем нормально встаёт на место и проигрывает всю анимацию и вообще всё хорошо.

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

Основная кость итема - link

Вопрос : что мне дописать в конфиг, чтобы итем заспавнился в рабочем ( анимационном ) состоянии ?

Спасибо.

 

p.s. в дальнейшем итем никак не используется, а просто служит предметом обстановки.

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

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

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


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

@Charsi, Угу, уже поискал. Спасибо. Может ему какой нибудь файл логики прописать ?

И туда уже включить анимацию каким то образом ?

 

Собственно ставиться задача, сделать спавн предмета по условию. Но в оллспавне невозможно сделать это, потому что секция 

[spawner]
cond = {+ поршень}

для итемов не работает.

Он у меня с НИ спавнится уже на месте, а не должен.  И всё крутится и работает идеально.

Зато скриптом я могу сделать по условию, но не работает анимация.

Как быть ?

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

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


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

Решение проблемы этого поста. Метод придуман lsclon при разработке Терры Инкогнита (подсказал и вспомнил mauvais)

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

1. Извлекаем Бардаком анимку, затем добавляем в СДК к анимации предмета, точно такую же анимацию и переназываем её как - $editor

нарисовал как сумел - 29b679760ae4c7c2fa9e22562ee3e04a5eb4af22

2. Компилим модельку стандартно.

3. 

[predmet]:identity_immunities
GroupControlSection = spawn_group
discovery_dependency = 
$spawn  = "arhara_items\predmet"
;$prefetch  = 32
class = O_PHYS_S
cform = skeleton
visual = physics\decor_4\predmet.ogf
radius = 1
quest_item = true
can_take = false
remove_time = 9998
custom_data = scripts\collide_ignor.ltx
inv_name      = "Предмет"
inv_name_short      = "Предмет"
inv_weight = 100.0
inv_grid_width = 2 ; 
inv_grid_height = 3 ; 
inv_grid_x = 1 ; 
inv_grid_y = 16 ; 
cost      = 15000

 

 

4. В кастом дате collide_ignor.ltx прописываем
[collide]
ignore_static

5. Вызов через экшен в диалоге стандартный.

6. Функция спавна стандартна
function predmet()
alife():create("predmet",vector():set(x,y,z),lv,gv)
end

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

Итем с анимацией спавнится в нормальном состоянии, анимка работает.

 

p.s. скорее всего данный способ работает только с итемом содержащим ОДНУ анимацию.

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

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

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


Ссылка на сообщение
Да мне по сути надо только dog_weak, dog_normal и boar_normal добрыми сделать.

Делаешь новое комьюнити собак, например : goodydog

Прописываешь его в game_relations.ltx, добавляешь в строку

[monster_communities]
communities = ...  goodydog

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

Делаешь новый файл, например goodydog.ltx
Прописываешь стандартно всё как у обычной собаки:
[m_goodydog_e]:monster_base
$spawn            = "monsters\goodydog" 
$npc      = on 
$prefetch  = 16
Scheduled      = on 
Human      = off 
Health = 100 
....
.... 
и далее все параметры и визуалы, коэффициенты и всё что там у собак есть. 
Здесь же прописываешь секции weak, normal, strong.

Если спавнишь через оллспавн, в секцию логики добавь строки:

actor_friendly = true
npc_friendly = true
Ну и всё.
Изменено пользователем BFG
  • Спасибо 1

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

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


Ссылка на сообщение
Поискал строку "@rad_antenna_patrol" во всем моде. Нету. Т.е. секция назначается, а самой логики-то нету.

Всё там есть. Вот оллспавн распакованный из ОП-2 патч 9 фикс 1 - http://rghost.ru/75Rww5MxS

Смотри в файле alife_l10_radar.ltx секцию 

[8850]
section_name = smart_terrain
name = rad_antenna_patrol
[gulag1] 
type = rad_antena
capacity = 11

И ниже, тех кто там сидит всей толпой ( по тэгу - rad_antenna_patrol ).  В файле путей way_l10_radar.ltx найдёшь этот путь, который искал. Да толку то ! Там стандартные точки пути мобов и всё. Куда пошёл, куда посмотрел, где остановился.  Это всё чем могу помочь. Что означает этот мудрёный код, что ты привёл, я не знаю. Не скриптер мну )))

 

Ты случайно не в тупичке на Радаре вышел, где переход на ТД и БТР около вагончика стоит ? Если там, то погляди есть ли там костёр, я не помню. Возможно моб умирает от костра, когда выходит в онлайн.

Изменено пользователем BFG
  • Спасибо 1

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

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


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

1. Можно ли вообще раз и навсегда удалить из оллспавна ВСЕ переходы между локами ?

И сделать их скриптово, согласной ЭТОЙ  статье, на тех же самых местах, с теми же координатами. 

 

2. Не пострадает ли тогда миграция мобов между локами ?

 

Спасибо.

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

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

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


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

@dsh, Были две хороших утилиты : FileMon и RegMon.

Потом они превратились в одну https://technet.microsoft.com/ru-ru/sysinternals/bb896645

Программа - бесплатная.

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

Когда то, с помощью FileMon и фильтров на папку textures, я смотрел сколько раз обращается игра к текстурам и каким текстурам больше\меньше в разные моменты времени. По звукам опять же следил.

Учти, логи там - сумашедшие. Хронометраж обязателен. Работа муторная и нудная.

Для начала пробуй поставить фильтры на всю gamedat`y. Глянь что грузиться, что не грузиться, сколько отжирает памяти. дальше сужай диапазон поисков, фильтруй жёстче, снова смотри.

Наверно только этим способом можно увидеть, что ЖРЁТ память твоего компа. 

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

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

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


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

@CRAZY_STALKER666, Она называется zone_emi

Смотри файл gamedata\config\misc\zone_kampfire.ltx секцию [zone_emi]

Там и партиклы и всё остальное увидишь.

Изменено пользователем BFG
  • Спасибо 1

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

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


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

@Silver Raven, Есть такая утилита - ACDC.

В ней есть что то похожее (может оно ?), вот кусочек из ридми:

 


[Массовая замена вертексов]
При подключении новых локаций без перекомпиляции графа возникает необходимость одновременного
сдвига всех гейм-вертексов спавна новых локаций на какое-то определенное значение.
Это можно сделать в этом режиме.
 
Команда:  universal_acdc -parse <file> -old <old_gvid0> -new <new_gvid0> [-way] [common_options]
 
-parse <file> - имя ltx, в котором находится спавн.
-old <old_gvid0> - старый начальный game_vertex_id локации.
-new <new_gvid0> - новый начальный game_vertex_id локации.
-way - обрабатывает аткже файл way_***.ltx для этой же локации.
 
Пример: universal_acdc -parse alife_l01_escape.ltx -old 0 -new 934

 

 

 

[Обновление вертексов по координатам]
Зачем нужно: при изменении аи-сетки у объектов изменяются game_vertex_id и level_vertex_id.
Это влечет за собой необходимость повторного снятия данных параметров в игре. Данный режим
позволяет автоматически обновить вертексы у всех секций спавна.
 
Команда: universal_acdc -update <spawn_name> [common_options]
 
-update <spawn_name> - all.spawn, для которого надо обновить вертексы.
 
Режим update требует дополнительной настройки. В папке с acdc есть файл fs_vertex.ltx
В этот файл необходимо вписать путь до локаций с ОБНОВЛЕННОЙ аи-сеткой. Обязательно
должны присутствовать файлы level.ai, level.gct для всех локаций из спавна.
ВНИМАНИЕ! Для нормальной отработки режима геймграф должен быть СТАРЫЙ, использовавшийся
до перекомпиляции. После нормальной отработки режима спавн можно распаковывать уже с НОВЫМ
геймграфом.

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

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

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


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

@AndrewMor, Где ты откопал такое "чудо" ?

Вот здесь ( и очень давно ) лежат 2 движка от ОГСЕ и Макрона, с тем, что тебе надо, на 6 патч.

http://www.amk-team.ru/forum/topic/12766-razgovory-o-narodnoj-solianke/?p=813722

 

Upd: По первой ссылке не блуждай, она всё равно приведёт тебя вот сюда - http://www.amk-team.ru/forum/topic/12839-kovyriaem-op-2/?p=870262

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

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

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


Ссылка на сообщение
Но all.spawn говорит, что там вообще ни одного.

Оллспавн говорит что там есть артефакты. Спавн идёт через файл section2.bin, где записаны места спавна артов.  

В каждой секции аномалии в оллспавне есть такой параметр artefact_spawn_count = ...

Там обычно всегда стоит число = 32. Это значит 32 места спавна. 

Для каждой аномалии есть ещё и такой параметр: artefact_position_offset = "...чего то там". Это смещение, по которому вычисляется точное место спавна артефакта. Короче мутно дело.

А вот каким аномалиям разрешено это делать, а каким нет, тут надо скрипты смотреть наверно. Где то эта штука прописана.

Щас придут более умные люди и всё объяснят  :mosking:

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

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

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


Ссылка на сообщение
а как тогда объяснить, что какие-то арты отмечены в all.spawn,

Эти арты не имеют к "артефактовому спавну" никакого отношения. Они просто рАзово заспавнены и всё, как любые другие итемы на локациях. Ну например "Кровь камня" на тепловозе (Кордон).

Или на том же Кордоне - "Медуза" на маленькой заброшенной свалке, неподалёку от бункера Сидора.

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

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

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


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

Хоть Сидорович и не человек, а вроде как полу-монстр, но АИ-сетка у него есть.

e1606672f62fcd2405a0db52229b567f5eb4af23

Изменено пользователем BFG
  • Спасибо 1

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

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


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

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

- имеем например одну Аи-ноду. Координаты её известны. Спавним на неё монстра, например библиотекаря. Моделька Библиотекаря геометрически больше чем размер ноды 70х70 см.

Каким образом и по какому параметру модели, игра понимает что моб находится на Аи-ноде, а не ВНЕ её ?

По какой нибудь главной кости или шейпу, или ещё чему нибудь этакому ? Ведь сама геометрическая проекция тела на ноду явно больше чем сама нода. В случае с крысой например, тут понятно дело что крыса спокойно умещается на ноду. А как быть с большим монстром ?

Спасибо.

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

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

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


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

@Дизель, Уточняю немного свой вопрос.

Вот например кусок террейна и периметр толщиной в 1 Аи-ноду, пусть он будет замкнутым, впрочем не важно, можно и одиночную дорожку проложить.

Вот есть Химера и есть Тушкан.

6d4b74a4cf7725783a009f6e798fbf325eb4af23

Как видно, у Химеры, лапы стоят за пределами Аи-ноды, а Тушкан полностью на сетке.

1. Не будет ли вылет по Химере, что она вылезла за АИ ?

2. Не вылетит ли Химера на скорости при повороте, за АИ-стеку, когда будет гнаться за Тушканом ?

 

Хочу собачьи бега организовать на Арене, а то всё бои....бои. Шутка.  :mosking:

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

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

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


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

@AndrewMor, Уже боюсь что либо отвечать здесь, после темы СДК, опять наверно фигню всякую напишу,  но всё же вот как смотрел (на примере Народной Солянки) :

- берёшь прогу GGRC и декомпилишь свой game.graph

- открываешь файл guids.txt и там видишь предельные значения для gvid

5cd7c9a1ac5863e745d8263cae94f56b5eb4af23

- предельные значения для lvid я смотрел в СДК. Надо просто декомпилить локацию. выбрать АИ-вкладку, выделить все АИ-ноды и посмотреть в нижнем правом углу, сколько их всего. Вот эта цифра и будет предельным значением.

5d49ccfd7d71d200bdec6317d8026ef75eb4af23

Вот на примере Кордона, lvid = 595499

  • Спасибо 1

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

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


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

 

 

Так у тебя в итоге локация-то открылась?
Локация открывается, только что проверял.

2cdeb859f9cd79d6b7d21bbe4707c4ac5eb4af23

Грузится минуты 4-5 где то у меня, при это фраза "Loading Scene Objects" и всё, никаких движений нет (за это время успел прочитать все новые, ночные посты на форуме и объединить пару постов).

 Для ЧАЭС-2 (оригинала ТЧ) lvid = 264577

  • Спасибо 1

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

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


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

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