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

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


Halford

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

Подскажите мне вот такую штуку: я хочу перевооружить NPC и переопределить еду с трупов. Пробовал в character_food.xml поставить нули, но еда продолжала падать; поставил prob = 0.000001 - еда теперь не падает с каждого трупа.

А нельзя просто в character_desc_general.xml удалить все строчки вида

#include "gameplay\character_food.xml"

и прописать всю еду, медикаменты и прочие патроны в death_ файлы? Или подскажите, в какой скрипт ПЫСы подложили свинью?

 

Vano_Santuri, спасибо! Нового ты ничего не сказал. Я спрашивал, можно ли ненужные строчки удалить вообще? Или аптечки из character_ учитываются при лечении NPC друг друга?

Изменено пользователем Juicy

Athlon II 240/2048MB DDRII/Radeon 3850/500GB WinXP:ST-CoP|Ubuntu Linux 10.04:lots of stuff

Поделиться этим сообщением


Ссылка на сообщение
Подскажите кто-нибудь, как иконки быстрого доступа с худа убрать?

есть мини-мод. Погляди в ветке ЗП "Ваши правки"

 

вот прямая ссылка - http://www.amk-team.ru/forum/index.php?sho...st&p=302606

Изменено пользователем Juicy

Athlon II 240/2048MB DDRII/Radeon 3850/500GB WinXP:ST-CoP|Ubuntu Linux 10.04:lots of stuff

Поделиться этим сообщением


Ссылка на сообщение

подскажите мне про ремонт снаряги! Вот я читаю скрипт inventory_upgrades.script и никак не могу найти функцию ремонта. Ту самую функцию, что приравнивает item_condition к единице. Где её искать?

Есть функция effect_functor_a, которая непосредственно отымает у ГГ денюжку, но она вызывается напрямую из из xrGame.dll. Можно как-нибудь сделать, чтобы механик чинил не до 100%, а меньше. В каком месте ковырять?

--' funtions for upgerade items ----------------------------------------------------
--' Made by Distemper ----------------------------------------------------------------
--' 03.08 --------------------------------------------------------------------------------
    --' функция доступности апгрейда
        --' function precondition_functor_a( param1, section )
    --' функция применения апгрейда (отнимание денег)
        --' function effect_functor_a( param2, section )
    --' функция отображения нужных сдедств  для апгрейда
        --' function prereq_functor_a( param3, section )
    --' функция временно не используеться
        --' function prereq_tooltip_functor_a( param3 )
        --' функции для отображения свойств апгрейдов
        --' function property_functor_a( param1, name )
        --' function property_functor_b( param1, name )
        --' function property_functor_c( param1, name )
        --' функция для отображения специализации техника
--------------------------------------------------------------------------------------------
cur_hint = nil
local issue_condlist = true
local mechanic_name = ""
local char_ini = ini_file("item_upgrades.ltx")
local param_ini = ini_file("misc\\stalkers_upgrade_info.ltx")
local cur_price_percent = 1
function precondition_functor_a( param1, section )
    if(param_ini:line_exist(mechanic_name.."_upgr", section)) then
        local param = param_ini:r_string(mechanic_name.."_upgr", section)
        if(param) then
            if(param=="false") then
                return 1
            elseif(param~="true") then
                local possibility_table = xr_logic.parse_condlist(victim, mechanic_name.."_upgr", section, param)
                local possibility = xr_logic.pick_section_from_condlist(db.actor, victim, possibility_table)
                if not(possibility) or (possibility=="false") then
                    return 2
                end
            end
        end
    end
    if(db.actor) then
        local price = math.floor(char_ini:r_u32(section, "cost")*cur_price_percent)
        local cash = db.actor:money()
        if(cash<price) then
            return 2
        end
    end
    return 0
end

function effect_functor_a( param2, section, loading ) --( string, string, int )
    if loading == 0 then
        local money = char_ini:r_u32(section, "cost")
        db.actor:give_money(math.floor(money*-1*cur_price_percent))
    end
end

function get_upgrade_cost(section)
    if db.actor then
        local price = math.floor(char_ini:r_u32(section, "cost")*cur_price_percent)
                return game.translate_string("st_upgr_cost")..": "..price
    end
    return " "
end

function get_possibility_string(mechanic_name, possibility_table)
        local str = ""
    if(cur_hint) then
        for k,v in pairs(cur_hint) do
            str = str.."\\n - "..game.translate_string(v)
        end
    end
    if(str=="") then
        str = " - add hints for this upgrade"
    end
    return str
end

function prereq_functor_a( param3, section )
    local str = ""
    if(param_ini:line_exist(mechanic_name.."_upgr", section)) then
        local param = param_ini:r_string(mechanic_name.."_upgr", section)
        if(param) then
            if(param=="false") then
                return str
            else
                cur_hint = nil
                local possibility_table = xr_logic.parse_condlist(victim, mechanic_name.."_upgr", section, param)
                local possibility = xr_logic.pick_section_from_condlist(db.actor, victim, possibility_table)
                if not(possibility) or (possibility=="false") then
                    str = str..get_possibility_string(mechanic_name, possibility_table)
                end
            end
        end
    end
    if(db.actor) then
        local price = math.floor(char_ini:r_u32(section, "cost")*cur_price_percent)
        local cash = db.actor:money()
        if(cash<price) then
            return str.."\\n - "..game.translate_string("st_upgr_enough_money")--.." "..price-cash.." RU"
        end
    end
    return str
end

function property_functor_a( param1, name )
    local prorerty_name = char_ini:r_string(name, "name")
    local t_prorerty_name = game.translate_string(prorerty_name)
    local section_table = utils.parse_names(param1)
    local section_table_n = #section_table
    local section = section_table[1]
    if(section_table_n==0) then
        return ""
    end
    local value = 0
    local sum = 0
    for i = 1,section_table_n do
        if not(char_ini:line_exist(section_table[i], "value")) or not(char_ini:r_string(section_table[i], "value")) then
            return t_prorerty_name
        end
        value = char_ini:r_string(section_table[i], "value")
        if(name~="prop_night_vision") then
            sum = sum + tonumber(value)
        else
            sum = tonumber(value)
        end
    end
    if(sum<0) then
        value = sum
    else
        value = "+"..sum
    end

    if(name=="prop_ammo_size" or name=="prop_artefact") then
        return t_prorerty_name.." "..value
    elseif(name=="prop_restore_bleeding" or name=="prop_restore_health" or name=="prop_power") then
        if(name=="prop_power") then
            value = "+"..tonumber(value)*2
        end
--        local str = string.format("%s %4.1f", t_prorerty_name, value)
--        return str
        return t_prorerty_name.." "..value
    elseif(name=="prop_tonnage" or name=="prop_weightoutfit" or name=="prop_weight") then
            local str = string.format("%s %5.2f %s", t_prorerty_name, value, game.translate_string("st_kg"))
            return str
    elseif(name=="prop_night_vision") then
        if(tonumber(value)==1) then
            return t_prorerty_name
        else
            return game.translate_string(prorerty_name.."_"..tonumber(value))
        end
    elseif(name=="prop_no_buck" or name=="prop_autofire") then
        return t_prorerty_name
    end
    return t_prorerty_name.." "..value.."%"
end

function property_functor_b( param1, name )
    return issue_property( param1, name )
end

function property_functor_c( param1, name )
    return issue_property( param1, name )
end

function need_victim(obj)
    victim = obj
end

function issue_property( param1, name )
    local prorerty_name = char_ini:r_string(name, "name")
    local t_prorerty_name = game.translate_string(prorerty_name)
    local value_table = utils.parse_names(param1)
    local section = value_table[1]
    if section then
        if not char_ini:line_exist(section, "value") or not char_ini:r_string(section, "value") then
            return t_prorerty_name
        end
        local value = char_ini:r_string(section, "value")
        return t_prorerty_name.." "..string.sub(value, 2, -2)
    else
        return t_prorerty_name
    end
end

-- функция, возвращающая цену ремонта
-- сделал разной цену для костюма и оружия. Juicy
local function how_much_repair( item_name, item_condition )
    local ltx = system_ini()
    local cost = ltx:r_u32(item_name, "cost")
    local class = ltx:r_string(item_name, "class")
--    Стоимость ремонта (коэффициент) по умолчанию - 0.6
    local cof_w = 2.5 --коэф.ремонта оружия
    local cof_o = 1.5 --коэф.ремонта брони
    if string.find(item_name, "wpn_") then    
        return math.floor(cost*(1-item_condition)*cof_w*cur_price_percent)
    else
        return math.floor(cost*(1-item_condition)*cof_o*cur_price_percent)    
    end
end

function can_repair_item( item_name, item_condition, mechanic ) --( string, float, string )
-- При уровне 0.6 чинить нельзя
    if(item_name=="pri_a17_gauss_rifle") or (item_condition < 0.6) then
        return false
    end
    local price = how_much_repair( item_name, item_condition )
    if db.actor:money() < price then
        return false
    end
    return true
end

function question_repair_item( item_name, item_condition, can, mechanic ) --( string, float, bool, string )
    if(item_name=="pri_a17_gauss_rifle") then
        return game.translate_string("st_gauss_cannot_be_repaired")
    end
-- ---------------------------
-- предупреждение при ремонте хлама
    if item_condition < 0.6 then
        return game.translate_string("st_cannot_repair_this") --посылаем в сад!
    end

local price = how_much_repair( item_name, item_condition )
    if db.actor:money() < price then
        return game.translate_string("st_upgr_cost")..": "..price.." RU\\n"..game.translate_string("ui_inv_not_enought_money")..": "..price-db.actor:money().." RU"
    end
    return game.translate_string("st_upgr_cost").." "..price.." RU. "..game.translate_string("ui_inv_repair").."?"
-- return game.translate_string("st_upgr_cost").." "..item_condition.." RU. "..game.translate_string("ui_inv_repair").."?"
end

function effect_repair_item( item_name, item_condition )
    if mechanic_name ~= "kat_cs_commander" then
        local price = how_much_repair( item_name, item_condition )
        db.actor:give_money(-price)
    end
end

function can_upgrade_item( item_name, mechanic )
    mechanic_name = mechanic
    setup_discounts()
    if param_ini:line_exist(mechanic, "he_upgrade_nothing") then
        return false
    end
    if not param_ini:line_exist(mechanic, item_name) then
        return false
    end
    return true
end

function setup_discounts()
        if param_ini:line_exist(mechanic_name, "discount_condlist") then
                local condlist = param_ini:r_string(mechanic_name, "discount_condlist")
        local parsed = xr_logic.parse_condlist(db.actor, nil, nil, condlist)
        xr_logic.pick_section_from_condlist(db.actor, nil, parsed)
    end
end

function mech_discount(perc)
    cur_price_percent = perc
end

 

Athlon II 240/2048MB DDRII/Radeon 3850/500GB WinXP:ST-CoP|Ubuntu Linux 10.04:lots of stuff

Поделиться этим сообщением


Ссылка на сообщение

Carnagie начни новую игру! А еще покажи (под спойлером) фрагменты death_items_ файлов, где у тебя прописана жратва

Предметы есть на продаже у Бороды
торговля с трупами никак не связана вообще.

 

 

 

Подскажите пожалуйста, можно ли к использованию бинта и аптечки привязать функцию, сбивающую выносливость гг в 0?

Erfin, я в ТЧ и ЧН делал так:

чтобы ГГ не лечился и не перевязывал раны на бегу (это чит, я считаю) я в конфиге соответствующего предмета (бинта) ставил параметр eat_power = -0.8

Почему именно 0.8? Да потомучто при силе 0.2 ГГ не может бежать спринтом, а переходит на шаг, но при этом не дышит как ^%$# (извините, но жутко бесит!). Можно вообще поставить (-1.0). Тогда он остановится. Не уверен, что работает в ЗП, попробуй.

Изменено пользователем Juicy

Athlon II 240/2048MB DDRII/Radeon 3850/500GB WinXP:ST-CoP|Ubuntu Linux 10.04:lots of stuff

Поделиться этим сообщением


Ссылка на сообщение
PavelSnork, начни новую игру, делов-то! ^_^ Они сразу все заспавнятся

Athlon II 240/2048MB DDRII/Radeon 3850/500GB WinXP:ST-CoP|Ubuntu Linux 10.04:lots of stuff

Поделиться этим сообщением


Ссылка на сообщение

Чем может быть вызван такой глюк с графикой: у меня отражение в воде мигает с частотой около 1 раз в секунду. Вообще вся вода мигает. Видно издалека, жутко мешает играть :(

Играю на DX9, максимальные настройки, лучи. DirectX обновленный, драйвер видео - свежий. Может, консольная команда какая-то есть?

Athlon II 240/2048MB DDRII/Radeon 3850/500GB WinXP:ST-CoP|Ubuntu Linux 10.04:lots of stuff

Поделиться этим сообщением


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

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