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

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

Не нахожу поиском или туплю. В ТЧ есть скриптовый метод проверки ГГ на кровотечение? Задумал тут перетащить медиков из ЗП...

    if  db.actor.bleeding > 0 then -такая проверка вообще возможна в ТЧ?

Ну и сам скрипт лечения:

function medic_magic_potion(first_speaker, second_speaker)
    db.actor.health = 1
    db.actor.power = 1
    db.actor.radiation = -1
    db.actor.bleeding = 1
end

Будет ли работать в ТЧ? Где подсмотреть?

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

Только что, Капрал Хикс сказал(а):

Будет ли работать в ТЧ?

Без правок движка - нет, не будет.

Только что, Капрал Хикс сказал(а):

 db.actor.bleeding = 1

Потому что нет такого на запись, в оригинальном ТЧ.

На чтение тоже несколько иначе. db.actor:get_bleeding() возвращает float от 0 до... существенно более единицы возможно.

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

Мод, где не бывает одинаковых путей - Судьба Зоны.

Что вы говорите, этого никто никогда не делал!? Что вы говорите, это невозможно!? ... Я берусь.

29.07.2021 в 22:28, GYN ZAN сказал:

не стоит помогать людям, которые в ответ на помощь только желчью плюются

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

23 минуты назад, Капрал Хикс сказал(а):

db.actor.bleeding

Нет такого свойства. Да и зачем тебе именно кровотечение, попробуй

bool wounded() -- состояние ранености

void wounded(boolean) -- изменить состояние ранености

В движке не ковырял, но уверен что состояние ранения напрямую привязано к кровотечению.

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

А это ничего, что "раненность" изменяется в диапазоне несколько более сложном, чем "вкл/выкл" ? :crazy2:

Мод, где не бывает одинаковых путей - Судьба Зоны.

Что вы говорите, этого никто никогда не делал!? Что вы говорите, это невозможно!? ... Я берусь.

29.07.2021 в 22:28, GYN ZAN сказал:

не стоит помогать людям, которые в ответ на помощь только желчью плюются

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

@Капрал Хикс 

Проверил, у меня на 1.0007(rc1) wounded() всегда возвращает false. Т.ч. не подойдет и это, правка движка нужна.

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

@AndreySol @Zander_driver , я тут поразмыслил, и понял, что лучше всего использовать банальную проверку на состояние здоровья ГГ <1.0 (ну и радиации). Ведь если у ГГ есть кровотечение, то здоровье всё равно будет ниже единицы?

А насчёт записи состояния кровотечения - в x-ray extension вроде добавлен метод:

// CEntityAlive
heal_wounds(float)

Кстати, в R.M.A. по идее он должен работать, только как правильно вызвать функцию остановки кровотечения?

Изменено пользователем Капрал Хикс
Ссылка на комментарий
Поделиться на других сайтах

2 часа назад, Капрал Хикс сказал(а):

то здоровье всё равно будет ниже единицы?

Например от голода - разве это признак ранения? Костыли, скорее всего, не помогут, а что там в x-ray extension накрутили - надо в описании и читать.

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

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? 

 

 

 

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

@phalcor , что за движок? В ванильном нет ни has, ни detach, ни attach_silencer

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

naxac.gif

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

16.07.2021 в 01:17, phalcor сказал(а):

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

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

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

Мод, где не бывает одинаковых путей - Судьба Зоны.

Что вы говорите, этого никто никогда не делал!? Что вы говорите, это невозможно!? ... Я берусь.

29.07.2021 в 22:28, GYN ZAN сказал:

не стоит помогать людям, которые в ответ на помощь только желчью плюются

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

Ребята, беда. Обнаружил, что в 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 час назад, mole venomous сказал(а):

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

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

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

17 минут назад, Firestarter сказал(а):

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

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

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

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

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

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

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

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

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

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

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

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

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

AMK-Team.ru

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