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

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

  Информация (Показать)

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

  Читать рекомендуется. (Показать)

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий

Zander_driver, теперь немного попонятнее из какой области твой вопрос и куда стоит 'копать'.

 

Несложно найти, что clsid у подобных разрушающихся ящиков и пр. (секция из конфига [physic_destroyable_object]) - P_DSTRBL / clsid.obj_phys_destroyable.

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

 

С "ящиками поменьше" (т.е. железными и иже ...) посложнее тебе будет (clsid.inventory_box), т.к. коллбэк на хит или разрушение для них не обрабатывается.

 

Логика (точнее секция 'drop_box') - подразумевает обработку данного объекта схемой 'xr_box.script' и конечно же подразумевает что-то дропить ...

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

 

И все же стОит помнить, что включение объектов в обработку различными биндераит/схемами - расходование ресурсов. Мелочовкой можно пренебречь, но ... море состоит из капель и не следует об этом забывать и увлекаться ...

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Можно конечно и не увлекаться. Но, если уж основная часть урона, наносимого оружием, высчитывается скриптом а не движком - а у меня именно так - то приходится :)

А то получается, ящик в котором что-то есть, разваливается с 2 пуль ПМ, а ящик в котором ничего нет - не разломать и за 10, При том что внешне они выглядят абсолютно одинаково и игрок может изначально и не знать, в каком из них что-то есть.

Спасибо за ответы :) буду размышлять над разными вариантами.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Svoboда

При прописывании своего НПС в all.spawn'е ты допустил ошибку НЕ указав ничего про 'smart_terrains', а только указал наличие секции.

Дополни пустую секцию до:

 

[smart_terrains]

none = true

 

и тогда твой НПС не будет попадать под гулаги, получая там иную работу, чем ты ему предписываешь.

 

Или же можешь включить 'свое патрулирование' в работы (например ближайшего к точкам) гулага, обусловив 'именно для твоего НПС', и пусть патрулирует, заодно и может чего еще надумаешь в контексте гулага (не все ж ему разгуливать ...).

 

---

Zander_driver

ИМХО, схожесть визуалов далеко не основной критерий одинаковости для разрушения.

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

Для меня, например, более странным будет, если каждый ящик будет разрушаться всегда с одного и того же кол-ва выстрелов (если более 1).

Но это уже лирика пошла ... :-)

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Теперь еще один вопрос, уже не от меня, а.. от нашего квестовика.

  quote (Показать)

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Zander_driver

Задавая вопрос озаботься тем, чтобы предоставить достаточную информацию для ответа.

Упомянутый в логе 'amk.script' явно отличен от оригинального (из чистого АМК) и далее только погадалки предстоят ... В таких случаях стОит предоставлять 'неизвестный' скрипт или хотя бы ссылку на 'где его увидеть можно' (может кто и поможет ...).

 

Лог ошибки говорит, что переменная/аргумент 'respawner' в 1795-ой строке является функцией, а от нее хотят нечто иное. В АМК-моде это должен быть объект (юзердата класса "se_respawn").

Не помню достаточно точно всего амк-алгоритма респавна, могу только предположить, что кто-то накосячил в 'se_respawn.script', в коем и организован амк-контроль за респавном объектов (неписи/монстры) и вызов из 'amk.script' перевода объекта в он(офф)лайн.

Если ваш квестовик оперирует своими неписями/монстрами (не прописанными в конфигах респавна) и они у него ... исчезают - то пусть не методом тыка ковыряет скрипты. Это не конфиги с цифирьками, нахрапом тут не пройдет.

Варианта два: а) отключать мешающий амк'шный контроль или б) корректно прописывать своих неписей/монстров в конфиги респавна (благо примеров предостаточно).

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Zander_driver, возможно стоит посмотреть еще и это: http://www.amk-team.ru/forum/index.php?s=&...st&p=451270

Это правка по аналогичному вылету в Солянке. Может поможет...

Ссылка на комментарий

Artos,

У него - 100% косяк в написании гулага. Если гулаги, прописанные в данном гулажном скрипте (при условии, что это не индивидуальный скрипт) не разбредаются и новый гулаг спавнится без кондишена - 100% ошибка в алл спавне. Если неписи разбредаются - это ошибка прописи в скрипте. При иных вариантах - вылет в винду. Если не прописан смарт - да, непися засосёт в свободный гулаг на любой локе, пусть она буде даже через полЗоны. Но иногда - можно сделать спецом такую ошибочку - и непись как Семецкий будет таскаться по зоне - в любом направлении. Если назначить такому гулаг - он рано или поздно осядет навсегда в последнем смарте.

Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка

Ссылка на комментарий

Я создал нпц а они сидят и не встают.Какую логику им нужно написать чтобы они не садились? :ny_ph34r_1:

Создаю глобальный мод с новыми локациямЭ

Ссылка на комментарий

Создал - это хорошо. А под какой схемой логики они "не встают"? Они walker'ы? Camper'ы? Или сидят вокруг костра? Что прописано у них в путях в all.spawn (анимации)?

Ссылка на комментарий

Приветствую всех, возник вопрос: может ли быть такая функция и как она будет выглядеть?

Проверка-обьект ли пси пес

Если да то есть у него в радиусе собаки

Если есть + им к урону и скорости?

Не соответствует. N6260

Ссылка на комментарий

Я прописал им простую логику:

[logic]

active = remark1

danger = danger_ignore

 

[danger_ignore]

ignore_distance = 5

 

[remark1]

no_move = true

Но когда они встречают врагов они приседают и начинают стрелять а потом не встают

Создаю глобальный мод с новыми локациямЭ

Ссылка на комментарий

strelok200

 

[logic]

active = walker

 

[walker]

path_walk = ....._...... (полное наименование точки пути wAy в ал спавне)

 

это самое простое остальные параметры будут использованны по умолчанию.

 

 

 

Ссылка на комментарий

ZeeK

Функция такая может быть, но выглядеть будет сложно.

1. Проверка-обьект ли пси пес - я так понял, имеется в виду является ли объект определенной разновидностью моба.

Если у него нет разных профилей, то просто по его секции можно опознать. Если профили разные, то наподобие этого:

  if string.find(self.object:section(),"chimera") then

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

local chimera_dist = nte:position():distance_to(self.object:bone_position("bip01_spine"))

тут вместо nte надо будет подставлять объект пси пса.

Дальше начинается более муторная часть... вышеуказанными способами получится отобрать набор объектов, являющихся собаками и расположенных на нужной дистанции от пси-собаки. запихиваем их в список (лучше записывать их id).

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

3. Если есть + им к урону и скорости? насчет скорости не могу ничего придумать, а насчет урона можно.

В хит-коллбэк всех объектов, которых могут кусать собаки (актор, нпс, мобы) - вводим проверку, кто нанес хит - не обнаружится ли его ид в списке "усиленных собак". Если да, то наносим пострадавшему от собаки дополнительный хит скриптом.

                     local ch_h = hit() 
                        ch_h.impulse = 50 
                        ch_h.draftsman = self.object
                        ch_h.direction = vector():set(1,0,0) 
                        --ch_h:bone("bip01_spine") -- хитовать будет и без указания костей
                        ch_h.power = 0.85
                        ch_h.type = hit.wound
                        nte:hit(ch_h)

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

Вот как то таким образом.

 

Вопросик у меня созрел. пустяковый, но терзающий.

методом alife():create("все что полагается") можно ли спавнить объекты за пределами онлайн-радиуса?

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Zander_driver, ну фантом ли объект определяется гораздо проще:

local obj_clsid == self.object:clsid()
if obj_clsid == clsid.psy_dog_phantom_s then

 

Являются ли окружающие неписи собаками также очень просто проверяются по clsid.

С помощью alife():create() можно спавнить вне онлайн-радиуса, да.

Изменено пользователем KD87
Ссылка на комментарий
  strelok200 писал(а):
Я прописал им простую логику:

[logic]

active = remark1

danger = danger_ignore

 

[danger_ignore]

ignore_distance = 5

 

[remark1]

no_move = true

Но когда они встречают врагов они приседают и начинают стрелять а потом не встают

Это "не логика", такую я обычно использую только для тестов (так как при малейшей опасности НПС теряют управление прописанное в remark1 и переходят на пародию "универсального комбата").

Поэтому, ты определись чего от них хочешь (патруль - walker или снайпер - camper) и можешь им прописать в кастомдате эти "универсальные для всех локаций" (только снайпер там одноразовый - из расчёта, что ты всё же дашь ему бой при первой встрече иначе вставляй ему свои пути path_walk = ... path_look = ... )

  логика - 2 варианта (Показать)
Изменено пользователем SEA_CAT
Ссылка на комментарий

strelok200, в секции [logic] указывают обычно:

inv_max_weight = 10000

trade = <путь к конфигурационному ltx-файлу настроек торговли NPC>

И укажи в профиле непися минимальное и максимальное кол-во денег у торговца. И чтобы у NPC деньги не заканчивались, укажи там же infinitive = "1".

Ссылка на комментарий

Как можно скриптом "вскрыть" ltx файл? Я смотрел примеры но чтото так и не понял. Мне надо чтото вроде "предмет" = "x", "y", "z", "lv", "gv" = "вероятнось". Такое можно устроить вообще? Если да то как?

Ссылка на комментарий

Пример скрипта, который парсит ltx файл и выбирает случайные строчки:

--//-- парсим файл со списком хабара
function parse_list()
local ini = ini_file("misc\\items_link.ltx")
    if not ini then ini=system_ini() end
    if ini:section_exist("generic_list") then
         local n = ini:line_count("generic_list")
                local key = math.random(0,n-1)
                    local result, item, num = ini:r_line("generic_list",key,"","")
        return item, num
    end
end

пример файла, из которого читаются данные

  ltx (Показать)
Ссылка на комментарий

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

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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