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

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

 
 

Stalkerin. Там есть много хороших статей касательно данной темы.
Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения.

 

Справочное руководство по языку Lua 5.1
https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ru
Справочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены.

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

 

Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу.

 

Вопросы которые будут удалятся, следовательно их задавать не нужно:
-- Где находится та или иная функция?
Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;
-- Как сделать что-то/то-то?
С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;
-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.
-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.
Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов?
В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос.

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 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 ядер, 32 потока, 5.75 ГГц); 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 ядер, 32 потока, 5.75 ГГц); 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 сказал:

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

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

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

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

Не видел я такой статьи, могу только скинуть пример как это сделано

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

Подскажите, пожалуйста, как прописать логику враждебному нпс так, чтобы он не атаковал актора при приближении к нему, не сходил с точки спавна и постоянно проигрывал анимацию состояния транса (trans_0_idle_0)? Короче, примерно тоже самое, что и в тч, когда монолитовцы сидят вокруг кучи мусора и вращают головами.

Изменено пользователем Rod_K
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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