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

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


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

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

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

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

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

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

Vladis подскажи пожалуйста а как ты именно апгрейд сделал ! =)

Не соответствует правилам. N6260

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

 

Эм. В конфиге их то как раз и несколько. Подсветка, датчик движения, найтвиз, зум.

fb7cc3b532fce476a6e240310ebdb5fa.jpg

 

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

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

[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] ;Удар по морде и еще словесный плевок в морду

 

 

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

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

Можете скинуть распакованную папку weapons со звуками оружия ?

Пока мы едины, мы непобедимы !

---------------------------------------

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

Прогнать звук через СДК. Как? Читай в ридми к звуко моду Монгола и Мюллера.

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

 

вот скрипт:

 

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

Можно ли выполнить проверку под каким смартом находится актор?

EuShikari.png

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

 

data left in smartc/////

 

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

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

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 пользователей

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