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

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

1 минуту назад, Muzafir сказал:

delta-update работает

Таки будет работать, и не только там. Только процессор нагружает.

Здесь могла быть ваша реклама.

Ссылка на комментарий
Только что, Muzafir сказал:

Если вешаю на нет_спаун, выше, строчек 

--' Загружаем настройки дропа
    death_manager.init_drop_settings()

Как только в перестрелке кого-либо убивают, получаю вылет с руганью на этот death_manager. script

Если после него просто ничего не происходит.

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

Маловероятно, но сия дичь все бы объяснила.

А таки попробуй свой код поставить выше death_manager-a. Ничего ему от этого сделаться не должно, если у него все нормально. А как вылетит - лог вылета в студию, т.е. сюда.

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

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

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

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

 

3 минуты назад, mole venomous сказал:

Только процессор нагружает.

Я это понимаю, поэтому и хочу сделать по-человечески. 

Только что намеренно написал название локации неправильно. Никаких вылетов. 

Выходит это условие не проверяется?

Ссылка на комментарий
Только что, Muzafir сказал:

написал название локации неправильно. Никаких вылетов. 

Дык он "написанное" сравнивает с тем, что возвращает level.name(). В "написанном" что угодно может быть, вылета от этого не будет. Ты все же проверь так как я тебе написал.

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

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

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

Ссылка на комментарий
1 минуту назад, Muzafir сказал:

Выходит это условие не проверяется

Проверяется, но здесь вылета не получишь. Запроси выдачу ложного поршня после проверки локи и поймёшь.

Здесь могла быть ваша реклама.

Ссылка на комментарий
2 минуты назад, Zander_driver сказал:

Дык он "написанное" сравнивает с тем, что возвращает level.name(). В "написанном" что угодно может быть, вылета от этого не будет. Ты все же проверь так как я тебе написал.

ок, сейчас догнал

Если поставить выше деф-менеджера вылет такой:

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...a.l.k.e.r. soc\gamedata\scripts\death_manager.script:135: bad argument #1 to 'pairs' (table expected, got nil)

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

Вот теперь интересно, а что у него в 135 строке.

И нынешний код в net_spawn покажи)

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

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

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

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

Нынешний код:

function actor_binder:net_spawn(data)
    printf("actor net spawn")        

    level.show_indicators()

    self.bCheckStart = true
    self.weapon_hide = false -- спрятано или нет оружие при разговоре.
    weapon_hide = false -- устанавливаем глобальный дефолтовый флаг.

    if object_binder.net_spawn(self,data) == false then
        return false
    end

    db.add_actor(self.object)
    
    if self.st.disable_input_time == nil then
        level.enable_input()
    end

    self.weather_manager:reset()
--    game_stats.initialize ()

    if(actor_stats.add_to_ranking~=nil)then
        actor_stats.add_to_ranking(self.object:id())
    end

    if (level.name() == "simeiz") and 
        not has_alife_info("keep_base_defend_started") then
        self.object:give_info_portion("keep_base_defend_started")
    end

    --' Загружаем настройки дропа
    death_manager.init_drop_settings()
    
    

    return true
end

 

 

 

death_manager - стандартный. Я только в конце одной строки дописал новую группировку. На количество строк это не повлияло 

135 строка - это  for k,v in pairs(spawn_items) do

 

  --' Доспавниваем необходимое количество итемов:
    --' Необходимо составить список объектов которые могут быть заспавнены для персонажа

    local spawn_items = item_by_community[self.npc:character_community()]    
    for k,v in pairs(spawn_items) do
        --' По каждому объекту необходимо получить зависимости    
        if check_item_dependence(self.npc, k) == true then
            --' По каждому объекту необходимо получить количество
            local number = math.ceil(math.random(count_by_level[k].min, count_by_level[k].max))
            --' Необходимо заспавнить нужное количество.
            create_items(self.npc, k, number, v)
        end
    end
end

Изменено пользователем Muzafir
для наглядности
Ссылка на комментарий
7 минут назад, Zander_driver сказал:

а что у него в 135 строке

Подозреваю, что у него в конфигах что-то не так по итемам на этой локации

Здесь могла быть ваша реклама.

Ссылка на комментарий
Только что, Muzafir сказал:

дописал новую группировку.

 

Только что, Muzafir сказал:

local spawn_items = item_by_community[self.npc:character_community()]

А в настройки дропа эту группировку занес?

Или заноси, или перед for добавляй проверку if spawn_items and type(spawn_items) == 'table' then

Он же пытается получить настройки дропа для группировки... а потом их перебрать.

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

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

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

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

Вносил, точно помню. Сейчас перепроверю, может накосячил там где-то

На всякий, настройки дропа - это death_items_by_communities.ltx?

Проверил, как ты сказал - и название локации и инфопорция точно правильны

Ссылка на комментарий
Только что, Zander_driver сказал:

if spawn_items and type(spawn_items) == 'table' then

Проверку добавь тогда.

  • Спасибо 1

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

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

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

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

 В death_items_by_communities.ltx косяка нет. Я просто скопировал секцию и переименовал. 

Добавлю твою проверку. Еще раз спасибо.

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

Здрасьте.

 

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

Spoiler

function sms(text)
	news_manager.send_tip(db.actor, text)
end

function coords(cell)
	local act = db.actor

	local pos = act:position()
	pos.x = math.modf(pos.x)
	pos.y = math.modf(pos.y)
	pos.z = math.modf(pos.z)

	sms("xyz = " .. pos.x .. ", " .. pos.y .. ", " .. pos.z)

	if cell then
		local lvid = act:level_vertex_id()
		local gvid = act:game_vertex_id()
		sms("lvid, gvid = " .. lvid .. ", " .. gvid)
	end
end

 

 

ТЧ, Кордон, крыша вагона над Кузнецовым: lvid = 359827, gvid = 97. Объект с такими параметрами ячейки спавнится в указанном месте.

ЧН, Кордон, крыша элеватора: lvid = 310050, gvid = 571. Объект с такими параметрами ячейки обнаруживается на сервере, но остается невидимым. Если задать lvid = 25 и gvid = 472, как в секции [all.spawn] для Кордона, объект отспавнится правильно.

Что изменилось в расчете позиций ячеек в ЧН и как получить действующие значения lvid и gvid?

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

Здравствуйте.
Я опять насчёт меток на ящиках.
Способ по визуалу работает, но частично. В Кордоне например, метки не ставятся, в лог пишет "alife():object(id) ! invalid id specified". Но в Баре всё работает, в лог выводится:

box object [physic_destroyable_object:1063] detected. visual=dynamics\box\box_metall_01

С способом по логике drop_box получше. Отображаются везде, но есть две мини-проблемы:
1) Если нажать ЛКМ или подвигаться, то метки пропадают.
2) После уничтожения ящика, метка всё еще остается. Исчезают после перезагрузки сейва.

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

Что-то не едут у меня лыжи... Есть у меня скрипт на проверку статика заклинивания оружия:

function jamupdate()
    local snd = sound_object([[actor\wpn_jammed\stalker_1]])
        if get_hud():GetCustomStatic("weapon_jammed_static") and not snd:playing() then
        snd:play_at_pos(db.actor, vector():set(0,0,0), 0, sound_object.s2d)
    end
end

Который должен воспроизводить звук ГГ при заклинивании ствола... Куда его вешать на апдейт, чтобы статик отлавливался, в биндер актора? P.S. функция в _g.script:

function on_actor_weapon_jammed()
  if has_alife_info("esc_trader_newbie") then
    game.start_tutorial("part_9_weapon")
  end
  if not has_alife_info("encyclopedy_tutorial_weapon") then
    db.actor:give_info_portion("encyclopedy_tutorial_weapon")
  end
end

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

  • Нравится 1
Ссылка на комментарий

@Капрал Хикс, а на каком движке эти движенья делаются?

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

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

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

Ссылка на комментарий
Только что, Капрал Хикс сказал:

X-ray extentions

На нем, если надобно отловить заклинивание ствола, делается это примерно так:

-- вешать на апдейт
local act_item = db.actor:active_item()
if act_item then
	local wpn_state = act_item:get_wpn_int(nil, 652)
	if wpn_state == 7 then
		-- тут воспроизводить звуки. Состояние 7 - это заклинившее оружие.
	end
end

 

  • Спасибо 1
  • Полезно 3

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

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

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

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

@Zander_driver, отлично всё работает, благодарствую, сейчас буду модифицировать под звуки в костюме с противогазом. А вот вопрос посложнее - как сию фишку с руганью реализовать для ЧН? OGSM CE 1.8, если что.

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

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