Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

RSSFATAL ERROR (shutting down): SV_ModelIndex: model not precached


MYGO.pl
 Udostępnij

Rekomendowane odpowiedzi

  • RSSy
Hi! I'm using this player model plugin. The server keeps shutting down even thought the model is uploaded to the right folder and the name is properly set in the .cfg file.

csgo_agents.cfg file:
Quote:

#The skin for the Terrorist and Counter-Strike team must be placed in the respective section.
#Model: "Skin name", "Model name (without .mdl)", "Preview file name (with .html)", "ONLY VIP (1/0)"
#If you don't want a skin preview, write in the quotes where the file name should be "NOPREVIEW".
#The skins of each player are saved on SteamID.

[SETTINGS]

PREVIEW_MENU = 1 #Meniul pentru preview (0/1)
MODELS_COUNTER = 0 #Textul din meniu care arata cate modele sunt.
VIP_FLAG = n #Flag-ul VIP.

[MYSQL CONNECTION]

SQL_HOSTNAME = xxxxxxxxx
SQL_USERNAME = xxxxxxxxxx
SQL_PASSWORD = xxxxxxxxx
SQL_DATABASE = xxxxxxxxxx



[Terrorist]
"Deadpool" "deadpool" "NOPREVIEW" "0"

[Counter-Strike]
"Big Smoke" "bigsmoke" "NOPREVIEW" "1"
Obviously "deadpool" and "bigsmoke" models are uploaded to the proper folder in models/player/etc...

What should I change?

Thanks


PHP Code:

#include <amxmodx>
#include <amxmisc>
#include <sqlx>
#include <hamsandwich>
#include <hl_player_models_api>

#define PLUGIN "CSGO Agents"
#define VERSION "2.2"
#define AUTHOR "lexzor"

#define MAX_SKINS 100
#define NON_USED_SKIN 300

#pragma semicolon 1
#pragma compress 1

///////
//SQL//
///////
;
new const 
SQL_HOSTNAME[]                =                "SQL_HOSTNAME";
new const 
SQL_USERNAME[]                =                "SQL_USERNAME";
new const 
SQL_PASSWORD[]                =                "SQL_PASSWORD";
new const 
SQL_DATABASE[]                =                "SQL_DATABASE";
new const 
PREVIEW_MENU[]                =                "PREVIEW_MENU";
new const 
MODELS_COUNTER[]                =                "MODELS_COUNTER";
new const 
VIP_FLAG[]                    =                "VIP_FLAG";
new const 
g_szTable[] = "CSGO_Agents_Players_Data";
new 
Handle:g_SqlTuple;
new 
g_Error[512];
new const 
g_szPluginName[] = "CSGO AGENTS";

//////////
//CONFIG//
//////////
new const g_szFileName[] = "csgo_agents.cfg";
new const 
g_szMOTDFolder[] = "csgo_agents_motd";
new 
g_szFile[124];
new const 
g_szFileInfo[][] =
{
    
"#Skinul pentru echipa Terrorist si Counter-Strike trebuie puse la sectiunea respectiva.^n",
    
"#Model: ^"Nume Skin^", ^"Nume model (fara .mdl)^", ^"Nume fisier preview (cu .html)^", ^"ONLY VIP (1/0)^"^n",
    
"#In cazul in care nu doriti preview la skin scrieti in ghilimelele unde ar trebui sa fie numele fisierului ^"NOPREVIEW^".^n",
    
"#Skinurile fiecarui player se salveaza pe SteamID.^n^n^n",
    
"[MYSQL CONNECTION]^n^n",
    
"SQL_HOSTNAME = ^n",
    
"SQL_USERNAME = ^n",
    
"SQL_PASSWORD = ^n",
    
"SQL_DATABASE = ^n^n^n",
    
"[SETTINGS]^n^n",
    
"PREVIEW_MENU = 1 #Meniul pentru preview (0/1)^n",
    
"MODELS_COUNTER = 1  #Textul din meniu care arata cate modele sunt.^n",
    
"VIP_FLAG = t #Flag-ul VIP.^n^n^n",
    
"[Terrorist]^n^n^n",
    
"[Counter-Strike]^n^n^n"
};

////////
//ENUM//
////////
enum _:SQLDATA
{
    
MYSQL_HOST[32],
    
MYSQL_USER[32],
    
MYSQL_PASS[48],
    
MYSQL_DB[32],
}

enum _:TEROR
{
    
szTModelName[64],
    
szTModelLocation[64],
    
szTModelPreview[64],
    
szTSkin[64],
    
iTVIPOnly,
    
iTID
}

enum _:COUNTER_TERO
{
    
szCTModelName[64],
    
szCTModelLocation[64],
    
szCTModelPreview[64],
    
szCTSkin[25],
    
iCTVIPOnly,
    
iCTID
}

enum _:PREFERENCES
{
    
MENU_PREVIEW,
    
COUNTER_MODELS,
    
FLAG_VIP[26]
}

enum

    
SETTINGS 1,
    
SQL_DATA,
    
TERRORISTS,
    
COUNTER_TERRORISTS
}

enum _:TEAMS
{
    
T,
    
CT
}

//////////
//PLUGIN//
//////////
new const g_szTag [] = "^4[CSGO Agents]^1";
new 
g_TSkin[MAX_SKINS][TEROR];
new 
g_CTSkin[MAX_SKINS][COUNTER_TERO];
new 
g_iCounterTotalSkins;
new 
g_iTerorristTotalSkins;
new 
g_iPlayerSkin[MAX_PLAYERS 1][TEAMS];
new 
g_szAuthID[MAX_PLAYERS 1][MAX_AUTHID_LENGTH];
new 
g_szSQlData[SQLDATA];
new 
g_iSettings[PREFERENCES];

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);

    
register_cvar("csgo_agents_wf"VERSIONFCVAR_SERVER|FCVAR_EXTDLL|FCVAR_UNLOGGED|FCVAR_SPONLY);

    
register_clcmd("say""say_hook");
    
register_clcmd("say_team""say_hook");
    
register_clcmd("amx_agents""agents_menu"_"Open CSGO Agents menu");
    
RegisterHam(Ham_Spawn"player""player_spawn_post"1);
}

public 
plugin_precache()
{
    new 
szFileDirector[64], iFilePointer;
    
    
get_configsdir(szFileDirectorcharsmax(szFileDirector));
    
formatex(g_szFilecharsmax(g_szFile), "%s/%s"szFileDirectorg_szFileName);
    
    new 
iFile file_exists(g_szFile);

    if(!
iFile)
    {
        
iFilePointer fopen(g_szFile"w");
        new 
szFileData[512];
                
        for(new 
isizeof(g_szFileInfo); i++)
        {
            
formatex(szFileDatacharsmax(szFileData), "%s"g_szFileInfo[i]);
            
fputs(iFilePointerszFileData);
        }

        
fclose(iFilePointer);

        
server_print(" ");
        
server_print("-----------------------------------------");
        
server_print("[CSGO AGENTS] Config file has been created succesfully!");
        
server_print("[CSGO AGENTS] First of all config the plugin in ^"csgo_agents.cfg^"");
        
server_print("-----------------------------------------");
        
server_print(" ");
        
        
set_fail_state("Complete SQL informations.");
    }

    new 
szData[512];
    new 
szString[124];
    new 
szValue[124];
    new 
szParseData[4][64];
    new 
iSection;
    new 
szCfgDir[32];
    new 
0;
    new 
0;

    
iFilePointer fopen(g_szFile"rt");

    if(!
iFilePointer)
    {
        
set_fail_state("File %s couldn't be opened!"g_szFile);
    }

    while(
fgets(iFilePointerszDatacharsmax(szData))) 
    {
        
trim(szData);
        
        if(
szData[0] == '#' || szData[0] == EOS || szData[0] == ';')
        {
            continue;
        }

        if(
szData[0] == '[')
        {
            
iSection += 1;
            continue;
        }
        
        switch(
iSection)
        {
            case 
SQL_DATA:
            {
                
strtok2(szDataszStringcharsmax(szString), szValuecharsmax(szValue), '='TRIM_INNER);
                
                if(
szValue[0] == EOS || !szValue[0])
                {
                    
set_fail_state("You must complete SQL data in configuration file!");
                }
                    
                if(
equali(szStringSQL_HOSTNAME))
                {
                    
copy(g_szSQlData[MYSQL_HOST], charsmax(g_szSQlData[MYSQL_HOST]), szValue);
                }
                
                if(
equali(szStringSQL_USERNAME))
                {
                    
copy(g_szSQlData[MYSQL_USER], charsmax(g_szSQlData[MYSQL_USER]), szValue);
                }
                
                if(
equali(szStringSQL_PASSWORD))
                {
                    
copy(g_szSQlData[MYSQL_PASS], charsmax(g_szSQlData[MYSQL_PASS]), szValue);
                }
                
                if(
equali(szStringSQL_DATABASE))
                {
                    
copy(g_szSQlData[MYSQL_DB], charsmax(g_szSQlData[MYSQL_DB]), szValue);
                }
            }

            case 
SETTINGS:
            {
                
strtok2(szDataszStringcharsmax(szString), szValuecharsmax(szValue), '='TRIM_INNER);
                
                if(
szValue[0] == EOS || !szValue[0])
                    continue;
                
                if(
equal(szStringPREVIEW_MENU))
                {
                    
g_iSettings[MENU_PREVIEW] = str_to_num(szValue); 
                }

                if(
equal(szStringMODELS_COUNTER))
                {
                    
g_iSettings[COUNTER_MODELS] = str_to_num(szValue);
                }

                if(
equal(szStringVIP_FLAG))
                {
                    
copy(g_iSettings[FLAG_VIP], charsmax(g_iSettings[FLAG_VIP]), szValue);
                }
            }

            case 
TERRORISTS:
            {    
                ++
i;
                
parse(szDataszParseData[0], charsmax(szParseData[]), szParseData[1], charsmax(szParseData[]),  szParseData[2], charsmax(szParseData[]), szParseData[3], charsmax(szParseData[]));

                
copy(g_TSkin[i-1][szTModelName], charsmax(g_TSkin[][szTModelName]), szParseData[0]);

                
formatex(g_TSkin[i-1][szTModelPreview], charsmax(g_TSkin[][szTModelPreview]), "%s/%s/%s"szCfgDirg_szMOTDFolderszParseData[2]);
                
formatex(g_TSkin[i-1][szTModelLocation], charsmax(g_TSkin[][szTModelLocation]), "models/player/%s/%s"szParseData[1], szParseData[1]);

                
g_TSkin[i-1][iTVIPOnly] = str_to_num(szParseData[3]);

                if(
g_TSkin[i-1][szTModelLocation][0] != EOS || g_TSkin[i-1][szTModelLocation][0])
                    
precache_player_model(g_TSkin[i-1][szTModelLocation]);
    
                
replace_all(g_TSkin[i-1][szTModelLocation], charsmax(g_TSkin[][szTModelLocation]), "/"" ");
                
parse(g_TSkin[i-1][szTModelLocation], szParseData[0], charsmax(szParseData), szParseData[1], charsmax(szParseData), g_TSkin[i-1][szTSkin], charsmax(g_TSkin[][szTSkin]));

                
g_TSkin[i-1][iTID] = i-1;

                ++
g_iTerorristTotalSkins;
            }

            case 
COUNTER_TERRORISTS:
            {
                ++
z;
                
parse(szDataszParseData[0], charsmax(szParseData[]), szParseData[1], charsmax(szParseData[]),  szParseData[2], charsmax(szParseData[]), szParseData[3], charsmax(szParseData[]));

                
copy(g_CTSkin[z-1][szCTModelName], charsmax(g_CTSkin[][szCTModelName]), szParseData[0]);

                
formatex(g_CTSkin[z-1][szCTModelPreview], charsmax(g_CTSkin[][szCTModelPreview]), "%s/%s/%s"szCfgDirg_szMOTDFolderszParseData[2]);
                
formatex(g_CTSkin[z-1][szCTModelLocation], charsmax(g_CTSkin[][szCTModelLocation]), "models/player/%s/%s"szParseData[1], szParseData[1]);

                
g_CTSkin[z-1][iCTVIPOnly] = str_to_num(szParseData[3]);

                if(
g_CTSkin[z-1][szCTModelLocation][0] != EOS || g_CTSkin[z-1][szCTModelLocation][0])
                    
precache_player_model(g_CTSkin[z-1][szCTModelLocation]);

                
replace_all(g_CTSkin[z-1][szCTModelLocation], charsmax(g_CTSkin[][szCTModelLocation]), "/"" ");
                
parse(g_CTSkin[z-1][szCTModelLocation], szParseData[0], charsmax(szParseData[]), szParseData[0], charsmax(szParseData[]), g_CTSkin[z-1][szCTSkin], charsmax(g_CTSkin[][szCTSkin]));

                
g_CTSkin[z-1][iCTID] = z-1;

                ++
g_iCounterTotalSkins;
            }
        }
    }

    
fclose(iFilePointer);

    
MySql_Init();
}

public 
plugin_end()
{
    
SQL_FreeHandle(g_SqlTuple);
}

public 
MySql_Init()
{
    
g_SqlTuple SQL_MakeDbTuple(g_szSQlData[MYSQL_HOST], g_szSQlData[MYSQL_USER], g_szSQlData[MYSQL_PASS], g_szSQlData[MYSQL_DB], .timeout 60);
       
    new 
ErrorCode,Handle:SqlConnection SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error));
       
    if(
SqlConnection == Empty_Handle)
    {
        
set_fail_state(g_Error);
    }
    
    new 
Handle:Queries;
    new 
szQuery[1024];
    
    
formatex(szQuerycharsmax(szQuery), "CREATE TABLE IF NOT EXISTS %s ( `id` INT(11) NOT NULL AUTO_INCREMENT , `name` VARCHAR(33) NOT NULL , `steamid` VARCHAR(65) NOT NULL , `last_ct_agent` INT(4) NOT NULL , `last_t_agent` INT(4) NOT NULL , PRIMARY KEY (`id`))"g_szTable);
    
Queries SQL_PrepareQuery(SqlConnectionszQuery);

    if(!
SQL_Execute(Queries))
    {
        
SQL_QueryError(Queries,g_Error,charsmax(g_Error));
        
set_fail_state(g_Error);
    }        
    
    
server_print("[%s] SQL Connection to server database has been realized succesfully!"g_szPluginName);
    
    
SQL_FreeHandle(Queries);
    
SQL_FreeHandle(SqlConnection);
}  
/////////////////////////////////////////////// SQL ///////////////////////////////////////////////
public client_authorized(id)
{
    
get_user_authid(idg_szAuthID[id], charsmax(g_szAuthID[]));
}

public 
client_putinserver(id)
{
    new 
szQuery[512];
    new 
szData[1];
    
g_iPlayerSkin[id][T] = NON_USED_SKIN;
    
g_iPlayerSkin[id][CT] = NON_USED_SKIN;
    
szData[0] = id;
    
formatex(szQuerycharsmax(szQuery), "SELECT * FROM `%s` WHERE `steamid` = '%s'"g_szTableg_szAuthID[id]);
    
SQL_ThreadQuery(g_SqlTuple"CheckData"szQueryszData1);
}

#if AMXX_VERSION_NUM < 183
public client_disconnect(id)
#else
public client_disconnected(id)
#endif
{
    
g_iPlayerSkin[id][T] = 0;
    
g_iPlayerSkin[id][CT] = 0;
}

public 
CheckData(FailStateHandle:QueryszError[], ErrorCodeszData[], iSize)
{
    if(
FailState || ErrorCode)
    {
        
server_print(" ");
        
server_print("[%s] SQL ERROR: %s"g_szPluginNameszError);
        
server_print(" ");
    }

    if(
SQL_NumResults(Query) > 0)
    {
        new 
id szData[0];
        
g_iPlayerSkin[id][T] = SQL_ReadResult(Query4);
        
g_iPlayerSkin[id][CT] = SQL_ReadResult(Query3);
    }
}
/////////////////////////////////////////////// SAY HOOK ///////////////////////////////////////////////
public say_hook(id)
{
    new 
szArg[192];

    
read_args(szArgcharsmax(szArg));
    
remove_quotes(szArg);

    if(
equal(szArg"/agents"))
    {
        
agents_menu(id);
    }

    return 
PLUGIN_CONTINUE;
}
/////////////////////////////////////////////// MENU ///////////////////////////////////////////////
public agents_menu(id)
{
    new 
iMenu menu_create("\r[CSGO Agents]\y Menu""agents_menu_handler");

    
menu_additem(iMenu"Terrorist Agents");
    
menu_additem(iMenu"Counter-Terrorists Agents");

    if(
g_iSettings[MENU_PREVIEW] != 0)
    {
        
menu_additem(iMenu"Preview skins");
    }

    if(
g_iSettings[COUNTER_MODELS] != 0)
    {
        new 
skinCounter[36];

        
menu_addblank2(iMenu);

        if(
g_iCounterTotalSkins != && g_iTerorristTotalSkins != 0)
        {
            
formatex(skinCountercharsmax(skinCounter), "\dTerrorists Agents: %i"g_iTerorristTotalSkins);
            
menu_addtext2(iMenuskinCounter);

            
formatex(skinCountercharsmax(skinCounter), "\dCounter-Terrorists Agents: %i"g_iCounterTotalSkins);
            
menu_addtext2(iMenuskinCounter);

            
formatex(skinCountercharsmax(skinCounter), "\dTotal Agents: %i"g_iCounterTotalSkins g_iTerorristTotalSkins);
            
menu_addtext2(iMenuskinCounter);
        }
        else
        {
            
formatex(skinCountercharsmax(skinCounter), "\dThere are no skins.");
            
menu_addtext2(iMenuskinCounter);
        }
    }

    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL);
    
menu_display(idiMenu0);
}

public 
agents_menu_handler(idmenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(menu);
    }

    switch(
item)
    {
        case 
0terrorists_menu(id);
        case 
1counter_terrorists_menu(id);
        case 
2preview_menu(id);
    }
}

terrorists_menu(id)
{
    new 
iMenu menu_create("\r[CSGO Agents]\y Terrorists Agents""terrorists_agents_menu_handler");
    new 
szMenuItem[4][45];

    if(
g_iTerorristTotalSkins 0)
    {
        
formatex(szMenuItem[0], charsmax(szMenuItem[]), "Default Skin - \y [%s]"g_iPlayerSkin[id][T] == NON_USED_SKIN "ON" "OFF");
        
menu_additem(iMenuszMenuItem[0]);

        for (new 
ig_iTerorristTotalSkinsi++)
        {
            if(
g_TSkin[i][iTVIPOnly] == 0)
            {
                if(
g_TSkin[i][iTID] == g_iPlayerSkin[id][T])
                {
                    
formatex(szMenuItem[1], charsmax(szMenuItem[]), "%s \r[#]"g_TSkin[i][szTModelName]);
                    
menu_additem(iMenuszMenuItem[1]);
                }
                else
                {
                    
menu_additem(iMenug_TSkin[i][szTModelName]);
                }
            }
            else 
            {
                if(
g_TSkin[i][iTID] == g_iPlayerSkin[id][T])
                {
                    
formatex(szMenuItem[2], charsmax(szMenuItem[]), "%s - \y[VIP] \r[#]"g_TSkin[i][szTModelName]);
                    
menu_additem(iMenuszMenuItem[2]);
                }
                else
                {
                    
formatex(szMenuItem[3], charsmax(szMenuItem[]), "%s - \y[VIP]"g_TSkin[i][szTModelName]);
                    
menu_additem(iMenuszMenuItem[3]);
                }    
            }
        }
    }
    else 
    {
        
formatex(szMenuItem[0], charsmax(szMenuItem[]), "\dThere are no models to choose from.");
        
menu_addtext2(iMenuszMenuItem[0]);
    }

    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL);
    
menu_display(idiMenu0);
}

public 
terrorists_agents_menu_handler(idmenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(menu);
    }

    if(
item g_iTerorristTotalSkins || item 0)
    {
        return 
PLUGIN_HANDLED;
    }

    if(
item == 0)
    {
        if(
is_user_alive(id))
        {
            
hl_reset_player_model(id);
            
client_print_color(idprint_team_default"%s You choose^4 Default Skin^1!"g_szTag);
        }
        else 
        {
            
client_print_color(idprint_team_default"%s You will be respawned with^4 Default Skin^1!"g_szTag);
        }

        
g_iPlayerSkin[id][T] = NON_USED_SKIN;
        
save_data_sql(id);
        return 
PLUGIN_HANDLED;
    }

    
item -= 1;

    if(
g_TSkin[item][iTVIPOnly] != && !(get_user_flags(id) & read_flags(g_iSettings[FLAG_VIP])))
    {
        
client_print_color(idprint_team_default"%s You can't choose this skin because you are not a ^4VIP^1!"g_szTag);
        return 
PLUGIN_HANDLED;
    }
            
    if(
is_user_alive(id))
    {
        if(
get_user_team(id) == 1)
            
hl_set_player_model(idg_TSkin[item][szTSkin]);

        
client_print_color(idprint_team_default"%s You choose^4 %s^1 Agent!"g_szTagg_TSkin[item][szTModelName]);
    }
    else 
    {
        
client_print_color(idprint_team_default"%s You will be respawned with^4 %s^1 Agent Model!"g_szTagg_TSkin[item][szTModelName]);
    }

    
g_iPlayerSkin[id][T] = item;
    
save_data_sql(id);
    return 
PLUGIN_CONTINUE;
}

counter_terrorists_menu(id)
{
    new 
iMenu menu_create("\r[CSGO Agents]\y Counter-Terrorists Agents""counter_terrorists_agents_menu_handler");
    new 
szMenuItem[4][45];
    
    if(
g_iCounterTotalSkins 0)
    {
        
formatex(szMenuItem[0], charsmax(szMenuItem[]), "Default Skin - \y [%s]"g_iPlayerSkin[id][CT] == NON_USED_SKIN "ON" "OFF");
        
menu_additem(iMenuszMenuItem[0]);

        for (new 
ig_iCounterTotalSkinsi++)
        {
            if(
g_CTSkin[i][iCTVIPOnly] == 0)
            {
                if(
g_CTSkin[i][iCTID] == g_iPlayerSkin[id][CT])
                {
                    
formatex(szMenuItem[1], charsmax(szMenuItem[]), "%s \r[#]"g_CTSkin[i][szCTModelName]);
                    
menu_additem(iMenuszMenuItem[1]);
                }
                else
                {
                    
menu_additem(iMenug_CTSkin[i][szCTModelName]);
                }
            }
            else 
            {
                if(
g_CTSkin[i][iCTID] == g_iPlayerSkin[id][CT])
                {
                    
formatex(szMenuItem[2], charsmax(szMenuItem[]), "%s - \y[VIP] \r[#]"g_CTSkin[i][szCTModelName]);
                    
menu_additem(iMenuszMenuItem[2]);
                }
                else
                {
                    
formatex(szMenuItem[3], charsmax(szMenuItem[]), "%s - \y[VIP]"g_CTSkin[i][szCTModelName]);
                    
menu_additem(iMenuszMenuItem[3]);
                }    
            }
        }
    }
    else 
    {
        
formatex(szMenuItem[0], charsmax(szMenuItem[]), "\dThere are no models to choose from.");
        
menu_addtext2(iMenuszMenuItem[0]);
    }

    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL);
    
menu_display(idiMenu0);
}

public 
counter_terrorists_agents_menu_handler(idmenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(menu);
    }

    if(
item == 0)
    {
        if(
is_user_alive(id))
        {
            
hl_reset_player_model(id);

            
client_print_color(idprint_team_default"%s You choose^4 Default Skin^1!"g_szTag);
        }
        else 
        {
            
client_print_color(idprint_team_default"%s You will be respawned with^4 Default Skin^1!"g_szTag);
        }

        
g_iPlayerSkin[id][CT] = NON_USED_SKIN;
        
save_data_sql(id);
        return 
PLUGIN_HANDLED;
    }

    if(
item g_iCounterTotalSkins || item 0)
    {
        return 
PLUGIN_HANDLED;
    }

    
item -= 1;

    if(
g_CTSkin[item][iCTVIPOnly] != && !(get_user_flags(id) & read_flags(g_iSettings[FLAG_VIP])))
    {
        
client_print_color(idprint_team_default"%s You can't choose this skin because you are not a ^4VIP^1!"g_szTag);
        return 
PLUGIN_HANDLED;
    }
    
    if(
is_user_alive(id))
    {
        if(
get_user_team(id) == 2)
            
hl_set_player_model(idg_CTSkin[item][szCTSkin]);

        
client_print_color(idprint_team_default"%s You choose^4 %s^1 Agent!"g_szTagg_CTSkin[item][szCTModelName]);
    }
    else
    {
        
client_print_color(idprint_team_default"%s You will be respawned with^4 %s^1 Agent Model!"g_szTagg_CTSkin[item][szCTModelName]);
    }

    
g_iPlayerSkin[id][CT] = item;
    
save_data_sql(id);
    return 
PLUGIN_CONTINUE;
}

preview_menu(id)
{
    new 
iMenu menu_create("\r[CSGO Agents]\y Preview Menu""preview_menu_handler");

    
menu_additem(iMenu"Terrorist Agents");
    
menu_additem(iMenu"Counter-Terrorists Agents");

    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL);
    
menu_display(idiMenu0);
}

public 
preview_menu_handler(idmenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(menu);
    }

    switch(
item)
    {
        case 
0preview_terrorist_agents(id);
        case 
1preview_counter_terrorist_agents(id);
    }
}

public 
preview_terrorist_agents(id)
{
    new 
iMenu menu_create("\r[CSGO Agents]\y Terrorists Agents""terrorists_preview_menu_handler");
    new 
szMsg[45];

    if(
g_iTerorristTotalSkins 0)
    {
        for (new 
ig_iTerorristTotalSkinsi++)
        {
                
menu_additem(iMenug_TSkin[i][szTModelName]);
        }
    }
    else 
    {
        
formatex(szMsgcharsmax(szMsg), "\dThere are no models to see preview of.");
        
menu_addtext2(iMenuszMsg);
    }

    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL);
    
menu_display(idiMenu0);
}

public 
terrorists_preview_menu_handler(idmenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(menu);
    }

    if(
contain(g_TSkin[item][szTModelPreview], "NOPREVIEW") != -1)
    {
        
client_print_color(idprint_team_default"%s Agent ^4%s^1 does not have a preview!"g_szTagg_TSkin[item][szTModelName]);
        return 
PLUGIN_HANDLED;
    }

    
show_motd(idg_CTSkin[item][szCTModelPreview]);

    
preview_terrorist_agents(id);

    return 
PLUGIN_CONTINUE;
}

public 
preview_counter_terrorist_agents(id)
{
    new 
iMenu menu_create("\r[CSGO Agents]\y Counter-Terrorists Agents""counter_terrorists_preview_menu_handler");
    new 
szMsg[45];

    if(
g_iCounterTotalSkins 0)
    {
        for (new 
ig_iCounterTotalSkinsi++)
        {
                
menu_additem(iMenug_CTSkin[i][szCTModelName]);    
        }
    }
    else 
    {
        
formatex(szMsgcharsmax(szMsg), "\dThere are no models to see preview of.");
        
menu_addtext2(iMenuszMsg);
    }

    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL);
    
menu_display(idiMenu0);
}

public 
counter_terrorists_preview_menu_handler(idmenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(menu);
    }
    
    if(
contain(g_CTSkin[item][szCTModelPreview], "NOPREVIEW") != -1)
    {
        
client_print_color(idprint_team_default"%s Agent ^4%s^1 does not have a preview!"g_szTagg_CTSkin[item][szCTModelName]);
        return 
PLUGIN_HANDLED;
    }

    
show_motd(idg_CTSkin[item][szCTModelPreview]);

    
preview_counter_terrorist_agents(id);

    return 
PLUGIN_CONTINUE;
}

public 
player_spawn_post(id)
{
    if(
is_user_alive(id))
    {
        
hl_reset_player_model(id);

        if((
get_user_team(id) == && g_iPlayerSkin[id][T] == NON_USED_SKIN) || (get_user_team(id) == && g_iPlayerSkin[id][CT] == NON_USED_SKIN))
        {
            return 
PLUGIN_HANDLED;
        }

        switch(
get_user_team(id))
        {
            case 
1:
            {
                new 
iSkin g_iPlayerSkin[id][T];
                
hl_set_player_model(idg_TSkin[iSkin][szCTSkin]);
            }

            case 
2:
            {
                new 
iSkin g_iPlayerSkin[id][CT];
                
hl_set_player_model(idg_CTSkin[iSkin][szCTSkin]);
            }
        }
    }

    return 
PLUGIN_CONTINUE;
}

public 
FreeHandle(FailStateHandle:QueryszError[], ErrorCodeszData[], iSize)
{
    if(
FailState || ErrorCode)
    {
        
server_print(" ");
        
server_print("[%s] SQL ERROR: %s"szErrorg_szPluginName);
        
server_print(" ");
    }
    
    
SQL_FreeHandle(Query);
}

public 
save_data_sql(id)
{
    new 
szQuery[512];
    new 
szData[1];
    
szData[0] = id;
    
formatex(szQuerycharsmax(szQuery), "SELECT * FROM `%s` WHERE `steamid` = '%s'"g_szTableg_szAuthID[id]);
    
SQL_ThreadQuery(g_SqlTuple"SaveData"szQueryszData1);
}

public 
SaveData(FailStateHandle:QueryszError[], ErrorCodeszData[], iSize)
{
    if(
FailState || ErrorCode)
    {
        
server_print(" ");
        
server_print("[%s] SQL ERROR: %s"szErrorg_szPluginName);
        
server_print(" ");
    }

    new 
szQuery[512];
    new 
id szData[0];

    if(
SQL_NumResults(Query) < 1)
    {
        new 
szName[MAX_NAME_LENGTH];
        
get_user_name(idszNamecharsmax(szName));
        
formatex(szQuerycharsmax(szQuery), "INSERT INTO `%s` (`name`,`steamid`,`last_ct_agent`,`last_t_agent`) VALUES ('%s','%s','%i','%i')",
        
g_szTableszNameg_szAuthID[id], g_iPlayerSkin[id][CT], g_iPlayerSkin[id][T]);
        
SQL_ThreadQuery(g_SqlTuple"FreeHandle"szQuery);
    }
    else 
    {
        
formatex(szQuerycharsmax(szQuery), "UPDATE `%s` SET `last_ct_agent`='%i', `last_t_agent`='%i' WHERE `steamid` = '%s'"g_szTableg_iPlayerSkin[id][CT], g_iPlayerSkin[id][T], g_szAuthID[id]);
        
SQL_ThreadQuery(g_SqlTuple"FreeHandle"szQuery);
    }
}

precache_player_model(const szModel[], &id 0)
{
    new 
model[128];
    
formatex(modelcharsmax(model), "%sT.mdl"szModel);

    if(
file_exists(model))
        
id precache_generic(model);

    static const 
extension[] = "T.mdl";
    
#pragma unused extension

    
copy(model[strlen(model) - charsmax(extension)], charsmax(model), ".mdl");
    return 
precache_model(model);


Przeczytaj cały wpis

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...