1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

En cours [MT Limiter] Question sur la limite permanente

Discussion dans 'Support des plugins AMX Mod X indépendants de la base' démarrée par MEGALODON, 19 Décembre 2014.

  1. MEGALODON

    MEGALODON Membre

    bonjour,
    j'ai MTL_VERSION "1.2.5"
    je voulais savoir si la limite permanent se fesait via panel admin et s"édité dans un fichier automatiquement.
    ou si il fallait taper dans la console "mtl_limit_player steamid" et la limitation était valable juste sur la map en court?
    j'ai testé via commande plugin et je tombe sur :
    execute with parametre ou execute with no parametre mais aprés l'un ou l'autre il ne se passe rien.

    Code (Text):
    /* AMX Mod Plugin
    *
    * (c) Copyright 2007, Alban Cotillon
    * This file is provided as is (no warranties).
    *
    * Utilisation :
    * ____________
    *
    * Cvars :
    * mtl_active : 1 pour activer le plugin , 0 pour le désactiver
    * mtl_ecart <nbre> : Nombre entier indiquant l'écart frags/morts pour activer la 1ère restriction (--> pistolets)
    * mtl_ecart2 <nbre> : Nombre entier indiquant l'écart frags/morts pour activer la 2ème restriction (--> glock & usp)
    * mtl_ecart3 <nbre> : Nombre entier indiquant l'écart frags/morts pour activer la 3ème restriction (--> couteau)
    * mtl_bombfrags : nombre de frags attribués pour l'explosion ou le désamorçage de la bombe (defaut 3)
    *
    * Commandes :
    * /mtl ou say /mtl : Aide
    *
    * mtl_limit_player <steamid/name/#userid> <limit> : limite un joueur de façon permanente
    *
    *
    * __________________________
    */


    #include <amxmodx>
    #include <amxmisc>
    #include <cstrike>
    #include <csx>
    #include <fakemeta>
    #include <fun>
    #include <hamsandwich>
    #include <nvault>

    #define MTL_VERSION "1.2.5"

    #define MAX_PLAYERS 32

    // const m_pActiveItem = 373
    const m_pClientActiveItem = 374

    const NODROP_BITSUM = (1<<CSW_HEGRENADE) | (1<<CSW_SMOKEGRENADE) | (1<<CSW_FLASHBANG) | (1<<CSW_KNIFE) // | (1<<CSW_C4)
    const NEVER_LIMITED_BITSUM = 1<<CSW_C4 | 1<<CSW_KNIFE
    const GUNS_BITSUM = ((1<<CSW_USP) | (1<<CSW_GLOCK18) | (1<<CSW_ELITE) | (1<<CSW_FIVESEVEN) | (1<<CSW_DEAGLE) | (1<<CSW_P228))
    const USP_GLOCK_BITSUM = ((1<<CSW_USP) | (1<<CSW_GLOCK18))

    new const g_iGunsIdsList[]  =  {  CSW_DEAGLE   ,    CSW_P228  ,   CSW_ELITE   , CSW_FIVESEVEN }
    new const g_szGunsList[][] = {"weapon_deagle", "weapon_p228", "weapon_elite", "weapon_fiveseven"}

    enum { No_Limitation , Guns_Limit , UspGlock_Limit , Knife_Limit }

    new g_iLimited[MAX_PLAYERS+1]
    new g_iPermLimited[MAX_PLAYERS+1]

    new g_pcvarMtlActive, g_pcvarMtlEcart, g_pcvarMtlEcart2, g_pcvarMtlEcart3, g_pcvarMtlBombfrags

    new g_iEcarts, g_iEcarts2, g_iEcarts3

    new g_iVault

    public plugin_init()
    {
        register_plugin("mT Limiter", MTL_VERSION, "Iznogood/ConnorMcLeod")
        register_dictionary("mtl.txt")

        register_cvar("mTl", MTL_VERSION, FCVAR_SERVER|FCVAR_SPONLY) // mTl tracker  

        g_pcvarMtlEcart = register_cvar("mtl_ecart", "10")
        g_pcvarMtlEcart2 = register_cvar("mtl_ecart2", "20")
        g_pcvarMtlEcart3 = register_cvar("mtl_ecart3", "30")
        g_pcvarMtlActive = register_cvar("mtl_active", "1" )

        g_pcvarMtlBombfrags = register_cvar("mtl_bombfrags", "3")

        register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")

        RegisterHam(Ham_Spawn, "player", "CBasePlayer_Spawn_Post", true)
        register_logevent("LogEvent_Round_Start", 2, "1=Round_Start")

        register_clcmd("say /mtl", "ClCmd_mTlHelp", 0, ": affiche l'aide du plugin mTL")
        register_clcmd("/mtl", "ClCmd_mTlHelp", 0, ": affiche l'aide du plugin mTL")

        register_concmd("mtl_limit_player", "ConCmd_LimitPlayer", ADMIN_BAN)

        g_iVault = nvault_open("mtl")
    }

    public plugin_end()
    {
        nvault_close(g_iVault)
    }

    public ConCmd_LimitPlayer(id, lvl, cmd)
    {
        if( cmd_access(id, lvl, cmd, 2) )
        {
            new szTarget[32]
            read_argv(1, szTarget, charsmax(szTarget))
            #if defined __TEST
            new iPlayer = cmd_target(id, szTarget, CMDTARGET_ALLOW_SELF)
            #else
            new iPlayer = cmd_target(id, szTarget, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS)
            #endif
            new szLimitation[32]
            if( iPlayer )
            {
                new szSteamId[32], iLimit
                get_user_authid(iPlayer, szSteamId, charsmax(szSteamId))
                if( read_argc() == 2 )
                {
                    if( (iLimit = nvault_get(g_iVault, szSteamId)) )
                    {
                        switch( iLimit )
                        {
                            case No_Limitation :copy(szLimitation, charsmax(szLimitation), "None")
                            case Guns_Limit :copy(szLimitation, charsmax(szLimitation), "Guns")
                            case UspGlock_Limit :copy(szLimitation, charsmax(szLimitation), "Glock & Usp")
                            case Knife_Limit :copy(szLimitation, charsmax(szLimitation), "Knife")
                        }
                        client_print(id, print_console, "Player <%s><%s> is PERM limitated to %s",
                        szTarget, szSteamId, szLimitation)
                    }
                    else
                    {
                        client_print(id, print_console, "Player <%s><%s> is not PERM limitated", szTarget, szSteamId)
                    }
                }
                else
                {
                    new szLimit[2]
                    read_argv(2, szLimit, charsmax(szLimit))
                    iLimit = clamp(str_to_num(szLimit), No_Limitation, Knife_Limit)

                    if( g_iPermLimited[iPlayer] == iLimit )
                    {
                        client_print(id, print_console, "Player <%s><%s> PERM limit setting is already %d", szTarget, szSteamId, g_iPermLimited[iPlayer])
                        return PLUGIN_HANDLED
                    }

                    if( !iLimit )
                    {
                        nvault_remove(g_iVault, szSteamId)
                    }
                    else
                    {
                        formatex(szLimit, charsmax(szLimit), "%d", iLimit)
                        nvault_set(g_iVault, szSteamId, szLimit)
                    }
                    g_iPermLimited[iPlayer] = iLimit

                    CheckUserLimit(iPlayer)

                    if( is_user_alive(iPlayer) )
                    {
                        CheckUserWeapon(iPlayer, get_user_weapon(iPlayer))
                    }
                    new szAdminName[32], szAdminAuthid[32], szPlayerName[32]
                   
                    switch( iLimit )
                    {
                        case No_Limitation :copy(szLimitation, charsmax(szLimitation), "None")
                        case Guns_Limit :copy(szLimitation, charsmax(szLimitation), "Guns")
                        case UspGlock_Limit :copy(szLimitation, charsmax(szLimitation), "Glock & Usp")
                        case Knife_Limit :copy(szLimitation, charsmax(szLimitation), "Knife")
                    }
                   
                    get_user_name(iPlayer, szPlayerName, charsmax(szPlayerName))
                    get_user_name(id, szAdminName, charsmax(szAdminName))

                    if( id )
                    {
                        get_user_authid(id, szAdminAuthid, charsmax(szAdminAuthid))
                    }
                    log_amx("Admin %s<%s> has set %s<%s> limitation to %s", szAdminName, szAdminAuthid, szPlayerName, szSteamId, szLimitation)
                    show_activity_key("MTL_PERM", "MTL_PERM", szAdminName, szPlayerName, szLimitation)
                    console_print(id, "%L", id, "MTL_PERM_CONSOLE",  szPlayerName, szLimitation)
                }
            }
        }
        return PLUGIN_HANDLED
    }

    Cache_Cvars_Values()
    {
        g_iEcarts = get_pcvar_num(g_pcvarMtlEcart)
        g_iEcarts2 = get_pcvar_num(g_pcvarMtlEcart2)
        g_iEcarts3 = get_pcvar_num(g_pcvarMtlEcart3)

        new iTemp
        if( g_iEcarts2 < g_iEcarts )
        {
            iTemp = g_iEcarts2
            g_iEcarts2 = g_iEcarts
            g_iEcarts = iTemp
        }
        if( g_iEcarts3 < g_iEcarts2 )
        {
            iTemp = g_iEcarts3
            g_iEcarts3 = g_iEcarts2
            g_iEcarts2 = iTemp
        }
    }

    public plugin_cfg()
    {
        Cache_Cvars_Values()
    }

    public client_authorized(id)
    {
        new szSteamId[32]
        get_user_authid(id, szSteamId, charsmax(szSteamId))
        g_iLimited[id] = No_Limitation
        g_iPermLimited[id] = nvault_get(g_iVault, szSteamId)
    }

    public LogEvent_Round_Start()
    {
        if( get_pcvar_num( g_pcvarMtlActive ) )
        {
            Cache_Cvars_Values()
               
            if(!random(4))
            {
                set_hudmessage(85, 95, 255, -1.0, 0.10, 1, 1.0, 7.0, 0.1, 0.2, -1)
                show_hudmessage(0, "%L", LANG_PLAYER, "MTL_ADV", MTL_VERSION)
            }
        }
    }

    public CBasePlayer_Spawn_Post(id)
    {
        if( !is_user_alive(id) || !get_pcvar_num( g_pcvarMtlActive ) || is_user_bot( id ) )
            return

        if( !(g_iLimited[id] = CheckUserLimit(id)) )
        {
            return
        }

        set_hudmessage(85, 95, 255, -1.0, 0.4, 1, 1.0, 7.0, 0.1, 0.2, -1)  

        switch( g_iLimited[id] )
        {
            case Guns_Limit:
            {
                show_hudmessage(id, "%L", id, "MTL_LIM1", g_iEcarts )
            }
            case UspGlock_Limit:
            {
                show_hudmessage(id, "%L", id, "MTL_LIM2", g_iEcarts2 )

                new weapons = pev(id, pev_weapons)
                if( ~weapons & USP_GLOCK_BITSUM )
                {
                    for(new i; i<sizeof(g_iGunsIdsList); i++)
                    {
                        if( weapons & (1<<g_iGunsIdsList[i]) )
                        {
                            engclient_cmd(id, "drop", g_szGunsList[i])
                        }
                    }
                    new CsTeams:iTeam = cs_get_user_team(id)
                    switch( iTeam )
                    {
                        case CS_TEAM_T:
                        {
                            give_item(id, "weapon_glock18")
                            if( cs_get_user_bpammo(id, CSW_GLOCK18) < 40 )
                            {
                                cs_set_user_bpammo(id, CSW_GLOCK18, 40)
                            }
                        }
                        case CS_TEAM_CT:
                        {
                            give_item(id, "weapon_usp")
                            if( cs_get_user_bpammo(id, CSW_USP) < 24 )
                            {
                                cs_set_user_bpammo(id, CSW_USP, 24)
                            }
                        }
                    }
                }
            }
            case Knife_Limit:
            {
                if( user_has_weapon(id, CSW_KNIFE) )
                {
                    give_item(id, "weapon_knife")
                }
                engclient_cmd(id, "weapon_knife")
                set_pdata_cbase(id, m_pClientActiveItem, FM_NULLENT)
            }
        }

        CheckUserWeapon(id, get_user_weapon(id))
    }

    public Event_CurWeapon(id)
    {
        if(!g_iLimited[id] || !get_pcvar_num(g_pcvarMtlActive) || is_user_bot(id ))
        {
            return
        }

        CheckUserWeapon(id, read_data(2))
    }

    CheckUserWeapon(id, iWeapon)
    {
        new bitsum = NEVER_LIMITED_BITSUM
        new bitWeaponMask = 1<<iWeapon
        switch( g_iLimited[id] )
        {
            case Guns_Limit:
            {
                bitsum |= GUNS_BITSUM
            }
            case UspGlock_Limit:
            {
                bitsum |= USP_GLOCK_BITSUM
            }
            // case Knife_Limit:
            // {
                // bitsum |= 1<<CSW_KNIFE
            // }
        }
        if( iWeapon && ~bitsum & bitWeaponMask )
        {
            if( ~NODROP_BITSUM & bitWeaponMask )
            {
                new szWeapon[20]
                if( get_weaponname(iWeapon, szWeapon, charsmax(szWeapon)) )
                {
                    engclient_cmd( id, "drop", szWeapon)
                }
            }
            else
            {
                engclient_cmd(id, "weapon_knife")
                set_pdata_cbase(id, m_pClientActiveItem, FM_NULLENT)
            }
        }
    }

    CheckUserLimit(id)
    {
        new iDiff = get_user_frags(id) - cs_get_user_deaths(id)
        new iPermLimit = g_iPermLimited[id]
        if( iPermLimit == Knife_Limit || iDiff >= g_iEcarts3 )
        {
            return Knife_Limit
        }
        else if( iPermLimit == UspGlock_Limit || iDiff >= g_iEcarts2 )
        {
            return UspGlock_Limit
        }
        else if( iPermLimit == Guns_Limit || iDiff >= g_iEcarts )
        {
            return Guns_Limit
        }
        return No_Limitation
    }

    public bomb_defused( iDefuser )
    {
        CheckBombFrags( iDefuser )
    }

    public bomb_explode( iPlanter )
    {
        CheckBombFrags( iPlanter )
    }

    CheckBombFrags( id )
    {
        if( get_pcvar_num( g_pcvarMtlActive ) && is_user_connected(id) )
        {
            new iFragsToGive = get_pcvar_num(g_pcvarMtlBombfrags) - 3

            if( iFragsToGive )
            {
                set_user_frags(id, get_user_frags(id) + iFragsToGive)
            }
        }
    }

    public ClCmd_mTlHelp(id)
    {
        if( !get_pcvar_num( g_pcvarMtlActive ) )
        {
            return PLUGIN_HANDLED
        }
           
        static szBuffer[1536]
        new szTitle[32]
        new n

        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "<html><head><STYLE type=^"text/css^">")
        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "BODY{font-family: ^"Times New Roman^", Arial;background: black; color: white}")
        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "A:link { color: white }A:visited { color: white }A:active { color: white }</STYLE></head>")

        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "<body><font face=Tahoma size=2pt><h1><font color=red>mT Limiter</font></h1><br>")
        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "%L <b><font color=green>%d</font></b><br>", id, "MTL_MOTD1", g_iEcarts)
        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "%L<br><br>", id, "MTL_MOTD2")

        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "%L <b><font color=orange>%d</font></b><br>", id, "MTL_MOTD1", g_iEcarts2)
        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "%L<br><br>", id, "MTL_MOTD3")

        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "%L <b><font color=red>%d</font></b><br>", id, "MTL_MOTD1", g_iEcarts3)
        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "%L<br><br>", id, "MTL_MOTD4")

        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "<br><br><i>%L</i></body></html>", id, "MTL_MOTD5", MTL_VERSION)

        formatex(szTitle, charsmax(szTitle), "%L", id, "MTL_MOTD6")
          show_motd(id, szBuffer, szTitle)
        return PLUGIN_HANDLED
    }
     
    Tags:
  2. gorilliaz.13

    gorilliaz.13 Membre

    Tous es écrie , la limitation est permanente , fait les test sur toi même sur un serveur War ou de test.

    Pour la mettre dans le menu Client commande fichier clcmds.ini

    "MTL limit player" "mtl_limit_player #%userid% talimite " "b" "u"
     
  3. MEGALODON

    MEGALODON Membre

    ok, je vais tester
    juste pour savoir, pour que sa reste permanent. c'est pas censé s’éditer dans un fichier.cfg ou autre?
     
  4. gorilliaz.13

    gorilliaz.13 Membre

  5. MEGALODON

    MEGALODON Membre

    je n'avais pas de fichier vault.ini donc je l'ai créé

    j'ai tapé sa dans la console:
    ] mtl_limit_player "STEAM_0:1:753407" "cut"

    la console a renvoyé sa:
    Player <STEAM_0:1:753407><STEAM_0:1:753407> PERM limit setting is already 0

    mon amxx.cfg:
    mtl_active "1"
    mtl_ecart "10"
    mtl_ecart2 "15"
    mtl_ecart3 "20"
    mtl_bombfrags "1"

    amx list:
    [ 28] mT Limiter 1.2.5 Iznogood/ConnorM mtl.amxx running

    j'ai mi sa dans mon clcmds.ini, j'ai la commande qui s'affiche dans le menu admin mais fonctionne pas:
    "MTL limit player" "mtl_limit_player #%userid% talimite " "b" "u"
     
  6. gorilliaz.13

    gorilliaz.13 Membre

    Vault.ini ce trouve dans le dossier data ne modifie rien dans ce fichier sauf si tu sais ce que tu fais !

    "MTL limit player" "mtl_limit_player #%userid% talimite"

    talimite = un chiffre !

    mtl_limit_player "STEAM_0:1:753407" "unchiffre"

    mtl_limit_player <steamid/name/#userid> <limit>
    0 : enlever la limite
    1 : limiter aux pistolets
    2 : limiter au glock et usp
     
  7. MEGALODON

    MEGALODON Membre

    oui, j'avais oublié mais je m'en suis rappelé aprés coup.

    j'ai testé sa dans le cmds.ini mais quand je choisi une action il ne se passe rien, pourtant sa devrait fonctionné?
    "Retirer limitation" "mtl_limit_player #%userid% 0" "bd" "u"
    "Limitation Pistolets" "mtl_limit_player #%userid% 1" "bd" "u"
    "Limitation Glock/Usp" "mtl_limit_player #%userid% 2" "bd" "u"

    j'ai vérifié les modules et ils sont tous ok.

    la commande mtl_limit_player "STEAM_0:0:34184464" "1" fonctionne trés bien!! mais pas via cmds, dois léditer autrement ou ailleur ?
    --- Message fusionné : 21 Décembre 2014 ---
    autant pour moi, j'ai confondu le cmds avec le clcmds donc sa fonctionne.
    le hic c'est je n'ai pas de message pour dire qui j'ai limité et a quoi?
    et le joueur limité a bien un méssage mais ne dure pas assé longtemps pour le lire.
    merci.
    --- Message fusionné : 23 Décembre 2014 ---
    peut on y remédier?

    j'ai aussi remarqué qu'un joueur limité automatiquement ne peut plus utiliser les gr, smok, he.
    pourtant avant il me semblé que c'était toujours possible avant?
     
    Dernière édition: 20 Décembre 2014
  8. MEGALODON

    MEGALODON Membre

    juste pour marqué comme résolu, j'ai installé la version 1.2.3 qui ne présente pas bug.
    elle n'a que 2 limitation au lieu des 3 mais possede la limitation permanente et fonctionne trés bien.

    Code (Text):
    /* AMX Mod Plugin
    *
    * (c) Copyright 2007, Alban Cotillon
    * This file is provided as is (no warranties).
    *
    * Utilisation :
    * ____________
    *
    * Cvars :
    * mtl_active : 1 pour activer le plugin , 0 pour le désactiver
    * mtl_ecart <nbre> : Nombre entier indiquant l'écart frags/morts pour activer la 1ère restriction (--> pistolets)
    * mtl_ecart2 <nbre> : Nombre entier indiquant l'écart frags/morts pour activer la 2ème restriction (--> glock & usp)
    * mtl_bombfrags : nombre de frags attribués pour l'explosion ou le désamorçage de la bombe (defaut 3)
    *
    * Commandes :
    * /mtl ou say /mtl : Aide
    *
    * mtl_limit_player <steamid/name/#userid> <limit> : limite un joueur de façon permanente
    *
    *
    * __________________________
    */


    #include <amxmodx>
    #include <amxmisc>
    #include <cstrike>
    #include <csx>
    #include <fakemeta>
    #include <fun>
    #include <hamsandwich>
    #include <nvault>

    #define MTL_VERSION "1.2.3"

    #define MAX_PLAYERS 32

    const NODROP_BITSUM = ((1<<CSW_HEGRENADE) | (1<<CSW_SMOKEGRENADE) | (1<<CSW_FLASHBANG) | (1<<CSW_KNIFE) | (1<<CSW_C4))
    const GUNS_BITSUM = ((1<<CSW_USP) | (1<<CSW_GLOCK18) | (1<<CSW_ELITE) | (1<<CSW_FIVESEVEN) | (1<<CSW_DEAGLE) | (1<<CSW_P228))
    const USP_GLOCK_BITSUM = ((1<<CSW_USP) | (1<<CSW_GLOCK18))

    new const g_iGunsIdsList[]  =  {  CSW_DEAGLE   ,    CSW_P228  ,   CSW_ELITE   , CSW_FIVESEVEN }
    new const g_szGunsList[][] = {"weapon_deagle", "weapon_p228", "weapon_elite", "weapon_fiveseven"}

    enum { No_Limitation , Guns_Limit , UspGlock_Limit }

    new g_iLimited[MAX_PLAYERS+1]
    new g_iPermLimited[MAX_PLAYERS+1]

    new g_pcvarMtlActive, g_pcvarMtlEcart, g_pcvarMtlEcart2, g_pcvarMtlBombfrags

    new g_iEcarts, g_iEcarts2

    new g_iVault

    public plugin_init()
    {
        register_plugin("mT Limiter", MTL_VERSION, "Iznogood/ConnorMcLeod")
        register_dictionary("mtl.txt")

        register_cvar("mTl", MTL_VERSION, FCVAR_SERVER|FCVAR_SPONLY) // mTl tracker  

        g_pcvarMtlEcart = register_cvar("mtl_ecart", "10")
        g_pcvarMtlEcart2 = register_cvar("mtl_ecart2", "15")
        g_pcvarMtlActive = register_cvar("mtl_active", "1" )

        g_pcvarMtlBombfrags = register_cvar("mtl_bombfrags", "1")

        register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")

        RegisterHam(Ham_Spawn, "player", "CBasePlayer_Spawn_Post", true)
        register_logevent("LogEvent_Round_Start", 2, "1=Round_Start")

        register_clcmd("say /mtl", "ClCmd_mTlHelp", 0, ": affiche l'aide du plugin mTL")
        register_clcmd("/mtl", "ClCmd_mTlHelp", 0, ": affiche l'aide du plugin mTL")

        register_concmd("mtl_limit_player", "ConCmd_LimitPlayer", ADMIN_BAN)

        g_iVault = nvault_open("mtl")
    }

    public plugin_end()
    {
        nvault_close(g_iVault)
    }

    public ConCmd_LimitPlayer(id, lvl, cmd)
    {
        if( cmd_access(id, lvl, cmd, 2) )
        {
            new szTarget[32]
            read_argv(1, szTarget, charsmax(szTarget))
            #if defined __TEST
            new iPlayer = cmd_target(id, szTarget, CMDTARGET_ALLOW_SELF)
            #else
            new iPlayer = cmd_target(id, szTarget, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS)
            #endif
            if( iPlayer )
            {
                new szSteamId[32], iLimit
                get_user_authid(iPlayer, szSteamId, charsmax(szSteamId))
                if( read_argc() == 2 )
                {
                    if( (iLimit = nvault_get(g_iVault, szSteamId)) )
                    {
                        client_print(id, print_console, "Player <%s><%s> is PERM limitated to %s",
                        szTarget, szSteamId, iLimit == Guns_Limit ? "Guns" : "Glock & Usp")
                    }
                    else
                    {
                        client_print(id, print_console, "Player <%s><%s> is not PERM limitated", szTarget, szSteamId)
                    }
                }
                else
                {
                    new szLimit[2]
                    read_argv(2, szLimit, charsmax(szLimit))
                    iLimit = clamp(str_to_num(szLimit), No_Limitation, UspGlock_Limit)

                    if( g_iPermLimited[iPlayer] == iLimit )
                    {
                        client_print(id, print_console, "Player <%s><%s> PERM limit setting is already %d", szTarget, szSteamId, g_iPermLimited[iPlayer])
                        return PLUGIN_HANDLED
                    }

                    if( !iLimit )
                    {
                        nvault_remove(g_iVault, szSteamId)
                    }
                    else
                    {
                        formatex(szLimit, charsmax(szLimit), "%d", iLimit)
                        nvault_set(g_iVault, szSteamId, szLimit)
                    }
                    g_iPermLimited[iPlayer] = iLimit

                    CheckUserLimit(iPlayer)

                    if( is_user_alive(iPlayer) )
                    {
                        CheckUserWeapon(iPlayer, get_user_weapon(iPlayer))
                    }
                    new szAdminName[32], szAdminAuthid[32], szPlayerName[32]
                    new szLimitation[32]
                    switch( iLimit )
                    {
                        case No_Limitation :copy(szLimitation, charsmax(szLimitation), "None")
                        case Guns_Limit :copy(szLimitation, charsmax(szLimitation), "Guns")
                        case UspGlock_Limit :copy(szLimitation, charsmax(szLimitation), "Glock & Usp")
                    }
                   
                    get_user_name(iPlayer, szPlayerName, charsmax(szPlayerName))
                    get_user_name(id, szAdminName, charsmax(szAdminName))

                    if( id )
                    {
                        get_user_authid(id, szAdminAuthid, charsmax(szAdminAuthid))
                    }
                    log_amx("Admin %s<%s> has set %s<%s> limitation to %s", szAdminName, szAdminAuthid, szPlayerName, szSteamId, szLimitation)
                    show_activity_key("MTL_PERM", "MTL_PERM", szAdminName, szPlayerName, szLimitation)
                    console_print(id, "%L", id, "MTL_PERM_CONSOLE",  szPlayerName, szLimitation)
                }
            }
        }
        return PLUGIN_HANDLED
    }

    Cache_Cvars_Values()
    {
        g_iEcarts = get_pcvar_num(g_pcvarMtlEcart)
        g_iEcarts2 = get_pcvar_num(g_pcvarMtlEcart2)
        if( g_iEcarts2 < g_iEcarts )
        {
            new iTemp = g_iEcarts2
            g_iEcarts2 = g_iEcarts
            g_iEcarts = iTemp
        }
    }

    public plugin_cfg()
    {
        Cache_Cvars_Values()
    }

    public client_authorized(id)
    {
        new szSteamId[32]
        get_user_authid(id, szSteamId, charsmax(szSteamId))
        g_iLimited[id] = No_Limitation
        g_iPermLimited[id] = nvault_get(g_iVault, szSteamId)
    }

    public LogEvent_Round_Start()
    {
        if( get_pcvar_num( g_pcvarMtlActive ) )
        {
            Cache_Cvars_Values()
               
            if(!random(4))
            {
                set_hudmessage(85, 95, 255, -1.0, 0.10, 1, 1.0, 7.0, 0.1, 0.2, -1)
                show_hudmessage(0, "%L", LANG_PLAYER, "MTL_ADV", MTL_VERSION)
            }
        }
    }

    public CBasePlayer_Spawn_Post(id)
    {
        if( !is_user_alive(id) || !get_pcvar_num( g_pcvarMtlActive ) || is_user_bot( id ) )
            return

        if( !(g_iLimited[id] = CheckUserLimit(id)) )
        {
            return
        }

        set_hudmessage(85, 95, 255, -1.0, 0.4, 1, 1.0, 7.0, 0.1, 0.2, -1)  
        if( g_iLimited[id] == Guns_Limit )
        {
            show_hudmessage(id, "%L", id, "MTL_LIM1", g_iEcarts )
        }
        else  
        {      
            show_hudmessage(id, "%L", id, "MTL_LIM2", g_iEcarts2 )             

            new weapons = pev(id, pev_weapons)
            if( ~weapons & USP_GLOCK_BITSUM )
            {
                for(new i; i<sizeof(g_iGunsIdsList); i++)
                {
                    if( weapons & (1<<g_iGunsIdsList[i]) )
                    {
                        engclient_cmd(id, "drop", g_szGunsList[i])
                    }
                }
                new CsTeams:iTeam = cs_get_user_team(id)
                switch( iTeam )
                {
                    case CS_TEAM_T:
                    {
                        give_item(id, "weapon_glock18")
                        if( cs_get_user_bpammo(id, CSW_GLOCK18) < 40 )
                        {
                            cs_set_user_bpammo(id, CSW_GLOCK18, 40)
                        }
                    }
                    case CS_TEAM_CT:
                    {
                        give_item(id, "weapon_usp")
                        if( cs_get_user_bpammo(id, CSW_USP) < 24 )
                        {
                            cs_set_user_bpammo(id, CSW_USP, 24)
                        }
                    }
                }
            }
        }

        CheckUserWeapon(id, get_user_weapon(id))
    }

    public Event_CurWeapon(id)
    {
        if(!g_iLimited[id] || !get_pcvar_num(g_pcvarMtlActive) || is_user_bot(id ))
        {
            return
        }

        CheckUserWeapon(id, read_data(2))
    }

    CheckUserWeapon(id, iWeapon)
    {
        if( iWeapon && !(  ( (g_iLimited[id]==Guns_Limit ? GUNS_BITSUM : USP_GLOCK_BITSUM) | NODROP_BITSUM ) & (1<<iWeapon) )   )
        {
            new szWeapon[20]
            get_weaponname(iWeapon, szWeapon, charsmax(szWeapon))
            engclient_cmd( id, "drop", szWeapon)
        }
    }

    CheckUserLimit(id)
    {
        new iDiff = get_user_frags(id) - cs_get_user_deaths(id)
        new iPermLimit = g_iPermLimited[id]
        if( iPermLimit == UspGlock_Limit || iDiff >= g_iEcarts2 )
        {
            return UspGlock_Limit
        }
        else if( iPermLimit == Guns_Limit || iDiff >= g_iEcarts )
        {
            return Guns_Limit
        }
        return No_Limitation
    }

    public bomb_defused( iDefuser )
    {
        CheckBombFrags( iDefuser )
    }

    public bomb_explode( iPlanter )
    {
        CheckBombFrags( iPlanter )
    }

    CheckBombFrags( id )
    {
        if( get_pcvar_num( g_pcvarMtlActive ) && is_user_connected(id) )
        {
            new iFragsToGive = get_pcvar_num(g_pcvarMtlBombfrags) - 3

            if( iFragsToGive )
            {
                set_user_frags(id, get_user_frags(id) + iFragsToGive)
            }
        }
    }

    public ClCmd_mTlHelp(id)
    {
        if( !get_pcvar_num( g_pcvarMtlActive ) )
        {
            return PLUGIN_HANDLED
        }
           
        static szBuffer[1536]
        new szTitle[32]
        new n

        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "<html><head><STYLE type=^"text/css^">")
        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "BODY{font-family: ^"Times New Roman^", Arial;background: black; color: white}")
        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "A:link { color: white }A:visited { color: white }A:active { color: white }</STYLE></head>")

        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "<body><font face=Tahoma size=2pt><h1><font color=red>mT Limiter</font></h1><br>")
        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "%L <b><font color=orange>%d</font></b><br>", id, "MTL_MOTD1", g_iEcarts)
        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "%L<br><br>", id, "MTL_MOTD2")

        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "%L <b><font color=red>%d</font></b><br>", id, "MTL_MOTD1", g_iEcarts2)
        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "%L<br><br>", id, "MTL_MOTD4")

        n += formatex(szBuffer[n], charsmax(szBuffer)-n, "<br><br><i>%L</i></body></html>", id, "MTL_MOTD5", MTL_VERSION)

        formatex(szTitle, charsmax(szTitle), "%L", id, "MTL_MOTD6")
          show_motd(id, szBuffer, szTitle)
        return PLUGIN_HANDLED
    }
     
  9. Arkshine

    Arkshine Le Docteur

    T'as dû mal testé, parce qu'en regardant le code, y'a quasiment aucune différence au niveau de la sauvegarde/chargement des données.
     
  10. MEGALODON

    MEGALODON Membre

    pourtant ,je t'assure qu'avec la 1.2.5, on a parfois des bugs pour prendre le deagle quand on est limité deagle permanent
    et on n'arrivé plus a acheter les grenades.
    a moins qu'il y est eu conflit avec un autre plugin mais dés que j'ai installé la 1.2.3 ça a bien fonctionné direct.
    on était plusieurs sur le serveur a le constater.
     

Partager cette page

Chargement...
Chargement...