Перейти к содержанию

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

 
 

NewValveCom , на первый вопрос - движковая правка. Второй вопрос - скорее всего типа bak  ai правки, но у самого автора нет такого условия.

  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
16 часов назад, Neptun сказал:

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

Можно пожалуйста по подробнее? я просто не сильно разбираюсь, "создать зону" это спэйс рестриктор?

а можно ли вообще без этой зоны обойтись

 


Дополнено 39 минуты спустя

@Neptun Получилось, добавил рестриктор и всё заработало, возможно ещё помогли манипуляции @makdm но без рестриктора не работало, в любом случае все большое спасибо

 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Здравствуйте снова, вопрос такой. Как заспаунить труп? Уроков по этому мало, а я хотел бы сделать так, чтобы после определенной функции в диалоге, у меня спаунился мертвец сталкера в нужном месте. Я знаю, что это можно сделать через координаты, наверное это самый удобный способ, но может кто-то сможет подсказать лучше? Либо же порядок нужный действий указать правильный? Потому что когда я пытался вписать скрипт для трупа отсылаясь на action в диалоге, у меня вылетала игра без ошибки. Спасибо заранее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Возможно, не совсем в тему, так как на OpenXR (True Stalker)

Спавню скриптово по alife():create разное барахлишко в комнату под замком на базе бандитов в Долине. Предполагается, что барахло (консервы там, аптечки или водка) будет стоять/лежать на "железных столах" или хотя бы на полу. Но оно всё проваливается сквозь и столы, и пол и копится в тюремном подвале. Есть ли способ как-то пофиксить это без использования SDK и аллспавна? Для спрвки: немного юзабельного (подбираемого) барахла там на столах уже имеется, вероятно из аллспавна/SDK.


Я логи в баню удалил, а вот за за рейдеры – не помню!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

@BarmaGlot 

alife():create(...):use_ai_locations(false)

 

  • Мастер! 1
  • Жму руку 1

c01570bf2e07524.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

BadTrip В диалоге вызываете самописную функцию, например: dialogs.spawn_corpse_babay
В скрипте dialogs.script пишете функцию:

function spawn_corpse_babay()
  xr_effects.spawn_corpse(db.actor, db.actor, {"babay","babay_corpse_point"})
end

где babay - кого спавнить, babay_corpse_point - точка где спавнить.

Изменено пользователем denis2000
  • Лайк 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
9 минут назад, Overf1rst сказал:

@BarmaGlot 


alife():create(...):use_ai_locations(false)

 

Омг! Гранд мерси! Здесь я ещё не особо запыхался, а вот несколько лет назад реально бился с этими ветряными мельницами до изнеможения, методом тыка. Мда... И тоже ведь мог спросить, уже здесь тусовал...

  • Смех 1

Я логи в баню удалил, а вот за за рейдеры – не помню!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
8 минут назад, denis2000 сказал:

spawn_corpse_babay

function потеряли)


Дополнено 18 минуты спустя
19 минут назад, BarmaGlot сказал:

Омг! Гранд мерси! Здесь я ещё не особо запыхался, а вот несколько лет назад реально бился с этими ветряными мельницами до изнеможения, методом тыка. Мда... И тоже ведь мог спросить, уже здесь тусовал...

Если ты будешь с этим биться в своём проекте, используй SDK и убирай галочку use ai locations, по координатам-то зачем спавнить или как ты там делаешь) не трогай склад бандитов в TS!!!!11! 

  • Мастер! 1

c01570bf2e07524.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

denis2000 Сделал как вы говорили, точкой выступил мой созданный way point который не был ни к чему привязан, нпс я спаунил взяв ID из character_desk_general, а именно это был "sim_default_stalker_1_default_0", вышла ошибка, что не смогло найти этого НПС, получается я взял id не там, где надо? Или же точка не та? Подскажите, пожалуйста. Диалог сам по себе точно рабочий. В дополнение, еще я попробовал заспаунить на точке, где у меня стоит шейп для квеста с логикой в скриптах конфига локации, но там вообще никого не было и игра не вылетала. 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

В общем решил решил сделать текстуры кнопок, создал новый файл в textures\ui\ui_mainmenu_opt_new.dds

Нарисовал кнопку, подобрал координаты.

затем создал конфиг ui\textures_descr\ui_mainmenu_opt_new.xml

<w>
    <file name="ui\ui_mainmenu_opt_new">
	    <texture id="ui_element_btn_mm" x="17" y="15" width="108" height="26" />
	</file>
</w>

и применил ее в файле меню опций

		<btn_accept x="84" y="431" width="108" height="26" stretch="1">
			<text font="letterica18" align="c">ui_mm_apply</text>
			<texture>ui_element_btn_mm</texture>
            <text_color>
                <e r="170" g="170" b="170"/>
            </text_color>
		</btn_accept>

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

 

Что я не так сделал? может где-то еще нужно регистрировать файлы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

@BadTrip ты взял id профиля, а нужно взять секцию из spawn_sections. Например, можно взять sim_default_stalker_1.

  • Жму руку 1

c01570bf2e07524.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
3 часа назад, Novik сказал:

Что я не так сделал?

Неправильно зарегал:
        <texture id="ui_element_btn_mm_e" x="17" y="15" width="108" height="26" />
        <texture id="ui_element_btn_mm_h" x="17" y="15" width="108" height="26" />
        <texture id="ui_element_btn_mm_t" x="17" y="15" width="108" height="26" />
        <texture id="ui_element_btn_mm_d" x="17" y="15" width="108" height="26" />
"e" - текстура в обычном режиме; "h" - при наведении курсором; "t" - при нажатии; "d" - кнопка в заблокированном виде.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Здраствуйте.

Как изменить размер шрифта обычного тега text? text находится в auto_static если что.


Просто создаю свой мод...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Toplol4ik <text font="letterica18" r="128" g="128" b="128">ТЕКСТ</text>

font - в данном контексте шрифт, нужно выбрать его большего размера.

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

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

denis2000 Мне нужно изменить размер текста.

Как его делать я знаю.

Изменено:

Уже не надо, поставил graffiti50 и шрифт стал нужного размера

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

Просто создаю свой мод...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

А есть где либо гайды по созданию вот такой энциклопедии (ссылка). Помню где то в модах встречал такое типо личных заметок. Хотелось  бы сделать такое для артефактов. Типо нашёл арт инфа добавилась. Подскажите такое вообще возможно? и куда копать что бы реализовать?

 

UPD:

Нашёл готовый личный дневник ссылка если кому то нужно

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Как можно отключить все тени в сталкер зп?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

OpenXR + Gunslinger = TrueStalker (сорри за возможный оффтопик)

Вопрос: как скриптово заспавнить фаршированный ствол? Например, актёр имеет проапгрейденный MP5 с лазером, мазером, магазином на 100500 патронов и так далее. Секция этого ствола всё равно остаётся без изменений, там нет никаких намёков на установленные улучшения. Я проштудировал конфиги и скрипты и так не понял, как этот ствол сохраняется/читается и не вижу возможности его спавна в состоянии улучшенном относительно "базы". Это делается на уровне движка? Есть какой-нибудь интерфейс со стороны Lua?


Я логи в баню удалил, а вот за за рейдеры – не помню!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

 

В 25.01.2024 в 11:32, Pavel2000 сказал:

Хотелось  бы сделать такое для артефактов. Типо нашёл арт инфа добавилась. Подскажите такое вообще возможно? и куда копать что бы реализовать?

Так сказать энциклопедия для артефактов есть, появился другой вопрос, для того что бы статья появилась в энциклопедии нужен инфопоршень, нашёл способ с выдачей поршня при поднятии предмета из bind_stalker.script 

function actor_binder:on_item_take (obj)
--функция отслеживания появления предметов в инвентаре:
if db.actor then
name = obj:section()
if db.actor:object("артефакт") ~= nil then
db.actor:give_info_portion("поршень")
end
end

артефактов у меня 160... в интернетах прочитал что много лишнего лучше в bind_stalker.script не добавлять (типо это постоянные проверки и они будут грузить игру). задался вопросом как вызвать эту функцию в своём скрипте, но так и не понял. возможно есть какой нибудь другой способ? 

Спрашивается зачем мне это нужно? -- для того что бы знать какой арт нашёл какой не нашёл. 


Дополнено 2 минуты спустя

есть ещё идея выдача поршня через непися с добавлением записи в энциклопедию но хотелось бы реализовать первый вариант потому что показалось что он проще

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Pavel2000 actor_binder:on_item_take отличное место, как по мне. Чтобы не "портить многострочием" (не перегружать) сам код в bind_stalker, вставить здесь вызов уже своего скрипта, типа mod_encyclopedy.check_info(obj)
А уже там, в mod_enciclopedy.script сделать:
1) в начале таблицу

info_by_section = {
  sect1 = info1,
  sect2 = info2,
  -- ...
  sectN = infoN,
}

2) обработчик

function check_info(obj)
  if not obj then return end
  local info = info_by_section[obj.section and obj:section() or obj.section_name and obj:section_name()]
  if not info then return end
  if not has_alife_info(info) then
    give_info(info)
    -- log(string.format("info %s given", info))
  end
end

 


Дополнено 14 минуты спустя
1 час назад, Pavel2000 сказал:

в интернетах прочитал что много лишнего лучше в bind_stalker.script не добавлять (типо это постоянные проверки и они будут грузить игру).

on_item_take вызывается крайне редко (за исключением массового сбора хабара по лутанию тела или тайника), и здесь этого опасаться не нужно

  • Лайк 1

Я логи в баню удалил, а вот за за рейдеры – не помню!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

BarmaGlot как вызвать скрипт я понял но дальше моя бошка не соображает куда прописывать ади объектов и как выдаётся нужный поршень, можно пожалуйста по подробнее разжевать что находится в отдельном скрипте 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Pavel2000 Чтоб было понятнее, напишите несколько секций своих артов и несколько инфопоршней, им соответствующих


Я логи в баню удалил, а вот за за рейдеры – не помню!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

BarmaGlot  af_bat, af_fire_loop, af_fountain (арты)

 st_af_1, st_af_2, st_af_3 (поршни)       

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
info_by_section = {
  af_bat = st_af_1,
  af_fire_loop = st_af_2,
  af_fountain = st_af_3,
}

Однако, замечу, что st_af_N по виду скорее айди какой-то строки. Инфопоршни принято мнемонически кодировать ОСМЫСЛЕННО (за редким исключением). Я бы переврал ваши инфопоршни как info_af_bat, info_af_fire_loop, info_af_fountain

upd: Айдишники строк, кстати, тоже принято осмысленно обзывать.

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

Я логи в баню удалил, а вот за за рейдеры – не помню!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
48 минут назад, BarmaGlot сказал:

2) обработчик


function check_info(obj)
  if not obj then return end
  local info = info_by_section[obj.section and obj:section() or obj.section_name and obj:section_name()]
  if not info then return end
  if not has_alife_info(info) then
    give_info(info)
    -- log(string.format("info %s given", info))
  end
end

 

А обработчик так и оставить получается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу