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

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


Halford

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

tyrkmen, с уверенностью тебе говорю, что NPC на аномалии в ЗП не реагируют, с минами ситуация аналогична.

Смерть от Выброса - surgue_manager.script там есть условие, мол, всех, кто вне укрытий - убить, а далее - ищи то, что тебе нужно.

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

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

stalkerok007, если ты своему мутанту прописал класс Бюрера\Контролёра\Полтергейста, то естественно двигатель будет просить "родные" параметры этого класса, допустим, для Бюрера - телекинез, сканирование месности и грави-щит... А ещё соответствующие анимации для этих способностей. Я знаю только одну способность, которую, вроде бы, можно прикрутить ко всем: сбивание прицела (и то это только говор, я лишь на псевдопсе пробовал). Ну, а если ты и класс не менял, то я тебе не советчик...

Изменено пользователем Сталкер Лом

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

Artworth, Что-то статьи не нашёл, привожу часть из моего конфига псевдособаки:

 

 

;-----------------------Сбивание прицела--------------------------
max_anti_aim = 10
anti_aim_timeout = 2 ; сек, ожидание после которого можно снова применить абилку
anti_aim_effectors = effector_monster_hit_1, effector_monster_hit_2, effector_monster_hit_3, effector_monster_hit_4 ; камера-эффекторы, один из которых будет выбран и применен
anti_aim_animation = stand_howling_ ;stand_attack_ ; анимация, которая отыгрывается у монстра
anti_aim_max_angle = 0.5 ; угол в котором полностью не детектится прицеливание)
anti_aim_detection_gain_speed = 0.6 ; скорость детекта прицеливания
anti_aim_detection_loose_speed = 0.05 ; скорость постоянного спадания детекта прицеливания

 

"Вот, собственно, и всё" (с)

 

stalkerok007, мы, наверное, говорим о разных классах. Я говорю о движковых классах например, для Плоти существовали такие: SM_FLESH (такой используется в релизной версии), AI_FLE_G (Для группы), AI_FLESH. То есть, если ты берёшь конфиг от Плоти, то и движковый класс должен быть от Плоти.


 

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

Artworth, да, нет. Вставляй в конфигурационный файл эту "врезку" и страдай на здоровье :) . Псевдособака время от времени будет "рыкать" на тебя и у тебя из за этого ствол будет дёргаться. Особо пакостливо выходит, когда одна тебе прицел сбивает, а другая на тебя прыгает...

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

azrael1325, да не "скорее всего", а так и есть. Мы (Мододелы) используем классы, которые до нас сделали GSC, это наш удел. Пока. Хотя в двигателе уже кое-что меняли (Я говорю о X-ray Extentions и Cut X-Ray Mod), но делается это всё трудно и по аналогии с чем-то, а не с нуля, так что, "пользуйтесь тем, шо есть" (с).

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

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

Buck81, он? Если да, то не отвечай: не флуди  ;) .

 



-----------------------------------------------------------------------------------
-- Sidor etc binding
-----------------------------------------------------------------------------------

function bind(obj)
    local new_binder = trader_object_binder(obj)
    obj:bind_object(new_binder)
end

------------------------------------------------------------------------------------
class "trader_object_binder" (object_binder)

function trader_object_binder:__init(obj) super(obj)
    self.loaded = false
end


function trader_object_binder:reload(section)
    object_binder.reload(self, section)
end

function trader_object_binder:reinit()
    object_binder.reinit(self)

    db.storage[self.object:id()] = { }

    self.st = db.storage[self.object:id()]
end

function trader_object_binder:update(delta)
    object_binder.update(self, delta)

    -- Апдейт торговли
    if self.object:clsid() == clsid.script_trader then
        trade_manager.update(self.object)
    end

    local st = db.storage[self.object:id()]
    if st ~= nil and st.active_scheme ~= nil then
        xr_logic.try_switch_to_another_section(self.object, st[st.active_scheme], db.actor)
    end
    
    if self.st.active_section ~= nil then
        xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "update", delta)
    end
end

function trader_object_binder:net_spawn(sobject)
    if not object_binder.net_spawn(self, sobject) then
        return false
    end

    local on_offline_condlist = db.storage[self.object:id()] and db.storage[self.object:id()].overrides and db.storage[self.object:id()].overrides.on_offline_condlist
    if on_offline_condlist ~= nil then
        xr_logic.pick_section_from_condlist(db.actor, self.object, on_offline_condlist)
    end

    if not self.object:alive() then
        return true
    end
    
    if alife():object(self.object:id()) == nil then
        return false
    end

    db.add_obj(self.object)
    if self.object:clsid() == clsid.script_trader then
        self.object:set_trader_global_anim("idle_spinka")
        smart_terrain.setup_gulag_and_logic_on_spawn( self.object, self.st, sobject, modules.stype_trader, self.loaded)
    end
    
    return true
end

function trader_object_binder:net_destroy()
    xr_sound.stop_sounds_by_id(self.object:id())

    local st = db.storage[self.object:id()]
    if st and st.active_scheme then
        xr_logic.issue_event(self.object, st[st.active_scheme], "net_destroy")
    end

    if db.offline_objects[self.object:id()] then
        db.offline_objects[self.object:id()].level_vertex_id = self.object:level_vertex_id()
        db.offline_objects[self.object:id()].active_section = db.storage[self.object:id()].active_section
    end

    db.del_obj(self.object)
    db.storage[self.object:id()] = nil
    object_binder.net_destroy(self)
end

function trader_object_binder:net_save_relevant()
    return true
end

function trader_object_binder:save(packet)
    set_save_marker(packet, "save", false, "trader_object_binder")
    object_binder.save(self, packet)
    xr_logic.save_obj(self.object, packet)
    if self.object:clsid() == clsid.script_trader then
        trade_manager.save(self.object, packet)
    end
    set_save_marker(packet, "save", true, "trader_object_binder")
end

function trader_object_binder:load(reader)
    self.loaded = true
    set_save_marker(reader, "load", false, "trader_object_binder")
    object_binder.load(self, reader)
    xr_logic.load_obj(self.object, reader)
    if self.object:clsid() == clsid.script_trader then
        trade_manager.load(self.object, reader)
    end
    set_save_marker(reader, "load", true, "trader_object_binder")
end

 

 

Изменено пользователем Сталкер Лом

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

Здравствуйте, товарищи.

Я тут в ПДА задумал кнопочки прикрутить, которые будут функционировать в режиме просмотра карты: сделал ГУИ, который запускается вместе с открытием вкладки "карта", но из за него весь ПДА "отключался" - он переставал функционировать, хотя кнопки при наведении ни них курсором реагируют. Сначала решил, что это из за того, что у меня "статик-элемент" от ГУИ растянут на весь экран - уменьшил его, но всё осталось так же...

Это значит, что ГУИ перекрывает все позади него стоящие элементы? Так?

 

FEET, если  анимпоинт "последний" по номеру, то с него и будет уходить NPC, потому как, при доступности новой работы, перерасчёт работ для NPC из смарта не происходит - уходит на "новую" работу только NPC с самой последней, по счёту, работы.

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

Transcend, после начала игры, симуляция начинается ровно через час. В simulation_object_props.ltx настрой свои смарты по аналогии с уже имеющимися, в конфигах смартов укажи максимальное значение "вместимости" и всё, коли в скриптах Болота зарегистрированы.

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

slayer_kch, Перейди на статическое освещение и поставь погоду Map - должно помочь.

ммихаилл, ты будь повежливее с людьми, тебе сказали ровно столько же, сколько и всем давалось сначала: образец, статью и устное предписание. Все так начинали (кроме тех, кто был первым - у тех вообще ничего не было), если тебе нужно, то тебе этого должно быть достаточно. Пробуй. Спавнить с начала Новой Игры нужно, в ЗП, так: в simulation.ltx ищи секцию [start_position_<тех. название твоей локации>] и ниже вписывай <Твой сквад> = <имя смарта, на котором нужно спавнить>. Это, как уже сказали выше, и для NPC, и для мутантов.

Изменено пользователем Сталкер Лом

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

Здравствуйте. Не подскажете проверку на то, что оружие выстрелило? По-моему, где-то это в состоянии оружия проверяли, да позабыл...

Заранее спасибо.

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

Скриптовая проверка, после которой запускается функция. Что то вроде

If xr_conditions.weapon_shoot() then

...

end

P.S. Проверка "от балды" написана.

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

Clayman, Ну, я это понял так, что если в возможных целях сквада указать и ГГ, то они будут стремиться в место, где он стоит. Допустим, такое есть у мутантов: если ГГ ближе 150м, то можно пойти и попробовать немного покусать его. У неписей враждебных группировок есть такое же. Для ощущения пущей враждебности было сделано, наверное: чутьё у мутантов, перехватчики сигналов ПДА у неписей и в таком же духе, что может подумать игрок...

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

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

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

Запомни правило: чтобы экспортировать модель из милки в  формат СДК (.object) нужно в конце имени файла указать расширение, т.е. .object иначе у тебя файл не сохранится. А вот в СДК уже, после настройки модели, можно будет сконвертить в .ogf . Да, прежде чем экспортировать в ОГФку настрой кости, хотя бы шейпы, либо подгрузи их из библиотек СДК ( по пути rawdata\objects\dynamics\actors будет файл stalker.bones).

P.S. Думаю, что плагины импорта\экспорта для милки у тебя уже стоят...

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

Зажимаешь правый Shift  и одну из кнопок мыши и будет тебе перемещение\вращение камеры. А сами модели в СДК крутятся только при спавне, либо расстановки на локации.

P.S. С нашим интернетом я тебе не то что СДК не скину - даже на видеообзорчик не хватит скорости... :unsure:

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

Если вылет при переходе Петрухи в онлайн, то у тебя, скорее всего, не настроены шейпы. Если вылет при попытке поговорить с ним, то это не моделька виновата.

И прикрепляй к сообщению лог (последние его 10-15 строк) под спойлер - он поможет найти причину.

Вот алгоритм настройки модели в Actor Editor:

1. Подгружаем модель.object, переходим во вкладку bones и нажимаем ниже кнопку load.

2. Идём по пути editors\rawdata\objects\dynamics\actors и выбираем stalker_1.bones (можно и stalker.bones - я разницы не видел, кроме даты создания файла, возможно _1 с правленными костями...).

3. Кости готовы. Теперь идём во вкладку object и в окне ниже ставим галки у Make Progressive и HQ Geometry (ставить при условии, что у тебя стоит фикс сглаживания для СДК ЗП, иначе от этого пункта толку не будет) и в меню User Data вписываем #include "models\capture\stalker_neutral_2.ltx", так как у нас Путруха в Заре.

4. В Surfaces настраиваем материалы для модели (не обязательно).

5. Во вкладке Motions в пункте Motion references укажи галочкой следующие пикеты анимаций в каталоге actors: stalker_anomation , stalker_scenario_anomation , stalker_scripts_anomations и stalker_smart_cover_anomation .

6. Теперь экспортируем модельку. Придётся малость подождать, пока пройдут процессы Make Progressive и HQ Geometry. После проверяй.

P.S. Названия анимаций могут содержать ошибки: на память писал - но они там есть, "Мимо не пройдёшь".

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

Здравствуйте, не могу понять момент:

Мастерю матюгальник, ставлю ему в логику такое условие on_info2 = {=check_smart_alarm_status(escape_roadblock:alarm)} ph_sound@alarm но игра вылетает с логом

[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : ... - Зов Припяти\gamedata\scripts\xr_conditions.script:615: attempt to index local 'smart_control' (a nil value)

Мол, не может найти смарт (хотя он есть), но это ещё "ладно", я понять не могу следующее: 

Игра жалуется на то, что локальная smart_control равна nil, но ведь выше есть "затычка":

if smart_control == nil then
    abort("Cannot calculate 'check_smart_alarm_status' for smart %s", tostring(smart_name))
end

Это как? Почему всё-таки вылет идёт?

 

ммихаилл, В логику непися ставишь такую конструкцию: 

on_info = {=actor_in_zone(Имя_твоего_рестикора)} %=actor_enemy%

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

Здравствуйте.

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



[logic]
active = ph_idle

[ph_idle]
auto_fire = false
on_info   = {=dist_to_actor_le(100) +esc_minigunner} ph_minigun@actor

[ph_minigun@actor]
fire_angle = 150
track_target = true
target = actor
fire_range   = 100
fire_repeat  = 5
fire_time     = 5
auto_fire     = true
on_info        = {-esc_minigunner} ph_idle@stop 
on_info2      = {=dist_to_actor_ge(100)} ph_idle@stop
shoot_only_on_visible = false

[ph_idle@stop]
auto_fire = false
on_info   = {=dist_to_actor_le(100) +esc_minigunner} ph_minigun@actor
on_info2 = {-esc_minigunner} ph_idle

 

 

Но при приближении к пулемёту ловлю вылет:



FATAL ERROR
 
[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : ....r. - Зов Припяти\gamedata\scripts\ph_minigun.script:65: attempt to index field 'mgun' (a nil value)

Скрипт оригинальный, из ЗП. Заменял его на версию ЧН - тоже самое. Кто-нибудь вообще делал пулемётные турели в ЗП? Работали ли?

Изменено пользователем Сталкер Лом

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

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

Но это не значит, что нельзя сделать эффект ПНВ при нахождении артефакта на поясе... Если интересно, как скриптово это сделать - стучи в ЛС, а то там нужно уточнять детали.

  • Нравится 2

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

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


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

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