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

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


Halford

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

@Капрал Хикс тут зависит от обстоятельств - бар сам по себе место перенаселённое (у меня лично объединённой локе Бар-ДТ это не убрано, чтобы лишний раз комп не грузить), так что здесь всё зависит от мощностей - если игра справится с такой нагрузкой - можно и убрать выход в оффлайн.

  • Нравится 2

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

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

Скрытый текст

1d9a4482fff5t.jpg

659b87c90fb0t.jpg

 

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

Народ, запутался уже, прошу вашей помощи.

Скомпилировал Агропром, создал новый лагерь военных на территории института, привязал к нему сталкеров (заспавнил в редакторе по новой), и в игре постоянно вот такой вылет

Скрытый текст

FATAL ERROR
 
[error]Expression    : vertex || show_restrictions(m_object)
[error]Function      : CPatrolPathManager::select_point
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\patrol_path_manager.cpp
[error]Line          : 155
[error]Description   : any vertex in patrol path [agr_army_lager_guard10_walk] in inaccessible for object [l03_agroprom_stalker_0008]
 

stack trace:

Постоянные жалобы на то, что мол пути найти не может НО!

- лагерь не имеет никаких привязок к space_restrictor-ам

- никаких space_restrictor, не допускающих нахождение посторонних на территории института нету

- все way-поинты находятся на АИ-сетке

- у всех сталкеров, привязанных к АИ-сетке нет никаких привязок к space_restrictor-ам

 

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

 

Скрытый текст

    ------------------ НИИ Агропром. Новый Лагерь ------------------------------------------
    if type == "agr_army_lager" then
        t = { section = "logic@agr_army_lager_walker1",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker2",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker3",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker4",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker5",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_kamp1",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker6",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_kamp2",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker7",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker8",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker9",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker10",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker11",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker12",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker13",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker14",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker15",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker16",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker17",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        end

 

    if type == "agr_army_lager" then
        return function(gulag)
            return 0
        end
    end

 

    if gulag_type == "agr_army_lager" then
        return npc_community == "military"
    end

Скрытый текст

;*************** agr_army_lager *******************

[logic@agr_army_lager_walker1]
active = walker1@agr_army_lager

[walker1@agr_army_lager]
path_walk = guard1_walk
path_look = guard1_look


[logic@agr_army_lager_walker2]
active = walker2@agr_army_lager

[walker2@agr_army_lager]
path_walk = guard2_walk
path_look = guard2_look


[logic@agr_army_lager_walker3]
active = walker3@agr_army_lager

[walker3@agr_army_lager]
path_walk = guard3_walk
path_look = guard3_look


[logic@agr_army_lager_walker4]
active = walker4@agr_army_lager

[walker4@agr_army_lager]
path_walk = guard4_walk
path_look = guard4_look


[logic@agr_army_lager_walker5]
active = walker5@agr_army_lager

[walker5@agr_army_lager]
path_walk = guard5_walk
path_look = guard5_look


[logic@agr_army_lager_kamp1]
active = kamp1@agr_army_lager

[kamp1@agr_army_lager]
center_point  = institute_camp_center
path_walk = institute_camp_center_task
radius = 2.4
danger = danger_ignore@agr_army_lager
on_timer = 150000 | kamp3@agr_army_lager

[kamp3@agr_army_lager]
center_point  = angar_camp_center
path_walk = angar_camp_center_task
radius = 2.4
danger = danger_ignore@agr_army_lager
on_timer = 150000 | kamp1@agr_army_lager


[logic@agr_army_lager_walker6]
active = walker6@agr_army_lager

[walker6@agr_army_lager]
path_walk = guard6_walk
path_look = guard6_look


[logic@agr_army_lager_kamp2]
active = kamp2@agr_army_lager

[kamp2@agr_army_lager]
center_point  = institute_camp_center
path_walk = institute_camp_center_task
radius = 2.4
danger = danger_ignore@agr_army_lager


[logic@agr_army_lager_walker7]
active = walker7@agr_army_lager

[walker7@agr_army_lager]
path_walk = guard7_walk
path_look = guard7_look


[logic@agr_army_lager_walker8]
active = walker8@agr_army_lager

[walker8@agr_army_lager]
path_walk = guard8_walk
path_look = guard8_look


[logic@agr_army_lager_walker9]
active = walker9@agr_army_lager

[walker9@agr_army_lager]
path_walk = guard9_walk
path_look = guard9_look


[logic@agr_army_lager_walker10]
active = walker10@agr_army_lager

[walker10@agr_army_lager]
path_walk = guard10_walk
path_look = guard10_look


[logic@agr_army_lager_walker11]
active = walker11@agr_army_lager

[walker11@agr_army_lager]
path_walk = guard11_walk
path_look = guard11_look


[logic@agr_army_lager_walker12]
active = walker12@agr_army_lager

[walker12@agr_army_lager]
path_walk = guard12_walk
path_look = guard12_look


[logic@agr_army_lager_walker13]
active = walker13@agr_army_lager

[walker13@agr_army_lager]
path_walk = guard13_walk
path_look = guard13_look


[logic@agr_army_lager_walker14]
active = walker14@agr_army_lager

[walker14@agr_army_lager]
path_walk = guard14_walk
path_look = guard14_look


[logic@agr_army_lager_walker15]
active = walker15@agr_army_lager

[walker15@agr_army_lager]
path_walk = guard15_walk
path_look = guard15_look


[logic@agr_army_lager_walker16]
active = walker16@agr_army_lager

[walker16@agr_army_lager]
path_walk = guard16_walk
path_look = guard16_look


[logic@agr_army_lager_walker17]
active = walker17@agr_army_lager

[walker17@agr_army_lager]
path_walk = guard17_walk
path_look = guard17_look


[danger_ignore@agr_army_lager]
ignore_distance = 5

Скрытый текст

[smart_terrain]
type = agr_army_lager
capacity = 19
communities = military

Ссылка на лог

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

@WinCap Дык никаких рестрикторов в том то и дело на пути ни у кого нет.

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

@WinCap @Okichi Да, действительно дело было в реестре - удалил их всех и всё заработало. Чтож, буду восстанавливать их потихоньку и смотреть, какой реестр был глючным.

  • Согласен 1

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

Добро всем.

 

Решил адаптировать функцию медика в ТЧ, перенёс диалог, внёс все нужные функции, и при старте диалога на мед помощь выскакивает вот такой вылет

Скрытый текст

FATAL ERROR
 
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: d:\s.t.a.l.k.e.r\gamedata\scripts\dialogs.script:330: attempt to compare number with nil
 

stack trace:

 Ссылается он вот на эту функцию проверки состояния здоровья игрока

Скрытый текст

function actor_needs_bless(first_speaker, second_speaker)
    if db.actor.health < 1 or
            db.actor.radiation > 0 or
            db.actor.bleeding > 0 then
        return true
    end

    return false
end

В частности на db.actor.bleeding > 0 then.

Я так понял всё дело в цифре 0, но как тогда в ТЧ проверку на кровотечение сделать в пределах этой функции. В скриптах родного ТЧ ничего такого не находил пока что.

Скрытый текст

-- Medic support
function medic_magic_potion(first_speaker, second_speaker)
    db.actor.health = 1
    db.actor.power = 1
    db.actor.radiation = -1
    db.actor.bleeding = 1
end

function actor_needs_bless(first_speaker, second_speaker)
    if db.actor.health < 1 or
            db.actor.radiation > 0 or
            db.actor.bleeding > 0 then
        return true
    end

    return false
end

function actor_is_damn_healthy(first_speaker, second_speaker)
    return not actor_needs_bless(first_speaker, second_speaker)
end

 

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

@WinCap тут дело в том, что функция при диалоге на лечение в случае оказании помощи игроку не может это кровотечение остановить, то бишь значение > 0 она не определяет как прекращение кровотечения у ГГ. Если ёё закомментировать, вылет пропадает, но кровотечение у ГГ не вылечивается. Дело не в том, что там некорректно указано db.actor.bleeding, а то, что числовое значение > 0 для него указано некорректно. Вот меня и интересует, какое значение там должно быть, чтобы лечение ГГ шло как по маслу.

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

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

  • Спасибо 1

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

@I am Dead Я помню, что когда ещё в команде DRDA был тоже эту функцию переносил и над ней сидел, сидел, и вроде бы как то я даже смог заставить кровотечение исчезать при лечении ГГ. Но вот ток как я это сделал (а главное, сделал ли вообще) уже и не помню, давно это было.

 

Просто давать возможность ГГ вылечиваться у медика без аннулирования кровотечения - такое себе мероприятие.

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

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

Скрытый текст

[logic]
active = sr_idle

[sr_idle]
on_info = {=actor_in_zone(escape_undeground_zone)} %=set_indoor_weather%
on_info2 = {=actor_out_zone(escape_undeground_zone)} %=set_default_weather%

Скрытый текст

function set_indoor_weather(actor, npc)
    level.set_weather("indoor", true)
end

function set_default_weather(actor, npc)
    level.set_weather("default", true)
end

 

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

всем хабара товарисчи

Если кто играл, то наверное помнит как в НС ОП-1 по локациям бегали стаи крыс, которые не были привязаны к гулагам или респавну (видимо спавнились через скрипт), даже в оригинальной солянке от 2010 года в баре и подземке агропрома можно было найти стаи крыс. Кто знает, каким способом там их респили? Помню также таким способом изломы респился у деревни новисов..

А то что-то сам ковырял файлы - ничего так и не нашёл.

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

Приветсвую

Не подскажите, как бы выглядела логика для ящичка, открыть который можно было бы только с помощью пароля?

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

Доброго дня комрадыю Вопрос таков

У моего бота прописана вот такая логика

Скрытый текст

[logic]
active = walker@bar
combat_ignore = combat_ignore
meet = no_meet

[walker@bar]
path_walk = chern_gurvinek_walk
path_look = chern_gurvinek_look
meet = no_meet
danger = danger_condition
on_actor_dist_le_nvis = 5 | remark@hello
;on_info = {-chern_bar_hurvinek_meeting} kamp
combat_ignore_cond = {=fighting_dist_ge_20}
 
[remark@hello]
anim = hello_wpn
target = actor
;anim_end = remark@talk
on_timer = 3000 | remark@talk
combat_ignore_cond = {=fighting_dist_ge_20}
meet = no_meet

;[remark@wait] 
;target = actor
;on_actor_dist_le_nvis = 3 | remark@talk %=xr_effects.gurvinek_give_equipment%
;meet = no_meet
;combat_ignore_cond = {=fighting_dist_ge_20}
 
[remark@talk]
snd = hurvinek_start_monolog
;on_game_timer = 12 |nil %=xr_effects.gurvinek_give_equipment%
on_game_timer = 12 | {-chern_bar_hurvinek_meeting} %=xr_effects.gurvinek_give_equipment +chern_bar_hurvinek_meeting%
combat_ignore_cond = {=fighting_dist_ge_20}
on_signal = sound_end | kamp
meet = no_meet
  
[kamp]
center_point = chern_lager_town_vegetables_camp_center
meet = meet
combat_ignore_cond = {=fighting_dist_ge_20}
 
[meet@helow]
meet_dialog = escape_talk_about_escape
use        = true
use_wpn        = true
 
[danger_condition]
ignore_distance = 15
 
[combat_ignore]

При подходе к нему и после проигрывания анимации hello происходит вылет вот с с таким логом

Сама функция выдачи предметов прописана в xr_effects и выглядит так

Скрытый текст

function gurvinek_give_equipment(first_speaker, second_speaker)
    local reward_items = math.random(1,3)
    if reward_items == 1 then -- Первый вариант
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "ammo_9x18_fmj", 2)
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_pm")
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_knife")
;              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "detector_simple")
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "medkit", 1)
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bandage", 3)
    end
    if reward_items == 2 then -- Второй вариант
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "ammo_12x70_buck", 5)
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_bm16")
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_knife")
;              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "detector_simple")
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "medkit", 1)
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bandage", 3)
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "antirad", 1)
    end
    if reward_items == 3 then -- Третий вариант
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "ammo_12x70_buck", 5)
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "ammo_9x18_fmj", 2)
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_bm16")
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_pm")
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_knife")
;              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "detector_simple")
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bandage", 5)
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "medkit", 2)
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "antirad", 1)
    end
end

Может вы сможете подсказать, где я накосячил?

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

@WinCap В чём именно косяк? Дубликата у функции нету, проверял

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

@WinCap Спасибо, и в правду помогло

Слушай, а как мне указать, чтобы после начала звуковой дорожки, снаряга выдалась ток через 10 секунд? (как эти секунды правильно прописать?)

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

Народ, такой вопрос.

У моего котофея в игре прописана такая логика

Скрытый текст

[smart_terrains] 
none = true

[logic]
active = mob_walker@idle

[mob_walker@idle]
path_walk = cher_slap_cat_walk
path_look = cher_slap_cat_look
friendly = true
actor_friendly = true

то бишь людям и игроку он не опасен, и сталкеры его не трогают

можно ли как-то прописать ему анимации? (чтоб сидел, лежал, кушал и т.д.)

а то он просто стоит в постойке idle и выглядит это как то неестественно.

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

@Никсон а разве принцип  "a=*название-анимации* в вейпоинтах не читается из state_lib скрипта (вроде как в вей-поинтах именно оттуда анимации берутся)

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

Народ, как сделать так, чтобы определённый предмет гарантированно был у непися в инвентаре (прописал и в секцию спавн в СДК, и в характере персонажа, предмета как не было так и нет)

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

@Купер Благодарствую, буду пробовать

И ещё вопрос - я ящику прописал ссылку на логику, в которой указана хабар

Скрытый текст

[spawn]
ammo_5.56x45_ap = 4
ammo_5.56x45_ss190 = 2
grenade_f1 = 1
wpn_l85 = 1
ammo_m209 = 3
wpn_mp5 = 1
ammo_9x19_pbp  = 5
antirad = 2
medkit_army = 3
bandage = 5
af_fireball = 1
af_night_star = 1

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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


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

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