|
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
|

05-12-2010
, 00:29
Re: Loop
|
#1
|
EDIT: Wow, this is confusing.
EDIT2:
I would do something like this to not have the loop when I don't need it:
PHP Code:
/*
mixm_nosaytype :
* 0 : Hablan los admins y muestra say /pausa.
* 1 : Hablan los admins y no muestra say /pausa.
* 2 : Hablan los TL's/Admins y muestra say /pausa.
* 3 : Hablan los TL's/Admins y no muestra say /pausa.
* 4 : Hablan los admins,permite hablar por freezetime y muestra say /pausa.
* 5 : Hablan los admins,permite hablar por freezetime y no muestra say /pausa.
* 6 : Hablan los TL's/Admins,permite hablar por freezetime y muestra say /pausa.
* 7 : Hablan los TL's/Admins,permite Hablar por freezetime y no muestra say /pausa.
*/
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Chat Blocker"
#define VERSION "1.0"
#define AUTHOR "#8 SickneSS"
/* Chat Blocker */
new const CanSay[][] =
{
"[TL]",
"[CPT]",
"[CAPTAIN]"
}
new NoSay
new NoSayType
new pFreezetime
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
NoSay = register_cvar("mixm_nosay","0")
NoSayType = register_cvar("mixm_nosaytype","0")
pFreezetime = get_cvar_pointer("mp_freezetime")
register_clcmd("say","HookSay")
register_clcmd("say /nosay","cmdSayNoSay",ADMIN_CVAR,"<Lock/Unlock the chat>")
}
public cmdSayNoSay(id,level,cid) {
if(!cmd_access(id,level,cid,1))
return PLUGIN_HANDLED
new adminname[32]
get_user_name(id, adminname, 31)
set_pcvar_num(NoSay,get_pcvar_num(NoSay) == 0 ? 1 : 0)
client_print(0,print_chat,"El Admin %s %sbloqueo el chat",adminname, get_pcvar_num(NoSay) ? "" : "des")
return PLUGIN_HANDLED
}
public HookSay(id) {
if(!get_pcvar_num(NoSay))
return PLUGIN_CONTINUE
if(get_user_flags(id) & ADMIN_CHAT)
return PLUGIN_CONTINUE
new name[32]
get_user_name(id,name,31)
new said[192]
read_args(said,191)
switch(get_pcvar_num(NoSayType))
{
case 0 :
{
if(containi(said,"/pausa") != -1)
{
client_print(0,print_chat,"El jugador %s,esta pidiendo pausa",name)
return PLUGIN_HANDLED
}
client_print(id,print_chat,"Say Bloqueado")
client_print(id,print_chat,"Solo puedes escribir /pausa,para pedir pausear el juego")
return PLUGIN_HANDLED
}
case 1 :
{
client_print(id,print_chat,"Say Bloqueado")
return PLUGIN_HANDLED
}
case 2 :
{
if( does_containi_tag(name) )
return PLUGIN_CONTINUE
if(containi(said,"/pausa") != -1)
{
client_print(0,print_chat,"El jugador %s,esta pidiendo pausa",name)
return PLUGIN_HANDLED
}
client_print(id,print_chat,"Say Bloqueado")
client_print(id,print_chat,"Solo puedes escribir /pausa,para pedir pausear el juego")
return PLUGIN_HANDLED
}
case 3 :
{
if( does_containi_tag(name) )
return PLUGIN_CONTINUE
client_print(id,print_chat,"Say Bloqueado")
return PLUGIN_HANDLED
}
case 4:
{
if(get_pcvar_float(pFreezetime) <= 0)
{
if(containi(said,"/pausa") != -1)
{
client_print(0,print_chat,"El jugador %s,esta pidiendo pausa",name)
return PLUGIN_HANDLED
}
client_print(id,print_chat,"Say Bloqueado")
client_print(id,print_chat,"Solo puedes escribir /pausa,para pedir pausear el juego")
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
case 5:
{
if(get_pcvar_float(pFreezetime) <= 0)
{
client_print(id,print_chat,"Say Bloqueado")
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
case 6:
{
if( does_containi_tag(name) )
return PLUGIN_CONTINUE
if(get_pcvar_float(pFreezetime) <= 0)
{
if(containi(said,"/pausa") != -1)
{
client_print(0,print_chat,"El jugador %s,esta pidiendo pausa",name)
return PLUGIN_HANDLED
}
client_print(id,print_chat,"Say Bloqueado")
client_print(id,print_chat,"Solo puedes escribir /pausa,para pedir pausear el juego")
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
case 7 :
{
if( does_containi_tag(name) )
return PLUGIN_CONTINUE
if(get_pcvar_float(pFreezetime) <= 0)
{
client_print(id,print_chat,"Say Bloqueado")
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
}
return PLUGIN_HANDLED
}
bool:does_containi_tag(name_to_search[])
{
for(new i = 0; i < sizeof(CanSay); i++)
{
if( containi(name_to_search, CanSay[i]) != -1 )
{
return true
}
}
return false
}
But, then I was thinking that it would be even more efficient if you hook infochanged and check there if they have the tag and have an boolean array for whether or not they have the appropriate tag and only checking the bool instead of looping everytime to search for it.
__________________
Last edited by fysiks; 05-12-2010 at 01:25.
|
|