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

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


Halford

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

 

 


Так написано-же - в скрипте xr_logic в 126-й строке локальная переменная st равна nil. Открывай в редакторе, который показывает нумерацию строк, ищи 126-ю и гляди че там за nil получился. В оригинальном ТЧ эта строка находится в ф-ции configure_schemes, значит глюк связан с гулагами\логикой НПСов.

В том-то и дело, что на локации заспавнены только монстры. И логика, которую всегда прописывал, и везде работала без вылетов. То, что переменная st равна nil - это я понял. Но в скриптах не силен.

Сталкер - наше всё!

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


Ссылка на сообщение
(изменено)

Добавь перед строкой "-- если какая-то схема была до этого активна, деактивировать её" вывод npc:id() в лог, будешь знать какой перс конкретно виноват.

А что написать-то нужно? Приведи примерчик, если несложно. Просто я ж еще только учусь (с). А монстры да, под своими гулагами были, под схемой mob_home.

 

 

@Хемуль36рус, А вот не эта, случаем?

 

name = door_100x190_01_0000

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

Сталкер - наше всё!

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


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

Привет всем. Мод на базе ТЧ с маппаком локаций от Кости. В Лиманске (и только в нем) сухие кусты, которые без листьев, непроходимы в принципе. Сквозь них нельзя пройти, как будто на клипбраш натыкаешься. Соответственно, они и не простреливаются. В чем может быть причина?

Сталкер - наше всё!

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


Ссылка на сообщение
(изменено)

Еще вопрос. Заспавнил монолитовцев. Обычные - под гулагом, вот логика

[logic@limansk_radiowave_post_walker1]

active = walker1@limansk_radiowave_post

 

[walker1@limansk_radiowave_post]

path_walk = post1_walk

path_look = post1_look

 

 

 

Они нормально себя ведут, воюют и пр.

 

Отдельно заспавнил их командира, без гулага, без смарт-террейна. Логика в all.spawn

[logic]

active = walker

 

[walker]

path_walk = limans_building_monolit_commander_walk

path_look = limans_building_monolit_commander_look

 

 

 

Так он зараза такая, хоть и враг, а не воюет, к нему можно подойти в упор. Почему, что в логике не так, мож не дописал чего?

 

ищи патчи к сборке локаций в теме мап-пака. Там это всё пофиксено.

Буду премного благодарен за ссылку.

 

AndrewSol,

да, это вся логика

 

Что за файл в распакованном all.spawn (версия uACDC 1.35) - way__level_unknown.ltx

Присоединяюсь к вопросу.

 

AndreySol,

по логике монолитовца вопрос снимается. В вей- и лукпойнтах не хватало одной буковки, поэтому он тупо стоял на месте и ни на что не реагировал.

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

Сталкер - наше всё!

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


Ссылка на сообщение
(изменено)
тополиный пух и другие аномалии с анимированными визуалами

А какие это другие аномалии? Все остальные или какие конкретно с анимацией? Ведь та же электра легко активируется любым артом, ею порождаемым. Или я чего-то не понимаю?

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

Сталкер - наше всё!

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


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

 

 

Подозреваю, что ты о партикле, менять надо direction партикла, он в стейт части.

Именно, я так жарки горизонтальные делал. Меняешь координату по оси X или Y и будет тебе счастье.

Сталкер - наше всё!

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


Ссылка на сообщение
(изменено)

Max124tipaciferki1, в direction координаты прописываются в виде (x, y, z). Ты вращаешь аномалию по игреку, по вертикальной оси. Я же тебе писал - вращай по икс или зет.

 

Возникла проблема.

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

<dialog id="german_first_dialog">

<has_info>go_to_german</has_info>

<dont_has_info>german_first_talk</dont_has_info>

<phrase_list>

<phrase id="0">

<text>german_first_dialog_0</text>

<next>1</next>

</phrase>

<phrase id="1">

<text>german_first_dialog_1</text>

<next>2</next>

</phrase>

<phrase id="2">

<text>german_first_dialog_2</text>

<next>3</next>

</phrase>

<phrase id="3">

<text>german_first_dialog_3</text>

<next>4</next>

</phrase>

<phrase id="4">

<text>german_first_dialog_4</text>

<next>5</next>

</phrase>

<phrase id="5">

<text>german_first_dialog_5</text>

<next>6</next>

</phrase>

<phrase id="6">

<text>german_first_dialog_6</text>

<next>7</next>

</phrase>

<phrase id="7">

<text>german_first_dialog_7</text>

<next>8</next>

</phrase>

<phrase id="8">

<text>german_first_dialog_8</text>

<next>9</next>

</phrase>

<phrase id="9">

<text>german_first_dialog_9</text>

<next>10</next>

</phrase>

<phrase id="10">

<text>german_first_dialog_10</text>

<next>101</next>

<next>102</next>

</phrase>

<phrase id="101">

<text>german_first_dialog_101</text>

<next>11</next>

</phrase>

<phrase id="11">

<text>german_first_dialog_11</text>

<action>jupiter_dialog.german_give_equipment</action>

<next>12</next>

</phrase>

<phrase id="12">

<text>german_first_dialog_12</text>

<give_info>german_first_talk</give_info>

<action>dialogs.break_dialog</action>

</phrase>

<phrase id="102">

<text>german_first_dialog_102</text>

<action>dialogs.break_dialog</action>

</phrase>

</phrase_list>

</dialog>

 

Функция из jupiter_dialog.script

function german_give_equipment(first_speaker, second_speaker)

dialogs.relocate_item_section(first_speaker, "ammo_5.45x39_ap", "in")

dialogs.relocate_item_section(first_speaker, "ammo_5.45x39_ap", "in")

dialogs.relocate_item_section(first_speaker, "ammo_5.45x39_ap", "in")

dialogs.relocate_item_section(first_speaker, "ammo_5.56x45_ap", "in")

dialogs.relocate_item_section(first_speaker, "ammo_5.56x45_ap", "in")

dialogs.relocate_item_section(first_speaker, "ammo_5.56x45_ap", "in")

dialogs.relocate_item_section(first_speaker, "ammo_9x39_ap", "in")

dialogs.relocate_item_section(first_speaker, "ammo_9x39_ap", "in")

dialogs.relocate_item_section(first_speaker, "ammo_9x39_ap", "in")

dialogs.relocate_item_section(first_speaker, "medkit_scientic", "in")

dialogs.relocate_item_section(first_speaker, "medkit_scientic", "in")

dialogs.relocate_item_section(first_speaker, "medkit_scientic", "in")

end

 

Также не работает и другая, если ее прописать в эту функцию

first_speaker:set_relation(game_object.friend, second_speaker)

 

Сразу повторю, что поначалу они РАБОТАЛИ. Отчего такое молго быть?

 

 

Проблема с невызовом функций из диалогов решилась. Оказывается, в имени функции нужно было убрать дефис.

 

О, опять старые древние заслуженные грабли ! Минусы, плюсы и прочая псевдографика вообще ни где не должны быть, кроме как в файлах, лежащих в config\text\*, ну, максимум, в строках, которые выводятся непосредственно из скриптов без всяких преобразований. Имен файлов это тоже касается. dc

 

Еще вопрос ко всем, может, не в тему, а всё же: никто не в курсах, нет ли в каком моде к Сталкеру гаусс-пушки с измененным визуалом, не родным из чистой ТЧ?

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

Сталкер - наше всё!

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


Ссылка на сообщение
(изменено)

Иногда при выходе из игры возникает вылет:

stack trace:

 

001B:7C812FD3 kernel32.dll

001B:78158E89 MSVCR80.dll, EH_prolog()

001B:02BC6DA8 xrGame.dll

001B:02DE79DD xrGame.dll

 

 

 

С чем такое едят? И отчего возникает?

 

А выше показать ? dc

dc, лог стер, но выше было что-то типа cl destroy [какие-то цифры]. В меню нажимаешь "Выход в Windows" и на рабочем столе вдруг появляется окошко с жуком. Заметил только на одной локации и в момент, когда возле ГГ куча народу (31 чел). Если отойти от них подальше - никакого окна с жуком не появляется.

dc, вот приблизительно это

cl setDestroy [48869][37115]

cl setDestroy [48870][37115]

cl setDestroy [48871][37115]

cl setDestroy [48872][37115]

 

 

только числа другие наверно были.

 

@Dennis_Chikin, в общем, да. Раз на раз не приходится. Но ситуация с жуком возникла-то всего дважды...

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

Сталкер - наше всё!

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


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

@Музафир, тебе правильно ответили. Можно через смарт-террейн по выдаче поршня поменять местоположение НПС, правда, он может не дойти, если в онлайне его кто-нибудь скушает...

 

Пример - смарты на базе Свободы на АС. При выдаче поршня aes_arrive_to все свободовцы срываются в сторону Припяти, бывает, гибнут на подходах к Радару или на самом Радаре, бывает, до Припяти доходят...

 

Ну или спавнить дубля с аналогичным профилем. Пример - Круглов на Янтаре.

Сталкер - наше всё!

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


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

Кто подскажет, как выдрать из Солянки рюкзак, в котором можно хранить свои вещи? С чего начать?

 

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

 

Или проще: какая функция отвечает за спавн рюкзака и откуда ее вызывать?

Сталкер - наше всё!

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


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

@Kirgudu, В том-то и дело что в Солянке это было. Рюкзак покупается у торговца, как предмет и появляется в инвентаре. Но при его использовании он из инвентаря пропадает и спавнится под ногами ГГ как обычный рюкзак, т.е. инвентори_бокс.

Сталкер - наше всё!

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


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

 

 

"Еле совместил скрипты Солянки со своим модом."

Легкий оффтоп.

Не спорю, правда, я не скриптер. Скрипты надо учиться писать с легких, с нуля, тогда и самому будет нетрудно написать. А вот убивать на это обучение время - иногда просто жаль.

 

А вот еще вопросик: можно на этот самый рюкзак заспавненный метку на карте повесить? Дома покопаюсь, конечно, думаю, нетрудно это...

Сталкер - наше всё!

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


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

Привет всем!

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

Сталкер - наше всё!

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


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

 

 

Нормальный способ один, написать в конфиге предмета

Этот способ не подходит, потому что использовав предмет один раз и сохранившись, при загрузке сейва он будет использоваться опять три раза, а не два.


А как отловить появление предмета в инвентаре?

 

Dennis_Chikin

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

Сталкер - наше всё!

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


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

Появление предмета в инвентаре - это случаем не "function actor_binder:on_item_take (obj)" из bind_stalker.script?


 

 

Например, xr_logic.pstor_store(). Или в нетпакет.

То есть АМК-шные функции get_invbox_data и set_invbox_data надо пользовать? Или они работают только для инв. ящика?

Сталкер - наше всё!

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


Ссылка на сообщение
(изменено)

Повесил в бинд_сталкер вызов функции

function take_sigaret(pid)


if obj:section() = "имя_секции_предмета" then
-- что-то делаем
end
end

 

 

ловлю вылет. Наверно неправильно синтаксис пишу, но не знаю как правильно.

 

Ну и откуда здесь должен взяться obj ? А во-вторых, таки да, синтаксис. Идем на lua.org, берем компилятор, и проверяем им. Документация лежит там же. dc


Ну хоть вызов функции-то правильный?

ogsm_quests.take_sigaret(obj)

 


Вроде разобрался, но вот вопрос, правильно ли я сохраняю свою переменную?

function is_sigaret(npc, item)
local kolvo
local section = item:section()
if section == "sigaret" then
kolvo = 20
xr_logic.pstor_store(db.actor, kolvo, 20)
end
end

 

 

Просто с pstor ни разу не разбирался. Вылета нет, но как-то не по себе, не знаю, работает она или нет?

 

"но как-то не по себе" - и это - правильное ощущение. Разбираемся дальше. dc

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

Сталкер - наше всё!

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


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

 

 

Интересный вопрос. Есть два способа, первый и правильный перейти на шестой или седьмой патч, где есть методы, позволяющие получать и устанавливать максимально переносимый вес, да и вообще там много всего полезного

А можно по этому вопросу поподробнее, ибо я как раз и сижу на шестом патче?

 

И по поводу pstor - спасибо за ответ, я уже и сам разобрался.


@Wolkodav, Костер прекрасно спавнится через all.spawn. Нужны три секции с именами section_name = lights_hanging_lamp, section_name = space_restrictor, section_name = zone_flame_small с одинаковыми координатами. Но тебе правильно ответили, что бочку/дрова так не заспавнишь, это можно сделать именно в СДК.


@Anonim, насчет имен смарта и прочего - это все легко пишется вручную в файл way_имя_локации.ltx

Сталкер - наше всё!

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


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

 

 

В данном случае визуал самого костра ( "koster_negorit" ) - это камни по кругу, а внутри дровишки. У тебя может быть другой визуал, бочка, например.

А где такое вообще прописано, а именно - модель и текстуры?

 

; cse_visual properties
visual_name = objects\koster_negorit

В чистом ЗП - не нашел, может, из мода какого?

Сталкер - наше всё!

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


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

Просьба наставить на путь истинный. С чего начать, нужно написать скрипт, проверяющий наличие на локации конкретных видов мобов и конкретного количества НПС по группировкам. Нужно для написания скриптового респавна. Или может уже кто-то что-то такое придумал? Если так, где можно сие посмотреть?

Сталкер - наше всё!

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


Ссылка на сообщение
(изменено)

Сталкеры, а какой звуковой файл отвечает за звук шагов ГГ? Как называется и где лежит? Хотелось бы потише его сделать, в СДК это возможно?

 

Путь вроде нашел: sounds\material\actor\step. Но как можно уменьшить громкость всех файлов, что там лежат? Через СДК? Или есть какой другой способ?

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

Сталкер - наше всё!

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


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

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

AMK-Team.ru

×
×
  • Создать...