Перейти к содержанию

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

 
 

Boomer рекомендую покопаться в true stalker(где то есть способ распаковки), там такое несколько раз происходит.


а чо писать

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


Ссылка на сообщение
Поделиться на другие сайты
 

Boomer Просто так в ваниле нельзя, но знаю 2 способа такое реализовать:

  1. Использовать правленный движок или самому реализовать такое в движке. Я не знаю полный список движков с такой фичёй, но вроде бы в AXR видел, что такое есть, да и в том-же True Stalker.
  2. Этим способом я не пользовался, но мне как-то подсказали, что можно через нет-пакеты и без правок движка такое сделать.
    Спойлер

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

    Изменить пакет можно, как напрямую через скрипт, так и через спейс рестриктор, как это любят делать модмейкеры на ЗП.

    В модули всё автоматизированно, поэтому итоговый скрипт должен выглядеть как-то так:

    function change_actor_name()
      local sobj = alife():actor() -- клиент актёра
      local tbl = stpk_utils.get_object_data(sobj) -- получаем пакет
      tbl.character_name = "Вова вист" -- Новое имя (локализация вроде, как не требуется)
      tbl.specific_character = "bar_dolg_leader" (иконка для нашего героя)
      stpk_utils.set_object_data(tbl, sobj) -- сохраняем пакет
    end

     Если через спейс рестриктор то примерно аналогично передаём данные

    xr_effects:

    function change_actor_name(actor, npc, p)
    local sobj = alife():actor()
    local tbl = stpk_utils.get_object_data(sobj)
    tbl.character_name = p[1]
    stpk_utils.set_object_data(tbl, sobj)
    end

    Логика спейса:

    [logic]
    active = sr_idle
    [sr_idle]
    on_actor_inside = %=change_actor_name(Вова Вист)% sr_idle@stop

    [sr_idle@stop]

    Ну тут уже дело вкуса вообщем-то.

    В ЗП на сколько я помню этого достаточно, таким же способом мы можем менять пакетные данные НПС, только нужно соответсвенно указывать его стори ид, однако для того чтобы его пакет изменился, нужно после переписи пакета перевести его в оффлайн, а после в онлайн, иначи данные применятся только после сейв\лоада, в ЗП я не знаю проще с этим дела или нет, также через нетпаки для НПС можно сменить визуал, голос, возможно кол-во денег (как и актёру, не помню). Вроде всё описал...

    stpk_utils.script

     

Изменено пользователем Prostomod
  • Лайк 1
  • Спасибо 1

Мод в разработке - X-7: Эпицентр

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


Ссылка на сообщение
Поделиться на другие сайты
 

Как реализовать 3Д ПДА? Платформа - OGSR (кажется уже пора сделать новую опросницу)

В конфиге items.ltx в секции device_pda прописал нужную секцию худа, в худовой секции все нужное есть(брал из ганслингера).

При включении в консоли g_3dpda ГГ просто его не достает. При отключении понятное дело появляется обычный КПК.

Чего мне не достает? Весь гитхаб облазил - ничего путного найти не могу.

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


Ссылка на сообщение
Поделиться на другие сайты
 
9 часов назад, Boomer сказал:

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

В ориге нет, так как даже если изменить имя в файле character_desc_general.xml, то правка применится только с новой игрой.


Адаптации ганслингера на моды зов припяти
Всегда на связи в телеге @Mervin62
 

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


Ссылка на сообщение
Поделиться на другие сайты
 
15 часов назад, Prostomod сказал:

Этим способом я не пользовался, но мне как-то подсказали, что можно через нет-пакеты и без правок движка такое сделать.

Cпасибо большое тебе за ответ и Парацетамолу за гайд. Второй способ работает на ура.

  • Лайк 1

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


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, Boomer сказал:

Cпасибо большое тебе за ответ и Парацетамолу за гайд. Второй способ работает на ура.

Научиииииииииии!!!!!!

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


Ссылка на сообщение
Поделиться на другие сайты
 

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

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


Ссылка на сообщение
Поделиться на другие сайты
 

Marquis Заменить сквады с плотями (имя мобов начинается на flesh_***) на другие. Используйте поиск по содержимому файлов.

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

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 

Приветствую! Возможно ли через через логику(confgis\scripts) или скриптово влиять на time_factor?

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

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


Ссылка на сообщение
Поделиться на другие сайты
 

Domovoi В оригинальном ЗП команда time_factor в принципе отсутствует. Если она есть (модифицированный движок или сами вернули) то через скрипт можно вписать любую команду в консоль. Например:
function on_tutor_gameover_quickload()
    local c = get_console()
    c:execute("load_last_save")
end
(взято из xr_effects)

  • Лайк 1

Просто создаю свой мод...

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


Ссылка на сообщение
Поделиться на другие сайты
 

denis2000 а как же их назначение в скриптах? Ничего не будет если я заменю все файлы допустим на Кабанов?

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


Ссылка на сообщение
Поделиться на другие сайты
 

Domovoi level.set_time_factor(10)


Marquis Я, что то не помню заскриптованных сквадов плотей в оригинале. В любом случае - это вполне поправимо если менять имена найденных сквадов и в логике. Или просто замените наполнение найденных сквадов с плотей на кабанов.

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

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 

[error]Expression    : assertion failed
[error]Function      : CUIAchievements::Update
[error]File          : D:\prog_repository\sources\trunk\xrGame\ui\UIAchievements.cpp
[error]Line          : 44
[error]Description   : ai().script_engine().functor(m_functor_str, f)
 

stack trace:
Помогите решить проблему 

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


Ссылка на сообщение
Поделиться на другие сайты
 

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

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


Ссылка на сообщение
Поделиться на другие сайты
 

Pavel2000 Два варианта (возможно их и больше):
1. Сделать две группировки зомбированных враждебных друг-другу, а по инфо разрешить воевать (через combat_ignore).
2. Сделать два сквада и по инфо сделать их врагами между собой (готовой функции насколько я помню нет).

Изменено пользователем denis2000
  • Жму руку 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, Morokei сказал:

[error]Expression    : assertion failed
[error]Function      : CUIAchievements::Update
[error]File          : D:\prog_repository\sources\trunk\xrGame\ui\UIAchievements.cpp
[error]Line          : 44
[error]Description   : ai().script_engine().functor(m_functor_str, f)
 

stack trace:
Помогите решить проблему 

Я бы так не баловался с тем, чтобы спавнобьекты размещать вне аисетки

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


Ссылка на сообщение
Поделиться на другие сайты
 
6 минут назад, Pepel сказал:

Я бы так не баловался с тем, чтобы спавнобьекты размещать вне аисетки

И правильно делаете, но вылет о другом - об ачивках... Их меняли, редактировали?

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

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 
22 минуты назад, denis2000 сказал:

И правильно делаете, но вылет о другом - об ачивках... Их меняли, редактировали?

Решил проблему, не в ачивке была, в скрипте слово пропустил ))) но все равно спасибо 

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

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


Ссылка на сообщение
Поделиться на другие сайты
 
7 минут назад, Morokei сказал:

в скрипте слово пропустил

А подробностей не будет?


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 

Добрый вечер, можно ли по скрипту изменять локацию? Я хочу чтобы после обратного перехода на локацию изменились некоторые объекты, допустим стоял целый домик, а после перезахода он оказался сломаным (просто заменить модель) или новые статичные объекты добавлять. А также можно это сделать без перезахода? Мне хотябы один способ.

 

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


Ссылка на сообщение
Поделиться на другие сайты
 
4 часа назад, denis2000 сказал:

возможно их и больше

Я вот думал про изменение отношения у группировок(у них же там есть в таблице отношения между друг другом) только я незнаю работает это или нет и какой скрипт(функция) за это отвечает


Дополнено 0 минут спустя

И можно ли это прописать в логике непися

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


Ссылка на сообщение
Поделиться на другие сайты
 

The_Python Если хотите менять статический объект на локации, то без перезагрузки локации - никак (я по крайней мере не слышал о кастомном движке с динамической загрузкой объектов локации), более того это будут две разные локации! Если хотите менять спавн-объект (динамический), то это возможно, но накладывает типичные проблемы таких объектов, например, как ограничение геометрических размеров, проблемы с физическим взаимодействием и т.д. Пример такого объекта - мост в рыжем лесу ЧН, более того он с анимацией.


14 часов назад, Pavel2000 сказал:

у них же там есть в таблице отношения между друг другом

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

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

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 

Доброго дня. Хочу добавить новое оружие в игру и сделать так, чтобы его можно было заказать у Шустрого. В каком файле нужно добавить новый заказ Шустрому? Заранее спасибо

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


Ссылка на сообщение
Поделиться на другие сайты
 

Всем привет, у меня опять проблемы, вот только сейчас не обычные. Я делаю симуляцию на локации, поставил граф поинты, смарт террейны, всё настроил. создал нужные файлы в gamedata\configs\scripts\escape\smart вообщем делал всё по урокам Sheva Stalker. Но при загрузки локации происходит вылет:

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ...àíñòâî è Âðåìÿ\gamedata\scripts\smart_terrain.script:1257: attempt to compare nil with number

Вот только для меня странно то, что тут указано: "attempt to compare nil with number", т.е попытаться сравнить ноль с числом, но этоже функция из оригинального файла smart_terrain.script из UEgamedata, я там прописал только свою локацию где надо. Вот сама функция:

if squad_count ~= nil and (self.max_population <= squad_count) then
        --printf("smart terrain [%s] precondition returns false for squad [%s]", self:name(), squad:name())
--        if tonumber(self.props["surge"]) > 0 and xr_conditions.surge_started() then
--            printf("SURGE_SMART_STATS : smart [%s]\n max_population = %d \ squad_count = %d", self:name(), self.max_population, squad_count)
--        end
        return false
    end

Если я её удаляю из файла, то игра не вылетает и даже происходит спавн мутантов, только работает это как-то криво, например не работает параметр: respawn_only_smart = true чтобы мутанты не убегали за территорию своего смарта.

Что это за функция и зачем она нужна? и есть ли решение проблемы, может кто сталкивался?

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

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


Ссылка на сообщение
Поделиться на другие сайты
 

The_Python Косяк с параметром max_population на одном из смартов или смарт описан не корректно.

  • Жму руку 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу