[SoC] Ковыряемся в файлах - Страница 334 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

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


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

Напишите, пожалуйста, функцию для рандомного спавна объектов в инвентарь ГГ.

P.S. Пробовал с сайта www.stalkerin.gameru.net и с сайта yastalker.com. Не спавнятся объекты.

вот скрипт erlik.Сам пока не проверял

 

local count = 0

function uni_spawn_new(tab_items,tab_where)

local pos, lvid, gvid, id

for k, v in pairs(tab_items) do

if type(tab_where)=='table' then

for k, v in pairs(tab_items[k]) do

count = k

for i=1, count do

alife():create(v,vector():set(tab_where['x'],

tab_where['y'],tab_where['z']),

tab_where['lv'],tab_where['gv'])

end

end

elseif type(tab_where)=='string' then

for k, v in pairs(tab_items[k]) do

count = k

for i=1, count do

alife():create(v, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())

end

end

elseif type(tab_where)=='number' then

local obj = level_object_by_sid(tab_where)

if obj ~= nil then

id = obj:id()

pos = obj:position()

lvid = obj:level_vertex_id()

gvid = obj:game_vertex_id()

elseif obj == nil then

obj = alife():story_object(tab_where)

id = obj.id

pos = obj.position

lvid = obj.m_level_vertex_id

gvid = obj.m_game_vertex_id

for k, v in pairs(tab_items[k]) do

count = k

for i=1, count do

alife():create(v, pos, lvid, gvid, id)

end

end

end

end

end

end

 

function uny_spawn_1()

local tab_items ={{[1]="exo_outfit"},{[2]="af_cristall_flower"},

{[1]="wpn_fn2000"},{[5]="ammo_5.56x45_ss190"},{[3]="bread"},

{[5]="medkit_army"}}

local tab_where = {x=-249.495,y=-18.495,z=-107.105, lv=10784,gv=8}

this.uni_spawn_new(tab_items,tab_where)

end

 

--для спавна в инвентарь эктора

function uny_spawn_2()

local tab_items ={{[1]="exo_outfit"},{[2]="af_cristall_flower"},

{[1]="wpn_fn2000"},{[5]="ammo_5.56x45_ss190"},{[3]="bread"},

{[5]="medkit_army"}}

local tab_where = "actor"

this.uni_spawn_new(tab_items,tab_where)

end

 

--для спавна в инвентарь непися по его sid'у

function uny_spawn_3()

local tab_items ={{[1]="exo_outfit"},{[2]="af_cristall_flower"},

{[1]="wpn_fn2000"},{[5]="ammo_5.56x45_ss190"},{[3]="bread"},

{[5]="medkit_army"}}

local tab_where = 006 -- это sid волка

this.uni_spawn_new(tab_items,tab_where)

end

 

 

 

или если для квеста надо,то рандомная награда

 

local nagrad = {

 

level_1 = {

"ammo_9x39_sp5",

"ammo_7.62x54_7h14",

"ammo_5.45x39_ap",

"ammo_5.56x45_ap",

"ammo_11.43x23_hydro",

"bread",

"kolbasa",

"ammo_5.56x45_ss190"

},

level_2 = {

"af_medusa",

"af_cristall_flower",

"af_night_star",

"af_vyvert",

"af_gravi",

"af_gold_fish",

"af_cristall",

"bread",

"kolbasa",

"af_blood",

"af_mincer_meat",

"af_electra_sparkler",

"af_electra_moonlight",

"af_soul"

}

}

 

function prines_kopyto(first_speaker, second_speaker)

local actor, trader

if db.actor and db.actor:id() == first_speaker:id() then

actor = first_speaker

trader = second_speaker

else

actor = second_speaker

trader = first_speaker

end

local mutant_boar_leg = 0

actor:iterate_inventory(function (dummy, item) if item:section()=="mutant_boar_leg" then

mutant_boar_leg = mutant_boar_leg+1 end end, nil)

if mutant_boar_leg>=3 then

return true

else

return false

end

end

 

 

function otdal_kopyto(first_speaker, second_speaker)

local item = ""

local actor, trader

if db.actor and db.actor:id() == first_speaker:id() then

actor = first_speaker

trader = second_speaker

else

actor = second_speaker

trader = first_speaker

end

item = nagrad.level_2[math.random(table.getn(nagrad.level_2))]

sak.reloc_items_count(trader, "mutant_boar_leg", "out", 3)

dialogs.relocate_item_section(second_speaker, item , "in")

end

 

 

Отчего может быть безлоговый вылет в Тёмной долине при пересечении определённой границы локации? Вот это место, только до него доходишь и видишь рабочий стол:

2c32cc1024bef58ee00dfe15caa026e5.jpeg

Может кто сталкивался с подобным?

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

Увеличил объем рюкзака в ширину с о стандартных 7 ячеек до 11, почти всё работает. Не могу понять, почему из добавленных 3-х ячеек не могу взять/перетащить вещи. Понимаю, что где-то мелочь какую-то упустил, но не могу найти что именно.

Кто знает, подскажите, пожалуйста.

 

Ты поменял в dragdrop_bag-е параметр cols_num, а width ты не забыл подтянуть за ним? По идее, width должен быть не меньше, чем cols_num*cell_width, плюс на линейку прокрутки что-то надо, наверное...

TheDoktor, возможно, в этом месте ГГ приближается к какому-либо объекту (NPC, например), который в этот момент переходит в онлайн, и, по причине ошибок в скриптах или конфигах, даёт вылет. Советую "пощупать" NPC, к которым, воможно, в этом месте приближается игрок, вызывая их переход в онлайн - особенно если проводилась какя-либо работа с этими NPC (или вообще какими-то новыми, или модифицированными старыми объектами). Раз уж вылет без лога.
Отчего может быть безлоговый вылет в Тёмной долине при пересечении определённой границы локации?

Уреж радиус он-лайфа до 1 и посмотри где вылетит. Там и ищи причину. Частенько такой способ помогает. Но не всегда. Плюс консоль тоже иногда пиет полезную инфу ;)

Kirag, Спасибо, что откликнулся. Но уже нашел. После конфигов ЗП не сосвсем адаптировался ещё к ТЧ, тут немного по другому.

 

Добавлено через 83 мин.:

Возник другой вопрос. Вставил в inventory_new.xml вот такие строчки (шкала брони и усталости) :

    <power_progress x="75" y="46" width="10" height="124" horz="1" min="0" max="100" pos="50">
        <progress>
            <texture>ui_scale_blue_1</texture>
        </progress>
    </progress_bar_armor>
    
    <progress_bar_armor x="710" y="340" width="141" height="10" horz="1" min="0" max="100" pos="0">
        <progress>
            <texture>ui_scale_green</texture>
        </progress>
    </power_progress>

Получаю вылет вот с таким логом:

FATAL ERROR

[error]Expression    : false
[error]Function      : CXml::Init
[error]File          : E:\stalker\patch_1_0004\xrXMLParser\xrXMLParser.cpp
[error]Line          : 87
[error]Description   : XML file:ui\inventory_new.xml value: errDescr:Error reading end tag.


stack trace:

Проверил орфографию - вроде всё в норме. В чем причина? Кто знает?

* Detected CPU: GenuineIntel P3 family, F6/M15/S11, 2400.00 mhz, 73-clk 'rdtsc'

* CPU Features: RDTSC, MMX, SSE, SSE2

 

Initializing File System...

using fs-ltx fsgame.ltx

FS: 28817 files cached, 4848Kb memory used.

Init FileSystem 1.306142 sec

'xrCore' build 3116, Aug 15 2007

 

Initializing Engine...

Executing config-script "user.ltx"...

[c:\documents and settings\all users\Документы\stalker-shoc\user.ltx] successfully loaded.

Starting INPUT device...

Loading DLL: xrRender_R1.dll

Loading DLL: xrGame.dll

* [win32]: free[2017044 K], reserved[8640 K], committed[71404 K]

* [ D3D ]: textures[0 K]

* [x-ray]: crt heap[6698 K], process heap[1142 K], game lua[0 K], engine lua[0 K], render[0 K]

* [x-ray]: economy: strings[1032 K], smem[0 K]

Executing config-script "d:\ИГРЫ - МУЛЬТИ - ФИЛЬМЫ\И Г Р Ы\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx"...

! cant convert dik_name for dik[16], prop=[

! cant convert dik_name for dik[17], prop=[

! cant convert dik_name for dik[18], prop=[

! cant convert dik_name for dik[19], prop=[

! cant convert dik_name for dik[20], prop=[

! cant convert dik_name for dik[21], prop=[

! cant convert dik_name for dik[22], prop=[

! cant convert dik_name for dik[23], prop=[

! cant convert dik_name for dik[24], prop=[

! cant convert dik_name for dik[25], prop=[

! cant convert dik_name for dik[26], prop=[

! cant convert dik_name for dik[27], prop=[

! cant convert dik_name for dik[30], prop=[

! cant convert dik_name for dik[31], prop=[

! cant convert dik_name for dik[32], prop=[

! cant convert dik_name for dik[33], prop=[

! cant convert dik_name for dik[34], prop=[

! cant convert dik_name for dik[35], prop=[

! cant convert dik_name for dik[36], prop=[

! cant convert dik_name for dik[37], prop=[

! cant convert dik_name for dik[38], prop=[

! cant convert dik_name for dik[39], prop=[

! cant convert dik_name for dik[40], prop=[

! cant convert dik_name for dik[41], prop=[

! cant convert dik_name for dik[44], prop=[

! cant convert dik_name for dik[45], prop=[

! cant convert dik_name for dik[46], prop=[

! cant convert dik_name for dik[47], prop=[

! cant convert dik_name for dik[48], prop=[

! cant convert dik_name for dik[49], prop=[

! cant convert dik_name for dik[50], prop=[

! cant convert dik_name for dik[51], prop=[

! cant convert dik_name for dik[52], prop=[

! cant convert dik_name for dik[144], prop=[

[d:\ИГРЫ - МУЛЬТИ - ФИЛЬМЫ\И Г Р Ы\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx] successfully loaded.

Executing config-script "user.ltx"...

Executing config-script "d:\ИГРЫ - МУЛЬТИ - ФИЛЬМЫ\И Г Р Ы\s.t.a.l.k.e.r\gamedata\config\rspec_extreme.ltx"...

! Unknown command: r__dtex_range

! Unknown command: r__ssa_glod_end

! Unknown command: r__ssa_glod_start

! Unknown command: r__wallmark_ttl

! Unknown command: rs_detail

! Unknown command: rs_skeleton_update

! Unknown command: vid_bpp

[d:\ИГРЫ - МУЛЬТИ - ФИЛЬМЫ\И Г Р Ы\s.t.a.l.k.e.r\gamedata\config\rspec_extreme.ltx] successfully loaded.

Executing config-script "d:\ИГРЫ - МУЛЬТИ - ФИЛЬМЫ\И Г Р Ы\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx"...

[d:\ИГРЫ - МУЛЬТИ - ФИЛЬМЫ\И Г Р Ы\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx] successfully loaded.

[c:\documents and settings\all users\Документы\stalker-shoc\user.ltx] successfully loaded.

SOUND: OpenAL: enumerate devices...

SOUND: OpenAL: EnumerationExtension Present

devices Generic Hardware

SOUND: OpenAL: system default SndDevice name is Generic Hardware

SOUND: OpenAL: default SndDevice name set to Generic Software

SOUND: OpenAL: All available devices:

1. Generic Hardware, Spec Version 1.1

2. Generic Software, Spec Version 1.1 (default)

SOUND: OpenAL: SelectBestDevice is Generic Software 1.1

SOUND: OpenAL: Required device: Generic Software. Created device: Generic Software.

* sound: EAX 2.0 extension: absent

* sound: EAX 2.0 deferred: absent

* sound : cache: 32773 kb, 3805 lines, 8820 bpl

Starting RENDER device...

* GPU [vendor:1002]-[device:9598]: Sapphire Radeon HD 3750

* GPU driver: 6.14.10.6844

* CREATE: DeviceREF: 1

* Vertex Processor: PURE HARDWARE

* Texture memory: 1128 M

* DDI-level: 9.0

* GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30)

* GPU vertex cache: unrecognized, 16

* DVB created: 1536K

* DIB created: 512K

count of .thm files=1

load time=105 ms

* distortion: used, dev(30),need(14)

* SSample: 1448x1086

* SSample: enabled

- r__tf_aniso 16

- r1_tf_mipbias 0.

Starting engine...

Loading DLL: xrGameSpy.dll

! Missing ogg-comment, file: d:\ИГРЫ - МУЛЬТИ - ФИЛЬМЫ\И Г Р Ы\s.t.a.l.k.e.r\gamedata\sounds\characters_voice\scenario\video\intro_gsc_wp_r.ogg

* DVB created: 1536K

* DIB created: 512K

- r__tf_aniso 16

- r1_tf_mipbias 0.

* SSample: 1448x1086

* SSample: enabled

* GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30)

* GPU vertex cache: unrecognized, 16

*** RESET [230 ms]

"d:\ИГРЫ - МУЛЬТИ - ФИЛЬМЫ\И Г Р Ы\s.t.a.l.k.e.r\bin\xr_3da.exe"

* phase time: 0 ms

* phase cmem: 82827 K

Кэширование объектов...

Loading objects...

Loading models...

* [prefetch] time: 3815 ms

* [prefetch] memory: 84897Kb

* phase time: 3852 ms

* phase cmem: 157203 K

Сервер: Старт...

* phase time: 59 ms

* phase cmem: 143738 K

Сервер: Загрузка симуляции жизни...

* phase time: 7 ms

* phase cmem: 143738 K

Загрузка игры "sidor.sav"...

* Loading spawn registry...

* 8641 spawn points are successfully loaded

* Loading objects...

* 17430 objects are successfully loaded

* Game sidor is successfully loaded from file 'c:\documents and settings\all users\Документы\stalker-shoc\savedgames\sidor.sav' (2.416s)

* phase time: 2416 ms

* phase cmem: 175274 K

Сервер: Соединяемся...

MaxPlayers = 32

* phase time: 21 ms

* phase cmem: 175277 K

Клиент: Соединение с localhost...

Player not found

* client : connection accepted - <>

* phase time: 8 ms

* phase cmem: 175317 K

Открытие потока...

* phase time: 7 ms

* phase cmem: 175317 K

Загрузка формы объектов...

* phase time: 4431 ms

* phase cmem: 247984 K

Загрузка шейдеров...

* phase time: 530 ms

* phase cmem: 249086 K

Загрузка геометрии...

* [Loading VB] 65532 verts, 2047 Kb

* [Loading VB] 65525 verts, 2047 Kb

* [Loading VB] 65535 verts, 2047 Kb

* [Loading VB] 65466 verts, 2045 Kb

* [Loading VB] 17208 verts, 537 Kb

* [Loading VB] 65533 verts, 2047 Kb

* [Loading VB] 65534 verts, 2047 Kb

* [Loading VB] 65534 verts, 2047 Kb

* [Loading VB] 65531 verts, 2047 Kb

* [Loading VB] 65535 verts, 2047 Kb

* [Loading VB] 65535 verts, 2047 Kb

* [Loading VB] 46595 verts, 1456 Kb

* [Loading VB] 65534 verts, 2047 Kb

* [Loading VB] 65533 verts, 2047 Kb

* [Loading VB] 65535 verts, 2047 Kb

* [Loading VB] 65532 verts, 2047 Kb

* [Loading VB] 65533 verts, 2047 Kb

* [Loading VB] 65533 verts, 2047 Kb

* [Loading VB] 53181 verts, 1661 Kb

* [Loading IB] 1048575 indices, 2047 Kb

* [Loading IB] 1048572 indices, 2047 Kb

* [Loading IB] 1048572 indices, 2047 Kb

* [Loading IB] 1048572 indices, 2047 Kb

* [Loading IB] 1048572 indices, 2047 Kb

* [Loading IB] 1048572 indices, 2047 Kb

* [Loading IB] 1048575 indices, 2047 Kb

* [Loading IB] 1048572 indices, 2047 Kb

* [Loading IB] 1048575 indices, 2047 Kb

* [Loading IB] 228285 indices, 445 Kb

* phase time: 81 ms

* phase cmem: 249457 K

Загрузка базы пространств...

* phase time: 748 ms

* phase cmem: 253525 K

Загрузка детальных объектов...

* [DETAILS] VertexConsts(256), Batch(61)

* [DETAILS] 40687 v(20), 26352 p

* [DETAILS] Batch(61), VB(794K), IB(154K)

* phase time: 55 ms

* phase cmem: 253567 K

Загрузка секторов и порталов...

* Loading HOM: d:\ИГРЫ - МУЛЬТИ - ФИЛЬМЫ\И Г Р Ы\s.t.a.l.k.e.r\gamedata\levels\l01_escape\level.hom

* phase time: 19 ms

* phase cmem: 253741 K

Загрузка ИИ объектов...

- Loading music tracks from 'l01_escape_musics'...

* phase time: 12 ms

* phase cmem: 253780 K

Клиент: Создание...

- Game configuring : Started

- Game configuring : Finished

 

FATAL ERROR

 

[error]Expression : false

[error]Function : CXml::Init

[error]File : E:\stalker\patch_1_0004\xrXMLParser\xrXMLParser.cpp

[error]Line : 87

[error]Description : XML file:ui\inventory_new.xml value: errDescr:Error reading end tag.

 

 

stack trace:

 

 

Серый Волк, причина вылета указана: ошибка при чтении закрывающего (конечного) тэга.

Возможно, я ошибаюсь, но почему закрытие (</progress_bar_armor>) следует до открытия тэга?

Там ничего не напутано? :)

Да, похоже закрывающие теги перепутаны - тег power_progress закрывается /progress_bar_armor, а тег progress_bar_armor закрывается /power_progress. С power_progress формально еще и прокатило бы (с неправильным результатом, но все-таки), а progress_bar_armor своего закрытия не находит.

Спасибо, камрады. Правильно говорят: одна голова хорошо - а три лучше! В упор ошибку не видел...

Проблема с вылетом решилась.

 

Но на этом еще не все:

<power_progress x="75" y="46" width="10" height="124" horz="1" min="0" max="100" pos="50">
        <progress>
            <texture>ui_scale_blue_1</texture>
        </progress>
    </power_progress>
    
    <progress_bar_armor x="100" y="100" width="10" height="100" horz="1" min="0" max="100" pos="0">
        <progress>
            <texture>ui_scale_green</texture>
        </progress>
    </progress_bar_armor>

код собрал из конфигов худа и перенес в инвентарь, всё запускается, но обе шкалы не отображаются в инвентаре.

 

Почему так? Или конфиги худа не предназначены для использования инвентаре?

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

А это уже, подозреваю, совсем другая история. Что ХУД, что инвентарь управляются из движка. И в движке же добавляются все элементы, по принципу: "Слот пистолета прочту из этого конфига, добавлю. Слот автомата - из того, добавлю. Так, вроде все. А с оставшимися конфигами что делать? А черт его знает! Ну их нафиг, про них указаний не было, никто не обидится."

 

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

Не знаю уже куда писать поэтому напишу тут.

Здравствуйте могли бы вы мне помочь в одном деле.

У меня вот точно такая же проблема как указана тут http://www.amk-team.ru/forum/index.php?sho...360#entry447186

Скиньте оптимизированный под мод user.ltx

Стоит S.T.A.L.K.E.R 1.004, Народная..Солянка от 19.04.10, дополнение 14.08.10, патч 3.09.10, DMX 1.3.0, патч 1.3.4.

Изменено пользователем Terrorist495
Kirag, я как-то давно ковырял Хексом район инвентаря в dll и подозревал это, но верить не очень-то хотелось... спасибо что подтвердил мои опасения, теперь хоть мучиться не буду. Изменено пользователем Серый Волк

Серый Волк

Скриптами это сделать вполне реально, ненамного муторнее добавления кнопки в инвентарь.

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

 

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

Серый Волк

 

Сейчас посмотрю, что можно сделать. Я как раз про инвентарь сейчас задачку решаю :) Сброшу тебе по готовности...

TheDoktor, возможно, в этом месте ГГ приближается к какому-либо объекту (NPC, например), который в этот момент переходит в онлайн, и, по причине ошибок в скриптах или конфигах, даёт вылет. Советую "пощупать" NPC, к которым, воможно, в этом месте приближается игрок, вызывая их переход в онлайн - особенно если проводилась какя-либо работа с этими NPC (или вообще какими-то новыми, или модифицированными старыми объектами). Раз уж вылет без лога.
Проверил character_desc_darkvalley - дело не в нём, начал грешить на treasure_manager, но вспомнил, что вылет происходил бы во время снятия тайника. Дело в том что там и объектов то нет в том районе, нет там никого кроме снайпера бандюков на вышке, но я его с оптики "снимаю", т.е. с ним всё в порядке. Из - за чего безлоговый вылет, не могу понять.
TheDoktor, я бы на твоем месте поступил так: отметил на карте место, где вылетает, потом обошел с другой стороны, еще раз сделал отметку, и так далее, пока не наберешь достаточно точек, чтоб определить центр. Там и будет находится тот объект, вызывающий вылет.

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

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

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

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

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

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

Войти

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

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

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