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

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

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


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

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

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

 

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

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

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


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

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

  Раскрывающийся текст (Показать)

Не соответствует. N6260

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

Интересный тут вопрос возник...

Есть некий объект, на который мы сохраняем ссылку. Пусть это будет game_object, как в xr_danger.script:

db.storage[self.object:id()].enemy = best_danger:object()

Затем с объектом по какой-то причине происходит destroy. На что указывает сохраненная ссылка ? nil ?

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

ZeeK, твой код будет рабоатать, если у тебя надет комбез "Сева" и ты находишься на Затоне, причём независимо от его состояния. Если в слоте вообще не будет комбеза - будет вылет.

Думаю нужно как-то так:

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

У меня вопрос. Есть движковая функция для гейм_обьекта set_alien_control.Как я понял, она используеться в игре только раз при атаках контроллёра. А есть ли способ её использовать для нпс и прочего и как она работает? Точнее, нужно ли её выключать?

Изменено пользователем panzyuza
Ссылка на комментарий
panzyuza, неверно. set_alien_control(bool) переключает камеру в положение "из глаз" кровососа. Применима только к объектам класса CAI_Bloodsucker, при применении к другим объектам в лучшем случае ничего не будет. Лучше скажи, что ты хотел добиться от нпс с ее помощью. Изменено пользователем KD87
Ссылка на комментарий
  Цитата
твой код будет рабоатать, если у тебя надет комбез "Сева" и ты находишься на Затоне, причём независимо от его состояния. Если в слоте вообще не будет комбеза

Shredder на это и было нацелено. То есть, написано верно будет, если заменить

 if db.actor:item_in_slot(7) ~= nil and db.actor:item_in_slot(7):section() == "scientific_outfit" and db.actor:item_in_slot(7):condition() <=0.80 and level.name()=="zaton"

на

 if db.actor:item_in_slot(7):section() == "scientific_outfit" and db.actor:item_in_slot(7):condition() <=0.80 and level.name()=="zaton"

??

 

 

 

Не соответствует. N6260

Ссылка на комментарий
  Artos писал(а):
И/или, взгляни, например в _g.start_game_callback()

Довольно таки интересная с виду фитча.

Можно ссыль на описание?

Или лучше ткните туда, где она встречается. ^_^

 

P.S.: Ковыряние в файлах и поиск по сайту ничего не дал.

Изменено пользователем Кактус_523
МЯСО!
Ссылка на комментарий

Я не буду разбираться что у вас в коде не правильно, но объясните мне смысл вот этого:

if db.actor:item_in_slot(7) ~= nil and db.actor:item_in_slot(7):section() == "scientific_outfit" and db.actor:item_in_slot(7):condition() <=0.80 ...

 

ЗАЧЕМ?

 

Вы вызываете аж 3 раза движковую функцию. Которая тоже время требует на выполнение. Притом такой код как выше выглядит не красиво. Почему не написать так:

 

local slot_item_7 = db.actor:item_in_slot(7)
if slot_item_7 and slot_item_7:section() == "scientific_outfit" and slot_item_7:condition() <=0.80 ...

 

И понятней, и быстрей

Freedom

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

Кактус_523, эта "интересная фитча" - стандартая функция воторая и запускает собственно игру и естественно присутствует везде (ТЧ/ЧН/ЗП).

Описывать то, как для запуска игры движек обращается к этой функции пока никому в голову не взбрело ... Если взглянешь в alife.ltx то в секции [alife] увидишь строку:

start_game_callback = _G.start_game_callback; on starting new game or loading saved one

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

 

 

Добавлено через 16 мин.:

_Призрак_

А еще "понятнее':

local actor_outfit  = db.actor:get_current_outfit()

- и функция имеет понятное имя и нет ни какого гимора с номером слота, который в разных версиях игры порою смещен ... ;)

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий
KD87, понятно. Значит только к кровососам. Есть функция в xr_effects npc:set_alien_control( p[1] == "true" ). Не подскажешь, что передавать в качестве параметра (ид или сид обьекта)? Я понял, что true\false для включения и отключения. То есть, если монстр сделан на классе кровососа, то данная функция будет также применима. А чего от нпс хотел добиться? Хотел оживить игру. К примеру, в начале анимки punch переключить на нпс, и по прошествии секунд игрового времени обратно на актёра. Что-то вроде маленькой кат-сцены. Или во время атаки мутанта на нпс сначала взгляд нпс на монстра и потом обратно. Вообщем, простор идей большой. Изменено пользователем panzyuza
Ссылка на комментарий
panzyuza, какой сид? :) функция применяется к клиентскому объекту кровососа, а в качестве параметра ей передается bool - вкл/выкл, соответственно :) Изменено пользователем KD87
Ссылка на комментарий

_Призрак_

  Цитата
Вы вызываете аж 3 раза движковую функцию. Которая тоже время требует на выполнение. Притом такой код как выше выглядит не красиво. Почему не написать так:

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

 

Во-первых, ты в разделе "Школа ..." и тебе подсказали, так зачем оправдывать свои незнания/недопонимания?

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

--/Artos

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

Не соответствует. N6260

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

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

Вот скрипт может я где-то допустил ошибку.

  Вот скрипт, посмотрите (Показать)
Ссылка на комментарий

zitulok, либо в этом дело pN:links - они у тебя не прописаны как раз для начальных точек путей(да и вообще криво), либо НПС не видит точку пути(она находится вне аи сетки/за уровнем) и уходит гулять(что в данном случае маловероятно).

 

 

Как отследить что НПС был убит к примеру с гранаты или гранатомета?...если не возможно, то как отследить момент кидания гранаты и момент выстреливания подствольника/гранатомета?

 

 

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

Я создал скрипты телепорта, как его заспавнить не через create а через all.spawns, дайте пожалуйста пример.

 

Не путай конфиги для спавна со скриптами и подбери соответствующую тему, в зависимости от версии игры.

И раз написал для all.spawn'а - в него и включай тобою написанное, предварительно ознакомившись как работать с ним. --/Artos

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

Подскажите пожалуйста, возможно ли изменить определённое значение в конфиге, через скрипт.

К примеру...

Я хочу что бы вес объекта в рюкзаке, изменился после выполнения функции в скрипте.

Перепробовал несколько вариантов, но не что не работало.

 

Один из примеров моих попыток

function vsk94weight()
  local ltx = system_ini()
  if ltx:section_exist(wpn_vsk94_ttx) and ltx:line_exist(inv_weight, 2.82) then
return ltx:r_float(inv_weight, 4)
  else
return ltx:r_float(inv_weight, 1)
  end
end

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

GreadFiasco Значение в конфиге, через скрипт изменить нельзя. Можно его только прочитать оттуда, что ты и делаешь в своем примере.

Можно скриптом заменять один предмет на другой - точно такой же, но с другим весом.

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

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

Всем привет. Помогите, пожалуйста, разобраться.

Итак, адаптировал я "Ограничение объема рюкзака" и "Магазинный мод (обоймы)".

 

Ввел в resctrictor_stock.script, в таблицу - проверку всех обойм. Вот так:

...
local _table = {
_magazines  = {"clip_8_9x18_fmj","clip_8_9x18_pmm" и т.д.}
...

Всё прекрасно работает, но одно Но.

Как только разряжаю оружие - вылет:

Expression    : e_entity
Function      : xrServer::Process_event_reject
File          : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_process_event_reject.cpp
Line          : 12
Description   : entity not found. id_parent=0 id_entity=19200 frame=841

Как сделать проверку на патроны для оружия?

 

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

Доброго времени суток всем! :)

Artos, вопрос для меня актуальный по "отработавшим" свою логику рестрикторам.

  Artos писал(а):
зачем оставлять по всей Зоне, хотя и невидимые, но никомму не нужные и по сути рудиментарные уже об'екты?

Нельзя с этим не согласиться. Есть ли соображения куда взоры и стопы свои направить в поисках решения этой задачи? Другими словами, возможно ли установить, что данный конкретный рестриктор уже отработал и может быть удален?

  Artos писал(а):
В принципе, даже проверял и где-то применяю - в самой логике рестриктора по окончании активной секции переключая на 'nil' - вызываю функцию удаления "самого себя".

Идея понятна сама по себе. Если можно, подробнее о принципе определения "самого себя". Последующее удаление не представляется проблематичным.

Заранее благодарен.

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

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

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

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

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

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

Войти

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

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

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