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

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

Тема для обсуждения скриптов всего и всех в серии игр 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
Ссылка на комментарий

Кто знает как сделать так чтобы БМП в АМК моде стрелял не по ГГ ,а по мутантам , я уже всё перепробовал.

Изменено пользователем Bogdan S.T.
Ссылка на комментарий

 

Bogdan S.T.

Есть 2 варианта: хитрый и познавательный. Первый - установи AI вертолетов с адаптацией для АМК, ее автор делал сам. Но там есть возможность задать в цели только вертушке гулаг или круг по координатам и радиусу; попробуй перенести функцию добавления вражин в схему БТР. Ну а второй, можешь попробовать придумать-что нибудь сам :) .

 

В Симбионе есть готовая схема и с БТР и с вертушками, БТРы по всей Зоне рассекают, вертушка из 18 не даёт выйти, а на базе Свободы два БТРа отбивают атаку трёх вертушек, возьмите оттуда, если сможете, по моему проще. А дело хорошее. Удачи.

 

 

 

  • Нравится 1
Ссылка на комментарий

Подскажите плиз, в чем ошибка? Я сделал непися, который ну типа должен застрелиться, вот файл с логикой:

[smart_terrains]
none = true

[logic]
active = remark1

[remark1]
target = 6
anim = wait
def_state_standing = ward
danger = danger_condition@maroder_boss
on_actor_dist_le_nvis = 2 | remark2

[remark2]
target = actor
anim = suicide
snd = zombied_fight_attack

meet = no_meet
danger = danger_condition@maroder_boss
on_signal = sound_end | remark3

[remark3]
target = actor
anim = suicide
meet = no_meet
danger = danger_condition@maroder_boss
on_timer = 500| remark4 %=vovan.valter_shot%

[remark4]
target = actor
anim = suicide
meet = no_meet
danger = danger_condition@maroder_boss
on_timer = 150| %=kill%

[danger_condition@maroder_boss]
ignore_distance = 0
ignore_distance_corpse = 0

 

И вот когда я подхожу к нему, через некоторое время происходит вылет:

Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ....r. - shadow of chernobyl\gamedata\scripts\_g.script:1121: bad argument #2 to 'format' (string expected, got no value)

 

А когда я убираю из логики строку %=vovan.valter_shot% все нормально работает, он сдыхает! Но мне надо еще звук выстрела, вот сама функция:

 

function valter_shot()
local snd_obj = xr_sound.get_safe_sound_object([[weapons\t_desert_eagle_shot]])
snd_obj:play(db.actor, 0, sound_object.s2d)
end

 

Короче подскажите, в чем ошибка? Мне просто нужно вставить звук выстрела, но вылет! Помогите плиз!

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

Ранее был известен под ником BoBaH_671.

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

@BoBaH_671, функция должна лежать не в vovan, а в xr_effects. Если нужно в vovan, то можно что-то такое написать:


function valter_shot()
local snd_obj = xr_sound.get_safe_sound_object([[weapons\t_desert_eagle_shot]])
snd_obj:play(db.actor, 0, sound_object.s2d)
end
_G['xr_effects'].valter_shot = valter_shot() --// это вызови где-нибудь ДО отработки функции из логики, по идее должно сработать

Либо пиши напрямую, и да, в логике поменяй на %=valter_shot%.

Так же советовал бы переписать функцию отыгрывания звука напрямую от пистолета, а именно:

function valter_shot(actor,npc)
local snd_obj, obj = xr_sound.get_safe_sound_object([[weapons\t_desert_eagle_shot]]), npc:object("имя секции твоего пистолета")
snd_obj:play_no_feedback(obj, sound_object.s3d, 0, obj:position(), 1.0)
end
Изменено пользователем Struck
Ссылка на комментарий

BoBaH_671

я не давно возился с подобной логикой, у меня вышло так:

 

 

 

могу скинуть.

 

Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz).
Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб).
Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge.

Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор

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

Привет всем.

Сегодня пробовал сменить имя главного героя через net_packet. Взял all.spawn, acdc, написал скрипт. Вроде работает, но имя меняется только около иконки, которая показывается при разговоре/торговле, и в КПК в разделе "Ранги".

С нпс то же самое, но это решается отправкой непися в оффлайн на небольшое время сразу после изменения пэкета. С ГГ же такое не прокатывает.

Может, кто-нибудь сталкивался? Как решить?

@Dennis_Chikin, надо, чтобы новое имя отображалось везде. В окне диалога с нпс вместе с фразами, в КПК в разделе статистики, чтобы его можно было получить через actor:character_name()...

Добавлено Dennis_Chikin,

А надо-то что ?

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

naxac.gif

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

Чтобы было везде - везде и менять надо. И, да, изменения через пакет будут только после s/l.

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

Все ссылки в шапке (спойлер Логика) на сталкерин битые. Проще просто руками убрать после index.php слеш и написать вместо него ?title=

Например:

http://www.stalkerin.gameru.net/wiki/index.php/Настройка_логики._Часть_0
http://www.stalkerin.gameru.net/wiki/index.php?title=Настройка_логики._Часть_0
Изменено пользователем Desertir
  • Спасибо 1

ТЧ 1.0004. SAP и Trans mod

github

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

Народ, кто подскажет: как создать переход с локи на локу?


Так, уже все сделал с готовыми скриптами... Но токо что означают эти цифры?

 

 

 

function create_agro_taynik() 
-- создается переход c АГРОПРОМА В ТАЙНИК СТРЕЛКА 
if (not has_alife_info( "teleport_to_taynik" )) then 
y_level.create_level_changer(60000, vector():set( -45.089,-0.637,-34.386 ),194126,654, 
3053, 
717, 
vector():set( -75.975,-6.726,-74.848 ), 
vector():set( 0.0,1.5,0.0 ),"l03u_agr_underground",0) 
db.actor:give_info_portion("teleport_to_taynik") 
end 
-- создается переход ИЗ ТАЙНИКА СТРЕЛКА НА АГРОПРОМ 
if (not has_alife_info( "teleport_from_taynik" )) then 
y_level.create_level_changer(60001, vector():set( -81.394,-4.946,-70.915 ),2709,717, 
194118, 
695, 
vector():set( -47.207,-0.364,-40.833 ), 
vector():set( 0.0,3.0,0.0 ),"l03_agroprom",0) 
db.actor:give_info_portion("teleport_from_taynik") 
end 
end

 
 
-81.394,-4.946,-70.915  - это ясно - позиция
А числа 2709 и 717 вероятно гейм и левел вертексы, но что за числа 194118 и 695? Разжуйте  плиз.
Изменено пользователем BoBaH_671
Добавлено Dennis_Chikin,

y_level.create_level_changer

- телепаты в отпуске.

Ранее был известен под ником BoBaH_671.

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

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

Непонятно.

Всё, разобрался. Я же только серверный объект ковырял, а нужно ещё и клиентский...

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

naxac.gif

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

Такс, еще раз обращаюсь за помощью...

Как сделать, чтобы ГГ выдавался инфопоршень при переходе с локи на локу?

  • Согласен 1

Ранее был известен под ником BoBaH_671.

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

@BoBaH_671, простейший пример - сохранять название локации в pstor ГГ, а при загрузке сверять название текущей локации с сохранённым. Например:

if xr_logic.pstor_retrieve(db.actor, "lvl", "first_level") ~= level.name() then
	db.actor:give_info_portion("level_changed")
	xr_logic.pstor_store(db.actor, "lvl", level.name())
end

вместо "first_level" следует подставить название стартовой локации (для ЧН это "marsh") - тогда инфопорция будет выдана только при смене локации, но не при старте игры.

"level_changed" - название выдаваемой инфопорции.

Проверку можно повесить, например, на первый апдейт актора.

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

Народ, помогите плиз. Я хочу сделать, чтобы непись говорил что-нибудь, короче, знаю я, что в логике надо прописать
snd = ... , но только в какие файлы прописывать свой звук?

Ранее был известен под ником BoBaH_671.

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

@BoBaH_671, Заходишь в скрипт sound_theme. В начале после theme = {} ставишь код.


ph_snd_themes = {}
ph_snd_themes["atp_lager_radio"] = { 
"ambient\\special\\atp_lager_1", 
"ambient\\special\\atp_lager_2"
}

atp_lager_radio - Это  имя, пишешь своё, указываешь в логике. Так-же указываешь свои пути до звукового файла. Все. Надеюсь разберешься. Будут вопросы в личку. Это я использовал для магнитофона, поют две песни рандомно.

Изменено пользователем NL-Vincenz

NL-Vincenz.gif

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

Прошу о помощи, товарищи =)
Имеется такая задача: сохранить некоторые даннные, скорее всего будет некая таблица, "куда-то" в оружие или броню, почему говорю куда-то, потому как вроде пстора у таких объектов нету, вот собственно и вопрос, как это лучше сделать?

 

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

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

,

пстора нету, есть нетпакет и модули для работы с ним.

 

@UnLoaded, А зачем его добавлять вообще?

Изменено пользователем 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.

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

@UnLoaded, учитывая что инвентарный и физический объекты - разные вещи, то в этом смысла никакого не будет (а учитывая еще как движок обрабатывает перемещения в слот, то это вообще чушь).

, единственный корректный подход это сохранять в пакет актору, либо чему-то с ним связанному (фонарик, пда, ...) (в ассоциативном массиве разумеется). Если нужно обязательно в броники или стволы, то тут лучше всего записывать в кастом дату. Можно использовать se_stor или xrvars; это бездонные хранилища, в них можно засовывать что угодно в каких угодно размерах, в xrvars нету явного ограничения на 4кб. Удачи :).

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

Вот поглядите, накостылил кой-чего ;)

Фотошопил я пару минут, так что сильно не пинайте))) 

 

http://youtu.be/9G-LjHxesOE


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

  • Нравится 3
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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