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

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


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

кровоSTALKER,

осталась:

else

db.actor:give_info_portion("clock_activ")

end

в эту часть ветки if

ты попадаешь только если db.actor РАВЕН nil

и тогда нет смысла в

db.actor:give_info_portion("clock_activ")

должно быть что то вроде этого:

if db.actor ~= nil then
    if db.actor:object("clock") ~= nil
        return true
    else
        db.actor:give_info_portion("clock_activ") -- это код сработает когда  db.actor ~= nil И db.actor:object("clock") РАВЕН nil
    end
else
    return false
end

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

Всем привет! С дллями разобрался, как мог. Возникли три вопроса по скриптам.

 

1. Можно ли скриптом разрешить трупу/с трупа жрать аптечку? Чтобы на 6 патче не вылетало.

 

2. В 7 mp-патче значительно ускорен курсор в менюшках - очень резво реагирует на движение мышки, удобней вобщем. В его xrgame.dll добавлена такая фишка: CUICursor::UpdateCursorPosition. В 4 и 6 патче такого нет. Можно ли скриптом добавить "акселерацию" мышки в меню?

 

3. Нужен скрипт для переключения оружия из одного слота без захода в инвентарь: то есть, допустим, у нас в руках автомат и в рюкзаке автомат. Нажимаем на 3, и оружие меняется.

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

Нет, что-то вылетает...

Expression : fatal error

Function : CScriptEngine::lua_error

File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

Line : 73

Description : <no expression>

Arguments : LUA error: ...g\s.t.a.l.k.e.r\gamedata\scripts\xr_motivator.script:111: attempt to index global 'xiani_config' (a nil value)

 

что делать?

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

кровоSTALKER,

у меня такая ошибка

attempt to index global

выскакивала когда делал ошибку в синтаксисе скрипта (лишняя скобка, не хватает где то "end" и т.д.)

Ссылка на комментарий
Arguments : LUA error: ...g\s.t.a.l.k.e.r\gamedata\scripts\xr_motivator.script:111: attempt to index global 'xiani_config' (a nil value)

что делать?

Показывай скрипт xiani_config

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий

Вот содержание ксиани_конфиг:

-- показывать время на экране

local ui_show_time = time

end

 

function on_time()

if db.actor:has_info("clock_activ") then

time = true

end

 

-- показывать полоску радиации

ui_show_rad = false -- show radiation bar

 

-- выделять раненых сталкеров на мини-карте

wounded_add_mapspot = true -- to show or not animated mapspot on wounded friendly and neutral npc

 

-- включить уборщик трупов и оружия

cleanup_corpses = false

 

-- восстанавливать солнце

restore_sun = true

 

-- динамическая погода

weather_manager = false

 

-- встречать по одежке

use_outfit_evaluator = true

 

-- not working yet... added for future use

random_starttime = true

spawn_smart_monster_parts = false

 

Тут не 111 строк, это точно видно... Вот что я добовлял.

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

if xiani_config.ui_show_time and

if has_item = db.actor:object("clock") then -- твои новые строки

ui_clock.show_time()

end -- и это

end

 

кровосталкер попробуй типа такого, это в bind_stalker.script , а опытные меня поправят.

Ссылка на комментарий
Макс непонял что добовлять в бинд_сталкер?

чо непонятного, у тебя end не там стоит:

local ui_show_time = time
|-end
|
|function on_time()
|if db.actor:has_info("clock_activ") then
|time = true
|end
|-> сюда его

 

Подскажите,как в ТЧ отключить на мини-карте счётчик контактов и звук

файл gamedata\config\ui\maingame.xml

найди строку

<static_pda_online x="138" y="167" width="35" height="28" light_anim="ui_pda_contacts" la_cyclic="0"
замени на

<static_pda_online x="3000" y="167" width="35" height="28" light_anim="ui_pda_contacts" la_cyclic="0"
чтобы убрать звук, в этом же файле найди строку

<new_contact_snd>detectors\contact_1</new_contact_snd>

и замени звук контакта на пустой звук

ЗЫ Это все касается если ты играешь на не широкоэкранке, если на широкоэкранке, то ищи все это дело в файле maingame_16.xml

Изменено пользователем Gonarh
  • Нравится 1
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий

Как заменить звук контакта на пустой звук?А то я на заменяю..

 

кровоSTALKER:понял попробую.

 

Увы,простое удаление не помогает.

Gonarh, : не помогло.Ага есть,звук контакта.ХЗ почему так..Может накосячил где сам.

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

пустой звук это no_sound если не ошибаюсь, а вот где он лежит, не помню... А ты так сделай, удали строчку <new_contact_snd>detectors\contact_1</new_contact_snd>

и всё.

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

и не поможет, потому шо так низзя, попробуй:

<new_contact_snd>characters_voice\scenario\magnitofon\magnitofon_3</new_contact_snd>

 

как не помогло? звук какой-нить есть?

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий

Добавил нового торговца на ферму в темной долине,а он не появляется нам месте спавна.

Где я напартачил?

 

gamedata\config\gameplay\hanter_trader.xml

В system.ltx файл добавил.

 

<?xml version='1.0' encoding="windows-1251"?>

 

<xml>

<specific_character id="hanter_trader" team_default = "1">

<name>вася</name>

<icon>ui_npc_u_stalker_sv_balon_1</icon>

<map_icon x="1" y="4"></map_icon>

<bio>hanter_trader</bio>

 

<class>hanter_trader</class>

<community>stalker</community>

<money min="100000" max="110000" infinitive="1"></money>

<terrain_sect>stalker_terrain</terrain_sect>

 

<rank>730</rank>

<reputation>96</reputation>

<visual>actors\svoboda\stalker_sv_balon_1</visual>

<snd_config>characters_voice\human_02\freedom\</snd_config>

<crouch_type>-1</crouch_type>

 

<supplies>

[spawn] \n

wpn_sig220 \n

ammo_11.43x23_hydro = 1 \n

wpn_sig550 \n

ammo_5.56x45_ap = 1 \n

</supplies>

 

<start_dialog>hello_dialog</start_dialog>

</specific_character>

 

</xml>

 

 

npc_profile.xml(gamedata\config\gameplay)

 

<!-- Darkvalley -->

 

<character id="hanter_trader">

<class>hanter_trader</class>

<specific_character>hanter_trader</specific_character>

</character>

 

gamedata\config\creatures

spawn_sections

 

[hanter_trader_spawn]:stalker_trader

character_profile = hanter_trader

spec_rank = veteran

community = stalker

use_single_item_rule = off

can_select_items = off

custom_data = scripts\hanter_trader.ltx

 

Написал это в самом начале файла

 

 

gamedata\scripts\ hanter_trader

 

function hanter_trader_spwn1()

local obj

local a = vector() -- Задаем тип переменной

local dir = db.actor:direction()

 

a.x = -139.32 -- координата X

a.y = 2.51 -- высота Y

a.z = -509.81 -- координата Z

 

obj = alife():create("hanter_trader_spawn",a,13193,8,65535)

alife():create_ammo("ammo_9x18_fmj",

obj.position,

obj.m_level_vertex_id,

obj.m_game_vertex_id,

obj.id,

20) -- число патронов, которые будут спавнится при убиистве охотника

End

 

escape_dialog.script(gamedata\scripts\)

 

 

function give_wounded_flash(first_speaker, second_speaker)

dialogs.relocate_item_section(second_speaker, "esc_wounded_flash", "out")

dialogs.relocate_money(second_speaker, 1500, "in")

my_spawns.petrovich_trader_spwn1()

my_spawns_bar.bar_trader_spwn1()

hanter_trader. hanter_trader_spwn1()

end

 

(до этого еще двух торгашей на кордоне поставил)

 

\gamedata\config\scripts\hanter_trader.ltx

[logic]

trade = misc\trade_hanter.ltx

active = remark

 

[remark]

anim = wait

 

\gamedata\config\misc файл trade_hanter.ltx

 

Инвентарь пока такой же как у сидора сделал

 

 

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

У кого-нибудь были проблемы с получением имени гулага персонажа через xr_gulag.get_npc_gulag(obj) ?

у меня постоянный вылет при попытке получить гулаг для каждого онлайн сталкера. Делал и проверку на жив\мертв перед присваиванием переменной значения которое должна возвращать эта функция и даже вызывал ее через pcall - результат один вылет с логом No such operator defined

gulag =""
if not obj:alive() then 
gulag ="страна мертвых"
end    
if obj:alive() then 
local res, gul = pcall(xr_gulag.get_npc_gulag,obj)    
if res then
gulag = gul
else 
gulag = ""
get_console():execute("error="..tostring string.gsub(gul, " ", "_"))    
end
end

сильно не пинать - pcall еще толком не умею пользоваться.

Гулаг еще можно получить непосредственно через db.storage но фиг знает как там обратиться к нужной таблице или строке с этими именами.

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

у тебя опечатка или действительно после tostring скобки нестоит?

get_console():execute("error="..tostring(string.gsub(gul, " ", "_")))

если чесно, конструкция непонятна, так

get_console():execute("error="..string.gsub(tostring(gul), " ", "_"))

выглядит получче

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий

Gonarh

да это опечатка - но тут ведь дело не tostringe у меня изначально чуть по другому было

get_console():execute(res and "Вроде_пашет!" or string.gsub(gul, " ", "_"))

а в том что почему pcall не срабатывает и почему функция xr_gulag.get_npc_gulag(obj) не хочет нужный результат возвращать.

Вот это для меня загадка <_<

 

сейчас вот переправил на твой вариант вывода в консоль а все равно вылет на синхроне

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

ммм, щас ковырнул xr_gulag на скока я понял get_npc_gulag возвращает объект а не строку, при закомментаривании строки get_console():execute(.... вылета не происходит, причем переменная gul nil

не содержит, тама чото есть

 

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

все, кажись разобрался:

  local gulag = nil
  if obj then gulag = xr_gulag.get_npc_gulag(obj) end
  if gulag and gulag.name
  then get_console():execute("gulag_name="..gulag.name)
  else get_console():execute("error") end

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий

Gonarh

как я это все дело понял

функция возвращает strn.gulag

переменная strn это как я понял объект по смарт терейн иду - сам я в этом еще толком не разобрался но по ходу это такой же идентификатор как и айди - тока говорит он о том что непись ходит под гулагом и по этому самому идентификатору возвращается имя его гулага

local strn = sim:object( obj:smart_terrain_id() )

то есть запись strn.gulag должна возвращать именно строку из таблицы

то есть gulag это строковой ключ значение которого уже является строка с именем гулага, а strn это имя таблицы

типа так должно быть

srtn = {gulag = general_gulag}

srtn = {gulag = escapel_gulag}

и все это дело упаковано в storage

значит должна все таки возвращаться строка.

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

а потом уже игра крешится

в общем пока такие мои соображения.

 

Сейчас увидел твой пост - спасибо :rolleyes: пойду проверять.

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

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

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

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

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

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

Войти

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

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

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