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

[SoC] Ковыряемся в файлах


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

@Norman Eisenherz, по поводу "запчасти на пол" вываливаются почти все, но без "flamethrower_bad" - Я в списке запчастей (которые спавнятся после взрыва огнемёта), "flamethrower_bad" заменил на "обычный автомат" или винтовку " wpn_lr300". После проверки работы "--Генератора огнесмеси" -   "запчасти на пол"  "обычный автомат" или винтовка " wpn_lr300" появляются... (только огнемёт Шурупа "wpn_flame" - не спавнится).

 Сам предмет "flamethrower_bad"  находится по пути - config - misc - quest_items  - список ниже:

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

 

[flame_parts]:identity_immunities
GroupControlSection    = spawn_group
discovery_dependency = 
;$spawn                 = "devices\quest_items\decoder"
;$prefetch             = 32
class                = II_ATTCH
cform                = skeleton
visual                = amk\flame_prt_gorelka.ogf
radius                = 1
;script_binding        = stalker.object_init
;quest_item            = true

description            = flame_part_desc

inv_name            = item_flame1_name    
inv_name_short        = item_flame1_name
inv_weight            = 0
inv_grid_width        = 1
inv_grid_height        = 1
inv_grid_x            = 11
inv_grid_y            = 3
cost                = 50


[gorelka]:flame_parts
visual                = amk\flame_prt_gorelka.ogf
description            = gorelka_descr
inv_name            = gorelka    
inv_name_short        = gorelka
inv_weight            = 1
inv_grid_width        = 1
inv_grid_height        = 1
inv_grid_x            = 1
inv_grid_y            = 40


[manometr]:flame_parts
visual                = amk\flame_prt_manometr.ogf
description            = manometr_descr
inv_name            = manometr
inv_name_short        = manometr
inv_weight            = 1
inv_grid_width        = 1
inv_grid_height        = 1
inv_grid_x            = 0
inv_grid_y            = 40

[trubka]:flame_parts
visual                = amk\flame_prt_trubka.ogf
description            = trubka_descr
inv_name            = trubka
inv_name_short        = trubka
inv_weight            = 0.5
inv_grid_width        = 2
inv_grid_height        = 1
inv_grid_x            = 2
inv_grid_y            = 40
cost                = 500

[flamethrower_bad]:flame_parts
visual                = amk\wpn_flame_brk.ogf
description            = flama_descr
inv_name            = item_flamethrower_bad_name    
inv_name_short        = item_flamethrower_bad_name
inv_weight            = 5
inv_grid_width        = 4
inv_grid_height        = 2
inv_grid_x            = 13
inv_grid_y            = 38

 

25.02.2025 в 20:02, Norman Eisenherz сказал:

В конфиге предмета "flamethrower_bad" не была назначена прозрачная модель?

Как понимать "В конфиге предмета "flamethrower_bad" не была назначена прозрачная модель" - это что-то связано с "картинкой"?

 Norman Eisenherz - интересная вещь происходит, сделал "подмену". "Накатил" на готовый ствол  "wpn_lr300" (получилась новая секция "flamethrower_bad2"), переименовал... но   visual  "нового ствола" не стал менять, оставил    visual     = weapons\lr300\wpn_lr300.ogf

После взрыва огнемета появились "все запчасти на пол" и сам ствол "wpn_lr300" (единственное при наведении на ствол показывает новые надписи "сломанный огнемет" и картинка этого огнемета - менял надписи и координаты картинки).

Потом поменял  визуал ствола  visual     = weapons\lr300\wpn_lr300.ogf  на    visual     = amk\wpn_flame_brk.ogf  сломанного огнемёта  "flamethrower_bad" - Запустил Игру и после взрыва огнемёта - "все запчасти на пол", а визула "flamethrower_bad" нет!!! 

Не понятно, где подвох - в "оригинале" scripta после взрыва все спавнится и сам "flamethrower_bad"...  Когда поменяли в строке   object("wpn_flame") на  item_in_slot(2)  "flamethrower_bad" перестал появлятся.

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

Связи с номером слота быть не должно – новые детали спавнятся просто по именам. Действия "сброс оружия из рук" тоже нет, да и все равно в руках обычная модель, а не сломанная.

 

В SDK или в каком-нибудь OGF viewer модель [wpn_flame_brk.ogf] открывается?

 

Еще можно к спавну этой секции дописать

local test_obj = alife():create("flamethrower_bad",pos,lv,gv))

и после спавна (отдельным вызовом, не в этом же цикле) проверить

if level.object_by_id( test_obj.id )

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

Шпаргалка

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

Потом поменял  визуал ствола  visual     = weapons\lr300\wpn_lr300.ogf  на    visual     = amk\wpn_flame_brk.ogf  сломанного огнемёта  "flamethrower_bad"

Если кучей что-то спавнится в одной точке, то оно может улететь под террейн. Возможно ЛР-ка в силу своих особенностей и размеров шейпа, физически не вступает в конфликт с другими предметами. Можно попробовать заспавнить все предметы не на землю, а в рюкзак и потом выкинуть вручную:

alife():create("flamethrower_bad",pos,lv,gv,0)

0 - айди актора.

 

А вот то, что

23 часа назад, den_z сказал:

Когда поменяли в строке   object("wpn_flame") на  item_in_slot(2)  "flamethrower_bad" перестал появлятся.

странно. А точно там еще чего-нибудь не поменялось? Точно ничего не упустили?

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

Norman Eisenherz, Я заспавнил (через Чит-спаунер) в рюкзак ГГ "flamethrower_bad" - потом выбросил из рюкзака на пол, появилась полноценная модель сломанного "огнемёта от Шурупа".

 

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

Если идея @RayTwitty с падением лута под карту верна (и всесильна), можно вынести спавн предметов около ГГ в отдельную функцию с небольшим разбросом координат и скармливать в нее нужные секции. Пример см. в [xr_box.script] create_items.

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

Шпаргалка

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

RayTwitty, спасибо за поддержку... Я ПРОВЕРИЛ  "ТЕОРИЮ о провалившихся вещах" под текстуры: залез на Кордоне, на чердак развалин (что рядом со Звездочётом) и попробывал взорвать огнемет - все запчасти провалились на пол 1-го этажа и сломанный огнемёт ("flamethrower_bad") с ними... Тоже самое Я проделал с "все запчасти на пол", заменил "flamethrower_bad" на  обычный огнемёт от Шурупа "wpn_flame" - он (огнемемёт) "появился" со всеми запчастями на "земле" среди досок пола 1-го этажа. В чем причина "провала" под текстуры этих игровых обьектов??? Другие "стволы" не "проваливаются" - что-то не так с текстурами "огнемётов"?

 

 

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

Купер, доброго вечера. Вопрос опять по scriptу из СТАЛКЕРа ТЧ НС АМК+ДМХмод135 - файл sak_dialog.script  - там есть 2 функции:

 

 function has_soldiers_bribe(actor, npc)
    return sak.have_item_namber("vodka",1) ~= false
end
function give_soldiers_bribe(actor, npc) 
    sak.out_item_namber("vodka",1) 
end

 

Они отвечают за диалог между ГГ и "воякой под мостом" - оплата за проход под мостом 1 бутылка водки... (переделанная старая функция - та была за деньги...)

Хотел бы немного подправить, что бы ГГ мог "пройти" при наличии разной водки в рюкзаке, типа:   

sect == "vodka" or sect == "absolut_vodka" or sect == "smirnoff_vodka" or sect == "nemiroff_vodka" or sect == "vodka_p" then
        vodka = vodka-1

ГГ имея при себе в рюкзаке , к примеру,  вместо "vodka" - паленую "vodka_p" или там "absolut_vodka"..., вояка "забирал" её себе и пропускал ГГ...

Как реализовать эту схему???

Изменено пользователем den_z
Добавлено  Купер,

Перемещено.

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

@den_z, для этого нужно править не sak_dialog.script, а sak.script  в функциях have_item_namber() и out_item_namber() соответственно, давай ссылку на скрипт, или обе функции.

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

ted.80,

function have_item_namber(itm,need_namber)
    return amk_utils.inventory_search(itm, need_namber)
end

 

и ещё одна функция:

function out_item_namber(itm_section,need_number)
    reloc_params.itm_section=itm_section
    reloc_params.itm_cnt=need_number
    reloc_params.itm_cnt_found=0
    db.actor:iterate_inventory(checkout_items_count,db.actor)
    reloc_params.itm_cnt_found=0
    if reloc_params.itm_cnt_found<=reloc_params.itm_cnt then
        db.actor:iterate_inventory(out_items_count,db.actor)
    end
    news_manager.relocate_item(db.actor, "out", itm_section)
    reloc_params={}
end

Добавлено  Купер,

Не надо так делать. Такие объёмы информации заливаем на файлообменник, а сюда - ссылку.

И выбираем только то, что действительно необходимо и изменялось.

Заметка изменена

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

@den_z, да всё-таки в sak_dialog.script, это будет проще сделать, замени те две функции - на вот это и проверь, мне негде проверить.

 


local item_alk = {"vodka","absolut_vodka","smirnoff_vodka","nemiroff_vodka","vodka_p"}
local out_alk

function has_soldiers_bribe(actor, npc)
	for k,v in pairs(item_alk) do
		if db.actor:object(v) then
			out_alk = v
			return true
			break
		end
	end
	out_alk = false
	return false
end

function give_soldiers_bribe(actor, npc) 
	if out_alk then
		sak.out_item_namber(out_alk,1)
		out_alk = false
	end
end

 

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

ted.80, добрый вечер. Я проверил функцию   function has_soldiers_bribe(actor, npc)  - при разговоре с вояками, под ж/д мостом, вылет - лог: 

0023:0085105B xrLUA.dll
0023:05B7E637 xrGame.dll
0023:05B820A0 xrGame.dll

ted.80,  посмотри 

Сам скрипт с правкой - sak_dialog:

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

local item_alk = {"vodka","absolut_vodka","smirnoff_vodka","nemiroff_vodka","vodka_p"}
local out_alk

function has_soldiers_bribe(actor, npc)
    for k,v in pairs(item_alk) do
        if db.actor:object(v) then
            out_alk = v
            return true
            break
        end
    end
    out_alk = false
    return false
end

function give_soldiers_bribe(actor, npc)
    if out_alk then
        sak.out_item_namber(out_alk,1)
        out_alk = false
    end
end

--[[function has_soldiers_bribe(actor, npc)               -- оригинал от Сяка
    return sak.have_item_namber("vodka",1) ~= false
end
function give_soldiers_bribe(actor, npc)
    sak.out_item_namber("vodka",1)
end]]

 

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

@den_z, не нужно выписывать ВЕСЬ скрипт, там нужно две функции, перепиши их вот так, у себя на аптечках проверял все работает.

 

local item_alk = {"vodka","absolut_vodka","smirnoff_vodka","nemiroff_vodka","vodka_p"}
local out_alk = ""

function has_soldiers_bribe(actor, npc)
	for k,v in pairs(item_alk) do
		if db.actor:object(v) then
			out_alk = v
			return true
		end
	end
end

function give_soldiers_bribe(actor, npc) 
	if out_alk ~= "" then
		sak.out_item_namber(out_alk,1)
		out_alk = ""
	end
end

 

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

@Balavnik этот метод возвращает любой серверный объект, вне зависимости от наличия или отсутствия родителя.

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

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

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

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

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

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

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

Войти

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

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

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