Добавлен host_pi,
опубликован
Программы
Предназначение:
Работа с текстурами
blp res checker
BLP Resolution Checker
парсер и сортировщик разрешения у blp файлов
парсер и сортировщик разрешения у blp файлов
автор статьи: host_pi
автор программы: poisoNDealer
версия программы: v2
требования: Windows
описание:
программа, которая тестирует вашу папку с ресурсами и выводит список текстур, для которых требуется только высокое качество текстур в настройках варкрафта
тем самым избавляя вас от рутинных действий по выявлению проблемных blp файлов
автор программы: poisoNDealer
версия программы: v2
требования: Windows
описание:
программа, которая тестирует вашу папку с ресурсами и выводит список текстур, для которых требуется только высокое качество текстур в настройках варкрафта
тем самым избавляя вас от рутинных действий по выявлению проблемных blp файлов
установка: не требуется
как пользоваться: перетянуть мышкой папку с blp файлами на exe файл
как пользоваться: перетянуть мышкой папку с blp файлами на exe файл
видео
ченжлог:
v1 - первый релиз - вывод в окно - VirusTotal 3/72
v2 - добавлено формирование вывода в файл output.txt в папке с текстурами - VirusTotal 2/71
v1 - первый релиз - вывод в окно - VirusTotal 3/72
v2 - добавлено формирование вывода в файл output.txt в папке с текстурами - VirusTotal 2/71
пример работы программы:
Total BLP files checked: 9
Valid BLP files: 5
Invalid BLP files: 4Invalid Files:
C:\MyMap\File1.blp is a broken file. Resolution: 574 x 479
C:\MyMap\File2.blp is a broken file. Resolution: 202 x 95
C:\MyMap\File3.blp is a broken file. Resolution: 57 x 57
C:\MyMap\File4.blp is a broken file. Resolution: 40 x 40Valid Files:
C:\MyMap\File5.blp is a valid file. Resolution: 256 x 256
C:\MyMap\File6.blp is a valid file. Resolution: 128 x 256
C:\MyMap\File7.blp is a valid file. Resolution: 1024 x 1024
C:\MyMap\File8.blp is a valid file. Resolution: 64 x 64
C:\MyMap\File9.blp is a valid file. Resolution: 256 x 128
описание проблемы с blp подробно:
в картах попадаются модели, которые работают только на высоком качестве текстур в настройках
по дефолту в варике выставлено среднее качество
и если обычный васёк с дефолтными средними текстурами зайдёт в такую карту - то:
по дефолту в варике выставлено среднее качество
и если обычный васёк с дефолтными средними текстурами зайдёт в такую карту - то:
а) у него тихо крашнется варик на стадии загрузки карты (если mdx объект ставится на карту в начале)
б) у него тихо крашнется варик в середине игры (если mdx объект ставится на карту только при активации игроком триггера)
тем самым подставив свою команду, потому что в лобби у него всё было норм и никаких ошибок не возникало
б) у него тихо крашнется варик в середине игры (если mdx объект ставится на карту только при активации игроком триггера)
тем самым подставив свою команду, потому что в лобби у него всё было норм и никаких ошибок не возникало
виноват в этом естественно не васёк, а картодел
War3 - Настройки - Изображение - Качество текстур - Среднее -> Высокое
War3 - Options - Video - Texture Quality - Medium -> High
[HKCU\Software\Blizzard Entertainment\Warcraft III\Video] - "texquality"=dword:00000001 -> 00000002
в этой ситуации есть 2 решения:
1 - выставить себе высокое качество текстур и смотреть как отлетают мимоходы
2 - исправить размер blp файлов, чтобы размер по X и Y был только равен степеням двойки --- 2 4 8 16 32 64 128 256 512 1024 2048 и т.д.
если действовать по 2 способу в своей карте, либо при исправлении чужих карт - то вы увеличите количество людей в своей карте и уменьшите количество крашей в этом мире
1 - выставить себе высокое качество текстур и смотреть как отлетают мимоходы
2 - исправить размер blp файлов, чтобы размер по X и Y был только равен степеням двойки --- 2 4 8 16 32 64 128 256 512 1024 2048 и т.д.
если действовать по 2 способу в своей карте, либо при исправлении чужих карт - то вы увеличите количество людей в своей карте и уменьшите количество крашей в этом мире
исходный код:
тык
using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;
namespace blp_res_checker
{
internal class Program
{
static void Main(string[] args)
{
if (args.Length == 0)
{
Console.WriteLine("Please drag and drop the folder onto the exe file.");
Console.ReadLine();
return;
}
var directory = args[0];
var files = Directory.GetFiles(directory, "*.blp", SearchOption.AllDirectories);
List<string> validFiles = new List<string>();
List<string> invalidFiles = new List<string>();
foreach (var file in files)
{
using (var stream = File.OpenRead(file))
{
var buffer = new byte[4];
stream.Read(buffer, 0, buffer.Length);
var magic = System.Text.Encoding.Default.GetString(buffer);
if (magic != "BLP1")
{
continue;
}
stream.Seek(8, SeekOrigin.Current);
buffer = new byte[8];
stream.Read(buffer, 0, buffer.Length);
var val1 = BitConverter.ToUInt32(buffer.Take(4).ToArray(), 0);
var val2 = BitConverter.ToUInt32(buffer.Skip(4).Take(4).ToArray(), 0);
if (!IsPowerOfTwo(val1) || !IsPowerOfTwo(val2))
{
invalidFiles.Add($"{file} is a broken file. Resolution: {val1} x {val2}");
}
else
{
validFiles.Add($"{file} is a valid file. Resolution: {val1} x {val2}");
}
}
}
string outputFilePath = Path.Combine(directory, "output.txt");
using (StreamWriter sw = new StreamWriter(outputFilePath))
{
WriteOutput(sw, $"Total BLP files checked: {files.Length}");
WriteOutput(sw, $"Valid BLP files: {validFiles.Count}");
WriteOutput(sw, $"Invalid BLP files: {invalidFiles.Count}");
WriteOutput(sw, "\nInvalid Files:");
foreach (var file in invalidFiles)
{
WriteOutput(sw, file);
}
WriteOutput(sw, "\nValid Files:");
foreach (var file in validFiles)
{
WriteOutput(sw, file);
}
}
Console.WriteLine($"\nThe results have been written to {outputFilePath}");
Console.ReadLine();
}
static bool IsPowerOfTwo(uint x)
{
return (x != 0) && ((x & (x - 1)) == 0);
}
static void WriteOutput(StreamWriter sw, string output)
{
sw.WriteLine(output);
Console.WriteLine(output);
}
}
}
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
Берги
7 месяцев назад
0
poisoNDealer, как ты пал в моих глазах....
0
konvan5
7 месяцев назад
0
Берги:
Что там? Вроде полезная штука
0
Берги
7 месяцев назад
0
konvan5:
blp...
0
MpW
7 месяцев назад
0
Вау, поисон уже научился программы писать.. а я не умею
Берги, а разве модельки варкрафта в качестве текстур blp не юзают?
0
konvan5
7 месяцев назад
0
Берги:
Ну кто сидит на 1.26а будут пользоваться :D
(или используют модельки старого формата)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.