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

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

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

Твой ответ в посте #3740 был, скажем так, резок.

*Shoker*, вспыльчивость - черта характера, но зачастую проявляется неуместно. Подобные ответы (пост #3743), пожалуйста, в личку.

И дабы не начинать споры ни о чём, пресечём их на корню.

Artos и *Shoker* - "давайте жить дружно!"©

Благодарю за понимание.

Изменено пользователем ColR_iT
Ссылка на комментарий
*Shoker*, а как же get_wpn_shared_str()? Если malandrinus ответит, как заставить этот метод работать, то все получится. Изменено пользователем SkyLoader
Ссылка на комментарий

Мне всего то надо помечать определённые предметы каким либо образом, чтобы игрок знал что этот предмет отличается от другого такого же. :)

Для этого хотел как вариант дописывать в имя предмета какой то знак, имя соответственно везде отображалось бы по другому, и это не тока к оружию относится. Вариант с правкой движка этого не стоит, тем более я работаю под ЧН. Тогда уж попробую через нет-пакеты дописывать предмету апгрейд с нужным мне текстом, всё лучше чем ничего. У меня правда есть перехватчик от alpet-а но я не разобрался пока как там работать с памятью.

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

Решил начать разбираться со сложными смарт-террейнами (раньше делал только general_lager). Ловлю постоянный вылет на подходе к смарту (видимо как только попадает он в онлайн):

 

FATAL ERROR

[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...:\games\gsc\s.t.a.l.k.e.r\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)


stack trace:

 

 

Что прописано в gulag_escape.ltx:

;---------------------------------
;-------- Новый лагерь ----------
;---------------------------------

[logic@esc_new_lager_npc1_walk]
active = walker@esc_new_lager_npc1

[walker@esc_new_lager_npc1]
path_walk = npc1_walk

[logic@esc_new_lager_npc1_kamp1]
active = kamp@esc_new_lager_kamp1

[kamp@esc_new_lager_kamp1]
center_point = npc1_kamp
path_walk = camp_center_task
soundgroup = esc_new_lager
meet = meet@lager

[logic@esc_new_lager_npc2_guard]
active = guard@esc_new_lager_npc2

[guard@esc_new_lager_npc2]
path_walk = npc2_walk
path_look = npc2_look

[logic@esc_new_lager_npc2_kamp1]
active = kamp@esc_new_lager_kamp1

 

 

Что прописано в gulag_escape.script:

 

if type == "esc_new_lager" then
               t = {section = "logic@esc_new_lager_npc1_walk",
            idle = 0, prior = 5, state = {0},
            in_rest = "", out_rest = ""}
        table.insert(sj, t)

        t = {section = "logic@esc_new_lager_npc1_kamp1",
            idle = 0, prior = 5, state = {1},
            in_rest = "", out_rest = ""}
        table.insert(sj, t)
        
        t = {section = "logic@esc_new_lager_npc2_guard",
            idle = 0, prior = 5, state = {0},
            in_rest = "", out_rest = ""}
        table.insert(sj, t)

        t = {section = "logic@esc_new_lager_npc2_kamp1",
            idle = 0, prior = 5, state = {1},
            in_rest = "", out_rest = ""}
        table.insert(sj, t)
    end

 

 

Чую накосячил где-то в распределении работ) Помогите новичку пожалуйста.

 

p.s. - все пути которые нужны, в way_escape присутствуют.

Изменено пользователем KitkaT.Net

Ничто не вечно под луной.

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

KitkaT.Net, начнём с того, что ты не привёл некоторые свои правки, а именно:

- как ты распределяешь работы (у тебя два состояния state), делается это в том же gulag_escape.script в функции load_states;

- пути как раз таки тоже могут вызвать подобный вылет, так что их тоже приведи.

А если на вскидку, то уже могу указать на некоторые не точности.

В секции kamp@esc_new_lager_kamp1, ты не правильно указал точку path_walk, она должна состоять из имени center_point, т.е. npc1_kamp и окончания _task, в итоге у тебя должно получится npc1_kamp_task.

Схемы guard, лично мне в чистом ТЧ 1.0006 найти не удалось, да и насколько мне известно таковой и нет, разве что это чья-то наработка, в оригинале есть zoneguard, возможно ты очепятался...

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

Так, вот работы:

 

if type == "esc_new_lager" then
        return function(gulag)
            if not db.actor then
                return gulag.state
            end
            if level.get_time_hours() >= 5 and level.get_time_hours() <= 22 then
                    return 0  
            else
                return 1  
            end
        end
    end

 

 

[esc_new_lager_npc1_kamp]
points = p0
p0:name = wp00
p0:position = -21.459390640259,2.4766421318054,72.145248413086
p0:game_vertex_id = 87
p0:level_vertex_id = 255507


[esc_new_lager_npc1_look]
points = p0
p0:name = wp00|t=10000
p0:flags = 0x1
p0:position = 3.7962260246277,2.4894599914551,71.421409606934
p0:game_vertex_id = 89
p0:level_vertex_id = 280207


[esc_new_lager_npc1_walk]
points = p0,p1,p2
p0:name = wp00
p0:position = 2.4627683162689,2.4790153503418,63.453559875488
p0:game_vertex_id = 89
p0:level_vertex_id = 279500
p0:links = p1(1)

p1:name = wp01
p1:position = -11.326374053955,2.4797053337097,66.62703704834
p1:game_vertex_id = 88
p1:level_vertex_id = 265797
p1:links = p2(1)

p2:name = wp02
p2:flags = 0x1
p2:position = -9.2513465881348,2.5201017856598,70.700996398926
p2:game_vertex_id = 88
p2:level_vertex_id = 267836
p2:links = p0(1)

[esc_new_lager_npc2_look]
points = p0
p0:name = wp00
p0:flags = 0x3
p0:position = 15.449903488159,2.4502758979797,62.299892425537
p0:game_vertex_id = 89
p0:level_vertex_id = 293062

[esc_new_lager_npc2_walk]
points = p0
p0:name = wp00
p0:flags = 0x3
p0:position = 3.8680720329285,2.4798147678375,61.760292053223
p0:game_vertex_id = 89
p0:level_vertex_id = 280908

[esc_new_lager_npc1_kamp_task]
points = p0
p0:name = wp00
p0:position = -21.459390640259,2.4766421318054,72.145248413086
p0:game_vertex_id = 87
p0:level_vertex_id = 255510

 

 

йеес!!)) Все заработало, спасибо большое :)

 

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

Назрел еще один вопрос :)

На викисталкере есть такая функция:

 

function fill_tbl(section, idle, prior, states, squad, group, in_rest, out_rest, online, gulag_name)
    local tbl = {}

    tbl.section = "logic@" .. gulag_name .. "_" .. section
    tbl.idle = idle
    tbl.prior = prior    
    tbl.state = {}

    for index = 1, #states do
        table.insert(tbl.state, states[index])
    end

    tbl.squad = squad
    tbl.group = group
    tbl.in_rest = in_rest
    tbl.out_rest = out_rest
    tbl.online = online
    return tbl
end

 

 

Куда ее нужно вставить чтобы она заработала ? В скрипты вроде "gulag_escape" ?

 

и еще один вдогонку: Почему сталкеры телепортируются прямо в смарт-террейн ? Я наивно полагал что они будут идти через Зону, а они бац и появились.

 

Ссылку на статью, пожалуйста!

ColR_iT

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

Ничто не вечно под луной.

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

KitkaT.Net, ссылку на статью скинь.

И НПС в гулаг не телепортируются. Где заспавнил там и появились, а если НПС на Свалке вписать гулаг на Кордоне, то он ножками туда пойдёт, в этом можно убедиться, если поставить на него метку.

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

Йа ссылко

 

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

 

 

Ничто не вечно под луной.

Ссылка на комментарий
На викисталкере есть такая функция:

...бла-бла

Куда ее нужно вставить чтобы она заработала ?

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

У разрабов по крайней мере всё хоть и просто, но понятно. Нужно что-то задать - присваиваешь по ключу и все дела.

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

Ребят,напишите пожалуйста функцию,которая при разговоре с НПС отдает какой либо предмет НПС, с которым разговаривате ГГ

 

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

ColR_iT

 

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

Посмотрите,я правильно записал функцию :

dialogs_escape

<phrase id="7">
<text>stepanov_zheka_7</text>
	<action>den_r.dat_item</action>
	<next>8</next>
</phrase>

den_r.script

function dat_item(first_speaker, second_speaker)
    dialogs.relocate_item_section(second_speaker, "zhizni", 100500, "in")
end

Она почему то не срабатывает в игре..Диалог есть,а выдачи предмета "zhizni" нету(

 

Во-первых: теги никто не отменял.

Во-вторых: Где ты такую функцию взял? Ты неправильно передаёшь предмет, посмотри по аналогии как нужно правильно это сделать.

ColR_iT

 

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

Это я с урока диалогов взял! И на выдачу ПМ из этого урока все сработало...

function dat_item(first_speaker, second_speaker)
    dialogs.relocate_item_section(second_speaker, "wpn_pm", "in")
end

 

И правильно сделало, что сработало. А теперь посмотри, что в статье и что у тебя лишнее.

ColR_iT

 

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

100500 ? количество большое?

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

Ты пишешь 100500 там где должна стоят "in"

Думаю что 100500 должна стоять после "in", и то это тока в ЗП по моему работает (ЗЫ - 100500 предметов по моему это слишком)

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

Поменяй местами "in" и 100500 В ЗП вроде сработает.

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

Возможно ли в ТЧ удалить\сделать невидимым болт, который уже лежит на земле?

Если возможно, то как?

 

P. S. Болт через alife():release не удаляется.

 

Artos, могу :)

Но ещё давно мне товарищ Charsi сказал, что у болтов нету серверной части и их удалить нельзя, в чём я и убедился.

Выбрасывать и телепортировать не подходит, так как болт не в инвентаре.

 

Изменено пользователем Real Wolf
Ссылка на комментарий
Ololosha_Troll: Ну и как тогда должна выглядеть функция,что бы ГГ выдавался не один предмет,а несколько?

Ты сам хочешь сделать и получить желаемое или ждешь когда тебе предоставят готовенькое?

Если в ТЧ функция передачи предмета (dialogs.relocate_item_sectio) срабатывает однократно, т.е. передает один предмет заданной секции, то в ЧН и ЗП разработчики игры добавили еще один аргумент (колическтво передаваемых - amount) и функцией можно сразу несколкько передавать.

Возми и взгляни как это сделано и используй ... чем чат тут разводить.

 

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

Real Wolf, а не мог бы ты показать как пытаешься удалить через alife():release? ;-)

 

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

P.S. Real Wolf, нy и что мешает показать ... что без проверки получения серверного объекта удаление Несуществующего - бессмыслица!

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

 

1. Болт, которым бросается актор/непись - совершенно иной объект, чем тот, который у него в руке/слоте. Исходный болт всегда остается "на месте".

2. Соответственно и ID у этих "выкинутых" болтов совершенно иные. Если озаботился зачем-то удалением таких болтов - то и отлавливай именно выкинутые болты и трансфери их куда-нибудь в "ящик", в котором их и не видно и откуда они сами будут исчезать.

3. Вообще-то "серверная часть" у болтов есть, но ... получить к ней доступ через alife():object(ID) к сожалению невозможно ...

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

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

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

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

1. В STALKER\gamedata\sounds\characters_voice\scenario\wolf засунул трек wolf.ogg (параметры трека нормальные)

 

2. stable_dialogs_escape.xml нашёл строку после которой даются вещи и соответвено квест

 <string id="escape_lager_volk_talk_111111111">
    <text>Я попробую.</text>
  </string>

 

И в dialogs_escape.xml в строчке

<text>escape_lager_volk_talk_111111111</text>
<give_info>esc_kill_bandits_quest_have</give_info>
<next>1111111111</next>
</phrase>

3.После <give_info>esc_kill_bandits_quest_have</give_info> вставил: <action>soundtrack.wolfsnd</action> и получилось:

<text>escape_lager_volk_talk_111111111</text>
<give_info>esc_kill_bandits_quest_have</give_info>
<action>soundtrack.wolfsnd</action>
<next>1111111111</next>
</phrase>

 

4. В папке scripts создал файл soundtrack.script и прописал в нем

 

--------Copyright DEXXX--------
snd_obj = {}
snd_obj = xr_sound.get_safe_sound_object([[soundtrack\escape_theme]])

function save_var(var, value)
xr_logic.pstor_store(db.actor, var, value)
end

function get_var(var, value)
return xr_logic.pstor_retrieve(db.actor, var, value)
end

function s_stop()
if snd_obj:playing()==true then snd_obj:stop() end
end

function s_play(path)
s_stop()
snd_obj = xr_sound.get_safe_sound_object(path)
snd_obj:play_at_pos(db.actor, vector ():set (0, 0, 0), 0, sound_object.s2d)
end

function wolfsnd()
s_play([[characters_voice\scenario\wolf\wolf]])
end

Помогите пожалуйста.Где я мог допустить ошибку?

 

Сообщение от модератора ColR_iT
А мы не только не в ту тему пишем, мы ещё и вопросы дублируем...

Прочитай, пожалуйста, правила на досуге.

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

Подскажите функцию для использования антирада актером

 

"Скушать" антирад можно функцией eat(). В конечном результате должно получится так:

db.actor:eat(db.actor:object("antirad"))

ColR_iT

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

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

Ничто не вечно под луной.

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

Кстати, хороший вопрос...

Как в ТЧ отследить вхождение в рестриктор НПС? Не какого-то конкретного, а любого.

Изменено пользователем ColR_iT
  • Нравится 1
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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