strong 2 Опубликовано 13 Февраля 2010 Поделиться Опубликовано 13 Февраля 2010 (изменено) Строгое предупреждение от модератора Halford Цитирование предыдущего поста запрещено. 1 -Файл configs\gameplay\character_desc_general.xml секция actor. Там четко видно... Потребуется новая игра 2 - gamedata\configs\alife.ltx ...... start_time = 9:00:00 Потребуется новая игра Изменено 13 Февраля 2010 пользователем Halford ЗОНА ДОЛЖНА БЫТЬ НЕПРЕДСКАЗУЕМОЙ !!! НЕТ ТАМ ЛОГИКИ И НЕ НУЖНА ОНА ТАМ !!! Ссылка на комментарий
Niko1995 0 Опубликовано 14 Февраля 2010 Поделиться Опубликовано 14 Февраля 2010 Vladis подскажи пожалуйста а как ты именно апгрейд сделал ! =) Не соответствует правилам. N6260 Ссылка на комментарий
Unnamed Black Wolf 4 Опубликовано 14 Февраля 2010 Поделиться Опубликовано 14 Февраля 2010 (изменено) 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 использовать ли пулемет в этой секции [править] Ленивые жуть стали.... Изменено 14 Февраля 2010 пользователем Unnamed Black Wolf Ссылка на комментарий
Vano_Santuri 33 Опубликовано 14 Февраля 2010 Поделиться Опубликовано 14 Февраля 2010 Еще один вопрос по логике, как защитить непися от подмятия под смарт, чтоб его гулаг не брал? (В настройках логики на http://stalkerin.gameru.net/wiki/index.php....D1.8F_no_smart ) Так вот в ЗП я её вообще не нашел, нигде, там другая секция? Что-то кончается, что-то начинается... Ссылка на комментарий
nuklia 0 Опубликовано 15 Февраля 2010 Поделиться Опубликовано 15 Февраля 2010 Если в олл_спавне его спавнить - то в кастомдату ему пихнуть чтото типа 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 Ссылка на комментарий
Kirag 39 Опубликовано 15 Февраля 2010 Поделиться Опубликовано 15 Февраля 2010 Народ, подскажите, пожалуйста, такой момент: В руках ГГ автомат (например, АК-74) с установленным прицелом. Как скриптом определить, какой именно из возможных прицелов установлен? Думал, в нет-пакете это прописывается - ни разу, там только инфа есть/нет прицел в принципе. Где искать зацепку - ума не приложу Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Malandrinus 615 Опубликовано 15 Февраля 2010 Поделиться Опубликовано 15 Февраля 2010 (изменено) Kirag, Так вроде у ствола может быть только один прицел/подствольник/глушитель. Это прописано в конфигах и в визуале. WodkaGT, да, действительно. Я малость отстал от жизни. Интересно, аддоны как и раньше исчезают при установке? Изменено 15 Февраля 2010 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
WodkaGT 109 Опубликовано 15 Февраля 2010 Поделиться Опубликовано 15 Февраля 2010 Эм. В конфиге их то как раз и несколько. Подсветка, датчик движения, найтвиз, зум. Ссылка на комментарий
slayer_kch 11 Опубликовано 17 Февраля 2010 Поделиться Опубликовано 17 Февраля 2010 Всем доброго здравия.Нужна помощь. Нужно сделать чтобы НПС после определённой фразы в диалоге стал враждебным к ГГ. [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 Ссылка на комментарий
nuklia 0 Опубликовано 17 Февраля 2010 Поделиться Опубликовано 17 Февраля 2010 Посмотри логику ограбления на земснаряде [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] ;Удар по морде и еще словесный плевок в морду или когда за Вано долг отдает. Два варианта развития событий по инфопоршням из диалога(больше не скажу - сам дуб) Ссылка на комментарий
goodman 0 Опубликовано 17 Февраля 2010 Поделиться Опубликовано 17 Февраля 2010 Можете скинуть распакованную папку weapons со звуками оружия ? Пока мы едины, мы непобедимы ! --------------------------------------- Ссылка на комментарий
Каратель 0 Опубликовано 17 Февраля 2010 Поделиться Опубликовано 17 Февраля 2010 Подскажите, как увеличить громкость проигрываемой музыки в приемниках на янове, скадовске? http://stalker-game.com/mark-cop/benchmark...d=10797&b=2 Ссылка на комментарий
iDreD 5 Опубликовано 17 Февраля 2010 Поделиться Опубликовано 17 Февраля 2010 Прогнать звук через СДК. Как? Читай в ридми к звуко моду Монгола и Мюллера. Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
Vano_Santuri 33 Опубликовано 17 Февраля 2010 Поделиться Опубликовано 17 Февраля 2010 (изменено) Уважаемые товрищи, Монорох, Маландриус и кто может подскажите одну вещь, вот "адаптировал" скрипт спавна левел_ченджеров ОТ Декса для ТЧ под ЗП, с размерами нетпакета вроде норма, НО если во время спавна левел_ченджера, он находится вне зоны действия алайфа, то идет конкретный вылет!, а если в зоне алайфа, то спавн идет отличный, и левел_ченджер рабочий !!!! вот скрипт: 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 Так вот немог кто-нибудь бы объяснить в чем проблема, этим вы поможете не только мне, но , тогда не придется делать переходы через алл.спавн т.е и рестрикторы и пр... ЗЫ: Если будете использовать данный скрипт в своих наработках, можете даже не писать, что делал я, только не пишите, что это разработка именно ваша. Изменено 17 Февраля 2010 пользователем Vano_Santuri Что-то кончается, что-то начинается... Ссылка на комментарий
iDreD 5 Опубликовано 18 Февраля 2010 Поделиться Опубликовано 18 Февраля 2010 http://www.amk-team.ru/forum/index.php?sho...=8243&st=60 Мод товарища псевдогринго. Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
Juicy 3 Опубликовано 19 Февраля 2010 Поделиться Опубликовано 19 Февраля 2010 подскажите мне про ремонт снаряги! Вот я читаю скрипт 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 Ссылка на комментарий
Po-meceniy 4 Опубликовано 19 Февраля 2010 Поделиться Опубликовано 19 Февраля 2010 Можно ли выполнить проверку под каким смартом находится актор? Ссылка на комментарий
Vano_Santuri 33 Опубликовано 19 Февраля 2010 Поделиться Опубликовано 19 Февраля 2010 Никто не поделится рабочим АСДС ? У меня было два : тот что здесь, и тот , который позже, НО оба с ошибками, распаковываю, изменяю всего лишь одну логику (указание на логику) , компилю, при повторном рекомпиле этого алл.спавна летят смарты и коверы , причем все.... data left in smartc///// Это можно как-то вылечить? И чем это черевато? Что-то кончается, что-то начинается... Ссылка на комментарий
iDreD 5 Опубликовано 19 Февраля 2010 Поделиться Опубликовано 19 Февраля 2010 http://stalkerin.gameru.net/wiki/index.php...ммы_от_AMK_Team Качай ацдц отсюда. Самое оно. На инсайде например нет гг_толза. Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
nuklia 0 Опубликовано 20 Февраля 2010 Поделиться Опубликовано 20 Февраля 2010 (изменено) Vano_Santuri. У тебя нормальный АСДС. Если оригинальный алл.спавн туда-сюда компилится без этого лога то все ОК. перепакованный в СДК алл.спавн так-же себя ведет. но на работу не влияет. В американском моде то-же видел - они добавляли смарт-террейны - такие-же логи в течение распаковки. Пример спавна эксклюзивного чувака в смарт-террейне(ранее спрашивал - ответа не получил) может кому-нибудь интересно. Пример логики изменения анимации по дистанции от Г.Г и эксперименты с анимациями на разных скелетах (ТЧ и ЗП) Скрин здесь http://img705.imageshack.us/img705/7430/34zaton.jpg http://img42.imageshack.us/img42/9182/51zaton.jpg Файлы здесь http://www.sendspace.com/file/x67k8f Изменено 20 Февраля 2010 пользователем nuklia Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти