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

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


Halford

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

Здравствуйте. Возникла такая потребность - заспавнить монстров через скрипт. Как это сделать? А если поточнее - какое имя задать в функцию?

Ибо например для спавна сталкера можно всего лишь написать его имя из spawn_sections. А как быть с монстром? Заранее спасибо :)

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


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

Хм, появилась еще парочка вопросов, не знаю, туда ли я их задам, но все-таки:

Как сделать так, что бы сталкер после разговора умер;

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

Знаю что надо что-то прописывать в логике, а что точно - непонятно. Был бы очень признателен, если бы вы мне объяснили. Спасибо.

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


Ссылка на сообщение
Чтобы НПС умер после разговора достаточно вызвать для него: oNPC:kill(oNPC)

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

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

И последний вопрос и я от вас отстану - как сделать так, что бы после какого-либо диалога начинала играть музыка?

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


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

Здравствуйте. Как проиграть в голове у актора некий звуковой файл (например музыку) после диалога, например? Через вот такую функцию

function any()

local snd = sound_object([[characters_voice\human_03\stalker\talk\leaves\leaves_42]])

snd:play_no_feedback(db.actor,sound_object.s2d, 0, vector():set(0, 0, 0), 2.0)

end

Не получается.

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


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

Здравствуйте. Сейчас делаю свой мод и возникла парочка вопросов:

1. Почему данный диалог все появляется и появляется, не исчезая, хотя инфопоршнь выполнен:

<dialog id="escape_volk_ak74u_quest_completed">

<has_info>escape_volk_ak74u_start</has_info>

<dont_has_info>escape_volk_ак74u_done</dont_has_info>

<phrase_list>

<phrase id="0">

<text>escape_volk_ak74u_quest_completed_0</text>

<next>1</next>

</phrase>

<phrase id="1">

<text>escape_volk_ak74u_quest_completed_1</text>

<next>2</next>

</phrase>

<phrase id="2">

<text>escape_volk_ak74u_quest_completed_2</text>

<next>3</next>

</phrase>

<phrase id="3">

<text>escape_volk_ak74u_quest_completed_3</text>

<give_info>escape_volk_ak74u_done</give_info>

<action>yash.mather</action>

</phrase>

</phrase_list>

</dialog>

 

2. Как заспавненным через скрипт неписям дать логику(а именно чтоб они просто стояли на месте и если понадобится, охраняли живность). Спавню я по старинке, через алайф. Может быть есть другие способы?

3. Как сделать так, чтоб раненному врагу можно было дать аптечку и он становился бы другом (помню, такое было в ТТ2).

 

 

Заранее спасибо :)

Надеюсь на быстрый ответ..

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


Ссылка на сообщение
1. Чтобы диалог не появлялся нужно чтобы стояла общая проверка (прекондишен) для диалога, а не в самм диалоге. Это или в скриптах или в логике НПС делается.

Хм, а вроде бы все до этого работало.

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

Кроме спавна в all.spawn и скриптами (alife():creatr(...)) других способов спавна не существует.

Не подскажете на примере, как спавеном через скрипт дать ему логику "no_move=true"?

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


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

gruber

Спасибо за попытку помочь, но к сожалению, не помогло.

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


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

Artos, gruber, ColR_iT, Огромное вам спасибо за помощь. Все понятно разъяснили и поправили мои ошибки. Виват :)

Сообщение от модератора ColR_iT
А вот благодарности писать в ЛС нужно. Да, правила не везде одинаковые... ;)
Изменено пользователем ColR_iT

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


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

Здравствуйте еще раз. Возник вот такой вопросик - как с помощью скрипта сделать так, чтоб когда гг подобрал определенный предмет, на экран вылетело сообщение? Именно При подборе этого предмета, а не при разговоре/диалоге...

 

Вопрос изъезженный. Как при поднятии/использовании/выкидывании предмета сделать какое-либо действие обсуждалось не раз.

Учимся пользоваться поиском.

ColR_iT

 

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

ColR_iT, что-то я поискал, поискал и так и не нашел... Поиск выдает лишь темы, в которых больше сотни страниц...

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

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


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

Капрал Хикс

Поискал, не нашел все равно. Только пару сообщений, в которых очень облачно всё описано...

 

Интересно увидеть процесс поиска...

Почему же я нашёл, а ты нет?

Например вот: пост #5776

Ещё: пост #43. Здесь отдельно функции проверки поднятия предмета и вывод сообщения на экран. Совместишь - получишь желаемое.

ColR_iT

 

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

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

function actor_binder:on_item_take (quest_case_06)

level_tasks.proceed(self.object)

--game_stats.update_take_item (quest_case_06, self.object)

news_manager.send_tip(db.actor, "%c[255,255,128,128]Непись:\n%c[default]Текст", nil, nil, 30000)

end

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

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


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

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

Пытался освоить рестрикторы - столкнулся с проблемой - почему-то он не работает. Ума не приложу почему. Вроде бы всё сделал правильно. Вот файлы:

[874]

; cse_abstract properties

section_name = space_restrictor

name = kevsts

position = =122.554,-26.236,-468.079

direction = 0,0,0

 

; cse_alife_object properties

game_vertex_id = 11

distance = 0

level_vertex_id = 130015

object_flags = 0xffffff3e

custom_data = <<END

[logic]

active = sr_idle

[sr_idle]

on_actor_inside = %+stor%

END

 

; cse_shape properties

shapes = shape0

shape0:type = box

shape0:axis_x = 6.5,0,0

shape0:axis_y = 0,6.5,0

shape0:axis_z = 0,0,6.5

shape0:offset = 0,0,0

; cse_alife_space_restrictor properties

restrictor_type = 3

 

<info_portion id="stor">

<action>text.tester</action>

</info_portion>

 

function tester(first_speaker, second_speaker)

news_manager.send_tip(db.actor, "%c[255,255,128,128]Блаблабла:\n%c[default]Проверка", nil, nil, 30000)

end

 

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

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


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

Идёт вылет, если пробывать сделать, как вы сказали

Expression : fatal error

Function : CScriptEngine::lua_error

File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

Line : 73

Description : <no expression>

Arguments : LUA error: e:\s.t.a.l.k.e\gamedata\scripts\_g.script:21: bad argument #2 to 'format' (string expected, got no value)

 

Перепрочти сообщения на этой странице пару раз - может тогда будет понятна никчемность твоего лога для понимания проблемы/ошибки и что же нужно для этого. --/Artos

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

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


Ссылка на сообщение
Gun12, Ругаться начал как раз таки после исправления.

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


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

Gun12 Вы меня не поняли. Я изменил "position = =122.554,-26.236,-468.079" на "position = 122.554,-26.236,-468.079" и после этого начались вылеты при начале новой игры

 

Покажи ещё раз всё, что ты делаешь.

И прочитай внимательно вот этот пост #8126.

ColR_iT

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

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


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

 

Столкнулся с новой сложностью. А именно: Как сделать так, что бы при убийстве NPC начинали играть титры? Вот файлы, что я задействовал, почему не работает, мне непонятно.

 

[milsoldier_respawn_12]:stalker

$spawn = "respawn\val_soldier_respawn_1"

character_profile = sim_soldier_specnaz

spec_rank = veteran

community = military

custom_data = milsol.ltx

 

[logic]

active = remark@search

on_death = death

 

[death]

on_info = %+milsol%

 

[remark@fire]

combat_ignore_cond = {!is_sniper_enemy}

radius = 0

anim = hide

on_info = {=health_le(0.5)}

remark@search

wounded = wounded@work

sniper = true

 

[remark@search]

combat_ignore_cond = true

combat_ignore_keep_when_attacked = false

anim = hide

target = actor

on_info = {=see_enemy}

remark@fire

wounded = wounded@work

 

[smart_terrains]

none = true

 

[wounded@work]

hp_state = 0|wounded_heavy@help_heavy

hp_state_see = 0|wounded_heavy@help_heavy

hp_victim = 0|nil

hp_fight = 0|false

hp_cover = 0|false

 

<info_portion id="milsol">

<action>xr_effects.game_credits</action>

</info_portion>

 

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


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

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