admin_gag and ul

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
Post Reply
User avatar
nuodas159
Flooderis arba specialistas
Posts: 522
Joined: 2010 Sep 03 15:30
Skype: nuodas159
Location: SunCity

admin_gag and ul

Post by nuodas159 »

Gal galite padaryti ,kad uzgagini zmogu 10min reconekta padaro ir vel yra ungaged reikia padaryti ,kad butu uzgagintas ir veliau praejus 10min butu ungaged. +karma

Code: Select all

/* Admin Gag CommandAbout&#058;This plugin allows you to gag players from using say_team,say or voicecomm. It also echos admin acctions based on amx_show_activity. The plugin can also block gagged clients from changing their nick. Admins with immunity will not be executed on, unless their executing on themself Usage:amx_gag <nick/userid> <flags (a/b/c)> <time in seconds> // lets you control what you want to gagamx_gag <nick/userid>  <time in seconds> // Will automaticly add the abc flag.amx_gag <nick/userid>    // Will add abc flags, and 600 secounds gag.amx_gag <nick/userid> <flags>amx_ungag <nick/userid> // Will remove all "gags" Modules required:Engine FAQ)Q) Can i mute voicecomm?A) Yes, that should be on by defualt. But you can make sure "#define VoiceCommMute 1" Q) Is there any way i can disable the engine module and still run the plugin?A) yes, "#define VoiceCommMute 0". Plugin forum thread: http://www.amxmodx.org/forums/viewtopic.php?t=463  Credits:Ops in #AMXmod @ Quakenet for alot of help ( + AssKicker & CheesyPeteza ) This plugin is heavly based on the work of tcquest78 in his gag plugin http://djeyl.net/forum/index.php?showtopic=4962Code for Namechange block code was taken from Olo`s one_name plugin. */#define VoiceCommMute 1        // 0 = Disabled ( no extra module required ) | 1 = Voicecomm muteing enabled. ( requires engine module)#define BlockNameChange 1    // 0 = Disabled | 1 = Block namechange on gagged clients#define LogAdminActions 1    // 0 = Disabled | 1 = Admin actions will be logged#define DefaultGagTime 600.0    // The std gag time if no other time was entered. ( this is 10 min ), Remember the value MUST contain a .0#define PlaySound 1        // 0 = Disabled | 1 = Play a sound to gagged clients when their trying to talk#define GagReason 1        // 0 = Disabled | 1 = Gagged clients can see why there where gagged when they try to talk#define MaxPlayers 32#define AllowOtherPlugin2Interface 1 #include <amxmodx>#include <amxmisc>#include <engine>#include <nvault> #define MAX_PLAYERS 32#define INTERVAL 60 new g_id[MAX_PLAYERS+1][32]new g_name[MAX_PLAYERS+1][32]new g_bot[MAX_PLAYERS+1] new nv_name[] = "names"    //nvault database name for namesnew nv_id[] = "ids"    //nvault database name for idsnew g_GagPlayers[MaxPlayers+1]    // Used to check if a player is gagged#if GagReason == 1new gs_GagReason[MaxPlayers+1][48]#endif public plugin_init() {     register_plugin("Admin Gag","1.8.3","EKS")     register_clcmd("say","block_gagged")     register_clcmd("say_team","block_gagged")     register_concmd("amx_gag","CMD_GagPlayer",ADMIN_KICK,"<nick or #userid> <a|b|c> <time>")     register_concmd("amx_ungag","CMD_UnGagPlayer",ADMIN_KICK,"<nick or #userid>")      new nv_hnd_name = nvault_open(nv_name)    if(nv_hnd_name == INVALID_HANDLE){        log_amx("Failed to open nVault %s.", nv_name)    }else{        nvault_prune(nv_hnd_name, 0, get_systime()-INTERVAL)        nvault_close(nv_hnd_name)    }     new nv_hnd_id = nvault_open(nv_id)    if(nv_hnd_id == INVALID_HANDLE){        log_amx("Failed to open nVault %s.", nv_id)    }else{        nvault_prune(nv_hnd_id, 0, get_systime()-INTERVAL)        nvault_close(nv_hnd_id)    }}  public client_putinserver(id){    g_bot[id] = is_user_bot(id)    if(g_bot[id])        return    get_user_name(id, g_name[id], 31)    get_user_authid(id, g_id[id],31)    if(check_name(id) & check_id(id)){        new flags = read_flags("abc")        g_GagPlayers[id] = flags        set_task(2.0, "block_gagged", id)        set_task(DefaultGagTime,"task_UnGagPlayer",id)    }else{        return    }} public block_gagged(id){  // This function is what check the say / team_say messages & block them if the client is blocked.    if(!g_GagPlayers[id]) return PLUGIN_CONTINUE // Is true if the client is NOT blocked.    new cmd[5]     read_argv(0,cmd,4)     if ( cmd[3] == '_' )        {         if (g_GagPlayers[id] & 2){ #if GagReason == 1            client_print(id,print_chat,"* You are Gagged For The Following Reason: %s",gs_GagReason[id]) #else            client_print(id,print_chat,"* You Have Been Gagged") #endif #if PlaySound == 1            client_cmd(id,"spk barney/youtalkmuch")#endif            return PLUGIN_HANDLED             }         }     else if (g_GagPlayers[id] & 1)   { #if GagReason == 1            client_print(id,print_chat,"* You Are Gagged For The Following Reason: %s",gs_GagReason[id]) #else            client_print(id,print_chat,"* You Have Been Gagged") #endif#if PlaySound == 1            client_cmd(id,"spk barney/youtalkmuch")#endif        return PLUGIN_HANDLED         }     return PLUGIN_CONTINUE     } public CMD_GagPlayer(id,level,cid) {     if(!cmd_access (id,level,cid,1)) return PLUGIN_HANDLED    new arg[32],VictimID        read_argv(1,arg,31)              // Arg contains Targets nick or Userid    VictimID = cmd_target(id,arg,8)        // This code here tryes to find out the player index. Either from a nick or #userid    if ((get_user_flags(VictimID) & ADMIN_IMMUNITY) && VictimID != id || !cmd_access (id,level,cid,2) ) { return PLUGIN_HANDLED; } // This code is kind of "long", its job is to. Stop actions against admins with immunity, Stop actions action if the user lacks access, or is a bot/hltv    new s_Flags[4],VictimName[32],AdminName[32],flags,ShowFlags[32],CountFlags,s_GagTime[8],Float:f_GagTime     read_argv(2,arg,31)     if (!arg[0]) // This means amx_gag <nick / userid> and no other flag or time was used.    {        f_GagTime = DefaultGagTime        format(s_Flags,7,"abc")    }    else    {        if(contain(arg,"m")!=-1 && contain(arg,"!")==-1) // This means the time was entered in minuts and not seconds        {            copyc(s_GagTime,7,arg, 'm')            f_GagTime = floatstr(s_GagTime) * 60        }        else if(isdigit(arg[0])&& contain(arg,"!")==-1) // The value was entered in seconds        {            format(s_GagTime,7,arg)            f_GagTime = floatstr(s_GagTime)        }        read_argv(3,arg,8)        if (!arg[0])    // No flag has been entered            format(s_Flags,7,"abc")        else if(contain(arg,"!")==-1)        // This means that arg did NOT contain the ! symbot            format(s_Flags,7,arg)        else if(contain(arg,"!")!=-1)        // This means that arg did DOES contain the ! symbot            format(s_Flags,7,"abc")        if (f_GagTime == 0.0)        {            read_argv(2,arg,8)            if(contain(arg,"!")!=-1)                format(s_Flags,3,"abc") // Flag was entered.            else                format(s_Flags,3,arg) // Flag was entered.            f_GagTime = DefaultGagTime        }#if GagReason == 1        new GagReasonFound=0        for(new i=2;i<=4;i++)        {            read_argv(i,arg,31)            if(contain(arg,"!")!=-1)            {                    read_args(arg,31)                new tmp[32]                copyc(tmp,32,arg,33)                copy(gs_GagReason[VictimID],47,arg[strlen(tmp)+1])                GagReasonFound = 1            }        }        if(GagReasonFound == 0)    // If no reason was entered, add the std reason.            format(gs_GagReason[VictimID],47,"You Were Gagged For Not Following The Rules")#endif    }     flags = read_flags(s_Flags) // Converts the string flags ( a,b or c ) into a int    g_GagPlayers[VictimID] = flags #if VoiceCommMute == 1    if(flags & 4) // This code checks if the c flag was used ( reprisented by the number 4 ), If pressent it mutes his voicecomm.        set_speak(VictimID, SPEAK_MUTED)#endif    new TaskParm[1]        // For some reason set_task requires a array. So i make a array :)    TaskParm[0] = VictimID    set_task( f_GagTime,"task_UnGagPlayer",VictimID,TaskParm,1)      CountFlags = 0    if (flags & 1)    {        format(ShowFlags,31,"say")        CountFlags++    }    if (flags & 2)    {        if(CountFlags)            format(ShowFlags,31,"%s / say_team",ShowFlags)        if(!CountFlags)            format(ShowFlags,31,"say_team")    }#if VoiceCommMute != 0    if(flags & 4)    {        if(CountFlags)            format(ShowFlags,31,"%s / voicecomm",ShowFlags)        if(!CountFlags)            format(ShowFlags,31,"voicecomm")            }#endif    get_user_name(id,AdminName,31)    get_user_name(VictimID,VictimName,31)    switch(get_cvar_num("amx_show_activity"))       { #if GagReason == 1        case 2:   client_print(0,print_chat,"ADMIN %s: Has Gagged %s From Speaking For %0.0f Minutes, For: %s ( %s )",AdminName,VictimName,(f_GagTime / 60),gs_GagReason[VictimID],ShowFlags) // debug added           case 1:   client_print(0,print_chat,"ADMIN: Has Gagged %s From Speaking For %0.0f Minutes, For: %s ( %s )",VictimName,(f_GagTime / 60),gs_GagReason[VictimID],ShowFlags) #else        case 2:   client_print(0,print_chat,"ADMIN %s: Has Gagged %s From Speaking For %0.0f Minutes ( %s )",AdminName,VictimName,(f_GagTime / 60),ShowFlags) // debug added           case 1:   client_print(0,print_chat,"ADMIN: Has Gagged %s From Speaking For %0.0f Minutes ( %s )",VictimName,(f_GagTime / 60),ShowFlags) #endif          }    #if LogAdminActions == 1    new parm[5] /*0 = Victim id | 1 = Admin id | 2 = Used to control if its a gag or Ungag | 3 = The gag flags | 4  = Length of the gag */    parm[0] = VictimID    parm[1] = id    parm[2] = 0    parm[3] = flags    parm[4] = floatround(Float:f_GagTime)    LogAdminAction(parm)#endif    return PLUGIN_HANDLED}  public CMD_UnGagPlayer(id,level,cid)   /// Removed gagged player ( done via console command ){    new arg[32],VictimID    read_argv(1,arg,31)              // Arg contains Targets nick        VictimID = cmd_target(id,arg,8)        // This code here tryes to find out the player index. Either from a nick or #userid    if ((get_user_flags(VictimID) & ADMIN_IMMUNITY) && VictimID != id || !cmd_access (id,level,cid,2) ) { return PLUGIN_HANDLED; } // This code is kind of "long", its job is to. Stop actions against admins with immunity, Stop actions action if the user lacks access, or is a bot/hltv     new AdminName[32],VictimName[32]      get_user_name(id,AdminName,31)        // Gets Admin name    get_user_name(VictimID,VictimName,31)     if(!g_GagPlayers[VictimID])        // Checks if player has gagged flag    {        console_print(id,"%s Is Not Gagged & Cannot Be Ungagged.",arg)        return PLUGIN_HANDLED    }    switch(get_cvar_num("amx_show_activity"))       {            case 2:   client_print(0,print_chat,"ADMIN %s: Has Ungagged %s",AdminName,VictimName)            case 1:   client_print(0,print_chat,"ADMIN: Has Ungagged %s",VictimName)       } #if LogAdminActions == 1    new parm[3] /*0 = Victim id | 1 = Admin id | 2 = Used to control if its a gag or Ungag | 3 = The gag flags | 4  = Length of the gag */    parm[0] = VictimID    parm[1] = id    parm[2] = 1    LogAdminAction(parm)#endif    remove_task(VictimID)        // Removes the set_task set to ungag the player    UnGagPlayer(VictimID)        // This is the function that does the actual removal of the gag info    return PLUGIN_HANDLED}  public client_disconnect(id) {     if(g_bot[id])         return      if(g_GagPlayers[id]) // Checks if disconnected player is gagged, and removes flags from his id.    {        new Nick[32];        get_user_name(id,Nick,31)        client_print(0,print_chat,"[AMX] Gagged Player Has Disconnected ( %s )",Nick)        save_data(id)        remove_task(id)        // Removes the set_task set to ungag the player        UnGagPlayer(id)        // This is the function that does the actual removal of the gag info    }}#if BlockNameChange == 1 public client_infochanged(id){    if(g_GagPlayers[id])    {        new newname[32], oldname[32]        get_user_info(id, "name", newname,31)        get_user_name(id,oldname,31)            if (!equal(oldname,newname))        {            client_print(id,print_chat,"* Gagged Clients Cannot Change Their Name")            set_user_info(id,"name",oldname)        }    }    new name[32];    get_user_info(id, "name", name, 31)    if(g_bot[id])        return    if(!equal(g_name[id], name)){   //player changed name        new nv_hnd_name = nvault_open(nv_name)        if(nv_hnd_name == INVALID_HANDLE){            log_amx("Failed to open nVault %s.", nv_name)        }else{            nvault_remove(nv_hnd_name, g_name[id])            nvault_close(nv_hnd_name)        }         copy(g_name[id], 31, name)    }}#endifpublic task_UnGagPlayer(TaskParm[])    // This function is called when the task expires{    new VictimName[32]    get_user_name(TaskParm[0],VictimName,31)    client_print(0,print_chat,"ADMIN: %s Is No Longer Gagged",VictimName)    UnGagPlayer(TaskParm[0])}#if LogAdminActions == 1stock LogAdminAction(parm[]) // This code is what logs the admin actions.{     new VictimName[32],AdminName[32],AdminAuth[35],VictimAuth[35]    get_user_name(parm[1],AdminName,31)    get_user_name(parm[0],VictimName,31)    get_user_authid(parm[1],AdminAuth,34)    get_user_authid(parm[0],VictimAuth,34) #if GagReason == 1    if(parm[2] == 0)        log_amx("Gag: ^"%s<%s>^" Has Gagged %s <%s> for %d ( %d ) Reason: %s",AdminName,AdminAuth,VictimName,VictimAuth,parm[4],parm[3],gs_GagReason[parm[0]])#else    if(parm[2] == 0)        log_amx("Gag: ^"%s<%s>^" Has Gagged %s <%s> for %d ( %d )",AdminName,AdminAuth,VictimName,VictimAuth,parm[4],parm[3])#endif    if(parm[2] == 1)        log_amx("UnGag: ^"%s<%s>^" Has Ungagged %s<%s>",AdminName,AdminAuth,VictimName,VictimAuth)}#endifstock UnGagPlayer(id) // This code is what removes the gag.{ #if VoiceCommMute == 1    if(g_GagPlayers[id] & 4)    // Unmutes the player if he had voicecomm muted.    {        if(get_cvar_num("sv_alltalk") == 1)            set_speak(id, SPEAK_ALL)        else             set_speak(id, SPEAK_NORMAL)    }#endif    g_GagPlayers[id] = 0#if GagReason == 1    setc(gs_GagReason[id],31,0)#endif}#if AllowOtherPlugin2Interface == 1public func_AddGag(id){    g_GagPlayers[id] = 7     new TaskParm[1]        // For some reason set_task requires a array. So i make a array :)    TaskParm[0] = id#if VoiceCommMute == 1    set_speak(id, SPEAK_MUTED)#endif    set_task( DefaultGagTime,"task_UnGagPlayer",id,TaskParm,1)} public save_data(id){    new nv_hnd_name = nvault_open(nv_name)    if(nv_hnd_name == INVALID_HANDLE){        log_amx("Failed to open nVault %s.", nv_name)    }else{        nvault_set(nv_hnd_name, g_name[id], "1")        nvault_close(nv_hnd_name)    }    new nv_hnd_id = nvault_open(nv_id)    if(nv_hnd_id == INVALID_HANDLE){        log_amx("Failed to open nVault %s.", nv_id)    }else{        nvault_set(nv_hnd_id, g_id[id], "1")        nvault_close(nv_hnd_id)    }}  public check_id(id){    new nv_hnd_id = nvault_open(nv_id)    if(nv_hnd_id == INVALID_HANDLE){        log_amx("Failed to open nVault %s.", nv_id)        return 0    }    new time, val[32], result = nvault_lookup(nv_hnd_id, g_id[id], val, 31, time)    if(result && time <= get_systime()-INTERVAL)        result = 0    nvault_close(nv_hnd_id)    return result}  public check_name(id){    new nv_hnd_name = nvault_open(nv_name)    if(nv_hnd_name == INVALID_HANDLE){        log_amx("Failed to open nVault %s.", nv_name)        return 0    }    new time, val[32], result = nvault_lookup(nv_hnd_name, g_name[id], val, 31, time)    if(result && time <= get_systime()-INTERVAL)        result = 0    nvault_close(nv_hnd_name)    return result}  public func_RemoveGag(id){    remove_task(id)        // Removes the set_task set to ungag the player    UnGagPlayer(id)}#endif 
Cia kazkodel neveikai nesuprantu nusipirka viena karta duoda ammo ir paskui antras roundas prasideda ir nebeprideda man reikia ,kad pridetu vienam mepui nu ,kad butu ammo viena mepui +karma

Code: Select all

#include <amxmodx>#include <fakemeta>#include <gunxpmod> new PLUGIN_NAME[]   = "Unlock : Ammo"new PLUGIN_AUTHOR[]     = "xbatista"new PLUGIN_VERSION[]    = "1.0" public plugin_init() {    register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)    register_gxm_item("Ammunicija", "Duoda daugiau kulku", 40) }public gxm_item_enabled(id) {    new clip, ammo;    new weapon = get_user_weapon(id, clip, ammo);    if( weapon != CSW_HEGRENADE && weapon != CSW_SMOKEGRENADE && weapon != CSW_FLASHBANG && weapon != CSW_C4 )    {        fm_set_user_bpammo(id, weapon, ammo + 200);    }}stock fm_set_user_bpammo(id, iWeapon, iAmount) {     new iOffset;     switch(iWeapon)     {         case CSW_AWP: iOffset = 377;         case CSW_SCOUT, CSW_AK47, CSW_G3SG1: iOffset = 378;         case CSW_M249: iOffset = 379;         case CSW_FAMAS, CSW_M4A1, CSW_AUG, CSW_SG550, CSW_GALI, CSW_SG552: iOffset = 380;         case CSW_M3, CSW_XM1014: iOffset = 381;         case CSW_USP, CSW_UMP45, CSW_MAC10: iOffset = 382;         case CSW_FIVESEVEN, CSW_P90: iOffset = 383;         case CSW_DEAGLE: iOffset = 384;         case CSW_P228: iOffset = 385;         case CSW_GLOCK18, CSW_MP5NAVY, CSW_TMP, CSW_ELITE: iOffset = 386;         case CSW_FLASHBANG: iOffset = 387;         case CSW_HEGRENADE: iOffset = 388;         case CSW_SMOKEGRENADE: iOffset = 389;         case CSW_C4: iOffset = 390;         default:return;     }     set_pdata_int(id, iOffset, iAmount); } 
Image

User avatar
hleV
AMX Mod X ekspertai
Posts: 875
Joined: 2011 Apr 02 11:23
Skype: hlev.lt
Location: Šiauliai

Re: admin_gag and ul

Post by hleV »

Duosiu užuominą. Su Trie ir get_gametime().
Image ← RIP best userbar
DISKUSIJA: KIETAS PLUGIN'O UŽSAKOVAS
Privačios pagalbos neteikiu!

User avatar
psychical
Viršininkas
Posts: 2094
Joined: 2011 Mar 12 22:19
Skype: tautvydas11
Location: Linksmakalnis
Contact:

Re: admin_gag and ul

Post by psychical »

hleV wrote:Duosiu užuominą. Su Trie ir get_gametime().
Apie get_gametime visi zino, o ka turi omenyje su Trie?

Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests