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

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


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

self.npc:eat(self.npc:object("medkit_scientic")) -- или любая другая аптечка

а это восстанавливает здоровье.

 

замени на

local a = 0.3 -- величина,на которую увеличить здоровье

self.npc.health = self.npc.health + a

 

Ну как то так))

Мб я не прав, и метод eat() на нпс не так,как на ГГ действует,но попробуй...

 

Kirag, я первый)))

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

wolkolak

Попробуй вместо self.npc:eat(self.npc:object("medkit")) написать self.npc.health = self.npc.health + N, где N - прирост здоровья.

Мои работы:

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

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

Soul Cube

 

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

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

Kirag,

В корне неверно.

health - это не уровень здоровья . Это как раз и есть "прирост здоровья". То-есть надо не так

self.npc.health = self.npc.health + N, где N - прирост здоровья.

Правильно будет

self.npc.health = N, где N - прирост здоровья.

=========================================

wolkolak, я так понимаю, что ты пытаешься выличить НПС аптечкой от ГГ. Не ищи сложностей в этом лечении. тебе ведь главное. чтобы НПС встал и пошел? Так создай ему эти условия, чтобы он вышел из "состояния ранености". Так ли важно, на сколько он выличился?

НЛС-6: У каждого своя зона

_______________________________________________________________

Не ищи легких путей и не возвращайся той же дорогой

Ссылка на комментарий
А вот в скриптах постоянно встречается self? Что это за self?

Встречается только в методах классов. Означает "этот объект" или иными словами "объект, для которого вызван метод"

 

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

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

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

 

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

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

 

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

 

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

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

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

 

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

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

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

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

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

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
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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