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

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

@dsh,  Через xray extensions скорее всего можно, по смещению.

 

@dsh, В каком случае из нэт-пекета имя ГГ берется?

 

Я проверил: если изменить имя ГГ в файле, то имя изменится только при новой игре. Имя, в иной ситуации, читается из сейва. вопрос можно ли переименовать ли ГГ нэт-пакетом?

Изменено пользователем Graff46
Добавлено  Опричник,

Отправленный пост, некоторое время можно редактировать, чтобы добавить информацию ("Редактировать" под постом) . Пользуйтесь этой возможностью.

Ссылка на комментарий
2 hours ago, Graff46 said:

В каком случае из нэт-пекета имя ГГ берется?

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

2 hours ago, Graff46 said:

Имя, в иной ситуации, читается из сейва.

Именно так. Поэтому

2 hours ago, Graff46 said:

можно ли переименовать ли ГГ нэт-пакетом?

Полностью - нет. См. начало. Да и вообще, про переименование нетпакетом я ничего не могу сказать, не пробовал. Все, что я могу сказать, что в нетпакете есть имя и оно используется. Можно так переименовать или нет - не знаю. У меня переименовывается через прямой доступ к свойствам, а не через нетпакет.

 

Ссылка на комментарий
14 минут назад, dsh сказал:

У меня переименовывается через прямой доступ к свойствам

Редактирование движка? Через X-Ray Extensions не сделать?

 

P. S. Пошёл путём "мамкиного хакера" нашел имя ГГ в сейве, поменял с сохранением длины строки, загрузил - работает.

 

P. S.2 Значит клиентский объект (ГГ) получает имя ГГ (своё) из сейва. Интересно как, "напрямую" или через пакет? У нас в методе биндера ГГ на загрузку передаётся поток чтения (reader) врятли в потоке можно данные изменить, а вот у метода сейва, есть полноценный пакет, в который можно было бы что нибудь перезаписать, но какие смещения? Стандартный для ГГ? А ощущение создается будто бы в метод сейва вообще передается не тот пакет, который мы получим от ГГ методом STATE_Write  .

Изменено пользователем Graff46
Ссылка на комментарий
22 minutes ago, Graff46 said:

Редактирование движка? Через X-Ray Extensions не сделать?

Не знаю. Я экспортировал эти свойства для скриптов.

 

23 minutes ago, Graff46 said:

Интересно как, "напрямую" или через пакет?

В смысле как? Просто читает из сейва

https://github.com/OGSR/OGSR-Engine/blob/f170c7ba6632c02c8b5d763cd182ba9a106caddb/ogsr_engine/xrGame/InventoryOwner.cpp#L178


    load_data        (m_game_name, input_packet);

 

25 minutes ago, Graff46 said:

У нас в методе биндера ГГ

При чем тут биндер. Под клиентским объектом я подразумевал движковый клиентский класс.

 

27 minutes ago, Graff46 said:

будто бы в метод сейва вообще передается не тот пакет, который мы получим от ГГ методом STATE_Write

Именно так. В save() передается клиентская область сохранения, а не серверный нетпакет. Точно так же и в load() передается не нетпакет, а клиентская область сохранения.

 

Ссылка на комментарий
7 минут назад, dsh сказал:

В save() передается клиентская область сохранения,

А имя ГГ в этой области? В случае если только что загрузились, и в 1 раз подгружаем имя ГГ из сейва

Изменено пользователем Graff46
Ссылка на комментарий
18 minutes ago, Graff46 said:

А имя ГГ в этой области?

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

 

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

@Graff46, плохо проверял наверное)

https://github.com/naxac/CP2_AddOn/blob/master/gamedata/scripts/naxac_test.script

Две функции в конце файла. Последняя вызывается в конце save биндера актера. Работает)

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

Кто-нибудь совмещал мод на умное выпадение частей монстров (отстреливаешь кабану ногу, выпадает копыта вместо 4) с модом "мясник" (отрезание частей монстров только при наличии ножа в инвентаре)? Хотелось бы где рабочий вариант подсмотреть, сам уже пытался смотать всё синей изолентой и писал тут, но увы...

Ссылка на комментарий
1 час назад, Dennis_Chikin сказал:

Возврат взятой запчасти обратно

Прости, не понял, о чём ты.

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

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

 

Собственно, не понимаю, что тут такого сложного "совмещать".

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

Хм, я вот о чём. В ОП-2.1 строка функция спавна конечности монстра по факту юзания его с тушки с ножом

local monster_part=ini_reader.iniReader():readString(monster:section(),"Spawn_Inventory_Item_Section","") - учитывает кол-во его запчастей на момент его смерти?

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

Данная строка просто читает название запчасти из конфига.

Вообще, конечно, изучение кода ОПы - занятие, опасное для психического здоровья.

 

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

Ну, ОП для примера. Отрезание частей монстров ножом есть в ButcherMod_ShoC, но...

Скрытый текст

-- Срезание трофеев с монстров / Идея: мод "Мясник" (CoP) от Singapur22
function generic_object_binder:use_callback(obj, who)
    if self.use_flag == nil and self.object:section()~="m_trader" then
        self.object:set_nonscript_usable(false)
        self.use_flag = true
    end
      if self.object:alive() or self.used then return end
        local knife = who:item_in_slot(0)
    if who:id() ~= db.actor:id() or (knife~=nil and who:active_slot() == 0) then
        self.used = true
    else
        if knife then
            news_manager.send_tip(db.actor,"Чтобы cрезать трофей, нужно достать нож.")
        end
        return
    end
        self.item = read_if_exist("s",nil,self.object:section(),"Spawn_Inventory_Item_Section",nil)
    if self.item then
        self.item_count = read_if_exist("f",nil,self.object:section(),"Spawn_Inventory_Item_Amount",1)

    else
        return
    end
        for i=1, self.item_count do
        alife():create(self.item, who:position(), who:level_vertex_id(), who:game_vertex_id(), who:id())
    end
        self.object:set_tip_text("")
        local h = hit()
    h.draftsman = self.object
    h.type = hit.fire_wound
    h.direction = vector():set(0,1,0)
    h:bone(read_if_exist("s",nil,self.object:section(),"bone_impuls_abscission","bip01_spine"))
    h.power = 1
    h.impulse = (read_if_exist("f",nil,self.object:section(),"impuls_abscission",150))
    self.object:hit(h)
        local sound_use = sound_object("material\\dead-body\\collide\\hithard0"..tostring(math.random(1, 6)).."hl")
    sound_use:play_at_pos(self.object, self.object:position(), sound_object.s3d)
end

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

Вкратце:

Скрытый текст

function main_check(obj, amount, local_direction, who, bone_index)
    local sc = obj:section()

    if tD[sc] then
        local section = tD[sc]
        for k,v in pairs (m_Tbl[section].bones) do
            if bone_index == v then
                if (m_Tbl[section].data == "boar_leg_count" or
                                    m_Tbl[section].data == "snork_leg_count" or
                                    m_Tbl[section].data == "burer_handy_count" or
                                    m_Tbl[section].data == "zombie_handy_count" or
                                    m_Tbl[section].data == "handy_kontroler_count" or
                                    m_Tbl[section].data == "himera_kogot_count") and m_Tbl[section].param > 0 then
                    m_Tbl[section].param = m_Tbl[section].param - 1
                else
                    m_Tbl[section].param = 0
                end
                break
            end
        end
    end
end

function spawn_parts(obj)
    local sc = obj:section()

    if tD[sc] then
        local section = tD[sc]
            if m_Tbl[section].param > 0 then
                if m_Tbl[section].param > 1 then
                    for i=1, m_Tbl[section].param do
                        amk.spawn_item_in_inv(m_Tbl[section].item,obj)
                    end
                else
                    amk.spawn_item_in_inv(m_Tbl[section].item,obj)
                end
            end
        m_Tbl[section].param = m_Tbl[section].default_param
    end
end

 

И вот как это сделать правильно, я не знаю.

Изменено пользователем Капрал Хикс
Добавлено  HellRatz,

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

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

Spawn_Inventory_Item_Amount",1

 

Собственно, есть же все необходимое.

То есть, надо просто количество брать не из конфига, а из где-то сохраненного при убиении. Хоть бы и в pstor монстра.

Либо, как уже предлагал, и, кстати, как в этой свежей опе и сделано - спавн запчастей при смерти монстра, но их возвращение обратно в тушу при взятии без ножа.

 

  • Сочувствую 1
Ссылка на комментарий
3 часа назад, Dennis_Chikin сказал:

То есть, надо просто количество брать не из конфига, а из где-то сохраненного при убиении.

Именно про это я и спрашивал - КАК.

3 часа назад, Dennis_Chikin сказал:

спавн запчастей при смерти монстра, но их возвращение обратно в тушу при взятии без ножа.

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

3 часа назад, Dennis_Chikin сказал:

Хоть бы и в pstor монстра.

Не использую, не умею.

Ладно, дабы не устраивать чат, посты под снос.

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

 HellRatz, дружище. Умное выпадение частей мутантов я под себя уже подогнал, но там нет фишки в виде срезания этих самых частей с помощью ножа, что я поверх умного выпадения и пытаюсь прикрутить. Я ж вроде понятно описал, в чём мне знаний не хватает :).

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

@Капрал Хикс, в свое время был аддон для НС от Monnoroch, так вот в этом аддоне было срезание частей монстров ножом.

  • Полезно 1

Неважно – сколько у тебя друзей. Важно - сколько из них помогут тебе в трудную минуту и сколько вспомнят о тебе когда им хорошо.

"Худ" и "Умное выпадание частей монстров" для Народной солянки

Ссылка на комментарий
3 часа назад, Comador сказал:

аддон для НС от Monnoroch

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

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

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

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

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

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

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

Войти

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

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

AMK-Team.ru

×
×
  • Создать...