Skocz do zawartości
Master

[CS:GO] Simple Downloader

Rekomendowane odpowiedzi

  • Lubię to! 5

Opis

 

Plugin ściąga pliki z configu, który znajduję się w "configs/Master/Master_Downloader.txt". Automatycznie precachuje pliki z rozszerzeniami "mdl" i "mp3". Dozwolone rozszerzenia: "mdl", "vvd", "vtx", "phy", "vmt", "vtf", "mp3".

 

Plugin

 

Spoiler
#include <sdktools>

#pragma semicolon 1
#pragma newdecls required

char g_sAllowExts[][] = 
{
    "mdl",
    "vvd",
    "vtx",
    "phy",
    "vmt",
    "vtf",
    "pcf",
    "mp3"
};

enum
{
    MDL = 0,
    VVD,
    VTX,
    PHY,
    VMT,
    VTF,
    PCF,
    MP3
}

public void OnMapStart()
{
    LoadFile();
}

void LoadFile()
{
    char sBuffer[PLATFORM_MAX_PATH];
    BuildPath(Path_SM, sBuffer, sizeof(sBuffer), "configs/Master/Master_Downloader.txt");

    if(!FileExists(sBuffer)) SetFailState("Couldn't open file %s", sBuffer);
    
    File hFile = OpenFile(sBuffer, "r");

    if(hFile == null)
    {
        delete hFile;
        return;
    }

    while(!IsEndOfFile(hFile))
    {
        hFile.ReadLine(sBuffer, sizeof(sBuffer));
        TrimString(sBuffer);

        if(!sBuffer[0]) continue;

        if(StrContains(sBuffer, "//") != -1) continue;

        DownloadAndPrecache(sBuffer);
    }

    delete hFile;
}

void DownloadAndPrecache(char[] sFile)
{
    if(!FileExists(sFile))
    {
        LogError("File: %s doesnt exist", sFile);
        return;
    }

    char sExts[8];
    if(!GetFileExtension(sFile, sExts, sizeof(sExts))) return;

    int iIndex = -1;

    for(int i = 0; i < sizeof(g_sAllowExts); i++)
    {
        if(StrEqual(sExts, g_sAllowExts[i]))
        {
            iIndex = i;
            break;
        }
    }

    if(iIndex == -1) return;

    AddFileToDownloadsTable(sFile);

    if(iIndex == MDL) PrecacheModel(sFile, true);
    else if(iIndex == PCF) PrecacheGeneric(sFile, true);
    else if(iIndex == MP3)
    {
        ReplaceStringEx(sFile, PLATFORM_MAX_PATH, "sound/", "*");
        PrecacheSound(sFile, true);
    }
}

bool GetFileExtension(const char[] sPath, char[] sBuffer, int iSize)
{
    int iIndex = FindCharInString(sPath, '.', true);

    if(iIndex == -1) return false;

    strcopy(sBuffer, iSize, sPath[++iIndex]);
    return true;
}

 

 

Przykładowy config

 

Spoiler
// BF 2142
materials/models/parachute/detail/cloth2002.vtf
materials/models/parachute/parachute2142_a.vtf
materials/models/parachute/parachute2142_b.vtf
materials/models/parachute/parachute2142_d.vtf
materials/models/parachute/parachute2142.vmt
models/parachute/parachute_bf2142.mdl
models/parachute/parachute_bf2142.phy
models/parachute/parachute_bf2142.vvd
models/parachute/parachute_bf2142.dx90.vtx
// Spongebob
materials/models/parachute/patrick_flag.vtf
materials/models/parachute/patrick_flag.vmt
models/parachute/parachute_spongebob.dx90.vtx
models/parachute/parachute_spongebob.mdl
models/parachute/parachute_spongebob.vvd
// Shop Muzyka
sound/shop/sounds/ale_urwal.mp3
sound/shop/sounds/andrzeju_nie_denerwuj_sie.mp3
sound/shop/sounds/bede_gral_w_gre.mp3
sound/shop/sounds/hello_darkness.mp3
sound/shop/sounds/jak_ksieciunio.mp3
sound/shop/sounds/lecimy_tutaj.mp3
sound/shop/sounds/leno_paleno.mp3
sound/shop/sounds/marihunaen.mp3
sound/shop/sounds/nanana_nuh.mp3
sound/shop/sounds/pawel_jumper.mp3
sound/shop/sounds/pawel_jumper2.mp3
sound/shop/sounds/sonda_uliczna.mp3

 

 

Master_Downloader.txt
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Master_Downloader.sp
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

Edytowane przez Master

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
20 godzin temu, Brum Brum napisał:

Brakuje jeszcze "PrecacheDecal" do plików "vtf, vmt, vtx, phy, vvd, dx90.vtx" ?

Jest to konieczne w cs go? Jeśli tak to w jakim celu? Pytam, bo u mnie wszystko poprawnie działa bez precachowania wymienionych przez Ciebie plików.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Lubię to! 1
9 minut temu, Master napisał:

Jest to konieczne w cs go? Jeśli tak to w jakim celu? Pytam, bo u mnie wszystko poprawnie działa bez precachowania wymienionych przez Ciebie plików.

Jest to konieczne, gdy jest dużo takich plików, bo robią precache od razu przy użyciu ich, występuje wtedy komunikat "Late precache of 'ścieżka do pliku'". Jeżeli jest ich dużo, może spowodować ścinkę na sekundę/dwie. Wiem to z własnego doświadczenia, gdy robiłem "br" pod jb ?

@EDIT
Przy samym starcie serwera może jedynie opóźnić jego włączenie o 1/2 sekundy, ale warto o tym wspomnieć.

Edytowane przez Brum Brum

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
3 godziny temu, Brum Brum napisał:

Jest to konieczne, gdy jest dużo takich plików, bo robią precache od razu przy użyciu ich, występuje wtedy komunikat "Late precache of 'ścieżka do pliku'". Jeżeli jest ich dużo, może spowodować ścinkę na sekundę/dwie. Wiem to z własnego doświadczenia, gdy robiłem "br" pod jb ?

@EDIT
Przy samym starcie serwera może jedynie opóźnić jego włączenie o 1/2 sekundy, ale warto o tym wspomnieć.

Moim zdaniem nie ma sensu cachowanie tego w pluginie, jeśli ma to tylko wpływ na czas uruchomienia serwera.

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Aktualizacja

  • Dodano wsparcie do plików z rozszerzeniem "pcf"
  • Małe zmiany w kodzie 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić obrazków. Dodaj lub załącz obrazki z adresu URL.


×
×
  • Dodaj nową pozycję...