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

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

Ребята, вопрос идиотский, но я вот адаптировал схему компаньоны к амк моду. В итоге всё гладко, но с трупов кроме пистолетов, гитар и гармошек ничего не падает. Я уверен, что ошибка в скриптах, подскажите плиз.

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

хзхзхзхз

А что еще должно падать? Может я не знаю чего, но помоему падают обычно те предметы которые у нпс были в наличии при жизни.

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

У НПС падают только их стволы и всякая хрень вроде пда, гитары, гармошки. А патронов ниукого нет, как будто они у них только в стволе были=((

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

Вопрос к знатокам. У меня есть два класса - "SV_DM" и "CL_DM". Первый является серверным классом для дедматча в мп, а второй является клиентским классом для дедматча. В функции register файла game_registrator регистрирую их:

object_factory:register ("game_last_sv.game_sv_LastStanding","SV_DM","game_sv_LastStanding")

object_factory:register ("game_last_cl.game_cl_LastStanding","CL_DM","game_cl_LastStanding")

 

Но проблема в том есть мой серверный класс вызывается, а вот клиентский - нет. Где ошибка? Файл "game_last_cl кешируется

Freedom

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

Задался вопросом, как убрать значение из пстора. Делал так

local key = "key_1"
local vol = nil
xr_logic.pstor_store(db.actor,key,vol)

При этом общеизвестная ругань:

Arguments : LUA error: e:\stalker\gamedata\scripts\_g.script:20: bad argument #2 to 'format'

Как нормально удалить значение из пстора?

PS: понял, почему вылетает, но вопрос еще открыт.

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

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий
KD87, ну это напрямую, а если в xr_logic.pstor_is_registered_type(tv) добавить еще одну проверку tv ~= "nil"? Думаю он и nil запишет без выпендрежа :)

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий
Zander_driver ... падают обычно те предметы которые у нпс были в наличии при жизни

Обычно, с трупа удаляется большинство того, что было 'при жизни' и спавнится 'лут' (loot), т.е. то, что прописано в конфигах для спавна при смерти.

 

 

speczadanie, список остающегося у ГГ при заходе на Арену практически нерегулируем. Удаляются предметы методом итерации по всему рюкзаку (inventory_for_each), при котором остаются только квестовые предметы и предметы с меткой 'не торговать'. Хочешь изменить список - изменяй метод на свой.

 

 

_Призрак_, тебе стОит почитать материалы из "Справочника по классам и функциям". Как минимут в этом вопросе важна информация 'на какой игре' (ТЧ/ЧН/ЗП) ты экспериментируешь.

 

 

Desertir, не говори глупость. 'nil' - не записывается! Это азы Lua и пр. программрования. Присваивание 'nil' ключу в массиве - это по сути удаление этого ключа (вместе с его значением), если такой ключ существовал.

 

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

speczadanie, Как можно получить все предметы в инвентаре игрока, не помещенные в слоты?
Пробегаешь итерацией по рюкзаку игрока (iterate_inventory) и исключаешь все предметы, которые находятся в слотах (if not db.actor:item_in_slot(N) then ...).

 

(что-то банальные вопросы пошли задаваться, для получения ответа на которые достаточно всего лишь половинкой своей извилины шевельнуть ...)

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Artos,

'nil' - не записывается! ... Присваивание 'nil' ключу в массиве - это по сути удаление этого ключа (вместе с его значением), если такой ключ существовал.

всё-таки nil записывается, поскольку это - одно из возможных значений переменных, такое же законное, как и любое другое. Будет при этом удалена переменная или нет, зависит от того, где она находится. Если в стеке, то никуда не денется до конца блока кода, если в таблице, то будет удалена при определённых условиях. Насчёт таблиц мы же это даже вместе выясняли.

 

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

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

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

 

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

Artos

 

Согласен, но патроны никогда не удаляются. Где-то я со скриптами накасячил, и даже неизвестно, где искать. А если сделать даже малейший неправильный шаг - вылет. Бесит уже((

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

malandrinus

Наверное не стОит нам заниматься тавтологией ... ;-) (записать/запомнить 'ничто' - невозможно)

Записывается ли 'nil' или это 'первичная инициализация' или же 'обнИление/очистка' ... каждый по своему воспринимает в зависимости от контекста.

В данном контексте вопроса - "запись" в массив 'pstor' в качестве значения ключа nil'а - это именно удаление/стирание/обнИление поля в массиве (стек вообще тут не поминаем).

Заносить, как сделано в АМК и как предложил Desertir в метод записи данное значение как одно из возможных - дело вкуса, конечно.

По сути, исходный (в игре) метод называется запись (сохранение - stor) и разработчиками, которые НЕ дали такую возможность (сохранять nil), именно попытка такого "сохранения" считается ошибкой. Плохо это иль хорошо - зависит от задач, которые преследует кодер/программист.

KD87 дал как раз недостающий для 'классического' варианта метод 'xr_logic.pstor_delete(db.actor,key)', который более правильно бы добавить для 'чисток', чем 'извращать' 'сохранение'. Попытка сохранить 'nil' в оригинальной игре является именно ошибкой, которая может при принудительном сохранении "записанного" повлечь последствия (в тот же нет-пакет - 'nil' уже не записать!).

 

 

хзхзхзхз, вмеcто 'беситься', стОит перепроверить свои правки ... А тут гадать что ты там у себя наковырял - бесперспективно. Перепроверяй 'death_manager.script'.

 

 

_Призрак_, тогда расшифровывай свое:

Но проблема в том есть мой серверный класс вызывается, а вот клиентский - нет.
Не верю что к классу не идет обращение из регистратора. А вот будет ли создан объект этого класса и будет ли к этому объекту (а не классу!) обращение - это уже разбираться в кодах.

Что в твоем понимании 'вызов класса'?

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

_Призрак_

Тоже сталкивался с этой проблемой, ты пробовал второго человека подключать и смотреть у него? Может для создателя сервера клиентский класс не работает полностью. =\

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

Вот кусок скрипта на ТЧ:

if db.actor.radiation>0.3 then
   if db.actor:object("bread") then 
      del_item(db.actor:object("bread"))
      spawn_item("bread_rad")
   elseif db.actor:object("kolbasa") then 
      del_item(db.actor:object("kolbasa"))
      spawn_item("kolbasa_rad")
   elseif db.actor:object("chocolate") then 
      del_item(db.actor:object("chocolate"))
      spawn_item("chocolate_rad")
   end
end

При входе в радиацию у актера удаляется еда и добавляется новая, радиоактивная, но игра ругается на этот код.

Вот функции:

function spawn_item(item)
alife():create(spawn_item, db.actor:position(),    db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end

function del_item(item)
local obj = alife():object(item:id())
alife():release(obj, true)
end

Где ошибка?

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

Darkscape

Всегда лог прикладывай.

Кроме ошибки, указанной Desertir-ом пока ничего не видно.

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

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

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

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

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

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

Войти

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

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

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