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

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


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

Строгое предупреждение от модератора Halford
Цитирование предыдущего поста запрещено.

1 -Файл configs\gameplay\character_desc_general.xml секция actor. Там четко видно...

Потребуется новая игра

2 - gamedata\configs\alife.ltx ...... start_time = 9:00:00 Потребуется новая игра

Изменено пользователем Halford
ЗОНА ДОЛЖНА БЫТЬ НЕПРЕДСКАЗУЕМОЙ !!! НЕТ ТАМ ЛОГИКИ И НЕ НУЖНА ОНА ТАМ !!!
Ссылка на комментарий

Vano_Santuri,

3.12. Логика вертолёта

 

Общие сведения:

Вертолёт работает на «логике».

На вертолёт реагируют аномалии.

Вертолёт не обрабатывает столкновения с геометрией и физикой пока он не сбит.

Попадания в область кабины, где сидит первый пилот, в десятки раз более болезненны для вертолёта.

У вертолёта есть универсальная боевая схема на манер сталкеров.

Пилоты вертолета реагируют репликами на события: хит, видит врага, поврежден (задымился), падает.

[править]

3.12.1. Схема heli_move:

 

Общие сведения: Позволяет летать вертолёту по патрульному пути, регулировать скорость, зависать, стрелять по различным целям.

Для схемы должен быть задан path_move – путь, по которому будет летать вертолёт. Он может содержать одну вершину, если нужно, чтоб вертолёт висел на месте.

Можно (но не обязательно) задать path_look – путь, в вершины которого вертолет может смотреть.

Вершины этих путей могут быть поставлены где угодно в пределах ограничивающего бокса уровня. Они не зависят от ai-nodes.

По пути вертолёт летает без учёта связей между вершинами. Он летает от вершины к вершине в порядке возрастания их номера (т.е. в порядке, в котором их поставили на уровень).

Вертолёт старается летать точно по вершинам пути. При желании можно сделать ювелирный пролёт под мостом.

Вертолёт старается летать как можно быстрее. Пояснение: если ему задать, что в следующей вершине пути он должен иметь скорость 10 м/с, а его максимальная скорость установлена в 30 м/с, то он не станет сразу лететь 10 м/с. Он сначала будет разгоняться вплоть до 30 м/с и только на подлёте к целевой вершине начнёт тормозить с расчётом прибыть в неё имея 10 м/с.

Если в вершине пути path_move задан набор флажков, то вертолёт будет смотреть в любую из вершин path_look, в которых задан такой же набор флажков. Поворачиваться к этой точке вертолёт начнёт с предыдущей вершины пути. На данном этапе вертолет не может, зависнув в одном месте, смотреть поочередно в несколько точек path_look

Настройки:

engine_sound = true/false (по умолчанию true)

Вкл/выкл звук двигателя вертолёта.

invulnerable = true/false (по умолчанию false)

Неуязвимость. Если true, вертолёт игнорирует все хиты.

immortal = true/false (по умолчанию false)

Бессмертие. Если true, вертолёт получает повреждения, но не умирает.

mute = true/false (по умолчанию false)

Отключает универсальные реплики пилотов вертолета.

rocket_delay = msec (время в миллисекундах реального времени)

Задержака между пусками ракет. По дефолту берется из ltx (сейчас 1250 мсек)

default_velocity = m/sec (скорость с которой летает вертолет, если не заданы другие параметры)

Параметры, задаваемые в именах вершин пути path_move:

«e» – (сокр. от enemy) задание врага (цели). Стрелять по этой цели вертолёт начнёт уже в предыдущей вершине. Если значение не задано, то будет стрелять в точку из path_look, которая соответствует данной вершине. Если задано «e=actor» (можно сокращённо «e=a»), то огонь будет вестись по актёру. Если задано «e=число», стрелять будет по объекту со story id равным числу.

«w» – (сокр. от weapon) каким оружием стрелять. Возможные значения: w=1 – стрелять только пулемётом; w=2 – стрелять только ракетами. По умолчанию стреляет из всего.

«v» - (сокр. от velocity) задание максимальной скорости (в м/с) на участке пути от данной вершины до следующей. Если этот параметр не задан, то умолчание берётся из файла helicopter.ltx.

«dv» - (сокр. от destination velocity) задание скорости (в м/с), которую вертолёт должен иметь в момент прибытия в данную вершину.

«die» - убить вертолёт.

«flame» - начать дымить (как будто подбили).

Параметры, задаваемые в именах вершин пути path_look:

«e» - работает так же как и в path_move. Разница в том, что стрелять по указанной цели вертолёт начнёт лишь тогда, когда прибудет в вершину пути path_move, которая соответствует данной вершине path_look.

«w» – см. такой же параметр для пути path_move.

«t» - (сокр. от time) длительность времени (в мс реального времени), на протяжении которого вертолёт будет смотреть в данную точку. Если этот параметр не задан, то вертолёт пронесётся без остановки, но постарается на ходу развернуться к этой вершине.

[править]

3.12.2. Универсальная боевая схема:

 

Общие сведения:

В универсальной боевой схеме вертолёт не привязан к путям.

Вертолёт не видит никого. Узнать о враге вертолёт может только при получении хита или из параметра в custom data.

Вертолёт стреляет по врагу, если видит его. Если не видит – ищет, облетая вокруг точки, где последний раз видел. Если долго не видит врага – забывает его. Если врага задали принудительно из текущей секции схемы поведения, то он не забудет его, пока находится в этой секции.

Настройки:

Отдельной секции для этой схемы поведения нет. Поэтому настройки производятся в секции текущей схемы поведения:

combat_ignore = true/false true означает игнорирование получения хита. Т.е. вертолёт не будет пытаться «отомстить» тому, от кого он получил хит.

combat_enemy = nil/actor/StoryID С помощью этого параметра можно задать вертолёту конкретного врага. nil – нету врага; actor – игрок; SID – числовое story id врага.

combat_use_rocket = true/false Можно ли вертолёту пользоваться рокетами.

combat_use_mgun = true/false Можно ли вертолёту пользоваться пулемётом.

combat_velocity = <число> Скорсть, с которой вертолет будет делать боевые заходы

combat_safe_altitude = <число> Высота, относительно самой высокой точки геометрии на уровне ниже которой вертолет не будет опускаться в боевой схеме (может быть отрицательным)

К вертолёту подключена схема xr_hit. Работает как у сталкеров. В xr_effects есть группа функций для работы с вертолётом из его custom data:

heli_set_enemy_actor - сделать актёра врагом вертолёту heli_start_flame - поджечь вертолёт heli_die - убить вертолёт

combat_velocity = - боевая скорость в этой секции указывается в м/с combat_safe_altitude = - высота боевая в метрах, может принимать отрицательные значения combat_use_rocket = - true/false использовать ли ракеты в этой секции combat_use_mgun = - true/false использовать ли пулемет в этой секции

[править]

 

Ленивые жуть стали....

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

Еще один вопрос по логике, как защитить непися от подмятия под смарт, чтоб его гулаг не брал?

(В настройках логики на http://stalkerin.gameru.net/wiki/index.php....D1.8F_no_smart )

 

Так вот в ЗП я её вообще не нашел, нигде, там другая секция?

Что-то кончается, что-то начинается...

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

Если в олл_спавне его спавнить - то в кастомдату ему пихнуть чтото типа

custom_data = <<END

[spawner]

 

[smart_terrains]

none = true

 

[logic]

active = camper

 

[camper]

path_walk = wind_blokpost_camper1_walk

path_look = wind_blokpost_camper1_look

radius = 5

sniper = true

END

 

лучше логику написать отдельным файлом config\scripts\zaton\mu_nps_logic.ltx ,

а файл указать в секции чувака в олл_спавн - чтобы не перепаковывать для правки

 

[logic]

cfg = scripts\zaton\mu_nps_logic.ltx

END

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

Народ, подскажите, пожалуйста, такой момент:

В руках ГГ автомат (например, АК-74) с установленным прицелом. Как скриптом определить, какой именно из возможных прицелов установлен?

 

Думал, в нет-пакете это прописывается - ни разу, там только инфа есть/нет прицел в принципе. Где искать зацепку - ума не приложу :(

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

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

Kirag,

Так вроде у ствола может быть только один прицел/подствольник/глушитель. Это прописано в конфигах и в визуале.

 

WodkaGT,

да, действительно. Я малость отстал от жизни.

 

Интересно, аддоны как и раньше исчезают при установке?

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

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

Всем доброго здравия.Нужна помощь.

Нужно сделать чтобы НПС после определённой фразы в диалоге стал враждебным к ГГ.

[logic]

active = remark@01

prior = 200

on_hit = hit

 

[hit]

on_info = {=hit_npc_from_actor} %+kislyi_hit_npc_from_actor%

 

[remark@01]

path_walk = walker_1_walk

path_look = walker_1_look

combat_ignore_cond = {=is_enemy_actor -kislyi_hit_npc_from_actor} true

combat_ignore_keep_when_attacked = true

meet = meet

gather_items_enabled = false

help_wounded_enabled = false

corpse_detection_enabled = false

on_info = {+kislyi_hit_npc_from_actor} nil %=play_s3d_sound(characters_voice\human_03\bandit\fight\attack\script_attack_8)%

meet = meet

use_camp = false

def_state_moving1 = patrol

def_state_standing = fold_arms

no_retreat = true

anim = ward_noweap

target = story | actor

 

[meet]

close_snd_hello = nil

close_snd_bye = nil

close_anim = nil

close_victim = nil

far_anim = nil

far_victim = nil

close_distance = 0

far_distance = 0

use = {=actor_enemy} true

allow_break = true

meet_on_talking = false

use_wpn = false

 

function hit_bandit_kyslyi_from_actor(first_speaker, second_speaker)

local npc = dialogs.who_is_npc(first_speaker, second_speaker)

local actor = dialogs.who_is_actor(first_speaker, second_speaker)

db.actor:give_info_portion("kislyi_hit_npc_from_actor")

xr_effects.hit_npc_from_actor(actor,npc,{"jup_bandit_kyslyi"})

end

 

</phrase>

<phrase id="1311">

<text>jup_kislyi_dialog_1311</text>

<give_info>kislyi_hit_npc_from_actor</give_info>

<action>dialogs.break_dialog</action>

</phrase>

</phrase_list>

 

* MEMORY USAGE: 421850 K

* End of synchronization A[1] R[1]

intro_delete ::update_game_loaded

 

FATAL ERROR

 

[error]Expression : !m_error_code

[error]Function : raii_guard::~raii_guard

[error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp

[error]Line : 748

[error]Description : ....e.r. - Зов Припяти\gamedata\scripts\xr_logic.script:655: attempt to call field '?' (a nil value)

 

 

stack trace:

 

 

if infop.params then

xr_effects[infop.func](actor, npc, infop.params)

else

xr_effects[infop.func](actor, npc)

end

 

 

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

Посмотри логику ограбления на земснаряде

[remark@robbery_artefact] ;Диалог ограбления

target = story | actor

anim = threat_na

snd_anim_sync = true

meet = meet@robbery

on_info = {+zat_b14_robbery_give_artefact} walker@item

on_info2 = {+zat_b14_robbery_not_give_artefact} remark@punch

in_restr = zat_b14_not_give_item_zone

wounded = wounded

combat_ignore_cond = {!actor_enemy} true

danger = danger_condition@go

 

[remark@punch] ;Удар по морде и еще словесный плевок в морду

 

 

или когда за Вано долг отдает.

Два варианта развития событий по инфопоршням из диалога(больше не скажу - сам дуб)

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

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

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

Уважаемые товрищи, Монорох, Маландриус и кто может подскажите одну вещь, вот "адаптировал" скрипт спавна левел_ченджеров ОТ Декса для ТЧ под ЗП, с размерами нетпакета вроде норма, НО если во время спавна левел_ченджера, он находится вне зоны действия алайфа, то идет конкретный вылет!, а если в зоне алайфа, то спавн идет отличный, и левел_ченджер рабочий !!!!

 

вот скрипт:

 

function lc_zat_to_jup_perehod()
spawn_lc(1,"from_zaton",vector():set(-533.383544921875,38.072925567627,-244.418579101563),"to_jupiter",vector():set(433.931335449219,2.76659393310547,399.121765136719),"level_changer_down","На Юпитер",1,vector():set(0,-1,0))
end

function spawn_lc(sid, from_level, from_pos, dest_level, dest_pos, spot, hint, mode, dest_dir, custom)
    local vertexes = {
        from_zaton = {lvid=20815, gvid=0},
        to_jupiter = {lvid=1403656, gvid=317}    
    }

    local obj = alife():create("level_changer", from_pos, vertexes[from_level]["lvid"], vertexes[from_level]["gvid"])
    if sid then
        level.map_add_object_spot_ser(obj.id, spot, hint)
    end

    if obj ~= nil then
        local packet = net_packet()
        
        obj:STATE_Write(packet)
        -- свойства cse_alife_object
        local game_vertex_id = packet:r_u16()
        local cse_alife_object__unk1_f32 = packet:r_float()
        local cse_alife_object__unk2_u32 = packet:r_s32()
        local level_vertex_id = packet:r_s32()
        local object_flags = packet:r_s32()
        local custom_data = packet:r_stringZ()
        local story_id = packet:r_s32()
        local cse_alife_object__unk3_u32 = packet:r_s32()
        
        -- свойства cse_shape
        local shape_count = packet:r_u8()
        local shape_type
        local center
        local radius
        
        if shape_count == 0 then
            shape_type = 0
            center = vector():set(0,0,0)
            radius = 10.0
            shape_count = 1
        else
            for i=1,shape_count do
                local shape_type = packet:r_u8()
                if shape_type == 0 then
                    local center = packet:r_vec3()
                    local radius = packet:r_float()
                else
                    local v1 = packet:r_vec3()
                    local v2 = packet:r_vec3()
                    local v3 = packet:r_vec3()
                    local v4 = packet:r_vec3()
                end
            end
        end
        
        -- свойства cse_alife_space_restrictor
        local restrictor_type = packet:r_u8()
        
        -- свойства cse_alife_level_changer
        local dest_game_vertex_id = packet:r_u16()
        local dest_level_vertex_id = packet:r_s32()
        local dest_position = packet:r_vec3()
        local dest_direction = packet:r_vec3()
        local dest_level_name = packet:r_stringZ()
        local dest_graph_point = packet:r_stringZ()
        local silent_mode = packet:r_u8()
        
        -- свойства se_level_changer
        local enabled = packet:r_u8()
        local hint = packet:r_stringZ()
        local se_level_changer__marker = packet:r_u16()
        
        if packet:r_elapsed() ~= 0 then get_console():execute("left="..packet:r_elapsed()) end
        
        -- свойства cse_alife_object
        packet:w_u16(game_vertex_id) --16
        packet:w_float(cse_alife_object__unk1_f32)
        packet:w_s32(cse_alife_object__unk2_u32)
        packet:w_s32(level_vertex_id)
        packet:w_s32(object_flags)
        if custom ~= nil then
            packet:w_stringZ(custom)
        else
            packet:w_stringZ(custom_data)
        end
        packet:w_s32(sid)
        packet:w_s32(cse_alife_object__unk3_u32)
        
        -- свойства cse_shape
        packet:w_u16(shape_count)
        
        for i=1,shape_count do
            packet:w_u16(shape_type)
            if shape_type == 0 then
                packet:w_vec3(vector():set(0,0,0))
                packet:w_float(3)
            else
                packet:w_vec3(vector():set(3,0,0))
                packet:w_vec3(vector():set(0,3,0))
                packet:w_vec3(vector():set(0,0,3))
                packet:w_vec3(vector():set(0,0,0))
            end
        end
        
        -- свойства cse_alife_space_restrictor
        packet:w_u16(restrictor_type)
        
        -- свойства cse_alife_level_changer
        packet:w_u16(vertexes[dest_level]["gvid"]) --16
        packet:w_s32(vertexes[dest_level]["lvid"])
        packet:w_vec3(dest_pos)
        packet:w_vec3(dest_dir)
        packet:w_stringZ(dest_level)
        packet:w_stringZ(dest_graph_point)
        packet:w_u16(mode)
        
        -- свойства se_level_changer
        packet:w_u16(enabled)
        packet:w_stringZ(hint)
        packet:w_u32(se_level_changer__marker)
        
        obj:STATE_Read(packet, packet:w_tell()-packet:r_tell())
    end
end

 

 

 

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

 

ЗЫ: Если будете использовать данный скрипт в своих наработках, можете даже не писать, что делал я, только не пишите, что это разработка именно ваша.

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

Что-то кончается, что-то начинается...

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

подскажите мне про ремонт снаряги! Вот я читаю скрипт 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

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

Никто не поделится рабочим АСДС ? У меня было два : тот что здесь, и тот , который позже, НО оба с ошибками, распаковываю, изменяю всего лишь одну логику (указание на логику) , компилю, при повторном рекомпиле этого алл.спавна летят смарты и коверы , причем все....

 

data left in smartc/////

 

Это можно как-то вылечить? И чем это черевато?

Что-то кончается, что-то начинается...

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

http://stalkerin.gameru.net/wiki/index.php...ммы_от_AMK_Team

 

Качай ацдц отсюда. Самое оно. На инсайде например нет гг_толза.

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

Vano_Santuri. У тебя нормальный АСДС. Если оригинальный

алл.спавн туда-сюда компилится без этого лога то все ОК.

перепакованный в СДК алл.спавн так-же себя ведет. но на

работу не влияет. В американском моде то-же видел - они добавляли

смарт-террейны - такие-же логи в течение распаковки.

 

Пример спавна эксклюзивного чувака в смарт-террейне(ранее спрашивал -

ответа не получил) может кому-нибудь интересно.

Пример логики изменения анимации по дистанции от Г.Г и эксперименты с

анимациями на разных скелетах (ТЧ и ЗП)

 

Скрин здесь http://img705.imageshack.us/img705/7430/34zaton.jpg

http://img42.imageshack.us/img42/9182/51zaton.jpg

 

Файлы здесь http://www.sendspace.com/file/x67k8f

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

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

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

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

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

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

Войти

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

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

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