Raised This Month: $51 Target: $400
 12% 

[review] YAP_READY


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
kwpd
AlliedModders Donor
Join Date: Mar 2009
Location: panama
Old 11-13-2012 , 02:14   [review] YAP_READY
Reply With Quote #1

PHP Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#include <yap_const>
#include <yap_stocks>
#include <yap_natives>
#include <yap_forwards>
#include <yap_modspecific>

#define MAX_PLAYERS 32
#define TASK_TIMEREADY    120.0 // 2 minutos

new const plugin_author[] = "Twilight Suzuka"
new const plugin_name[] = "YAP-READY"
new const plugin_version[] = "2.0.0"

new bool:IsReady[MAX_PLAYERS 1]
new 
pcvarToggle

CREATE_GEN_FORW_ID
(pug_forward_ready);

public 
plugin_init()
{
    
// Rukia: Plugin definition
    
new p_id register_plugin(plugin_name,plugin_version,plugin_author);
    
    
register_dictionary("yap_ready.txt")
    
    
register_clcmd("say .ready""ready_1")
    
register_clcmd("say .listo""ready_1")
    
register_clcmd("say .gaben""ready_1")
    
    
register_clcmd("say_team .ready""ready_1")
    
register_clcmd("say_team .listo""ready_1")
    
register_clcmd("say_team .gaben""ready_1")
    
    
register_concmd("amx_forceready","cmd_forceready",ADMIN_RCON,"<name or #userid> Forces a client to be ready")
    
register_concmd("amx_timeready","check_timeready",ADMIN_RCON,"<name or #userid> Forces a client to be unready")
    
    
    
pug_forward_ready create_gen_forward("pug_all_ready",p_id,get_func_id("pug_ready_handler"))
    
    
//parse_header("BOE-E",pug_header,5)
    
register_event("ResetHUD","pug_keepup_menu","b")
    
    
pcvarToggle register_cvar("ready_toggle""1")
    
    
pug_change_display(get_func_id("pug_ready_display_really") , -1)
}

public 
ready_1(id
{
    new 
said[192]
    
read_args(said,192)
    
set_task(0.1,"ready_up",id)
    
    return 
PLUGIN_CONTINUE
}

public 
ready_2(id
{
    new 
said[192]
    
read_args(said,192)
    
set_task(0.1,"ready_down",id)
    
    return 
PLUGIN_CONTINUE
}

// Rukia: Ready variables
new pug_players_ready[33]
new 
pug_total_ready 0;

// Rukia: make sure we keep up menu as much as possible, so that it updates correctly
public client_connect(id)
{
    
set_task(15.0,"pug_keepup_menu")
}

public 
client_putinserver(id)
{
    
pug_keepup_menu()
    if(
get_pcvar_num(pcvarToggle) && !is_user_hltv(id)) 
    {
        
IsReady[id] = false 
        set_task
(TASK_TIMEREADY"task_kickplayer"id
    }
}

// Rukia: If someone disconnects, we need to take them out of the line up, and make sure that everything is cool
public client_disconnect(id)
{
    if( 
GET_PUG_STAGE() != PUG_STAGE_READY ) return;
    
    if(
pug_players_ready[id]) 
    {
        
pug_players_ready[id] = 0;
        
pug_total_ready--;
    }
    
    
IsReady[id] = false 
    remove_task
(id
    
pug_keepup_menu()
}

// Rukia: Make sure to change HUD when people change names
public client_infochanged(idset_task(0.1,"pug_keepup_menu")

// Rukia: Dynamic native code
public plugin_natives()
{
    
register_native("pug_ready_players","native_pug_ready_players")
    
register_native("register_ready_display","native_register_ready_display")
}

public 
native_pug_ready_players(id,params)
{
    new 
p_id get_param(2)
    
pug_ready_players(get_param(1),(p_id == -1) ? id p_id)
}

public 
native_register_ready_display(id,params)
{
    new 
p_id get_param(2)
    
pug_change_display(get_param(1),(p_id == -1) ? id p_id)
}

public 
cmd_forceready(id,level,cid)
{
    if (!
cmd_access(idlevelcid2) ) return PLUGIN_HANDLED;
    
    static 
victim_arg[32]
    
read_argv(1,victim_arg,31)
    
    if(
equali(victim_arg,"all")) return cmd_force_all_ready(id);
    
    new 
target cmd_target(id,victim_arg,1)
    if (!
target) return PLUGIN_HANDLED
    
    pug_admin_cmd_c
(id,"PugForceReady","PUG_FORCE_READY",target,ready_up(target));
    return 
PLUGIN_HANDLED;
}

public 
cmd_forceunready(id,level,cid)
{
    if (!
cmd_access(idlevelcid2) ) return PLUGIN_HANDLED;
    
    static 
victim_arg[32]
    
read_argv(1,victim_arg,31)
    
    if(
equali(victim_arg,"all")) return cmd_force_all_unready(id);
    
    new 
target cmd_target(id,victim_arg,1)
    if (!
target) return PLUGIN_HANDLED
    
    pug_admin_cmd_c
(id,"PugForceUnReady","PUG_FORCE_UNREADY",target,ready_down(target));
    return 
PLUGIN_HANDLED;
}

public 
cmd_force_all_ready(id)
{
    static 
Players[32]
    new 
playerCounti
    get_players
(PlayersplayerCount"h")
    
    for (
i=0i<playerCounti++) ready_up(Players[i])
    
    
pug_admin_cmd(id,"PugForceAllReady","PUG_FORCE_ALL_READY",1);
    return 
PLUGIN_HANDLED
}

public 
cmd_force_all_unready(id)
{
    static 
Players[32]
    new 
playerCounti
    get_players
(PlayersplayerCount"h")
    
    for (
i=0i<playerCounti++) ready_down(Players[i])
    
    
pug_admin_cmd(id,"PugForceAllUnReady","PUG_FORCE_ALL_UNREADY",1);
    return 
PLUGIN_HANDLED
}

public 
check_timeready(id,level,cid)
{
    if (!
cmd_access(idlevelcid2) ) return PLUGIN_HANDLED;
    
    static 
victim_arg[32]
    
read_argv(1,victim_arg,31)
    
    if(
equali(victim_arg,"all")) return check_all_timeready(id);
    
    new 
target cmd_target(id,victim_arg,1)
    if (!
target) return PLUGIN_HANDLED
    
    
return PLUGIN_HANDLED;
}

public 
check_all_timeready(id)
{
    static 
Players[32]
    new 
playerCounti
    get_players
(PlayersplayerCount"h")
    
    for (
i=0i<playerCounti++) client_putinserver(Players[i])
    
    return 
PLUGIN_HANDLED
}

// Rukia: Ready code

public pug_ready_funcid;
public 
pug_ready_plugin_id;
public 
pug_ready_prev_stage;

// Rukia: save the handler function
pug_ready_players(f_idp_id = -1) {
    if(
GET_PUG_STAGE() == PUG_STAGE_READY) return;
    
pug_ready_funcid f_id;
    
pug_ready_plugin_id p_id;
    
    
pug_start_ready_players()
}

// Rukia: Save state, sub in our own, and start the ready!
public pug_start_ready_players()
{
    if(
GET_PUG_STATUS() != PUG_STATUS_LIVE) return pug_set_pause_call(get_func_id("pug_start_ready_players"));
    
    
pug_ready_prev_stage GET_PUG_STAGE();
    
SET_PUG_STAGE(PUG_STAGE_READY);
    
SET_PUG_STATUS(PUG_STATUS_WAITING);
    
    
arrayset(pug_players_ready,0,33)
    
pug_total_ready 0;
    
    
pug_msg_tmp_empty(0,"PUG_READY_UP")
    
pug_keepup_menu()
    
    return 
1;
}

public 
ready_up(id)
{
    if((
pug_players_ready[id] == 1) || GET_PUG_STATUS() != PUG_STATUS_WAITING || GET_PUG_STAGE() != PUG_STAGE_READY || is_user_hltv(id) )     
    {
        return 
pug_msg_tmp_ready_empty(id,"PUG_READY_READY")
    }
    
    
pug_players_ready[id] = 1;
    
pug_total_ready++;
    
    static 
name[32]
    
get_user_name(id,name,31)
    
    
IsReady[id] = true
    remove_task
(id)
    
    
client_print(0,print_chat,"%s %L",pug_headerLANG_PLAYER"PUG_PLAYER_READYED",name);
    
    
pug_check_ready();
    
    return 
PLUGIN_HANDLED;
}

public 
ready_down(id)
{
    if((
pug_players_ready[id] == 0) || GET_PUG_STATUS() != PUG_STATUS_WAITING || GET_PUG_STAGE() != PUG_STAGE_READY || is_user_hltv(id))
    {
        return 
pug_msg_tmp_ready_empty(id,"PUG_READY_NOTREADY")
    }
    
    
pug_players_ready[id] = 0;
    
pug_total_ready--;
    
    
pug_ready_display(9999.0)
    
    static 
name[32]
    
get_user_name(id,name,31)
    
    
set_task(TASK_TIMEREADY"task_kickplayer"id)
    
    
client_print(0,print_chat,"%s %L",pug_headerLANG_PLAYER"PUG_PLAYER_UNREADYED",name);
    
    return 
PLUGIN_HANDLED;
}

public 
task_kickplayer(id
{
    
server_cmd"kick #%i ^"You must ready up within 2 minutes.^""get_user_userid(id) )
}

public 
pug_keepup_menu()
{
    if(
GET_PUG_STAGE() == PUG_STAGE_READY)
    {
        
pug_ready_display(99999.0)
    }
}

public 
pug_check_ready()
{
    if(
pug_total_ready >= GET_CVAR_MINPLAYERS() )
    {
        
pug_ready_display(1.0)
        
pug_ready()
    }
    else 
pug_ready_display(9999.0)
}

public 
pug_ready_display_funcid
public pug_ready_display_plugin_id

public pug_change_display(f_idp_id)
{
    
pug_ready_display_funcid f_id;
    
pug_ready_display_plugin_id p_id;
    
pug_keepup_menu()
}

// Rukia: NOTE TO DO: Allow for subbing in own ready display in other plugins.
public pug_ready_display(Float:hold_time)
{
    
callfunc_begin_i(pug_ready_display_funcid,pug_ready_display_plugin_id)
    
callfunc_push_float(hold_time)
    
callfunc_end()
}

public 
pug_ready_display_really(Float:hold_time)
{
    static 
readys[1056], notreadys[1056], name[32]
    
    
readys[0] = '^0'
    
notreadys[0] = '^0'
    
    
static Players[32]
    new 
playerCountiplayer
    get_players
(PlayersplayerCount"ch")
    for (
i=0i<playerCounti++)
    {
        
player Players[i]
        
get_user_name(player,name,31)
        
        if(
pug_players_ready[player]) format(readys,1054,"%s%s^n",readys,name)
        else 
format(notreadys,1054,"%s%s^n",notreadys,name)
    }
    
    new 
minplayers GET_CVAR_MINPLAYERS()
    
    
set_hudmessage(025500.760.0900.0hold_time0.00.03)
    
show_hudmessage(0,"Players Not Ready:",pug_get_players() - pug_total_ready,minplayers )
    
    
set_hudmessage(025500.760.5400.0hold_time0.00.02)
    
show_hudmessage(0,"Players Ready:",pug_total_ready,minplayers)
    
    
set_hudmessage(2552552250.760.5800.0hold_time0.00.01)
    
show_hudmessage(0,readys,1055)
    
    
set_hudmessage(2552552250.760.1300.0hold_time0.00.04)
    
show_hudmessage(0,notreadys,1055)
}

// Rukia: We are ready to go! Tell everyone!
public pug_ready()
{
    if(
GET_PUG_STAGE() != PUG_STAGE_READY) return 0;
    else if(
GET_PUG_STATUS() != PUG_STATUS_WAITING) return pug_set_pause_call(get_func_id("pug_ready"));
        
    
execute_gen_forward(pug_forward_ready)
    return 
1;
}

// Rukia: Restore state, tell everyone we are ready, and call the handler function!
public pug_ready_handler()
{
    if(
GET_PUG_STATUS() != PUG_STATUS_WAITING) return pug_set_pause_call(get_func_id("pug_ready_handler"));
    
    
SET_PUG_STATUS(PUG_STATUS_LIVE);
    
SET_PUG_STAGE(pug_ready_prev_stage);
    
    
callfunc_begin_i(pug_ready_funcid,pug_ready_plugin_id)
    
callfunc_end()
    
    return 
1;

__________________
kwpd is offline
Mordekay
Squirrel of Fortune
Join Date: Apr 2006
Location: Germany
Old 11-13-2012 , 12:35   Re: [review] YAP_READY
Reply With Quote #2

Code:
register_dictionary("yap_ready.txt")
Where is the lang file?
__________________

Mordekay is offline
kwpd
AlliedModders Donor
Join Date: Mar 2009
Location: panama
Old 11-13-2012 , 20:57   Re: [review] YAP_READY
Reply With Quote #3

http://forums.alliedmods.net/showthread.php?t=62849
__________________
kwpd is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 23:44.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode