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

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

 
 
В 22.03.2025 в 11:48, denis2000 сказал:

Ну так я писал метод - squad:register_member(npc_id), только объект squad уже другой, можно новый создать или любой существующий.

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

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


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

denis2000 как называется файл с травой, level.ai? 

  • Дурка 1

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


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

как называется файл с травой

https://ap-pro.ru/forums/topic/92-cop-modostroy-voprosnica/?do=findComment&comment=442088

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


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

Mawrak Собственно спавн осуществляется всего одной командой alife():create() (двумя если считать патроны):
squad = alife():create(squad_name, spawn_position, spawn_level_vertex, spawn_game_vertex)                 


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

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


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

denis2000 так оно все равно требует готовый сквад, команда работает по секции. Мне же нужен пустой, чтобы туда НПС добавить.


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

Или мне достаточно просто указать npc_in_squad = 0? Я попробую...

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


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

Mawrak Достаточно:

[squad_id]:online_offline_group
faction = ...

 

  • Спасибо 1

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

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


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

Используемый движок "OpenXRay 16".

Столкнулся с такой проблемой, хочу добавить новую вкладку в КПК (например, "Карта местности", "Статистика" и "История сообщений") , нашел файл, который отвечает за прорисовку вкладок (не контент вкладок, а только саму кнопку) - "configs/ui/pda.xml". 

Спойлер

<tab x="338" y="57" width="338" height="27">
  <button x="1" y="0" width="137" height="27" id="eptTasks" hint="pda_btn_quests_hint" frame_mode="0">
    <text align="c" vert_align="c" x="0" y="0" width="157" height="27" font="letterica16">pda_btn_quests</text>
    <texture>ui_inGame2_pda_button</texture>
    <text_color>
      <t r="255" g="255" b="255"/>
      <d r="255" g="255" b="255"/>
      <e r="200" g="200" b="200"/>
      <h r="170" g="170" b="170"/>
    </text_color>
  </button>
  <button x="118" y="0" width="137" height="27" id="eptRanking" hint="pda_btn_ranking_hint" frame_mode="0">
    <text align="c" vert_align="c" x="0" y="0" font="letterica16">pda_btn_ranking</text>
    <texture>ui_inGame2_pda_button</texture>
    <text_color>
      <t r="255" g="255" b="255"/>
      <d r="255" g="255" b="255"/>
      <e r="200" g="200" b="200"/>
      <h r="170" g="170" b="170"/>
    </text_color>
  </button>
  <button x="236" y="0" width="137" height="27" id="eptLogs" hint="pda_btn_logs_hint" frame_mode="0">
    <text align="c" vert_align="c" x="0" y="0" font="letterica16">pda_btn_logs</text>
    <texture>ui_inGame2_pda_button</texture>
    <text_color>
      <t r="255" g="255" b="255"/>
      <d r="255" g="255" b="255"/>
      <e r="200" g="200" b="200"/>
      <h r="170" g="170" b="170"/>
    </text_color>
  </button>
</tab>

 

Добавил новую вкладку, но файл, который прорисовывает контент, нигде нет. Попробовал поискать, где находяться вызовы для отрисовки вкладок, нашел их в исходнике движка (UIPdaWnd.cpp). Они жестко захардкожены. Не хочется пока лезть в дебри, хочу поискать иные решения.

Спойлер

spacer.png

Как можно отрисовать контент новой вкладки КПК, взаимодействуя только с "gamedata"?

Изменено пользователем oyunsky
Добавил демонстрацию вкладок

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


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

oyunsky глянь, привязана ли функция pda.set_active_subdialog к списку вкладок, прописанных в движке, или сделали возможность их задавать без правок (поиском по исходникам найдешь). Вроде как раньше в ней можно было скриптом отрисовывать только со списка, но может быть поменяли, не следил особо

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

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


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

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

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


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

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


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

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


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

denis2000 каких ассетов и где эта отдельная тема. Я пытался найти но не могу. Как вы себе это представляете. "Как объектов скелета для СДК 0.7"?

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


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

каких ассетов

Самых разных: бесплатных и нет, с текстурами и без, в разном качестве и формате.

2 часа назад, RomaL23 сказал:

где эта отдельная тема

Ссылка в моем посте, смотрите внимательнее. Оставьте запрос там и ждите, может у кого и найдется...

2 часа назад, RomaL23 сказал:

Я пытался найти но не могу. Как вы себе это представляете.

Правильно стройте запрос, например "Pack 3D models". Я когда делал сталкера-скелета, брал модель отсюда.
Естественно в паках модели для 3D редакторов сразу готовитесь работать в таких программах! Если не найдете нужную берете из игры открываете в 3D редакторе и правите как душе угодно.

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

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

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


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

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

Спойлер

[logic]
active = ph_code@lock

[ph_code@lock]
tips = esc_secret_box
code = 1111
on_code = ph_idle@open

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

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


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

Boomer 

В 22.01.2024 в 19:47, makdm сказал:

В файле ph_code.script после строки

function codepad:update(delta)

Добавь строку

if xr_logic.try_switch_to_another_section(self.object, self.st, db.actor) then
     return

Должно получиться так:

  Функция (Скрыть контент)

function codepad:update(delta)
if xr_logic.try_switch_to_another_section(self.object, self.st, db.actor) then
     return
 end
end

Дальше:

После строки if self.st.on_code then

строку 

xr_logic.pick_section_from_condlist(db.actor, self.object, self.st.on_code.condlist)

Меняете на

local condlist = xr_logic.pick_section_from_condlist( db.actor, self.object, self.st.on_code.condlist )
                xr_logic.switch_to_section( self.object, self.st.ini, condlist )

После этих манипуляций, переключения с секции на секцию в логике ящика в схеме ph_code должны работать правильно.

 

  • Мастер! 1
  • Спасибо 1

 1540412914_ezgif.com-optimize(1).gif.ec7250e918399802d8fe85d6d4fd7081.gif

«Если долго мучиться, что-нибудь получится»
Охотник за артефактами

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


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

Ящик с паролем это несерьёзно, возьмите лашные сейфы.


Дополнено 8 минуты спустя
20 часов назад, denis2000 сказал:

смотрите внимательнее

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

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


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

Expression    : fatal error
Function      : CInifile::r_string
File          : C:\Users\User\Desktop\ixray-1.6-stcop-r1.1.1\src\xrCore\Xr_ini.cpp
Line          : 591
Description   : <no expression>
Arguments     : Can't find variable immunities_sect in [ammo_11.43x23_fmj]

stack tra Ошибка при запуске новой игры Мод- Билет в Один конец , помогите решить.

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


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

Здравствуйте. Есть вопрос: существует в игре ли проверка на наличие артефакта в слоте? 

Изменено пользователем Крим

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


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

Крим Такой механизм был сделан в моде Связь Времен (скрипт belt_items.script).

  • Хабар 1
  • Спасибо 1

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

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


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

@MortyRodrigez 
зайди в gamedata\configs\weapons\weapons.ltx
и попробуй в секции твоих патронов [ammo_11.43x23_fmj]
всё поменять на этот код и запустить игру

Спойлер

;;;;_EroZoneR_edition;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[ammo_11.43x23_fmj]:ammo_base
GroupControlSection    = spawn_group
discovery_dependency =
$spawn            = "weapons\ammo\ammo_11.43x23_fmj" ; option for Level Editor
class            = AMMO
cform           = skeleton
visual          = dynamics\weapons\wpn_ammo\ammo_1143x23_fmj.ogf
description        = ammo-11.43x23-fmj_descr
$prefetch         = 64

cost            = 250

box_size        = 50    ;20

inv_name        = ammo-11.43x23-fmj
inv_name_short    = ammo-11.43x23-fmj_s
inv_weight        = .3

inv_grid_width    = 2;1
inv_grid_height    = 1
inv_grid_x        = 9
inv_grid_y        = 12

k_dist            = 1
k_disp            = 1
k_hit            = 1
k_impulse        = 1
k_pierce        = 0.1
k_ap            = 0.1
impair            = 1
buck_shot        = 1
tracer            = off
wm_size         = 0.05

если что-то не получается, можешь мне отписать в лс или в телеграм @pomrgite_mne

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


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

Почему нпс с логикой guard не хотят реагировать на новое оружие? Куда копать нужно?

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 27.03.2025 в 19:31, denis2000 сказал:

Mawrak Достаточно:


[squad_id]:online_offline_group
faction = ...

 

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

Во-первых, я ловил такой вылет:

FATAL ERROR
 
[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : ...all of pripyat\gamedata\scripts\xr_reach_task.script:181: attempt to index local 'commander' (a nil value)


stack trace:

При том в самом этом скрипте xr_reach_task строчкой ранее есть проверка на наличие commander, и она проходит каким-то образом...

    local commander = level.object_by_id(self.npc_list[self.commander_id].soldier)
    if commander == nil then
        abort("commander is nil!!!")
    end
    local dir = commander:direction() --это строчка 181, которая вылетает

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

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

Спойлер

	local ltx_name = "scripts\\lwcop_companion.ltx"
	local ltx = ini_file(ltx_name)
    local npc = who_is_npc(first_speaker, second_speaker)
	local id = npc:id()
	local sim = alife()
	local se_npc = sim:object(id)
    
	local unreg_id = se_npc and se_npc.m_smart_terrain_id
	if (unreg_id and unreg_id ~= 65535) then
		local unreg = sim:object(unreg_id)
		if (unreg) then
			unreg:unregister_npc(se_npc)
		end
	end
	
    xr_logic.configure_schemes(npc, ltx, ltx_name, modules.stype_stalker, "logic", "")
    

	local section = xr_logic.determine_section_to_activate(npc, ltx, "logic", db.actor)
	xr_logic.activate_by_section(npc, ltx, section, "", false)
    
    local squad = get_object_squad(npc)
    squad:unregister_member(id)

    sim:set_switch_online (npc.id, true)
    sim:set_switch_offline (npc.id, false)

 

То есть я снимаю сталкера с работы, назначаю ему свою секцию логики через ltx файл, потом отсоединяю от сквада и заставляю быть всегда онлайн (для простоты работы с логикой companion).

А во втором диалоге, для возвращения сталкера в нормальное состояние, я спавню новый сквад как мы обсуждали и прикрепляю к нему сталкера через squad_2:register_member(id), также делают sim:set_switch_offline (npc.id, true) обратно:

Спойлер

    local squad_2 = alife():create("simulation_lwcop",db.actor:position(),
							db.actor:level_vertex_id(),
							db.actor:game_vertex_id())
    local id = npc:id()
   
    local sim = alife()
    sim:set_switch_online (npc.id, true)
    sim:set_switch_offline (npc.id, true)

    squad_2:register_member(id)

 

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

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

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


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

Mawrak 

В помощь xr_effects.script, function create_squad и create_squad_member

  • Спасибо 1

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


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

Yara черт ногу сломит в этих функциях, если честно, но я попробую разобраться. Только не очень понятно, какие там смарты указывать, так как в момент диалога смартов нет - челик бежит за ГГ по всей локации и идея в том, что дальше его сама симуляция должна подхватить и выбрать на какой смарт идти. А все эти функции кажется хотят чтобы смарты были изначально.

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


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

Mawrak 

Ещё есть в sim_board.script, function sim_board:assign_squad_to_smart

    if smart_id == nil then
		squad:assign_smart(nil)
		return
    end

 

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


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

Напомню, что делаю систему, где рандомный сталкер может стать фолловером.

Так если НПС должен следовать за ГГ, зачем ему назначать сквад? В SGM есть фича с напарниками, в Пути во мгле тоже есть и там и там они вполне могут работать с НПС вне сквада.


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

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


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

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

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

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

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

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

Войти

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

Войти

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

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