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

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

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

Еще хочу уточнить: как правильно проверить,что таблица существует и не пустая?

 

local npc_items = items[npc:id()]

if npc_items ~= nil and npc_items ~= {} and table.getn(npc_items) > 0 then

return true

end

return false

 

Я делаю так.Это верно?

Изменено пользователем Monnoroch
Ссылка на комментарий
Еще хочу уточнить: как правильно проверить,что таблица существует и не пустая?

tbl = {1,5,8}
-- проверяем, что таблица существует и не пустая
if tbl and next(tbl) then
   ...
end

 

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

table.getn(npc_items) > 0

Это сработает только для тех таблиц, у которых ключи начинаются от единицы и идут непрерывно. Или иными словами, для созданных таким образом:

t = {v1, v2, v3, ... и т.д.} - в этой таблице ключи создаются автоматически с автонумерацией от единицы

если же я создал таблицу общего вида:

t = {
    [k1] = v1,
    [k2] = v2,
    [k3] = v3,
    и т.д.
}

или просто добавлял в таблицу значения с произвольными ключами:

t[k] = v

то это не сработает. В этом случае надо использовать функцию next(table, key). Эта функция возвращает ключ, следующий за key. Если key равен nil (или просто не указан), то вернёт первый ключ. Если в таблице нет ничего, то получим nil, что эквивалентно false в логических выражениях.

 

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

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

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

 

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

Где можно взять мод динамические сообщения? Для ТЧ. И как можно заставить нпс доставать детектор у аномалий как в чн (анимка "probe_2")?

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

SC2dCs2.png

 

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

Как в солянке убрать отключение выбросов в фриплее?

Изменено пользователем Палыч
anime_96.png
Ссылка на комментарий

Виталий Зверь

В all.spawn на каждый костёр, имеются по три секции, с именами: lights_hanging_lamp, zone_flame_small и space_restrictor.

lights_hanging_lamp, это видимо, зона свечения костра, zone_flame_small, собственно сам костёр и space_restrictor - зонка, которая запрещена для неписей (чтобы не сидели в кострах). Координаты для будущего гулага на этом месте, например, можно взять из zone_flame_small. Ну или встать в костёр и снять координаты.

Если планируется просто посадить неписей у костра, без каких либо условий (несюжетный гулаг, а так, для фона), то это довольно просто.

Для примера, покажу гулаг на эскейпе, у которого имя и тип будут называться, ну допустим, esc_test_lager, гулаг с населением 3 тела. Всё, что останется сделать - поместить смарт в нужный файл alife и прописать свои координаты. Ну можно ещё и названия поменять (все esc_test_lager на свои).

В alife создать секцию смарта:

[999]
; cse_abstract properties
section_name = smart_terrain
name = esc_test_lager
position = -208.551208496094,-20.0917911529541,-141.64958190918
direction = 0,0,0

; cse_alife_object properties
game_vertex_id = 61
distance = 1
level_vertex_id = 44622
object_flags = 0xffffffbe
custom_data = <<END
[smart_terrain]
type = esc_test_lager
capacity = 3
END

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 1

; cse_alife_space_restrictor properties
restrictor_type = 3

; se_smart_terrain properties

В position, game_vertex_id и в level_vertex_id - подставь координаты из zone_flame_small.

Путь (center_point):

[esc_test_lager_kamp]
points = p0
p0:name = wp00
p0:position = -208.551208496094,-20.0917911529541,-141.64958190918
p0:game_vertex_id = 61
p0:level_vertex_id = 44622

В p0:position, p0:game_vertex_id и в p0:level_vertex_id - подставь координаты из zone_flame_small.

Если сможешь сам координаты снять, то можно в паре шагах от костра сделать точку спавна неписей при входе гулага в онлайн (чтобы не рождались в центре пламени), в логике строка path_walk :

[esc_test_lager_kamp_task]
points = p0
p0:name = wp00
p0:position = -208.551208496094,-20.0917911529541,-141.64958190918
p0:game_vertex_id = 61
p0:level_vertex_id = 44622

Тут должны быть координаты в паре шагов от костра.

 

Логика (можно добавить в любой файл логики гулагов, например в gulag_escape.ltx):

[logic@esc_test_lager]
active = kamp@esc_test_lager

[kamp@esc_test_lager]
center_point = kamp
path_walk = kamp_task
soundgroup = esc_test_lager

Где:

center_point - сам костёр. Неписи рассаживаются вокруг него, по умолчанию, если не ошибаюсь, радиус составляет 1 метр. Можно и свой прописать - добавить строку radius = и нужную цифру.

path_walk - точка спавна неписей при входе гулага в онлайн (снять координаты недалеко от костра). Это необязательный параметр. По умолчанию, если убрать эту строку, неписи будут спавниться в точке center_point. Если это не суть важно, то можно и убрать.

soundgroup - точно не знаю зачем, наверное для синхронности "беседы".

И самое главное, не забывай, что в логике смартов имя пути пишется без имени гулага. То есть, в данном случае путь называется esc_test_lager_kamp, в нём esc_test_lager_ - имя гулага, а kamp - имя пути. Его то только и вписываем в логику.

Ну и загрузка работ (можно так же добавить в имеющийся gulag_escape.script, чтоб свой не подключать):

В function load_job(sj, gname, type, squad, groups) добавить:

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

 

В function load_states(gname, type) добавить:

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

 

Ну и в function checkStalker(npc_community, gulag_type, npc_rank, se_obj) добавить:

    if gulag_type == "esc_test_lager" then
        return npc_community == "stalker"
    end

Вроде ничего не забыл... В этом случае, если всё сделано правильно, заработает гулаг на три персоны и в него смогут попасть любые неписи, у кого комьюнити stalker. Лагерь начнёт свою работу со стартом новой игры и будет существовать на протяжении всей игры.

 

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

У меня вопрос:как сделать новую мдель оружия?Есть тема "Создание ХАД модели оружия"...

Я ВЕРНУСЬ И НАДЕРУ ВСЕМ ЗАДНИЦЫ (С) УИЛЛИС

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

Stalker Hartman в 3D редакторах. А худ создается чтобы руки в игре отображались....

Есть в игре гулаг заставляющий НПС собирать арты?

Правельно пейсать "мадыратарчег", патамукаг проверочнойе слова "красафчег".

Ссылка на комментарий
Stalker HartmanСоздание HUD-модели оружия, также там еще много полезных статей.
Возможно всё, ну или почти всё.
Ссылка на комментарий

1 раз такое вижу:

! Cannot find saved game ~~~ try_switch_to_another_section(): error in implementation of scheme 'mob_trader': actor is nil

* Log file has been saved successfully!

 

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\s.t.a.l.k.e.r\gamedata\scripts\dialogs.script:34: attempt to index field '?' (a nil value)

 

 

Не подскажете что могло пойти не так?

Схема 'mob_trader' не менялась.

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

WAWKA, неа.я не трогал - только в солянке народной,но там такого нет глюка...

 

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

Stalker Hartman, слушай,не говори глупостей,а?

отчего это бывает: attempt to index field '?' я знаю.

 

 

А вот конкретно в моем случае с пояснением выше фатал эррора в логе - не понимаю...

 

=======

 

вот строка:

if db.storage[first_speaker:id()].wounded ~= nil and

Изменено пользователем Monnoroch
Ссылка на комментарий
Monnoroch, может ты каким то образом в одну из твоих схем записал туда Сидора. И вот теперь Сидор либо из этой схемы, либо в нее не может попасть.
Ссылка на комментарий

dan, В данный конкретный промежуток времени я помимо того,что пишу на форуме тестирую схема "торговля" - на чистой игре - все работает (я даже не тестирую,а ищу анимки пододящие).

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

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

Monnoroch,

ошибка скорее всего в actor_binder:net_spawn

Он корректно не отработал и не заполнил db.actor правильным значением

вот и полезли ошибки

Просто ты наверное рядом с Сидоровичем находишься - вот на нем и ругнулось

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

Люди подскажите как переместить слоты оружия,здоровья,пояс в общем как изменить координаты инвентаря?Видел в моде амк новый инвентарь.С помощью какой программы так сделали?

Я ДатчикХабара со stalker-portal

Ссылка на комментарий
Prapor11, программа блокнот называется и плюс фотошоп, открываешь файл (по-моему) inventory_new.xml и inventory_new_16.xml, здесь координаты элементов, ui_inventory2.dds текстура и ui_inventory2.xml - описатель элементов текстуры.
Возможно всё, ну или почти всё.
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

AMK-Team.ru

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