Discord sunucumuz açılmıştır, hepinizi bekleriz

https://discord.gg/43gGDQe6tS

1vs1 duel arenası pluginine edit

Eklenti sorunlarınız ve özel eklenti istekleriniz

Moderatör: Moderatörler


Konu Sahibi
ignite
Mesajlar: 12
Kayıt: Sal Ara 28, 2021 4:54 pm

1vs1 duel arenası pluginine edit

Mesaj gönderen ignite »

Merhabalar herkese iyi forumlar, elimde hali hazırda çalışan 1vs1 knife duel arena plugini mevcut ben bu plugin üzerinde bir kaç farklılık istiyorum yapabilecek olan varsa yardımcı olursa şimdiden teşekkür ederim... :)

Anlaşılır olması adına madde madde yazıcağım.
// Plugin şuan sadece düz bir arena platformundan oluşmakta olup sadece 35hp olarak çalışıyor.
\\ Benim isteğim düz bir arena platformunun yanı sıra bir köprü platformu seçeneği daha ve 1hp-35hp-100hp seçenekleri oluşturmak.

-Bir oyuncu say'a "/duel" yazdığında 4 seçenekli bir menünün açılmasını istiyorum.
++ 4 seçeneğin üstüne ise oyuncunun attığı duel vs sayısını ve kazanma oranını eklemek.
-İlk seçenekte düelloya davet ediceği kişiyi seçmesi.
-İkinci seçenekte hp seçeneklerini belirlemesi.
-Üçüncü seçenekte arena platformunu belirlemesi.
-Dördüncü seçenek ise oyuncu listede gözükmek istemiyorsa "Off" olarak duello isteklerini kapatması.
En son ignite tarafından Cmt Ağu 06, 2022 7:20 pm tarihinde düzenlendi, toplamda 1 kere düzenlendi.

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
ignite
Mesajlar: 12
Kayıt: Sal Ara 28, 2021 4:54 pm

1vs1 duel arenası pluginine edit

Mesaj gönderen ignite »

arkadaşlar ek dosyaları paylaşamıyorum neden?

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
ignite
Mesajlar: 12
Kayıt: Sal Ara 28, 2021 4:54 pm

1vs1 duel arenası pluginine edit

Mesaj gönderen ignite »

Kod: Tümünü seç

// Eklenti duzenlenmistir: F.T.H (VatanGaming.com)
 
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#include <fakemeta_util>
#include <fun>
#include <engine>
#include <xs>
#if AMXX_VERSION_NUM < 183
#include <dhudmessage>
#define client_disconnected client_disconnect
#endif

new MAXPLAYERS
 
#define CHAT_TAG "^3[^4VatanGaming Duello^3]^1 " // Mesajlar arasindaki yazi
 
#define DUEL_COMMAND "say /duel" // Duello yapacaginiz kisiyi secersiniz
#define TOGGLE_COMMAND "say /offduel" // Duelloya katilmazsiniz
#define GIVEUP_COMMAND "say /giveup" // Duelloyu bitirmek icin
 
#define ARENA_ENT_NAME "entity_arena"
 
 
// Maksimum arena sayisi
#define MAX_ARENAS 4
 
 
new const arena_names[][] = {
	"",
	"A",    // 1st arena
	"B",    // 2nd arena
	"C",     // 3rd arena
	"D"     // 4th arena
}
 
 
// some arena codes...
#define ARENA_CODE 305924
#define FAKE_CODE 6969696969
#define CENTER_CODE 9696969696
#define EXTRA_CODE 911911911
 
// task code for advert
#define TASK_AD 34585029
#define TASK_DUEL 34585029
#define TASK_GIVEUP 34585029
#define TASK_OFFLINE 34585029
 
// some movement defines
#define MOVE_UP 0
#define MOVE_DOWN 1
#define MOVE_RIGHT 2
#define MOVE_LEFT 3
#define MOVE_FRONT 4
#define MOVE_BACK 5
 
// Arena ground size
#define ARENA_MINS Float:{-150.0,-62.0,-1.5}
#define ARENA_MAXS Float:{10.0,62.0,1.5}
 
// arena coords offcourse, this is used to build the arena.
new const Float:ARENA_COORDS[][2] = {
	{0.0,0.0},
	{100.0,0.0},
	{0.0,100.0},
	{100.0,100.0},
	{-100.0,0.0},
	{0.0,-100.0},
	{-100.0,-100.0},
	{-100.0,100.0},
	{100.0,-100.0},
	{200.0,0.0},
	{200.0,100.0},
	{200.0,-100.0}
}
 
enum {
	BLUE_SIDE = 0,
	RED_SIDE = 1,
	LEFT_SIDE = 2,
	RIGHT_SIDE = 3,
	TOP_SIDE = 4
}
 
new const ARENA_FILE[] = "%s/duel_arena/%s.cfg"
new user_can_spawn[33];
// Sesleri kapatmak icin bu komutu girin: "common/null.wav"
new const DUEL_SOUNDS[][] = {
	"ambience/goal_1.wav",       // 0 kazaninca
	"x/nih_die2.wav",       // 1 Kaybedince
	"ambience/des_wind1.wav",   // 2 Beraber
	"buttons/bell1.wav",         // 3 Baslayinca
	"buttons/blip1.wav" ,    // 4 Duello kabul edilince
	"common/null.wav",  // 5 Countdown
	"common/null.wav"   // 6 "Go!"
}
 
new const ARENA_MODELS[][] = {
	"models/Knif3Albastrel.mdl", // Arena sahasi
	"models/Knif3Albastrel.mdl" // Arena duvari
}
 
new const MAP_FIX[][] = {
	"35hp_2"
}
 
new Float:MAP_FIX_Z_COORD[] = {
	-864.253723
}
 
new Head_shot[33][33]
new fakes;
new is_in_duel[33],his_countdown[33],is_frozen[33],his_challenger[33],his_asker[33],arena_number[33],his_wins[33],his_name[33][64];
new rounds[MAX_ARENAS+1],Float:arena_coord[MAX_ARENAS+1][3]; // using +1 just incase...
new Float:his_spawn[33][3],got_spawn[33],Float:his_angle[33][3],Float:his_original_spawn[33][3];
new next_empty_arena,total_arenas;
new map_name[32]
new cvar_z_fix,cvar_sounds,cvar_rounds,cvar_kills,cvar_cooldown,cvar_time
new Float:max_size[3],Float:min_size[3];
new selected = 1,Float:move_size[33],his_timer[33],his_offline[33],his_HS[33];
new map_default_hp;
new map_id = -1;
new his_previous_team[33];
// using these for less cpu usage.
new IS_BUGGED_MAP = 0,MAP_FIX_ENABLED,SOUNDS_ENABLED,MAX_ROUNDS,MAX_KILLS,MAX_COUNTDOWN,MAX_TIME;
new g_allocPmod, g_allocVmod

static const szg_Pbk[] = "models/p_raizo.mdl" 
static const szg_Vbk[] = "models/v_raizo.mdl" 

const OFFSET_WEAPONOWNER = 41
const OFFSET_LINUX_WEAPONS = 4
 
#define P_NAME "Knife Duels"
#define P_VERS "2.0.5"
#define P_AUTH "raizo"
#define P_REQ "- Knife Arena -"
new killed_forward;

#define ROUND_START_TASK 3215468

public plugin_init()
{

	register_plugin(P_NAME, P_VERS, P_AUTH)
	//register_clcmd("say","say_hook")
	//register_clcmd("say_team","say_hook")
	register_clcmd("say /origin","print_coords")
	register_clcmd("say /arena","editor_menu")
	register_clcmd(DUEL_COMMAND,"duel_players_list")
	register_clcmd(TOGGLE_COMMAND,"toggle_offline")
	register_clcmd(GIVEUP_COMMAND,"give_up_player")
	// prevent the use of C4?
	//register_event("CurWeapon","CurrentWeapon","be","1=1")
   
	RegisterHam(Ham_Killed, "player", "Player_Killed")
	RegisterHam(Ham_TakeDamage, "player", "Player_Take_Damage", 0)
	//RegisterHam(Ham_CS_RoundRespawn, "player", "Player_Respawn_pre", 0)
	register_forward( FM_CmdStart , "Cmd_start" );
	register_event("HLTV", "round_start_event", "a", "1=0", "2=0")
	cvar_z_fix = register_cvar("gld_z_map_fix","1")
	cvar_sounds = register_cvar("gld_sounds","1")
	cvar_rounds =register_cvar("gld_rounds","20")
	cvar_kills =register_cvar("gld_kills","20")
	cvar_cooldown = register_cvar("gld_cooldown","1")
	cvar_time = register_cvar("gld_max_nokill_time","20")
	//register_forward(FM_SetModel, "fw_SetModel")
	RegisterHam(Ham_Spawn,"player","Player_spawn_post",1)
	g_allocPmod = engfunc(EngFunc_AllocString, szg_Pbk)
	g_allocVmod = engfunc(EngFunc_AllocString, szg_Vbk) 

	get_mapname(map_name,charsmax(map_name))
	new size = sizeof(MAP_FIX)
	for(new i; i <size;i++)
	{
		if(equal(map_name,MAP_FIX[i]))
		{
			map_id = i
			IS_BUGGED_MAP = 1
		}
	}

	MAXPLAYERS = get_maxplayers();
	if(containi(map_name,"35hp") != -1)
		map_default_hp = 35
	else if(containi(map_name,"1hp") != -1)
		map_default_hp = 1
	else map_default_hp = 35
	load_arena_coords(-1)
	RegisterHam(Ham_TraceAttack, "player", "Ham_TraceAttack_player", 1)
	register_touch(ARENA_ENT_NAME, "player", "forward_touch");
   
	new cfgdir[32], urlfile[64]
	get_configsdir(cfgdir, charsmax(cfgdir))
	formatex(urlfile, charsmax(urlfile), "%s/duel_arena", cfgdir)
	if(!dir_exists(urlfile))
	{
		mkdir(urlfile)
		server_print("%sKlasor olusturuldu: %s",CHAT_TAG,urlfile)
	}
	update_cvars()
	killed_forward = CreateMultiForward("duel_player_killed", ET_IGNORE, FP_CELL,FP_CELL);
	set_task(15.0,"Advertise",TASK_AD)
	set_task(30.0,"GlobalKnife",TASK_DUEL)
	set_task(45.0,"GiveUpDuel",TASK_GIVEUP)
	set_task(60.0,"OfflineDuel",TASK_OFFLINE)
}
 
/*public fw_SetModel(entity, model[])
{
	if(!is_valid_ent(entity))
		return FMRES_IGNORED
   
	static szClassName[33]
	entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
	   
	if(!equal(szClassName, "weaponbox"))
		return FMRES_IGNORED
   
	if(equal(model, "models/w_c4.mdl"))
	{
		remove_entity(entity)
	}
	return FMRES_IGNORED
}*/
 

 
/*public CurrentWeapon(id)
{
	if(read_data(2) == CSW_C4)
	{
		if(is_user_alive(id))
		{
			strip_user_weapons(id)
			give_item(id,"weapon_knife")
		   
		}
	}
}
 
stock get_weapon_owner(ent)
{
	return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS)
}
 
public Player_Respawn_pre(id)
{
	if(is_user_connected(id))
	{
		if(!user_can_spawn[id])
		{
			return HAM_SUPERCEDE
		}
	}
	return HAM_IGNORED
}*/
 
public plugin_natives()
{
	register_library("knife_duels")
	register_native("is_user_in_duel","_is_user_in_duel")
	register_native("is_user_dueling_user","_is_user_dueling_user")
}
 
public get_non_duelers_alive()
{
	new count = 0
	for(new id; id < MAXPLAYERS;id++)
	{
		if(is_user_connected(id))
		{
			if(is_user_alive(id) && !is_in_duel[id])
			{
				count++
			}
		}
	}
	return count
}
  
public respawn_everyone(taskid)
{
	for(new id;id < MAXPLAYERS;id++)
	{
		if(is_user_connected(id))
		{
			if(is_in_duel[id] !=2 && !is_user_alive(id))
			{
				if(cs_get_user_team(id) == CS_TEAM_CT || cs_get_user_team(id) == CS_TEAM_T)
				{
					ExecuteHam(Ham_CS_RoundRespawn, id);
				}
			}
		}
	}
}
 
public get_non_duelers_alive_CT()
{
	new count = 0
	for(new id; id < MAXPLAYERS;id++)
	{
		if(is_user_connected(id))
		{
			if(is_user_alive(id) && !is_in_duel[id] && cs_get_user_team(id) == CS_TEAM_CT)
			{
				count++
			}
		}
	}
	return count
}
 
public get_non_duelers_alive_T()
{
	new count = 0
	for(new id; id < MAXPLAYERS;id++)
	{
		if(is_user_connected(id))
		{
			if(is_user_alive(id) && !is_in_duel[id] && cs_get_user_team(id) == CS_TEAM_T)
			{
				count++
			}
		}
	}
	return count
}
 
public _is_user_in_duel(plugin, iParams)
{
	new id = get_param(1)
	if(!is_user_connected(id))
		return PLUGIN_CONTINUE
	if(is_in_duel[id] == 2)
		return PLUGIN_HANDLED
	return PLUGIN_CONTINUE
}
 
public _is_user_dueling_user(plugin, iParams)
{
	new id = get_param(1)
	new enemy = get_param(2)
	if(!is_user_connected(id))
		return PLUGIN_CONTINUE
	if(!is_user_connected(enemy))
		return PLUGIN_CONTINUE
	if(is_in_duel[id] != 2 || is_in_duel[enemy] != 2)
		return PLUGIN_CONTINUE
	if(id == his_challenger[enemy] && enemy == his_challenger[id])
		return PLUGIN_HANDLED
	return PLUGIN_CONTINUE
}
 
public forward_touch(ent, id)
{
	if(!pev_valid(id))
		return;
	if(!pev_valid(ent))
		return;
	if(is_user_alive(id) && get_user_noclip(id))
		return;
	static class[32]
	pev(ent,pev_classname,class,charsmax(class));
	if(equal(class,ARENA_ENT_NAME))
	{
		if(is_user_alive(id))
		{
			if(is_player_stuck(id) && is_in_duel[id] != 2)
			{
				back_to_the_spawn(id)
			}
		}
	   
	}
	return;
}
 
public Ham_TraceAttack_player(victim, attacker, Float:Damage, Float:Direction[3], ptr, Damagebits)
{
	if(is_user_connected(attacker) && is_user_connected(victim))
	{
		Head_shot[attacker][victim] = bool:( get_tr2(ptr, TR_iHitgroup) == 1 )
	}
}
 
public editor_menu(id)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED
	new flags = get_user_flags(id)
	if(!(flags & ADMIN_RCON))
	{
		client_print(id,print_chat,"Yetkiniz yok!")
		return PLUGIN_HANDLED
	}
	new menu
	menu = menu_create( "\rArena Editoru:", "Arenaspawner_handler" );
   
	new nameu[32];
   
	formatex(nameu,charsmax(nameu), "Arena Ekle");
	menu_additem(menu, nameu, "", 0);
	formatex(nameu,charsmax(nameu), "Sil");
	menu_additem(menu, nameu, "", 0);
	formatex(nameu,charsmax(nameu), "Hepsini Sil");
	menu_additem(menu, nameu, "", 0);
	formatex(nameu,charsmax(nameu), "Sec");
	menu_additem(menu, nameu, "", 0);
	formatex(nameu,charsmax(nameu), "Hepsini Sec");
	menu_additem(menu, nameu, "", 0);
	formatex(nameu,charsmax(nameu), "Duzenle");
	menu_additem(menu, nameu, "", 0);
	formatex(nameu,charsmax(nameu), "Yukle");
	menu_additem(menu, nameu, "", 0);
	formatex(nameu,charsmax(nameu), "Kaydet");
	menu_additem(menu, nameu, "", 0);
	menu_display(id, menu, 0 );
	return PLUGIN_HANDLED
}
 
public Arenaspawner_handler( id, menu, item )
{
	if ( item == MENU_EXIT )
	{
		menu_destroy( menu );
		remove_the_fake_arena()
		return PLUGIN_HANDLED;
	}
   
	new szData[6], szName[64];
	new _access, item_callback;
	menu_item_getinfo( menu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
	new arenas_found;
	arenas_found = fakes_count()
	if(equali(szName,"Arena Ekle"))
	{
		if(next_fake_arena() != -1)
		{
			start_fake_build(id,-1)
			if(fakes_count())
			{
				if(selected > MAX_ARENAS || selected == -1)
				{
					selected = 1
					select_the_fake_arena(EXTRA_CODE+selected)
				}
			}
		} else client_print_color(id,id,"%s ^3Maksimum arena sayisina ulasildi!^1",CHAT_TAG)
	}
	else if(equali(szName,"Sil"))
	{
		if(fakes_count())
		{
			if(selected > MAX_ARENAS || selected == -1)
				selected = 1
			delete_the_fake_arena(EXTRA_CODE+selected)
			if(fakes_count())
				next_selection()
		} else client_print_color(id,id,"%s ^3Arena bulunamadi.",CHAT_TAG)
	}
	else if(equali(szName,"Hepsini Sil"))
	{
		//remove_menu(id)
		remove_the_fake_arena()
		client_print_color(id,id,"%s ^3Tum arenalar kaldirildi",CHAT_TAG)
	}
	else if(equali(szName,"Sec"))
	{
		if(fakes_count())
		{
			next_selection()
		} else client_print_color(id,id,"%s ^3Arena bulunamadi.",CHAT_TAG)
	}
	else if(equali(szName,"Hepsini Sec"))
	{
		if(fakes_count())
		{
			selected = -1
			select_the_fake_arena(EXTRA_CODE+selected)
		} else client_print_color(id,id,"%s ^3Arena bulunamadi.",CHAT_TAG)
	}
	else if(equali(szName,"Duzenle"))
	{
		if(fakes_count())
		{
			if(selected > MAX_ARENAS)
				selected = 1
			select_the_fake_arena(EXTRA_CODE+selected)
			menu_destroy( menu );
			move_menu(id,EXTRA_CODE+selected)
			return PLUGIN_CONTINUE;
		}
		else client_print_color(id,id,"%s ^3Arena bulunamadi.",CHAT_TAG)
	}
	else if(equali(szName,"Yukle"))
	{
		remove_the_fake_arena()
		load_arena_coords(id)
		//client_print_color(id,id, DontChange,"%s ^3Координаты арены загружены.",CHAT_TAG)
		set_task(0.1,"delay_build",id)
	}
	else if(equali(szName,"Kaydet"))
	{
		if(fakes_count())
		{
			save_arena_coords(id)
			remove_the_fake_arena()
			load_arena_coords(id)
		}
		else
		{
			client_print_color(id,id,"%s ^3Arena bulunamadi",CHAT_TAG)
		}
	}
	if(!arenas_found && fakes_count())
	{
		next_selection()
	}
	menu_destroy( menu );
	editor_menu(id)
	return PLUGIN_CONTINUE;
}
 
stock next_selection()
{
	if(selected == -1)
	{
		selected = 1
	}
	new size = MAX_ARENAS*3
	for(new slct=0;slct < size;slct++)
	{
		selected++
		if(selected > MAX_ARENAS)
			selected = 1
		if(fake_arena_exists(selected))
		{
			select_the_fake_arena(EXTRA_CODE+selected)
			return;
		}
	}
}
 
public fake_arena_exists(code)
{
	new arenas_ent = -1
	new code_ent
	while((arenas_ent=engfunc(EngFunc_FindEntityByString,arenas_ent,"classname",ARENA_ENT_NAME)))
	{
		if(entity_get_int(arenas_ent,EV_INT_iuser2) == CENTER_CODE && entity_get_int(arenas_ent,EV_INT_iuser1) == FAKE_CODE)
		{
			code_ent = entity_get_int(arenas_ent,EV_INT_iuser3)-EXTRA_CODE
			if(code_ent == code)
			{
				return PLUGIN_HANDLED
			}
		}
	}
	return PLUGIN_CONTINUE
}
 
public fakes_count()
{
	new arenas_ent = -1
	new found = 0
	while((arenas_ent=engfunc(EngFunc_FindEntityByString,arenas_ent,"classname",ARENA_ENT_NAME)))
	{
		if(entity_get_int(arenas_ent,EV_INT_iuser2) == CENTER_CODE && entity_get_int(arenas_ent,EV_INT_iuser1) == FAKE_CODE)
		{
			found++
		}
	}
	return found
}
 
public arenas_count()
{
	new found = 0
	for(new id;id < MAXPLAYERS;id++)
	{
		if(is_user_connected(id))
		{
			if(is_in_duel[id] == 2)
				found++
		}
	}
	return found/2
}
 
public delay_build(id)
{
	for(new i=1;i < total_arenas+1;i++)
	{
		start_fake_build(id,i)
	}
	if(fakes_count())
	{
		next_selection()
	}
}
public move_menu(id,code)
{
	new menu
	menu = menu_create( "\rArena Duzenleme:", "move_handler" );
   
	new nameu[32];
	new code_t[32];
	num_to_str(code,code_t,charsmax(code_t))
	formatex(nameu,charsmax(nameu), "Yukari");
	menu_additem(menu, nameu, code_t, 0);
   
	formatex(nameu,charsmax(nameu), "Asagi");
	menu_additem(menu, nameu, code_t, 0);
   
	formatex(nameu,charsmax(nameu), "Ileri");
	menu_additem(menu, nameu, code_t, 0);
   
	formatex(nameu,charsmax(nameu), "Geri");
	menu_additem(menu, nameu, code_t, 0);
   
	formatex(nameu,charsmax(nameu), "Sol");
	menu_additem(menu, nameu, code_t, 0);
   
	formatex(nameu,charsmax(nameu), "Sag");
	menu_additem(menu, nameu, code_t, 0);
   
	formatex(nameu,charsmax(nameu), "Arenayi Sil");
	menu_additem(menu, nameu, code_t, 0);
   
	formatex(nameu,charsmax(nameu), "Boyutu: %.2f",move_size[id]);
	menu_additem(menu, nameu, code_t, 0);
	menu_display(id, menu, 0 );
	return PLUGIN_HANDLED
}
 
public move_handler( id, menu, item )
{
	if ( item == MENU_EXIT )
	{
		menu_destroy( menu );
		set_task(0.1,"editor_menu",id)
		return PLUGIN_HANDLED;
	}
   
	new szData[32], szName[64];
	new _access, item_callback;
	menu_item_getinfo( menu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
	new code = str_to_num(szData)
	if(equali(szName,"Arenayi Sil"))
	{
		delete_the_fake_arena(code)
		menu_destroy( menu );
		editor_menu(id)
		unselect_the_fake_arena(0)
		return PLUGIN_CONTINUE;
	}
	else if(containi(szName,"Boyutu:") != -1)
	{
		move_size[id]+= 10.0
		if(move_size[id] > 100.0)
		{
			move_size[id] = 10.0
		}
	}
	else if(equali(szName,"Yukari"))
	{
		move_the_fake_arena(id,code,MOVE_UP)
	}
	else if(equali(szName,"Asagi"))
	{
		move_the_fake_arena(id,code,MOVE_DOWN)
	}
	else if(equali(szName,"Sag"))
	{
		move_the_fake_arena(id,code,MOVE_RIGHT)
	}
	else if(equali(szName,"Sol"))
	{
		move_the_fake_arena(id,code,MOVE_LEFT)
	}
	else if(equali(szName,"Ileri"))
	{
		move_the_fake_arena(id,code,MOVE_FRONT)
	}
	else if(equali(szName,"Geri"))
	{
		move_the_fake_arena(id,code,MOVE_BACK)
	}
	menu_destroy( menu );
	move_menu(id,code)
   
	return PLUGIN_CONTINUE;
}
 
public save_arena_coords(id)
{
	new found;
	new cfgdir[32], mapname[32], urlfile[64]
	get_configsdir(cfgdir, charsmax(cfgdir))
	get_mapname(mapname, charsmax(mapname))
	formatex(urlfile, charsmax(urlfile), ARENA_FILE, cfgdir, mapname)
 
	if (file_exists(urlfile))
		delete_file(urlfile)
   
	new lineset[128]
	new Float:origin[3]
	new arenas_ent=-1;
	while((arenas_ent=engfunc(EngFunc_FindEntityByString,arenas_ent,"classname",ARENA_ENT_NAME)))
	{
		if(entity_get_int(arenas_ent,EV_INT_iuser2) == CENTER_CODE && entity_get_int(arenas_ent,EV_INT_iuser1) == FAKE_CODE)
		{
			found++
			pev(arenas_ent,pev_origin,origin);
			format(lineset, charsmax(lineset), "%.f %.f %.f", origin[0], origin[1], origin[2])
			write_file(urlfile, lineset,found)
		   
		}
	}
	if(!found)
		client_print_color(id,id, "%s ^3Arena bulunamadi",CHAT_TAG)
	else client_print_color(id,id,"%s %d ^3Koordinatlar kaydedildi.",CHAT_TAG,found)
}
 
public print_coords(id)
{
	new Float:coord[3]
	pev(id,pev_origin,coord);
	client_print_color(id,id,"origin: ^3%.f %.f %.f",coord[0],coord[1],coord[2])
	return PLUGIN_HANDLED
}
 
public start_fake_build(id,zecode)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED
	new ext_code
	if(zecode == -1)
	{
		ext_code = next_fake_arena()
		if(ext_code == -1)
			return PLUGIN_HANDLED
	}
	else ext_code = zecode
	ext_code+=EXTRA_CODE
	static Float:origin[3];
	if(zecode == -1)
		get_user_hitpoint(id,origin)
	else
	{
		origin[0]=arena_coord[zecode][0]
		origin[1]=arena_coord[zecode][1]
		origin[2]=arena_coord[zecode][2]
	}
	/*origin[0] = 1002.911376
	origin[1] = -1561.421997
	origin[2] = 0.0*/
	new Float:fake_origin[3]
	static size
	size = sizeof(ARENA_COORDS)
	new ent_code = FAKE_CODE
	fakes++
	for(new coords;coords < size; coords++)
	{
		fake_origin[0] = origin[0]
		fake_origin[1] = origin[1]
		if(bugged_map())
			fake_origin[2]= MAP_FIX_Z_COORD[map_id]
		else fake_origin[2] = origin[2]
		//fake_origin[2]=-712.876892
	   
		fake_origin[0]+=ARENA_COORDS[coords][0]*1.7
		fake_origin[1]+=ARENA_COORDS[coords][1]*1.53
	   
		new ent=engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"func_wall"));
	   
		set_pev(ent,pev_classname,ARENA_ENT_NAME);
		engfunc(EngFunc_SetModel,ent,ARENA_MODELS[0]);
		entity_set_int(ent, EV_INT_solid, SOLID_BBOX);
		engfunc(EngFunc_SetSize,ent,ARENA_MINS,ARENA_MAXS);
		entity_set_int(ent, EV_INT_movetype, MOVETYPE_NONE);
		entity_set_int(ent,EV_INT_iuser1,ent_code)
		entity_set_int(ent,EV_INT_iuser3,ext_code)
		engfunc(EngFunc_SetOrigin,ent,fake_origin);
		stuck_check(fake_origin,120.0)
		static Float:rvec[3];
		pev(ent,pev_v_angle,rvec);
	   
		rvec[0]=90.0;
		set_pev(ent,pev_angles,rvec);
	   
		if(ARENA_COORDS[coords][0] == 0.0 && ARENA_COORDS[coords][1] == 100.0)
		{
			fake_origin[0] += max_size[0]
			fake_origin[1] += max_size[1]
			//create_wall(LEFT_SIDE,255,SOLID_BBOX,ent_code,0,ext_code,fake_origin)
		}
		if(ARENA_COORDS[coords][0] == 0.0 && ARENA_COORDS[coords][1] == -100.0)
		{
			fake_origin[0] += max_size[2]
			fake_origin[1] += min_size[0]
			//create_wall(RIGHT_SIDE,255,SOLID_BBOX,ent_code,0,ext_code,fake_origin)
		}
		if(ARENA_COORDS[coords][0] == 0.0 && ARENA_COORDS[coords][1] == 0.0)
		{
			create_wall(TOP_SIDE,255,SOLID_BBOX,ent_code,0,ext_code,fake_origin)
			entity_set_int(ent,EV_INT_iuser2,CENTER_CODE)
		}
		else if(ARENA_COORDS[coords][0] == 200.0 && ARENA_COORDS[coords][1] == 0.0)
		{
			fake_origin[0] += min_size[1]
		   
			//create_wall(BLUE_SIDE,255,SOLID_BBOX,ent_code,0,ext_code,fake_origin)
		}
		else if(ARENA_COORDS[coords][0] == -100.0 && ARENA_COORDS[coords][1] == 0.0)
		{
			fake_origin[0] += min_size[2]
			//create_wall(RED_SIDE,255,SOLID_BBOX,ent_code,0,ext_code,fake_origin)
		}
		set_rendering(ent,kRenderFxGlowShell,0,50,0,kRenderNormal,10)
	}
	select_the_fake_arena(ext_code)
	return PLUGIN_HANDLED;
}
 
public move_the_fake_arena(id,code,moveto)
{
	new num;
	num = code-EXTRA_CODE
	new arenas_ent=-1;
	new Float:origin[3];
	while((arenas_ent=engfunc(EngFunc_FindEntityByString,arenas_ent,"classname",ARENA_ENT_NAME)))
	{
		if(entity_get_int(arenas_ent,EV_INT_iuser1) == FAKE_CODE)
		{
			if(entity_get_int(arenas_ent,EV_INT_iuser3) == code || num == -1)
			{
				pev(arenas_ent,pev_origin,origin);
				switch(moveto)
				{
					case MOVE_UP:
					{
						origin[2]+=move_size[id]
					}
					case MOVE_DOWN:
					{
						origin[2]-=move_size[id]
					}
					case MOVE_RIGHT:
					{
						origin[1]+=move_size[id]
					}
					case MOVE_LEFT:
					{
						origin[1]-=move_size[id]
					}
					case MOVE_FRONT:
					{
						origin[0]+=move_size[id]
					}
					case MOVE_BACK:
					{
						origin[0]-=move_size[id]
					}
				}
				engfunc(EngFunc_SetOrigin,arenas_ent,origin);
				stuck_check(origin,360.0)
			}
		}
	}
   
}
 
public select_the_fake_arena(code)
{
	new num;
	num = code-EXTRA_CODE
	new arenas_ent=-1;
	while((arenas_ent=engfunc(EngFunc_FindEntityByString,arenas_ent,"classname",ARENA_ENT_NAME)))
	{
		if(entity_get_int(arenas_ent,EV_INT_iuser1) == FAKE_CODE)
		{
			if(num == -1)
				set_rendering(arenas_ent,kRenderFxGlowShell,250,0,0,kRenderNormal,10)
			else if(entity_get_int(arenas_ent,EV_INT_iuser3) == code)
				set_rendering(arenas_ent,kRenderFxGlowShell,250,0,0,kRenderNormal,10)
		}
	}
	unselect_the_fake_arena(code)
   
}
 
public unselect_the_fake_arena(code)
{
	new num;
	num = code-EXTRA_CODE
	if(num == -1)
		return;
	new arenas_ent=-1;
	while((arenas_ent=engfunc(EngFunc_FindEntityByString,arenas_ent,"classname",ARENA_ENT_NAME)))
	{
		if(entity_get_int(arenas_ent,EV_INT_iuser1) == FAKE_CODE && entity_get_int(arenas_ent,EV_INT_iuser3) != code)
			set_rendering(arenas_ent,kRenderFxGlowShell,50,50,50,kRenderTransAdd,120)
	}
   
}
 
public delete_the_fake_arena(code)
{
	new arenas_ent=-1;
	new found = 0
	while((arenas_ent=engfunc(EngFunc_FindEntityByString,arenas_ent,"classname",ARENA_ENT_NAME)))
	{
		if(entity_get_int(arenas_ent,EV_INT_iuser1) == FAKE_CODE && entity_get_int(arenas_ent,EV_INT_iuser3) == code)
		{
			engfunc(EngFunc_RemoveEntity,arenas_ent)
			found++
		}
	}
	if(found)
	{
		fakes--
	}
   
}
 
public load_arena_coords(id)
{
	// Check for spawns points of the current map
	new cfgdir[32], mapname[32], filepath[100], linedata[64]
	get_configsdir(cfgdir, charsmax(cfgdir))
	get_mapname(mapname, charsmax(mapname))
	formatex(filepath, charsmax(filepath), ARENA_FILE, cfgdir, mapname)
	new arena = 0
	total_arenas = 0
	// Load spawns points
	if (file_exists(filepath))
	{
		new file = fopen(filepath,"rt"), row[4][6]
	   
		while (file && !feof(file))
		{
			fgets(file, linedata, charsmax(linedata))
		   
			// invalid spawn
			if(!linedata[0] || str_count(linedata,' ') < 2) continue;
		   
			arena++
			if (arena > MAX_ARENAS)
			{
				break
			}
		   
			// get spawn point data
			parse(linedata,row[0],5,row[1],5,row[2],5)
		   
			// origin
			arena_coord[arena][0] = floatstr(row[0])
			arena_coord[arena][1] = floatstr(row[1])
			if(bugged_map())
				arena_coord[arena][2] = MAP_FIX_Z_COORD[map_id]
			else arena_coord[arena][2] = floatstr(row[2])
 
			total_arenas = arena
		}
		if (file) fclose(file)
	}
	if(id != -1)
	{
		if(!total_arenas)
		{
			client_print_color(id,id,"%s Arena bulunamadi!",CHAT_TAG)
		}
		else
		{
			client_print_color(id,id,"%s %d ^3Arena%s Yuklendi.",CHAT_TAG,total_arenas, (total_arenas > 1 ? "lar" : ""))
		}
	}
}
 
stock bugged_map()
{
	if(!MAP_FIX_ENABLED)
		return PLUGIN_CONTINUE
	if(IS_BUGGED_MAP)
		return PLUGIN_HANDLED
	return PLUGIN_CONTINUE
}
 
stock str_count(const str[], searchchar)
{
	new count, i, len = strlen(str)
   
	for (i = 0; i <= len; i++)
	{
		if(str[i] == searchchar)
			count++
	}
   
	return count;
}
  
public Player_spawn_post(id)
{
	Set_Entity_Invisible(id, 0)
	if(is_user_alive(id))
	{
		if(is_in_duel[id] != 2)
		{
			set_task(1.0,"get_spawn_origin",id)
			return;
		}
		if(is_in_duel[id] == 2)
			spawn_back(id)
	}
}
 
public spawn_back(id)
{
	entity_set_origin(id,his_spawn[id])
	set_user_health(id,map_default_hp)
	set_user_armor(id,0)
	set_user_godmode(id, 0)
	if(is_user_connected(his_challenger[id]))
	{
		check_teams(id,his_challenger[id])
		entity_set_origin(his_challenger[id],his_spawn[his_challenger[id]])
		set_user_health(his_challenger[id],map_default_hp)
		set_user_armor(his_challenger[id],0)
		entity_set_vector(id, EV_VEC_angles, his_angle[id])
		entity_set_int(id, EV_INT_fixangle, 1)
		entity_set_vector(his_challenger[id], EV_VEC_angles, his_angle[his_challenger[id]])
		entity_set_int(his_challenger[id], EV_INT_fixangle, 1)
	}
}
 
public update_cvars()
{
	MAP_FIX_ENABLED = get_pcvar_num(cvar_z_fix)
	SOUNDS_ENABLED = get_pcvar_num(cvar_sounds)
	MAX_ROUNDS = get_pcvar_num(cvar_rounds)
	MAX_KILLS = get_pcvar_num(cvar_kills)
	MAX_COUNTDOWN = get_pcvar_num(cvar_cooldown)
	MAX_TIME = get_pcvar_num(cvar_time)
}
 
stock remove_allarenas()
{
	new arenas_ent=-1;
	while((arenas_ent=engfunc(EngFunc_FindEntityByString,arenas_ent,"classname",ARENA_ENT_NAME)))
	{
		engfunc(EngFunc_RemoveEntity,arenas_ent)
	}
	fakes = 0
}
 
public get_all_arena_coords(id)
{
	new Float:origin[3]
	new arenas_ent=-1;
	while((arenas_ent=engfunc(EngFunc_FindEntityByString,arenas_ent,"classname",ARENA_ENT_NAME)))
	{
		if(entity_get_int(arenas_ent,EV_INT_iuser2) == CENTER_CODE)
		{
			pev(arenas_ent,pev_origin,origin);
			client_print(id,print_console,"%.f %.f %.f",origin[0],origin[1],origin[2])
		}
	}
	client_print_color(id,id, "%s ^4Koordinatlar konsolda belirtildi.",CHAT_TAG)
}
 
public remove_the_fake_arena()
{
	new arenas_ent=-1;
	while((arenas_ent=engfunc(EngFunc_FindEntityByString,arenas_ent,"classname",ARENA_ENT_NAME)))
	{
		if(entity_get_int(arenas_ent,EV_INT_iuser1) == FAKE_CODE)
			engfunc(EngFunc_RemoveEntity,arenas_ent)
	}
	fakes = 0
}
 
public next_fake_arena()
{
	if(fakes_count() >= MAX_ARENAS)
		return -1
	for(new i=1;i < MAX_ARENAS+1;i++)
	{
		if(!fake_arena_exists(i))
		{
			return i
		}
	}
	return -1
	/*new num = fakes
	num++
	return num*/
}
 
public remove_the_arena(code)
{
	new arenas_ent=-1;
	while((arenas_ent=engfunc(EngFunc_FindEntityByString,arenas_ent,"classname",ARENA_ENT_NAME)))
	{
		if(entity_get_int(arenas_ent,EV_INT_iuser1) == code)
			engfunc(EngFunc_RemoveEntity,arenas_ent)
	}
}
 
public start_build(id)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED
	if(is_in_duel[id] != 2)
		return PLUGIN_HANDLED
	if(!his_challenger[id])
		return PLUGIN_HANDLED
	if(!total_arenas)
	{
		return PLUGIN_HANDLED
	}
	static Float:origin[3];
	//get_user_hitpoint(id,origin)
	/*origin[0] = 1002.911376
	origin[1] = -1561.421997
	origin[2] = 0.0*/
	origin[0] = arena_coord[arena_number[id]][0]
	origin[1] = arena_coord[arena_number[id]][1]
	origin[2] = arena_coord[arena_number[id]][2]
	new Float:fake_origin[3]
	static size
	size = sizeof(ARENA_COORDS)
	new ent_code = arena_number[id]+ARENA_CODE
	for(new coords;coords < size; coords++)
	{
		fake_origin[0] = origin[0]
		fake_origin[1] = origin[1]
		fake_origin[2] = origin[2]
		//fake_origin[2]=-712.876892
		//fake_origin[2]=-864.253723
		fake_origin[0]+=ARENA_COORDS[coords][0]*1.7
		fake_origin[1]+=ARENA_COORDS[coords][1]*1.53
	   
		new ent=engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"func_wall"));
	   
		set_pev(ent,pev_classname,ARENA_ENT_NAME);
		engfunc(EngFunc_SetModel,ent,ARENA_MODELS[0]);
		entity_set_int(ent, EV_INT_solid, SOLID_BBOX);
		engfunc(EngFunc_SetSize,ent,ARENA_MINS,ARENA_MAXS);
		entity_set_int(ent, EV_INT_movetype, MOVETYPE_NONE);
		entity_set_int(ent,EV_INT_iuser1,ent_code)
		engfunc(EngFunc_SetOrigin,ent,fake_origin);
		static Float:rvec[3];
		pev(ent,pev_v_angle,rvec);
	   
		rvec[0]=90.0;
		set_pev(ent,pev_angles,rvec);
	   
		if(ARENA_COORDS[coords][0] == 0.0 && ARENA_COORDS[coords][1] == 100.0)
		{
			create_wall(LEFT_SIDE,0,SOLID_BBOX,ent_code,0,0,fake_origin)
		}
		if(ARENA_COORDS[coords][0] == 0.0 && ARENA_COORDS[coords][1] == -100.0)
		{
			create_wall(RIGHT_SIDE,0,SOLID_BBOX,ent_code,0,0,fake_origin)
		}
		if(ARENA_COORDS[coords][0] == 0.0 && ARENA_COORDS[coords][1] == 0.0)
		{
			create_wall(TOP_SIDE,0,SOLID_BBOX,ent_code,0,0,fake_origin)
			entity_set_int(ent,EV_INT_iuser2,CENTER_CODE)
		}
		else if(ARENA_COORDS[coords][0] == 200.0 && ARENA_COORDS[coords][1] == 0.0)
		{
			create_wall(BLUE_SIDE,0,SOLID_BBOX,ent_code,0,0,fake_origin)
			if(cs_get_user_team(id) == CS_TEAM_CT)
			{
				set_spawn_positions(id,BLUE_SIDE,fake_origin,rvec)
			}                                                                              
			else
			{
				if(his_challenger[id])
				{
					set_spawn_positions(his_challenger[id],BLUE_SIDE,fake_origin,rvec)
				}
			}
			//set_rendering(ent,kRenderFxGlowShell,0,0,200,kRenderNormal,10)
		}
		else if(ARENA_COORDS[coords][0] == -100.0 && ARENA_COORDS[coords][1] == 0.0)
		{
			create_wall(RED_SIDE,0,SOLID_BBOX,ent_code,0,0,fake_origin)
			if(cs_get_user_team(id) == CS_TEAM_T)
			{
				set_spawn_positions(id,RED_SIDE,fake_origin,rvec)
			}                                                                              
			else
			{
				if(his_challenger[id])
				{
					set_spawn_positions(his_challenger[id],RED_SIDE,fake_origin,rvec)
				}
			}
			//set_rendering(ent,kRenderFxGlowShell,200,0,0,kRenderNormal,10)
		}
		spawn_back(id)
	}
   
	return PLUGIN_HANDLED;
}
 
public set_spawn_positions(id,side,Float:origin[3],Float:angle[3])
{
	if(side == BLUE_SIDE)
		his_spawn[id][0] = origin[0]-20.0
	else his_spawn[id][0] = origin[0]-120.0
	his_spawn[id][1] = origin[1]
	his_spawn[id][2] = origin[2]+50.0
	entity_get_vector(id, EV_VEC_angles,his_angle[id])
	switch(side)
	{
		case RED_SIDE:
		{
			his_angle[id][1] = 0.0
			his_angle[id][0] = 0.0
		   
		}
		case BLUE_SIDE:
		{
			his_angle[id][1] = 180.0
			his_angle[id][0] = 0.0
		}
	}
	got_spawn[id] = 1
}
 
public stuck_check(Float:origin[3],Float:radius)
{
	new player=-1;
	while((player = find_ent_in_sphere(player,origin,radius)) != 0)
	{
		if(is_user_alive(player))
		{
			if(is_player_stuck(player) && is_in_duel[player] != 2)
			{
				back_to_the_spawn(player)
			}
		}
	}
}
 
stock is_player_stuck(id)
{
	static Float:originF[3]
	pev(id, pev_origin, originF)
   
	engfunc(EngFunc_TraceHull, originF, originF, 0, (pev(id, pev_flags) & FL_DUCKING) ? HULL_HEAD : HULL_HUMAN, id, 0)
   
	if (get_tr2(0, TR_StartSolid) || get_tr2(0, TR_AllSolid) || !get_tr2(0, TR_InOpen))
		return true;
   
	return false;
}
 
public create_wall(type,alpha,solidity,code,code1,code2,Float:origin[3])
{
	new Float:wall_maxsize[3];
	new Float:wall_minsize[3];
	new Float:rvec[3];
	new ent=engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"func_wall"));
	pev(ent,pev_v_angle,rvec);
	switch(type)
	{
		case BLUE_SIDE:
		{
			wall_maxsize[0] = 2.0
			wall_minsize[0] = 0.0
			wall_maxsize[1] = 230.0
			wall_minsize[1] = -230.0
			wall_maxsize[2] = 150.0
			wall_minsize[2] = -1.0
			rvec[1]=180.0
		}
		case RED_SIDE:
		{
			wall_maxsize[0] = -150.0
			wall_minsize[0] = -152.0
			wall_maxsize[1] = 230.0
			wall_minsize[1] = -230.0
			wall_maxsize[2] = 150.0
			wall_minsize[2] = -1.0
			rvec[1]=180.0
		}
		case LEFT_SIDE:
		{
			wall_maxsize[0] = 360.0
			wall_minsize[0] = -300.0
			wall_maxsize[1] = 65.0
			wall_minsize[1] = 63.0
			wall_maxsize[2] = 150.0
			wall_minsize[2] = -1.0
			rvec[1]=90.0
		}
		case RIGHT_SIDE:
		{
			wall_maxsize[0] = 360.0
			wall_minsize[0] = -300.0
			wall_maxsize[1] = -63.0
			wall_minsize[1] = -65.0
			wall_maxsize[2] = 150.0
			rvec[1]=90.0
		}
		case TOP_SIDE:
		{
			wall_maxsize[0] = 360.0
			wall_minsize[0] = -300.0
			wall_maxsize[1] = 230.0
			wall_minsize[1] = -230.0
			wall_maxsize[2] = 150.0
			wall_minsize[2] = 148.0
			rvec[0]=90.0          
		}
	}
	set_pev(ent,pev_angles,rvec);
   
	set_pev(ent,pev_classname,ARENA_ENT_NAME);
	engfunc(EngFunc_SetModel,ent,ARENA_MODELS[0]);
	entity_set_int(ent, EV_INT_solid, solidity);
	engfunc(EngFunc_SetSize,ent,wall_minsize,wall_maxsize);
	entity_set_int(ent, EV_INT_movetype, MOVETYPE_NONE);
	entity_set_int(ent,EV_INT_iuser1,code)
	entity_set_int(ent,EV_INT_iuser2,code1)
	entity_set_int(ent,EV_INT_iuser3,code2)
	engfunc(EngFunc_SetOrigin,ent,origin);
	set_rendering(ent,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,alpha)
}
 
public get_spawn_origin(id)
{
	pev(id,pev_origin,his_original_spawn[id]);
}
 
stock get_user_hitpoint(id,Float:hOrigin[3])  {
	if(!is_user_alive(id))
		return 0;
 
	new Float:fOrigin[3],Float:fvAngle[3],Float:fvOffset[3],Float:fvOrigin[3],Float:feOrigin[3];
	new Float:fTemp[3];
 
	pev(id,pev_origin,fOrigin);
	pev(id,pev_v_angle,fvAngle);
	pev(id,pev_view_ofs,fvOffset);
 
	xs_vec_add(fOrigin,fvOffset,fvOrigin);
 
	engfunc(EngFunc_AngleVectors,fvAngle,feOrigin,fTemp,fTemp);
 
	xs_vec_mul_scalar(feOrigin,9999.9,feOrigin);
	xs_vec_add(fvOrigin,feOrigin,feOrigin);
 
	engfunc(EngFunc_TraceLine,fvOrigin,feOrigin,0,id);
	global_get(glb_trace_endpos,hOrigin);
 
	return 1;
}
 
public plugin_precache()
{
	new size;
	size = sizeof(ARENA_MODELS)
	for(new i; i< size; i++)
	{
		engfunc(EngFunc_PrecacheModel,ARENA_MODELS[i]);
		precache_model("models/v_raizo.mdl")
		precache_model("models/p_raizo.mdl")
	}
}
 
 
public round_start_event()
{
	update_cvars()
	// использование переменной для хранения имен игроков вместо того, чтобы все время восстанавливать...
	for(new id;id < MAXPLAYERS;id++)
	{
		if(is_user_connected(id))
		{
			get_user_name(id,his_name[id],charsmax(his_name))
		}
	}
}
 
public Advertise(task)
{
	client_print_color(0,0,"^3[^4Arena^3] ^1Kazan ^4veya ^1Kaybet ^3%s",DUEL_COMMAND)
	set_task(100.0,"Advertise",TASK_AD)
}

public GlobalKnife(task)
{
	client_print_color(0,0,"^3[^4Arena^3]^1 1v1 Duello yapmak istersen ^3%s ^1yaz ve birisini sec",DUEL_COMMAND)
	set_task(150.0,"GlobalKnife",TASK_DUEL)
}

public GiveUpDuel(task)
{
	client_print_color(0,0,"^3[^4Arena^3] ^1Eger duelloyu bitirmek istersen ^3%s ^1yazman yeterli",GIVEUP_COMMAND)
	set_task(200.0,"GiveUpDuel",TASK_GIVEUP)
}

public OfflineDuel(task)
{
	client_print_color(0,0,"^3[^4Arena^3] ^1duelloya davet edilmek veya edilmemek istersen ^3%s ^1yazman yeterli",TOGGLE_COMMAND)
	set_task(250.0,"OfflineDuel",TASK_OFFLINE)
}
 
public Cmd_start(id,hndle)
{
	if(!is_user_alive(id))
		return FMRES_IGNORED
	if(!is_frozen[id])
		return FMRES_IGNORED
	new Buttons = get_uc(hndle,UC_Buttons)
	if(Buttons & IN_ATTACK)
	{
		Buttons &= ~IN_ATTACK
		set_uc( hndle , UC_Buttons , Buttons )
		return FMRES_SUPERCEDE
	}
	if(Buttons & IN_ATTACK2)
	{
		Buttons &= ~IN_ATTACK2
		set_uc( hndle , UC_Buttons , Buttons )
		return FMRES_SUPERCEDE
	}
	return FMRES_IGNORED
}
 
public Player_Take_Damage(victim, inflictor, attacker, Float:damage, damage_bits)
{    
	if(is_user_connected(attacker))
	{
		if(is_in_duel[victim] == 2 || is_in_duel[attacker] == 2)
		{
			if(his_challenger[victim] != attacker || his_challenger[attacker] != victim)
			{
				// Duello yapanlari, diger oyunculardan koruyoruz
				return HAM_SUPERCEDE
			}
		}
	}
	return HAM_IGNORED
}
 
public client_putinserver(id)
{
	get_user_name(id,his_name[id],charsmax(his_name))
	reset_values(id)
	move_size[id] = 10.0
	his_offline[id] = 0
	his_previous_team[id] = 0
}
 
public client_disconnected(id)
{
	end_his_duel(id)
}
 
public end_his_duel(id)
{
	if(his_challenger[id])
	{
		client_print_color(0,0,"^3[^4Arena: %s^3] ^4%s^1 ve ^4%s^1 Duellosu oyundan biri ciktigi icin bitti^1.",arena_names[arena_number[id]],his_name[his_challenger[id]],his_name[id])
		user_can_spawn[his_challenger[id]] = 1
		user_can_spawn[id] = 1
		if(arena_number[id] == arena_number[his_challenger[id]])
			remove_the_arena(arena_number[id] +ARENA_CODE)
		back_to_the_spawn(id)
		back_to_the_spawn(his_challenger[id])
		reset_values(his_challenger[id])
	}
	reset_values(id)
}
 
public times_up_duel(id)
{
	client_print_color(0,0,"^3[^4Arena: %s^3] ^4%s^1 ve ^4%s^1 Duellosu uzun surdugu icin bitti!^1.",arena_names[arena_number[id]],his_name[his_challenger[id]],his_name[id])
	   
	if(his_challenger[id])
	{
		if(arena_number[id] == arena_number[his_challenger[id]])
			remove_the_arena(arena_number[id] +ARENA_CODE)
		user_kill(id,1)
		user_kill(his_challenger[id],1)
		//back_to_the_spawn(id)
		//back_to_the_spawn(his_challenger[id])
		reset_values(his_challenger[id])
	}
	reset_values(id)
}
 
public battle_timer(id)
{
	if(is_user_connected(id))
	{
		if(is_in_duel[id] == 2)
		{
			his_timer[id]++
			if(his_timer[id] > MAX_TIME)
			{
				times_up_duel(id)
			}
			set_task(1.0,"battle_timer",id)
		}
	}
}
 
public toggle_offline(id)
{
	switch(his_offline[id])
	{
		case 0:
		{
			his_offline[id] = 1
			client_print_color(0,0,"%s^4%s^1 Duelloya artik katilamaz cunku Cevrim Disi",CHAT_TAG,his_name[id])
		}
		default:
		{
			his_offline[id] = 0
			client_print_color(0,0,"%s^4%s^1 artik Cevrim ici ve Duelloya katilabilir .",CHAT_TAG,his_name[id])
		}
	}
}
 
public give_up_player(id)
{
	if(is_in_duel[id] != 2)
	{
    	client_print_color(id,id,"%s Hicbir duelloya katilmadiniz",CHAT_TAG)
        return
	}

	if(is_user_connected(his_challenger[id]))
	{
		client_print_color(0,0,"%s^4%s^3: Savastan kacti. ^4%s^1 :)",CHAT_TAG,his_name[id],his_name[his_challenger[id]])
		if(arena_number[id] == arena_number[his_challenger[id]])
			remove_the_arena(arena_number[id] +ARENA_CODE)
		back_to_the_spawn(id)
		back_to_the_spawn(his_challenger[id])
		reset_values(his_challenger[id])
	}
	reset_values(id)
}
 
public reward_winner(id)
{
if(is_user_connected(id))
{
// here you can reward the winner with something

give_item(id, "weapon_hegrenade") 

  
client_print_color(id,id,"%s^4Tebrikler!!!^1, ^3Savasi kazandin.^1!",CHAT_TAG)
if(SOUNDS_ENABLED)
client_cmd(id,"spk ^"%s^"",DUEL_SOUNDS[0])
/*if(cs_get_user_money(id)+15000 <= 16000)
{
cs_set_user_money(id,cs_get_user_money(id)+15000,1)
//client_print_color(id,id, DontChange,"%s^4Вы заработали ^3$15000^4!",CHAT_TAG)
} else cs_set_user_money(id,16000,1)*/
}
}
 
public reward_loser(id)
{
if(is_user_connected(id))
{
// here you can reward the winner with something
//user_kill(id,1)
client_print_color(id,id,"%s ^3Savasi kaybettin^1! Diger duelloda rakiplerini aglat.",CHAT_TAG)
if(SOUNDS_ENABLED)
client_cmd(id,"spk ^"%s^"",DUEL_SOUNDS[1])
/*if(cs_get_user_money(id)-15000 >= 0)
{
cs_set_user_money(id,cs_get_user_money(id)-15000,1)
//client_print_color(id,id, DontChange,"%s^4Ты не выиграл ^3$15000^4!",CHAT_TAG)
} else cs_set_user_money(id,0,1)*/
}
}
 
public duel_players_list(id)
{
	if(!is_user_alive(id))
	{
		client_print_color(id,id,"%s ^3Hayatta olman gerek!^1.",CHAT_TAG)
		return PLUGIN_HANDLED
	}
	if(his_offline[id])
	{
		client_print_color(id,id,"%s ^3%s ^1, Yazarak cevrim ici olman gerek",CHAT_TAG,TOGGLE_COMMAND)
		return PLUGIN_HANDLED
	}
	if(is_user_connected(his_challenger[id]))
	{
		client_print_color(id,id,"%s^4%s ^1Sana karsi savasiyor!^1.",CHAT_TAG,his_name[his_challenger[id]])
		return PLUGIN_HANDLED
	}
	if(is_user_connected(his_asker[id]))
	{
		client_print_color(id,id,"%s Ayni anda sadece bir kisiyle duello yapabilirsin. ^4%s^1.",CHAT_TAG,his_name[his_asker[id]])
		return PLUGIN_HANDLED
	}
	if(!available_duelers(id))
	{
		client_print_color(id,id,"%s ^4Duello^1 Yapabilecegin kimse yok",CHAT_TAG)
		return PLUGIN_HANDLED
	}
	if(get_next_arena() == -1)
	{
		client_print_color(id,id,"%s^4Duello yapabilecegin arena kalmadi. Diger savaslarin bitmesini bekle.",CHAT_TAG)
		return PLUGIN_HANDLED
	}
	new menu,menuformat[64];
	formatex(menuformat,charsmax(menuformat),"\w[\r1v1 Secimini Yap\w] \yBicak Duellosu ^n\dToplam Arena: %d/%d \w",arenas_count(),total_arenas)
	menu = menu_create( menuformat, "Duel_handler" );
   
	new tempid;
   
	new szName[32], szUserId[32],nameu[92],CsTeams:team;
	formatex(nameu,charsmax(nameu), "\yYenile");
	menu_additem(menu, nameu,"rf_c", 0);
	menu_addblank(menu,0)
	//get_players( players, pnum, "c" );
	for ( new e; e<MAXPLAYERS; e++ )
	{
		if(!is_user_connected(e))
			continue;
		tempid = e
		team = cs_get_user_team(tempid)
	   
		if(tempid != id && team != CS_TEAM_SPECTATOR && team != CS_TEAM_UNASSIGNED)//  && !users_in_same_team(id,tempid))
		{
			get_user_name(tempid, szName, charsmax(szName));
			formatex(szUserId, charsmax(szUserId), "%d", get_user_userid(tempid));
			if(his_offline[tempid])
			{
				formatex(nameu,charsmax(nameu), "%s \w[\dCevrim Disi\w]", szName);
				menu_additem(menu, nameu, szUserId, 0);
			}
			else if(!is_user_alive(tempid))
			{
				formatex(nameu,charsmax(nameu), "\d%s [OLU]", szName);
				menu_additem(menu, nameu, szUserId, 0);
			}
			else
			{
				if(is_in_duel[tempid] == 2)
				{
					formatex(nameu,charsmax(nameu), "%s \w[\rSavasta\w]", szName);
					menu_additem(menu, nameu, szUserId, 0);
				}
				else if(is_in_duel[tempid] == 1)
				{
					formatex(nameu,charsmax(nameu), "%s \w[\yBeklemede\w]", szName);
					menu_additem(menu, nameu, szUserId, 0);
				}
				else
				{
					formatex(nameu,charsmax(nameu), "%s", szName);
					menu_additem(menu, nameu, szUserId, 0);
				}
			}
		}
	}
   
	menu_display(id, menu, 0 );
	return PLUGIN_HANDLED
}
 
public Duel_handler( id, menu, item )
{
	if ( item == MENU_EXIT )
	{
		menu_destroy( menu );
		return PLUGIN_HANDLED;
	}
   
	new szData[32], szName[64];
	new _access, item_callback;
	menu_item_getinfo( menu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
	if(equali(szData,"rf_c"))
	{
		menu_destroy( menu );
		duel_players_list(id)
		return PLUGIN_CONTINUE
	}
	new userid = str_to_num( szData );
	//spam_hud(id)
	new enem = find_player("k", userid); // flag "k" : доступ для поиска игрока по userid
	if (is_user_connected(enem))
	{
		if(!is_user_alive(enem))
		{
			client_print_color(id,id,"%s Olu oyuncularla savasamazsin.",CHAT_TAG)
		}
		else if(his_offline[enem])
		{
			client_print_color(id,id,"%s Cevrim disi olan oyuncularla savasamazsin.",CHAT_TAG)
		}
		else
		{
			if(!is_in_duel[enem])
			{
				//spam_hud(enem)
				is_in_duel[enem] = 1
				is_in_duel[id] = 1
				his_asker[id] = enem
				his_asker[enem] = id
				ask_player(enem)
				client_print_color(0,0,"%s^4%s^1 Meydan okudu! ^4%s^1!",CHAT_TAG,his_name[id],his_name[enem])
			   
				set_task(10.0,"taken_long",id)
			}
			else
			{
				client_print_color(id,id,"%s^4%s^1 Baska bir duelloda^1..",CHAT_TAG,his_name[enem])
			}
		}
	}
	menu_destroy( menu );
	return PLUGIN_CONTINUE;
}
 
public taken_long(id)
{
	if(is_in_duel[id] == 1)
	{
		client_print_color(0,0,"%s^4%s ^3Yanit vermesi cok uzun surdu! ^4%s^1",CHAT_TAG,his_name[his_asker[id]],his_name[id])
		user_can_spawn[id] = 1
		user_can_spawn[his_asker[id]] = 1
		reset_values(his_asker[id])
		reset_values(id)
	   
	}
}
 
stock available_duelers(asker)
{
	new num;
	num = 0 // just incase...
	for(new id;id < MAXPLAYERS;id++)
	{
		if(is_user_alive(id))
		{
			if(/*!is_in_duel[id] && */id != asker) //  && !is_user_bot(id)
			{
				num++
			}
		}
	}
	return num
}
 
public ask_player(id)
{
	if(!is_user_alive(id))
	{
		return PLUGIN_HANDLED
	}
	new asker_name[32],menu_title[64];
	get_user_name(his_asker[id],asker_name,charsmax(asker_name))
	formatex(menu_title,charsmax(menu_title),"\rDuello Daveti Aldin. \y%s\r?",asker_name)
	new menu
	menu = menu_create( menu_title, "Ask_handler" );
   
	menu_additem(menu, "Kabul Et!", "user_said_yes", 0);
	menu_additem(menu, "Reddet!","user_said_no", 0);
   
	menu_display(id, menu, 0 );
	return PLUGIN_HANDLED
}
 
public Ask_handler( id, menu, item )
{
	if ( item == MENU_EXIT )
	{
		menu_destroy( menu );
		return PLUGIN_HANDLED;
	}
   
	new szData[32], szName[64];
	new _access, item_callback;
	menu_item_getinfo( menu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
   
	if(!is_user_alive(id))
	{
		client_print_color(id,id,"%s ^3Duello iptal edildi, savasabilmen icin hayatta olman gerek!",CHAT_TAG)
		client_print_color(his_asker[id],id,"%s ^3Duello iptal edildi^1,^4 %s ^1 Oldu..",CHAT_TAG,his_name[his_asker[his_asker[id]]])
		reset_values(his_asker[id])
		reset_values(id)
	}
	else if(equali(szData,"user_said_yes"))
	{
		if(get_next_arena() == -1)
		{
			client_print_color(his_asker[id],id,"%s Bos arena mevcut degil.",CHAT_TAG)
			reset_values(his_asker[id])
			reset_values(id)
		}
		else if(is_in_duel[his_asker[id]] == 1)
		{
			manage_battle(id)
			check_teams(id,his_challenger[id])
			begin_the_battle(id,his_challenger[id])
		} else
		{
			client_print_color(id,id,"%s%s Duello iptal edildi veya baskasiyla savasiyor.",CHAT_TAG,his_name[his_asker[id]])
			reset_values(his_asker[id])
			reset_values(id)
		}
	}
	else if(equali(szData,"user_said_no"))
	{
		if(is_user_connected(his_asker[id]))
		{
			client_print_color(0,0,"%s^4%s ^1Duelloyu Reddetti! ^4%s^1.",CHAT_TAG,his_name[id],his_name[his_asker[id]])
			reset_values(his_asker[id])
			reset_values(id)
		}
	   
	}
	menu_destroy( menu );
	return PLUGIN_CONTINUE;
}
 
public Player_Killed(victim, attacker, shouldgib)
{
	if(!is_user_connected(victim))
		return HAM_IGNORED;
	   
	if(is_in_duel[victim] != 2)
		return HAM_IGNORED
	   
	if(is_user_connected(his_challenger[victim]) && !is_user_connected(attacker))
	{
		if(!check_teams(victim,attacker))
			return HAM_IGNORED
	}
	if(!is_user_connected(attacker))
		return HAM_IGNORED
	   
	if(attacker == victim)
		return HAM_IGNORED
   
	if(is_in_duel[attacker] != 2 || is_in_duel[victim] != 2)
		return HAM_IGNORED
   
	if(his_challenger[victim] == attacker || his_challenger[attacker] == victim )
	{
		his_wins[attacker]++
		rounds[arena_number[attacker]]++
		static ret;
		ExecuteForward(killed_forward, ret, attacker,victim)
		ExecuteHamB( Ham_AddPoints, attacker, 1, true );
		if(Head_shot[attacker][victim])
		{
			his_HS[attacker]++
			Head_shot[attacker][victim] = false
		}
		if(rounds[arena_number[attacker]] >= MAX_ROUNDS || his_wins[attacker] >= MAX_KILLS)
		{
			if(!get_non_duelers_alive())
			{
				ExecuteHamB(Ham_CS_RoundRespawn, victim)
				Check_Results(attacker,victim)
				return HAM_SUPERCEDE
			}
			else
			{
				ExecuteHamB(Ham_CS_RoundRespawn, victim)
				Check_Results(attacker,victim)
			}
		}
		else
		{
			wait_for_enemy_loop(attacker)
			//client_print_color(attacker, DontChange,"%s^4Раунд^1:^3%d^4/^3%d^1 | ^4Ты^1:^3%d^4/^3%d^1 | ^4%s^1:^3%d^4/^3%d^1.",CHAT_TAG,rounds[arena_number[attacker]],MAX_ROUNDS,his_wins[attacker],MAX_KILLS,his_name[victim],his_wins[victim],MAX_KILLS)
			//client_print_color(victim, DontChange,"%s^4Раунд^1:^3%d^4/^3%d^1 | ^4Ты^1:^3%d^4/^3%d^1 | ^4%s^1:^3%d^4/^3%d^1.",CHAT_TAG,rounds[arena_number[attacker]],MAX_ROUNDS,his_wins[victim],MAX_KILLS,his_name[attacker],his_wins[attacker],MAX_KILLS)
		}
		Set_Entity_Invisible(victim, 1)
		set_task(0.1,"delay_respawn",victim)
		return HAM_SUPERCEDE
	}
	return HAM_IGNORED
}
  
public delay_respawn(id)
{
	if(is_user_connected(id))
	{
		if(!is_user_alive(id))
		{
			if(is_in_duel[id] == 2)
			{
				user_can_spawn[id] = 1
				ExecuteHamB(Ham_CS_RoundRespawn, id)
				user_can_spawn[id] = 0
			}else{
				user_can_spawn[id] = 1
				ExecuteHamB(Ham_CS_RoundRespawn, id)
			}
		}
		Set_Entity_Invisible(id, 0)
	}
	return PLUGIN_CONTINUE
}
public Check_Results(id,enemy)
{
	reset_teams(id)
	reset_teams(enemy)
	new id_name[64],enemy_name[64];
	get_user_name(id,id_name,charsmax(id_name))
	get_user_name(enemy,enemy_name,charsmax(enemy_name))
	if(his_wins[id] > his_wins[enemy])
	{
		client_print_color(0,0,"^3[^4Arena: %s^3] ^4%s ^1Kazandi! ^4%s ^1Durum: ^3%d/%d",arena_names[arena_number[id]],id_name,enemy_name,his_wins[id],his_wins[enemy])
		reward_winner(id)
		reward_loser(enemy)
	}
	else if(his_wins[enemy] > his_wins[id])
	{
		client_print_color(0,0,"^3[^4Arena: %s^3] ^4%s ^1Kazandi! ^4%s ^1Durum: ^3%d/%d",arena_names[arena_number[id]],enemy_name,id_name,his_wins[enemy],his_wins[id])
		reward_winner(enemy)
		reward_loser(id)
	}
	else
	{
		client_print_color(0,0,"^3[^4Арена: %s^3] ^4%s ^1ve ^4%s ^1Savasi berabere bitti^3.",arena_names[arena_number[id]],id_name,enemy_name)
		if(SOUNDS_ENABLED)
		{
			client_cmd(id,"spk ^"%s^"",DUEL_SOUNDS[2])
			client_cmd(enemy,"spk ^"%s^"",DUEL_SOUNDS[2])
		}
		if(his_wins[id] == his_wins[enemy])
		{
			back_to_the_spawn(id)
			back_to_the_spawn(enemy)
		}
	}
	//client_print_color(0,0, DontChange,"%s^3Удары в голову: ^4%s^1:^3%d ^4%s^1:^3%d^1.",CHAT_TAG,id_name,his_HS[id],enemy_name,his_HS[enemy])
	if(arena_number[id] == arena_number[enemy])
		remove_the_arena(arena_number[id] +ARENA_CODE)
	back_to_the_spawn(id)
	back_to_the_spawn(enemy)
	reset_values(enemy)
	reset_values(id)
   
}
 
public back_to_the_spawn(id)
{
	if(is_user_alive(id))
	{
		entity_set_origin(id,his_original_spawn[id])
		Set_Entity_Invisible(id, 0)
		set_user_health(id,map_default_hp)
	}
	set_user_armor(id,0)
	set_user_godmode(id, 0)
}
 
 
 
public manage_battle(id)
{
	is_in_duel[id] = 2
	his_challenger[id] = his_asker[id]
	his_challenger[his_challenger[id]] = id
	is_in_duel[his_challenger[id]] = 2
	his_asker[id] = 0
	his_wins[id] = 0
	user_can_spawn[id] = 0
	his_wins[his_challenger[id]] = 0
	new aren_code = get_next_arena()
	arena_number[id] = aren_code
	arena_number[his_challenger[id]] = aren_code
	rounds[aren_code] = 0
	new CsTeams:teamid,CsTeams:teamenemy;
	teamid = cs_get_user_team(id)
	teamenemy = cs_get_user_team(his_challenger[id])
	if(teamid == CS_TEAM_T)
	{
		his_previous_team[id] = 2
	}
	else if(teamid == CS_TEAM_CT)
	{
		his_previous_team[id] = 1
	}
	else his_previous_team[id] = 0
   
	if(teamenemy == CS_TEAM_T)
	{
		his_previous_team[his_challenger[id]] = 2
	}
	else if(teamenemy == CS_TEAM_CT)
	{
		his_previous_team[his_challenger[id]] = 1
	}
	else his_previous_team[his_challenger[id]] = 0
	start_build(his_challenger[id])
	if(SOUNDS_ENABLED)
	{
		client_cmd(id,"spk ^"%s^"",DUEL_SOUNDS[4])
		client_cmd(his_challenger[id],"spk ^"%s^"",DUEL_SOUNDS[4])
	}
	battle_timer(id)
	battle_timer(his_challenger[id])
	hud_displayer(id)
	hud_displayer(his_challenger[id])
	strip_user_weapons(his_challenger[id])
	give_item(his_challenger[id],"weapon_knife")
	set_pev(id, pev_viewmodel, g_allocVmod)  
	set_pev(id, pev_weaponmodel, g_allocPmod)
	client_print_color(0,0,"%s^4%s^1 Duelloyu kabul etti ^4%s",CHAT_TAG,his_name[id],his_name[his_challenger[id]])
}
 
public begin_the_battle(id,enemy)
{
	start_new_round(id,enemy)
}
 
public start_new_round(id,enemy)
{
	his_timer[id] = 0
	his_timer[enemy] = 0
	is_frozen[id] = 1
	is_frozen[enemy] = 1
	his_countdown[id] = MAX_COUNTDOWN
	his_countdown[enemy] = MAX_COUNTDOWN
	countdown(id)
	countdown(enemy)
	strip_user_weapons(his_challenger[id])
	give_item(his_challenger[id],"weapon_knife")
	strip_user_weapons(his_challenger[enemy])
	give_item(his_challenger[enemy],"weapon_knife")
	set_pev(his_challenger[id], pev_viewmodel, g_allocVmod)  
	set_pev(his_challenger[id], pev_weaponmodel, g_allocPmod)
	set_pev(his_challenger[enemy], pev_viewmodel, g_allocVmod)  
	set_pev(his_challenger[enemy], pev_weaponmodel, g_allocPmod)
}
 
public countdown(id)
{
	if(is_user_connected(id))
	{
		his_countdown[id]--
		if(0 >= his_countdown[id])
		{
			is_frozen[id] = 0
			unfreeze_player(id)
			if(SOUNDS_ENABLED)
				client_cmd(id,"spk ^"%s^"",DUEL_SOUNDS[6])
			client_print(id,print_center,"Savas Basladi!")
			return PLUGIN_HANDLED
		}
		else
		{
			freeze_player(id)
			if(SOUNDS_ENABLED)
				client_cmd(id,"spk ^"%s^"",DUEL_SOUNDS[5])
			client_print(id,print_center,"%d",his_countdown[id])
			if(!is_frozen[id]) // we prevent it from spamming
				is_frozen[id] = 1
		}
		set_task(1.0,"countdown",id)
	}
	return PLUGIN_CONTINUE
}
 
public reset_teams(id)
{
	if(his_previous_team[id] == 1)
	{
		cs_set_user_team(id,CS_TEAM_CT)
	}
	else if(his_previous_team[id] == 2)
	{
		cs_set_user_team(id,CS_TEAM_T)
	}
	return PLUGIN_CONTINUE
}
 
public check_teams(id,enemy)
{
	if(!is_user_connected(id) || !is_user_connected(enemy))
		return PLUGIN_CONTINUE;
	new CsTeams:teamid,CsTeams:teamenemy;
	teamid = cs_get_user_team(id)
	teamenemy = cs_get_user_team(enemy)
	if(!users_in_same_team(id,enemy) && !is_in_false_team(id) && !is_in_false_team(enemy))
		return PLUGIN_HANDLED
	if(teamid == CS_TEAM_CT && teamenemy == CS_TEAM_CT )
	{
		cs_set_user_team(id,CS_TEAM_T)
	} else if(teamid == CS_TEAM_T && teamenemy == CS_TEAM_T)
	{
		cs_set_user_team(id,CS_TEAM_CT)
	}
	else
	{
		Check_Results(id,enemy)
		return PLUGIN_CONTINUE
	}
	return PLUGIN_HANDLED
}
stock is_in_false_team(id)
{
	if(cs_get_user_team(id) == CS_TEAM_SPECTATOR || cs_get_user_team(id) == CS_TEAM_UNASSIGNED)
		return PLUGIN_HANDLED
	return PLUGIN_CONTINUE
}
stock users_in_same_team(id,enemy)
{
	if(cs_get_user_team(id) == cs_get_user_team(enemy))
		return PLUGIN_HANDLED
	return PLUGIN_CONTINUE
}
 
stock get_next_arena()
{
	next_empty_arena = 0
	for(new id;id < MAXPLAYERS;id++)
	{
		if(is_user_connected(id))
		{
			if(arena_number[id] == next_empty_arena)
			{
				next_empty_arena++
				if(next_empty_arena > total_arenas)
					return -1
			}
		}
	}
	if(next_empty_arena > total_arenas)
	{
		return -1
	}
	return next_empty_arena
}
 
stock reset_values(id)
{
	his_HS[id] = 0
	rounds[arena_number[id]] = 0
	is_in_duel[id] = 0
	his_challenger[id] = 0
	his_asker[id] = 0
	arena_number[id] = 0
	his_wins[id] = 0
	got_spawn[id] = 0
	his_timer[id] = 0
	user_can_spawn[id] = 1
}
 
public freeze_player(id)
{
	set_user_maxspeed(id,1.0)
}
 
public unfreeze_player(id)
{
	set_user_maxspeed(id,250.0)
}
 
 
 
public wait_for_enemy_loop(id)
{
	if(is_user_connected(id))
	{
		if(is_in_duel[id] == 2)
		{
			if(is_user_connected(his_challenger[id]))
			{
				if(is_in_duel[his_challenger[id]] == 2)
				{
					if(is_user_alive(his_challenger[id]))
					{
						begin_the_battle(id,his_challenger[id])
						return PLUGIN_HANDLED
					}
					set_task(0.1,"wait_for_enemy_loop",id)
				}
			}
		}
	}
	return PLUGIN_CONTINUE
}
 
public hud_displayer(id)
{
	if(is_user_connected(id))
	{
		if(is_in_duel[id] == 2 && is_user_connected(his_challenger[id]))
		{
			new name[64],his_name[64];
			get_user_name(id,name,charsmax(name))
			get_user_name(his_challenger[id],his_name,charsmax(his_name))
			set_dhudmessage(0, 255, 0, -1.0, 0.0, 0, 6.0, 0.1)
			show_dhudmessage(id, "Arena: %s | Round: %d/%d ^n%s -- %d/%d (HS:%d)^nVS^n%s -- %d/%d (HS:%d)"
			,arena_names[arena_number[id]]
			,rounds[arena_number[id]]
			,MAX_ROUNDS,name,his_wins[id]
			,MAX_KILLS,his_HS[id]
			,his_name,his_wins[his_challenger[id]]
			,MAX_KILLS,his_HS[his_challenger[id]])
		   
			set_task(0.1,"hud_displayer",id)
		}
	}
}
 
stock Set_Entity_Invisible(ent, Invisible = 1)
{
	if(!pev_valid(ent))
		return
	set_pev(ent, pev_effects, Invisible == 0 ? pev(ent, pev_effects) & ~EF_NODRAW : pev(ent, pev_effects) | EF_NODRAW)
}


 
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1048\\ f0\\ fs16 \n\\ par }
*/

Link:
Linklerini gizle
Linki Kopyala
Cevapla