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

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


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

ihatetoregister, в ЗП логика персонажам (которые включены в сквады) подключается через конфиги смарт-террейнов в секции [exclusive], где задаются секции логики и ссылки на них в конфиг-файлах. Конфиги с логикой обычно лежат в gamedata\configs\scripts\локация. Всю эту информацию можно было найти и на сталкервики и здесь.
Ссылка на комментарий

Кто подскажет, как заспавнить сквад через скрипт, только не пишите через функцию create.

К Богу не доходят ваши молитвы, так как, они похожи на спам!

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

Народ, подскажите. Сделал абсолютно новую модель арта, вставил в игру, а когда выбрасываю из рюкзака, то модель не видно. Что делать?

 

Добавлено через 1 мин.:

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

AWRP : Re - Load 0.2 ©

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

Аномальный, а чем не устраивает стандартная функция create_squad в xr_effects?

Akella-96 aka SvD, ну в ЗП вообще арты нужно детектором засвечивать, чтобы они появились. На сталкервики есть статья, как новый арт регистрировать, дабы детекторами засвечивался.

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

Clayman, наведи пример скрипта, может что неправильно описал, пробовал, но она у меня не работает. И можно ли как-то бес заморочёк переупаковывания, скриптово проверить наличие определённого количества патронов у ГГ, а потом передать его НПЦ?

Изменено пользователем Аномальный

К Богу не доходят ваши молитвы, так как, они похожи на спам!

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

Парни, мне не трудно, но что мешало самим поискать на сталкервики??

Akella-96 aka SvD, тебе сюда.

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

 

 

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

Clayman, звеняй за назойливость, но что-то никак не выходит.

Функция спавна, не в xr_effects.script, в новом файле, вызывается через диалог.

function create_fox_squad()

=create_squad(zat_gen_provodnik_squad:zat_b7)

end

Пробывал и бес равно, и такую форму писал xr_effects.create_squad

Зарегистрированный сквад:

[zat_gen_provodnik_squad]:online_offline_group

faction = stalker

sympathy = 1

npc = zat_gen_provodnik

target_smart = zat_b7

spawn_point = zat_b7_stalker_raider_1_attack_walk

story_id = zat_gen_provodnik_squad

При инициализации скрипта выбрасывает с таким логом:

stack trace:

001B:0235105B lua.JIT.1.1.4.dll

 

Через такую функцию, всё работает нормально

function create_fox_squad()

alife():create("zat_gen_provodnik",vector():set(0.317,-0.441,42.258),944008,19)

end

единственное что бес таргета он не подхватывает логику смарттерраинов. Я знаю что логику нпц можно прописать и кастомдате. Но в данном случае это не совсем подходит.

Ты сам пробовал пользоваться функцией create_squad?

 

 

К Богу не доходят ваши молитвы, так как, они похожи на спам!

Ссылка на комментарий
Аномальный, да, я этой функцией пользовался, все работает как надо. Да и еще, ты не забыл, что в смарте должен быть вей-поинт спавна, прописанный в конфиге смарта?
Ссылка на комментарий

Clayman, как видишь использую оригинальный смарт, пробывал и zat_b7_spawn_point в скваде прописывать, просто каето чертовщина. Ну да ладно вот столкнулся ещё с такой несуразицой. Диалог как диалог, обычная проверочка на наличие предмета, а при попытки поговорить вот такая лажа, и лог понятный, но и вродь всё правильно:

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 : ...- Зов Припяти\gamedata\scripts\dialogs_barter.script:48: attempt to compare number with userdata

stack trace:

Часть скрипта на которую ругается лог:

function actor_has_conserva_x2(first_speaker, second_speaker)

return db.actor:object("conserva") >= 2 --48 строка.

end

Проверка как положено стоит в диалоге ГГ. Предыдущая проверка на наличие автомата проходит нормально(идет проверка на наличиее 7 предметов с вариаций которые есть у ГГ сплывают дальнейшые варианты, каждый вид предметов отдельная линия), а вот тут просто лажа, что уже не подставлял.

В чём может быть причина? Правда грешок, новую игру не начинал, но сейв загружаю ещё до спавна НПЦ, обнуление структуры диалогов вродь проходит на все изменения реагируют, но вот эту проверочку ну не как не хочет, уже несколько раз и предметы проверки менял и сам скрипт переписовал и в другой файл его выносил.

В общем, спасибо за помощь ранее и за дальнейшую!

 

 

К Богу не доходят ваши молитвы, так как, они похожи на спам!

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

Аномальный, вот ты когда статьи читаешь, ты их читаешь? По поводу спавна сквада, цитирую со сталкервики:

!ВНИМАНИЕ! Эта функция создаст сквад только в том случае, если в настройках смарт террейна указана точка way, в которой мы должны спаунить отряд.

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

 

По поводу скриптов я не спец, пусть знающие люди напишут, но вроде такая проверка return db.actor:object("conserva") должна возвращать true или false, а не количество.

 

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

Дополню (поправлю) Clayman'а:

Применение метода db.actor:object("conserva") - возвращает об'ект (консервы, первой попавшейся в рюкзаке актора), а не кол-во банок (иль булево значение).

Т.о. сравнение об'екта с числом и приводит к фатальной ошибке.

 

Аномальный

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

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Это стандартная функция на проверку истинности выражения. То есть, если выражение истинное, то оно создает условное тру (в моём случае, если в базе актёра 2-е или больше консервы, то оно истинное) и условие прекондишина выполняется, или наоборот. Не какие расчётов там не видётся, по скобкам видно, что берём стринговское название обьекта находим его db.actor и смотрим есть ли оно или нет, если да то проверяем количество на истину.

Изменено пользователем Аномальный

К Богу не доходят ваши молитвы, так как, они похожи на спам!

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

Аномальный, дальнейшие бездумные вопросы/утверждения будут удаляться, дабы не захламлять топик!

Тебе было сказано, что применяемый тобою метод возвращает об'ект (юзердату) и попытка сравнения с числом однозначно приводит к фатальной ошибке. Ни о какой тут проверки на истинность не может быть и речи.

 

Вот это: return db.actor:object("conserva") ~= nil - вернет булево значение: есть ли у актора хотя бы одна банка консервы. О каком-то кол-ве банок в данном случае также не может идти речь.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Ребят, как добавить в игру абсолютно нового монстра? Я его сделал на основе снорка, с его анимациями. Вот только в статистике монстр так же показывается снорком. Мне надо, чтобы монстр был со своей "аватаркой"

AWRP : Re - Load 0.2 ©

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

В скрипте pda.script после строк killed_monsters_tbl = допиши по аналогии с существующими свою ссылку на текстуру монстра, Добавляещь картиночку нового монстрика в textures/ui/ui_actor_monsters_pda_2.dds. Саму ссылку регестрируешь в configs/ui/textures_descr/ui_monsters_pda.xml.

Ещё такой вопросик, есть ли функция на получение группировки НПЦ?

 

Функция character_community, для объекта класса game_object, возвращает имя группировки (stalker, dolg, military и т.д.).

ColR_iT

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

К Богу не доходят ваши молитвы, так как, они похожи на спам!

Ссылка на комментарий
Аномальный, спасибо конечно, но мне нужен полный тутор. Про pda.script - я уже добавил, но монстр все равно отображается снорком.Он ведь у меня на классе снорка сделан.

AWRP : Re - Load 0.2 ©

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

Akella-96 aka SvD, вот урок с известного сайта по добавлению вырезанных монстров в статистику, возможно тебе это поможет:

 

Понадобятся следующие файлы из распакованной оригинальной игры:

 

Code

gamedata\scripts\_g.script

gamedata\scripts\class_registrator.script

gamedata\scripts\lua_help.s cript

gamedata\scripts\pda.script

gamedata\scripts\xr_conditions.script

gamedata\scripts\xr_sta tistic.script

gamedata\configs\ui\textures_descr\ui_monsters_pda.xml

gamedata\textures\ui\ui_actor_monsters_pd a_1.dds

gamedata\textures\ui\ui_actor_monsters_pda_1.thm

В файле _g.script раскоментировать строку:

 

 

Code

[clsid.zombie_s] = true,

после строки

 

 

Code

[clsid.gigant_s] = true,

Убедиться в наличии строки в файле class_registrator.script

 

 

Code

cs_register(object_factory, "CZombie", "se_monster.se_monster", "SM_ZOMBI", "zombie_s")

после

 

 

Code

cs_register(object_factory, "CPseudoGigant", "se_monster.se_monster", "SM_GIANT", "gigant_s")

Убедиться в наличии строк в файле lua_help.script

 

 

Code

const zombie = 38;

const zombie_s = 124;

в таблице C++ class clsid

 

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

 

 

Code

tushkano = {back = "ui_inGame2_Tushkan", icon = ""},

вставить строку

 

 

Code

zombie = {back = "ui_inGame2_Zombie", icon = ""},

В файл xr_conditions.script вставить функцию

 

 

Code

function is_monster_zombie(actor, npc)

return npc:clsid() == clsid.zombie_s

end

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

 

 

Code

[clsid.snork_s ] = "snork",

вставить

 

 

Code

[clsid.zombie_s ] = "zombie",

В файл ui_monsters_pda.xml в секцию

 

 

Code

<file name="ui\ui_actor_monsters_PDA_1">

...

</file>

вставить строку

 

 

Code

<texture id="ui_inGame2_Zombie" x="0" y="800" width="393" height="200" />

Отредактировать текстуру ui_actor_monsters_pda_1.dds вставив картинку монстра в

соответствующее место указанное в файле ui_monsters_pda.xml

 

Для того, чтобы зомби отличались по ранжиру, нужно ввести ранг для каждого вида зомби описанного в файле m_zombie.ltx, затем проверять ранг зомби в файле xr_statistic.script в функции function set_best_monster(obj) кодом типа

 

 

Code

elseif(community=="zombie") then

if(rank==6) then

community = community.."_strong"

else

community = community.."_weak"

end

 

Соответственно для каждого из видов зомби можно сделать свою картинку в файле pda.script

добавив

 

Code

zombie_strong = {back = "ui_inGame2_Zombie_1", icon = ""},

zombie_weak = {back = "ui_inGame2_Zombie_2", icon = ""},

 

и определив картинки для них в файле ui_monsters_pda.xml и отредактировав сами файлы текстур.

 

 

 

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

Clayman, я этот тутор пробовал. По - моему, он с SGM сайта. Вылет :

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ....А.Л.К.Е.Р. - Зов Припяти\gamedata\scripts\_g.script:555: table index is nil

 

Потрудись, если тебе нужно, задавать именно вопрос(ы), а не кидать в топик ... вот мол вылет.

И по данной "ошибке" (строкам лога) сотни раз давались ответы - воспользуйся поисковиками. --/Artos

[x]

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

AWRP : Re - Load 0.2 ©

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

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

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

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

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

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

Войти

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

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

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