Jump to content
Sign in to follow this  
banderos

Banderos_add_for_AMK_MOD

Recommended Posts

IG-2007    0

banderos

Отпишусь тут.

 

Я сделал вот так:

...

(37.97,11.18,-99.77), 221455, 820

Вроде всё как надо.

 

Вот только аналогичный снайпер в all.spawn имеет такие параметры:

name = val_watchtower1_bandit_sniper

position = -49.6784553527832,11.208517074585,8.38117504119873

game_vertex_id = 819

level_vertex_id = 116044

хотя, это не очень важно, если позиция не та, то дойдёт ножками до нужной.

 

Там ещё есть такая строка: predicate = wt_predicate_s, её тоже надо убирать

Можно не убирать. Работа для снайперов не назначится как с этой строкой, так и без неё. При добавлении этой работы, проверяется наличие путей для снайперов в all.spawn, а путей этих там нет. Пути прописаны только для первой работы - для часовых.

 

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

Точно не знаю, но думаю, что начинать новую игру не надо.

 

Если я правильно понял, Вы такой пример уже приводили...

Да, правда тут возможна некоторая путаница, т.к. я не доконца понимаю весь этот механизм:

у npc два поля для рестриктов base_out_restrictors и base_in_restrictors (?рестрикты, внитри/снаружи которых можно ходить?), может нужно было прописать название рестрикта в другое поле?

 

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

[2303]
; cse_abstract properties
section_name = space_restrictor
name = val_watchtower1_restr
position = -49.0167427062988,7.3995189666748,8.30681037902832
direction = 0,0,0

; cse_alife_object properties
game_vertex_id = 811
distance = 0
level_vertex_id = 316473
object_flags = 0xffffff3e

; cse_shape properties
shapes = shape0
shape0:type = box
shape0:axis_x = 5.8149995803833,0,0
shape0:axis_y = 0,16.1853523254395,0
shape0:axis_z = 0,0,5.8149995803833
shape0:offset = 0,0,0

; cse_alife_space_restrictor properties
restrictor_type = 2

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

 

 

Прописать рестрикт npc можно:

1) в all.spawn. Помоему, так делается для тех неписей, у которых нет терейна. Например, военные часовые на вышках Агропрома.

[1455]
...
name = agr_tower3_soldier
...
custom_data = <<END
...
[smart_terrains]
none=true
END
...
[b]base_out_restrictors = agr_space_restrictor_tower3[/b]

 

2) можно попробывать сделать через net_packet, если нет клиентского объекта (то что я предлагал)

 

3) в работах гулага. Так делается много где, например, для ваших снайперов:

-- добавляем должность
t = { section = "logic@" .. idstr,
    idle = 0,
    prior = 1, state = {0}, squad = squad, group = groups[1],
    position_threshold = 10,
    in_rest = "", [b]out_rest = gname .. "_restr"[/b]
}
table.insert(sj, t)

 

4) если есть клиентский объект, то можно вызвать функцию npc:add_restrictions(in_restr, out_restr). Таким способом kstn в ArenaExtensionMod привязывал неписей и монстров к арене. Только вот отловить момент появления нужного клиентского объекта бывает проблематично. Либо нужно переписывать функцию net_spawn для нужного binder-а, либо делать свой binder.

 

Есть ещё такая особенность, глобальные схемы поведение, вроде реакции на выброс, первым делом отключают неписям все идиотские ограничения (комментарий Red75), т.е. прописанные для них рестрикты. Восстанавливаются ли эти рестрикты потом - не знаю, но раз вы говорите, что снайперы на Агропроме возвращаются на вышки, то наверное восстанавливаются.

Share this post


Link to post
Share on other sites
 xStream    83

восстанавливаются....

вот сижу и не понимаю, что за предикаты...

объяснили б, что-ли :)

вобще интересно, кто может по гулагам инфу предоставть?


Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Share this post


Link to post
Share on other sites
IG-2007    0
вот сижу и не понимаю, что за предикаты...

объяснили б, что-ли :)

predicate - это просто функция, которая участвует в проверке и распределении работ гулага для приходящих в него неписей. Назначение вроде можно примерно понять по вызовам функций и комментариям разработчиков (xr_gulag.script + smart_terrain.script). Основная задача отправлять конкретных неписей на конкретные работы.

 

Кстати, мысля появилась пока писАл ответ. Не перепутают ли снайперы, если совсем убрать predicate, свои вышки? Возможно этот predicate придётся оставить, но немного переделать...

Share this post


Link to post
Share on other sites
 xStream    83

не, что такое предикат, я в принципе понял

я про wt_predicate_s

это типа некие предопределенные предикаты, которые потом можно юзать?

 

PS тут подумал, что вот этот документик многим пригодиться может - "настройка логики"


Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Share this post


Link to post
Share on other sites
 banderos    15
banderos

Отпишусь тут.

...

Сам хотел предложить :) .

 

Спасибо за мысли и инфу IG-2007! ...Перевариваю :) .

 

PS тут подумал, что вот этот документик многим пригодиться может - "настройка логики"

 

Благодарю, xStream! Очень полезный матерьяльчик. Я его читал как-то на Inside Wiki, но Ваш вариант более удобный в пользовании :) .

Буду грызть, по мере способностей...

Share this post


Link to post
Share on other sites
 xStream    83

на вики он не весь :)

потому и выложил


Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Share this post


Link to post
Share on other sites
Guest Nekt   
Guest Nekt

Предикты, содержат ссылки на профили.. Ну, по id расчёта не знаю, но чисто названием мона засунуть. ))

Возможно я не прав, но доказывающий это информации я не нашёл, так-же как и обратно доказывающий что я прав. Хотя практика все расставит на свои места.

Вообще и Иг-2007 я не согласен.. Эмм.. там не все так как он описал. Но рестрикторами он все точно сказал. Скорее всего в этом случае они играют роль что-бы снайперы не ходили по воздуху..

В гулаге с названием снайперов есть два разных гулагов.. Что странно, одни в алайфе есть а других нету, такая-же ситуация с путями..

Share this post


Link to post
Share on other sites
 xStream    83

про рестрикторы и я писал

in-рестрикторы - в которые запрещено входить

out-рестрикторы - из которых выходить нельзя

 

ты не прав, а IG-2007 прав :)

по воздуху они ходят в случае сбоев, так как ходят они по АИ сетке, а ее нет в воздухе


Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Share this post


Link to post
Share on other sites
Guest Nekt   
Guest Nekt

А тогда зафиг рестрикторы? чтоб было?

Я чуть позже объясню почему он не прав.. Если конечно будет время.

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

Share this post


Link to post
Share on other sites
 xStream    83

я написал зачем рестрикторы нужны, или ты не читаешь? ;)


Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Share this post


Link to post
Share on other sites
IG-2007    0

Предикты - это имена функций, сами функции определены парой строчек выше в том же файле скрипта gulag_dark_valley.

-- Predicates ------------------------------------------------------------
function wt_predicate_g(npc_info, gulag) -- guard
    return string.find(npc_info.name, gulag.name) ~= nil
end

function wt_predicate_s(npc_info, gulag) -- sniper
    return string.find(npc_info.name, gulag.name) ~= nil and npc_info.is_sniper == true
end

npc_info - это структура, заполняется в файле "se_smart_terrain.script" в функции se_smart_terrain:fill_npc_info

 

Вот, набросал то, что знаю про гулаги. Всё ИМХО, 100% правильность не гарантирую.

 

Гулаги - это только часть несколько большей темы. Желательно, для начала, взглянуть на всё это в общих чартах.

 

Распределение живности по Зоне.

Первое, что делается, выбирается место, где должна обитать живность. В этом месте создаётся smart_terrein - это специальный объект игры.

Потом создаётся гулаг (это уже не объект, а скрипты и ltx), в котором для каждой живой души прописывается, что она должна делать в разных ситуациях: сидеть у костра, стоять в дозоре, прятаться под кустом, штурмовать базу и т.д.

Затем создаётся сама живность. Тут возможны варианты: либо разовый спавн через all.spawn, либо респавнер, либо и то и другое.

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

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

 

Теперь о гулагах.

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

Когда существо зачисляется в гулаг, ему назначается некая работа. Работа - это текстовая последовательность секций, каждая секция служит для задания схемы поверения. Принцип такой же, как и при прописывании последовательности напрямую в кастом дату существа. Отличие, помоему, лишь в задание путей. Если в прямой записи название пути читается схемами как есть, то в случае гулага к названию пути прибавляется название гулага. Более конкретную информацию по различным схемам и их настройкам можно посмотреть в оффициальном документе: Настройка логики (часть 1) Там же есть немного и о гулагах.

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

Есть в гулагах возможность синхронного перевода работников с одной работы на другую. Для этого используется статус гулага и в параметрах работ указывается для каких статусов она подходит. Используя такой механизм, можно сделать смену активности в зависимости от времени суток (день/ночь), можно сделать зависимость от численности (рейды, как только все участники прибывают в гулаг) и т.д.

Гулаги бывают двух видов: обычные (general) и... не обычные.

Обычные гулаги сделать проще, т.к. создание списка работ происходит автоматически по заданному в "gulag_general.script" шаблону. Чтобы такой гулаг заработал достаточно сделать терейн, указать для него тип general_lager (для людей) или general_lair (для мутантов). После этого нужно в all.spawn прописать несколько путей с предопределёнными именами:

gname.."_kamp_"..1, gname.."_kamp_"..2, ... - если нужно, что бы были посиделки,

gname.."_sleep_"..1, gname.."_sleep_"..2, ... - если нужно, что бы были спящие,

и т.д. (полный список можно составить анализируя "gulag_general.script")

gname - это название гулага (или терейна)

Нужно ещё прописать предусловия для приёма в такой гулаг, это делается в файле misc\general_lager.ltx или misc\general_lair.ltx. В качестве предусловий выступает ранг персонажей. Группировка тоже является предусловием, но задаётся она в настройках терейна, там же задаётся и максимальная вместимость.

Необычные гулаги используются везде, где шаблонных возможностей недостаточно. Например, требуются более сложные работы, проигрывание анимаций, дополнительные условия для приёма и т.д. Для таких гулагов создаётся терейн с типом, отличным от обычного. После этого нужно внести необходимые изменения в скрипт гулагов для нужного уровня или можно добавить свой. Например, для Темной Долины изменения нужно делать в скрипте gulag_dark_valley.script. Все работы прописываются вручную, есть возможность прописать работы непосредственно в скрипте или прописать в ltx и подгрузить из него.

 

PS: banderos, извиняюсь что так много и не совсем в тему.

Share this post


Link to post
Share on other sites
Guest Nekt   
Guest Nekt

function wt_predicate_g(npc_info)  -- guard
    return npc_info.profile_name == "val_watchtower_bandit_guard"
end

function wt_predicate_g(npc_info)  -- sniper
    return npc_info.profile_name == "val_watchtower_bandit_sniper"
end

Помой-му правильнее.. Если уж говорить об этом.

Или Стрим ты снова будешь говорить, что это все не правильно ?

Share this post


Link to post
Share on other sites
 xStream    83

неуниверсальный вариант - отталкиваться от профиля

совершенно неподходящий, ибо любой непись с таким предикатом попасть может, даже если относится к другому гулагу (для тех случаев, когда непись может находиться под несколькими гулагами)

у него же проверка на валидность информации и принадлежности к гулагу, хотя тоже не самый лучший вариант :)

как раз над проблемой переделки системы гулагов и работаю


Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Share this post


Link to post
Share on other sites
Guest Nekt   
Guest Nekt

Интересно как можно работать над тем, чего совершенно не знаешь.. Кстати по твоим словам.

Отталкиваться от профиля это как? просто профиль вноситься, профиль оригинальный специально для них делался. Согласен могут быть проблемы если такой профиль засунуть в долг или в свободу. Но зачем их туда сувать? для их персонажей есть своё. Кстати что я писал выше, не совсем идентично оригиналу сталка. Там профиль чуть по другому называется.

Share this post


Link to post
Share on other sites
 xStream    83

я быстро учусь :) или ты сомневаешься? ;)

а профиль - ГЛУПО, ОЧЕНЬ делать спец профиль для гулага. нравится - делай, но другим не навязывай :) я же не навязываю, я просто люблю универсализм.


Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Share this post


Link to post
Share on other sites
Guest Nekt   
Guest Nekt

Я не учитель, но не верю совсем другую вещь..

А, как ты предлагаешь универсальность?

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

Share this post


Link to post
Share on other sites
Pxan    14

Задам типичный вопрос " будет ли адаптация под NLC 4.0" ?Мод очень интересный. Особенно настоящие снайперы на вышках.Так держать!!! :lol:


Я шепнул себе только "Ура"

Я промолвил всего лишь "Вперед"

И когда наступила пора

Я сказал "До свиданья народ"

Share this post


Link to post
Share on other sites
 xStream    83

и ответ скорее всего обычный - будет., если сам скрестишь ИЛИ найдешь кого-то, кому оно тоже надо и кто может скрестить ИЛИ автор скрестит, но я не уверен в этом, совсем не уверен


Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Share this post


Link to post
Share on other sites
 TIREX    3
и ответ скорее всего обычный - будет., если сам скрестишь ИЛИ найдешь кого-то, кому оно тоже надо и кто может скрестить ИЛИ автор скрестит, но я не уверен в этом, совсем не уверен

 

Да вот у меня такая мысль появилась.... но только вот хочется еще все исправления ошибок от Bardakа вставить...

Я когда-то stk10003_bug_fix к Нейтрино прикручивал.. Разнообразило игру. Много заданий восстановилось.

а то вот, к примеру, играет новичок и не понятно ему - от кого сталкеров на складах защищать... :rolleyes:

а есть от кого....

самое главное - чтобы время было для этого.

Share this post


Link to post
Share on other sites
Guest Nekt   
Guest Nekt
http://slil.ru/25702512 файл где написаны изменения на мой взгляд патча под сталкер от бардака.. Файлы diff ) открыть мона блокнотом, под патч 1.0004

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

AMK-Team.ru

×
×
  • Create New...