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

RSSwarning 213: tag mismatch


MYGO.pl
 Udostępnij

Rekomendowane odpowiedzi

  • RSSy
Help please

Code:

//// crx_bestplayer.sma
// C:\Users\Personal Computer\Desktop\compiler 1.8.2\crx_bestplayer.sma(418 -- 419) : warning 213: tag mismatch
// C:\Users\Personal Computer\Desktop\compiler 1.8.2\crx_bestplayer.sma(419 -- 420) : warning 213: tag mismatch
// C:\Users\Personal Computer\Desktop\compiler 1.8.2\crx_bestplayer.sma(420 -- 421) : warning 213: tag mismatch
// Header size:          1548 bytes
// Code size:            14360 bytes
// Data size:            22896 bytes
// Stack/heap size:      16384 bytes; max. usage is unknown, due to recursion
// Total requirements:  55188 bytes
//
// 3 Warnings.
// Done.
//
// Compilation Time: 0.37 sec
// ----------------------------------------


PHP Code:

#include <amxmodx>
#include <hamsandwich>
#include <nvault>

//Comment if you're not using Counter-Strike.
#define USE_CSTRIKE

#define PLUGIN_VERSION "1.2.1"
#define MOTD_BEST "addons/amxmodx/configs/BestPlayer.txt"
#define MOTD_STATS "addons/amxmodx/configs/BestPlayerStats.txt"
#define MAX_MOTD_LENGTH 1536
#define MAX_HEADER_LENGTH 175
#define MAX_FORMULA_CYCLES 10

#define ARG_MAP "$map$"
#define ARG_NAME "$name$"
#define ARG_WINS "$wins$"
#define ARG_KILLS "$kills$"
#define ARG_KILLS_SB "$kills_sb$"
#define ARG_DEATHS "$deaths$"
#define ARG_DEATHS_SB "$deaths_sb$"
#define ARG_HEADSHOTS "$headshots$"
#define ARG_HITS "$hits$"
#define ARG_DAMAGE "$damage$"
#define ARG_KDRATIO "$kdratio$"
#define ARG_KDRATIO_SB "$kdratio_sb$"
#define ARG_HSRATIO "$hsratio$"

#if defined USE_CSTRIKE
    #include <cstrike>
    #define ARG_CTSCORE "$ctscore$"
    #define ARG_TSCORE "$tscore$"
    #define ARG_BEST_TEAM "$best_team$"
    #define get_user_deaths cs_get_user_deaths
    
new g_iTeamScore[3]
new const 
g_szTeams[][] = { "draw""t""ct" }
new const 
g_szTeamNames[][] = { """CT""TERRORIST" }
#endif

#if defined client_disconnected
    #define client_disconnect client_disconnected
#endif

enum _:Cvars
{
    
bpm_formula,
    
bpm_min_players,
    
bpm_motd_header,
    
#if defined USE_CSTRIKE
    
bpm_obey_team,
    
#endif
    
bpm_stats_header,
    
bpm_save_type
}

enum _:PlayerData
{
    
PDATA_INFO[35],
    
PDATA_WINS,
    
PDATA_KILLS,
    
PDATA_KILLS_SB,
    
PDATA_DEATHS,
    
PDATA_DEATHS_SB,
    
PDATA_HEADSHOTS,
    
PDATA_HITS,
    
Float:PDATA_DAMAGE,
    
Float:PDATA_KDRATIO,
    
Float:PDATA_KDRATIO_SB,
    
Float:PDATA_HSRATIO
}

new 
g_eCvars[Cvars], g_iSaveTypeg_iVault
new g_ePlayerData[33][PlayerData], g_szStats[MAX_MOTD_LENGTH], g_szMap[32]

public 
plugin_init()
{
    
register_plugin("Best Player MOTD"PLUGIN_VERSION"OciXCrom")
    
register_cvar("CRXBestPlayer"PLUGIN_VERSIONFCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
    
    
#if defined USE_CSTRIKE
    
register_event("TeamScore""OnTeamScore""a")
    
#endif
    
    
RegisterHam(Ham_TakeDamage"player""OnTakeDamage"1)
    
register_event("DeathMsg""OnPlayerKilled""a")
    
register_message(SVC_INTERMISSION"OnIntermission")
    
register_logevent("OnRestartRound"2"0=World triggered""1&Restart_Round")
    
register_clcmd("say /mystats""Cmd_MyStats")
    
register_clcmd("say_team /mystats""Cmd_MyStats")
    
    
g_eCvars[bpm_formula] = register_cvar("bpm_formula""157")
    
g_eCvars[bpm_min_players] = register_cvar("bpm_min_players""6")
    
g_eCvars[bpm_motd_header] = register_cvar("bpm_motd_header""Best Player: $name$")
    
#if defined USE_CSTRIKE
    
g_eCvars[bpm_obey_team] = register_cvar("bpm_obey_team""0")
    
#endif
    
g_eCvars[bpm_stats_header] = register_cvar("bpm_stats_header""Player Stats: $name$")
    
g_eCvars[bpm_save_type] = register_cvar("bpm_save_type""0")
    
get_mapname(g_szMapcharsmax(g_szMap))
    
g_iVault nvault_open("BestPlayer")
}

public 
plugin_cfg()
    
g_iSaveType get_pcvar_num(g_eCvars[bpm_save_type])
    
public 
plugin_end()
    
nvault_close(g_iVault)

public 
client_putinserver(id)
{
    
reset_player_stats(id)    
    
get_user_saveinfo(idg_ePlayerData[id][PDATA_INFO], charsmax(g_ePlayerData[][PDATA_INFO]))
    
use_vault(id1g_ePlayerData[id][PDATA_INFO])
}

public 
client_disconnect(id)
    
use_vault(id0g_ePlayerData[id][PDATA_INFO])

public 
client_infochanged(id)
{
    if(
g_iSaveType 0)
        return
        
    static 
szNewName[32], szOldName[32]
    
get_user_info(id"name"szNewNamecharsmax(szNewName))
    
get_user_name(idszOldNamecharsmax(szOldName))
    
    if(!
equali(szNewNameszOldName))
    {
        
strtolower(szNewName); strtolower(szOldName)
        
copy(g_ePlayerData[id][PDATA_INFO], charsmax(g_ePlayerData[][PDATA_INFO]), szNewName)
        
        
use_vault(id0szOldName)
        
use_vault(id1szNewName)
    }
}

public 
Cmd_MyStats(id)
{
    if(!
g_szStats[0])
        
LoadFileForMe(MOTD_STATSg_szStatscharsmax(g_szStats))
        
    static 
szMotd[MAX_MOTD_LENGTH]
    new 
szHeader[MAX_HEADER_LENGTH]
    
copy(szMotdcharsmax(szMotd), g_szStats)
    
get_pcvar_string(g_eCvars[bpm_stats_header], szHeadercharsmax(szHeader))
    
calculate_stats(id)
    
apply_replacements(idszMotdcharsmax(szMotd))
    
apply_replacements(idszHeadercharsmax(szHeader))
    
show_motd(idszMotdszHeader)
    return 
PLUGIN_HANDLED
}

public 
OnRestartRound()
{
    new 
iPlayers[32], iPnum
    get_players
(iPlayersiPnum)
    
    for(new 
iiPnumi++)
        
reset_player_stats(iPlayers[i])
}

public 
OnTakeDamage(iVictimiInflictoriAttackerFloat:fDamageiDamageBits)
{
    if(
is_user_alive(iAttacker) && iAttacker != iVictim)
    {
        
g_ePlayerData[iAttacker][PDATA_HITS]++
        
g_ePlayerData[iAttacker][PDATA_DAMAGE] += fDamage
    
}
}

public 
OnPlayerKilled()
{
    new 
iAttacker read_data(1),
        
iVictim read_data(2)
        
    
g_ePlayerData[iVictim][PDATA_DEATHS]++
        
    if(
is_user_connected(iAttacker) && iAttacker != iVictim)
    {
        
g_ePlayerData[iAttacker][PDATA_KILLS]++
        
        if(
read_data(3))
            
g_ePlayerData[iAttacker][PDATA_HEADSHOTS]++
    }
}

#if defined USE_CSTRIKE
public OnTeamScore()
{
    new 
szTeam[3], iScore read_data(2)
    
read_data(1szTeamcharsmax(szTeam))
    
g_iTeamScore[szTeam[0] == 'C' 1] = iScore
}
#endif

public OnIntermission()
{
    new 
iPlayers[32], iPnum
    
    
#if defined USE_CSTRIKE
    
new iTeam get_pcvar_num(g_eCvars[bpm_obey_team])
    
    switch(
iTeam)
    {
        case 
0get_players(iPlayersiPnum)
        case 
12get_players(iPlayersiPnum"e"g_szTeamNames[iTeam])
        case 
3:
        {
            new 
iWinTeam get_winning_team()
            
            switch(
iWinTeam)
            {
                case 
0get_players(iPlayersiPnum)
                case 
12get_players(iPlayersiPnum"e"g_szTeamNames[iWinTeam])
            }
        }
    }
    
#else
    
get_players(iPlayersiPnum)
    
#endif
    
    
if(!iPnum || iPnum get_pcvar_num(g_eCvars[bpm_min_players]))
        return 
PLUGIN_CONTINUE
        
    
new szFormula[MAX_FORMULA_CYCLES], iBest iPlayers[0]
    
get_pcvar_string(g_eCvars[bpm_formula], szFormulacharsmax(szFormula))
    
    new 
iLen strlen(szFormula)
    
    for(new 
ijiPlayeriScoreany:iBestScoreiPnumi++)
    {
        
iPlayer iPlayers[i]
        
calculate_stats(iPlayer)
        
        for(
0iLenj++)
        {
            
iScore get_score_by_formula(iPlayerjszFormula)
            
iBestScore get_score_by_formula(iBestjszFormula)
            
            if(
iScore iBestScore)
            {
                
iBest iPlayer
                
break
            }
            else if(
iScore == iBestScore)
            {
                if(
== iLen)
                    break
                    
                if(
get_score_by_formula(iPlayer1szFormula) > get_score_by_formula(iBest1szFormula))
                {
                    
iPlayer iBest
                    
break
                }
            }
        }
    }

    new 
bool:bNonZero
    
    
for(new iiLeni++)
    {
        if(
get_score_by_formula(iBestiszFormula) != 0)
        {
            
bNonZero true
            
break
        }
    }
    
    if(!
bNonZero)
        return 
PLUGIN_CONTINUE
    
    g_ePlayerData
[iBest][PDATA_WINS]++
    
    new 
szMotd[MAX_MOTD_LENGTH], szHeader[MAX_HEADER_LENGTH]
    
LoadFileForMe(MOTD_BESTszMotdcharsmax(szMotd))
    
get_pcvar_string(g_eCvars[bpm_motd_header], szHeadercharsmax(szHeader))
    
apply_replacements(iBestszMotdcharsmax(szMotd))
    
apply_replacements(iBestszHeadercharsmax(szHeader))
    
show_motd(0szMotdszHeader)
    
send_intermission()
    return 
PLUGIN_HANDLED
}

bool:has_argument(const szMessage[], const szArgument[])
    return 
contain(szMessageszArgument) != -1

any
:get_score_by_formula(const id, const iNum, const szFormula[])
{
    switch(
szFormula[iNum])
    {
        case 
'0': return g_ePlayerData[id][PDATA_WINS]
        case 
'1': return g_ePlayerData[id][PDATA_KILLS]
        case 
'2': return g_ePlayerData[id][PDATA_KILLS_SB]
        case 
'3': return g_ePlayerData[id][PDATA_DEATHS] * -1
        
case '4': return g_ePlayerData[id][PDATA_DEATHS_SB] * -1
        
case '5': return g_ePlayerData[id][PDATA_HEADSHOTS]
        case 
'6': return g_ePlayerData[id][PDATA_HITS]
        case 
'7': return g_ePlayerData[id][PDATA_DAMAGE]
        case 
'8': return g_ePlayerData[id][PDATA_KDRATIO]
        case 
'9': return g_ePlayerData[id][PDATA_KDRATIO_SB]
        case 
'a': return g_ePlayerData[id][PDATA_HSRATIO]
    }
    
    return 
0
}

apply_replacements(const idszMessage[], const iLen)
{    
    if(
has_argument(szMessageARG_MAP))
        
replace_all(szMessageiLenARG_MAPg_szMap)
        
    if(
has_argument(szMessageARG_NAME))
    {
        static 
szBuffer[32]
        
get_user_name(idszBuffercharsmax(szBuffer))
        
replace_all(szMessageiLenARG_NAMEszBuffer)
    }
    
    if(
has_argument(szMessageARG_WINS))
        
replace_num(szMessageiLenARG_WINSg_ePlayerData[id][PDATA_WINS])
        
    if(
has_argument(szMessageARG_KILLS))
        
replace_num(szMessageiLenARG_KILLSg_ePlayerData[id][PDATA_KILLS])
        
    if(
has_argument(szMessageARG_KILLS_SB))
        
replace_num(szMessageiLenARG_KILLS_SBg_ePlayerData[id][PDATA_KILLS_SB])
        
    if(
has_argument(szMessageARG_DEATHS))
        
replace_num(szMessageiLenARG_DEATHSg_ePlayerData[id][PDATA_DEATHS])
        
    if(
has_argument(szMessageARG_DEATHS_SB))
        
replace_num(szMessageiLenARG_DEATHS_SBg_ePlayerData[id][PDATA_DEATHS_SB])
        
    if(
has_argument(szMessageARG_HEADSHOTS))
        
replace_num(szMessageiLenARG_HEADSHOTSg_ePlayerData[id][PDATA_HEADSHOTS])
        
    if(
has_argument(szMessageARG_HITS))
        
replace_num(szMessageiLenARG_HITSg_ePlayerData[id][PDATA_HITS])
        
    if(
has_argument(szMessageARG_DAMAGE))
        
replace_num_f(szMessageiLenARG_DAMAGEg_ePlayerData[id][PDATA_DAMAGE])
        
    if(
has_argument(szMessageARG_KDRATIO))
        
replace_num_f(szMessageiLenARG_KDRATIOg_ePlayerData[id][PDATA_KDRATIO])
        
    if(
has_argument(szMessageARG_KDRATIO_SB))
        
replace_num_f(szMessageiLenARG_KDRATIO_SBg_ePlayerData[id][PDATA_KDRATIO_SB])
        
    if(
has_argument(szMessageARG_HSRATIO))
        
replace_num_f(szMessageiLenARG_HSRATIOg_ePlayerData[id][PDATA_HSRATIO])
        
    
#if defined USE_CSTRIKE
    
if(has_argument(szMessageARG_TSCORE))
        
replace_num(szMessageiLenARG_TSCOREg_iTeamScore[1])
        
    if(
has_argument(szMessageARG_CTSCORE))
        
replace_num(szMessageiLenARG_CTSCOREg_iTeamScore[2])
        
    if(
has_argument(szMessageARG_BEST_TEAM))
        
replace_all(szMessageiLenARG_BEST_TEAMg_szTeams[get_winning_team()])
    
#endif
}

#if defined USE_CSTRIKE
get_winning_team()
    return 
g_iTeamScore[1] == g_iTeamScore[2] ? g_iTeamScore[1] > g_iTeamScore[2] ? 2
#endif

reset_player_stats(const id)
{
    
g_ePlayerData[id][PDATA_WINS] = 0
    g_ePlayerData
[id][PDATA_KILLS] = 0
    g_ePlayerData
[id][PDATA_KILLS_SB] = 0
    g_ePlayerData
[id][PDATA_DEATHS] = 0
    g_ePlayerData
[id][PDATA_DEATHS_SB] = 0
    g_ePlayerData
[id][PDATA_HEADSHOTS] = 0
    g_ePlayerData
[id][PDATA_HITS] = 0
    g_ePlayerData
[id][PDATA_DAMAGE] = _:0.0
    g_ePlayerData
[id][PDATA_KDRATIO] = _:0.0
    g_ePlayerData
[id][PDATA_KDRATIO_SB] = _:0.0
    g_ePlayerData
[id][PDATA_HSRATIO] = _:0.0
}

use_vault(const id, const iType, const szInfo[])
{
    if(!
szInfo[0])
        return
    
    switch(
iType)
    {
        case 
0:
        {
            new 
szWins[10]
            
num_to_str(g_ePlayerData[id][PDATA_WINS], szWinscharsmax(szWins))
            
nvault_set(g_iVaultszInfoszWins)
        }
        case 
1:    g_ePlayerData[id][PDATA_WINS] = nvault_get(g_iVaultszInfo)
    }
}

get_user_saveinfo(const idszInfo[], const iLen)
{
    switch(
g_iSaveType)
    {
        case 
0: { get_user_name(idszInfoiLen); strtolower(szInfo); }
        case 
1get_user_ip(idszInfoiLen1)
        case 
2get_user_authid(idszInfoiLen)
    }
}

calculate_stats(const id)
{
    
g_ePlayerData[id][PDATA_KILLS_SB] = get_user_frags(id)
    
g_ePlayerData[id][PDATA_DEATHS_SB] = get_user_deaths(id)
    
g_ePlayerData[id][PDATA_KDRATIO] = g_ePlayerData[id][PDATA_DEATHS] ? (float(g_ePlayerData[id][PDATA_KILLS]) / float(g_ePlayerData[id][PDATA_DEATHS])) : float(g_ePlayerData[id][PDATA_KILLS])
    
g_ePlayerData[id][PDATA_KDRATIO_SB] = g_ePlayerData[id][PDATA_DEATHS_SB] ? (float(g_ePlayerData[id][PDATA_KILLS_SB]) / float(g_ePlayerData[id][PDATA_DEATHS_SB])) : float(g_ePlayerData[id][PDATA_KILLS_SB])
    
g_ePlayerData[id][PDATA_HSRATIO] = g_ePlayerData[id][PDATA_HEADSHOTS] ? (float(g_ePlayerData[id][PDATA_HEADSHOTS]) / float(g_ePlayerData[id][PDATA_KILLS])) : float(g_ePlayerData[id][PDATA_HEADSHOTS])
}

replace_num(szMessage[], const iLen, const szPlaceholder[], const iNum)
{
    static 
szBuffer[32]
    
num_to_str(iNumszBuffercharsmax(szBuffer))
    
replace_all(szMessageiLenszPlaceholderszBuffer)
}

replace_num_f(szMessage[], const iLen, const szPlaceholder[], const Float:fNum)
{
    static 
szBuffer[32], i
    formatex
(szBuffercharsmax(szBuffer), "%.2f"fNum)
    
strlen(szBuffer) - 1
    
    
while(szBuffer[i] == '0' && szBuffer[1] != '.')
        --
i
        
    szBuffer
[1] = EOS
    replace_all
(szMessageiLenszPlaceholderszBuffer)
}

send_intermission()
{
    
message_begin(MSG_ALLSVC_FINALE)
    
write_string("")
    
message_end()
}

public 
plugin_natives()
{
    
register_library("bestplayer")
    
register_native("bpm_force_intermission""_bpm_force_intermission")
}

public 
_bpm_force_intermission(iPluginiParams)
    
OnIntermission() 

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