Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

One ShooT - zdjęcie

One ShooT

Rejestracja: 08.12.2018
Aktualnie: Nieaktywny
Poza forum Ostatnio: 11.03.2024 20:48
-----

#776112 [Szukam] Kogoś do zaprogramowania strony WWW html+css

Napisane przez One ShooT w 18.01.2023 10:28

Bardziej na pecetowiczu bym szukała takich osób niż na  forum zwiazanych bardziej z serwerami


  • +
  • -
  • 2


#776052 Poszukuję ludzi do zrobienia projektu forum i serwerów

Napisane przez One ShooT w 15.01.2023 11:55

Nowy projekt sieci serwerów poszukuje osób na stanowiska Współwłaściciel i Technik, z doświadczeniem i umiejętnościami.

 
Ze swojej strony oferuję nakład finansowy czy to na forum, styl, domenę+hosting
 
Plan Na Sieć już jest gotowy wraz z nazwą i wszelkimi układami aczkolwiek otwarty jestem na propozycje.
 
Zacznę od tego kogo szukam?:
 
Osób z doświadczeniem w budowaniu projektów sieci serwerów, wolnego czasu i zaangażowania
Techników IPB - Ze swojej strony oferuję średnio-zaawansowaną konfiguracje Forum / Serwera dlatego przyda nam się ktoś kto ogarnia wszystko od A do Z.
Dobrze by było by dana osoba była 18+ Z racji takiej iż będzie się lepiej rozmawiało o Stronie i Biznesie.
Dobrze Poznać osobę z którą będzie się pracować.
 
A więc tak mam na imię Patryk, W tym roku skończyłem 23 lat, Na co dzień pracuje w Niemczech na magazynie.
 
 
Co do mojego doświadczenia Prowadziłem serwery do:
 
Cs;go only dd2
 
Ts3
 
Cs 1.6 
(JailBreak)
(Only DD2)
(AIM)
(COD MOD)
 
Kontakt priv 

  • +
  • -
  • 1


#776007 nie dziła amxbans

Napisane przez One ShooT w 12.01.2023 18:38

Może ten temat ci pomoże
Lub nie masz dodane SQL bansa w ftp lub skompiluj SMA całego amxbansa kompilatorem lokalnym

https://amxx.pl/topi...da-się-banować/
  • +
  • -
  • 1


#764217 [ROZWIĄZANE] Problem z pluginem [BB]

Napisane przez One ShooT w 20.01.2020 23:19

Pluginy ci nie działają wyłącz i serw ci odpali


  • +
  • -
  • 1


#764175 [DD2 + Menu Skiny SVIP/VIP]

Napisane przez One ShooT w 20.01.2020 00:01

mam sprawe powiesz mi gdzie to mam wrzucić z kolegami chcemy sobie pograć a nigdy w  to sie nie bawiłem i nie wiem jak ślicznie proszę mordo ;)

Od tego masz poradniki takie jak ten

 

https://darkgl.pl/20...xx-na-serwerze/


  • +
  • -
  • 1


#763273 HUD

Napisane przez One ShooT w 20.12.2019 04:14

Samemu możesz masz poradnik

https://amxx.pl/topi...owy-wygląd-hud/
  • +
  • -
  • 1


#763161 CoDMoD

Napisane przez One ShooT w 16.12.2019 07:12

Napisałem gg


  • +
  • -
  • 1


#756345 Problem z 3 pluginami

Napisane przez One ShooT w 04.02.2019 06:15

Skonpiluj je w kompilatorze 1.8.1 i wgraj i będą działać 


  • +
  • -
  • -1


#756184 [Problem] Jail_radio

Napisane przez One ShooT w 01.02.2019 19:58

Skompiluj SMA

 

w kompilatorze 1.8.1 powinno  zadziałać.

 

lub

zamień ścieżki tak aby pasowały do tych z oryginalnego pluginu oraz po zmianie ścieżek skompiluj

public plugin_precache(){
	precache_sound("misc/crazyclan/t1.wav");
	precache_sound("misc/crazyclan/t2.wav");
	precache_sound("misc/crazyclan/t3.wav");
	precache_sound("misc/crazyclan/t4.wav");
	precache_sound("misc/crazyclan/t5.wav");
	precache_sound("misc/crazyclan/t6.wav");
	precache_sound("misc/crazyclan/t7.wav");
	precache_sound("misc/crazyclan/t8.wav");
	precache_sound("misc/crazyclan/t9.wav");
	precache_sound("misc/crazyclan/t10.wav");
	precache_sound("misc/crazyclan/ct1.wav");
	precache_sound("misc/crazyclan/ct2.wav");
	precache_sound("misc/crazyclan/ct3.wav");
	precache_sound("misc/crazyclan/ct4.wav");
	precache_sound("misc/crazyclan/ct5.wav");
}

i pozmieniaj po prostu nazwy na swoje .

daj w .WAV

Link do pobrania całego pluginu i zobacz tak jak w odpowiedzi pisało reskio

https://amxx.pl/topi...844-jail-radio/

 

@Edit

Skompilowałem to co dałeś i mi działa jak należy.


  • +
  • -
  • 1


#755888 Just Capture The Flag (Wymarły mod)

Napisane przez One ShooT w 27.01.2019 16:23

Podsyłam Nowy Link do Pobierania do Just Capture The Flag

Ponieważ stary silnik nie chce działać poświeciłem 2 dni i najprawdopodobniej podobniej nie działa "orpheu"

 

Link do Pobrania :

https://www105.zippy...LFzmm/file.html

 

Proszę przeczytać CZYTAJ TO!!


  • +
  • -
  • 2


#755865 Wyłączyć podświetlenie Flag

Napisane przez One ShooT w 27.01.2019 12:46

Silnik

/*
*   _______     _      _  __          __
*  | _____/    | |    | | \ \   __   / /
*  | |         | |    | |  | | /  \ | |
*  | |         | |____| |  | |/ __ \| |
*  | |   ___   | ______ |  |   /  \   |
*  | |  |_  |  | |    | |  |  /    \  |
*  | |    | |  | |    | |  | |      | |
*  | |____| |  | |    | |  | |      | |
*  |_______/   |_|    |_|  \_/      \_/
*
*
*
*  Last Edited: 08-25-08
*
*  ============
*   Changelog:
*  ============
*
*  v3.1b
*    -Flag Holders no longer get spawn protection
*
*  v3.1a
*    -de_ map objective respawn bug hard-fix
*    -cs_ map objective respawn bug fix
*    -Minor fixes
*
*  v3.1
*    -Added Infinite Ammo
*    -Added Random option to weapons menu
*    -Optimized amx_ctf_on function
*
*  v3.0
*    -Rewrite #2
*
*  v2.0
*    -Rewrite
*
*  v1.0
*    -Initial Release
*
*/

#define VERSION	"3.1b"

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <csx>
#include <fakemeta>

//Remove the '//' on the next line for AMXX 1.76d compadability.
//#define amxx176d

//Max Distance from player->flag for touch to occur
#define PICKUP_DISTANCE	100.0

#define MAX_OBJECTIVES	10
#define MAX_OBJ_TYPES	8

//CTF CS Weapon Constants
#define CTF_SCOUT		1	//a
#define CTF_XM1014		2	//b
#define CTF_MAC10		4	//c
#define CTF_AUG			8	//d
#define CTF_UMP45		16	//e
#define CTF_SG550		32	//f
#define CTF_GALIL		64	//g
#define CTF_FAMAS		128	//h
#define CTF_AWP			256	//i
#define CTF_MP5NAVY		512	//j
#define CTF_M249		1024	//k
#define CTF_M3			2048	//l
#define CTF_M4A1		4096	//m
#define CTF_TMP			8192	//n
#define CTF_G3SG1		16384	//o
#define CTF_SG552		32768	//p
#define CTF_AK47		65536	//q
#define CTF_P90			131072	//r
#define CTF_P228		262144	//s
#define CTF_ELITE		524288	//t
#define CTF_FIVESEVEN		1048576	//u
#define CTF_USP			2097152	//v
#define CTF_GLOCK18		4194304	//w
#define CTF_DEAGLE		8388608	//x
#define CTF_VEST		16777216//y
#define CTF_VESTHELM		33554432//z

static const weapon_names[26][16] = 
{
	"Scout",
	"XM1014",
	"Mac10",
	"Aug",
	"UMP",
	"SG550",
	"Galil",
	"Famas",
	"AWP",
	"MP5Navy",
	"M249",
	"M3",
	"M4A1",
	"TMP",
	"G3SG1",
	"SG552",
	"AK47",
	"P90",
	"P228",
	"Elite",
	"Fiveseven",
	"USP",
	"Glock18",
	"Deagle",
	"VEST",
	"VESTHELM"
}

//Map Objective Removal
new num_objectives
new Float:objective[MAX_OBJECTIVES][3]
new objective_type[MAX_OBJECTIVES]
new objective_solidity[MAX_OBJECTIVES]
new Float:objectiveminsize[MAX_OBJECTIVES][3]
new Float:objectivemaxsize[MAX_OBJECTIVES][3]
new bool:give_c4
static const map_objectives[MAX_OBJ_TYPES][24] =
{
	"func_bomb_target",
	"func_escapezone",
	"func_hostage_rescue",
	"func_vip_safetyzone",
	"hostage_entity",
	"info_bomb_target",
	"info_hostage_rescue",
	"info_vip_start"
}
//Map Objective Removal - de_ bug fix
new weapon[33][31]
new CsArmorType:armortype[33]
new armoramount[33]
new bool:killing
new WeaponNames[31][] =
{
	"", //Blank
	"weapon_p228",
	"", //Nothing
	"weapon_scout",
	"weapon_hegrenade",
	"weapon_xm1014",
	"", //C4
	"weapon_mac10",
	"weapon_aug",
	"weapon_smokegrenade",
	"weapon_elite",
	"weapon_fiveseven",
	"weapon_ump45",
	"weapon_sg550",
	"weapon_galil",
	"weapon_famas",
	"weapon_usp",
	"weapon_glock18",
	"weapon_awp",
	"weapon_mp5navy",
	"weapon_m249",
	"weapon_m3",
	"weapon_m4a1",
	"weapon_tmp",
	"weapon_g3sg1",
	"weapon_flashbang",
	"weapon_deagle",
	"weapon_sg552",
	"weapon_ak47",
	"", //Knife
	"weapon_p90"
}

//CVAR Pointers
new togglecvar, respawntime, maxcaps, spawnprotection
#if !defined amxx176d
new allowableweapons, nades
#endif
new bool:play_sounds

//Flag
new Float:maxs[2][3] = {{-4800.0,-4800.0,-4800.0},{-4800.0,-4800.0,-4800.0}}
new Float:mins[2][3] = {{4800.0,4800.0,4800.0},{4800.0,4800.0,4800.0}}
new I_max[2][3]
new I_min[2][3]
static const holo_model[] = "models/holo.mdl"
static const blue_flag_model[] = "models/blue_flag.mdl"
static const red_flag_model[] = "models/red_flag.mdl"
static const flag_captured[] = "PVPFlagCaptured.mp3"
static const flag_returned[] = "PVPFlagReturned.mp3"
static const flag_taken[] = "PVPFlagTaken.mp3"
new beamsprite
new flag_holder[2]
new flagstand_ents[2]
new bool:is_in_safezone[33]
new TScore, CTScore

new saytext_msgid
new maxplayers

//Weapon Menu
new bool:firsttime[33]
new bool:ask[33]
new weapon_picked[2][33]
new cur_offset[33]
new options_on_menu[8][33]

//Voting
new voterounddelay, votecvar, votelength, votedelay
new bool:roundend
new bool:voting
new bool:voted
new yes, no

public plugin_init()
{
	register_plugin("GHW Capture The Flag",VERSION,"GHW_Chronic")

	togglecvar = register_cvar("ctf_on","1")
#if defined amxx176d
	register_cvar("ctf_weapons","abcdefghijklmnopqrstuvwxyz")
#else
	allowableweapons = register_cvar("ctf_weapons","abcdefghijklmnopqrstuvwxyz")
#endif
#if defined amxx176d
	register_cvar("ctf_nades","hhff")
#else
	nades = register_cvar("ctf_nades","hhff")
#endif
	respawntime = register_cvar("ctf_respawntime","3.0")
	maxcaps = register_cvar("ctf_maxcaps","25")
	votecvar = register_cvar("ctf_vote","1")
	votelength = register_cvar("ctf_votelength","20.0")
	votedelay = register_cvar("ctf_votedelay","180.0")
	voterounddelay = register_cvar("ctf_voterounddelay","5.0")
	spawnprotection = register_cvar("ctf_spawnprotection","1")

	//register_clcmd("say /spawnme","respawn_player")
	//register_clcmd("say_team /spawnme","respawn_player")
	register_clcmd("say /guns","cmd_guns")
	register_clcmd("say_team /guns","cmd_guns")
	register_clcmd("say guns","cmd_guns")
	register_clcmd("say_team guns","cmd_guns")
	register_clcmd("say /ctfvote","say_vote_hook")
	register_clcmd("say_team /ctfvote","say_vote_hook")
	register_concmd("amx_ctf_addweap","cmd_addweap",ADMIN_BAN,"<Weapon> Un-Restricts a weapon from the weapons menu.")
	register_concmd("amx_ctf_removeweap","cmd_delweap",ADMIN_BAN,"<Weapon> Restricts a weapon from the weapons menu.")

	register_concmd("amx_ctf_set_tflag","cmd_set_tflag",ADMIN_BAN,"Sets your current location to the new T Flag Spawn Location.")
	register_concmd("amx_ctf_set_ctflag","cmd_set_ctflag",ADMIN_BAN,"Sets your current location to the new CT Flag Spawn Location.")
	register_concmd("amx_ctf_off","cmd_off",ADMIN_BAN,"Turn CTF Off")
	register_concmd("amx_ctf_on","cmd_on",ADMIN_BAN,"Turn CTF On")

	register_menucmd(register_menuid("WeaponMethodMenu"),(1<<0)|(1<<1)|(1<<2),"weapon_method_pushed")
	register_menucmd(register_menuid("PrimaryWeaponSelect"),(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9),"prim_weapons_pushed")
	register_menucmd(register_menuid("SecWeaponSelect"),(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7),"sec_weapons_pushed")
	register_menucmd(register_menuid("ctfvote"),(1<<0)|(1<<1), "Key_Hook")

	register_forward(FM_Think,"FM_Think_Hook")
	register_forward(FM_PlayerPreThink,"FM_PlayerPreThink_Hook")
	register_forward(FM_SetModel,"Hook_SetModel",1)
	register_event("DeathMsg","DeathMsg","a")
	register_event("SendAudio","endround","a","2=%!MRAD_terwin","2=%!MRAD_ctwin","2=%!MRAD_rounddraw")
	register_logevent("newround",2,"1=Round_Start")

	saytext_msgid = get_user_msgid("SayText")
	maxplayers = get_maxplayers()

	if(get_pcvar_num(togglecvar))
	{
		ctf_on()
	}
}

/*
cmd_delweap cmd_addweap
*/

public cmd_delweap(id,level,cid)
{
	if(!cmd_access(id,level,cid,2))
	{
		return PLUGIN_HANDLED
	}

	new arg[32]
	read_argv(1,arg,31)

	new cvar_value[32]
#if defined amxx176d
	get_cvar_string("ctf_weapons",cvar_value,31)
#else
	get_pcvar_string(allowableweapons,cvar_value,31)
#endif

	new flags = read_flags(cvar_value)
	for(new i=0;i<26;i++)
	{
		if(equali(arg,weapon_names[i]))
		{
			new remove_flag = power(2,i)
			if(flags & remove_flag)
			{
				console_print(id,"[AMXX] Removing weapon %s from the choice list.",weapon_names[i])
				flags -= remove_flag
				get_flags(flags,cvar_value,31)
				set_cvar_string("ctf_weapons",cvar_value)
			}
			else
			{
				console_print(id,"[AMXX] Weapon %s is already off choice list.",weapon_names[i])
				
			}

			break;
		}
	}

	return PLUGIN_HANDLED
}

public cmd_addweap(id,level,cid)
{
	if(!cmd_access(id,level,cid,2))
	{
		return PLUGIN_HANDLED
	}

	new arg[32]
	read_argv(1,arg,31)

	new cvar_value[32]
#if defined amxx176d
	get_cvar_string("ctf_weapons",cvar_value,31)
#else
	get_pcvar_string(allowableweapons,cvar_value,31)
#endif

	for(new i=0;i<26;i++)
	{
		if(equali(arg,weapon_names[i]))
		{
			new flags = read_flags(cvar_value)
			new add_flag = power(2,i)
			if(!(flags & add_flag))
			{
				console_print(id,"[AMXX] Adding weapon %s to the choice list.",weapon_names[i])
				flags += add_flag
				get_flags(flags,cvar_value,31)
				set_cvar_string("ctf_weapons",cvar_value)
			}
			else
			{
				console_print(id,"[AMXX] Weapon %s is already on choice list.",weapon_names[i])
				
			}

			break;
		}
	}

	return PLUGIN_HANDLED
}

/*
  Respawn on Team Select
*/

public client_putinserver(id)
{
	set_task(1.0,"catch_jointeam",id,"",0,"b")
	ask[id] = true
	firsttime[id] = true
}

public catch_jointeam(id)
{
	if(get_pcvar_num(togglecvar) && is_user_connected(id))
	{
		static CsTeams:team
		team = cs_get_user_team(id)
		if(team==CS_TEAM_T || team==CS_TEAM_T)
		{
			remove_task(id)
			respawn_player(id)
		}
	}
	else
	{
		remove_task(id)
	}
}


/*
  Base Respawn Code
*/

public respawn_player(id)
{
	if(get_pcvar_num(togglecvar) && is_user_connected(id))
	{
		//Make the engine think he is spawning
		set_pev(id,pev_deadflag,DEAD_RESPAWNABLE)
		set_pev(id,pev_iuser1,0)
		dllfunc(DLLFunc_Think,id)

		//Move his body so if corpse is created it is not in map
		engfunc(EngFunc_SetOrigin,id,Float:{-4800.0,-4800.0,-4800.0})

		//Actual Spawn
		set_task(0.5,"spawnagain",id)
	}
}

public spawnagain(id)
{
	//Make sure he didn't disconnect in the 0.5 seconds that have passed.
	if(is_user_connected(id))
	{
		//Spawn player
		spawn(id)
		dllfunc(DLLFunc_Spawn,id)

		set_task(1.0,"weapon_method_menu",id)
	}
}


/*
  CSDM Style weapons menu
*/

public weapon_method_menu(id)
{
	if(is_user_bot(id))
	{
		weapon_picked[0][id] = 16
		weapon_picked[1][id] = 23
		give_weapons(id)
	}
	else if(firsttime[id])
	{
		firsttime[id] = false
		prim_weapons_menu(id,0)
	}
	else
	{
		cur_offset[id] = 0
		if(ask[id])
		{
			show_menu(id,(1<<0)|(1<<1)|(1<<2),"Weapon Selection Method^n^n1. Last Guns^n2. Last Guns + Save^n3. New Guns",-1,"WeaponMethodMenu")
		}
		else
		{
			give_weapons(id)
		}
	}
}

public weapon_method_pushed(id,key)
{
	switch(key)
	{
		case 0:
		{
			ask[id] = true
			give_weapons(id)
		}
		case 1:
		{
			new string[200]
			format(string,199,"[red][CTF][/red] Type [green]guns[/green] to re-activate the gun menu.")
			show_colored_message(id,string,199)
			ask[id] = false
			give_weapons(id)
		}
		case 2:
		{
			ask[id] = true
			prim_weapons_menu(id,0)
		}
	}

	return ;
}

public prim_weapons_menu(id,offset)
{
	if(offset<0) offset = 0

	new cvar_value[32]
#if defined amxx176d
	get_cvar_string("ctf_weapons",cvar_value,31)
#else
	get_pcvar_string(allowableweapons,cvar_value,31)
#endif
	new flags = read_flags(cvar_value)

	new keys, curnum, menu[2048]
	for(new i=offset;i<19;i++)
	{
		if(i==18)
		{
			options_on_menu[curnum][id] = 24
			keys += (1<<curnum)
			curnum++
			format(menu,2047,"%s^n%d. Random",menu,curnum)
			break;
		}
		else if(flags & power(2,i))
		{
			options_on_menu[curnum][id] = i
			keys += (1<<curnum)

			curnum++
			format(menu,2047,"%s^n%d. %s",menu,curnum,weapon_names[i])

			if(curnum==8)
				break;
		}
	}

	format(menu,2047,"\ySelect Primary Weapon:\w^n^n%s^n",menu)
	if(curnum==8 && offset<12)
	{
		keys += (1<<8)
		format(menu,2047,"%s^n9. Next",menu)
	}
	if(offset)
	{
		keys += (1<<9)
		format(menu,2047,"%s^n0. Back",menu)
	}

	show_menu(id,keys,menu,-1,"PrimaryWeaponSelect")
}

public prim_weapons_pushed(id,key)
{
	if(key<8)
	{
		weapon_picked[0][id] = options_on_menu[key][id]
		cur_offset[id] = 0
		sec_weapons_menu(id,0)
	}
	else
	{
		if(key==8)
			cur_offset[id] += 8
		if(key==9)
			cur_offset[id] -= 8
		prim_weapons_menu(id,cur_offset[id])
	}

	return ;
}

public sec_weapons_menu(id,offset)
{
	if(offset<0) offset = 0

	new cvar_value[32]
#if defined amxx176d
	get_cvar_string("ctf_weapons",cvar_value,31)
#else
	get_pcvar_string(allowableweapons,cvar_value,31)
#endif
	new flags = read_flags(cvar_value)

	new keys, curnum, menu[2048]
	for(new i=18;i<24;i++)
	{
		if(flags & power(2,i))
		{
			options_on_menu[curnum][id] = i
			keys += (1<<curnum)

			curnum++
			format(menu,2047,"%s^n%d. %s",menu,curnum,weapon_names[i])
		}
	}
	options_on_menu[curnum][id] = 25
	keys += (1<<curnum)
	curnum++
	format(menu,2047,"%s^n%d. Random",menu,curnum)

	format(menu,2047,"\ySelect Secondary Weapon:\w^n^n%s",menu)

	show_menu(id,keys,menu,-1,"SecWeaponSelect")
}

public sec_weapons_pushed(id,key)
{
	if(key<8)
	{
		weapon_picked[1][id] = options_on_menu[key][id]
	}

	give_weapons(id)

	return ;
}

public give_weapons(id)
{
	strip_user_weapons(id)

	give_item(id,"weapon_knife")

	new weapon[32]
	new csw = csw_contant(weapon_picked[0][id])
	get_weaponname(csw,weapon,31)
	give_item(id,weapon)
	cs_set_user_bpammo(id,csw,999)

	csw = csw_contant(weapon_picked[1][id])
	get_weaponname(csw,weapon,31)
	give_item(id,weapon)
	cs_set_user_bpammo(id,csw,999)

#if defined amxx176d
	get_cvar_string("ctf_nades",weapon,31)
#else
	get_pcvar_string(nades,weapon,31)
#endif
	new he, flash, smoke
	for(new i=0;i<strlen(weapon);i++)
	{
		switch(weapon[i])
		{
			case 'h': he++
			case 'f': flash++
			case 's': smoke++
		}
	}

	if(he) give_item(id,"weapon_hegrenade"), cs_set_user_bpammo(id,CSW_HEGRENADE,he)
	if(flash) give_item(id,"weapon_flashbang"), cs_set_user_bpammo(id,CSW_FLASHBANG,flash)
	if(smoke) give_item(id,"weapon_smokegrenade"), cs_set_user_bpammo(id,CSW_SMOKEGRENADE,smoke)

#if defined amxx176d
	get_cvar_string("ctf_weapons",weapon,31)
#else
	get_pcvar_string(allowableweapons,weapon,31)
#endif
	new flags = read_flags(weapon)
	if(flags & CTF_VESTHELM) cs_set_user_armor(id,100,CS_ARMOR_VESTHELM)
	else if(flags & CTF_VEST) cs_set_user_armor(id,100,CS_ARMOR_KEVLAR)
}

public csw_contant(weapon)
{
	new num = 29
	switch(weapon)
	{
		case 0: num = 3
		case 1: num = 5
		case 2: num = 7
		case 3: num = 8
		case 4: num = 12
		case 5: num = 13
		case 6: num = 14
		case 7: num = 15
		case 8: num = 18
		case 9: num = 19
		case 10: num = 20
		case 11: num = 21
		case 12: num = 22
		case 13: num = 23
		case 14: num = 24
		case 15: num = 27
		case 16: num = 28
		case 17: num = 30
		case 18: num = 1
		case 19: num = 10
		case 20: num = 11
		case 21: num = 16
		case 22: num = 17
		case 23: num = 26
		case 24:
		{
			new s_weapon[32]
#if defined amxx176d
			get_cvar_string("ctf_weapons",s_weapon,31)
#else
			get_pcvar_string(allowableweapons,s_weapon,31)
#endif
			new flags = read_flags(s_weapon)
			do
			{
				num = random_num(0,18)
				if(!(num & flags))
				{
					num = -1
				}
			}
			while(num==-1)
			num = csw_contant(num)
		}
		case 25:
		{
			new s_weapon[32]
#if defined amxx176d
			get_cvar_string("ctf_weapons",s_weapon,31)
#else
			get_pcvar_string(allowableweapons,s_weapon,31)
#endif
			new flags = read_flags(s_weapon)
			do
			{
				num = random_num(18,23)
				if(!(num & flags))
				{
					num = -1
				}
			}
			while(num==-1)
			num = csw_contant(num)
		}
	}
	return num;
}

public cmd_guns(id)
{
	ask[id] = true
	weapon_method_menu(id)
}


/*
  Weapon Despawn
*/

public Hook_SetModel(ent,model[])
{
	if(get_pcvar_num(togglecvar) && pev_valid(ent) && ent>maxplayers)
	{
		if(containi(model,"models/w_")==0)
		{
			if(containi(model,"nade")!=-1 || containi(model,"flash")!=-1)
			{
				set_task(2.0,"remove_nade_ent",ent,model,31)
			}
			else
			{
				set_task(0.1,"remove_ent",ent,model,31)
			}
		}
	}
}

public remove_ent(model[32],ent)
{
	if(pev_valid(ent))
	{
		static model2[32]
		pev(ent,pev_model,model2,31)
		if(equal(model,model2))	engfunc(EngFunc_RemoveEntity,ent)
	}
}

public remove_nade_ent(model[32],ent)
{
	if(pev_valid(ent))
	{
		static model2[32]
		pev(ent,pev_model,model2,31)
		if(equal(model,model2))
		{
			static Float:velocity[3]
			pev(ent,pev_velocity,velocity)
	
			if(!velocity[0] && !velocity[1] && !velocity[2])
				set_pev(ent,pev_flags,FL_KILLME)
		}
	}
}


/*
  Base Setup - Spawn Protection & Flag Spawn
*/

public plugin_precache() 
{
	precache_model(holo_model)
	precache_model(red_flag_model)
	precache_model(blue_flag_model)

	beamsprite = precache_model("sprites/dot.spr")
	precache_model("models/scientist.mdl")

	if(get_pcvar_num(register_cvar("ctf_sounds","1")))
	{
		play_sounds = true
		precache_sound(flag_captured)
		precache_sound(flag_returned)
		precache_sound(flag_taken)
	}
}

public cmd_set_tflag(id,level,cid)
{
	if(!cmd_access(id,level,cid,1))
	{
		return PLUGIN_HANDLED
	}

	setflagspawn(id,0)

	console_print(id,"[CTF] T Flag Spawn Location Saved.")

	return PLUGIN_HANDLED
}

public cmd_set_ctflag(id,level,cid)
{
	if(!cmd_access(id,level,cid,1))
	{
		return PLUGIN_HANDLED
	}

	setflagspawn(id,1)

	console_print(id,"[CTF] CT Flag Spawn Location Saved.")

	return PLUGIN_HANDLED
}

public setflagspawn(id,team)
{
	new bool:readfromfile = false
	new configfile[200]
	get_configsdir(configfile,199)
	format(configfile,199,"%s/CTF_FlagSpawns.ini",configfile)

	new mapname[32]
	get_mapname(mapname,31)
	new string[200]
	format(string,199,"%s | T | ",mapname)

	new Float:origin[3], Float:origin2[3]
	switch(team)
	{
		case 0:
		{
			pev(flag_holder[1],pev_origin,origin2)
			pev(id,pev_origin,origin)
			engfunc(EngFunc_SetOrigin,flag_holder[0],origin)
		}
		case 1:
		{
			pev(flag_holder[0],pev_origin,origin)
			pev(id,pev_origin,origin2)
			engfunc(EngFunc_SetOrigin,flag_holder[1],origin2)
		}
	}

	if(file_exists(configfile))
	{
		new read[200], trash, Fsize = file_size(configfile,1)
		for(new i=0;i<Fsize;i++)
		{
			read_file(configfile,i,read,199,trash)

			if(containi(read,string)==0)
			{
				format(string,199,"%s | T | %f %f %f | CT | %f %f %f",mapname,origin[0],origin[1],origin[2],origin2[0],origin2[1],origin2[2])
				write_file(configfile,string,i)
				readfromfile = true
				break;
			}
		}
	}

	if(!readfromfile)
	{
		format(string,199,"%s | T | %f %f %f | CT | %f %f %f",mapname,origin[0],origin[1],origin[2],origin2[0],origin2[1],origin2[2])
		write_file(configfile,string,-1)

	}
}

public find_minmaxs()
{
	new Float:origin[3], i
	new ent = engfunc(EngFunc_FindEntityByString,maxplayers,"classname","info_player_deathmatch")
	while(ent)
	{
		if(pev_valid(ent))
		{
			pev(ent,pev_origin,origin)
			for(i=0;i<3;i++)
			{
				if(origin[i] < mins[0][i])
					mins[0][i] = origin[i]
				if(origin[i] > maxs[0][i])
					maxs[0][i] = origin[i]
			}
		}
		ent = engfunc(EngFunc_FindEntityByString,ent,"classname","info_player_deathmatch")
	}

	ent = engfunc(EngFunc_FindEntityByString,maxplayers,"classname","info_player_start")
	while(ent)
	{
		if(pev_valid(ent))
		{
			pev(ent,pev_origin,origin)
			for(i=0;i<3;i++)
			{
				if(origin[i] < mins[1][i])
					mins[1][i] = origin[i]
				if(origin[i] > maxs[1][i])
					maxs[1][i] = origin[i]
			}
		}
		ent = engfunc(EngFunc_FindEntityByString,ent,"classname","info_player_start")
	}

	maxs[0][2] += 70.0
	mins[1][2] -= 70.0
	maxs[0][0] += 32.0
	mins[1][0] -= 32.0
	maxs[0][1] += 32.0
	mins[1][1] -= 32.0

	new Float:T_origin[3], Float:CT_origin[3]
	get_flagstand_origins(CT_origin,T_origin)

	ent = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target"))
	set_pev(ent,pev_classname,"Flagstand_Model")
	engfunc(EngFunc_SetModel,ent,holo_model)
	set_pev(ent,pev_effects,EF_BRIGHTLIGHT)
	set_pev(ent,pev_renderfx,kRenderFxGlowShell)
	set_pev(ent,pev_rendercolor,Float:{255.0,0.0,0.0})
	set_pev(ent,pev_rendermode,kRenderNormal)
	set_pev(ent,pev_renderamt,255.0)
	set_pev(ent,pev_gaitsequence,0)
	set_pev(ent,pev_sequence,0)
	set_pev(ent,pev_framerate,0.7)
	engfunc(EngFunc_SetOrigin,ent,T_origin)
	engfunc(EngFunc_DropToFloor,ent)
	pev(ent,pev_origin,origin)
	origin[2] += 36.0
	engfunc(EngFunc_SetOrigin,ent,origin)
	set_pev(ent,pev_nextthink,1.0)
	flagstand_ents[0] = ent
	flag_holder[0] = ent

	ent = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target"))
	set_pev(ent,pev_classname,"Flagstand_Model")
	engfunc(EngFunc_SetModel,ent,holo_model)
	set_pev(ent,pev_effects,EF_BRIGHTLIGHT)
	set_pev(ent,pev_renderfx,kRenderFxGlowShell)
	set_pev(ent,pev_rendercolor,Float:{0.0,0.0,255.0})
	set_pev(ent,pev_rendermode,kRenderNormal)
	set_pev(ent,pev_renderamt,255.0)
	set_pev(ent,pev_gaitsequence,0)
	set_pev(ent,pev_sequence,0)
	set_pev(ent,pev_framerate,0.7)
	engfunc(EngFunc_SetOrigin,ent,CT_origin)
	engfunc(EngFunc_DropToFloor,ent)
	pev(ent,pev_origin,origin)
	origin[2] += 36.0
	engfunc(EngFunc_SetOrigin,ent,origin)
	set_pev(ent,pev_nextthink,1.0)
	flagstand_ents[1] = ent
	flag_holder[1] = ent

	for(new i=0;i<2;i++)
	{
		for(new j=0;j<3;j++)
		{
			I_max[i][j] = floatround(maxs[i][j])
			I_min[i][j] = floatround(mins[i][j])
		}
	}

	set_task(5.0,"create_beamsprites")
	set_task(10.0,"create_beamsprites",1500,"",0,"b")

	ent = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target"))
	set_pev(ent,pev_classname,"CTF_T_Flag")
	engfunc(EngFunc_SetModel,ent,red_flag_model)
	set_pev(ent,pev_movetype,MOVETYPE_FLY)
	FM_Think_Hook(ent)

	ent = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target"))
	set_pev(ent,pev_classname,"CTF_CT_Flag")
	engfunc(EngFunc_SetModel,ent,blue_flag_model)
	set_pev(ent,pev_movetype,MOVETYPE_FLY)
	FM_Think_Hook(ent)
}

public get_flagstand_origins(Float:CT_origin[3],Float:T_origin[3])
{
	new i
	new Float:midpoint[2][3]
	for(i=0;i<2;i++)
	{
		for(new j=0;j<3;j++)
		{
			midpoint[i][j] = (maxs[i][j] + mins[i][j]) / 2.0
		}
	}

	new configfile[200]
	get_configsdir(configfile,199)
	format(configfile,199,"%s/CTF_FlagSpawns.ini",configfile)

	T_origin[0] = midpoint[0][0]
	T_origin[1] = midpoint[0][1]
	T_origin[2] = midpoint[0][2]
	CT_origin[0] = midpoint[1][0]
	CT_origin[1] = midpoint[1][1]
	CT_origin[2] = midpoint[1][2]

	new mapname[32]
	get_mapname(mapname,31)
	new string[200]
	format(string,199,"%s | T | ",mapname)

	if(file_exists(configfile))
	{
		new read[200], trash, Fsize = file_size(configfile,1)
		for(new i=0;i<Fsize;i++)
		{
			read_file(configfile,i,read,199,trash)

			if(containi(read,string)==0)
			{
				format(read,199,read[strlen(string)])
				replace_all(read,199," | CT |","")
				strbreak(read,string,199,read,199)
				T_origin[0] = str_to_float(string)
				strbreak(read,string,199,read,199)
				T_origin[1] = str_to_float(string)
				strbreak(read,string,199,read,199)
				T_origin[2] = str_to_float(string)
				strbreak(read,string,199,read,199)
				CT_origin[0] = str_to_float(string)
				strbreak(read,string,199,read,199)
				CT_origin[1] = str_to_float(string)
				strbreak(read,string,199,read,199)
				CT_origin[2] = str_to_float(string)
				break;
			}
		}
	}

	return ;
}

public FM_Think_Hook(ent)
{
	if(pev_valid(ent))
	{
		static classname[32]
		pev(ent,pev_classname,classname,31)
		if(equal(classname,"Flagstand_Model"))
		{
			static Float:angles[3]
			pev(ent,pev_angles,angles)
			angles[1] += 0.3
			while(angles[1]>180.0) angles[1] -= 360.0
			set_pev(ent,pev_angles,angles)
			set_pev(ent,pev_nextthink,1.0)
		}
		else if(equal(classname,"CTF_T_Flag"))
		{
			Flag_Think_Hook(ent,0)
			set_pev(ent,pev_nextthink,1.0)
		}
		else if(equal(classname,"CTF_CT_Flag"))
		{
			Flag_Think_Hook(ent,1)
			set_pev(ent,pev_nextthink,1.0)
		}
	}
}

public create_beamsprites()
{
	if(get_pcvar_num(spawnprotection))
	{
		//T Base
		create_beam_message(I_max[0][0],I_max[0][1],I_max[0][2],I_max[0][0],I_min[0][1],I_max[0][2],255,0)
		//create_beam_message(I_max[0][0],I_max[0][1],I_min[0][2],I_max[0][0],I_min[0][1],I_min[0][2],255,0)
		create_beam_message(I_max[0][0],I_max[0][1],(I_max[0][2] + I_min[0][2]) / 2,I_max[0][0],I_min[0][1],(I_max[0][2] + I_min[0][2]) / 2,255,0)
	
		create_beam_message(I_max[0][0],I_max[0][1],I_max[0][2],I_min[0][0],I_max[0][1],I_max[0][2],255,0)
		//create_beam_message(I_max[0][0],I_max[0][1],I_min[0][2],I_min[0][0],I_max[0][1],I_min[0][2],255,0)
		create_beam_message(I_max[0][0],I_max[0][1],(I_max[0][2] + I_min[0][2]) / 2,I_min[0][0],I_max[0][1],(I_max[0][2] + I_min[0][2]) / 2,255,0)
	
		create_beam_message(I_min[0][0],I_max[0][1],I_max[0][2],I_min[0][0],I_min[0][1],I_max[0][2],255,0)
		//create_beam_message(I_min[0][0],I_max[0][1],I_min[0][2],I_min[0][0],I_min[0][1],I_min[0][2],255,0)
		create_beam_message(I_min[0][0],I_max[0][1],(I_max[0][2] + I_min[0][2]) / 2,I_min[0][0],I_min[0][1],(I_max[0][2] + I_min[0][2]) / 2,255,0)
	
		create_beam_message(I_min[0][0],I_min[0][1],I_max[0][2],I_max[0][0],I_min[0][1],I_max[0][2],255,0)
		//create_beam_message(I_min[0][0],I_min[0][1],I_min[0][2],I_max[0][0],I_min[0][1],I_min[0][2],255,0)
		create_beam_message(I_min[0][0],I_min[0][1],(I_max[0][2] + I_min[0][2]) / 2,I_max[0][0],I_min[0][1],(I_max[0][2] + I_min[0][2]) / 2,255,0)
	
		//CT Base
		create_beam_message(I_max[1][0],I_max[1][1],I_max[1][2],I_max[1][0],I_min[1][1],I_max[1][2],0,255)
		//create_beam_message(I_max[1][0],I_max[1][1],I_min[1][2],I_max[1][0],I_min[1][1],I_min[1][2],255,0)
		create_beam_message(I_max[1][0],I_max[1][1],(I_max[1][2] + I_min[1][2]) / 2,I_max[1][0],I_min[1][1],(I_max[1][2] + I_min[1][2]) / 2,0,255)
	
		create_beam_message(I_max[1][0],I_max[1][1],I_max[1][2],I_min[1][0],I_max[1][1],I_max[1][2],0,255)
		//create_beam_message(I_max[1][0],I_max[1][1],I_min[1][2],I_min[1][0],I_max[1][1],I_min[1][2],255,0)
		create_beam_message(I_max[1][0],I_max[1][1],(I_max[1][2] + I_min[1][2]) / 2,I_min[1][0],I_max[1][1],(I_max[1][2] + I_min[1][2]) / 2,0,255)
	
		create_beam_message(I_min[1][0],I_max[1][1],I_max[1][2],I_min[1][0],I_min[1][1],I_max[1][2],0,255)
		//create_beam_message(I_min[1][0],I_max[1][1],I_min[1][2],I_min[1][0],I_min[1][1],I_min[1][2],255,0)
		create_beam_message(I_min[1][0],I_max[1][1],(I_max[1][2] + I_min[1][2]) / 2,I_min[1][0],I_min[1][1],(I_max[1][2] + I_min[1][2]) / 2,0,255)
	
		create_beam_message(I_min[1][0],I_min[1][1],I_max[1][2],I_max[1][0],I_min[1][1],I_max[1][2],0,255)
		//create_beam_message(I_min[1][0],I_min[1][1],I_min[1][2],I_max[1][0],I_min[1][1],I_min[1][2],255,0)
		create_beam_message(I_min[1][0],I_min[1][1],(I_max[1][2] + I_min[1][2]) / 2,I_max[1][0],I_min[1][1],(I_max[1][2] + I_min[1][2]) / 2,0,255)
	}
}

public create_beam_message(origin1_0,origin1_1,origin1_2,origin2_0,origin2_1,origin2_2,r,b)
{
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY) 
	write_byte(0)		//TE_BEAMPOINTS
	write_coord(origin1_0)
	write_coord(origin1_1)
	write_coord(origin1_2)
	write_coord(origin2_0)
	write_coord(origin2_1)
	write_coord(origin2_2)
	write_short(beamsprite)
	write_byte(1)	// framestart
	write_byte(1)	// framerate
	write_byte(110)	// life in 0.1's
	write_byte(5)	// width
	write_byte(0)	// noise
	write_byte(r)
	write_byte(0)
	write_byte(b)
	write_byte(200)	// brightness
	write_byte(0)	// speed
	message_end()
}

public FM_PlayerPreThink_Hook(id)
{
	if(is_user_alive(id) && !is_user_bot(id) && get_pcvar_num(spawnprotection) && get_pcvar_num(togglecvar) && id!=flag_holder[0] && id!=flag_holder[1])
	{
		static Float:origin[3]
		pev(id,pev_origin,origin)
		if(is_in_safezone[id])
		{
			new buttons = pev(id,pev_button)
			if(buttons & IN_ATTACK) buttons -= IN_ATTACK
			if(buttons & IN_ATTACK2) buttons -= IN_ATTACK2
			set_pev(id,pev_button,buttons)

			buttons = pev(id,pev_oldbuttons)
			if(buttons & IN_ATTACK) buttons -= IN_ATTACK
			if(buttons & IN_ATTACK2) buttons -= IN_ATTACK2
			set_pev(id,pev_oldbuttons,buttons)

			if(!((origin[0]<=maxs[0][0] && origin[0]>=mins[0][0] && origin[1]<=maxs[0][1] && origin[1]>=mins[0][1]) || (origin[0]<=maxs[1][0] && origin[0]>=mins[1][0] && origin[1]<=maxs[1][1] && origin[1]>=mins[1][1])))
			{
				unsafezone(id)
			}
		}
		else if((origin[0]<=maxs[0][0] && origin[0]>=mins[0][0] && origin[1]<=maxs[0][1] && origin[1]>=mins[0][1]) || (origin[0]<=maxs[1][0] && origin[0]>=mins[1][0] && origin[1]<=maxs[1][1] && origin[1]>=mins[1][1]))
		{
			switch(cs_get_user_team(id))
			{
				case CS_TEAM_T: in_safezone(id,255,0,0)
				case CS_TEAM_CT: in_safezone(id,0,0,255)
				default: in_safezone(id,0,255,0)
			}
		}
	}
}

public in_safezone(id,r,g,b)
{
	set_user_godmode(id,1)
	set_user_rendering(id,kRenderFxGlowShell,r,g,b,kRenderTransColor,50)
	is_in_safezone[id] = true
	message_begin(MSG_ONE,get_user_msgid("ScreenFade"),{0,0,0},id)
	write_short(~0)
	write_short(~0)
	write_short(1<<12)
	write_byte(r)
	write_byte(g)
	write_byte(b)
	write_byte(100)
	message_end()
	new param[3]
	param[0] = r
	param[1] = g
	param[2] = b
	if(!task_exists(id + 20000)) set_task(8.0,"reflash",id + 20000,param,3,"b")
	set_task(0.5,"reflash",id + 20000,param,3)
}

public reflash(param[3],id)
{
	id -= 20000
	if(!is_in_safezone[id] || !is_user_alive(id))
	{
		remove_task(id + 20000)
	}
	else
	{
		message_begin(MSG_ONE,get_user_msgid("ScreenFade"),{0,0,0},id)
		write_short(~0)
		write_short(~0)
		write_short(1<<12)
		write_byte(param[0])
		write_byte(param[1])
		write_byte(param[2])
		write_byte(100)
		message_end()
	}
}

public unsafezone(id)
{
	set_user_godmode(id)
	set_user_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,255)
	is_in_safezone[id] = false
	message_begin(MSG_ONE,get_user_msgid("ScreenFade"),{0,0,0},id)
	write_short(~0)
	write_short(~0)
	write_short(1<<12)
	write_byte(0)
	write_byte(0)
	write_byte(0)
	write_byte(1)
	message_end()
	remove_task(id + 20000)
}


/*
  Flag Think
*/

public Flag_Think_Hook(ent,team)
{
	if(pev_valid(flag_holder[team]))
	{
		static Float:origin[3], Float:origin2[3]
		pev(flag_holder[team],pev_origin,origin)
		origin[2] += 16.0
		pev(ent,pev_origin,origin2)
		if(get_distance_f(origin,origin2)>50.0)
			engfunc(EngFunc_SetOrigin,ent,origin)

		if(flag_holder[team]!=flagstand_ents[team] && flag_holder[(team + 1) % 2]==flagstand_ents[(team + 1) % 2])
		{
			pev(flagstand_ents[(team + 1) % 2],pev_origin,origin)
			if(get_distance_f(origin2,origin)<PICKUP_DISTANCE)
			{
				new string[200]
				new cvar_value = get_pcvar_num(maxcaps)
				new ministring[4]
				if(team)
				{
					ministring = "CT"
					TScore++
					if(cvar_value<=TScore)
					{
						format(string,199,"[red][CTF][/red] Game Over. [green]Ts[/green] won.")
						show_colored_message(0,string,199)
						endmap()
					}
				}
				else
				{
					ministring = "T"
					CTScore++
					if(cvar_value<=CTScore)
					{
						format(string,199,"[red][CTF][/red] Game Over. [green]CTs[/green] won.")
						show_colored_message(0,string,199)
						endmap()
					}
				}
				new name[32]
				get_user_name(flag_holder[team],name,31)
				format(string,199,"[red][CTF][/red] [green]%s[/green] captured the [green]%s[/green] flag.",name,ministring)
				if(play_sounds) client_cmd(0,"mp3 play sound/%s",flag_captured)
				show_colored_message(0,string,199)
				flag_holder[team] = flagstand_ents[team]
				write_hudmsg()

	
				return ;
			}
		}

		pev(flag_holder[team],pev_velocity,origin)
		set_pev(ent,pev_velocity,origin)
	}

	if(flag_holder[team]==flagstand_ents[team] || !flag_holder[team])
	{
		static Float:origin[3]
		static Float:flag_origin[3]
		pev(ent,pev_origin,flag_origin)
		static players[32], num
		get_players(players,num,"ach")
		for(new i=0;i<num;i++)
		{
			if(get_user_team(players[i])!=(team + 1))
			{
				pev(players[i],pev_origin,origin)
				if(get_distance_f(origin,flag_origin)<PICKUP_DISTANCE)
				{
					new ministring[4]
					if(team) ministring = "CT"
					else ministring = "T"
					flag_holder[team] = players[i]
					new name[32]
					new string[200]
					get_user_name(players[i],name,31)
					format(string,199,"[red][CTF][/red] [green]%s[/green] picked up the [green]%s[/green] flag.",name,ministring)
					if(play_sounds) client_cmd(0,"mp3 play sound/%s",flag_taken)
					show_colored_message(0,string,199)
					flag_holder[team] = players[i]
					write_hudmsg()
					unsafezone(players[i])
					break;
				}
			}
			else if(!flag_holder[team])
			{
				pev(players[i],pev_origin,origin)
				if(get_distance_f(origin,flag_origin)<PICKUP_DISTANCE)
				{
					new ministring[4]
					if(team) ministring = "CT"
					else ministring = "T"
					flag_holder[team] = players[i]
					new name[32]
					new string[200]
					get_user_name(players[i],name,31)
					format(string,199,"[red][CTF][/red] [green]%s[/green] returned the [green]%s[/green] flag.",name,ministring)
					if(play_sounds) client_cmd(0,"mp3 play sound/%s",flag_returned)
					show_colored_message(0,string,199)
					flag_holder[team] = flagstand_ents[team]
					write_hudmsg()
					break;
				}
			}
		}
	}

	return ;
}

public client_disconnect(id)
{
	if(read_data(2)==flag_holder[0])
	{
		flag_holder[0] = 0
		new string[200]
		format(string,199,"[red][CTF][/red] [green]UNKNOWN[/green] dropped the [green]T[/green] flag.")
		if(play_sounds) client_cmd(0,"mp3 play sound/%s",flag_taken)
		show_colored_message(0,string,199)
		write_hudmsg()
	}
	else if(read_data(2)==flag_holder[1])
	{
		flag_holder[1] = 0
		new string[200]
		format(string,199,"[red][CTF][/red] [green]UNKNOWN[/green] dropped the [green]CT[/green] flag.")
		if(play_sounds) client_cmd(0,"mp3 play sound/%s",flag_taken)
		show_colored_message(0,string,199)
		write_hudmsg()
	}
}

public DeathMsg()
{
	new victim = read_data(2)
	if(is_user_connected(victim))
	{
		if(victim==flag_holder[0])
		{
			flag_holder[0] = 0
			new name[32]
			new string[200]
			get_user_name(victim,name,31)
			format(string,199,"[red][CTF][/red] [green]%s[/green] dropped the [green]T[/green] flag.",name)
			show_colored_message(0,string,199)
			write_hudmsg()
		}
		else if(victim==flag_holder[1])
		{
			flag_holder[1] = 0
			new name[32]
			new string[200]
			get_user_name(victim,name,31)
			format(string,199,"[red][CTF][/red] [green]%s[/green] dropped the [green]CT[/green] flag.",name)
			show_colored_message(0,string,199)
			write_hudmsg()
		}
		set_task(get_pcvar_float(respawntime),"respawn_player",victim)
	}
}

public show_colored_message(id,string[],maxlen)
{
	replace_all(string,maxlen,"[blue]","^x03")
	replace_all(string,maxlen,"[/blue]","^x01")
	replace_all(string,maxlen,"[red]","^x03")
	replace_all(string,maxlen,"[/red]","^x01")
	replace_all(string,maxlen,"[green]","^x04")
	replace_all(string,maxlen,"[/green]","^x01")
	format(string,maxlen,"^x04^x01%s",string)

	static q
	q++
	if(!id)
	{
		static players[32], num
		get_players(players,num,"ch")
		for(new i=0;i<num;i++)
		{
			message_begin(MSG_ONE,saytext_msgid,{0,0,0},players[i])
			write_byte(players[i])
			write_string(string)
			message_end()
		}
	}
	else
	{
		message_begin(MSG_ONE,saytext_msgid,{0,0,0},id)
		write_byte(id)
		write_string(string)
		message_end()
	}
}

public write_hudmsg()
{
	new flagloc[32]
	if(!flag_holder[0])
	{
		format(flagloc,31,"On Ground")
	}
	else if(flag_holder[0]==flagstand_ents[0])
	{
		format(flagloc,31,"Base")
	}
	else if(is_user_alive(flag_holder[0]))
	{
		get_user_name(flag_holder[0],flagloc,31)
	}

	set_hudmessage(255, 0, 0, -1.0, 0.03, 0, 6.0, 12.0, 0.0, 0.0)
	show_hudmessage(0,"[ %d ] T Flag: %s",TScore,flagloc)

	if(!flag_holder[1])
	{
		format(flagloc,31,"On Ground")
	}
	else if(flag_holder[1]==flagstand_ents[0])
	{
		format(flagloc,31,"Base")
	}
	else if(is_user_alive(flag_holder[1]))
	{
		get_user_name(flag_holder[1],flagloc,31)
	}

	set_hudmessage(0, 0, 255, -1.0, 0.03, 0, 6.0, 12.0, 0.0, 0.0,3)
	show_hudmessage(0,"_^n [ %d ] CT Flag: %s",CTScore,flagloc)
}

public endmap()
{
	new trash
	new map[32]
	new configfile[200]
	get_basedir(configfile,199)
	format(configfile,199,"%s/maps.ini",configfile)
	format(map,31,"de_dust")
	if(file_exists(configfile)) read_file(configfile,random_num(0,file_size(configfile,1) - 1),map,31,trash)
	if(!is_map_valid(map))
	{
		if(file_size(configfile,1)<3)
		{
			server_cmd("amx_map de_dust2;amx_map de_dust2_cz")
		}
		else
		{
			set_task(0.1,"endmap")
		}
	}
	else server_cmd("amx_map %s",map)
}


/*
  CTF Vote (From v2.0)
*/

public say_vote_hook(id)
{
	if(!get_pcvar_num(votecvar))
	{
		client_print(id,print_chat,"[CTF] Voting disabled")
	}
	else if(roundend)
	{
		client_print(id,print_chat,"[CTF] Voting can't start. People are buying.")
	}
	else if(voting)
	{
		client_print(id,print_chat,"[CTF] Voting currently in progrss.")
	}
	else if(voted)
	{
		client_print(id,print_chat,"[CTF] Can't vote this soon after a vote.")
	}
	else if(get_pcvar_num(togglecvar))
	{
		voting=true
		voted=true
		show_menu(0,(1<<0)|(1<<1),"\bTurn CTF off?^n^n\w1. Yes^n\w2. No",-1,"ctfvote")
		set_task(get_pcvar_float(votelength),"voting_over",0)
		set_task(get_pcvar_float(votedelay),"voted_over")
	}
	else
	{
		voting=true
		voted=true
		show_menu(0,(1<<0)|(1<<1),"\bTurn CTF on?^n^n\w1. Yes^n\w2. No",-1,"ctfvote")
		set_task(get_pcvar_float(votelength),"voting_over",1)
		set_task(get_pcvar_float(votedelay),"voted_over")
	}
}

public Key_Hook(id,key)
{
	if(voting)
	{
		client_print(id,print_chat,"[CTF] Vote Accepted.")
		if(!key) yes++
		else no++
	}
}

public voting_over(num)
{
	if(num)
	{
		client_print(0,print_chat,"[CTF] Voting to turn CTF on results: Yes: %d | No: %d",yes,no)
		if(yes>no)
		{
			ctf_on()
		}
	}
	else
	{
		client_print(0,print_chat,"[CTF] Voting to turn CTF off results: Yes: %d | No: %d",yes,no)
		if(yes>no)
		{
			ctf_off()
		}
	}
	yes=0
	no=0
	voting=false
}

public voted_over()
{
	voted=false
}

public endround()
{
	roundend =  true
	set_task(7.0 + get_pcvar_float(voterounddelay),"roundstart")
}

public roundstart()
{
	roundend = false
}


/*
  Off / On Functions
*/

public ctf_off()
{
	set_pcvar_num(togglecvar,0)
	remove_task(1234)
	remove_task(1500)
	engfunc(EngFunc_SetOrigin,flagstand_ents[0],Float:{-4800.0,-4800.0,-4800.0})
	engfunc(EngFunc_SetOrigin,flagstand_ents[1],Float:{-4800.0,-4800.0,-4800.0})
	flag_holder[0] = flagstand_ents[0]
	flag_holder[1] = flagstand_ents[1]
	add_objectives()
	for(new i=1;i<=32;i++)
	{
		if(is_user_alive(i) && is_in_safezone[i])
		{
			unsafezone(i)
		}
	}
}

public ctf_on()
{
	set_pcvar_num(togglecvar,1)
	set_task(10.0,"create_beamsprites",1500,"",0,"b")
	if(!pev_valid(flagstand_ents[0]) || !pev_valid(flagstand_ents[1]))
	{
		set_task(0.5,"find_minmaxs")
	}
	else
	{
		new Float:T_origin[3], Float:CT_origin[3]
		get_flagstand_origins(CT_origin,T_origin)
		engfunc(EngFunc_SetOrigin,flagstand_ents[0],T_origin)
		engfunc(EngFunc_SetOrigin,flagstand_ents[1],CT_origin)
		engfunc(EngFunc_DropToFloor,flagstand_ents[0])
		engfunc(EngFunc_DropToFloor,flagstand_ents[1])
		pev(flagstand_ents[0],pev_origin,T_origin)
		pev(flagstand_ents[1],pev_origin,CT_origin)
		T_origin[2] += 36.0
		CT_origin[2] += 36.0
		engfunc(EngFunc_SetOrigin,flagstand_ents[0],T_origin)
		engfunc(EngFunc_SetOrigin,flagstand_ents[1],CT_origin)
	}
	set_task(10.0,"write_hudmsg",1234,"",0,"b")
	remove_objectives()
	set_task(10.0,"ctf_restartround")
	remove_task(5547)
	remove_task(5548)
	client_print(0,print_center,"[CTF] CTF Enabled. Round Restarting in 10 seconds.")
}

public ctf_restartround()
{
	set_cvar_num("sv_restartround",1)
	for(new i=1;i<=32;i++)
	{
		if(is_user_connected(i))
		{
			firsttime[i] = true
			weapon_method_menu(i)
		}
	}
}


/*
  Off / On Commands
*/

public cmd_off(id,level,cid)
{
	if(!cmd_access(id,level,cid,1))
	{
		return PLUGIN_HANDLED
	}

	if(get_pcvar_num(togglecvar))
	{
		console_print(id,"[CTF] CTF Turned Off.")
		ctf_off()
		new string[200]
		format(string,199,"[red][CTF][/red] CTF Turned [green]Off[/green].")
		show_colored_message(0,string,199)
	}
	else
	{
		console_print(id,"[CTF] CTF Is Already Turned Off.")
	}

	return PLUGIN_HANDLED
}


public cmd_on(id,level,cid)
{
	if(!cmd_access(id,level,cid,1))
	{
		return PLUGIN_HANDLED
	}

	if(!get_pcvar_num(togglecvar))
	{
		console_print(id,"[CTF] CTF Turned On.")
		ctf_on()
		new string[200]
		format(string,199,"[red][CTF][/red] CTF Turned [green]On[/green].")
		show_colored_message(0,string,199)
	}
	else
	{
		console_print(id,"[CTF] CTF Is Already Turned On.")
	}

	return PLUGIN_HANDLED
}

/*
  Remove Map Objectives
*/

public remove_objectives()
{
	new ent

	for(new i=0;i<MAX_OBJ_TYPES;i++)
	{
		ent = engfunc(EngFunc_FindEntityByString,maxplayers,"classname",map_objectives[i])
		while(ent)
		{
			if(pev_valid(ent))
			{
				objective_type[num_objectives] = i
				pev(ent,pev_origin,objective[num_objectives])
				pev(ent,pev_size,objectiveminsize[num_objectives],objectivemaxsize[num_objectives])
				pev(ent,pev_solid,objective_solidity[num_objectives])
				engfunc(EngFunc_RemoveEntity,ent)
				num_objectives++
			}
			ent = engfunc(EngFunc_FindEntityByString,ent,"classname",map_objectives[i])
		}
	}

	give_c4 = false
}

public add_objectives()
{
	new ent
	for(num_objectives--;num_objectives>=0;num_objectives--)
	{
		if(objective_type[num_objectives]==0 || objective_type[num_objectives]==5) give_c4 = true
		ent = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,map_objectives[objective_type[num_objectives]]))
		set_pev(ent,pev_classname,map_objectives[objective_type[num_objectives]])
		set_pev(ent,pev_origin,objective[num_objectives])
		set_pev(ent,pev_solid,objective_solidity[num_objectives])
		engfunc(EngFunc_SetSize,ent,objectiveminsize[num_objectives],objectivemaxsize[num_objectives])
		set_pev(ent,pev_size,objectiveminsize[num_objectives],objectivemaxsize[num_objectives])
		dllfunc(DLLFunc_Spawn,ent)
		dllfunc(DLLFunc_Think,ent)
		for(new i=0;i<3;i++)
		{
			objective[num_objectives][i] = 0.0
			objectiveminsize[num_objectives][i] = 0.0
			objectivemaxsize[num_objectives][i] = 0.0
		}
	}
	num_objectives=0
}

//All this handles de_ maps - making them re-work if ctf is turned off during runtime.
public newround()
{
	if(give_c4) set_task(0.5,"manually_give_c4",5547)
}

public manually_give_c4()
{
	if(!get_pcvar_num(togglecvar))
	{
		new found = 0
		static start
		if(start<1 || start>maxplayers) start = 1
		for(;start<=maxplayers;start++)
		{
			if(is_user_alive(start) && cs_get_user_team(start)==CS_TEAM_T)
			{
				found = start
				break;
			}
		}
		if(!found)
		{
			for(start = 0;start<=maxplayers;start++)
			{
				if(is_user_alive(start) && cs_get_user_team(start)==CS_TEAM_T)
				{
					found = start
					break;
				}
			}
		}
		if(found) give_item(found,"weapon_c4")
	}
	set_task(get_cvar_float("mp_roundtime") * 60.0,"force_endround",5548)
}

public bomb_planted() remove_task(5548)

public force_endround()
{
	getweapons()
	set_task(0.5,"killum")
}

public getweapons()
{
	static i, i2
	for(i=1;i<=maxplayers;i++)
	{
		arrayset(weapon[i],0,31)
		if(is_user_alive(i) && cs_get_user_team(i)==CS_TEAM_T)
		{
			armoramount[i] = cs_get_user_armor(i,armortype[i])
			for(i2=1;i2<=30;i2++)
			{
				if(i2!=2 && i2!=6 && i2!=29)
				{
					if(user_has_weapon(i,i2))
					{
						weapon[i][i2] = cs_get_user_bpammo(i,i2)
						if(!weapon[i][i2])  weapon[i][i2] = 1
					}
				}
			}
		}
	}
}

public killum()
{
	killing=true
	new msgblock = get_msg_block(get_user_msgid("DeathMsg"))

	set_msg_block(get_user_msgid("DeathMsg"),BLOCK_SET)
	new i
	for(i=1;i<=maxplayers;i++)
	{
		if(is_user_alive(i) && cs_get_user_team(i)==CS_TEAM_T)
		{
			user_kill(i)
			client_print(i,print_chat,"[AMXX] You Failed to complete map objective. Respawning.")
			set_task(4.0,"spawnum",i)
		}
	}
	set_msg_block(get_user_msgid("DeathMsg"),msgblock)
	killing=false
	set_task(4.5,"giveweapons")
}

public plugin_log()
{
	if(killing)
	{
		return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

public spawnum(id)
{
	cs_set_user_deaths(id,cs_get_user_deaths(id) - 1)
	set_user_frags(id,get_user_frags(id) + 1)
	dllfunc(DLLFunc_Spawn,id)
}

public giveweapons()
{
	new i, i2
	for(i=1;i<=maxplayers;i++)
	{
		if(is_user_alive(i) && cs_get_user_team(i)==CS_TEAM_T)
		{
			
			cs_set_user_armor(i,armoramount[i],armortype[i])
			strip_user_weapons(i)
			for(i2=1;i2<=30;i2++)
			{
				if(i2!=2 && i2!=6 && i2!=29)
				{
					if(weapon[i][i2])
					{
						give_item(i,WeaponNames[i2])
						cs_set_user_bpammo(i,i2,weapon[i][i2])
					}
				}
			}
			give_item(i,"weapon_knife")
		}
	}
}


  • +
  • -
  • 0


#755784 Co zrobic aby levele nie byly ujemne?

Napisane przez One ShooT w 26.01.2019 16:33

Dalej nwm Jak to Policzyć xDD

weź ktoś pomóż


  • +
  • -
  • -1


#755398 Just Capture The Flag (Wymarły mod)

Napisane przez One ShooT w 19.01.2019 23:36

https://www.gametrac...thax.com:27015/nie wiem czy wymarły , W PL UMIERA CS a serwerów tylko przybywa :D

W Polsce nie ma żadnego który by był odpalony, zagranicą ładnie pykają na takich ;) modach


  • +
  • -
  • 1


#755312 Just Capture The Flag (Wymarły mod)

Napisane przez One ShooT w 19.01.2019 02:44

Capture The Flag

Opis:

 

Mod uznany za wymarły na tym Modzie Chodzi o przejęcie jak najwięcej Flag

przeciwnych Drużyn Flagi są CT Niebieska TT Czerwona Flaga CT

Jest położona na Bs (A) Flaga Tt na (RESPIE) TT Gramy do 22 Zebranych flag drużyna która zbierze więcej flag wygrywa.

Gracz który podniesie flagę powinien zostać podświetlany na Kolor flagi. -Usunięte

 

 

 

Dodane Modele dla VIP'ów

 

Kobieta Sonia

Kobieta Estera

 

Pluginy:

; AMX Mod X plugins

; Admin Base - Always one has to be activated
admin.amxx		; admin base (required for any admin-related)
;admin_sql.amxx		; admin base - SQL version (comment admin.amxx)

; Basic
admincmd.amxx		; basic admin console commands
adminhelp.amxx		; help command for admin console commands
adminslots.amxx		; slot reservation
multilingual.amxx	; Multi-Lingual management

; Menus
menufront.amxx		; front-end for admin menus
cmdmenu.amxx		; command menu (speech, settings)
plmenu.amxx		; players menu (kick, ban, client cmds.)
;telemenu.amxx		; teleport menu (Fun Module required!)
mapsmenu.amxx		; maps menu (vote, changelevel)
pluginmenu.amxx		; Menus for commands/cvars organized by plugin

; Chat / Messages
adminchat.amxx		; console chat commands
antiflood.amxx		; prevent clients from chat-flooding the server
scrollmsg.amxx		; displays a scrolling message
imessage.amxx		; displays information messages
adminvote.amxx		; vote commands

; Map related
nextmap.amxx		; displays next map in mapcycle
mapchooser.amxx		; allows to vote for next map
timeleft.amxx		; displays time left on map

; Configuration
pausecfg.amxx		; allows to pause and unpause some plugins
statscfg.amxx		; allows to manage stats plugins via menu and commands

; Counter-Strike
;restmenu.amxx		; restrict weapons menu
statsx.amxx		; stats on death or round end (CSX Module required!)
;miscstats.amxx		; bunch of events announcement for Counter-Strike
;stats_logging.amxx	; weapons stats logging (CSX Module required!)

; Enable to use AMX Mod plugins
;amxmod_compat.amxx	; AMX Mod backwards compatibility layer

; Custom - Add 3rd party plugins here

;--------------------------;
;-----------MOD------------;
;--------------------------;
crx_showip.amxx
ctfmenu.amxx
dmc233.amxx
jctf.amxx
;GHW_CTF.amxx
jctf_sh_buyxp.amxx
jctf_sh_getxp.amxx
;--------------------------;
;--------Podstawowe--------;
;--------------------------;
admin_spec_esp.amxx		; admin ma wh po śmierci
spree.amxx			; najlepszy gracz rundy
bullet_damage.amxx
kontakt_jb.amxx
mutemenu.amxx
regulamin.amxx
vip.amxx
Menu_Broni.amxx
;rangi.amxx
przywitanie.amxx
kosa.amxx
amx_dualmp5.amxx
;--------------------------;
;--------Dodatkowe---------;
;--------------------------;
welcome.amxx			; wita admina
kill_assist.amxx		; Asysta przy zabijaniu
amp.axx				; radio na serwerze
axm_parachute.amxx		; spadochron

;--------------------------;
;-----------4FUN-----------;
;--------------------------;
lotto.amxx			; lotto
;molotov_cocktail.amxx		; molotova ;]

;--------------------------;
;--------Inne Mody---------;
;--------------------------;
1s1k.amxx			; Jeden strzał - jeden kill
;amx_dualmp5.amxx		; dual mp5
hsonly.amxx			; tylko hs

Dodać Screnny z Serwera :

 

1jpg_qweeaan.jpg

2jpg_qweeaaw.jpg

3jpg_qweeaas.jpg

 

 

Dowoland :

https://www5.zippysh...yWbBA/file.html

 

 

Edycje/Zmiany? 

 

- Usunięte podświetlenia gdy gracz podnieśię flage

- Odblokowanie wszystkich broni [Były M3 tylko]

- Zmiana menu na działające 

- Dodanie noży które dają (Speed,Demage, ITD.)

- Zmiana modeli flag 

- Modele kobiet dla VIP

- Dodanie HUD

- Dodanie menu broni

- Usunięcie pola gdzie flagi się znajdowały

- Dodanie losu dla graczy

 

Edycja/Zmiany Paczki

PatrykCS-Central 

oraz

AXEROZ

 

Jeżeli będą jakieś problemy zgłaszać będą jak najszybciej poprawiane

 


  • +
  • -
  • 3


#755292 Sklepsms

Napisane przez One ShooT w 18.01.2019 17:59

Polecam d0naciak.pl

 

Każdy serwer go powinien mieć ;)


  • +
  • -
  • 1