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

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

@dsh, великолепно, всё работает!

И позволь под конец еще понаглеть 

У тебя нет распаковщика\упаковщика подобного для all.spawn соли16 огср?

Уж очень хочется поэкспериментировать с переносом той точки...

Изменено пользователем _Sk8_AsTeR_
Ссылка на комментарий
1 hour ago, _Sk8_AsTeR_ said:

У тебя нет распаковщика\упаковщика подобного для all.spawn соли16 огср?

Нету. Но я сомневаюсь, что там нужно что-то специальное. 

 

1 hour ago, _Sk8_AsTeR_ said:

Уж очень хочется поэкспериментировать с переносом той точки...

Какой точки? AI переходы находятся в game.graph, не в all.spawn. 

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

@dsh, Не, подвинуть хочу не точку АИ перехода (ибо вроде как в этом нет смысла), а координаты того смарта, в который неписи сбегаются свободные в оффлайне разных группировок, "bar_visitors" которая вчерашняя. Или я опять всё напутал? 

Вот в этом посте я вроде описал ситуацию. 

А game.graph я хотел поковырять еще для других целей, и для саморазвития 

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

@_Sk8_AsTeR_, тебе на самом деле нужно убрать вот эту ситуацию

1 hour ago, _Sk8_AsTeR_ said:

сбегаются свободные в оффлайне разных группировок

В bar_visitors нужно принимать только дружественные группировки. Просто перечисли их в скрипте. Вот и все. Исправлять нужно причину, а не следствие. 

 

Немного теории. Позиция самого смарта никакой роли не играет. Неписи идут туда, куда им указывают пути назначенных им работ. Параметры этих путей в движке OGSR можно поменять черен конфиг. all.spawn для этого трогать не обязательно. 

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

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

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

Мне нужно чтобы ГГ получал задание после перехода на локацию.

В момент нет-спавна ГГ проверяй, на какой локации он загрузился. Если совпало с нужной локой - выдавай задание. Никаких рестрикторов для этого не надо.

  • Согласен 4

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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


@Muzafir, как то так...

Цитата

 

function blablabla()
    local lname = level.name()
    if (lname == "название локации") then

Функция получения квеста()

end

end

Это дело вешается на кэллбэк net_spawn.

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

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

 Моя нычкаНычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

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

@dsh

2 часа назад, dsh сказал:

нужно принимать только дружественные группировки

Да я тут подумал что в таком случае пропадёт эта прикольная фишка, когда и территория бара не является абсолютно безопасным местом. Не зря же охрана стоит на блок-постах? :) Да и Долг начинает в мегафон так весело орать, что на территории бара враждебные элементы, прям здорово вышло!

2 часа назад, dsh сказал:

Неписи идут туда, куда им указывают пути назначенных им работ

Иными словами условные те же наёмники уже в оффлайне не просто приходят в определенную точку по координатам, а именно в оффлайне занимают место у костра(посиделки у костра ведь тоже работа?),  а когда выходят в онлайн - появляются сразу у костра  вместе с другими группировками и начинается пальба, да? Просто я думал, что они в онлайн выходят именно в определенной точке,(координаты которой указаны в соответствующей секции),  и лишь только после выхода в онлайн начинают разбегаться по работам. И вот эту точку выхода в онлайн по моим скромным затеям я хотел попробовать вынести в другое место. Я ошибался, верно?

2 часа назад, dsh сказал:

Параметры этих путей в движке OGSR можно поменять черен конфиг

А подскажи пожалуйста, в какие конфиги глядеть? :)

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

then

Функция получения квеста()

Ты имеешь ввиду, здесь нужно выдать игроку инфопорцию, которая стартует квест?

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

@Muzafir, ну да, функция, инфопоршинь, etc...

  • Спасибо 1
  • Согласен 1

 Моя нычкаНычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

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

как повесить коллбэк на net_spawn

Он по умолчанию и так уже повешен в оригинале. Просто добавь туда свой код и все.

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

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

Это зависит от того, как написана логика для их работ. Как напишешь, так и будет.

 

2 hours ago, _Sk8_AsTeR_ said:

А подскажи пожалуйста, в какие конфиги глядеть?

[engine_custom_spawn]
waypoints_file = waypoints.ltx

в system.ltx. В waypoints.ltx пути в том же формате, как в распакованом all.spawn.

 

Изменено пользователем dsh
  • Спасибо 1
Ссылка на комментарий
14.08.2020 в 03:51, WinCap сказал:

@DibokDibokin, попробуй так:

 

local s_obj = alife():object(i)
if s_obj ~= nil then
    local c_obj = level.object_by_id(s_obj.id)

    if (c_obj and is_box[c_obj:get_visual_name()]) then

Не помогло. При активации функции не появляются метки на мини-карте, а ПДА не открывается.
Лечится только перезагрузкой сейва.

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

@DibokDibokin, проверь вызов функции на установку метки:

 

level.map_add_object_spot_ser(c_obj.id, "тип_метки_из_map_spots.xml", "надпись_на_метке")

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

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

Всю голову сломал этими скриптами. Если я правильно понял, чтобы выдать ГГ задание сразу после перехода на локацию, то в файле bind_stalker.script нужно найти функцию function actor_binder:net_spawn(data) и в нее вставить такой кусок кода:

    if (level.name() == "simeiz") and  -- название локации

      not has_alife_info("keep_base_defend") then  -- и данная инфопорция (старт квеста) не выдавалась

      self.object:give_info_portion("keep_base_defend ") – выдать ее

    end

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

@WinCap, тоже не сработало.

function show_boxes()
    local s_obj = alife():object(i)
    if s_obj ~= nil then
        local c_obj = level.object_by_id(s_obj.id)
        if (c_obj and is_box[c_obj:get_visual_name()]) then
            level.map_add_object_spot_ser(c_obj.id, "warfare_stalker_spot", "box")
        end
    end
end

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

@DibokDibokin, есть другой вариант, не по модели, а по секции [drop_box],

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

-- тестовые функции по клавише из главного меню
function main_menu:OnKeyboard(dik, keyboard_action) --virtual function
...
	-- поставить отметку на объект с логикой drop_box (лут из коробки)
	if dik == DIK_keys.DIK_F1 then
			if (level.present() and db.actor ~= nil and db.actor:alive()) then
				local level_actor = game_graph():vertex(alife():actor().m_game_vertex_id):level_id()
				for a=1,65535,1 do
					local obj = alife():object(a)
					if obj and obj ~= nil then
						local level_obj = game_graph():vertex(obj.m_game_vertex_id):level_id()
						if level_obj == level_actor then -- отметки только на текущей карте
							local obj_name = obj:name()
							if (obj.parent_id and obj.parent_id == 65535) then
								local ini = obj:spawn_ini()
								if (obj:spawn_ini() ~= nil and obj:spawn_ini():section_exist("drop_box") == true) then
									level.map_add_object_spot(obj.id, "obj_location", tostring(obj_name))
									-- obj_location, ид метки из map_spots.xml
									--[[
                                      <obj_location>
                                          <level_map spot="obj_location_spot"/>
                                          <mini_map spot="obj_location_spot"/>
                                      </obj_location>
                                      <obj_location_spot x="0" y="0" width="4" height="4" alignment="c" stretch="1">
                                          <texture r="0" g="255" b="255">ui_minimap_point</texture>
                                      </obj_location_spot>
									]]--
								end
							end
						end
					end
				end
			end
		end
		-- удалить отметку
		if dik == DIK_keys.DIK_F2 then
			if (level.present() and db.actor ~= nil and db.actor:alive()) then
				for a=1,65535,1 do
					local obj = alife():object(a)
					if obj and obj ~= nil then
						if (obj.parent_id and obj.parent_id == 65535) then
							if (obj:spawn_ini() ~= nil and obj:spawn_ini():section_exist("drop_box") == true and level.map_has_object_spot(obj.id, "obj_location")) then
								level.map_remove_object_spot(obj.id, "obj_location", "")
							end
						end
					end
				end
			end
		end

 

 

  • Спасибо 1
Ссылка на комментарий
35 минут назад, DibokDibokin сказал:

тоже не сработало.

А вы свой же код хотя бы читаете? Пробежаться глазами по строчкам и прикинуть, что там происходит, не?

В вашей функции, первая же строчка:

36 минут назад, DibokDibokin сказал:

 local s_obj = alife():object(i)

Чему здесь равно i ? Не определено. Что вам вернет в s_obj - ничего.

 

Я так понимаю, этот совет

14.08.2020 в 00:52, Zander_driver сказал:

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

Решили игнорировать. Ваше право. Но тогда никакие "варианты" в скриптах не сработают, если только случайно. Любой код отладки требует, это нормально. Но отладки не будет без лога. И не будет понимания, что могло пойти не так, если не смотрели что код вообще делает, откуда в нем те или иные значения берутся.

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

Доброго времени!

Задаю вопрос здесь, потому как тема по вылетам закрыта, а ошибка, судя по всему, связана со скриптами - через небольшое время после начала игры такой вылет:

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

FATAL ERROR
 
[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : ..\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : .... world over world\gamedata\scripts\state_mgr.script:247: C stack overflow

Понимаю, что ошибка где-то в анимках НПС, возможно даже, в скриптах логики неписей.Но все анимации вроде как стандартные, без изысков. И не пойму, ошибка в анимациях "обычных" неписей или квестовых, эксклюзивных, так сказать...

И вдогонку - в gamedata\scripts есть набор файлов, отвечающих за анимациии НПС, может ли кто-то скинуть полный перечень файлов в этой (а если есть и в других) папках, отвечающих за эти анимации (файлы типа - smart_covers_animpoint_sit_low, smart_covers_loophole_animpoint_sit_low, state_mgr_animation и подобные им, это просто для примера). Потому как набор таких файлов в оригинале ЗП сильно отличается от аналогичного набора в исходниках СДК 0.7, в СДК он больше.

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

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

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

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

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

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

Войти

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

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

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