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

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


Halford

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

@ins33, visuals у тебя - это же массив. А в пакете визуал - строка.

То есть, должно быть так:

data.visual_name = [[actors\hero\stalker_killer]]
Изменено пользователем naxac

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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


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

Предметы надо не передавать, а удалять...

Почему? Можно и передавать, какая разница..

 

 

Из диалога:

function transfer_spirt(fs, ss)
  local npc = (fs:id()==0 and ss) or fs
  local cnt = db.actor:object_count()
  local ch=0
  local item
  for i=0, cnt-1 do
    item = db.actor:object(i)
    if item:section() == "c2h5oh" then
      db.actor:transfer_item(item, npc)
      ch = ch+1
      if ch == 10 then --7 - кол-во удаляемых предметов
        break end
      end
    end
  end
end

 

Изменено пользователем naxac
  • Спасибо 1
  • Полезно 2

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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


Ссылка на сообщение
@PTB, bound_rect в секции global_map в game_maps_single.ltx Изменено пользователем naxac
  • Спасибо 1
  • Полезно 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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


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

@Jizzy, когда не знаешь, кто из собеседников, передаваемвх в функцию, актер, а кто нпс, делай так:

function case_sold_out(first_speaker, second_speaker)
  local npc = (first_speaker:id()==0 and second_speaker) or first_speaker
  dialogs.relocate_item_section(npc, "case_to_sold", "out")
end
А в первой функции - ты же проверяешь наличие предмета у актера, так и используй ссылку на объект актера из db.script:

function have_case_sold(first_speaker, second_speaker)
  return db.actor:object("case_to_sold") ~= nil
end
  • Спасибо 1
  • Полезно 2

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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


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

@AndrewMor, если при спавне предмета в инвентарь объекта объект находится в онлайне, то нужно либо поместить объект в оффлайн до выхода в онлайн заспавненного предмета, а через небольшое время вернуть обратно в онлайн. Либо после выхода в онлайн предмета сделать трансфер его из объекта в тот же объект - как-бы сымитировать, что он там не сам появился, а его туда положили.

Такой глюк движка...

@dsh, забыл написать функцию fix_spawn_item_in_inv - сам каллбэк, в котором происходит трансфер.

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

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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


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

Поэтому, чтобы не ждать , можно просто трансферить предмет при выходе его в онлайн из ящика в него же - это и делает функция, которую написал @dsh. Но тут тоже есть одно "но" - она предназначена для спавна в клиентских InventoryOwner'ов, так что придется дождаться выхода в онлайн заспавненного тайника.

 

А вообще можно - самое простое - добавить ящику custom_data в секцию, в файле которой прописать в секции spawn нужные предметы.

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

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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


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

мне нужно понять, этот предмет я получил во время игры или этот предмет был получен до загрузки игры.

Отлавливай в той функции, в которой предмет выдается.

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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


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

@CRAZY_STALKER666, можно сделать перебором таблицы db.storage - она намного меньше, чем 65535.

local obj
for k in pairs(db.storage) do
   obj = level.object_by_id(k)
-- и т.д....
Изменено пользователем naxac
  • Спасибо 1
  • Полезно 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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


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

таблица db.creatures

В солянке в ней хранятся онлайновые нпс и монстры,

id = game_object

 

А в ОП-2 еще и рестрикторы туда по ошибке запихали. А, может, это еще с солянки осталось...

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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


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

@Kondr48,

alife():set_switch_online(box.id, true)
alife():set_switch_offline(box.id, false)
Потом немного подождать, пока он (ящик) выйдет в онлайн, и можно трансферить предметы.

 

@IQDDD, добавь в секцию задания, которое нужно реже повторять, параметр:

idle_time = время в игровых секундах

Через это время после выполнения оно снова будет доступно. По умолчанию в чистой игре стоят одни сутки.

Изменено пользователем naxac
  • Спасибо 2
  • Нравится 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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


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

как отловить момент создания аномалии при активации артефакта

Через биндер - на net_spawn'е - можно отловить выход аномалии в онлайн.

Удалить можно через таймер - если в моде есть таймеры на подобии амк-шных.

 

Можно ли через диалог получить координаты тайника в ТЧ?

Это как? Тебе надо в диалоге отобразить местоположение тайника? Изменено пользователем naxac

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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


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

@AndrewMor, биндер - это скриптовый класс, наследуемый от движкового класса object_binder, который можно "прикреплять" к клиентским объектам.

Подробнее можно почитать здесь. Его метод nеt_spawn срабатывает при выходе объекта в онлайн. В нем же можно и запустить таймер на удаление.

Примеров биндеров а игре много - они есть в bind_stalker.script, xr_motivator.script, bind_monster.script.

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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


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

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