alex5773 1 330 Опубликовано 27 Октября 2018 Поделиться Опубликовано 27 Октября 2018 (изменено) -- Изменено 28 Октября 2018 пользователем alex5773 Ссылка на комментарий
alex5773 1 330 Опубликовано 27 Октября 2018 Поделиться Опубликовано 27 Октября 2018 (изменено) -- Изменено 28 Октября 2018 пользователем alex5773 Ссылка на комментарий
Overfirst 631 Опубликовано 28 Октября 2018 Поделиться Опубликовано 28 Октября 2018 В 27.10.2018 в 17:07, alex5773 сказал: иконки при ремонте тоже так убрать можно? Конечно. Можно указать координаты пустой области. Ранее был известен под ником BoBaH_671. Ссылка на комментарий
Mr.Srears 0 Опубликовано 10 Ноября 2018 Поделиться Опубликовано 10 Ноября 2018 Ребят, помогите. Выдергнул "Beretta 92" из оружейного мода. Настроил, прописал все, подравнял как полагается. Слепил ей свою схему апгрейдов, всю поднастроил, но одно но: в оригинале "Beretta" может стрелять режимом по 3 патрона, у меня на стволе данный апгрейд ставится, но режим ни в какую не хочет переключаться. Параметр (fire_modes) отказывается работать, ссылаясь на класс ствола. Поменял класс с WP_PM на LR300, режим заработал, однако, когда магаз у пистолета пустой, затворная рама не отходит назад. Та же самая ситуация и с Walther-ом. Перебрал все стандартные классы, без толку, то затвор отказывается работать, то режим стрельбы. Подскажите, как заставить ствол видеть режим и затвору как следует ходить? Ссылка на комментарий
lordmuzer 743 Опубликовано 10 Ноября 2018 Поделиться Опубликовано 10 Ноября 2018 Движком никак, насколько я знаю Класс пистолета не умеет автоматически стрелять, а класс винтовки не умеет играть анимации anim_empty и подобные, потому рама и не отходит назад. Выхода 2: либо править движок (искать уже правленый) либо играть анимации скриптами через play_hud_animation Ссылка на комментарий
Mr.Srears 0 Опубликовано 10 Ноября 2018 Поделиться Опубликовано 10 Ноября 2018 1 час назад, lordmuzer сказал: Движком никак, насколько я знаю Класс пистолета не умеет автоматически стрелять, а класс винтовки не умеет играть анимации anim_empty и подобные, потому рама и не отходит назад. Выхода 2: либо править движок (искать уже правленый) либо играть анимации скриптами через play_hud_animation У тебя нет ссылки на исправленный движок? Порылся по форуму, ничего не нашел. Может, искал не так. Нашел один пост, но выложен он в 2012, и ссылки уже не работают. А что, касается, скрипта, так вообще тишина, никто даже наброском примерным не делился. Ссылка на комментарий
lordmuzer 743 Опубликовано 10 Ноября 2018 Поделиться Опубликовано 10 Ноября 2018 Под ЗП не подскажу ни движок ни скрипты к сожалению Под ТЧ есть XRay Extensions или OGSR 1 Ссылка на комментарий
Mr.Srears 0 Опубликовано 13 Ноября 2018 Поделиться Опубликовано 13 Ноября 2018 Ребят, это снова я. У меня тут первооткрывательский вопрос. Упоминаний даже не нашел. Полазил я поглубже по файлам и наткнулся на маленький такой парамер "Боеприпасы". Который отображается, когда наводишь на ствол под ёмк. маг. Я поперерывал, там половину файлов даже в скриптах проверял, не нашел упоминания. Откуда он вообще берет название? Куда его вмонтировали? Просто хотелось бы его изменить. Написать: "Калибр 9х18,9х19". Ссылка на комментарий
Купер 2 907 Опубликовано 13 Ноября 2018 Поделиться Опубликовано 13 Ноября 2018 @Mr.Srears, поиск рулит! actor_menu.xml -> <cap_ammo_types>"ui_ammo_types"</cap_ammo_types> Ссылка на комментарий
Mr.Srears 0 Опубликовано 13 Ноября 2018 Поделиться Опубликовано 13 Ноября 2018 22 минуты назад, Купер сказал: @Mr.Srears, поиск рулит! actor_menu.xml -> <cap_ammo_types>"ui_ammo_types"</cap_ammo_types> Это отсылка к размещению самой надписи "Боеприпасы". А после нее идет же "9х18", вот где эти строки, в которых задается этот текст? И не в самом "actor_menu" эта остылка находится, а в "actor_menu_item". Ссылка на комментарий
Купер 2 907 Опубликовано 13 Ноября 2018 Поделиться Опубликовано 13 Ноября 2018 В локализации из xrussian.db: gamedata\configs\text\rus\ui_st_inventory.xml 1 Ссылка на комментарий
alex5773 1 330 Опубликовано 16 Ноября 2018 Поделиться Опубликовано 16 Ноября 2018 А можно как-нибудь это переписать под ЗП? --fx_snd = xr_sound.get_safe_sound_object(fx_snd) --fx_snd:play_no_feedback(act_item, sound_object.s3d, 0, act_item:position(), 1) Это строчки с ogse_wpn_explode_fx.script из за этих строк в ЗП вылет при выстреле со сломанного оружия, а без этих строк звука взрыва оружия нет. Вот интересно, в СоС 1.4.22 работает нормально этот скрипт, а в ЗП не хочет. Просто с ТЧ на СоС его ставлю, и всё норм работает. Вот сам скрипт Скрытый текст function on_npc_hit(victim,amount,local_direction,who,bone_index) local active_slot = db.actor:active_slot() local active_item = db.actor:active_item() local pistol_in_slot = db.actor:item_in_slot(1) local rifle_in_slot = db.actor:item_in_slot(2) if victim ~= nil and active_item and who:clsid() == clsid.script_actor then local active_sect = active_item:section() param_point = math.random(1,3)/10 if param_info ~= nil and param_point ~= nil and has_alife_info(active_sect.."_info") then local point_s = hit() point_s.draftsman = victim point_s.type = hit.fire_wound point_s.power = param_point point_s.impulse = 0.1 victim:hit(point_s) end end end --/ wpn_explode_fx.script /-- --/ Weapon explode module /-- --/ OGS Evolution Team 2010 /-- --/ version 1.1 /-- --/ Модуль подрыва патрона в стволе при значительном износе оружия /-- -- Параметры local fx_is_enable = true -- "true"-обработка подрыва патрона включена, "false"-выключена local critical_condition = 0.2 -- кондиция оружия, ниже которой может случиться разрыв патрона в стволе -- Малый калибр (пистолеты, пистолеты-пулемёты) local fx_snd_1 = "weapons\\explosions\\grenade_f1_explosion" -- звук, воспроизводимый как разрыв патрона в стволе local fx_particle_1 = "anomaly2\\heat_01" -- партикл, воспроизводимый как разрыв патрона в стволе local explode_impulse_1 = 0.1 -- импульс хита, наносимого при разрыве local explode_power_1 = 0.4 -- сила хита, наносимого при разрыве -- Средний калибр (автоматы, пулемёты, винтовки) local fx_snd_2 = "weapons\\explosions\\grenade_f1_explosion" local fx_particle_2 = "anomaly2\\heat_01" local explode_impulse_2 = 0.2 local explode_power_2 = 0.6 -- Большой калибр (дробовики, крупнокалиберные винтовки) local fx_snd_3 = "weapons\\explosions\\grenade_f1_explosion" local fx_particle_3 = "anomaly2\\heat_01" local explode_impulse_3 = 0.3 local explode_power_3 = 0.8 -- Спецбоеприпас (огнемёт) local fx_snd_4 = "weapons\\explosions\\grenade_f1_explosion" local fx_particle_4 = "anomaly2\\heat_01" local explode_impulse_4 = 0.7 local explode_power_4 = 1.1 -- Аномальный боеприпас (гауссовка) local fx_snd_5 = "weapons\\explosions\\grenade_f1_explosion" local fx_particle_5 = "anomaly2\\heat_01" local explode_impulse_5 = 0.5 local explode_power_5 = 1.2 -- Параметры local stored_ammo_num = nil local stored_it_id = nil function update() if fx_is_enable and db.actor:alive() then local act_it = db.actor:active_item() if act_it == nil then stored_it_id = nil return end local act_it_sect = act_it:section() if act_it and string.find(act_it_sect, "wpn_") and act_it_sect ~= "wpn_binoc" then local it_id = act_it:id() local ammo_num = act_it:get_ammo_in_magazine() if stored_it_id ~= nil and stored_ammo_num ~= nil then if stored_it_id == it_id and ammo_num < stored_ammo_num then proceed(act_it) end end stored_ammo_num = ammo_num stored_it_id = it_id end end end function proceed(act_item) -- amk.logf("Выстрел!") if act_item:condition() < critical_condition then -- amk.logf("Авария!") if math.random()*0.5 > act_item:condition() then -- amk.logf("БУМ!") local fx_snd -- объявляем переменные. можно не присваивать значения, так как они присвоятся обязательно local fx_particle local explode_impulse local explode_power -- определяем тип визуализации local act_item_sect = act_item:section() local type_of_visual = identy_type_of_visual(act_item_sect) if type_of_visual == 1 then fx_snd = fx_snd_1 fx_particle = fx_particle_1 explode_impulse = explode_impulse_1 explode_power = explode_power_1 -- amk.logf("Тип визуализации 1") elseif type_of_visual == 2 then fx_snd = fx_snd_2 fx_particle = fx_particle_2 explode_impulse = explode_impulse_2 explode_power = explode_power_2 -- amk.logf("Тип визуализации 2") elseif type_of_visual == 3 then fx_snd = fx_snd_3 fx_particle = fx_particle_3 explode_impulse = explode_impulse_3 explode_power = explode_power_3 -- amk.logf("Тип визуализации 3") elseif type_of_visual == 4 then fx_snd = fx_snd_4 fx_particle = fx_particle_4 explode_impulse = explode_impulse_4 explode_power = explode_power_4 -- amk.logf("Тип визуализации 4") elseif type_of_visual == 5 then fx_snd = fx_snd_5 fx_particle = fx_particle_5 explode_impulse = explode_impulse_5 explode_power = explode_power_5 -- amk.logf("Тип визуализации 5") end -- визуализация fx_snd = xr_sound.get_safe_sound_object(fx_snd) fx_snd:play_no_feedback(act_item, sound_object.s3d, 0, act_item:position(), 1) fx_particle = particles_object(fx_particle) fx_particle:play_at_pos(act_item:position()) -- нанесение хита local explode_vec = vector():set(db.actor:position()):sub(act_item:position()) local explode = hit() explode.direction = explode_vec explode.draftsman = db.actor explode.impulse = explode_impulse explode.power = explode_power explode.type = hit.explosion db.actor:hit(explode) -- удаление предмета alife():release(alife():object(act_item:id()), true) if fx_particle and fx_particle:playing() then fx_particle:stop() end end end end function identy_type_of_visual(act_item_section) local type_of_visualise = 2 -- определяем тип визуализации по умолчанию на тот случай, когда тип боеприпаса не определится if system_ini():line_exist(act_item_section, "ammo_class") then local ammo_list = system_ini():r_string(act_item_section, "ammo_class") if string.find(ammo_list, "ammo_9x18") or string.find(ammo_list, "ammo_9x19") then type_of_visualise = 1 elseif string.find(ammo_list, "ammo_5.45x39") or string.find(ammo_list, "ammo_5.56x45") or string.find(ammo_list, "ammo_7.62x25") or string.find(ammo_list, "ammo_7.62x39") or string.find(ammo_list, "ammo_7.62x54") or string.find(ammo_list, "ammo_9x39") then type_of_visualise = 2 elseif string.find(ammo_list, "ammo_11.43x23") or string.find(ammo_list, "ammo_5.7x28") or string.find(ammo_list, "ammo_10.9x32.5") or string.find(ammo_list, "ammo_12x70") or string.find(ammo_list, "ammo_12x76") then type_of_visualise = 3 elseif string.find(ammo_list, "ammo_og-7b") then type_of_visualise = 4 elseif string.find(ammo_list, "ammo_gauss") then type_of_visualise = 5 end end return type_of_visualise end Ссылка на комментарий
alex5773 1 330 Опубликовано 16 Ноября 2018 Поделиться Опубликовано 16 Ноября 2018 Пришлось ещё задействовать xr_sound.script. Вставил в конец скрипта вот это всё Скрытый текст --------------------------------------------------------------------------------------------------------------------- -- Схема озвучки -- автор: Диденко Руслан (Stohe) -- update: Чугай Александр (Chugai) ---------------------------------------------------------------------------------------------------------------------- key_by_id = {} group_idle = {} --function printf() --end function get_sound(path, tt, npc) if path == nil then return nil end if path.exec == nil then -- чтение настроек темы tt.into_id = path.into_id tt.into_max = path.max_ids[npc:id()].into_max tt.into_last = nil tt.rnd_id = path.rnd_id tt.rnd_max = path.max_ids[npc:id()].rnd_max tt.rnd_last = nil tt.min_snd = path.min_snd tt.max_snd = path.max_snd tt.rnd_snd = path.rnd_snd else get_sound(path.types[path.exec(path.types, npc)], tt, npc) end end -- Формирование ключа персонажа function get_key(npc) local key -- формирование ключа local overrides = xr_logic.generic_scheme_overrides(npc) if overrides and overrides.soundgroup then key = overrides.soundgroup else key = utils.to_str(npc:id()) end -- апдейт таблиц :) не менять! if xr_sound.key_by_id[npc:id()] ~= key then if xr_sound.group_idle[xr_sound.key_by_id[npc:id()]] ~= nil then xr_sound.group_idle[xr_sound.key_by_id[npc:id()]].num_in_group = xr_sound.group_idle[xr_sound.key_by_id[npc:id()]].num_in_group - 1 end xr_sound.key_by_id[npc:id()] = key if xr_sound.group_idle[key] == nil then xr_sound.group_idle[key] = {num_in_group = 1} else xr_sound.group_idle[key].num_in_group = xr_sound.group_idle[key].num_in_group + 1 end end return key end ----------------------------------------------------------------------------------------------------------------------------------- -- Установка и распарсивание тем в файлы. ----------------------------------------------------------------------------------------------------------------------------------- function set_sound(npc, sound, now, into_timeout) -- printf("*SND* [%s] try to change SND to [%s]", npc:name(), tostring(sound)) local npc_id = npc:id() if (db.sound[npc_id] == nil or db.sound[npc_id].theme ~= sound) or now == true then -- if db.sound[npc_id] == nil then -- printf("*SND* change SND [_] to [%s] for [%s]", tostring(sound), npc:name()) -- else -- printf("*SND* change SND [%s] to [%s] for [%s]", tostring(db.sound[npc_id].theme), tostring(sound), npc:name()) -- end -- Туточки надобно распарсить имена тем в их id if sound == nil then sound = "" end if db.sound[npc_id] == nil then db.sound[npc_id] = {} end db.sound[npc_id].theme = sound db.sound[npc_id].snd = parse_names(sound) if db.sound[npc_id].last_snd == nil then db.sound[npc_id].last_snd = {} else local snd_table = {} local t = 0 for k,v in pairs(db.sound[npc_id].snd) do snd_table[t] = {} get_sound(sound_theme.theme[v], snd_table[t], npc) t = t + 1 end for k,v in pairs(snd_table) do if v.into_id then db.sound[npc_id].last_snd[v.into_id] = nil end if v.rnd_id then db.sound[npc_id].last_snd[v.rnd_id] = nil end end end -- Устанавливаем входную паузу local key = get_key(npc) xr_sound.group_idle[key].begin = time_global() if into_timeout then xr_sound.group_idle[key].idle = into_timeout else xr_sound.group_idle[key].idle = 0 end if now == true then stop_play_sound(npc) end end end function play_sound(npc, themes, timeout) --alun_utils.debug_write(strformat("xr_sound:play_sound %s",npc and npc:name())) -- нужно составить список тем local snd_table = {} local t = 0 for k,v in pairs(themes) do snd_table[t] = {} if sound_theme.theme[v] ~= nil then snd_table[t].theme = v get_sound(sound_theme.theme[v], snd_table[t], npc) else printf("ERROR: ILLEGAL PLAY SOUND!!! %s for %s", v, npc:name()) end t = t + 1 end --printf("*") --print_table(snd_table) if t == 0 then return end -- из списка тем выбираем одну. local snd = snd_table[math.random(0, t-1)] if snd ~= nil then --printf("!") --print_table(snd) if snd.min_snd == nil then return end local npc_id = npc:id() local group_table = xr_sound.group_idle[get_key(npc)] group_table.idle = math.random(snd.min_snd, snd.max_snd)*1000 if group_table.last_snd == nil then group_table.last_snd = {} end -- необходимо ли нам играть into или rnd звуки if snd.into_max ~= nil and snd.into_max > 0 then if db.sound[npc_id].last_snd[snd.into_id] == snd.into_max - 1 then if snd.into_cycled == true then db.sound[npc_id].last_snd[snd.into_id] = nil else return end end -- играем входные if db.sound[npc_id].last_snd[snd.into_id] == nil then db.sound[npc_id].last_snd[snd.into_id] = -1 end --printf("*SND* play seq [%s] for [%s]", db.sound[npc_id].last_snd[snd.into_id]+1, npc:name()) process_tutor_on_sound(snd.theme) npc:play_sound(snd.into_id, 1, 0, 1, 0, db.sound[npc_id].last_snd[snd.into_id]+1) db.sound[npc_id].last_snd[snd.into_id] = db.sound[npc_id].last_snd[snd.into_id] + 1 --printf("*SND* play seq [%s] for [%s]", db.sound[npc_id].last_snd[snd.into_id], npc:name()) return end if snd.rnd_max ~= nil and snd.rnd_max > 0 then -- играем рандомные local s = 0 if snd.rnd_max == 1 then s = 0 else -- Если прошлый раз проигрывался такой же набор тем -- то учитывать последний звук для группы. -- if db.sound[npc_id].last_snd[snd.rnd_id] ~= nil then if group_table.last_snd[snd.rnd_id] ~= nil then s = math.random(0, snd.rnd_max-2) if s >= group_table.last_snd[snd.rnd_id] then s = s + 1 end else s = math.random(0, snd.rnd_max-1) end end if timeout == nil then timeout = 0 end --printf("*SND* play rnd [%s] for [%s]", s, npc:name()) process_tutor_on_sound(snd.theme) npc:play_sound(snd.rnd_id, timeout+1, timeout, 1, 0, s) --db.sound[npc_id].last_snd[snd.rnd_id] = s group_table.last_snd[snd.rnd_id] = s end end end function get_last_IDS(npc, theme) local last_table = db.sound[npc:id()].last_snd local snd_table = {} if sound_theme.theme[theme] ~= nil then get_sound(sound_theme.theme[theme], snd_table, npc) end --printf("LAST INTO ID for [%s] = [%s], max [%s]", theme, last_table[snd_table.into_id], snd_table.into_max) return last_table[snd_table.into_id], snd_table.into_max end function process_tutor_on_sound(theme) end --' Actor sound player local actor_sound = {} function set_actor_sound(sound) --printf("*ACTOR SND* try to change SND to [%s]", tostring(sound)) if actor_sound.theme ~= sound then --' Туточки надобно распарсить имена тем в их id if sound == nil then sound = "" end actor_sound.theme = sound actor_sound.begin = nil this.set_actor_sound_factor(1) end end function set_actor_sound_factor(factor) local theme = sound_theme.actor_theme[actor_sound.theme] if theme ~= nil then actor_sound.min_snd = theme.min_snd * factor actor_sound.max_snd = theme.max_snd * factor end end function update_actor() local theme = sound_theme.actor_theme[actor_sound.theme] if theme == nil then return end if table.getn(theme.sounds) == 0 then return end if actor_sound.begin == nil or time_global() - actor_sound.begin >= actor_sound.idle then actor_sound.begin = time_global() --' Тут надо отыграть звук local sound = theme.sounds[math.random(table.getn(theme.sounds))] if sound ~= nil then sound:play(db.actor, 0, sound_object.s2d) end actor_sound.idle = math.random(actor_sound.min_snd, actor_sound.max_snd) end end -- modified by Alundaio (original: ????) --' Таблица для хранения созданных саунд обжектов. --' type = [random|seq|looped] local ltx = ini_file("plugins\\xr_sound.ltx") function get_sound_object(theme, t_type) if not (ph_snd_themes) then ph_snd_themes = {} ph_snd_themes[theme] = alun_utils.collect_section(ltx,theme) --printf("collect theme=%s",theme) end if (not ph_snd_themes or not ph_snd_themes[theme]) then --printf("no ph_snd_themes theme=%s",theme) return end if not (sound_object_by_theme) then sound_object_by_theme = {} end if (not sound_object_by_theme[theme])then sound_object_by_theme[theme] = {} end if t_type == nil then t_type = "random" end --' Выбор следующего айдишника local play_id = -1 local table_size = #ph_snd_themes[theme] if (table_size == 0) then return end --printf("tablesize = %s theme=%s",table_size,theme) if sound_object_by_theme[theme].last_id == nil then if t_type == "random" then if table_size >= 2 then play_id = math.random(1, table_size) else play_id = 1 end else play_id = 1 end else if t_type == "random" then if table_size >= 2 then play_id = math.random(1, table_size - 1) if play_id >= sound_object_by_theme[theme].last_id then play_id = play_id + 1 end else play_id = 1 end else if sound_object_by_theme[theme].last_id < table_size then play_id = sound_object_by_theme[theme].last_id + 1 else if type == "looped" then play_id = 1 end end end end --printf("SOUND_OBJECT: selected id [%s] for theme [%s], type [%s], size [%s]", tostring(play_id), tostring(theme), tostring(type), table_size) if play_id == -1 then return end --' Проверяем создан ли у нас соответствующий саунд обжект или его надо создать if sound_object_by_theme[theme][play_id] == nil then if type(ph_snd_themes[theme][play_id]) == "table" then sound_object_by_theme[theme][play_id.."_r"] = get_safe_sound_object(ph_snd_themes[theme][play_id][1].."_r") sound_object_by_theme[theme][play_id.."_l"] = get_safe_sound_object(ph_snd_themes[theme][play_id][1].."_l") else sound_object_by_theme[theme][play_id] = get_safe_sound_object(ph_snd_themes[theme][play_id]) end end sound_object_by_theme[theme].last_id = play_id --' Возвращаем саунд обжект if type(ph_snd_themes[theme][play_id]) == "table" then return sound_object_by_theme[theme][play_id.."_r"], sound_object_by_theme[theme][play_id.."_l"] else return sound_object_by_theme[theme][play_id] end end local sound_object_by_path = {} --' Обертка вокруг функции, возвращающий звуковой объект. function get_safe_sound_object(path) if sound_object_by_path[path] == nil then sound_object_by_path[path] = sound_object(path) end return sound_object_by_path[path] end function stop_all_sound_object() for k,v in pairs(sound_object_by_path) do if v:playing() then v:stop() end end end function clear_all_sound_object() sound_object_by_theme = {} end и теперь всё работает, звук взрыва есть. Что это, и для чего, и как повлияет на игру, не знаю. Но пока всё работает))) Ссылка на комментарий
alex5773 1 330 Опубликовано 25 Ноября 2018 Поделиться Опубликовано 25 Ноября 2018 Подскажите насчёт отображения глушителей на оружии в инвентаре. Настроил все абсолютно точно, а отображаются у пистолетов выше ствола, а у автоматов ниже ствола. Как это исправить? Или никак не исправить, а настраивать у каждого ствола на глаз? Ссылка на комментарий
Charsi 440 Опубликовано 25 Ноября 2018 Поделиться Опубликовано 25 Ноября 2018 @alex5773, не надо на глаз. Для расчета положения иконок есть Addon Calculator в STALKER Icon Editor. Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий
alex5773 1 330 Опубликовано 25 Ноября 2018 Поделиться Опубликовано 25 Ноября 2018 Так я им и настраиваю точно всё в тютельку. В инвентаре то всё точно, а вот в слотах у пистолета выше ствола отображается, а у автомата ниже ствола. Слоты бракованные в ЗП что-ли. Вот как починить бы эти слоты. Ссылка на комментарий
alex5773 1 330 Опубликовано 26 Ноября 2018 Поделиться Опубликовано 26 Ноября 2018 Как правильно полностью вырезать один или несколько апгрейдов оружия? Кому нетрудно, напишите небольшую инструкцию, в каких именно файлах это надо делать. Ну не могу найти в инете ничего именно на эту тему. Скачивал мод где некоторые апгрейды вырезаны, смотрел, и ни фига не понял, потому как там даже фалов тех нет, в которых их предположительно и надо вырезать. Сам пробовал вырезать, но нормально не получается, апгрейд убирается который и не убирал, а который убрал, встаёт на место который убрался сам. Короче сдвигаются, просто меняясь местами. А самые нижние апрейды убираются нормально, вроде бы, а может и тоже сдвигаются ниже. Ссылка на комментарий
nasar75 3 868 Опубликовано 26 Ноября 2018 Поделиться Опубликовано 26 Ноября 2018 @alex5773, Обрати внимание на расположение стволов по вертикали - расстояние от средней линии до дула. Это расстояние для всех стволов должно быть одинаковым. Это раз. У пысов глушитель расположен ниже центра ячейки. Это два. Трошки ковырнул StCOP 2 AMD Athlon II X2 250, NVIDIA GTS 450, RAM 8.0 GB, WIN 7/64 правки Золотой Шар Ссылка на комментарий
Serge_888 114 Опубликовано 26 Ноября 2018 Поделиться Опубликовано 26 Ноября 2018 18 часов назад, alex5773 сказал: Слоты бракованные в ЗП что-ли. Вот как починить бы эти слоты. Угу. Желательно всё выводить на середину. А ещё на НЕширокоформатных мониторах (1024х768 и 1280х1024) такого сдвига между инвентарём и слотом нет. 1 Ссылка на комментарий
alex5773 1 330 Опубликовано 26 Ноября 2018 Поделиться Опубликовано 26 Ноября 2018 @nasar75, ну да ладно, фиг с ним, в инвентаре то нормально всё. Не будешь же все иконки из-за этих слотов переделывать. А как слоты переделать под широкоформатный, фиг его знает. Кстати, а с оптикой и подствольниками то всё вроде нормально, вот что интересно, почему именно с глушителями так. @Serge_888, ага, на квадратном у меня такого не было. А сейчас то широкоформатный. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти