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

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


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

SkyLoader,

npc:set_alien_control( ... )

Эта функция переключает камеру на "смотреть глазами монстра". Применима только к кровососам. Кроме камеры ещё и проигрывается специальный постэффект. Оригинальное назначение функции в игре мне неведомо.

 

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий
function init_dlg(dlg)
    dlg:AddPhrase("Привет, как дела?", "0", "", -10000)
    dlg:AddPhrase("Нормально, у тебя?", "1", "0", -10000)
    dlg:AddPhrase("Тоже.", "2", "1", -10000)
end

 

Тут диалог идет как надо - по порядку, но иногда(типа рандомно) случается вот так:

ss092210205851l01escape.jpg

 

Uploaded with ImageShack.us

 

Чоё к чему не пойму, то в правильном порядке идет, то нет.Ни кто не знает, мож чоё не правильно сделано?

--------------------------------------------------------------------------------------------------------

XrAlexR

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

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

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

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

Всем привет!

У меня нарисовалась проблема... или глюк!?

В общем получаю вот такой вылет:

 

[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: ...s\s.t.a.l.k.e.r\gamedata\scripts\bind_stalker.script:63: attempt to index global 'anonym' (a nil value)

 

 

Думал что файла нет, но он есть и называется anonym.script. Перепроверил, запустил еще раз - то же самое.

Вот, что я хотел от файла bind_stalker.script:

 

function actor_binder:net_spawn(data)
        ...
        anonym.spawn_af()

    return true
end

Добавил в самый конец функции.

 

 

И сам файл anonym.script:

-- Функция для спавна набора объектов (автор Erlik)
-- Для вызова необходимо указать нужные данные
-- Ех.
--function uny_spawn_1()
--local tab_items ={{[amount]="section_name"},{[amount]="saction_name"}, ...}
--local tab_where = {x=-249.495,y=-18.495,z=-107.105, lv=10784,gv=8} /// "actor"    - если актору
--this.uni_spawn_new(tab_items,tab_where)
--end
local count = 0 
function spawn_set_objects(tab_items,tab_where)
    for k, v in pairs(tab_items) do
        if type(tab_where)=='table' then
            for k, v in pairs (tab_items[k]) do 
                count = k
                for i=1, count do
                    alife():create(v,vector():set(tab_where['x'],
                    tab_where['y'],tab_where['z']),
                    tab_where['lv'],tab_where['gv'])
                end
            end
        elseif type(tab_where)=='string' then 
            for k, v in pairs (tab_items[k]) do 
                count = k
                for i=1, count do
                    alife():create(v, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
                end
            end
        elseif type(tab_where)=='number' then 
            local obj = level_object_by_sid(tab_where)
            for k, v in pairs (tab_items[k]) do 
                count = k
                for i=1, count do
                    alife():create(v, obj:position(), obj:level_vertex_id(), obj:game_vertex_id(), obj:id())
                end
            end
        end
    end
end

function spawn_af()
    local tab_items ={{[1]="af_medusa"},
                      {[1]="af_cristal_flower"},
                      {[1]="af_night_star"},
                      {[1]="af_vyvert"},
                      {[1]="af_gravi"},
                      {[1]="af_gold_fish"},
                      {[1]="af_drops"},
                      {[1]="af_fireball"},
                      {[1]="af_cristall"},
                      {[1]="af_blood"},
                      {[1]="af_mincer_meat"},
                      {[1]="af_soul"},
                      {[1]="af_electra_sparkler"},
                      {[1]="af_electra_flash"},
                      {[1]="af_electra_moonlight"},
                      {[1]="af_ameba_slime"},
                      {[1]="af_ameba_slug"},
                      {[1]="af_ameba_mica"},
                      {[1]="af_dummy_spring"},
                      {[1]="af_dummy_dummy"},
                      {[1]="af_dummy_battery"},
                      {[1]="af_dummy_pellicle"},
                      {[1]="af_dummy_glassbeads"},
                      {[1]="af_rusty_thorn"},
                      {[1]="af_rusty_kristall"},
                      {[1]="af_rusty_sea_urchin"},
                      {[1]="af_fuzz_kolobok"}}
    local tab_where = "actor"
    spawn_set_objects(tab_items,tab_where)
end

 

 

Подумал и решил проверить существование файла, вот так:

 

function actor_binder:net_spawn(data)
        ...
        if (anonym)
            anonym.spawn_af()
        end

    return true
end

 

 

Запустилось! Но вот только эффекта - ноль! Не видит файл что ли?

 

Помогите пожалуйста!

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

Народ, всем привет !

У меня тут такая трабла нарисовалась.... я недавно освоил навыки ковыряния=)....

Никак не могу найти строчку которая отвечает за время действия аптечки (т.е. скушал я аптечку и она 3 мин игрового времени действует, а мане нада чтобы 2сек действовала).

Я в файле S.T.A.L.K.E.R./gamedata/config/misc/items.ltx нашел строчку mr_time = 0.03;

Но насколько я знаю этот файл отвечает за скорость востановления здоровья =)

 

Поэтому прошу опытных ковыряльщиков мне помочь =)

З.Ы Зарание спасибо

 

// Спрашивай у автора мода. Министр.

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

Людиии! Кто нибудь знает все таки как заставить НПС здороваться с меченым? Я полазил в sound_theme и xr_meet , там есть любопытные строки:

-- болтовня

talk_hello = {min_snd = 5, max_snd = 7, rnd = 100, prior = 5, rnd_id = id(), into_id = id(), max_ids = {}},

talk_hello_friend = {min_snd = 3, max_snd = 5, rnd = 100, prior = 5, rnd_id = id(), into_id = id(), max_ids = {}},

talk_bye = {min_snd = 3, max_snd = 5, rnd = 100, prior = 5, rnd_id = id(), into_id = id(), max_ids = {}},

talk_accept = {min_snd = 3, max_snd = 5, rnd = 100, prior = 5, rnd_id = id(), into_id = id(), max_ids = {}},

talk_reject = {min_snd = 3, max_snd = 5, rnd = 100, prior = 5, rnd_id = id(), into_id = id(), max_ids = {}},

talk_abuse = {min_snd = 3, max_snd = 5, rnd = 100, prior = 5, rnd_id = id(), into_id = id(), max_ids = {}},

 

а в xr_meet:

 

if tostring(scheme) == "nil" then

def.meet_state = "5|wait@wait"

def.meet_state_wpn = "5|backoff@threat_weap"

def.init_meet = "talk_hello"

def.victim = "5|actor"

def.victim_wpn = "5|actor"

def.use = "true"

def.use_wpn = "false"

def.syndata = "backoff@threat_weap"

def.precond = "visibility"

def.abuse = "true"

 

Но ничего путного из етого извлечь не могу ( Помогите плииз ))

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

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

SkyLoader,

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

npc:set_item(<действие>, <ствол>, <размер очереди>, <пауза между очередями>)

<действие> - константа из класса object. Для ствола подходят object.idle, object.aim1, object.aim2, object.fire1, object.fire2, object.strap, object.drop. Остальные проверяйте сами.

<ствол> - клиентский объект оружия. Должен быть в инвентаре у непися

Насчёт параметров очереди не уверен. Размер вроде как работает.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

KitkaT.Net, попробуй примерно вот такую логику для твоего НПС

[logic]
active = remark@1

[remark@1]
on_actor_dist_le = 4| remark@2
on_actor_dist_ge = 7| remark@3

[remark@2]
anim = hello_wpn
snd = звук_привествия
target = actor
on_signal = sound_end| remark@1

[remark@3]
anim = hello_wpn
snd = звук_прощания
target = actor
on_signal = sound_end| remark@1

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

Куфзук

Скрипт рабочий (вставил себе полностью и активировал) - если не считать пары ошибок в названиях артефактов - af_cristall_flower (буквы l не хватало) и af_rusty_sea_urchin - этот арт вообще убери - у него по всей видимости ошибочное название самой секции допущенное самими разрабами.

Но твой вылет не из-за этих ошибок - они бы последовали позже и имели бы другой лог. Ищи причину не в самом скрипте, а в том что ему сопутствует.

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

Вопрос на счет скриптовых диалогов.Возможно ли сделать, чтоб одна фраза, например 5, шла после, например, 2 и 3?

А то у меня такая ситуация: У меня более 30 фраз и после каждой из них должна идти одна фраза, например, 31-ая.И как тут быть?

Пробовал что-то типа такого:dlg:AddPhrase("text.", "31", "30, 29, 28 и т.д", -10000), но так не работает.

Мне придется для каждой фразы идущую за ней фразу по отдельности писать?Или есть какой-нибудь выход?

 

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

 

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

malandrinus,

npc:set_item(<действие>, <ствол>, <размер очереди>, <пауза между очередями>)

А этот метод для актора то работает?

И в скриптах видел вместо "<пауза между очередями>" - заданный вектор.

 

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

Stalk15,

Вопрос на счет скриптовых диалогов.Возможно ли сделать, чтоб одна фраза, например 5, шла после, например, 2 и 3?

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

 

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

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

 

SkyLoader,

А этот метод для актора то работает?

Нет. В данном движке актор - совершенно другой класс, нежели сталкер. Общее есть, но в целом большая часть того, что относится к сталкерам, к актору не применимо.

 

И в скриптах видел вместо "<пауза между очередями>" - заданный вектор.

Не помню такого варианта. Пример бы показал?

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

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

malandrinus, т.е. метода выстрела из оружия для ГГ нету что ли?

 

// А нажатие на левую кнопку мыши ужо не подходит? :crazy::D Министр.

Очень смешно... Я хочу заставить ГГ самому выстрелить из пушки, когда надо.

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

Кто знает как сделать захват консоли сталкера? Чтобы считывать введенные в консоль команды(свои разумеется).

(execute_script(string) интересно для чего? вызвать скрипт? а смысл если можно и так его активировать...непонятный метод)

В общем в числе методов экспортированных в скрипты - в том же классе CConsole - я ничего похожего не обнаружил.

Однако слышал, что это уже кое кто реализовал - правда как не знаю.

Остается вариант с внешней программкой - но опять же не представляю как это можно сделать (хотя и знаю C# и методы работы с консолью библиотек .Net) - возможно через WinAPI или все гораздо проще?

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

Garry_Galler, http://www.amk-team.ru/forum/index.php?act...&pid=487457

можно как то так, только чтоб все свои команды начинались например с "МуСОМ" и искать его чтоли)

ЗЫ. если через внешнюю программу, то тогда лог прийдется часто записывать в файл, а ето вроде как фризы вызывает(в сам момент записи)

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

Vita sine libertate, nihil

Vita sine litteris - mors est

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

Подскажите, пожалуйста, как можно узнать общий вес предметов в инвентаре?

 

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

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

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

RvP

Про get_console():get_string(string) я знаю - но это не то - уже пробовал. Она всего лишь возвращает строковой эквивалент аргумента существующей команды.

Скажем get_console():get_string("renderer") возвращает строку - "Статическое освещение" - если включена статика или "Полное динамическое освещение" - если динамика.

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

Вводим допустим в консоль строку spawn - а скрипт(ну или внешняя прога - что конечно уже не гуд) ее оттуда сразу же считывает и передает куда надо. А далее - дело техники.

---------------------------------------

get_console():execute_script(string) - похоже аналог команды cfg_load - загружает ltx - правда у меня файл из папки creatures не загрузил.

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

Всех приветствую.

Вопрос: Как привязать к предмету звук? т.е. ГГ находит предмет например PDA и идет определённая озвучка.

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

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

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

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

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

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

Войти

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

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

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