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

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

@Dennis_Chikin, А помоему, для грусти нет причин. Кто ясно представляет что делает и зачем, и как этого достичь - у того и вопросы редко возникают. А даже когда возникают, опытный разработчик может на них ответы самостоятельно найти. Сюда, в тему с вопросами, чаще приходят те, кто из-за нехватки опыта не может решить свои проблемы иначе. Так чему же удивляться?

 

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

В файле environment.ltx есть секция weathers, в ней список имен погоды на которые можно переключаться функцией level.set_weather(string, bool)

А дальше есть еще секция weather_effects, и в ней еще список имен. но на них так переключаться нельзя - получаем вылет invalid weather name. как эти погодные эффекты правильно вызывать с помощью скрипта?

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

Ссылка на комментарий
void set_weather_fx(string) -- устанавливает погодный эффект,

-- описанный в файле weathers\environment.ltx в секции [weather_effects]. Это всякие молнии,

-- ветер с туманом, затемнения и пр. Так в частности сделан выброс

bool is_wfx_playing() -- соответственно проигрывается ли сейчас погодный эффект

 

Странно что я сам не увидел :) ну ладно. Теперь что то я не соображу, как его после выключить. level.set_weather_fx(nil) -- так чтоли?

Разобрался. Эффект видимо на определенное время рассчитан, и заканчивается сам.

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

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

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

В ЗП применяется это:

level.stop_weather_fx()

Как обстоит дело в ТЧ не знаю, не копался. Возможно, имеется такой же аналог. 

Ссылка на комментарий
db.actor:item_in_slot(11) ~= "af_oasis_heart" 

1. Ты проверяешь не равен ли гейм объект строке ?

db.actor:item_in_slot(1) --Вот таким к примеру методом мы получаем объект из первого слота, а как я понял ты проверял секцию, хотя тут тебе вернет объект в первом слоту.

Для того что бы получить секцию надо дописать к примеру

db.actor:item_in_slot(1):section() --Вернет секцию объекта первого слота (Если он конечно же есть...)

2. Нет проверки что в слоте что то есть вообще, если он будет пуст, то вернет nil

Пример:

if db.actor:item_in_slot(1) and db.actor:item_in_slot(1):section()=="wpn_pm" then return "блаблабла, это так к примеру"  end

3. Тут могу ошибаться но если память не изменяет таким методом нельзя получить предметы пояса как у тебя то есть - db.actor:item_in_slot(11) - не вернет пояс...

Функция db.actor:item_in_slot(number) возвращает гейм объект, а на поясе их цела перечень в противном случаи ПЫСы могли сделать что бы она хотя бы массив возвращала, но и такого нет... По моему кто-то очень давно еще на ТЧ писал скрипт получения объектов с пояса, в оригинале же такого вроде нет, в "xray-extensions" есть функции манипуляции инвентарем и по моему поясом.

 

4.

 

if time_global() - flag_timer < 10000 then

return

end

if db.actor.radiation <= 0.5 then

flag_timer = time_global()

Ты из time_global() вычитаешь flag_timer, но даешь ей значение только потом, если она у тебя где-то до этой ф-ии назначена тогда ладно, а если нет, то ты из time_global() вычитаешь nil :wacko:

 

P.S. в третьем пункте не до конца уверен...

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

1. Я проверяю есть ли арт вообще и нету ли арта в 11 слоте. Тоесть когда я арт в контейнер положу, то редиация уже не будет повышаться. С :section() уже проверял, то же самое.

4. Переменной flag_timer я еще вне функции прописал 0.

Со вторым и третьим спасибо за подсказку, буду разбираться.

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

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

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

В точку! И все про меня :)



Всем здравия желаю :)

И я тоже с нубским вопросом. Надобно мне заспавнить раненного НПС, спавню его попсовой функцией, а вот как подпортить ему здоровье разобраться пока не могу. По поиску на форуме все сводится к нет-пакетам (коих, признаюсь честно я не знаю, т.к. пока надобности не было).
Но зародилась надежда, что быть может в ЗП этот момент упростили. Ах да, работаю с ЗП.
В оригиналах игр вспомнила только два примера, но оба они мне не подошли :)
Если нет более простого способа, то пойду изучать нет-пакеты :)

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

userbar368.png

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

Вопрос такой.

Как сделать скрипт при взятии предмета из рюкзака?Ответов на этот вопрос не нашёл!

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

Изменено пользователем Капитан Кузьмичёв
Ссылка на комментарий
Надобно мне заспавнить раненного НПС, спавню его попсовой функцией, а вот как подпортить ему здоровье разобраться пока не могу.

 

Привет, Ксения. :)

 

Если я правильно понял вопрос, в файле xr_effects.script достаточно создать функцию

function health_func(actor, npc)
-- Где указываем необходимое для наших целей значение (может быть и положительным, если нужно "подлечить" НПС).
npc.health = -0.85
end

и вызвать её через логику персонажа

on_info = {-info} %+info =health_func%
Изменено пользователем Jurok
  • Нравится 1
Ссылка на комментарий

 

 

при взятии предмета из рюкзака

А конкретнее - что означает "взятие" ?


 

 

Я проверяю есть ли арт вообще и нету ли арта в 11 слоте

А что за 11 слот ?

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

@Капитан Кузьмичёв, Ответов на такой вопрос вы вряд ли могли найти, т.к. их и нет. Я к примеру вообще не могу понять, что вам требуется. Если воспринимать дословно - вам надо чтобы скриптом написался скрипт ( !!! ) при... каком событии? тут я даже в догадках теряюсь.

 

@Ekagors,@aleksn09,

if db.actor:item_in_slot(1) and db.actor:item_in_slot(1):section()=="wpn_pm" then return "блаблабла, это так к примеру"  end

если в слоте 1 нет ничего, то в этой проверке, будет сразу вызван метод nil:section(), что приведет к вылету. Лучше сначала проверить что в слоте есть вообще какой-то объект, а лишь затем проверять что у него за секция.

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

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

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

 

 

если в слоте 1 нет ничего, то в этой проверке, будет сразу вызван метод nil:section(), что приведет к вылету. Лучше сначала проверить что в слоте есть вообще какой-то объект, а лишь затем проверять что у него за секция.

Масло масленое, я то же самое только короче написал  -_-

 

 

Нет проверки что в слоте что то есть вообще, если он будет пуст, то вернет nil

Тут есть проверка, что не равен nil сей час выделю раз не заметил

if db.actor:item_in_slot(1) --[[Если вернет nil, условие не будет провираться дальше   -]] and db.actor:item_in_slot(1):section()=="wpn_pm" then return "блаблабла, это так к примеру" end

_______________________________________________________________________________________________________________________

 

Как сделать скрипт при взятии предмета из рюкзака?

Что ? Подробней можно не чего не понять.
Ссылка на комментарий

@Vadyanchikus, в сталкере есть непонятная лично мне особенность, сначала нужно забирать итем у актора, а потом дальше че-нить фигарить, иначе у актора нифига забираться не будет, несмотря на появленное сообщение. Так что переставь порядок функций и отпишись заработало или нет.

 

Замечательно забирается. dc

 

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

Я тоже мучался таким вопросом, решил это удалением предмета из инвентаря гг,тоесть функция забирает предмет в диалоге, а от нее срабатывает функция удаления. Может быть слишком сложно и есть способ проще, но у меня работает и это радует.

Если понадобится, могу привести кусок функции.

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

Про здоровье неписей: через нетпакет, смотрим да хоть в моде amk.

А вот если нужно раненого непися - тогда - xr_wounded.script

 

Здоровье и состояние раненности - две совершенно разные вещи.

 

 

По передаче предмета от актора к неписю - как проверялось ?

 

Про скрипт при взятии предмета - тоже ничего не понял. Рекомендую читать http://www.amk-team.ru/forum/index.php?showtopic=7450

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

Меня интересует вопрос относительно инфопорций, как при взятии предмета выдать инфопорцию?

И возможно ли пополнять ассортимент торговцев в разной последовательности? Как я понял после получения инфопорции , ассортимент заменяется, а мне нужно чтоб он пополнялся.

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

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

bind_stalker.script:

 

function actor_binder:on_item_take (obj)

level_tasks.proceed(self.object)

--game_stats.update_take_item (obj, self.object)

end

 

Какая буква в этих строчках непонята ?

 

По ассортименту - аналогично, смотрим trade_manager.script: при входе торговца в онлайн или при апдейте выбирается секция конфига. Все старое удаляется, создается новое.

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

Насчет функции как ее применять? Насчет ассортимента, мне и не надо чтоб старое удалядось, я вроде по русски объяснил, что мне нужно пополнение, а не замена.

Цитата из первого поста темы:

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

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

2.1.1, устное предупреждение

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

@demon96, не надо её применять.

Надо внутри этой функции сделать проверку, а тот ли это obj, что тебе нужен, и если тот - выдать инфопорцию.

Чтобы не загромождать исходный код, лучше всего проверку и выдачу оформить как новую функцию, а здесь её вызвать, передав в качестве аргумента объект.

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

 

 

Про здоровье неписей: через нетпакет, смотрим да хоть в моде amk. А вот если нужно раненого непися - тогда - xr_wounded.script
А разве это не связанно?

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

userbar368.png

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

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