Подмена стандартных "обзоров" в cstrike/overviews/*.bmp

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
6
Реакции
4
Доброго времени суток уважаемые разработчики.

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

В смысле есть стандартная карта de_dust, у неё есть файл обзора: cstrike/overviews/de_dust.bmp
Я хочу изменить файл обзора и положить его, скажем в cstrike/overviews/modified/de_dust.bmp и указать клиенту, чтобы он скачал и использовал модифицированный файл вместо оригинального.
 
Сообщения
2,288
Реакции
1,738
Помог
31 раз(а)
biostealth,
  • В папке maps создать файл название карты.res
  • Открыть текстовым редактором (например блокнот) и прописать
    • overviews/название карты.bmp
    • overviews/название карты.txt
 
Сообщения
494
Реакции
109
Помог
16 раз(а)
@Pokemoshka,ему надо стандартные заменить.что бы de_dust2 использовался кастомный overview,что по идее не получится,ведь txt уже скачены и работают по названию карты

1643942903033.png
 
Сообщения
6
Реакции
4
de_dust20017.jpgde_dust20022.jpg

Потратил не мало времени, чтобы найти хоть какие-то методы влияния на overviews, но к сожалению, в Интернете только информация об их создании :(.
 
Сообщения
621
Реакции
131
Предупреждения
5
Помог
10 раз(а)
Вы прикалываетесь что ли??)))
4 Фев 2022
Выше написали, что надо делать!
4 Фев 2022
Берешь нужный оверьвю, например, mymap.bmp, кидаешь в cstrike\overviews, потом, если хочешь эту овервью в даст 2 добавить, идешь в cstrike\overviews\de_dust2.txt и в строке IMAGE меняешь "overviews/de_dust2.bmp" на "overviews/mymap.bmp"
Потом в папке cstrike/maps в рес файл de_dust2 добавляешь строку overviews/mymap.bmp
 
Сообщения
6
Реакции
4
wood-grouse, это сработает, понятно. Но только не так, как хотелось бы. Представь, новый человек подключается к моему серверу, и тут 2 варианта:
  1. У него нет текущей карты и он начинает скачивать, берет информацию из *.res файла, заливает себе кастомный overview, заходит на другой сервер и у него теперь всегда будет этот кастомный overview, пока он его руками не удалит и не скачает стандартный.
  2. Карта стандартная — de_dust2, например, у него она уже есть, он даже скачивать не будет кастомные файлы взамен оригинальных, и правильно сделает.
Я пытаюсь найти способ подмены стандартных "обзоров" на кастомные, не портя при этом стандартные файлы клиенту.
 
Сообщения
658
Реакции
230
Помог
11 раз(а)
Просто карту переименуй, добавь префикс в конце какой-нибудь. Добавь свой рес файл, профит
для клиента 5 секунд загрузка не вилика потеря
 
Сообщения
6
Реакции
4
Limbooc, хитро, сработает :).

Не хотелось бы плодить бесполезные копии файлов карты у клиента. Хотя если других вариантов не будет, то, придётся рассмотреть этот способ.

Хитростью взяли, но возможно есть другой изящный способ :).
 
Сообщения
658
Реакции
230
Помог
11 раз(а)
Limbooc,
Не хотелось бы плодить бесполезные копии файлов карты у клиента. Хотя если других вариантов не будет, то, придётся рассмотреть этот способ.
чтоб ты знал, у меня 2000 карты скачаны не по своей воле)))
 
Сообщения
6
Реакции
4
Кое-что нашёл, выяснил что файлы являются "resource generic" через команду reslist generic.
Потом пошел и посмотрел в /rehlds-master/rehlds/engine/sv_main.cpp, а там:

C++:
void PrecacheMapSpecifiedResources()
{
    if (sv_skyname.string[0] == '\0' || !PrecacheSky())
    {
        Cvar_Set(sv_skyname.name, "desert");
        PrecacheSky();
    }

    // TODO: or this is not-engine and this better do by gamedll or .res?
    if (FS_FileExists(va("overviews/%s.txt", g_psv.name)))
    {
        PF_precache_generic_I(va("overviews/%s.txt", g_psv.name));
        // TODO: what about .tga?
        PF_precache_generic_I(va("overviews/%s.bmp", g_psv.name));
    }

    // TODO: or this is not-engine and this better do by gamedll or .res?
    if (FS_FileExists(va("maps/%s.txt", g_psv.name)))
        PF_precache_generic_I(va("maps/%s.txt", g_psv.name));
Но, что мне это дало, кроме того, что есть плагины подмены текстур неба, которые тоже "resource generic", при этом ключ их успеха это cvar sv_skyname, например:
C++:
#include <amxmodx>

#pragma semicolon 1

new const SKYNAME[] = "desert"; // skybox name

new g_SkyName;

public plugin_precache() {
    register_plugin("Sky change helper", "0.1", "AMXX.Shop");
    new const SKYNAME_POSTFIXES[][] = {"bk", "dn", "ft", "lf", "rt", "up"};
    new Buffer[96];
    for(new i; i < sizeof SKYNAME_POSTFIXES; i++) {
        formatex(Buffer, charsmax(Buffer), "gfx/env/%s%s.tga", SKYNAME, SKYNAME_POSTFIXES[i]);
        if(!file_exists(Buffer)) {
            format(Buffer, charsmax(Buffer), "File ^"%s^" not found", Buffer);
            set_fail_state(Buffer);
        }
        precache_generic(Buffer);
    }
    g_SkyName = get_cvar_pointer("sv_skyname");
}

public plugin_cfg() {
    set_pcvar_string(g_SkyName, SKYNAME);
}

А за что зацепить то что мне нужно, я пока не понял, пойду спать, завтра подумаю.
 
Сообщения
162
Реакции
445
Помог
2 раз(а)
biostealth В клиенте хардкод, искать обзоры в папке overviews с названием карты. Что-то вроде такого:
C++:
sprintf(filename, "overviews/%s.txt", levelname);
Из этого следует, что со стороны сервера название овервью (или путь) поменять не получится.
Перезаписать старый файл тоже нельзя, потому что опять же, в клиенте хардкод, который проверяет существует ли файл. И если да, то не загружать его с сервера.
Остается только один вариант: менять название карты.
 
Сообщения
6
Реакции
4
the_hunter, спасибо!

Спасибо всем кто откликнулся.

Если что-то получится — поделюсь с сообществом. Думаю можно закрывать тему.
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу