[SoC] Ковыряемся в файлах - Страница 98 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

[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 - описатель элементов текстуры.
Возможно всё, ну или почти всё.

А вообще что означает вылет

attempt to index field '?' (a nil value)

 

На такой строке:

 

db.storage[npc:id()].тут_схема

Monnoroch, скорее всего переменная npc равна nil.
Возможно всё, ну или почти всё.

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

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

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

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

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

Войти

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

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

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