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

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


Halford

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

... эти сим отряды должны были идти на тот смарт (возле которого был вылет), а их то не-было...

Спасибо, поржал. Когда сквад погибает, он уже не участвует в симуляции и не должен никуда идти. Скорее всего причина вылета не в этом, и ты ещё с ней столкнешься...
  • Нравится 1

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


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

Возможно, когда-то этот код использовался, может быть даже в ТЧ или ЧН, но в ЗП это рудимент, т.к. у se_zone_anom метод update не вызывается.

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


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

Возможно ли как-то зафиксировать онлайновый объект (конкретно артефакт), чтобы его невозможно было сдвинуть с места. Проблема в чём: сделал для ЗП динамические аномалии (на базе АМК), пытаюсь сделать детекторы аномалий. Для этого в каждую такую аномалию спавню артефакт, в настройках детектора ставлю af_vis_radius = 0. Всё клёво, но есть один момент. Проблема с аномалией "воронка". При срабатывании она выбрасывает этот артефакт. Как то можно решить эту проблему?



Порыскав в теме "Справочник по функциям и классам" нашёл, что мне нужно.

 
function af_anomaly_binder:update(delta)
    local ph_object = self.object:get_physics_shell():get_element_by_order(0)
    if not ph_object:is_fixed() then
        ph_object:fix()
    end
end

Всё прекрасно работает, воронка артефакт не выбрасывает :) 

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


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

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

Это реализуемо

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


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

trade_manager.script Его можно доработать, чтобы время последнего обновления ассортимента у торговца где-то сохранялось. Можно добавить поле серверному объекту и читать/записывать его в se_stalker.script. Или же можно писать в custom_data. Используя модуль работы с нет-пакетами m_netpk.script, это просто реализовать.

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

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


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

Скопируй в папку scripts файл sak.script. От этого вылета избавит, но не исключены другие :)

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

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


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

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

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


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

0 (видимый), 1 (засекается Откликом и выше), 2 (Медведь и выше), 3 (Велес и Сварог)

Не совсем так, 0 - видимый, больше 0 - невидимый, но видимость каждого артефакта задаётся в секции детектора.

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


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

Для чего -1? Как уже было не раз сказано выше, чтобы все артефакты были видимыми как в ТЧ, достаточно им всем указать af_rank = 0

Вопрос был изначально про прямую видимость артефакта как в ТЧ, а не "засекаемость" детектором.

Я прекрасно понял изначальный вопрос и лишь немного поправил не совсем верное толкование о видимости в зависимости от af_rank. Изменено пользователем Shredder

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


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

И не забудь прописать свой инфопоршень в файле info_название_локации.xml

В CoP инфопоршни прописывать не обязательно.

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


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

 

Я распаковал all.spawn от ЗП

В ЗП все нпс и мутанты спавнятся скриптами.

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


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

А что за слот такой -1? 11 - слот артефакта, слот противогаза: 12.

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


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

Через колбэки item_take, item_drop. Поскольку любое добавление/удаление предметов проходит через эти колбэки, можно кэшировать кол-во патронов и проверять только одну переменную, а не перебирать весь инвентарь.

ammos = {}
 
function take_item(item)
    if item:clsid() == clsid.wpn_ammo_s then
       local sect = item:section()
       if not ammos[sect] then
         ammos[sect] = 0
       end
       ammos[sect] = ammos[sect] + get_ammo_size(item)
    end
end

function drop_item(item)
    if item:clsid() == clsid.wpn_ammo_s then
       ammos[item:section()] = ammos[item:section()] - get_ammo_size(item)
    end
end

function ammo_in_inv(sect)
    return ammos[sect] or 0
end
 
function get_ammo_size(obj)
    local se_obj = alife():object(obj:id())
    packet:w_begin(0)
    se_obj:STATE_Write(packet)
    packet:r_seek(packet:w_tell() - 2)
    return packet:r_s16()
end

 

Вызов item_take и item_drop добавишь в bind_stalker.script. Кол-во патронов проверяешь через ammo_in_inv

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


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

@Clayman, чтобы новые аномалии обнаруживались детектором, их нужно прописать в конфиг соответствующего детектора:
zone_class_35 = amk_zone_zharka_static_strong
и в файле configs/ui/ui_detector_artefact.xml:

<palette id="amk_zone_zharka_static_strong" width="0.004" height="0.004" stretch="1" alignment="c">
   <texture shader="hud\p3d">ui_inGame2_Detector_icon_electro_big</texture>
</palette>

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


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

inventory_upgrades.script, функция:

local function how_much_repair( item_name, item_condition )
  local ltx = system_ini()
  local cost = ltx:r_u32(item_name, "cost")
  local class = ltx:r_string(item_name, "class")
  local cof = 0.6
  return math.floor(cost*(1-item_condition)*cof * cur_price_percent)
end

Заменяешь на свой расчёт

  • Спасибо 2
  • Нравится 1

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


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

Такая проблемка появилась. При установке метки на серверный объект (сталкера или мутанта) (map_add_object_spot_ser), она появляется только после того, как тот первый раз выйдет в онлайн. Когда он снова уходит оффлан - метка нормально отображается. Кто-нибудь сталкивался с этим?

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


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

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

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


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

Что ж, жаль что так. Выходит что способа кроме как в моде ARC и нет вовсе?

В ARS моде идёт перебор аномалий для каждого сталкера в определённом радиусе. Потом для каждой, проверяется, а не попал ли он в неё, и если попал, наносится hit. Можно сделать через рестрикторы, у которых срабатывают колбэки на входи и выход. Т.е. для каждой аномалии по её же координатам спавнить спейс рестриктор, у которого в колбэке прописать хит по угодившему в него НПС. Так будет менее ресурсоёмко, т.к. просчётов и переборов никаких не будет.

А вот есть ли возможность хитонуть НПС когда он компаньон главному герою? Это же не любой НПС уже а совершенно определенный.

Написал бы конкретнее, что хочешь сделать.

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


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

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

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


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

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