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

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

7 часов назад, Norman Eisenherz сказал:

при использовании оптического прицела.

Когда-то давно нашел такую ф-цию, что-то в ней правил, в общем так:

Скрытый текст

 

function Get_wpn_mode(wpn_id)

    local sobj = alife():object(wpn_id)

    local table_param = {}

    local clsid_sobj = sobj:clsid()

    local np = net_packet()

    np:w_begin(0)

    sobj:UPDATE_Write(np)

    np:r_seek(2)

 

    -- для стволов с ПГ --

    if clsid_sobj == clsid.wpn_ak74_s or clsid_sobj == clsid.wpn_groza_s then

        table_param["upd_grenade_mode"] = np:r_u8()

    end

    table_param["unknown1"] = np:r_u8()

    if table_param["unknown1"] and table_param["unknown1"] == 0 then         --/ читаем общие для всего оружия параметры

        table_param["upd_condition"] = np:r_u8()

        table_param["upd_weapon_flags"] = np:r_u8()

        table_param["upd_ammo_elapsed"] = np:r_u16()

        table_param["upd_addon_flags"] = np:r_u8()

        table_param["upd_ammo_type"] = np:r_u8()

        table_param["upd_weapon_state"] = np:r_u8()

        table_param["upd_weapon_zoom"] = np:r_u8()

        table_param["upd_current_fire_mode"] = np:r_u8()

        -- для шотганов --

        if clsid_sobj == clsid.wpn_shotgun_s or clsid_sobj == clsid.wpn_bm16_s or clsid_sobj == clsid.wpn_rg6_s then

            table_param["upd_ammo_ids"] = np:r_u8()

        end

    else

        --/ читать пакет нужно более продвинутым способом!

    end

 

    return table_param["upd_weapon_state"],table_param["upd_weapon_zoom"],table_param["upd_grenade_mode"]

end

 

использование:

local obj_in_sl = db.actor:item_in_slot(нужный слот оружия)

local weapon_state, weapon_zoom, grenade_mode = Get_wpn_mode(obj_in_sl:id())

 

Думаю, для твоих целей сгодится.

  • Полезно 1
Ссылка на комментарий

Господа, доброго времени! Подскажите, как можно зациклить звуки эмбиента? Хочу сделать как в том же CS, например, ночью - постоянный звук сверчков...

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

звуки эмбиента ... например, ночью - постоянный звук сверчков...

Может с таким вопросом лучше в тему СДК ?

Ссылка на комментарий
7 часов назад, _Sk8_AsTeR_ сказал:

может есть скриптовый метод...

Есть ф-ционал проигрывания звуков. Вот тока зачем озвучку окружения лепить скриптами?

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

@AndreySol, путь наименьшего сопротивления, наверное. С СДК я дел не имел как таковых.

Господа, а есть вероятность научить НПС покидать лагеря и перемещаться в другие? Или иначе говоря как можно заставить НПС уйти из лагеря и просто гулять по зоне? Никто таким не занимался? Нет мыслей куда копать? 

 

Изменено пользователем _Sk8_AsTeR_
Ссылка на комментарий
17 минут назад, _Sk8_AsTeR_ сказал:

Нет мыслей куда копать? 

В логику копай. В логике НПСов можно задать смену гулагов по условию, можно вообще запретить занимать работы в любых гулагах. Много чего можно.

Ссылка на комментарий
5 hours ago, _Sk8_AsTeR_ said:

Никто таким не занимался? Нет мыслей куда копать?

Можешь попробовать покопать вот этот скрипт:

https://github.com/dsh2dsh/op2ogse/blob/master/gamedata/scripts/dsh/dsh_walking_stalkers.script

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

 

  • Спасибо 1
Ссылка на комментарий

@dsh, сопоставляя Ваш ник, имя скрипта и одноименного мода хочется задать закономерный вопрос - Вы автор скрипта? :) Чуть-чуть бы подробностей, и Вы бы осчастливили одного человека на этой планете! 

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

Комсомол не ищет легких путей (а еще ленится разбирать нетпакеты): вместо чтения флага съемного прицела из нетпакета пошел через fov. Метод не самый оптимальный в плане того, что оптику низкой кратности приходится исключать вручную, но общий размер кода меньше.

 

Spoiler

 

67,5    обычный режим
45        MP5
41,25    пистолеты и дробовики / РГ-6
37,5    автоматы / LR мод (1,5x)
37,12    бинокль мин

25        G36 / FN2K (3,6x)
22,5    SUSAT / ПСО-1 / РПГ-7 (4x)
15        SUSAT мод / ПСО-1 мод (5x)
11,25    ПСО-1 мод / гаусс (5,5х)
5,625    бинокль макс

 

 

Скрипт вывода состояния прицела:

Spoiler

[scripts\bind_stalker.script]

t_upd = 0

function actor_binder:update(delta)
	object_binder.update(self, delta)

	if t_upd < time_global() then
		t_upd = time_global() + 500

		local item = db.actor:active_item()
		if item and not string.find( "wpn_knife, bolt", item:section() ) then
			if device().fov < 67 then	-- режим прицеливания (базовый fov = 67.5)
				if string.find( "wpn_binoc, wpn_lr300_m1", item:section() ) then	-- бинокль (fov = 37.1 … 5.6)
					news_manager.send_tip(db.actor, "binoc or lr-300_mod")			-- или мод LR-300 (fov = 37.5)
				elseif device().fov <= 25 then		-- любая оптика кратностью 3.6x (G36/FN2K) и выше
					news_manager.send_tip(db.actor, "optical scope")
				else
					news_manager.send_tip(db.actor, "%c[ui_clr_2]iron sights")
				end
			else
				news_manager.send_tip(db.actor, "%c[gray]no zoom")
			end
		else
			news_manager.send_tip(db.actor, "%c[red]no weapon")
		end
	end
  
  

 

 

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

Шпаргалка

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

@_Sk8_AsTeR_, ты же просил покопать что-нибудь, а теперь подробности... Насчет подробностей - это скрипт нужно изучать. А вкратце, все начинается в periodic_job(). Обходятся все смарты, из них выбираются не эксклюзивные сталкеры. Чем дольше сталкер в лагере, тем вероятнее, что он будет выгнан. Формируется список тех, кого нужно выгнать и выгоняются. Запускается таймер на следующий обход и так по кругу. Сомневаюсь, что ты сможешь использовать этот скрипт как есть, но что бы покопать - подойдет.

 

Ссылка на комментарий
В 30.06.2019 в 14:24, _Sk8_AsTeR_ сказал:

как можно заставить НПС уйти из лагеря и просто гулять по зоне?

Гугли - SANEX A-LIFE MOD

Скрытый текст

Полный список изменений:

I.   Отключены гулаги на картах Кордон, Свалка, Агропром, Тёмная Долина, Бар, Дикая территория, Янтарь, Военные склады, Радар.
         1. Отключены Гулаги на вышеперечисленных картах для всех животных за исключением кровососов на Военных складах.
         2. На вышеперечисленных картах отключены гулаги для многих NPC (Не сюжетных!!)
II.  Отключены SMART-TERRAIN для: военных в подземелье Аграпрома, убраны SMART-TERAIN для всех бандитов на карте АГРАПРОМ, 
     в лабе икс 18 для бандитов (а они там есть?), на Янтаре для Долга, на радаре для зомби. Также отключены SMART-TERRAIN для ВСЕХ монстров.

III.   Увеличен радиус действия А-ЛАЙФ со 150 метров до 300 метров.
IV. Исправлены ошибки с собаками, нападающими на лиса, и кабанами, нападающими на блокпост долга....

Описание мода:

Как вы все наверное знаете, разработчики игры обещали нам уникальную систему жизни. Существа зоны должны жить своей 
жизнью. На деле это оказалось немного не так: существа действительно живут своей жизнью, но только внутри определённой 
зоны. За эту зону они могут выйти при двух условиях: 1. Они за кем-то гонятся. 2. Они от кого-то убегают. Вот и 
получается, что, допустим на локации кардон, собачки недалеко от вагончика будут бродить там вечно, пока не наступит 
одно из вышеперечисленных условий. Я в своём моде убрал эти зоны для ВСЕХ животных, и для некоторых людей. Что
получается? Например всё теже собачки у вагончика, теперь могут пойти, например, к раненому сталкеру и съесть его. 
Существа зоны теперь могут свободно передвигаться по всей карте. Это порождает очень большое колличество интересных 
ситуаций. Например огромная стая собак, штук 20, гналась за плотями. Собаки эти раньше сидели в своей зоне-гулаге, 
но когда я их отпустил, они пошли к плотям, и напали на них. Тоже самое с людьми. Например в лагере новичков. Раньше 
из этого лагеря никто не уходил, но теперь из лагеря переодически уходят 1-2 сталкера. 

В моём моде спокойно работают ВСЕ квесты, кроме некоторых. 
Мой мод получил очень хорошие отзывы на офф. форуме игры. Качаем мод, и видим тот a-life, который нам так долго 
рекламировали разработчики игры!!!

Существуют разные версии мода на разные версии ТЧ и модификаций.

 

 

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

@Space.Marine, Это немного не то. Убирать гулаки как раз не здорово. Нужно именно насильно выпроваживать их из лагеря в другой лагерь, таким образом имитируя в зоне бурную деятельность и случайные встречи с другими группировками

Господа, а еще вот такой вопрос: между звуковыми фразами НПС существует какая-то странная неприятная задержка. Как ее можно свести к минимуму?

Пример, сталкеры у костра, анекдоты травят:
-А чего я как-то слышал

Непонятная пауза в 2-3 секунды

-Сам анекдот

Снова непонятная пауза

-реакция на шутку от других НПС

Как можно убрать эти паузы?

Ссылка на комментарий
3 часа назад, AndreySol сказал:

В радиусе 150м от ГГ.

Правильнее сказать, в радиусе А-лайфа, он может быть другим.

Сталкер - наше всё!

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

Блин, не хватает своих мозгов смекнуть, как убрать эти паузы между фразами НПС. Ребят, есть предположения куда ковырять? 

Суть: Убрать или свести паузы между фразами НПС, то есть между ИНТРО_ДЖОКЕ и самой шуткой, например, как это в той же CS реализовано. Есть идейки?

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

Убрать паузы между фразами НПС

Если речь о ТЧ, то копать нужно файл xr_kamp.script.

Точно не знаю, что нужно править, но...

Нужно присмотреться к таблице self.timeout в CKampManager:__init, а также к вызовам xr_sound.set_sound_play в CKampManager:updateNpc, в тех где sound == "pre_joke" и sound == "play_joke", ну  и т.п.

  • Спасибо 1

S.T.A.L.K.E.R. CoP Objects (upd 11.03.24)

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

Ребята, в конфиге оружия (любого) есть некий параметр -> orientation = 3, 0, 0  : можно ли во время игры изменить параметры, которые заданы в файле *.ltx? Именно скриптом? Там может нетпакетами как-то и т.д... Вот логигу-же можно менять неписям через нетпакеты, может и значения можно? Перезаписывать данные в самом LTX - не обязательно, мне бы именно в игре изменить (хотя если можно LTX менять - то тоже пойдёт) меня конкретно интересуют именно параметры orientation = 3, 0, 0 , ну, вот например во время игры изменить 3 на 0 , возможно такое? Уже пару недель шукаю по всему интернету - не могу ничего путёвого найти ... Буду безмерно благодарен.

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

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

Здрасьте.

 

Есть ли способ перебора только онлайн-объектов без перебора всех объектов на карте? Скажем, надо обнаружить противника в заданном радиусе, меньшем радиуса A-life.

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

Шпаргалка

Ссылка на комментарий
1 час назад, Norman Eisenherz сказал:

Есть ли способ перебора только онлайн-объектов без перебора всех объектов на карте?

Чем перебор объектов плох ? Если вызывать разово, по необходимости, а не вешать на апдейт в биндере актера...

 

Если очень надо именно без перебора всех объектов, то надо смотреть в сторону регистрации он-лайновых объектов в глобальную таблицу(в том же db.script к примеру). Судя по "надо обнаружить противника" разговор идет за НПСов, значит надо доделать в xr_motivator.script, в классе биндера регистрацию неписей в нет-спавн и отрегистрацию в нет-дестрой. Там кастати есть попытка такой регистрации\отрегистрации:

function motivator_binder:net_spawn(sobject)
    if not object_binder.net_spawn(self, sobject) then
        return false
    end

    db.add_obj(self.object) <- тута добавляем в таблицу

....

function motivator_binder:net_destroy()
    local st = db.storage[self.object:id()]
    if st.active_scheme then
        xr_logic.issue_event(self.object, st[st.active_scheme], "net_destroy", self.object)
    end

    db.del_obj(self.object) <-- тута убираем из таблицы

...

Тока вышеуказанные ф-ции в db.script выглядят так:

function add_obj(obj) <-- пустышка
end

function del_obj(obj)
    storage[obj:id()] = nil
end

Надо подумать, что же в таблице хранить, и доделать ф-ции.

 

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

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