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

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


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

Возникла пара вопросов по таблицам.

 

1) Попробовал сделать, чтобы id всех членов какого-то гулага заносились в таблицу.

Объявлял таблицу в самом начале файла: local gulag_members = {}

Заносил в таблицу так:

 

for k,v in pairs(gulag.Object) do

if (v == true or ( v:alive() and --

not(xr_wounded.is_heavy_wounded_by_id(k) or

xr_wounded.is_psy_wounded_by_id(k)))) and

gulag.Object_begin_job[k] == true

then

if type(v) ~= "boolean" then

table.insert(gulag_members,v:id())

end

end

end

 

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

По идее, надо бы чтобы в таблице gulag_members каждый член был в свою очередь таблицей, и вот в эту подтаблицу и заносить нужные id.

Попробовал записывать командой

 

table.insert(gulag_members[gulag],v:id())

 

По идее, должно было записаться в элемент таблицы gulag_members с индексом [gulag]. Но получается вылет:

bad argument #1 to 'insert' (table expected, got nil)

 

Похоже, я накосячил в объявлении таблицы, но как это сделать правильно - даже вариантов нет :( Или я даже не понимаю, сколько всего я не понимаю...

 

2) Пусть та же ситуация, но заносить в таблицу нужно не только id, но и, допустим, тот же самый гулаг объекта. Т.е. чтобы в одном элементе таблицы хранилось не одно значение, а несколько (известно, сколько и какого типа значения, но неизвестно, сколько всего элементов). Такие сложные таблицы я встречал, но везде, насколько помню, значения задавались изначально при объявлении. Как быть в таком случае?

Мои работы:

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

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

Soul Cube

 

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

Kirag, не знаю точно, но это помочь может.

 

1) А может вот так:

gulag_members[gulag] = {}
table.insert(gulag_members[gulag],v:id())

И проверьте gulag, вдруг nil. (в скрипте сверху gulag - это типа "гулаг", а ниже - уже типа "number".

 

2) Наверно, просто элемент таблицы нужно объявить как таблицу, т.е.:

local table = {}

local i

for i = 1, 5 do

table = {}

end.

 

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

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

повторю вопрос:

"как смотреть/править в xrspawner? вроде нашел волка esc_wolf поменял - в новой игре фиг, дохнет зараза :( "

это я хотел нпс класс сахарова сделать - для их бессмертия.

помогите, а?

з.ы.: в нлс5 есть обмен артов на вещи - где это править?

з.ы.ы.: такая ситуация:

в каждой новой игре повторяется наезд военных на лагерь новичков. где/как это исправить?

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

cc31

Используй ACDC, xrspawner половину параметров не возьмет.

Мои работы:

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

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

Soul Cube

 

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

Kirag, вы попробовали элемент таблицы объявить как таблицу? см. мой пост выше.

local table = {}

table[1] = {}

table.indert (table[1],db.actor:id())

  • Полезно 1

IQDDD

 

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

 

local gulag_members = {} -- основная таблица

function get_gulag_members(gname)
    local current_gulag_members = {} -- подтаблица конкретного гулага
    local gulag = xr_gulag.get_gulag_by_name(gname)
    if gulag == nil then
        return 
    end
    for k,v in pairs(gulag.Object) do
        if (v == true or ( v:alive() and    -- 
           not(xr_wounded.is_heavy_wounded_by_id(k) or
               xr_wounded.is_psy_wounded_by_id(k)))) and
            gulag.Object_begin_job[k] == true
        then
            if type(v) ~= "boolean" then
                table.insert(current_gulag_members,v:id()) --заносим в подтаблицу все, что нужно
            end
        end
    end
    gulag_members[gname] = current_gulag_members --запихиваем готовую подтаблицу в нужный индекс основной
end

function read_gulag_members(gname)
    local gm = gulag_members[gname] -- рабочая таблица - элемент основной с нужным индексом
    if gm == nil then -- если пустая - создаем
        get_gulag_members(gname)
        gm = gulag_members[gname]
    end
    for k,v in pairs(gm) do
        qqq(v) -- делаем все, что нужно. qqq - тестовый вывод в сообщение на экран и в лог
    end
end

 

Мои работы:

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

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

Soul Cube

 

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

Уважаемые, такой вопрос: Как в кпк, в раздел энциклопедии, добавить информацию о новом предмете, например об новом оружии, которого уже навалом.?

Мои работы ТЫЦ

мужики, может кто-нить кинуть в меня линком на чистый мод ARC (контейнеры) последней версии?

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

Storyteller

 

Например, мутанты добавляются так:

 

В config\gameplay\info_known_objects.xml добавляется инфопоршень:

<info_portion id="encyclopedy_mutant_chimera_general">

<article>mutant_chimera_general</article>

</info_portion>

 

 

В config\gameplay\encyclopedia_mutants.xml добавляется сама статья, прописанная в <article>...</article>:

 

<!-------------------------------- CHIMERA ----------------------------->

 

<article id="mutant_chimera_general" name="Chimera" group="Mutants">

<texture>ui_npc_monster_chimera</texture>

<text>enc_mutant_chimera_general</text>

</article>

 

В config\ui\ui_npc_monster.xml добавляется ссылка на иконку из <texture>...</texture> (само собой, координаты должны быть правильными):

 

<texture id="ui_npc_monster_chimera" x="330" y="324" width="165" height="108" />

 

В config\text\rus\string_table_enc_mutants.xml добавляется сам текст статьи из <text>...</text>:

 

<string id="enc_mutant_chimera_general">

<text>1.4 м. Результат генетических экспериментов по программе (универсальное животное-защитник) УЖАЗ?.

- Очень умная, сильная и быстрая тварь.

- Прячется, обходит со спины.

- Дублированная система внутренних органов и дополнительный мозг делает процесс ее умерщвления весьма проблематичным.

- Регенерация.

- Биологических врагов мало.

- В движении напоминает пантеру.

- Единственные достойные противники в мире зоны - чернобыльский пес и псевдогигант.</text>

</string>

 

Сюда же добавляется название статьи из поля name тега article:

 

<string id="Chimera">

<text>Химера</text>

</string>

 

При выдаче инфопоршня encyclopedy_mutant_chimera_general статья попадет в энциклопедию в раздел из поля group тега article.

Мои работы:

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

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

Soul Cube

 

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

Kirag, за ответ спасибо, но встречный вопрос, как именно происходит выдача инфопоршня, ну я имею ввиду- его надо самостоятельно привязывать к чемуто или как?

Мои работы ТЫЦ

Storyteller, инфопоршень можно получить всего тремя путями:

1. Через диалог. <give_info_portion></give_info_portion>

2. Через логику. +

3. Через скрипты. db.actor:give_info_portion()

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

Мои работы ТЫЦ

Storyteller, это способ через скрипты. думаю, вам ответ либо товарищ Gonarh, либо мастер malandrinus. Мне кажется, что надо делать так: сделать у пушки собственный sid. В actor_binder:on_item_take(obj), что находится в bind_stalker написать:

local sid = [заготовленный sid]
if obj:story_id() == sid then
db.actor:give_info_portion("info_take_item_art_1")
end

malandrinus, так?

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

почти, стори_ид тут не нужон:

if obj:section() == "название_новой_пушки_например_wpn_ak47" then
  db.actor:give_info_portion("info_take_item_art_1")
end

код впихачить - правильно сказал в actor_binder:on_item_take(obj), что находится в bind_stalker

Gonarh, а ты разобрался с методом berserk() ?

пока некогда займусь после выходных

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

Спасибо за отвыет. Если и деаль адоптации новых стволов, то уж полностью и со всеми вытекающими, ато не серьезно как-то получается, так что буду прописывать. Закончу свою сборочку обязательно выложу. Еще раз всем спсибо за помощ.

Мои работы ТЫЦ

Ув. камрады, можно ли через консоль во время игры подгружать файлы конфигов оружия, торговцев и т. д.? В списке консольных команд вроде ничего подходящего не нашел. А то до невозможности надоело перезапускать игру после каждой правки конфигов.

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

 

Daeron, cам таким пользуюс ;)

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

Vita sine libertate, nihil

Vita sine litteris - mors est

RvP, спасибо. Жаль конечно, что нельзя. Но вариант с завершением игры неплох. Попробую.

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

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

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

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

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

Войти

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

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

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