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

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


Halford

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

Можно ли заспавнить автомобиль скриптом, а не через all.spawn???

Можно, смотри мод AllSpawner

 

А теперь вопрос основной и главный: как просмотреть посты с 15.3.2008, 18:11 по 18.3.2009, 16:51? Там же ценной информации было караул сколько! И вопросы без ответа повисли. А может и с ответом, только не проверить уже :(

 

Ох, чувствую, доспрашиваюсь сейчас до бани...

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

Мои работы:

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

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

Soul Cube

 

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

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


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

меченый(стрелок)

Ты не упомянул еще config\gameplay\npc_profiles.xml. Там должно еще быть дописано что-то вроде:

<character id="sim_default_renegade_1_default_2_sniper">
<class>sim_default_renegade_1</class>
</character>

 

character id записывается в spawn_sections.ltx, class вписывается из профиля НПС

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

Мои работы:

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

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

Soul Cube

 

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

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


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

В ui_main_menu.script допиши в самый конец файла:

 

function main_menu:OnButton_credits_clicked()

alife():create("decoder", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- собственно спавн

get_console():execute("main_menu off") -- закрытие меню

end

 

Потом запусти сталкер, загрузи игру, выйди в меню и нажми кнопку "Титры". Все, декодер в инвентаре.

Мои работы:

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

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

Soul Cube

 

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

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


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

Big.D

Ничего страшного в этом нет, это вывод отладочной информации из какого-то из модов. ! Unknown command - побочный эффект вывода информации в лог. В принципе, жрать не просит, но если сильно хочешь отключить, пройдись поиском по папке scripts, поищи строчки dbg:sect_=_, dbg:vis_suit_=_ и т.д. и закомменти их. Только резервную копию сделай на всякий случай...

Мои работы:

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

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

Soul Cube

 

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

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


Ссылка на сообщение
На локации "Саркофаг" постоянно проигрывается фоном звук. Как этот звук убрать?

 

Файл config\scripts\sar_monolith_call.ltx, заменить строку active = sr_idle на active = nil

Мои работы:

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

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

Soul Cube

 

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

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


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

Что может означать лог:

 

FATAL ERROR

 

[error]Expression : e_entity->ID_Parent == id_parent

[error]Function : xrServer::Process_event_reject

[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_process_event_reject.cpp

[error]Line : 24

[error]Description : wpn_saiga_m350183

[error]Arguments : val_bandit_respawn_147872

 

И как эту гадость лечить? Вылет, похоже, рандомный. Оружие и НПС могут быть разными.

Мои работы:

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

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

Soul Cube

 

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

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


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

wolkolak,Real Wolf

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

Принцип такой:

1) Для каждого оружия, предназначенного в ножевой слот делаем парный предмет - фейк. Тот же визуал, цена, вес, иконка, описание - в общем, все видимые характеристики. Принципиальное отличие - это не оружие, а предмет на классе антирада. Секция фейка: например нож-оружие - wpn_knife, нож-фейк - fake_wpn_knife. В инвентаре оружие от фейка можно отличить только по отсутствию у фейка полосок характеристик.

2) Нужен скрипт, проверяющий на использование предмета, на этом принципе сделан спальник в АМК.

Если первые 5 символов в секции использованого предмета - fake_, значит происходит попытка переключить оружие. Пусть в слоте предмет X (оружие X), а в инвентаре используем предмет fake_Y (фейк оружия Y, в понимании игры - съедабельный объект). Тогда:

2.1) Предмет fake_Y съедается, запуская скрипт, в котором:

2.1.1) Удаляем предмет X

2.1.2) Спавним в инвентарь предмет Y, он падает в освободившийся от X слот

2.1.3) Спавним в инвентарь предмет fake_X

Получаем оружие Y в слоте и предмет fake_X в инвентаре, что и требовалось.

 

P.S. Все сказанное я делал только для ножевого слота, но аналогично делается и для бинокля. Рисовать слот и его содержимое в инвентаре даже не пробовал, на эту тему ничего сказать не могу.

 

Ограничения такого подхода: при смене оружия не сохранется состояние оружия и количество/тип патронов в нем. Для непортящегося холодного оружия это незаметно, для огнестрельного придется продумывать еще и этот момент.

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

Мои работы:

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

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

Soul Cube

 

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

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


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

Выкладываю свои наработки по смене оружия в ножевом слоте: variable_knife_slot.7z 2.2 Мб

Само оружие не мое, я делал только метод замены. Делалось под чистую игру, в АМК должна быть своя функция проверки на использование предмета. Для бинокля система будет аналогичная, только вместо fake_wpn_... будет, скажем, fake_binoc_...

 

P.S. Это должно было быть в ридми, но я затупил и забыл его сохранить перед архивацией:

Смена оружия в нулевом (ножевом) слоте.

Доступно три вида оружия: нож из оригинала, кулаки (автор Gosuke) и ломик (автор Бендер aka Кенни, Сталкер Портал)

Ломик кривой, подправил как умел, но медицина на уровне конфигов тут бессильна :(

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

Мои работы:

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

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

Soul Cube

 

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

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


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

Адаптировал смену оружия в ножевом слоте под чистый АМК 1.4.1 и перезалил версию под чистую ТЧ 1.0004

 

ТЧ: http://ifolder.ru/12088596

АМК: http://ifolder.ru/12088570

Мои работы:

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

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

Soul Cube

 

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

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


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

В профиле ему <start_dialog>...</start_dialog> пропиши, должно помочь. Только диалог с "приветом", наверное, надо закомментить.

Мои работы:

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

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

Soul Cube

 

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

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


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

Народ, как определить, какое оружие у НПС?

Пробовал в xr.motivator в net_spawn вписать для начала строку:

news_manager.send_tip(db.actor, "motivator_binder:net_spawn(): self.object:name()= "..tostring(self.object:best_weapon()), nil, nil, 20000)

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

Если вместо best_weapon() писать weapon_in_slot(N) - выкидывает с логом

[error]Arguments : LUA error: ...\s.t.a.l.k.e.r\gamedata\scripts\escape_dialog.script:171: attempt to call method 'weapon_in_slot' (a nil value)

 

Как вариант, можно ли определить оружие НПС в момент спавна по респавнеру?

 

Вот же я дебил!

Kolmogor спасибо за вразумление! :)

Только почему-то все равно nil выдает...

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

Мои работы:

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

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

Soul Cube

 

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

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


Ссылка на сообщение
Подскажите, как перевести строковую переменную (например а="125") в целое число?

 

b = tonumber( a )

Само собой, a должно быть числом, содержащимся в строковой переменной.

Обратная операция:

c = tostring( b )

Здесь с аргументом проще, возьмет даже nil

 

 

wolkolak

В принципе, может получиться что-то подобное и с таймером.

Выстави аптечке в конфиге лечение 0, добавь реально лечащую аптечку.

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

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

Мои работы:

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

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

Soul Cube

 

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

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


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

banderos

rs_stats позволяет получить координаты x,y,z. Их достаточно для телепортации командой

db.actor:set_actor_position(vector():set (x,y,z))

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

Мои работы:

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

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

Soul Cube

 

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

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


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

По какому принципу определяются предпочтения НПС, каким оружием пользоваться, если параметры ef_main_weapon_type и ef_weapon_typе одинаковые?

Ситуация такая: Есть MP-5, STEYR AUG и XM-8. MP-5 на первый слот, остальные на второй. MP-5 чуть скорострельнее и легче, но проигрывает в точности и мощности. В mp_ranks MP-5 стоит в 0 ранге, все остальное в 4. Тем не менее, если НПС берет в руки MP-5, его уже не вышибить оттуда, пока он жив. При попытке продать ему STEYR или XM он покупает, берет в руки, а потом сбрасывает на землю и достает свой MP-5. Патроны к STEYR и XM у НПС есть абсолютно точно, к MP-5 - далеко не факт, но тем не менее. Никакие моды на АИ не установлены.

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

Мои работы:

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

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

Soul Cube

 

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

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


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

Rekviem777

Можно заменить электрохимеру на сильную химеру.

Для этого в bind_monster.script закомменти строки

    if obj:section()=="electro_chimera" and time_global()>(self.charge_time or 0)+3000 then
        amk_particle.amk_particle({particle="anomaly2\\electra2_blast",pos=obj:bone_position("bip01_spine"),sound="anomaly\\electra_blast1"})
        local dist = db.actor:position():distance_to(obj:bone_position("bip01_spine"))
        if dist < 20 then
            local h = hit()
            h.impulse = 0
            h.draftsman = db.actor
            h.direction = vector():set(0,0,0)
            h:bone("bip01_spine")
            h.power = 1/dist
            h.type = hit.strike 
            db.actor:hit(h)
            h.power = 15/dist
            h.type = hit.shock
            db.actor:hit(h)
        end
        self.charge_time=time_global()
    end

Это отключит разряд. Чтобы отключить партиклы на электрохимере, в m_chimera.ltx закомменти в секции электрохимеры строки

bones_particles = electro_chimera_particles
immunities_sect    = electro_chimera_immunities

Этого должно хватить

Мои работы:

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

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

Soul Cube

 

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

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


Ссылка на сообщение
извините за повтор, может, не заметили просто

 

где можно найти колбак на смерть гг и колбак на спавн непися?

 

По поводу колбэка на смерть ГГ:

Смерть ГГ означает, что здоровья осталось 0 или меньше (на всякий случай). В bind_stalker.script в update пишем:

 

if db.actor.health <=0 then
<действия в случае смерти ГГ>
end

 

Колбэка на спавн непися не нашел, хотя самому нужен. Есть колбэк на переход НПС в онлайн - xr_motivator.script, net_spawn. Может, с помощью этого удастся решить твою задачу... Или кто-то из более грамотных скриптеров укажет нам нужное место :)

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

Мои работы:

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

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

Soul Cube

 

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

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


Ссылка на сообщение
Коллбек на спавн неписей (точнее, перегруженная функция класса se_stalker). Файл se_stalker.script

function se_stalker:on_spawn()
...
end

 

Как понять "перегруженная функция"?

И главный вопрос: Хочу, чтобы каждому сталкеру сразу же при спавне выдавался ствол (для определенности ПМ, выбор оружия, думаю, сделать смогу). По идее, спавн надо прописывать как раз в se_stalker:on_spawn(). Перепробовал несколько вариантов, результат один - вылет в самом начале загрузки новй игры.

Изначально было написано

give_weapon.slot1(self.object)

Лог - LUA error: ...s\s.t.a.l.k.e.r\gamedata\scripts\give_weapons.script:255: attempt to index local 'npc' (a nil value)

И сама функция (адекватно работала при вызове из xr_motivator.script, net_spawn)

function slot1(npc)
    alife():create("wpn_pm", npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id())
    alife():create("ammo_9x18_fmj", npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id())
end

 

Как надо писать в этом случае?

Мои работы:

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

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

Soul Cube

 

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

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


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

Gonarh

 

Увы, ни разу. Так я тоже пробовал. Выдает вот такое:

 

LUA error: No such operator defined

Мои работы:

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

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

Soul Cube

 

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

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


Ссылка на сообщение
Есть ли в конфигах оружия параметры, отвечающие за скорость поворота ГГ с этим оружием в руках без зума, или это все правится в ogf?

Если речь идет о том, чтобы с каждым оружием ГГ крутился с разной скоростью, настройки мышки не спасут. В конфиге есть параметр control_inertion_factor, он влияет на скорость поворота с оружием. Для себя установил этот параметр равным корню квадратному из массы оружия (где не было - дописал), разница между легким пистолетом и тяжеленным пулеметом видна невооруженным глазом. С пистолетом крутится, как юла, с пулеметом такое фиг получится.

Проверял более точно, перемещал мышку по столу на фиксированное расстояние и считал обороты ГГ. Результат точно не помню, но очень заметный, явно не погрешность эскперимента.

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

Мои работы:

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

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

Soul Cube

 

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

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


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

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

 

function scope()
local wpn = db.actor:item_in_slot(db.actor:active_slot())
if wpn then 
    local wid = wpn:id()
    local wdat = amk.get_weapon_data(alife():object(wid))
    local af = wdat.addon_flags
    local uaf = wdat.updaddon_flags
    --news_manager.send_tip(db.actor, "   addon_flags: "..tostring(af).."   updaddon_flags: "..tostring(uaf), nil, nil, 20000)
    wdat.addon_flags = af + 1
    wdat.updaddon_flags = af + 1
    local wobj = alife():object(wid)
    --local wobj = alife():create(wpn:section(), db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
    amk.set_weapon_data(wdat,wobj)
end
end

 

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

В скрипте очепятку подправил, где в fill_item_packet(ret,stpk,updpk) вместо writevu8uN(pk,v) (как по логике и должно бы быть, запись все-таки) вызывалось readvu8uN(packet,n) (с закономерным вылетом LUA error: d:\games\s.t.a.l.k.e.r\gamedata\scripts\amk.script:2061: 'for' limit must be a number), но на большее мозгов у меня не хватило. Что и где еще не так - не знаю, нет-пакеты меня вырубают начисто.

Или я в принципе неправильно делаю?

 

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

 

Выручайте, люди добрые!

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

Мои работы:

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

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

Soul Cube

 

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

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


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

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