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

Help with players menu


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Saint Sinner
Senior Member
Join Date: Feb 2016
Old 02-27-2018 , 09:42   Help with players menu
Reply With Quote #1

If open the menu show me all players duplicate like this:

1 Martin
2 Martin[Offline]
3 Bob
4 Bob[Offline]
5 Jack
6 Jack[Offline]

How can stop that?

Code:
	new menu = menu_create( "\y[\rArena\y]", "choose_playermenu_handler");
	menu_additem(menu, "\r[!]\yUpdate players\r[!]^n\yChallenge a player:", "0", 0);
	new players[32], pnum;
	new szName[32], szTempid[32], Desc[64];
	get_players(players, pnum);
	for (new i; i<pnum; i++)
	{
		Challenged = players[i];
		if (is_user_alive(Challenged) && (Challenger != Challenged))
		{
			get_user_name(Challenged, szName, charsmax(szName));
			formatex(Desc, charsmax(Desc), in_Duel[Challenged] ? "\d%s \y[\rIn Arena\y]" : "%s", szName);
			num_to_str(Challenged, szTempid, charsmax(szTempid));
			menu_additem(menu, Desc, szTempid, 0, g_MenuCallback);
		}
                if(his_offline[Challenged])
                {
                        formatex(Desc,charsmax(Desc), "\y%s \w[\rOffline\w]", szName);
			menu_additem(menu, Desc, szName, 0, g_MenuCallback);
                }
	}
Saint Sinner is offline
InteX01
Senior Member
Join Date: Jan 2017
Old 02-27-2018 , 10:24   Re: Help with players menu
Reply With Quote #2

delete this part
PHP Code:
if(his_offline[Challenged])
{
        
formatex(Desc,charsmax(Desc), "\y%s \w[\rOffline\w]"szName);
    
menu_additem(menuDescszName0g_MenuCallback);


Last edited by InteX01; 02-27-2018 at 10:26.
InteX01 is offline
Adomaz1
Senior Member
Join Date: Feb 2014
Old 02-27-2018 , 12:24   Re: Help with players menu
Reply With Quote #3

Code:
if (is_user_alive(Challenged) && (Challenger != Challenged) && !his_offline[Challenged])
		{
			get_user_name(Challenged, szName, charsmax(szName));
			formatex(Desc, charsmax(Desc), in_Duel[Challenged] ? "\d%s \y[\rIn Arena\y]" : "%s", szName);
			num_to_str(Challenged, szTempid, charsmax(szTempid));
			menu_additem(menu, Desc, szTempid, 0, g_MenuCallback);
		}
Adomaz1 is offline
Natsheh
Veteran Member
Join Date: Sep 2012
Old 02-27-2018 , 12:35   Re: Help with players menu
Reply With Quote #4

PHP Code:
    new menu menu_create"\y[\rArena\y]""choose_playermenu_handler");
    
menu_additem(menu"\r[!]\yUpdate players\r[!]^n\yChallenge a player:""0"0);
    new 
players[32], pnum;
    new 
szName[32], szTempid[32], Desc[64];
    
get_players(playerspnum);
    for (new 
ii<pnumi++)
    {
        
Challenged players[i];
        if (
is_user_alive(Challenged) && (Challenger != Challenged))
        {
            
get_user_name(ChallengedszNamecharsmax(szName));
            
formatex(Desccharsmax(Desc), in_Duel[Challenged] ? "\d%s \y[\rIn Arena\y]" "%s"szName);
            
num_to_str(ChallengedszTempidcharsmax(szTempid));
            
menu_additem(menuDescszTempid0g_MenuCallback);
        }
                else if(
his_offline[Challenged])
                {
                        
formatex(Desc,charsmax(Desc), "\y%s \w[\rOffline\w]"szName);
            
menu_additem(menuDescszName0g_MenuCallback);
                }
    } 
__________________
@Jailbreak Main Mod v2.7.0 100%
@User Tag Prefix 100% done !
@Mystery Box 100% done !
@VIP System 100% done !

Natsheh is offline
Send a message via MSN to Natsheh Send a message via Skype™ to Natsheh
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 02-27-2018 , 12:38   Re: Help with players menu
Reply With Quote #5

__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
Old 02-27-2018, 15:35
D3XT3R
This message has been deleted by D3XT3R. Reason: Nvm already sloved :=)
Saint Sinner
Senior Member
Join Date: Feb 2016
Old 02-27-2018 , 18:11   Re: Help with players menu
Reply With Quote #6




I want to disable challenging offline players

Frank 2 times
Like number 3 it`s good like number 2 shit

Code:
public client_putinserver(id)
{
    his_offline[id] = 0

    return PLUGIN_CONTINUE
}

public toggle_offline(id)
{
    new szName[ 32 ];
    get_user_name( id , szName , charsmax( szName ) );

    switch(his_offline[id])
    {
        case 0:
        {
            his_offline[id] = 1
            client_printc(id, "!g[!tArena!g] !t%s !git`s now !tOffline!", szName);
        }
        default:
        {
            his_offline[id] = 0
            client_printc(id, "!g[!tArena!g] !t%s !git`s now !tOnline!", szName);
        }
    }
}

Code:
public choose_playermenu(Challenger, Challenged)
{
	if (!in_Duel[Challenger] && is_user_alive(Challenger))
	{
		if (Arena1in && Arena2in)
		{
			client_printc(Challenger, "!t[!gArena!t] All the knife duel arenas are in use.");
			return PLUGIN_HANDLED
		}
	}
        if(his_offline[Challenged])
        {
                client_printc(Challenger,"You can't challenge people when you're ^3offline^1.")
                return PLUGIN_HANDLED
        }
	if (in_Duel[Challenger])
	{
		return PLUGIN_HANDLED
	}
	if (!is_user_alive(Challenger))
	{
		return PLUGIN_HANDLED
	}


	new menu = menu_create( "\y[\rArena\y]", "choose_playermenu_handler");
	menu_additem(menu, "\r[!]\yUpdate players\r[!]^n\yChallenge a player:", "0", 0);
	new players[32], pnum;
	new szName[32], szTempid[32], Desc[64];
	get_players(players, pnum);
	for (new i; i<pnum; i++)
	{
		Challenged = players[i];
		if (is_user_alive(Challenged) && (Challenger != Challenged))
		{
			get_user_name(Challenged, szName, charsmax(szName));
			formatex(Desc, charsmax(Desc), in_Duel[Challenged] ? "\d%s \y[\rIn Arena\y]" : "%s", szName);
			num_to_str(Challenged, szTempid, charsmax(szTempid));
			menu_additem(menu, Desc, szTempid, 0, g_MenuCallback);
		}
                if(his_offline[Challenged])
                {
                        formatex(Desc,charsmax(Desc), "\y%s \w[\rOffline\w]", szName);
			menu_additem(menu, Desc, szName, 0, g_MenuCallback);
                }
	}
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(Challenger, menu, 0);
	return PLUGIN_HANDLED
}

Last edited by Saint Sinner; 02-28-2018 at 03:58.
Saint Sinner is offline
Adomaz1
Senior Member
Join Date: Feb 2014
Old 02-28-2018 , 17:06   Re: Help with players menu
Reply With Quote #7

OciX's answer, just add else to your line and it shouldn't double the players

Code:
else if(his_offline[Challenged])
Adomaz1 is offline
Saint Sinner
Senior Member
Join Date: Feb 2016
Old 03-01-2018 , 01:15   Re: Help with players menu
Reply With Quote #8

Quote:
Originally Posted by Adomaz1 View Post
OciX's answer, just add else to your line and it shouldn't double the players

Code:
else if(his_offline[Challenged])
if I add else can not see offline players
Saint Sinner is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 03-01-2018 , 07:26   Re: Help with players menu
Reply With Quote #9

Then what's the problem? You added the yellow color and you're complaining why it's there, or what?!
__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
Saint Sinner
Senior Member
Join Date: Feb 2016
Old 03-01-2018 , 07:44   Re: Help with players menu
Reply With Quote #10

You can try

Code:
#include <amxmodx>
#include <engine>
#include <hamsandwich>
#include <fun>
#include <cstrike>

new const INFO[3][] = 
{ 
	"Knife duels",
        "1.0",
        "Invisible" 
}
#define MAX_PLAYERS 32

new Float:vSizeMin[3], Float:vSizeMax[3], Float:vAngles[3];
new const gModel[] = "models/iwalls.mdl";
new const gCName[] = "info_target";
enum { X, Y, Z };
new bool:in_Duel[MAX_PLAYERS+1];
new g_Challenge[MAX_PLAYERS+1];
new g_Area[MAX_PLAYERS+1] = 0;
new g_DuelK[MAX_PLAYERS+1] = 0;
new g_DuelC[MAX_PLAYERS+1] = 0;
new g_MenuCallback;
new bool:Arena1in = false;
new bool:Arena2in = false;
new bool:Arena3in = false;
new bool:Arena4in = false;
new bool:Arena5in = false;
new bool:Arena6in = false;

new his_offline[33];

public plugin_init() 
{
	register_plugin(INFO[0x00], INFO[0x01], INFO[0x02]);
	register_clcmd("say /kd","choose_playermenu");

        register_clcmd("say /off","toggle_offline");
 
	register_clcmd("say_team /kd","choose_playermenu");
	register_clcmd("say /knifeduel","choose_playermenu");
	register_clcmd("say_team /knifeduel","choose_playermenu");
	g_MenuCallback = menu_makecallback("menuitem_callback");
	RegisterHam(Ham_Touch, "weaponbox", "hamTouchWeapon");
	RegisterHam(Ham_Touch, "armoury_entity", "hamTouchWeapon");
	RegisterHam(Ham_Touch, "weapon_shield", "hamTouchWeapon");
	RegisterHam(Ham_TakeDamage, "player", "TakeDMG");
	RegisterHam(Ham_Killed, "player", "PlayerKilled");
	RegisterHam(Ham_Spawn, "player", "PlayerSpawn", 1);
	set_task(300.0, "Advert", _,_,_, "b");
}
public plugin_precache()
{
	precache_model(gModel);
}

public client_putinserver(id)
{
    his_offline[id] = 0

    return PLUGIN_CONTINUE
}

public toggle_offline(id)
{
    new szName[ 32 ];
    get_user_name( id , szName , charsmax( szName ) );

    switch(his_offline[id])
    {
        case 0:
        {
            his_offline[id] = 1
            client_printc(id, "!g[!tArena!g] !t%s !git`s now !tOffline!", szName);
        }
        default:
        {
            his_offline[id] = 0
            client_printc(id, "!g[!tArena!g] !t%s !git`s now !tOnline!", szName);
        }
    }
}

public client_command(id)
{
        static const szJoinCommand[] = "jointeam";
	static const szJoinCommand1[] = "chooseteam";
        static szCommand[10];
        read_argv(0, szCommand, 9);
        if (equal(szCommand, szJoinCommand)
        && CS_TEAM_T <= cs_get_user_team(id) <= CS_TEAM_CT)
        {
                return PLUGIN_HANDLED;
        }
	if (equal(szCommand, szJoinCommand1))
	{
		return PLUGIN_HANDLED;
	}
        return PLUGIN_CONTINUE;
}  
public Advert()
{
	print_cc(0, "!t[!gKnife Duels!t] By: !gInvisible!t.");
	print_cc(0, "!t[!gKnife Duels!t] Type !g/kd !tor !g/knifeduel !tto open the knife duel menu.");
}
public hamTouchWeapon(id)
{
	return 4;
}
public TakeDMG(victim, idinflictor, attacker, Float:damage, Float:direction[3], tracehandle, damagebits)
{
	if (victim != attacker)
	{
		if (in_Duel[victim] && !in_Duel[attacker])
		{
			return 4;
		}
	}
	return 1;
}
public PlayerKilled(victim, killer, shouldgib)
{
	if (is_user_alive(killer))
	{
		new victimname[32] , attackername[32];
		get_user_name(victim, victimname, 31);
		get_user_name(killer, attackername, 31);
		if (victim != killer && killer != 0 )
		{
			if (in_Duel[killer] && in_Duel[victim])
			{
				if (killer)
				{
					g_DuelK[killer]+=1;
				}
				if (g_Challenge[killer])
				{
					g_DuelC[g_Challenge[killer]]+=1;
				}
			}
		}
		if (in_Duel[killer] && in_Duel[victim])
		{
			if(g_DuelK[killer]<10 && g_DuelC[g_Challenge[killer]]<10)
			{
				if (!g_Challenge[victim])
				{
					set_task(0.1, "GoToSpawn", killer);
					set_task(0.1, "GoToSpawn", g_Challenge[victim]);
				}
				else
				{
					set_task(0.1, "GoToSpawn", g_Challenge[killer]);
					set_task(0.1, "GoToSpawn", victim);
				}
				client_printc(killer, "!t[!gKnife Duels!t] !g%s (!t%i!g) !tvs. !g(!t%i!g) %s!t.", attackername, g_DuelK[killer], g_DuelK[victim], victimname);
				client_printc(victim, "!t[!gKnife Duels!t] !g%s (!t%i!g) !tvs. !g(!t%i!g) %s!t.", victimname, g_DuelK[victim], g_DuelK[killer], attackername);
			}
			else
			{
				if (victim)
				{
					print_cc(0, "!t[!gKnife Duels!t] !g%s (!t%i!g) !tvs. !g(!t%i!g) %s!t. Winner - !g%s",
					attackername,
					g_DuelC[g_Challenge[killer]],
					g_DuelK[victim],
					victimname,
					attackername);
					DisableChecks(victim);
					set_task(0.1, "GoToSpawn", killer);
					set_task(0.1, "GoToSpawn", victim);
				}
				if (g_Challenge[victim])
				{
					print_cc(0, "!t[!gKnife Duels!t] !g%s (!t%i!g) !tvs. !g(!t%i!g) %s!t. Winner - !g%s",
					attackername,
					g_DuelK[killer],
					g_DuelC[g_Challenge[victim]],
					victimname,
					attackername);
					DisableChecks(g_Challenge[victim]);
					set_task(0.1, "GoToSpawn", killer);
					set_task(0.1, "GoToSpawn", victim);
				}
				g_DuelC[killer] = 0;
				g_DuelK[victim] = 0;
                                g_DuelC[victim] = 0;
				g_DuelK[killer] = 0;
			}
		}
	}
}
public PlayerSpawn(id)
{
	if (is_user_alive(id))
	{
		if (in_Duel[id])
		{
			whileinduel(id);
			set_user_health(g_Challenge[id], 35);
		}
	}
	if (is_user_alive(g_Challenge[id]))
	{
		if (in_Duel[g_Challenge[id]])
		{
			whileinduel(g_Challenge[id]);
			set_user_health(id, 35);
		}
	}
}
public whileinduel(id)
{
	switch (g_Area[id])
	{
		case 1:
		{
			set_iAngle(id, Float:{0.0, 0.0, 0.0}, Float:{738, 327, -360});
			set_iAngle(g_Challenge[id], Float:{0.0, 180.0, 0.0}, Float:{1207, 327, -360});
		}
		case 2:
		{
			
			set_iAngle(id, Float:{0.0, 0.0, 0.0}, Float:{738, -2252, -360});
			set_iAngle(g_Challenge[id], Float:{0.0, 180.0, 0.0}, Float:{1207, -2252, -360});
		}
		case 3:
		{
			
			set_iAngle(id, Float:{0.0, 0.0, 0.0}, Float:{1368, 327, -360});
			set_iAngle(g_Challenge[id], Float:{0.0, 180.0, 0.0}, Float:{1847, 327, -360});
		}
		case 4:
		{
			
			set_iAngle(id, Float:{0.0, 0.0, 0.0}, Float:{88, -2252, -360});
			set_iAngle(g_Challenge[id], Float:{0.0, 180.0, 0.0}, Float:{566, -2252, -360});
		}
		case 5:
		{
			
			set_iAngle(id, Float:{0.0, 0.0, 0.0}, Float:{88, 327, -360});
			set_iAngle(g_Challenge[id], Float:{0.0, 180.0, 0.0}, Float:{566, 327, -360});
		}
		case 6:
		{
			set_iAngle(id, Float:{0.0, 0.0, 0.0}, Float:{1368, -2252, -360});
			set_iAngle(g_Challenge[id], Float:{0.0, 180.0, 0.0}, Float:{1847, -2252, -360});
		}
	}
}
public GoToSpawn(killer) {ExecuteHamB(Ham_CS_RoundRespawn, killer);}
public DisableChecks(id)
{	
	if(in_Duel[id])
	{
		if (!g_Area[id])
		{
			switch (g_Area[g_Challenge[id]])
			{
				case 1:
				{
					Arena1in = false;
				}
				case 2:
				{
					Arena2in = false;
				}
				case 3:
				{
					Arena3in = false;
				}
				case 4:
				{
					Arena4in = false;
				}
				case 5:
				{
					Arena5in = false;
				}
				case 6:
				{
					Arena6in = false;
				}
			}
			dArena(g_Area[g_Challenge[id]]);
			g_Area[g_Challenge[id]] = 0;
		}
		else
		{
			switch (g_Area[id])
			{
				case 1:
				{
					Arena1in = false;
				}
				case 2:
				{
					Arena2in = false;
				}
				case 3:
				{
					Arena3in = false;
				}
				case 4:
				{
					Arena4in = false;
				}
				case 5:
				{
					Arena5in = false;
				}
				case 6:
				{
					Arena6in = false;
				}
			}
			dArena(g_Area[id]);	
			g_Area[id] = 0;
		}
		in_Duel[g_Challenge[id]] = false;
		in_Duel[id] = false;
	}
	if(g_Challenge[id])
	{
		g_Challenge[g_Challenge[id]] = 0;
		g_Challenge[id] = 0;
	}
}
public client_disconnect(id)
{
	new cname[32], ccname[32];
	get_user_name(g_Challenge[id], ccname, 31);
	get_user_name(g_Challenge[g_Challenge[id]], cname, 31);
	if (in_Duel[g_Challenge[id]])
	{
		set_task(0.1, "GoToSpawn", g_Challenge[id]);
		client_printc(g_Challenge[id], "!t[!gKnife Duels!t] !g%s !thas disconnected.", cname);
	}
	if (in_Duel[g_Challenge[g_Challenge[id]]])
	{
		set_task(0.1, "GoToSpawn", g_Challenge[g_Challenge[id]]);
		client_printc(g_Challenge[g_Challenge[id]], "!t[!gKnife Duels!t] !g%s !thas disconnected.", ccname);
	}
	g_DuelC[g_Challenge[id]] = 0;
	g_DuelC[id] = 0;
	g_DuelK[g_Challenge[id]] = 0;
	g_DuelK[id] = 0;
	DisableChecks(id);
}
public choose_playermenu(Challenger, Challenged)
{
	if (!in_Duel[Challenger] && is_user_alive(Challenger))
	{
		if (Arena1in && Arena2in)
		{
			client_printc(Challenger, "!t[!gArena!t] All the knife duel arenas are in use.");
			return PLUGIN_HANDLED
		}
	}
        else if(his_offline[Challenged])
        {
                client_printc(Challenger,"You can't challenge people when you're ^3offline^1.")
                return PLUGIN_HANDLED
        }
	if (in_Duel[Challenger])
	{
		return PLUGIN_HANDLED
	}
	if (!is_user_alive(Challenger))
	{
		return PLUGIN_HANDLED
	}


	new menu = menu_create( "\y[\rArena\y]", "choose_playermenu_handler");
	menu_additem(menu, "\r[!]\yUpdate players\r[!]^n\yChallenge a player:", "0", 0);
	new players[32], pnum;
	new szName[32], szTempid[32], Desc[64];
	get_players(players, pnum);
	for (new i; i<pnum; i++)
	{
		Challenged = players[i];
		if (is_user_alive(Challenged) && (Challenger != Challenged))
		{
			get_user_name(Challenged, szName, charsmax(szName));
			formatex(Desc, charsmax(Desc), in_Duel[Challenged] ? "\d%s \y[\rIn Arena\y]" : "%s", szName);
			num_to_str(Challenged, szTempid, charsmax(szTempid));
			menu_additem(menu, Desc, szTempid, 0, g_MenuCallback);
		}
                else if(his_offline[Challenged])
                {
                        formatex(Desc,charsmax(Desc), "\y%s \w[\rOffline\w]", szName);
			menu_additem(menu, Desc, szName, 0, g_MenuCallback);
                }
	}
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(Challenger, menu, 0);
	return PLUGIN_HANDLED
}
public menuitem_callback(Challenger, menu, item)
{
	new data[6], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data, charsmax(data), szName,charsmax(szName), callback);
	new tempid = str_to_num(data);
	if (in_Duel[tempid] || !is_user_alive(tempid))
	{
		return ITEM_DISABLED;
	}
	return ITEM_ENABLED;
}
public choose_playermenu_handler(Challenger, menu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new data[6], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName, charsmax(szName), callback);
	new tempid = str_to_num(data);
	switch(item)
    	{
        	case 0:
        	{
			choose_playermenu(Challenger, Challenger);
		}
	}
	if (is_user_alive(tempid) && !in_Duel[tempid])
	{
		g_Challenge[Challenger] = tempid;
		g_Challenge[tempid] = Challenger;
		Questionm(tempid);
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
public Questionm(Challenged) 
{
	if (is_user_alive(Challenged) && is_user_alive(g_Challenge[Challenged]))
	{
		new szAddItemText[555 char], ChallengerName[32];
		get_user_name(g_Challenge[Challenged], ChallengerName, 31);
		format(szAddItemText, charsmax(szAddItemText), "\y[\rKnife Duels\y]^n\wKnife duel vs. \r%s\w?", ChallengerName);
		new menu = menu_create(szAddItemText, "Questionm_handler")
		menu_additem(menu, "\yYes", "1", 0);
		menu_additem(menu, "\rNo", "2", 0);
		menu_setprop(menu, MPROP_PERPAGE, 0);
		menu_display(Challenged, menu, 0);
		return PLUGIN_HANDLED
	}
	else 
	{ 
		return PLUGIN_HANDLED 
	}
	return PLUGIN_HANDLED
}
public Questionm_handler(Challenged, menu, item)
{	
	new data[6], szName[64], ccname[32], cname[32];
	new access, callback;
	menu_item_getinfo(menu, item, access, data, charsmax(data), szName, charsmax(szName), callback);
	new key = str_to_num(data);
	get_user_name(Challenged, ccname, 31);
	get_user_name(g_Challenge[Challenged], cname, 31);
	switch(key)
	{
		case 1:
		{
			if (in_Duel[g_Challenge[Challenged]])
			{
				if (task_exists(Challenged))
				{
					menu_destroy(menu);
					remove_task(Challenged);
				}
				client_printc(Challenged, "!t[!gKnife Duels!t] !gYou !twere late, !g%s !tis in duel right now.", cname);
				DisableChecks(Challenged);
				return PLUGIN_HANDLED
			}
			if (!is_user_alive(Challenged))
			{
				if (task_exists(Challenged))
				{
					menu_destroy(menu);
					remove_task(Challenged);
				}
				client_printc(Challenged, "!t[!gKnife Duels!t] !gYou !tare !gdead!t.", ccname);
				DisableChecks(Challenged);
				return PLUGIN_HANDLED
			}
			if (!is_user_alive(g_Challenge[Challenged]))
			{
				if (task_exists(Challenged))
				{
					menu_destroy(menu);
					remove_task(Challenged);
				}
				client_printc(Challenged, "!t[!gKnife Duels!t] !g%s !thas !gdied/disconnected!t.", cname);
				DisableChecks(Challenged);
				return PLUGIN_HANDLED
			}
			if (task_exists(Challenged))
			{
				menu_destroy(menu);
				remove_task(Challenged);
			}
			if (!g_Challenge[Challenged])
			{
				menu_destroy(menu);
				return PLUGIN_HANDLED
			}
			else
			{
				choose_area(Challenged);
				client_printc(g_Challenge[Challenged], "!t[!gKnife Duels!t] !g%s !taccepted the duel.", ccname);
				in_Duel[Challenged] = true;
				in_Duel[g_Challenge[Challenged]] = true;
			}
			return PLUGIN_HANDLED
		}
		case 2:
		{
			if (task_exists(Challenged))
			{
				menu_destroy(menu);
				remove_task(Challenged);
			}
			client_printc(g_Challenge[Challenged], "!t[!gKnife Duels!t] !g%s !trefused the duel.", ccname);
			DisableChecks(Challenged);
			return PLUGIN_HANDLED
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED
}

public choose_area(Challenged)
{
	if (cs_get_user_team(g_Challenge[Challenged]) == cs_get_user_team(Challenged))
	{
    		switch (cs_get_user_team(g_Challenge[Challenged]))
		{
        		case (CS_TEAM_CT):
			{
				cs_set_user_team(Challenged, CS_TEAM_T, CS_T_LEET);
        		}
        		case (CS_TEAM_T):
			{
				cs_set_user_team(Challenged, CS_TEAM_CT, CS_CT_GIGN);
       			}
    		}
	}
	g_Area[Challenged] = 1;
	switch (g_Area[Challenged])
	{
		case 1:
		{
			if (Arena1in) { g_Area[Challenged]+=1; }
			switch (g_Area[Challenged])
			{
				case 2:
				{
					if (Arena2in) { g_Area[Challenged]+=1; }
					switch (g_Area[Challenged])
					{
						case 3:
						{
							if (Arena3in) { g_Area[Challenged]+=1; }
							switch (g_Area[Challenged])
							{
								case 4:
								{
									if (Arena4in) { g_Area[Challenged]+=1; }
									switch (g_Area[Challenged])
									{
										case 5:
										{
											if (Arena5in) { g_Area[Challenged]+=1; }
											switch (g_Area[Challenged])
											{
												case 6:
												{
													if (Arena6in)
													{
														new cccname[32];
														get_user_name(Challenged, cccname, 31);
														client_printc(Challenged, "!t[!gKnife Duels!t] All the knife duel arenas are in use, you were too late.");
														client_printc(g_Challenge[Challenged], "!t[!gKnife Duels!t] All the knife duel arenas are in use, !g%s !twas too late with his/her decision", cccname);
														DisableChecks(Challenged);
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
	startduel(Challenged);
}

public startduel(Challenged)
{
	if (task_exists(Challenged))
	{
		remove_task(Challenged);
	}
	set_user_health(Challenged, 35);
	set_user_health(g_Challenge[Challenged], 35);
   	set_user_armor(Challenged, 0);
	set_user_armor(g_Challenge[Challenged], 0);
	strip_user_weapons(Challenged);
	strip_user_weapons(g_Challenge[Challenged]);
	give_item(Challenged, "weapon_knife");
	give_item(g_Challenge[Challenged], "weapon_knife");
	set_user_maxspeed(Challenged, 250.0);
	set_user_maxspeed(g_Challenge[Challenged], 250.0);
	set_user_gravity(Challenged, 1.0);
	set_user_gravity(g_Challenge[Challenged], 1.0);
	switch (g_Area[Challenged])
	{
		case 1:
		{
			Arena1in = true; 
			Arena1();
			set_iAngle(Challenged, Float:{0.0, 0.0, 0.0}, Float:{738, 327, -360});
			set_iAngle(g_Challenge[Challenged], Float:{0.0, 180.0, 0.0}, Float:{1207, 327, -360});
		}
		case 2:
		{
			Arena2in = true; 
			Arena2();
			set_iAngle(Challenged, Float:{0.0, 0.0, 0.0}, Float:{738, -2252, -360});
			set_iAngle(g_Challenge[Challenged], Float:{0.0, 180.0, 0.0}, Float:{1207, -2252, -360});
		}
		case 3:
		{
			Arena3in = true; 
			Arena3();
			set_iAngle(Challenged, Float:{0.0, 0.0, 0.0}, Float:{1368, 327, -360});
			set_iAngle(g_Challenge[Challenged], Float:{0.0, 180.0, 0.0}, Float:{1847, 327, -360});
		}
		case 4:
		{
			Arena4in = true; 
			Arena4();
			set_iAngle(Challenged, Float:{0.0, 0.0, 0.0}, Float:{88, -2252, -360});
			set_iAngle(g_Challenge[Challenged], Float:{0.0, 180.0, 0.0}, Float:{566, -2252, -360});
		}
		case 5:
		{
			Arena5in = true; 
			Arena5();
			set_iAngle(Challenged, Float:{0.0, 0.0, 0.0}, Float:{88, 327, -360});
			set_iAngle(g_Challenge[Challenged], Float:{0.0, 180.0, 0.0}, Float:{566, 327, -360});
		}
		case 6:
		{
			Arena6in = true; 	
			Arena6();
			set_iAngle(Challenged, Float:{0.0, 0.0, 0.0}, Float:{1368, -2252, -360});
			set_iAngle(g_Challenge[Challenged], Float:{0.0, 180.0, 0.0}, Float:{1847, -2252, -360});
		}
	}
	return PLUGIN_HANDLED
}


public Arena1()
{
	createBlock(Float:{775.065368, 327.047912, -401.000000}, Z, 0, 1);
	createBlock(Float:{775.065368, 199.047912, -401.000000}, Z, 0, 1);
	createBlock(Float:{775.065368, 455.047912, -401.000000}, Z, 0, 1);
	createBlock(Float:{903.065368, 327.047912, -401.000000}, Z, 0, 1);
	createBlock(Float:{903.065368, 455.047912, -401.000000}, Z, 0, 1);
	createBlock(Float:{903.065368, 199.047912, -401.000000}, Z, 0, 1);
	createBlock(Float:{1031.065429, 455.047912, -401.000000}, Z, 0, 1);
	createBlock(Float:{1031.065429, 199.047912, -401.000000}, Z, 0, 1);
	createBlock(Float:{1031.065429, 327.047912, -401.000000}, Z, 0, 1);
	createBlock(Float:{1159.065429, 327.047912, -401.000000}, Z, 0, 1);
	createBlock(Float:{1159.065429, 455.047912, -401.000000}, Z, 0, 1);
	createBlock(Float:{1159.065429, 199.047912, -401.000000}, Z, 0, 1);
	createBlock(Float:{775.254150, 131.397644, -333.000000}, Y, 1, 1);
	createBlock(Float:{903.254150, 131.397644, -333.000000}, Y, 1, 1);
	createBlock(Float:{1031.254150, 131.397644, -333.000000}, Y, 1, 1);
	createBlock(Float:{1159.254150, 131.397644, -333.000000}, Y, 1, 1);
	createBlock(Float:{708.103942, 454.809265, -334.000000}, X, 1, 1);
	createBlock(Float:{708.103942, 326.809265, -334.000000}, X, 1, 1);
	createBlock(Float:{708.103942, 198.809265, -334.000000}, X, 1, 1);
	createBlock(Float:{1227.110351, 455.312744, -333.000000}, X, 1, 1);
	createBlock(Float:{1227.110351, 327.312744, -333.000000}, X, 1, 1);
	createBlock(Float:{1227.110351, 199.312744, -333.000000}, X, 1, 1);	
}
public Arena2()
{
	createBlock(Float:{775.480957, -2377.705566, -401.000000}, Z, 2, 2);
	createBlock(Float:{775.480957, -2121.705566, -401.000000}, Z, 2, 2);
	createBlock(Float:{775.480957, -2249.705566, -401.000000}, Z, 2, 2);
	createBlock(Float:{903.480957, -2377.705566, -401.000000}, Z, 2, 2);
	createBlock(Float:{903.480957, -2121.705566, -401.000000}, Z, 2, 2);
	createBlock(Float:{903.480957, -2249.705566, -401.000000}, Z, 2, 2);
	createBlock(Float:{1031.480957, -2121.705566, -401.000000}, Z, 2, 2);
	createBlock(Float:{1031.480957, -2249.705566, -401.000000}, Z, 2, 2);
	createBlock(Float:{1031.480957, -2377.705566, -401.000000}, Z, 2, 2);
	createBlock(Float:{1159.480957, -2121.705566, -401.000000}, Z, 2, 2);
	createBlock(Float:{1159.480957, -2249.705566, -401.000000}, Z, 2, 2);
	createBlock(Float:{1159.480957, -2377.705566, -401.000000}, Z, 2, 2);
	createBlock(Float:{775.384826, -2055.561279, -334.000000}, Y, 1, 2);
	createBlock(Float:{903.384826, -2055.561279, -334.000000}, Y, 1, 2);
	createBlock(Float:{1031.384765, -2055.561279, -334.000000}, Y, 1, 2);
	createBlock(Float:{1159.384765, -2055.561279, -334.000000}, Y, 1, 2);
	createBlock(Float:{707.239074, -2250.012207, -333.000000}, X, 1, 2);
	createBlock(Float:{707.239074, -2122.012207, -333.000000}, X, 1, 2);
	createBlock(Float:{707.239074, -2378.012207, -333.000000}, X, 1, 2);
	createBlock(Float:{1227.693481, -2120.965332, -333.000000}, X, 1, 2);
	createBlock(Float:{1227.693481, -2248.965332, -333.000000}, X, 1, 2);
	createBlock(Float:{1227.693481, -2376.965332, -333.000000}, X, 1, 2);	
}
public Arena3()
{
	createBlock(Float:{1415.065429, 199.047912, -401.000000}, Z, 3, 3);
	createBlock(Float:{1415.065429, 455.047912, -401.000000}, Z, 3, 3);
	createBlock(Float:{1415.065429, 327.047912, -401.000000}, Z, 3, 3);
	createBlock(Float:{1543.065429, 199.047912, -401.000000}, Z, 3, 3);
	createBlock(Float:{1543.065429, 455.047912, -401.000000}, Z, 3, 3);
	createBlock(Float:{1543.065429, 327.047912, -401.000000}, Z, 3, 3);
	createBlock(Float:{1671.065429, 455.047912, -401.000000}, Z, 3, 3);
	createBlock(Float:{1671.065429, 327.047912, -401.000000}, Z, 3, 3);
	createBlock(Float:{1671.065429, 199.047912, -401.000000}, Z, 3, 3);
	createBlock(Float:{1799.065429, 455.047912, -401.000000}, Z, 3, 3);
	createBlock(Float:{1799.065429, 327.047912, -401.000000}, Z, 3, 3);
	createBlock(Float:{1799.065429, 199.047912, -401.000000}, Z, 3, 3);
	createBlock(Float:{1415.254150, 131.397644, -333.000000}, Y, 1, 3);
	createBlock(Float:{1543.254150, 131.397644, -333.000000}, Y, 1, 3);
	createBlock(Float:{1671.254150, 131.397644, -333.000000}, Y, 1, 3);
	createBlock(Float:{1799.254150, 131.397644, -333.000000}, Y, 1, 3);
	createBlock(Float:{1347.110351, 455.312744, -333.000000}, X, 1, 3);
	createBlock(Float:{1347.110351, 199.312744, -333.000000}, X, 1, 3);
	createBlock(Float:{1347.110351, 327.312744, -333.000000}, X, 1, 3);
	createBlock(Float:{1867.993286, 199.052581, -334.000000}, X, 1, 3);
	createBlock(Float:{1867.993286, 327.052581, -334.000000}, X, 1, 3);
	createBlock(Float:{1867.993286, 455.052581, -334.000000}, X, 1, 3);	
}
public Arena4()
{
	createBlock(Float:{135.480957, -2377.705566, -401.000000}, Z, 4, 4);
	createBlock(Float:{135.480957, -2249.705566, -401.000000}, Z, 4, 4);
	createBlock(Float:{135.480957, -2121.705566, -401.000000}, Z, 4, 4);
	createBlock(Float:{263.480957, -2121.705566, -401.000000}, Z, 4, 4);
	createBlock(Float:{263.480957, -2249.705566, -401.000000}, Z, 4, 4);
	createBlock(Float:{263.480957, -2377.705566, -401.000000}, Z, 4, 4);
	createBlock(Float:{391.480957, -2121.705566, -401.000000}, Z, 4, 4);
	createBlock(Float:{391.480957, -2249.705566, -401.000000}, Z, 4, 4);
	createBlock(Float:{391.480957, -2377.705566, -401.000000}, Z, 4, 4);
	createBlock(Float:{519.480957, -2121.705566, -401.000000}, Z, 4, 4);
	createBlock(Float:{519.480957, -2249.705566, -401.000000}, Z, 4, 4);
	createBlock(Float:{519.480957, -2377.705566, -401.000000}, Z, 4, 4);
	createBlock(Float:{135.384826, -2055.561279, -334.000000}, Y, 1, 4);
	createBlock(Float:{263.384826, -2055.561279, -334.000000}, Y, 1, 4);
	createBlock(Float:{391.384826, -2055.561279, -334.000000}, Y, 1, 4);
	createBlock(Float:{519.384826, -2055.561279, -334.000000}, Y, 1, 4);
	createBlock(Float:{67.456420, -2122.505859, -334.000000}, X, 1, 4);
	createBlock(Float:{67.456420, -2250.505859, -334.000000}, X, 1, 4);
	createBlock(Float:{67.456420, -2378.505859, -334.000000}, X, 1, 4);
	createBlock(Float:{587.239074, -2122.012207, -333.000000}, X, 1, 4);
	createBlock(Float:{587.239074, -2250.012207, -333.000000}, X, 1, 4);
	createBlock(Float:{587.239074, -2378.012207, -333.000000}, X, 1, 4);
}
public Arena5()
{
	createBlock(Float:{135.065368, 199.047912, -401.000000}, Z, 5, 5);
	createBlock(Float:{135.065368, 327.047912, -401.000000}, Z, 5, 5);
	createBlock(Float:{135.065368, 455.047912, -401.000000}, Z, 5, 5);
	createBlock(Float:{263.065368, 455.047912, -401.000000}, Z, 5, 5);
	createBlock(Float:{263.065368, 327.047912, -401.000000}, Z, 5, 5);
	createBlock(Float:{263.065368, 199.047912, -401.000000}, Z, 5, 5);
	createBlock(Float:{391.065368, 327.047912, -401.000000}, Z, 5, 5);
	createBlock(Float:{391.065368, 455.047912, -401.000000}, Z, 5, 5);
	createBlock(Float:{391.065368, 199.047912, -401.000000}, Z, 5, 5);
	createBlock(Float:{519.065368, 327.047912, -401.000000}, Z, 5, 5);
	createBlock(Float:{519.065368, 199.047912, -401.000000}, Z, 5, 5);
	createBlock(Float:{519.065368, 455.047912, -401.000000}, Z, 5, 5);
	createBlock(Float:{135.254165, 131.397644, -333.000000}, Y, 1, 5);
	createBlock(Float:{263.254150, 131.397644, -333.000000}, Y, 1, 5);
	createBlock(Float:{391.254150, 131.397644, -333.000000}, Y, 1, 5);
	createBlock(Float:{519.254150, 131.397644, -333.000000}, Y, 1, 5);
	createBlock(Float:{68.532188, 326.920654, -333.000000}, X, 1, 5);
	createBlock(Float:{68.532188, 198.920654, -333.000000}, X, 1, 5);
	createBlock(Float:{68.532188, 454.920654, -333.000000}, X, 1, 5);
	createBlock(Float:{586.069213, 327.133148, -334.000000}, X, 1, 5);
	createBlock(Float:{586.069213, 199.133148, -334.000000}, X, 1, 5);
	createBlock(Float:{586.069213, 455.133148, -334.000000}, X, 1, 5);	
}
public Arena6()
{
	createBlock(Float:{1415.480957, -2377.705566, -401.000000}, Z, 6, 6);
	createBlock(Float:{1415.480957, -2121.705566, -401.000000}, Z, 6, 6);
	createBlock(Float:{1415.480957, -2249.705566, -401.000000}, Z, 6, 6);
	createBlock(Float:{1543.480957, -2121.705566, -401.000000}, Z, 6, 6);
	createBlock(Float:{1543.480957, -2249.705566, -401.000000}, Z, 6, 6);
	createBlock(Float:{1543.480957, -2377.705566, -401.000000}, Z, 6, 6);
	createBlock(Float:{1671.480957, -2121.705566, -401.000000}, Z, 6, 6);
	createBlock(Float:{1671.480957, -2377.705566, -401.000000}, Z, 6, 6);
	createBlock(Float:{1671.480957, -2249.705566, -401.000000}, Z, 6, 6);
	createBlock(Float:{1799.480957, -2121.705566, -401.000000}, Z, 6, 6);
	createBlock(Float:{1799.480957, -2249.705566, -401.000000}, Z, 6, 6);
	createBlock(Float:{1799.480957, -2377.705566, -401.000000}, Z, 6, 6);
	createBlock(Float:{1415.384765, -2055.561279, -334.000000}, Y, 1, 6);
	createBlock(Float:{1543.384765, -2055.561279, -334.000000}, Y, 1, 6);
	createBlock(Float:{1671.384765, -2055.561279, -334.000000}, Y, 1, 6);
	createBlock(Float:{1799.384765, -2055.561279, -334.000000}, Y, 1, 6);
	createBlock(Float:{1348.344604, -2377.144531, -333.000000}, X, 1, 6);
	createBlock(Float:{1348.344604, -2249.144531, -333.000000}, X, 1, 6);
	createBlock(Float:{1348.344604, -2121.144531, -333.000000}, X, 1, 6);
	createBlock(Float:{1867.397583, -2377.233154, -333.000000}, X, 1, 6);
	createBlock(Float:{1867.397583, -2249.233154, -333.000000}, X, 1, 6);
	createBlock(Float:{1867.397583, -2121.233154, -333.000000}, X, 1, 6);
}

stock bool:createBlock(Float:vOrigin[3], const blocktype, const invisible, const aclass)
{ 
   	new ent = create_entity(gCName);
   	if (is_valid_ent(ent)) 
   	{
		switch (aclass)
		{
			case 1:
			{
				entity_set_string(ent, EV_SZ_classname, "ArenaA");
			}
			case 2:
			{
				entity_set_string(ent, EV_SZ_classname, "ArenaB");
			}
			case 3:
			{
				entity_set_string(ent, EV_SZ_classname, "ArenaC");
			}
			case 4:
			{
				entity_set_string(ent, EV_SZ_classname, "ArenaD");
			}
			case 5:
			{
				entity_set_string(ent, EV_SZ_classname, "ArenaE");
			}
			case 6:
			{
				entity_set_string(ent, EV_SZ_classname, "ArenaF");
			}
		}

		entity_set_int(ent, EV_INT_solid, SOLID_BBOX); 
      		entity_set_int(ent, EV_INT_movetype, MOVETYPE_NONE); 
      		entity_set_model(ent, gModel); 

		switch (blocktype)
		{
			//ńňĺíč2 ( - ) íŕńňđŕíč
			case X:
			{
				vSizeMin[0] = -4.0; vSizeMin[1] = -64.0; vSizeMin[2] = -64.0;
				vSizeMax[0] = 4.0; vSizeMax[1] = 64.0; vSizeMax[2] = 64.0;
    				vAngles[0] = 90.0; vAngles[1] = 0.0; vAngles[2] = 0.0;
			}
			//ńňĺíč1 ( | ) îň áŕçŕ äî áŕçŕ
			case Y:
			{
				vSizeMin[0] = -64.0; vSizeMin[1] = -4.0; vSizeMin[2] = -64.0;
				vSizeMax[0] = 64.0; vSizeMax[1] = 4.0; vSizeMax[2] = 64.0;
				vAngles[0] = 90.0; vAngles[1] = 0.0; vAngles[2] = 90.0;
			}
			//ďîä, ňŕâŕí - ëĺăíŕë áëîę
			case Z:
			{
				vSizeMin[0] = -64.0; vSizeMin[1] = -64.0; vSizeMin[2] = -4.0;
				vSizeMax[0] = 64.0; vSizeMax[1] = 64.0; vSizeMax[2] = 4.0;
				vAngles[0] = 0.0; vAngles[1] = 0.0; vAngles[2] = 0.0;
			}
		}

      		entity_set_vector(ent, EV_VEC_angles, vAngles); 
      		entity_set_size(ent, vSizeMin, vSizeMax); 
      		entity_set_origin(ent, vOrigin);

		switch (invisible)
		{
			case 0:
			{
				set_rendering(ent, kRenderFxGlowShell, 204, 0, 68, kRenderTransColor, 1);
			}
			case 1:
			{
				set_rendering(ent, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0);
			}
			case 2:
			{
				set_rendering(ent, kRenderFxGlowShell, 255, 100, 0, kRenderTransColor, 1);
			}
			case 3:
			{
				set_rendering(ent, kRenderFxGlowShell, 255, 255, 0, kRenderTransColor, 1);
			}
			case 4:
			{
				set_rendering(ent, kRenderFxGlowShell, 0, 255, 0, kRenderTransColor, 1);
			}
			case 5:
			{
				set_rendering(ent, kRenderFxGlowShell, 0, 255, 255, kRenderTransColor, 1);
			}
			case 6:
			{
				set_rendering(ent, kRenderFxGlowShell, 68, 0, 204, kRenderTransColor, 1);
			}
		}

      		return true; 
   	}
   	return false; 
}
stock dArena(const iarena)
{
	new ent = -1;
	switch (iarena)
	{
		case 1:
		{
			while ((ent = find_ent_by_class(ent, "ArenaA")))
			{
				remove_entity(ent);
			}
		}
		case 2:
		{
			while ((ent = find_ent_by_class(ent, "ArenaB")))
			{
				remove_entity(ent);
			}
		}
		case 3:
		{
			while ((ent = find_ent_by_class(ent, "ArenaC")))
			{
				remove_entity(ent);
			}
		}
		case 4:
		{
			while ((ent = find_ent_by_class(ent, "ArenaD")))
			{
				remove_entity(ent);
			}
		}
		case 5:
		{
			while ((ent = find_ent_by_class(ent, "ArenaE")))
			{
				remove_entity(ent);
			}
		}
		case 6:
		{
			while ((ent = find_ent_by_class(ent, "ArenaF")))
			{
				remove_entity(ent);
			}
		}
	}
}
client_printc(index, const text[], any:...)
{
    new szMsg[128];
    vformat(szMsg, sizeof(szMsg) - 1, text, 3);
    
    replace_all(szMsg, sizeof(szMsg) - 1, "!g", "^x04");
    replace_all(szMsg, sizeof(szMsg) - 1, "!n", "^x01");
    replace_all(szMsg, sizeof(szMsg) - 1, "!t", "^x03");
    
    message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, index);
    write_byte(index);
    write_string(szMsg);
    message_end();
}
print_cc(id, fmt[], any:...)
{
	static saytext = 0, fake_user;
	if (!saytext)
	{
		saytext = get_user_msgid("SayText");
		fake_user = get_maxplayers() + 1;
	}
	new msg[192];
	vformat(msg, charsmax(msg), fmt, 3)
	replace_all(msg, sizeof(msg) - 1, "!g", "^x04");
	replace_all(msg, sizeof(msg) - 1, "!n", "^x01");
	replace_all(msg, sizeof(msg) - 1, "!t", "^x03");
	message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, saytext, _, id);
	write_byte(id ? id : fake_user);
	write_string(msg);
	message_end();
}
stock set_iAngle(index, Float:iAngle[3], Float:iOrigin[3])
{
       entity_set_vector(index, EV_VEC_angles, iAngle); 
       entity_set_int(index, EV_INT_fixangle, 1);
       set_user_origin(index, iOrigin);
}
Attached Files
File Type: zip iwalls.zip (1.1 KB, 51 views)

Last edited by Saint Sinner; 03-01-2018 at 07:49.
Saint Sinner is offline
Reply


Thread Tools
Display Modes

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 19:56.


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