Jump to content
assignment_ind Existing user? Sign In

Sign In



person_add Sign Up
Go-Code.pl - Support SourceMod i Pluginy CS:GO
Sign in to follow this  
Master

[CS:GO] Simple Downloader

Recommended Posts

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

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

  • Lubię to! 1

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
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.


O NAS Jesteśmy społecznością łączącą ludzi, którzy dzielą pasję poznawania CS:GO od strony programistycznej. Posiadamy duże zaplecze merytoryczne i zawsze cieszymy się, gdy dołączają do nas osoby gotowe do nauki. Gwarantujemy, że z odrobiną wytrwałości i otwartym umysłem bardzo szybko napiszesz swój pierwszy plugin. Zapraszamy! 🙂
Szablon wykonany z dużą ilością przez cyberpixelz / Mesharsky / Sitefuture
Forum dumnie napędzane przez: Invision Power Services, Inc.
×
×
  • Create New...