Jump to content
  • Chmurka
  • Boróweczka
  • Jabłuszko
  • Limonka
  • Czekoladka
  • Węgielek
Sign in to follow this  
Master

[CS:GO] Simple Downloader

Recommended Posts

Posted (edited)

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!

Edited by Master
  • Lubię to! 5

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
Posted (edited)
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ć.

Edited by Brum Brum
  • Lubię to! 1

Share this post


Link to post
Share on other sites
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.

 

  • Lubię to! 1

Share this post


Link to post
Share on other sites

Aktualizacja

  • Dodano wsparcie do plików z rozszerzeniem "pcf"
  • Małe zmiany w kodzie 
  • Lubię to! 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

Nasza historia

Na początku byliśmy małą grupą internetowych znajomych, którzy stwierdzili, że potrzebne jest solidne forum, na którym znajdą się ludzie z dużą wiedzą programistyczną ukierunkowaną na CS:GO. Pomysł powstał na początku 2018 roku, a parę miesięcy później, 19 kwietnia, powstała ta strona internetowa. Jako alternatywna odpowiedź na inne tego typu miejsca, poważnie podeszliśmy do tematu, najpierw tłumacząc angielską dokumentację SourceMod'a na język polski, a potem pisząc rozległe poradniki i wypełniając forum najpotrzebniejszymi rzeczami dla właścicieli serwerów i programistów. Cała nasza Ekipa jest dumna z pracy jaką w to włożyliśmy i cieszymy się że zbierają się wokół nas zarówno ludzie znający tematy sourcepawn'a i konfiguracji, jak i również nowe twarze w tym "biznesie", którym z chęcią niesiemy wiedzę oraz pomoc w rozwiązywaniu problemów.

Największe modyfikacje serwerowe

×
×
  • Create New...