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

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

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


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

  Информация (Показать)

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

 

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

  Читать рекомендуется. (Показать)

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


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

Здравствуйте. Простите, если помешал. Кто-нибудь может рассказать, как заставить неписей игнорировать очевидный для них денжер?
 
PS: ТЧ 1.0004

Поправить ошибку со storage в xr_danger.script, и прописать соответствующий игнор в логике ? dc

Изменено пользователем Dennis_Chikin
Ссылка на комментарий
  код (Показать)

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

@Zander_driver, это прикол?) Проверяй #vacant_pos на 0, если равно, брекай свой цикл - таблица пуста. Смысл в том, что в рандом нельзя передать 0.

Может быть можно ранее до цикла проверить длину и сравнить с тем, сколько элементов надо удалить, будет мини-оптимизация.

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

ТЧ 1.0004. SAP и Trans mod

github

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

@nego, Ну для этого требуется сделать две относительно несложные вещи.

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

2. На апдейте скриптом выяснять, какие артефакты находятся на поясе ГГ, читать их конфиги, и если в них найдется строчка отвечающая за переносимый вес, читать ее значение и с этим значением запускать механизм из пункта 1.

 

Это все как вариант. Безусловно могут быть и другие пути реализации. Задачей "для начинающего" я бы это не назвал.

 

Вопрос к знатокам - что происходит с юзердатой клиентского объекта, при ее длительном хранении в переменной в скрипте? Судя по моим данным, неизменной она не остается, хотя и нельзя однозначно сказать, что с ней происходит. История:

  тык (Показать)
Изменено пользователем Zander_driver

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

По п1 - не надо ни какого апдейта. Кстати, кто там просил примеров с info и окном диалога - тоже см. сюда.

 

  bind_stalker.script (Показать)
Изменено пользователем Dennis_Chikin
Ссылка на комментарий

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

Юзердаты, на него ссылающиеся, после этого показывают на что попало. Да, пользоваться ими нельзя, следовательно, и хранить тоже бессмысленно.

 

Есть, кстати, замечательный глюк в xr_conditions, где происходит обращение к сохраненной неизвестно когда, кем, и зачем юзердате.

Изменено пользователем Dennis_Chikin
Ссылка на комментарий
  Zander_driver писал(а):
1. Реализовать механизм, позволяющий скриптом влиять на переносимый вес. Напрямую это делать нельзя. Один из обходных вариантов - На каждый комбез сделать серию подвидов, внешне неотличимых, но с разным переносимым весом. И скриптом менять в зависимости от желаемого результата, не забывая озаботиться сохранением состояния комбеза при его замене. 2. На апдейте скриптом выяснять, какие артефакты находятся на поясе ГГ, читать их конфиги, и если в них найдется строчка отвечающая за переносимый вес, читать ее значение и с этим значением запускать механизм из пункта 1.

 

Я не спорю - это красиво будет смотреться, но по моему проще балласт с отрицательным весом спавнить (смотреться будет хуже, зато геморроя куда меньше).

 

  Цитата
гораздо удобнее сохранять айди

Самое верное решение.

 

@Dennis_Chikin, а я вообще назначения некоторых функций в xr_conditions не понимаю. Особенно непонятны конструкции:

function rad_pass_time(actor, npc)
    return true
end

Да и в остальном видно что не особо парились при создании логики в игре.

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

Не особо парились при разработке в целом игры, так верней уж. Всяческих непонятных конструкций во всех "сферах" - хватает.

  • Нравится 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.

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

Ну а что вы хотите от студенческих курсовых ?

 

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

 

Начинать в очередной раз все с нуля - не хочу.

 

Да, модули Артоса на мой взгляд чрезмерно академичны. Этим и не нравятся.

 

Вот допилю новый формат сохранений в гулагах - выложу очередную демосборку. 

А если кто хочет помочь - то, кстати, посмотрите смысл job.fill_idle на предмет смысла значений, отличных от -1 и -2 в xr_gulag - где, зачем и для чего в принципе это может использоваться.

 

  Struck писал(а):

function rad_pass_time(actor, npc) return true end

Это запчасть от убиения актора, если он сунулся на радар без записки или в неподходящее время.

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

Начинать в очередной раз все с нуля - не хочу.

И не нужно. Я считаю, что рефакторинг скриптов (тем более полный), будет для всех, и ни для кого. Многие его требуют, но дай его им, они не поймут как им пользоваться, посмотрят, поохают, и положат на полку. Сколько сейчас модов на 4 патче базируются на баг-фиксе, а?

Ссылка на комментарий
  Zander_driver писал(а):

сделать серию подвидов, внешне неотличимых, но с разным переносимым весом

  Zander_driver писал(а):

какие артефакты находятся на поясе ГГ, читать их конфиги, и если в них найдется строчка отвечающая за переносимый вес

  Dennis_Chikin писал(а):

Вместо 100500 модификаций костюмов актор элементарно с самого начала загружается невидимым балластом, например. А потом балласт убирается.

На дворе 2014 год, а люди до сих пор подобные вещи делают через "переспавн костюмов" и невидимый "баласт" :rofl2: 

 

X-Ray extensions и методы get_actor_max_weight/set_actor_max_weight, get_actor_max_walk_weight/set_actor_max_walk_weight и get_inventory_weight в помощь.

 

З.Ы. а еще лучше скачать исходники и сделать сразу как надо.

Изменено пользователем Shadows
  • Согласен 1
Ссылка на комментарий

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

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

В любом случае, если по уму делать, то надо брать последнюю ревизию 7 патча (сейчас это 174), и на ее основе уже переписывать коды. Кто тут сильно жаждет, можете начать, сделать обвязку новых методов и свойств с описанием, это, я думаю, будет востребовано. Может кто и подхватит это дело.

 

Лично мое мнение, храй экстеншн морально устарел.

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

Всем доброго времени ссуток.

После прохождения SoC(1.0006) мне захотелось сделать некоторые не архисложные модификации игры :

Начну с того что проходя вышеупомянутую часть сталкера мне не удалось заполучить одну редкую винтовку..

Уже после прохождения игры я наткнулся на тутор как прописать игроку в рюкзак предметы скриптом.

Теперь внимание вопрос:

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

Чтобы вызвать его к примеру из  S.T.A.L.K.E.R - Shadow of Chernobyl\gamedata\scripts\ui_main_menu.script

 

--        if dik == DIK_keys.DIK_S then
--            self:OnButton_load_spawn()
            
--        else

        if dik == DIK_keys.DIK_Q then
            self:OnMessageQuitWin()--после этого
            
        elseif db.actor~=nil and dik==DIK_keys.DIK_F4 then
            add_all_Wpn()--Моя функция которую я хочу иметь в своем скрипте а не дописывать их в конец уже имеющегося игрового скрипта, так как такой способ я считаю неправильным или просто нехорошим :(

P.S.Я тут новенький так что если что не так то прошу тапками не кидать.Туторы читал и там не нашел такой инфы.

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

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

 

Скрипты подключаются "на лету".

Вот есть, допустим, my_kew1.script, а в нем функция my_kew1_function(), то если где-то написать my_kew1.my_kew1_function() - как до нее дойдет, так сразу и подключится.

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

Всем Привет!

Задача: спавнить различные наборы предметов

  Работающий вариант - множество таких функций: (Показать)
Изменено пользователем stalk9r

Есть хабар - пойдёт базар :az1000106:

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

self.pokupka({"bread","vodka","kolbasa"})

 

- а это вообще как ? И зачем ?

 

function pokupka( t )

for i, v in ipairs ( t ) do alife():create( v, vector(), 0, 0, 0 ) end

end

 

Вызывать: pokupka( {"bread","vodka","kolbasa"} )

 

Причем я не понял: зачем вообще делать отдельной функцией ? Дабы сильнее тормозило ?

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

@Dennis_Chikin, это как бы класс. В котором есть метод спавна набора объектов. И есть методы в которых задаются разные наборы.

Зачем - это другой вопрос.

Да и работать должно же по идее.

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

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

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

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

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

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

Войти

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

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

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