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

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

Dennis_Chikin, это опять же к последнему абзацу из предыдущего твоего поста...
В ситуации с magamed, с его ахтунгами на Агро., если не переспавнить кодами выше "agro_final_vert1", "agro_final_vert2" - а это "Сходка авторитетов...", то потом нужно спавнить как минимум из диалогов..? И кто ему это сделает..?

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

Варка артов ОП-2.05/07. Время - 3 минуты, вероятность - 99%.

https://yadi.sk/d/kyu_kl3vcbibV

AMD Athlon II X2 250, NVIDIA GTS 450, RAM 8.0 GB, WIN 7/64  правки Золотой Шар

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

@Купитман

Ищи файлы с текстом "филин" в gamedata\config\weapons - тебе нужно название секции. Это будет wpn_svd_m3.

А дальше wpn_svd_m3 по скриптам. bind_stalker.script см. в первую очередь.

Короче, не могу точно сформулировать,:

local fov = device().fov
local wpn
if fov < 35 and xr_logic.pstor_retrieve(db.actor, "use_scope", 0) == 0 then
    wpn = db.actor:item_in_slot(db.actor:active_slot())
    if wpn and wpn:section() == "wpn_crossbow" or wpn and wpn:section() == "wpn_svd_m3" or wpn and wpn:section() == "wpn_b94_sil" then -- если у актора в слоте арбалет или СВД Филин или Б-94 и он использует оптику, то
        if not xr_conditions.is_day() then -- если на дворе не день 
            level.add_pp_effector("bast.ppe", 1034, true) -- включаем ПНВ
            get_console():execute ("r2_mblur 0.6") -- и размытие в движении (motion_blur)
        end
        xr_logic.pstor_store(db.actor, "use_scope", 1)
    end
elseif fov > 35 and xr_logic.pstor_retrieve(db.actor, "use_scope", 0) == 1 then --перестал смотреть в оптику
    xr_logic.pstor_store(db.actor, "use_scope", 0)
    level.remove_pp_effector(1034) -- выключаем ПНВ
    get_console():execute ("r2_mblur 0.") -- и размытие в движении
end

 

(Арбалет, СВД "Филин", Barrett М95)

Днем будет эффект пнв, который у ГГ в рюкзаке. Ночью эффект ночного прицела.

 

gamedata\scripts\bind_stalker.script

elseif fov > 35 and xr_logic.pstor_retrieve(db.actor, "use_scope", 0) == 1 then
    xr_logic.pstor_store(db.actor, "use_scope", 0)
    level.remove_pp_effector(1034)
    get_console():execute ("r2_mblur 0.")

-------- Добавляем это:

if amk.load_variable("nv_on") then -- когда включаем ПНВ, создается переменная nv_on. если она есть (т.е. пнв был включен до прицеливания), то
    for i, t in ipairs( {"nv_bad", "nv_good", "nv_bast"} ) do -- ищем в инвентаре пнв
        if db.actor:object( t ) then -- если находим, то
            nightvision.pnv_on(t, false) -- включаем без звука.
        end
    end
end
----------------
end

 

gamedata\scripts\taynik_spawn.script

function vzn_taynik()
    local a = vzn_points[math.random(#vzn_points)]
    local s = "s_inventory_box_vzn"
    local obj = alife():create( s, vector():set(a.position.x,a.position.y,a.position.z), a.lv, a.gv)
    level.map_add_object_spot_ser(obj.id, "treasure", "Тайник Сидора за взнос")
    return obj
end
Там же: Метки на документы Воронина.

function t_zonedocs(location)
    local a, s, se_obj
    for i=1,table.getn(zonedocs[location]) do
        a = zonedocs[location][i]
        s = "zonedocs".."_"..tostring(i)
        se_obj = alife():create(s, vector():set(a.position.x,a.position.y,a.position.z), a.lv, a.gv)
        level.map_add_object_spot_ser(se_obj.id, "artefact_location", "Документ Воронина "..tostring(i))
    end
    -- Дубликаты
    if location=="agro" then
        local se_obj = alife():create("zonedocs_26",vector():set(-72.308654785156,2.4818267822266,-116.6388092041),3256,797)
        level.map_add_object_spot_ser(se_obj.id, "artefact_location", "Документ Воронина 26")
    elseif location=="dt" then
        local se_obj = alife():create("zonedocs_22",vector():set(85.389030456543,4.3991627693176,146.19708251953),30402,1221)
        level.map_add_object_spot_ser(se_obj.id, "artefact_location", "Документ Воронина 22")
    end
end

 

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

10.png

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

alife():create() - или имя, или цифра. Если цифра - это - spawn_id.

alife():object() - имя или id в игре. Удаляется всегда объект, если его удалось получить.

по профилю ни получить ни удалить нельзя.

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

@bobo44, потому, что это не правка по квесту брата Тени Монолита, а разбор и оптимизация скрипта от @Dennis_Chikin.
По факту, там правлено:
- порча костюма - больше не портится.
- убирание оружия при надетом гравикостюме.
Для правки по квесту брата Тени Монолита надо закомментировать (--) там строку

kostya_dialog.stealth_fail_task()
Изменено пользователем BFG
  • Согласен 3
 

10.png

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

откуда уверенность,что это из-за правки происходит?

Потому что я лопух ) Сам использовал эту правку, встретил затык в квесте. Случай аналогичный был, тоже из-за правки по торговле Акима. Посмотрел на правки, у себя установленные, выделил файл, который ЯВНО имеет отношение к описанию квестов - task_manager.ltx. Убрал все свои правки, кроме этого файла, запустил ветку квеста сначала. Затык повторился. Убрал этот файл, квест благополучно завершил. Добавил все правки, кроме task_manager.ltx, запустил ветку сначала еще раз - успешно. Распаковал gamedata.db9 (http://www.amk-team.ru/forum/index.php?showtopic=12839#entry846866 , спасибо romale), извлек task_manager.ltx в свою геймдату, закомментировал все time. Начал ветку квеста сначала, со всеми своими правками и этой новой, тоже успешно.

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

...

Интересно: что же там такого было?..

Евген.

Изменено пользователем Eugen81
  • Нравится 1
  • Полезно 1

я здесь лишний

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

@relic, Алгоритм ничуть не избыточный, а расово верный. Именно так и начинаются нормальные ковыряния. А не с наскоку, ать -два и поставил\снёс.

  • Нравится 3
  • Согласен 1

"Кругом зомби.....у меня кончаются патроны...."

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

Можно ли без последствий для игры удалить из gamedata.db5 папку gamedata/textures/sky/old и соответственно перепаковать db5 без этой папки?

Можешь удалять. Эти скайкубы в игре не используются. Вылета не будет.

Изменено пользователем Eugen81
процитировал
  • Спасибо 1
  • Полезно 1

"Кругом зомби.....у меня кончаются патроны...."

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

...Посмотрел lootmoney.script внимательнее. Не, так не пойдет. Вот как-то так: (lua под рукой нет, будете делать - проверяйте)

 

 

function lootmoney( npc )
	local m
	if npc and npc:character_community() ~= "arena_enemy" then	-- убрал лишние проверки
		m = npc:money() or 0
		if m ~= 0 then npc:give_money( -m ) end	-- чистим деньги у непися
	else return	-- откуда-то прилетел глючный вызов. Интересно, откуда ? Ничего не делаем.
	end

	if monnoroch_options.money_real == 1 then	-- зачем-то перевернули смысл опции
		-- должно быть 0 - тогда тогда деньги берутся отсюда, 1 - отдается сколько
		-- было у непися. Ну да ладно...
		local npc_rank = ranks.get_obj_rank_name( npc )	-- уровень непися
		-- здесь был полный глюкодром. Переделал все.
		if npc_rank == "experienced" then m = math.random( 1510, 3079 )
		elseif npc_rank == "veteran" then m = math.random( 3800, 6530 )
		elseif npc_rank == "master" then m = math.random( 6540, 10000 )
		else m = math.random( 100, 1050 )	-- для непися-новичка
	end	end

	-- формируем и выводим сообщение
	local s = "%c[255,255,0,0]Мёртвый сталкер:%c[default]" .. npc:character_name()
		.. "\\n%c[255,255,0,0]Обнаружено денег на счёте:%c[default]" .. m .. "руб."
	db.actor:give_game_news( s, "ui\\ui_iconsTotal", Frect():set( 0, 0, 83, 47 ), 1, 4000 )
	db.actor:give_money( m )	-- даем денег актору
	game_stats.money_quest_update( m ) 	-- останки "рангового" мода

	if ui_mm_opt_main.GetOption( "autograb_body" ) then	-- автообыск трупа
		start_transfer_all_desired( npc )
	end
end

 

 

1. Ничего что два оператора "elseif" написаны слитно?

2. Проверил в самом начале игры условие в этом файле "if monnoroch_options.money_real == 1".

Получилось, что если оно совпадает с значением функции money_real = 1 (можно также и там и там поставить нули) в файле monnoroch_options.script, то у новичков выдает рандомно, от 100 до 1050 у каждого, если эти значения разные, т.е. комбинации 1-0 или 0-1, то денег снималось по 5000 руб. Отсюда возник вопрос, откуда игра взяла значение 5000?

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

FATAL ERROR

 

[error]Expression : fatal error

[error]Function : CScriptEngine::lua_error

[error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp

[error]Line : 73

[error]Description :

[error]Arguments : LUA error: ...t.a.l.k.e.r-op2\gamedata\scripts\bind_stalker.script:579: attempt to index global 'lootmoney' (a nil value)

 

stack trace:

 

 

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

1. Не понял про "слитно".

2. m = npc:money() or 0 -- с собой были. Из профиля.

 

3. Сейчас проверил функцию компилятором - нормально собирается. Или вставлено не так, или где-то еще что-то неправильно.

Скрипт в студию.

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

1. Я предположил, что "Else" и "if" это два разных оператора, которые в скрипте написаны друг за другом без пробела, или это мое незнание этой библиотеки программирования..

2. Ранее я использовал правку в твоем виде, и кажется в игре денег всегда снимал с НПС по 5000 руб, но мне кажется твоя правка была задумана все-таки на получение рандомных сумм.

3. С ошибкой покапаюсь обязательно попозже.

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

npc:money() or 0

if m ~= 0 then npc:give_money(-m)

 

- деньги у непися забираются.

 

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

 

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

Изменено пользователем Dennis_Chikin
  • Спасибо 1
Ссылка на комментарий

В связи с выходом Возвращателя....

fly.script

метраж ограничения Возвращателя = 30 метров. Ставим разумно, не превышаем зону а-лайфа, а то возможны сюрпризы.

elseif returner_pos:distance_to_xz(db.actor:position()) > 30 then ....

Возвращатель работает откуда угодно ( и телепорты тоже ) :

или выдать db.actor:disable_info_portion("no_teleport_near_heli_btr")

( выдавать каждый раз утомительно )

или

Через bind_stalker.scripts в апдейте прописать ( не знаю корректно ли так будет )

function actor_binder:update(delta)...

.....

db.actor:disable_info_portion("no_teleport_near_heli_btr")

.....

( надо проверить , у меня нет рабочей сборки)

  • Нравится 1

"Кругом зомби.....у меня кончаются патроны...."

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

https://yadi.sk/d/XkkqhLtZRBtwD

Это мой способ. Стояло более 40-ка модов на трёх базах.

Изменено пользователем karavan150
  • Нравится 1
  • Полезно 1

Не делайте мне больно, господа...

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

1. Убраны щелчки в начале файлов
1.1. gamedata\sounds\ambient
dropinpool1.ogg
waterdrop2.ogg (в winampe стал слышен звук именно капли, а не щелчка)
wind_gusty_3.ogg
1.2.gamedata\sounds\ambient\random
rnd_boot1.ogg
rnd_cow.ogg

2. Заменил Base Volume со значения 1,75 на 1,0:
2.1. gamedata\sounds\ambient\x16
x16_psy.ogg
x16_psy_hit.ogg
x16_psy_l.ogg
x16_psy_r.ogg


df6e2e82254f75d7f3b0a4011c6f9e1480485919


скачать 308кб http://rusfolder.com/42373982

P.S. Для уборки мусора: Со времен ТЧ в папках gamedata/sounds/device/pda и gamedata/sounds/detectors лежат временные файлы - следы редактирования звуков ПДА.
8cf7336f52b6300588d0063feebb23cd80485919



В НС ее от этого мусора чистили. Но в ОП2 почему-то оставили.

Изменено пользователем BFG
  • Спасибо 1
Ссылка на комментарий

@Dennis_Chikin, Я сам не понял, к чему такие сложности с упаковкой. Он конечно работает, но есть способы и проще.

Там всего то нужно 3 файла : Бардак и 2 батника ( пак и распак ).

==============

@prjnik, Работай всегда с папкой gamedata на диске С. Это удобно, и для прописывания путей и для контроля. И не торопись паковать ВСЁ и СРАЗУ. 

Распаковка :

converter -unpack -2947ru c:\gamedata\gamedata.dbХ

 
Упаковка :
converter -pack C:\gamedata\ -2947ru -out C:\gamedata\gamedata.dbХ
 
Всё. К чему такие сложности ?
 

"Кругом зомби.....у меня кончаются патроны...."

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

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