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

[CoP] Ковыряемся в файлах


Halford

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

Всем привет, у меня вопрос: возможно ли с некоторым редактированием скриптов, НО без редактирования движка восстановить в ЗП тайники из ТЧ/ЧН?

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


Ссылка на сообщение

Перенес из ЧН "treasure_manager.script", отредактировал следующие скрипты:

bind_stalker

se_item

se_zones

xr_effects

xr_motivator

 

Из каких то удалил ссылки на несуществующие в новом-старом "treasure_manager.script" функции, в какие то добавил ссылки на функции из "treasure_manager.script"(из ЧН), на своей локации добавил "invertory_box" с названием "esc_treasure_1"...

Из ЧН взял следующие файлы, удалив кое-что лишнее:

treasure_manager.ltx

treasure_escape.ltx

 

В логику одного из спейс рестрикторов вписал следующее:

[logic]
active = sr_idle@start

[sr_idle@start]
on_actor_inside = sr_idle@nil %=give_treasure(esc_treasure_1)%

[sr_idle@nil]

 

Итак, игра запускается нормально, но при попытке сейва ловлю вылет

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ...\gamedata\scripts\treasure_manager.script:185: bad argument #1 to 'pairs' (table expected, got nil)

 

При попытке обыскать труп

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ...\gamedata\scripts\treasure_manager.script:111: bad argument #1 to 'pairs' (table expected, got nil)

И при входе в рестриктор

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ...\gamedata\scripts\treasure_manager.script:205: attempt to index global 'treasures' (a nil value)

 

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


Ссылка на сообщение

Как понимаю - что-то не правильно или чего то не хватает :(

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


Ссылка на сообщение
Цитата

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

Инвертори боксу нужно прописать стори айди - я правильно понимаю?

  • Согласен 1

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


Ссылка на сообщение

хах, у меня есть с этим делом успехи - отредактировал _g.script

в функцию "start_game_callback"

добавил отсылку:     treasure_manager.load_treasures()
 

Вылеты при сейвах прекратились :)

 

И новая проблема: в СДК своему инвертори боксу прописал стори айди, при входе в рестриктор вылет - самый обычный stacke trace :( с которым НЕ понятно в чем дело и что делать?

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


Ссылка на сообщение
8 часов назад, Rietmon сказал:

Обычно, такие вылеты бывают при сбои скриптов

отредактировал news_manager.script

Заменил функцию send_treasure на ЧНовский вариант

было

function send_treasure(param)
	local news_caption = ""
	if(param==0) then
		news_caption = game.translate_string("st_found_new_treasure")
	elseif(param==1) then
		news_caption = game.translate_string("st_got_treasure")
	elseif(param==2) then
		news_caption = game.translate_string("st_found_old_treasure")
	end

	if db.actor:is_talking() then
		db.actor:give_talk_message2(news_caption, "", "ui_inGame2_Polucheni_koordinaty_taynika", "iconed_answer_item")
	else
		db.actor:give_game_news(news_caption, "", "ui_inGame2_Polucheni_koordinaty_taynika", 0, 3000)
	end
end

стало

function send_treasure(name)
	local news_caption = game.translate_string("st_found_new_treasure")
	local news_text = game.translate_string(name)

	db.actor:give_game_news(news_caption, news_text, "ui_iconsTotal_found_thing", 0, 3000)
end

 

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


Ссылка на сообщение

Но все же осталась проблема - тайник не выдается :(

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


Ссылка на сообщение

BoBaH_671, 

Цитата

или же напрочь удалять ЗП варианты во всех местах

 Я так и делал - к чертям удалял ЗП варианты функций или заменял их ЧНовскими вариантами

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


Ссылка на сообщение

Создал новый предмет в configs\misc\quests_items.ltx

[pre_pda_marauder]:device_pda
$spawn 				= "quest_items\pre_pda_marauder"
inv_weight			= 0.05
description			= pre_pda_marauder_desc
inv_name			= pre_pda_marauder
inv_name_short			= pre_pda_marauder
cost 				= 0
quest_item     			= true

И прописал его НПС в character_desk

		<specific_character id="pre_marauder_corpse" team_default="1">
		<name>GENERATE_NAME_stalker</name>
		<icon>ui_inGame2_No_data</icon>
		<map_icon x="1" y="0">
		</map_icon>
		<bio>ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.</bio>
		<class>pre_marauder_corpse</class>
		<community>marauder</community>
		<terrain_sect>stalker_terrain</terrain_sect>
		<snd_config>characters_voice\human_02\stalker\</snd_config>
		<rank>60</rank>
		<reputation>0</reputation>
		<money min="2217" max="5000" infinitive="1" />
		<visual>actors\marauder\marauder_1_1</visual>

		<supplies>
      [spawn] \n
	  pre_pda_marauder = 1 \n
	  
#include "gameplay\character_criticals_4.xml"
#include "gameplay\character_drugs.xml"
    </supplies>

 

С этим же принципом создал еще несколько предметов и роздал их неписям, но вот проблема:

Новые предметы почему-то не появляются у этих НПС, почему?

Платформа: ЗП

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

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


Ссылка на сообщение

@WinCap, так и должно быть... 

В офлайне НПС не проигрывают анимаций и не юзают моделей и двигаются только по graph_point'ам :happy:

 

 

@WinCap точно не знаю, но по-моему ему можно прописать какую-то функцию в логику - чтобы всегда был онлайн...

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


Ссылка на сообщение

Создаю новые анимации для smart_cover, прописал их в следующих файлах:

smart_covers.script

state_lib_animpoint.script

state_mgr_animation_list_animpoint.script

xr_animpoint_predicates.script

 

добавил файлы:

smart_covers_animpoint_sit_ass.script

smart_covers_loophole_animpoint_sit_ass.script

 

Поставил smart_caver с новыми анимациями в СДК и получил такую ошибку 

 visual [actors\stalker_neutral\stalker_neutral_1] has no animation [loophole_animpoint_sit_ass_visual]

 

В игре вылет:

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ...ÒÊÀ ÌÎÄÀ\gamedata\scripts\state_mgr_animation.script:248: attempt to index local 'state' (a nil value)

 

 

Надеюсь здесь есть знающие люди )))

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


Ссылка на сообщение

@warwer

Цитата

для smart_cover

Я использую старые анимации, которые уже имеются в stalker_animation.omf/stalker_script_animation.omf

Просто задействую их для smart_cover )))

 

Цитата

прописал их в следующих файлах:
smart_covers.script
state_lib_animpoint.script
state_mgr_animation_list_animpoint.script
xr_animpoint_predicates.script
 
добавил файлы:
smart_covers_animpoint_sit_ass.script
smart_covers_loophole_animpoint_sit_ass.script

Я просто хочу знать - нужно еще где-то прописывать? Если нет, то скорее всего я накосячил в каком-то(каких-то) из этих файлов ))

 

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


Ссылка на сообщение

@warwer, Спасибо )))

Я уже решил проблему, нужно было smart_cover прописать в еще одном файле: state_mgr_animstate_list_animpoint.script

Вылет в игре решен )))

Хотя в СДК остается проблема, но это не так важно :)

Цитата

 visual [actors\stalker_neutral\stalker_neutral_1] has no animation [loophole_animpoint_sit_ass_visual]

 

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


Ссылка на сообщение

@Overfirst, да, последствий нет...

 

Новая проблема: задействовал анимации "сидения у костра а-ля ТЧ/ЧН" в smart_cover'е, чтобы НПС могли могли есть\пить\рассказывать анекдоты\играть на муз.инструментах...

Проблемы с реализацией(посты выше) я решил...

 

Осталась проблема с игрой на гитаре:

По дефолту: НПС играет на гитаре как на гуслях(подобное наблюдается в моде Call of Chernobyl)

8c182b76ed86352c4500d17a98e52228.jpeg

 

;Секция гитары
[guitar_a]:identity_immunities
GroupControlSection		= spawn_group
discovery_dependency	=
$spawn					= "food and drugs\guitar_a"
cform                   = skeleton
class					= II_ATTCH
visual                  = dynamics\devices\dev_guitar\dev_guitar.ogf
cost					= 35
inv_name				= st_guitar_name
inv_name_short			= st_guitar_name
description				= st_guitar_descr
inv_weight				= 1.5
inv_grid_width			= 4
inv_grid_height			= 2
inv_grid_x				= 10
inv_grid_y				= 19

attach_angle_offset		= -0.415, -1.262, 0.808 ;одно из причинных мест - расположение предмета
attach_position_offset	= -0.014, 0.010, 0.020 ;одно из причинных мест  - расположение предмета

attach_bone_name		= bip01_l_hand
auto_attach				= false

заменил значения этих строк на вариант из ТЧ:

attach_angle_offset		= -1.651084, -1.341824, 1.200789
attach_position_offset	= 0.077492, -0.030020, 0.090059

Теперь все нормально:6ea3532a0fdba3d54e57ef4e6e7cd0d0.jpeg

За то теперь "как на гулях" играют оригинальные smart_cover'ы ((

для новых smart_cover'ов создал новую гитару("guitar" - такую же, но со значениями из ТЧ) и прописал ее в всех найденных  по аналогии со старой("guitar_a"), в том числе и в спаун НПС

 

3ecf96605c0bb89313eae2a3a90f63dd.jpeg

Теперь еще круче - НПС играет "с воздухом" ))) возможно просто у НПС нет гитары... Нет, есть, проверил на 100 раз, просто с какого-то фига она у него не появляется в руках...

 

Может кто-нибудь сталкивался с этим?

Изменено пользователем Metro_Rus
кое-что недописал))

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


Ссылка на сообщение

Где нужно еще прописывать гитару, кроме файлов:

configs\misc\items.ltx(сама гитара - guitar)

configs\misc\trade\trade_generic.ltx(чтобы НПС не могли продать guitar)

configs\gameplay\character_items_...(спаун guitar к НПС)

scripts\death_manager.script (возможно, чтобы guitar не спаунился в рюкзаках после гибели НПС)

 

Может быть работа "guitar_a" для smart_cover'ов прописана в движке(или прилагающихся к нему файлах .dll)? 

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


Ссылка на сообщение

Думается мне - какая может произойти проблема в Сталкере в 2k18 году? Да вот какая:

Игра вообще не запускается по непонятным причинам, просто окно загрузки движка и пустой лог без ошибок :dash2::mebiro_01:

 

Шо делать? Допоможiть мне, ради всего святого, пожалуйста)

 

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

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


Ссылка на сообщение

@Regular Stalker, Как и любой другой, но только в "Диск":\X-Ray SDK\editors\rawdata\levels\"декомпилированный уровень"\ удаляй файлы:

light.part - если уровень из билдов 2ххх до финалки, то можно не удалять

spawn.part - можно не удалять. Если будут вылеты при загрузке локации, то стоит удалить

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


Ссылка на сообщение

@WizziGun

[walker@go]
!не walk_path, а path_walk и где path_look(точка куда должен смотреть НПС)?
path_walk = jup_a6_yar_go - вырежи имя смарта, не jup_a6_yar_go, а просто yar_go

 

  • Спасибо 1

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


Ссылка на сообщение

@WizziGun

[walker@go]
path_walk = yar_go_walk
path_look = yar_go_look
use_camp = false
meet = meet
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = true
gather_items_enabled = false
help_wounded_enabled = false
corpse_detection_enabled = false
wounded = wounded

PS сюда еще можно добавить анимации, к примеру

def_state_standing = "название анимации" - "стоячая" анимация 
def_state_moving = "название анимации" - анимация ходьбы 

Нет, любой walker должен иметь path_look

Секция wounded здесь не делает же его раненым?

 

 

ps Просто чтобы ты знал: если какой либо НПС привязан к смарту, то в спавне имя его пути должно выглядеть примерно так ("имя смарта".."имя пути+walk\look"). В логике, в path_walk\look имя смарта писать не нужно. Просто ("имя пути+walk\look"). А вот если НПС заспавнен не через смарт, тогда с названиями путей можно не заморачиваться - если имя пути значится в спавне как gar_dolg_post_commander_walk, то и в логике нужно писать полностью gar_dolg_post_commander_walk

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

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


Ссылка на сообщение

@WizziGun

Скрытый текст

[yar_go]
points = p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23
p0:name = wp00
p0:flags = 0x1
p0:position = -47.135345458984,3.4870493412018,207.82391357422
p0:game_vertex_id = 332
p0:level_vertex_id = 639090
p0:links = p1(1)

 

p1:name = wp01
p1:flags = 0x1
p1:position = -50.213188171387,3.4880442619324,205.15490722656
p1:game_vertex_id = 332
p1:level_vertex_id = 633251
p1:links = p2(1)

 

p2:name = wp02 
p2:flags = 0x1
p2:position = -50.223976135254,3.4883139133453,198.25973510742
p2:game_vertex_id = 332
p2:level_vertex_id = 633234
p2:links = p3(1)

 

...

 

[yar_go_look]
points = p0
p0:name = wp00
p0:flags = 0x1
p0:position = 467.41107177734,-5.3287630081177,-16.178440093994
p0:game_vertex_id = 529
p0:level_vertex_id = 1450702

Уатта фак!

Я не удивлен что у тебя происходит вылет. Ты спавнишь через редактирование all.spawn? Я раньше думал, что этот способ спавна остался в 2008;)

Настоятельно рекомендую работать в X-Ray SDK LE - это скорее всего решит проблему

 

[yar_go]
points = p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23

Насколько я вижу - yar_go это путь, поэтому здесь особо не нужен look, либо он должен соответствовать пути walk

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

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


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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