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

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

12 минут назад, AndreySol сказал(а):

Например от голода - разве это признак ранения?

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

 

15 минут назад, AndreySol сказал(а):

что там в x-ray extension накрутили - надо в описании и читать.

// CEntityAlive
heal_wounds(float)

- там вот так и описано, что-де добавлен метод такой.

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

Решил сделать горячие кнопки на установку/снятие глушителя для оружия в активном слоте.

Снятие сделал. Глушитель снимается и оказывается в инвентаре. Condition его при этом сохраняется. 

В очень усечённом виде это выглядит так:

local w = db.actor:active_item() --активный ствол
local w_sect=w:section()
if w:has_silencer() then				
	local addon_sect=w:detach_silencer(true) --ph: false - снятый глушитель исчезает, true - попадает в инвентарь
end

Установка: а вот тут возникла проблемка. Имеется такой метод установки  глушителя:

weapon:attach_silencer(sil)  --здесь sil - имя секции глушителя.

При этом устанавливается вновь заспавненный глушитель. Мне же нужно

или - 1)  брать уже имеющийся из инвентаря 

или - 2)  менять condition на установленном указанным выше методом, а из инвентаря соответственно просто удалять

Есть ли методы для вариантов 1 или 2? 

 

 

 

Ссылка на комментарий
16.07.2021 в 01:17, phalcor сказал(а):

Есть ли методы для вариантов 1 или 2?

Для ответа на этот вопрос, нужно либо иметь исходники движка, либо lua_help к нему, на худой конец...

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

  • Согласен 1

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

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

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

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

Ребята, беда. Обнаружил, что в SAV сохраняются все СМС-сообщения. (Распаковал SAV и ахнул!)

Естественно, я на смс-сообщения в своих скриптах не скупился. В результате размер SAVов увеличивался, и соответственно, увеличивается занимаемая оперативная память.

Результат - всё чаще происходит вылет по нехватке памяти. (Из-за этого собственно и начал искать причину, и нашёл её в сейвах...).

Посоветуйте пожалуйста, как их можно из SAV удалить! Может скриптовый доступ есть, или в конфигах какая настройка на количество хранимых смс, или в движке такая настройка (мне не в лом exe-шник пропатчить, сменив эту цифру). Короче, я в шоке - год игры реального времени, и тут такая подстава! (зачем хранить смс, если мы видим лишь последние пару десятков в ПДА).

 

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

Здравствуйте. 
Не подскажете, есть ли возможность в ТЧ сделать тайники изначально заполненными, без надобности обшаривать каждый труп на наличие записи о тайнике? Ну то есть - ты сам должен будешь искать тайники, обшаривать каждый угол, нет никаких пометок на мини-карте/карте, нет такого, что какой-либо труп даёт заметку о каком-либо тайнике? 
Просто всегда раздражала фигня, что пока не получишь наводку, тайник останется пустовать. Много больше нравилась система как в ЗП, хотя там как таковых тайников в виде сундучков/ящиков нету, все предметы валяются.

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

@Firestarter Можно выдать тайники где-нибудь в начале новой игры. Для этого нужен список всех тайников. Список всех "ванильных" тайников и функция для выдачи :

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

local treasure_list = {

        "esc_secret_bridge_vagon",
        "esc_secret_anomaly_dead",
        "esc_secret_bandit_cross",
        "esc_secret_bandit_supply",
        "esc_secret_under_cross",
        "esc_secret_refuge",
        "esc_secret_safe_farm",
        "esc_secret_vagon_container",
        "esc_secret_stalker_things",
        "esc_secret_box_bridge",
        "esc_secret_village_rucksack",
        "esc_secret_village_roof",
        "esc_secret_nice_place",
        "esc_secret_vorpal",
        "esc_secret_commander_goods",
        "esc_secret_road",
        "esc_secret_thief",
        "esc_secret_gas_pipe",
        "esc_secret_truck_goods",
        "esc_secret_kpp_tower",
    
        "gar_secret_bandit_hiding",
        "gar_secret_old_kran",
        "gar_secret_grizly",
        "gar_secret_north_tube",
        "gar_secret_metal_hiding",
        "gar_secret_cistern_pipe",
        "gar_secret_east_tube",
        "gar_secret_rucksack_noones",
        "gar_secret_murdered",
        "gar_secret_rotted_stump",
        "gar_secret_forest_log",
        "gar_secret_shooters_supply",
        "gar_secret_car_hiding",
        "gar_secret_bus_rucksack",
        "gar_secret_toilet",
        "gar_secret_south_safe",
        "gar_secret_metal_hiding2",
        "gar_secret_box_supply",
        "gar_secret_bus_tube",
        "gar_secret_rucksack_ruins",
        "gar_secret_box_blockpost",
        "gar_secret_deadman",
        "gar_secret_avoska",
        "gar_secret_escavator",
        "gar_secret_concrete_blocks",
    
        "agr_secret_gray",
        "agr_secret_stump",
        "agr_secret_cross",
        "agr_secret_tree_rucksack",
        "agr_secret_pipe_rucksack",
        "agr_secret_roof_box",
        "agr_secret_rucksack_blue",
        "agr_secret_cisterne",
        "agr_secret_rucksack_window",
        "agr_secret_box_radiation",
        "agr_secret_box_stairs",
        "agr_secret_box_factory",
        "agr_secret_bag_stand",
        "agr_secret_box_trash",
        "agr_secret_safe_tree",
        "agr_secret_rucksack_laketube",
        "agr_secret_tube_radiactive",
        "agr_secret_pipe_breakdown",
        "agr_secret_safe_bush",
        "agr_secret_box_archive",
        "agr_secret_sewers",
        "agr_secret_safe_wall",
        "agr_secret_box_institute",
        "agr_secret_agrosafe",
        "agr_secret_truck",
        "agr_secret_rotted_log",
        "agr_secret_box_zavhoz",
        "agr_secret_inventory_schlosser",
    
        "agru_secret_bandit_obschak",
        "agru_secret_rucksack_corner",
        "agru_secret_box_bloodsucker",
        "agru_secret_box_habar",
        "agru_secret_mole_cave",
    
        "val_secret_0000",
        "val_secret_0001",
        "val_secret_0002",
        "val_secret_0003",
        "val_secret_0004",
        "val_secret_0005",
        "val_secret_0006",
        "val_secret_0007",
        "val_secret_0008",
        "val_secret_0009",
        "val_secret_0010",
        "val_secret_0011",
        "val_secret_0012",
        "val_secret_0013",
        "val_secret_0014",
        "val_secret_0015",
        "val_secret_0016",
        "val_secret_0017",
        "val_secret_0018",
        "val_secret_0019",
        "val_secret_0020",
        "val_secret_0021",
        "val_secret_0022",
        "val_secret_0023",
        "val_secret_0024",
        "val_secret_0025",
        "val_secret_0026",
        "val_secret_0027",
        "val_secret_0028",
        "val_secret_0029",
        "val_secret_0030",
        "val_secret_0031",
        "val_secret_0032",    
    
        "x18_secret_0000",
        "x18_secret_0001",
    
        "bar_secret_0000",
        "bar_secret_0001",
        "bar_secret_0002",
        "bar_secret_0003",
        "bar_secret_0004",
        "bar_secret_0005",
        "bar_secret_0006",
        "bar_secret_0007",
        "bar_secret_0008",
        "bar_secret_0009",
        "bar_secret_0010",
        "bar_secret_0011",
        "bar_secret_0012",
        "bar_secret_0013",
        "bar_secret_0014",
        "bar_secret_0015",
        "bar_secret_0016",
        "bar_secret_0017",
        "bar_secret_0018",
        "bar_secret_0019",    
    
        "ros_secret_0000",
        "ros_secret_0001",
        "ros_secret_0002",
        "ros_secret_0003",
        "ros_secret_0004",
        "ros_secret_0005",
        "ros_secret_0006",
        "ros_secret_0007",
        "ros_secret_0008",
        "ros_secret_0009",
        "ros_secret_0010",
        "ros_secret_0011",
        "ros_secret_0012",
        "ros_secret_0013",
        "ros_secret_0014",
        "ros_secret_0015",
        "ros_secret_0016",
        "ros_secret_0017",
        "ros_secret_0018",
        "ros_secret_0019",
        "ros_secret_0020",
        "ros_secret_0021",
        "ros_secret_0022",
        "ros_secret_0023",
        "ros_secret_0024",
        "ros_secret_0025",    
    
        "yan_secret_0000",
        "yan_secret_0001",
        "yan_secret_0002",
        "yan_secret_0003",
        "yan_secret_0004",
        "yan_secret_0005",
        "yan_secret_0006",
        "yan_secret_0007",
        "yan_secret_0008",
        "yan_secret_0009",
        "yan_secret_0010",
        "yan_secret_0011",
        "yan_secret_0012",
        "yan_secret_0013",
    
        "x16_secret_0000",
        "x16_secret_0001",
    
        "mil_secret_0000",
        "mil_secret_0001",
        "mil_secret_0002",
        "mil_secret_0003",
        "mil_secret_0004",
        "mil_secret_0005",
        "mil_secret_0006",
        "mil_secret_0007",
        "mil_secret_0008",
        "mil_secret_0009",
        "mil_secret_0010",
        "mil_secret_0011",
        "mil_secret_0012",
        "mil_secret_0013",
        "mil_secret_0014",
        "mil_secret_0015",
        "mil_secret_0016",
        "mil_secret_0017",
        "mil_secret_0018",
        "mil_secret_0019",
        "mil_secret_0020",
        "mil_secret_0021",
        "mil_secret_0022",
        "mil_secret_0023",
        "mil_secret_0024",
        "mil_secret_0025",
        "mil_secret_0026",
        "mil_secret_0027",
        "mil_secret_0028",
            
        "rad_secret_0000",
        "rad_secret_0001",
        "rad_secret_0002",
        "rad_secret_0003",
        "rad_secret_0004",
        "rad_secret_0005",
    
        "pri_secret_0000",
        "pri_secret_0001",
        "pri_secret_0002",
        "pri_secret_0003",
        "pri_secret_0004", 
    
}    
    
function give_treasures()
    for i = 1, #treasure_list do
        tr = treasure_list
        treasure_manager.get_treasure_manager():give_treasure(tr)        
    end
end    

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

Можно ещё подавить выдачу СМС и метки тайника, закомментировав строки

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

news_manager.send_treasure(v.name)

local text = "%c[255,238,155,23]"..game.translate_string(v.name).."\\n".."%c[default]"..game.translate_string(v.description)
level.map_add_object_spot_ser(obj.id, "treasure", text)

в функции CTreasure:give_treasure(k) (treasure_manager.script).

 

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

 

PS Но я бы всё же выдавал тайники постепенно. Хотя бы на текущей локации.

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

Здесь могла быть ваша реклама.

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

Можно выдать тайники где-нибудь в начале новой игры.

Т.е., то, что я описал - нереализуемо? Только лишь выбрать конкретно один ящик, и туда всё содержимое всех тайников запихать?
Разве вообще никак нельзя сделать так, как я описал?

  • Сомнительно 1
Ссылка на комментарий
17 минут назад, Firestarter сказал(а):

то, что я описал - нереализуемо?

Можно выдать ВСЕ существующие базовые тайники. Я вроде, так и написал в начале предыдущего поста.

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

  • Спасибо 1
  • Согласен 1

Здесь могла быть ваша реклама.

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

@Firestarter Повторять список тайников вручную не требуется – достаточно пройтись по таблице self.treasure_info в [treasure_manager.script] и применить к каждому [id] тайника метод CTreasure:give_treasure, отключив в нем расстановку меток. Обычную выдачу тайников можно не глушить – в указанном методе есть переключение флага id.done (тайник выдан), и этот же флаг проверяется в методе CTreasure:use(npc) при обыскивании трупов.

  • Спасибо 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

Я вроде, так и написал в начале предыдущего поста.

Значит я не понял, виноват, буду пробовать.

3 часа назад, mole venomous сказал(а):

Можно ещё подавить выдачу СМС и метки тайника, закомментировав строки

Большое Вам спасибо за помощь. Особенно за цитируемое спасибо. 
Просто ранее играл с модом, который позволял, осмотрев одно конкретное тело, получить наводки на все тайники. Не очень круто было, слишком тогда просто становилось играть.
А так хоть будет резон всё обыскивать.

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

ТЧ 1.0006.

Задача: подключить расширенную библиотеку из мода OGSE для доступа к флагам предмета can_trade (4) и quest_item (2048) через метод set_inventory_item_int16.

 

Год назад просто заменял [bin\xrGame.dll], ссылался на новый метод в своих скриптах и менял флаги предмета, а сейчас не могу даже запустить игру с этой библиотекой – судя по логу вылета, игра пытается нарисовать и вывести видимый слот ножа. Файлы оригинальной игры те же и на том же диске, папка [gamedata] чистая.

Что я упускаю?

 

Пост от прошлого года

On 3/1/2020 at 2:43 PM, Norman Eisenherz said:

Изменение статуса через get/set_inventory_item_int16 с другой библиотекой xrGame.dll работает

 

Библиотека из OGSE:

https://drive.google.com/file/d/1X3RjfIRClpwxSx6Uhw9m8qAyP7Qu-FXD

 

Пример применения метода:

function set_ii_flags(item, mask, value)      -- mask = 4 или 2048, value = true/false
    item: set_inventory_item_int16( 132, flags16():assign( item :get_inventory_item_int16(nil, 132) ) :set(mask, value) :get() )
end

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

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

или написать свою?

Конечно, есть. Берешь и пишешь.

  • Согласен 1

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

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

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

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

@Norman Eisenherz , ну так либа-то OGSE-шная собрана из расчёта добавления новых худовых слотов. (нож, бинокль, etc).

 

вар1:  добавить эти слоты (config + ui)

вар2: пересобрать либу под собственные нужды. Емнип, нужные методы уже добавлены в "стандартный" X-Ray Ext. Недостающее для сборки с репо можно взять со второй ссылки. Ну и батники для сборки при этом поправить.

 

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

@Купер Хитрость не в том, что библиотека не работает сейчас, а в том, что она работала год назад при простой замене базового файла ТЧ.

Может ли на это влиять мини-патч от GSC? Как раз у файла xrGame.dll дата последнего изменения обновилась. В игре это сказалось, как минимум, на правильном чтении "show_ammo = false" в конфиге бинокля.

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

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

Ссылка на комментарий
3 минуты назад, I am Dead сказал:

Это называется условие

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

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

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

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

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

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

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

Войти

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

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

AMK-Team.ru

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