Raised This Month: $ Target: $400
 0% 

Clear owner of a entity Notworking


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
proffs
Senior Member
Join Date: Jul 2013
Old 03-11-2014 , 04:22   Clear owner of a entity Notworking
Reply With Quote #1

PHP Code:
public grenade_throwindexgreindexwId ) {
        if( 
wId != CSW_HEGRENADE ) {
            return 
PLUGIN_CONTINUE;
        }
        if( 
GAME_DGBALL <= g_iCurrentGame <= GAME_ZMBOMBS )
        {
        
        
// set some variables
        
entity_set_edict(greindex,EV_ENT_euser1,index); // remember the owner
        
set_task(0.3,"clearowner",greindex); // but clear it in a bit
        
entity_set_int(greindex,EV_INT_iuser1,0); // hit ground yet?
        
entity_set_int(greindex,EV_INT_iuser2,0); // still play bouncing sounds?
        
entity_set_size(greindex,Float:{-6.0,-6.0,-6.0},Float:{6.0,6.0,6.0}); // I like big balls and I cannot lie!
        
entity_set_float(greindex,EV_FL_friction,0.6);
        
        new 
random_num(1255)
        new 
random_num(1255)
        new 
random_num(1255)
        
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(22)
        
write_short(greindex)
        
write_short(beamspr)
        
write_byte(10)
        
write_byte(10)
        
write_byte(r)
        
write_byte(g)
        
write_byte(b)
        
write_byte(100)
        
message_end()
        
        
set_rendering(greindex,kRenderFxGlowShellrgb)
        
        
//                    drop
        
set_task3.0,"remove_ball",greindex );
        }
        return 
PLUGIN_CONTINUE;
}

public 
clearowner(ent
{
    if(
is_valid_ent(ent)) {
        
entity_set_edict(ent,EV_ENT_owner,0);
    }
}

public 
remove_ballent ) {
    if( 
is_valid_entent ) ) {
        
        if( 
get_entity_flagsent ) & FL_ONGROUND) {
            
remove_entityent );
        }
        else {
            
remove_entity(ent)
        }
        
    }

When ever I add this code:
PHP Code:
set_task(0.3,"clearowner",greindex); // but clear it in a bit 
PHP Code:
public clearowner(ent
{
    if(
is_valid_ent(ent)) {
        
entity_set_edict(ent,EV_ENT_owner,0);
    }

The server crashes when a player walks on a ball, and when u throw the ball it keeps floating on the floor.

Here is the original code:
PHP Code:
// grenade is thrown
 
public grenade_throw(index,greindex,wId) {
    if(!
get_cvar_num("dodgeball_on") || wId != CSW_HEGRENADE) {
        return 
PLUGIN_CONTINUE;
    }

    
// set some variables
    
entity_set_edict(greindex,EV_ENT_euser1,index); // remember the owner
    
set_task(0.3,"clearowner",greindex); // but clear it in a bit
    
entity_set_int(greindex,EV_INT_iuser1,0); // hit ground yet?
    //entity_set_int(greindex,EV_INT_iuser2,0); // still play bouncing sounds?
    
entity_set_size(greindex,Float:{-6.0,-6.0,-6.0},Float:{6.0,6.0,6.0}); // I like big balls and I cannot lie!
    
entity_set_float(greindex,EV_FL_friction,0.6);

    new 
rb;
    switch(
get_user_team(index)) {
        case 
1255;
        default: 
255;
    }

    
// make a trail
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
    
write_byte(22); // TE_BEAMFOLLOW
    
write_short(greindex); // ball
    
write_short(beamspr); // laserbeam
    
write_byte(10); // life
    
write_byte(10); // width
    
write_byte(r); // R
    
write_byte(0); // G
    
write_byte(b); // B
    
write_byte(100); // brightness
    
message_end();

    
// make it glow (so we can tell if it is dead or not)
    
set_rendering(greindex,kRenderFxGlowShell,r,0,b);

    
//                    drop
    
set_task(ROLL_TIME,"stop_roll",greindex);

    return 
PLUGIN_CONTINUE;
 }

 
// clear grenade's owner so user can touch it
 
public clearowner(ent) {
    if(
is_valid_ent(ent)) {
        
entity_set_edict(ent,EV_ENT_owner,0);
    }
 }

 
// stop a grenade from rolling too much
 
public stop_roll(ent) {
    if(
is_valid_ent(ent)) {

        
// make sure we're on the ground, this stops balls from stopping midair
        
if(get_entity_flags(ent) & FL_ONGROUND) {
            
entity_set_vector(ent,EV_VEC_velocity,Float:{0.0,0.0,0.0});
            
entity_set_float(ent,EV_FL_gravity,1.0);
        }
        else {
            
set_task(ROLL_TIME,"stop_roll",ent); // check again shortly
        
}

    }
 } 

Last edited by proffs; 03-11-2014 at 04:22.
proffs is offline
ironskillz1
AlliedModders Donor
Join Date: Jul 2012
Location: Sweden
Old 03-11-2014 , 10:06   Re: Clear owner of a entity Notworking
Reply With Quote #2

You can take the dodgeball code from here.

Code:
/*

Changelog v1.1.0

- Added 2 new days
Shark & Intervention Day.

*/
#include <amxmodx>
#include <colorchat>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta>
#include <engine>
#include <fun>
#include <dhudmessage>

#define VERSION "1.1.0"
#define TotalDays 8

new const prefix[] = "^4[PlayGround] Daysmenu:^3"

new g_iButtons[10]
new bool:CantPickGun[33]
new g_iMaxPlayers, iBeamspr
new iDay, g_msgCurWeapon

new sawMan
new cStun

new const DayNames[TotalDays][] = 
{
	"Freeday",		// 1
	"Box Fightning",	// 2
	"Dodgeball",		// 3
	"Angry Birds",		// 4
	"Sawgame",		// 5
	"Spartaday",		// 6
	"Shark Day",		// 7
	"Intervention Day"	// 8
}

new const boxing_sounds[][] =
{
	"PlayGroundv2box/boxing_deploy1.wav",    
	"PlayGroundv2box/boxing_hit1.wav",    
	"PlayGroundv2box/boxing_hit2.wav",    
	"PlayGroundv2box/boxing_hit3.wav",    
	"PlayGroundv2box/boxing_hit4.wav",    
	"PlayGroundv2box/boxing_hitwall1.wav",
	"PlayGroundv2box/boxing_slash1.wav",    
	"PlayGroundv2box/boxing_slash2.wav",    
	"PlayGroundv2box/boxing_stab.wav"    
}

new const oldknife_sounds[][] =
{
	"weapons/knife_deploy1.wav",   
	"weapons/knife_hit1.wav",   
	"weapons/knife_hit2.wav",    
	"weapons/knife_hit3.wav",    
	"weapons/knife_hit4.wav",    
	"weapons/knife_hitwall1.wav",  
	"weapons/knife_slash1.wav",    
	"weapons/knife_slash2.wav",    
	"weapons/knife_stab.wav"    
}

public plugin_init()
{
	register_plugin("PlayGround Daymenu", VERSION, "Larcyn")
	
	register_message(get_user_msgid("SendAudio"), "msg_sendaudio")
	register_message(get_user_msgid("TextMsg"), "msg_textmsg")
	
	register_event("CurWeapon", "EventCurWeapon", "be","1=1")
	register_event("DeathMsg", "eventDeathMsg", "a", "1>0");
	
	register_event("HLTV", "EventRoundRefresh", "a", "1=0", "2=0")
	register_logevent("EventRoundRefresh", 2, "1=Round_End")
	
	register_clcmd("say /dm", "CmdDayMenu")
	register_clcmd("say /daymenu", "CmdDayMenu")
	
	register_clcmd("say /stop", "CmdStopDay")
	register_clcmd("say /open", "CmdOpenCells")
	
	RegisterHam(Ham_Touch, "armoury_entity", "FwdHamPlayerPickup")
	RegisterHam(Ham_Touch, "weaponbox", "FwdHamPlayerPickup")
	RegisterHam(Ham_TraceAttack, "player", "FwdTraceAttack")
	
	register_forward(FM_EmitSound,"FwdEmitSound")
	register_forward(FM_SetModel, "FwdSetModel")
	
	register_touch("*","player","player_interact")
	register_touch("grenade","*","ball_interact")
	
	register_think("grenade", "GrenadeThink")
	
	cStun = register_cvar("box_stun", "1")
	
	g_iMaxPlayers = get_maxplayers()
	g_msgCurWeapon = get_user_msgid("CurWeapon")
	
	Setup_Buttons()
}

public plugin_natives()
	register_native("get_current_day", "_get_current_day")

public _get_current_day(iPlugin, iParams)
	return iDay

//    ______________
//___/ Misc Actions \________________________________________________________________________________
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public CmdOpenCells(iPlayer)
{
	if(!(get_user_flags(iPlayer) & ADMIN_BAN)) 
	{
		ColorChat(iPlayer, GREY, "%s Sorry, only admins can use this command.", prefix)
		return PLUGIN_HANDLED
	}
	
	new szName[33]; get_user_name(iPlayer, szName, charsmax(szName))
	ColorChat(0, GREY, "^4[PlayGround]^3 Jailbreak:^4 %s^3 opened the cells!", szName)
	
	Push_Button()
	return PLUGIN_HANDLED
}
	
public FwdHamPlayerPickup(iEntity, iPlayer)
	return (1 <= iPlayer <= g_iMaxPlayers && CantPickGun[iPlayer]) ? HAM_SUPERCEDE : HAM_IGNORED
	
public eventDeathMsg() 
{
	if(read_data(2) == sawMan && iDay == 5)
	{
		remove_task(123)
		remove_task(321)
		EventRoundRefresh()
		ColorChat(0, GREY, "%s The^4 Saw Man^3 died!", prefix)
	}
}

public EventRoundRefresh() 
{
	if(iDay == 3 || iDay == 4)
	{
		new iEnt
		while((iEnt = find_ent_by_class(iEnt, "grenade")) != 0) 
			remove_entity(iEnt)
	}
	
	iDay = 0
	sawMan = 0
	set_lights("#OFF")
	remove_task(123)
	remove_task(321)
	
	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i))
		{
			set_user_rendering(i)
			set_user_godmode(i, 0)
			set_user_noclip(i, 0)
			remove_task(i)
			cs_set_user_nvg(i, 0)
			set_user_maxspeed(i, 250.0)
			
			if(cs_get_user_team(i) == CS_TEAM_T && is_user_alive(i))
			{
				strip_user_weapons(i)
				give_item(i, "weapon_knife")
			}
	
			CantPickGun[i] = false
		}
	}
	return PLUGIN_HANDLED
}

public EventCurWeapon(iPlayer) 
{     
	new weaponID = read_data(2)
	
	if(iDay == 2 && is_user_alive(iPlayer) && cs_get_user_team(iPlayer) == CS_TEAM_T)
	{
		if(weaponID == CSW_KNIFE)
		{
			if(get_user_team(iPlayer) == 1)
			{
				entity_set_string(iPlayer, EV_SZ_viewmodel, "models/PlayGroundv2box/v_box_red.mdl")
				entity_set_string(iPlayer, EV_SZ_weaponmodel, "models/PlayGroundv2box/p_knife.mdl")
			}
		}
	}
	if(iDay == 3 && is_user_alive(iPlayer) && cs_get_user_team(iPlayer) == CS_TEAM_T)
	{
		if(weaponID == CSW_HEGRENADE)
		{
			entity_set_string(iPlayer, EV_SZ_viewmodel, "models/PlayGroundv2dodge/v_dodgeball.mdl");
			entity_set_string(iPlayer, EV_SZ_weaponmodel, "models/PlayGroundv2dodge/p_dodgeball.mdl");
		}
	}
	if(iDay == 4 && is_user_alive(iPlayer) && cs_get_user_team(iPlayer) == CS_TEAM_T)
	{
		if(weaponID == CSW_HEGRENADE)
		{
			entity_set_string(iPlayer, EV_SZ_viewmodel, "models/PlayGroundv2angry/v_hegrenade.mdl");
			entity_set_string(iPlayer, EV_SZ_weaponmodel, "models/PlayGroundv2angry/w_hegrenade.mdl");
		}
	}
	if(iDay == 5 && is_user_alive(iPlayer) && cs_get_user_team(iPlayer) == CS_TEAM_T && iPlayer == sawMan)
	{
		if(weaponID == CSW_KNIFE)
		{
			entity_set_string(iPlayer, EV_SZ_viewmodel, "models/PlayGroundv2saw/v_knife.mdl")
			entity_set_string(iPlayer, EV_SZ_weaponmodel, "models/PlayGroundv2box/p_knife.mdl")
		}
	}
	
	if(iDay == 8 && is_user_alive(iPlayer))
	{
		if(weaponID == CSW_AWP)
		{
			entity_set_string(iPlayer, EV_SZ_viewmodel, "models/PlayGroundv2intervention/v_intervention.mdl")
			entity_set_string(iPlayer, EV_SZ_weaponmodel, "models/PlayGroundv2intervention/p_intervention.mdl")
		}
	}
}

public FwdSetModel(iEnt, iModel[]) 
{
	if(iDay == 3)
	{	
		if(equali(iModel,"models/w_hegrenade.mdl")) 
		{
			entity_set_model(iEnt, "models/PlayGroundv2dodge/w_dodgeball.mdl")
			return FMRES_SUPERCEDE
		}
		return FMRES_IGNORED
	}
	if(iDay == 4)
	{
		if(equali(iModel, "models/w_hegrenade.mdl")) 
		{
			entity_set_model(iEnt, "models/PlayGroundv2angry/w_hegrenade.mdl")
			return FMRES_SUPERCEDE
		}
		return FMRES_IGNORED
	}
	return PLUGIN_CONTINUE
}

public FwdEmitSound(iPlayer, iChannel, const iSound[])
{
	if(iDay == 2 && is_user_alive(iPlayer) && cs_get_user_team(iPlayer) == CS_TEAM_T)
	{
		for(new i = 0; i < sizeof boxing_sounds; i++)
		{
			if(equal(iSound, oldknife_sounds[i]))
			{
				emit_sound(iPlayer, iChannel, boxing_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM)
				return FMRES_SUPERCEDE
			}
		}
	}
	return FMRES_IGNORED
}

public FwdTraceAttack(iPlayer, iAttacker, Float:iDmg, Float:iDir[3], iTr, iDmgbit)
{
	if(iDay == 2 && is_user_alive(iPlayer) && cs_get_user_team(iPlayer) == CS_TEAM_T)
	{
		if(get_pcvar_num(cStun) == 1)
		{
			new Float:Random_Float[3]
			for(new i = 0; i < 3; i++) Random_Float[i] = (get_tr2(iTr, TR_iHitgroup) == HIT_HEAD) ? random_float(100.0, 150.0) : random_float(25.0, 30.0)
			Punch_View(iPlayer, Random_Float)
		}
		
		set_user_health(iPlayer, get_user_health(iPlayer) - random_num(5, 10))
	}
	
	if(iDay == 5 && iAttacker == sawMan && get_user_team(iPlayer) == get_user_team(iAttacker))
		set_user_health(iPlayer, get_user_health(iPlayer) - 100)
		
	if(iDay == 7 && cs_get_user_team(iPlayer) == CS_TEAM_CT)
	{
		set_user_rendering(iPlayer, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 255)
		set_task(0.3, "RemoveGlow", iPlayer)
	}		
}

public RemoveGlow(iPlayer)
	if(is_user_connected(iPlayer) && is_user_alive(iPlayer))
		set_user_rendering(iPlayer, kRenderFxNone, 0, 0, 0, kRenderTransAdd, 0)

stock Punch_View(iPlayer, Float:ViewAngle[3]) 
	entity_set_vector(iPlayer, EV_VEC_punchangle, ViewAngle)
	
public client_disconnect(iPlayer)
{
	if(iPlayer == sawMan)
	{
		EventRoundRefresh()
		ColorChat(0, GREY, "%s The^4 Saw man^3 has left the game! Game stopped.", prefix)
	}
}

public CheckGame()
{
	if(getPlayers(CS_TEAM_T) == 1) // we have a winner
	{
		remove_task(321)
		EventRoundRefresh()
		ColorChat(0, GREY, "%s There's only 1^4 prisoner^3 alive now! Game stopped.", prefix)
	}
}

//    __________
//___/ Day Menu \____________________________________________________________________________________
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public CmdStopDay(iPlayer)
{
	if(!(get_user_flags(iPlayer) & ADMIN_BAN)) 
	{
		ColorChat(iPlayer, GREY, "%s Sorry, only admins can use this command.", prefix)
		return PLUGIN_HANDLED
	}
	
	if(iDay)
	{
		new iName[33]; get_user_name(iPlayer, iName, charsmax(iName))
		ColorChat(0, GREY, "%s^4 %s^3 stopped the game^4 %s^3", prefix, iName, DayNames[iDay-1])
	
		new szTemp[100]; formatex(szTemp, charsmax(szTemp), "[PlayGround] Days^nStopped: %s", DayNames[iDay-1])
		set_dhudmessage(255, 0, 0, -1.0, 0.2, 2, 6.0, 3.0, 0.1, 1.5)
		show_dhudmessage(0, szTemp)
	}
	
	if(iDay == 3 || iDay == 4)
	{
		new iEnt
		while((iEnt = find_ent_by_class(iEnt, "grenade")) != 0) 
			remove_entity(iEnt)
	}
	
	iDay = 0
	sawMan = 0
	set_lights("#OFF")
	
	remove_task(123)
	remove_task(321)
	
	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i))
		{
			set_user_rendering(i)
			set_user_godmode(i, 0)
			remove_task(i)
			cs_set_user_nvg(i, 0)
			set_user_maxspeed(i, 250.0)
			
			if(cs_get_user_team(i) == CS_TEAM_T)
			{
				strip_user_weapons(i)
				give_item(i, "weapon_knife")
			}
	
			CantPickGun[i] = false
		}
	}
	return PLUGIN_HANDLED
}

public CmdDayMenu(iPlayer) 
{	
	if(!(get_user_flags(iPlayer) & ADMIN_BAN)) 
	{
		ColorChat(iPlayer, GREY, "%s Sorry, only admins can open this menu.", prefix)
		return PLUGIN_HANDLED
	}
	if(iDay)
	{
		ColorChat(iPlayer, GREY, "%s There is already a special day going on.", prefix)
		return PLUGIN_HANDLED
	}
	if(getPlayers(CS_TEAM_T) < 2)
	{
		ColorChat(iPlayer, GREY, "%s Not enough prisoners found! Needed:^4 2^3", prefix)
		return PLUGIN_HANDLED
	}
	
	new DayMenu = menu_create("\y[PlayGround] Days menu", "DayMenuHandler")
	
	new Key[6]
	for(new i = 1; i <= TotalDays; i++) 
	{
		num_to_str(i, Key, charsmax(Key))
		menu_additem(DayMenu, DayNames[i-1], Key)
	}
	menu_setprop(DayMenu, MPROP_EXIT, MEXIT_ALL)
	menu_display(iPlayer, DayMenu, 0)
	return PLUGIN_HANDLED
}

public DayMenuHandler(iPlayer, iMenu, iItem) 
{  
	if(iItem == MENU_EXIT)  
	{ 
		menu_destroy(iMenu)
		return PLUGIN_HANDLED
	}
	if(iDay)
	{
		ColorChat(iPlayer, GREY, "%s There is already a special day going on.", prefix)
		return PLUGIN_HANDLED
	}
	if(getPlayers(CS_TEAM_T) < 2)
	{
		ColorChat(iPlayer, GREY, "%s Not enough prisoners found! Needed:^4 2^3", prefix)
		return PLUGIN_HANDLED
	}
	
	new iAccess, iCallback, szCommand[6], szName[64]
	menu_item_getinfo(iMenu, iItem, iAccess, szCommand, 5, szName, 63, iCallback)
	
	new DayName = str_to_num(szCommand)
	
	if(DayName != 5)
	{
		new iName[33]; get_user_name(iPlayer, iName, charsmax(iName))
		ColorChat(0, GREY, "%s^4 %s^3 chose to start^4 %s^3.", prefix, iName, DayNames[DayName-1])

		new szTemp[100]; formatex(szTemp, charsmax(szTemp), "[PlayGround] Days^nToday: %s", DayNames[DayName-1])
		set_dhudmessage(255, 0, 0, -1.0, 0.2, 2, 6.0, 3.0, 0.1, 1.5)
		show_dhudmessage(0, szTemp)
	}

	switch(str_to_num(szCommand)) 
	{
		case 1: StartFreeday()
		case 2: StartBoxing()
		case 3: StartDodgeball()
		case 4: StartAngry()
		case 5: SawMenu(iPlayer)
		case 6: StartSparta()
		case 7: StartShark()
		case 8: StartIntervention()
		default: return PLUGIN_HANDLED
	}
	
	menu_destroy(iMenu)
	return PLUGIN_HANDLED
}

//    ___________
//___/ Start Day \___________________________________________________________________________________
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

//    _________
//___/ FREEDAY \___________
//~~~~~~~~~~~~~~~~~~~~~~~~~
public StartFreeday()
{
	iDay = 1
	
	Push_Button()
	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i) && is_user_alive(i))
		{
			set_task(1.0, "CheckGame", 321, _, _, "b")
			
			client_cmd(i, "spk sound/PlayGroundv2freeday/freeday.wav")
			
			strip_user_weapons(i)
			give_item(i, "weapon_knife")
			set_user_health(i, 100)
			
			switch(cs_get_user_team(i))
			{
				case CS_TEAM_CT:
				{
					give_item(i, "weapon_deagle")
					cs_set_user_bpammo(i, CSW_DEAGLE, 35)
					give_item(i, "weapon_m4a1")
					cs_set_user_bpammo(i, CSW_M4A1, 90)
					cs_set_user_armor(i, 100, CS_ARMOR_VESTHELM)
				}
			}
			
			ColorChat(i, GREY, "%s Objective: Enjoy your free day!", prefix)
		}
	}
	return PLUGIN_HANDLED
}

public Setup_Buttons()
{
	new ent = 1 
	new ent3 
	new Float:origin[3] 
	new Float:radius = 200.0 
	new class[32] 
	new name[32]
	new pos 
	while((pos <= sizeof(g_iButtons)) && (ent = engfunc(EngFunc_FindEntityByString, ent, "classname", "info_player_deathmatch")))
	{ 
		new ent2 = 1 
		pev(ent, pev_origin, origin) 
		while((ent2 = engfunc(EngFunc_FindEntityInSphere, ent2, origin, radius)))
		{ 
			if(!pev_valid(ent2)) 
				continue 
			
			pev(ent2, pev_classname, class, charsmax(class)) 
			if(!equal(class, "func_door"))
				continue 
			
			pev(ent2, pev_targetname, name, charsmax(name)) 
			ent3 = engfunc(EngFunc_FindEntityByString, 0, "target", name)
			if(pev_valid(ent3) && (in_array(ent3, g_iButtons, sizeof(g_iButtons)) < 0)) 
			{ 
				ExecuteHamB(Ham_Use, ent3, 0, 0, 1, 1.0)
				g_iButtons[pos] = ent3 
				pos++
				break
			} 
		} 
	} 
	return pos 
}

public Push_Button()
{
	static i
	for(i = 0; i < sizeof(g_iButtons); i++)
	{
		if(g_iButtons[i])
		{
			ExecuteHamB(Ham_Use, g_iButtons[i], 0, 0, 1, 1.0)
			entity_set_float(g_iButtons[i], EV_FL_frame, 0.0)
		}
	}
}

stock in_array(needle, data[], size)
{
	for(new i = 0; i < size; i++)
	{
		if(data[i] == needle)
			return i
	}
	return -1
}

//    ________
//___/ BOXING \____________
//~~~~~~~~~~~~~~~~~~~~~~~~~
public StartBoxing() 
{	
	iDay = 2
	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i) && is_user_alive(i))
		{
			set_task(1.0, "CheckGame", 321, _, _, "b")
			
			client_cmd(i, "spk sound/PlayGroundv2box/boxing.wav")
		
			strip_user_weapons(i)
			give_item(i, "weapon_knife")
			set_user_health(i, 100)
			
			switch(cs_get_user_team(i))
			{
				case CS_TEAM_CT:
				{
					set_user_godmode(i, 1)
					give_item(i, "weapon_deagle")
					cs_set_user_bpammo(i, CSW_DEAGLE, 35)
					give_item(i, "weapon_m4a1")
					cs_set_user_bpammo(i, CSW_M4A1, 90)
					cs_set_user_armor(i, 100, CS_ARMOR_VESTHELM)
				}
			}
			
			ColorChat(i, GREY, "%s Objective: Knock your teammates to death!", prefix)
			CantPickGun[i] = true
		}
	}
	return PLUGIN_HANDLED
}

stock reset_user_knife(iPlayer) 
{         
	engclient_cmd(iPlayer, "weapon_knife")
	emessage_begin(MSG_ONE, g_msgCurWeapon, _, iPlayer)
	ewrite_byte(1)
	ewrite_byte(CSW_KNIFE)
	ewrite_byte(-1)
	emessage_end()
}

stock reset_user_nade(iPlayer) 
{         
	engclient_cmd(iPlayer, "weapon_hegrenade")
	emessage_begin(MSG_ONE, g_msgCurWeapon, _, iPlayer)
	ewrite_byte(1)
	ewrite_byte(CSW_HEGRENADE)
	ewrite_byte(-1)
	emessage_end()
}

//    ___________
//___/ DODGEBALL \_________
//~~~~~~~~~~~~~~~~~~~~~~~~~
public StartDodgeball() 
{	
	iDay = 3
	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i) && is_user_alive(i))
		{
			set_task(1.0, "CheckGame", 321, _, _, "b")
			
			client_cmd(i, "spk sound/PlayGroundv2dodge/dodgeball.wav")

			strip_user_weapons(i)
			set_user_health(i, 100)
			
			switch(cs_get_user_team(i))
			{
				case CS_TEAM_T:
				{
					set_task(1.7, "GiveHE", i, _, _, "b")
					give_item(i, "weapon_hegrenade")
				}
				case CS_TEAM_CT:
				{
					give_item(i, "weapon_knife")
					set_user_godmode(i, 1)
					give_item(i, "weapon_deagle")
					cs_set_user_bpammo(i, CSW_DEAGLE, 35)
					give_item(i, "weapon_m4a1")
					cs_set_user_bpammo(i, CSW_M4A1, 90)
					cs_set_user_armor(i, 100, CS_ARMOR_VESTHELM)
				}
			}
			
			ColorChat(i, GREY, "%s Objective: Dodge your teammates!", prefix)
			CantPickGun[i] = true
		}
	}
	return PLUGIN_HANDLED
}

public GiveHE(iPlayer)
{
	if(is_user_alive(iPlayer))
	{
		give_item(iPlayer, "weapon_hegrenade")
		reset_user_nade(iPlayer)
	}
	return PLUGIN_CONTINUE
}

public GrenadeThink(iEnt) 
{
	if(iDay == 3 || iDay == 4)
		return PLUGIN_HANDLED
		
	return PLUGIN_CONTINUE
}

public grenade_throw(index, greindex, wId) 
{
	if(wId != CSW_HEGRENADE)
	{
		return PLUGIN_CONTINUE;
	}
	
	if(iDay == 3 || iDay == 4)
	{
		entity_set_edict(greindex,EV_ENT_euser1,index)
		set_task(0.3, "clearowner", greindex)
		entity_set_int(greindex, EV_INT_iuser1, 0)
		entity_set_size(greindex, Float:{-6.0,-6.0,-6.0}, Float:{6.0,6.0,6.0})
		entity_set_float(greindex, EV_FL_friction,0.6)
		
		new r = random_num(1, 255)
		new g = random_num(1, 255)
		new b = random_num(1, 255)
		
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
		write_byte(22)
		write_short(greindex)
		write_short(iBeamspr)
		write_byte(10)
		write_byte(10)
		write_byte(r)
		write_byte(g)
		write_byte(b)
		write_byte(100)
		message_end()
		
		set_rendering(greindex,kRenderFxGlowShell, r, g, b)
		set_task(1.5, "EventStopRoll", greindex)

		return PLUGIN_CONTINUE;
	}
	return PLUGIN_CONTINUE
}

public EventStopRoll(iEnt) 
{
	if(is_valid_ent(iEnt)) 
	{
		if(get_entity_flags(iEnt) & FL_ONGROUND) 
		{
			entity_set_vector(iEnt, EV_VEC_velocity, Float:{0.0,0.0,0.0})
			entity_set_float(iEnt, EV_FL_gravity, 1.0)
			
			set_rendering(iEnt)
			clearowner(iEnt)
			
			remove_entity(iEnt)
		}
		else 
		{
			set_task(1.0, "EventStopRoll", iEnt)
		}
		
	}
}

public clearowner(iEnt) 
	if(is_valid_ent(iEnt)) 
		entity_set_edict(iEnt, EV_ENT_owner, 0)

public player_interact(iEnt, iPlayer) 
{
	if(iDay == 3 || iDay == 4)
	{
		if(is_valid_ent(iEnt)) 
		{
			new iClassname[32], iModel[32]
			entity_get_string(iEnt, EV_SZ_classname, iClassname, charsmax(iClassname))
			entity_get_string(iEnt, EV_SZ_model, iModel, charsmax(iModel))
		
			if(equali(iClassname, "grenade") && !equali(iModel,"models/w_c4.mdl")) 
			{
				hit_by_ball(iPlayer, iEnt)
			}
		}
		return PLUGIN_CONTINUE
	}
	return PLUGIN_CONTINUE
}

public ball_interact(iBall, iEnt) 
{
	if(iEnt == 0) 
	{
		entity_set_int(iBall, EV_INT_iuser1, 1)
		set_rendering(iBall);
	}
	else 
	{
		new iClassname[32]
		entity_get_string(iEnt,EV_SZ_classname, iClassname, charsmax(iClassname))
		
		if(equali(iClassname,"func_", 5)) 
		{
			entity_set_int(iBall, EV_INT_iuser1, 1)
			set_rendering(iBall)

			new Float:start[3], Float:end[3], Float:ground[3]
			entity_get_vector(iBall, EV_VEC_origin, start)
			end = start
			end[2] -= 1024.0
			trace_line(iEnt,start,end,ground)
			ground[2] += 7.0
			entity_set_vector(iBall, EV_VEC_origin, ground)
		}
	}
	return PLUGIN_CONTINUE
}

public hit_by_ball(iPlayer, iBall) 
{
	if(entity_get_int(iBall, EV_INT_iuser1) == 1) // Dead ball
		return PLUGIN_HANDLED

	new owner = entity_get_edict(iBall, EV_ENT_euser1)

	if(owner == iPlayer)
	{
		entity_set_int(iBall,EV_INT_iuser1, 1);
		set_rendering(iBall);
		return PLUGIN_HANDLED
	}

	if(get_user_team(iPlayer) != get_user_team(owner))
	{
		entity_set_int(iBall, EV_INT_iuser1,1);
		set_rendering(iBall);
		return PLUGIN_HANDLED
	}
	
	set_task(0.1, "kill", iPlayer)

	if(is_user_connected(owner)) 
	{
		set_user_frags(owner,  get_user_frags(owner)+1)
		message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"))
		write_byte(owner)
		write_short(get_user_frags(owner))
		write_short(cs_get_user_deaths(owner))
		write_short(0)
		write_short(get_user_team(owner))
		message_end()
	}

	make_deathmsg(owner, iPlayer, 1, "dodgeball")

	entity_set_int(iBall, EV_INT_iuser1, 1)
	set_rendering(iBall)
	
	return PLUGIN_HANDLED
 }

public kill(iPlayer) 
{
	strip_user_weapons(iPlayer)
	set_user_godmode(iPlayer, 0)
	user_silentkill(iPlayer)
	message_begin(MSG_BROADCAST,get_user_msgid("ScoreInfo"))
	write_byte(iPlayer)
	write_short(get_user_frags(iPlayer))
	write_short(cs_get_user_deaths(iPlayer))
	write_short(0)
	write_short(1)
	message_end()
}

public msg_sendaudio() 
{
	if(iDay == 3 || iDay == 4)
	{
		new string[32];
		get_msg_arg_string(2,string,31);

		if(equali(string,"%!MRAD_FIREINHOLE")) 
			return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

public msg_textmsg() 
{
	if(iDay == 3 || iDay == 4)
	{
		new string[32]
		
		get_msg_arg_string(2,string,31);
		if(equali(string,"#Weapon_Cannot_Be_Dropped"))
			return PLUGIN_HANDLED;

		if(str_to_num(string) > 0) 
		{
			get_msg_arg_string(3,string,31)
			if(equali(string,"#Game_radio")) 
			{
				get_msg_arg_string(5,string,31)
				if(equali(string,"#Fire_in_the_hole"))
					return PLUGIN_HANDLED
			}
		}
	}
	return PLUGIN_CONTINUE
}

//    _____________
//___/ ANGRY BIRDS \_______
//~~~~~~~~~~~~~~~~~~~~~~~~~
public StartAngry() 
{	
	iDay = 4
	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i) && is_user_alive(i))
		{
			set_task(1.0, "CheckGame", 321, _, _, "b")
			
			client_cmd(i, "spk sound/PlayGroundv2angry/angry.wav")
			
			strip_user_weapons(i)
			set_user_health(i, 100)
			
			switch(cs_get_user_team(i))
			{
				case CS_TEAM_T:
				{
					set_task(1.7, "GiveHE", i, _, _, "b")
					give_item(i, "weapon_hegrenade")
				}
				case CS_TEAM_CT:
				{
					give_item(i, "weapon_knife")
					set_user_godmode(i, 1)
					give_item(i, "weapon_deagle")
					cs_set_user_bpammo(i, CSW_DEAGLE, 35)
					give_item(i, "weapon_m4a1")
					cs_set_user_bpammo(i, CSW_M4A1, 90)
					cs_set_user_armor(i, 100, CS_ARMOR_VESTHELM)
				}
			}
			
			ColorChat(i, GREY, "%s Objective: Throw your^4 Angry Birds^3 at your teammates.", prefix)
			CantPickGun[i] = true
		}
	}
	return PLUGIN_HANDLED
}

//    _________
//___/ SAWGAME \___________
//~~~~~~~~~~~~~~~~~~~~~~~~~
public SawMenu(iPlayer)
{
	new szSawMenu = menu_create("[PlayGround] Saw Menu^nChoose Saw Man:", "SawMenuHandler")
	
	new players[32], pnum, tempid
	new szName[32], szTempid[10]
	get_players(players, pnum, "ac") 
	
	for(new i; i<pnum; i++)
	{
		tempid = players[i]

		if(cs_get_user_team(tempid) == CS_TEAM_T)
		{
			get_user_name(tempid, szName, charsmax(szName))
			num_to_str(tempid, szTempid, charsmax(szTempid))
		
			menu_additem(szSawMenu, szName, szTempid, 0)
		}
	}
	menu_display(iPlayer, szSawMenu, 0)
}

public SawMenuHandler(iPlayer, iMenu, iItem)
{
	if(iItem == MENU_EXIT)
	{
		menu_destroy(iMenu)
		return PLUGIN_HANDLED
	}
	if(iDay)
	{
		ColorChat(iPlayer, GREY, "%s There is already a special day going on.", prefix)
		return PLUGIN_HANDLED
	}

	new iAccess, iCallback, szCommand[6], szName[64]
	menu_item_getinfo(iMenu, iItem, iAccess, szCommand, 5, szName, 63, iCallback)

	sawMan = str_to_num(szCommand)
	
	if(is_user_connected(sawMan) && is_user_alive(sawMan))
	{
		StartSawgame()
		new iName[33]; get_user_name(iPlayer, iName, charsmax(iName))
		ColorChat(0, GREY, "%s^4 %s^3 chose to start^4 %s^3.", prefix, iName, DayNames[4])

		new szTemp[100]; formatex(szTemp, charsmax(szTemp), "[PlayGround] Days^nToday: %s", DayNames[4])
		set_dhudmessage(255, 0, 0, -1.0, 0.2, 2, 6.0, 3.0, 0.1, 1.5)
		show_dhudmessage(0, szTemp)
	}
	else
	{
		SawMenu(iPlayer)
		ColorChat(iPlayer, GREY, "%s This player is dead or not connected, please choose another^4 Saw Man^3.", prefix)
	}

	menu_destroy(iMenu)
	return PLUGIN_HANDLED
}

public StartSawgame() 
{	
	iDay = 5
	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i))
		{
			client_cmd(i, "spk sound/PlayGroundv2saw/sawgame.wav")
			
			strip_user_weapons(i)
			set_user_health(i, 100)
			give_item(i, "weapon_knife")
			
			switch(cs_get_user_team(i))
			{
				case CS_TEAM_CT:
				{
					set_user_godmode(i, 1)
					give_item(i, "weapon_deagle")
					cs_set_user_bpammo(i, CSW_DEAGLE, 35)
					give_item(i, "weapon_m4a1")
					cs_set_user_bpammo(i, CSW_M4A1, 90)
					cs_set_user_armor(i, 100, CS_ARMOR_VESTHELM)
				}
			}
			
			ColorChat(i, GREY, "%s Objective: Run away from the^4 Saw man^3!", prefix)
			CantPickGun[i] = true
		}
	}
	
	set_task(1.0, "CheckSawgame", 321, _, _, "b")
	set_task(180.0, "EndSawgame", 123)
	
	set_user_rendering(sawMan, kRenderFxGlowShell,255,0,0,kRenderNormal,25)
	cs_set_user_nvg(sawMan, 1)
	set_user_maxspeed(sawMan, 270.0)
	
	new iName[33]; get_user_name(sawMan, iName, charsmax(iName))
	ColorChat(0, GREY, "%s ^4%s^3 became a^4 Saw man^3!", prefix, iName)
	
	set_lights("b")
	return PLUGIN_HANDLED
}

public CheckSawgame()
{
	if(getPlayers(CS_TEAM_T) == 1) // Saw man has killed everyone, end everything.
	{
		remove_task(123)
		remove_task(321)
		
		EventRoundRefresh()
		
		ColorChat(0, GREY, "%s The^4 Saw man^3 killed all the prisoners and he gets his^4 LR^3.", prefix)
	}
}
	
public EndSawgame()
{
	remove_task(123)
	remove_task(321)
	
	if(getPlayers(CS_TEAM_T) != 1) // SAWMAN FAILED!
	{
		for(new i = 1; i < g_iMaxPlayers; i++)
		{
			if(is_user_connected(i) && is_user_alive(i) && i == sawMan)
			{
				user_silentkill(i)
				client_cmd(0, "spk sound/PlayGroundv2saw/gover.wav")
				ColorChat(0, GREY, "%s The^4 Saw man^3 failed to kill all the prisoners!", prefix)
				EventRoundRefresh()
			}
		}
	}
}

stock getPlayers(CsTeams:iTeam)
{
	new players
	for(new i = 1; i < 33; i++)
		if(is_user_connected(i) && !is_user_bot(i) && is_user_alive(i))
			if(cs_get_user_team(i) == iTeam) players++
	
	return players
}

//    ________
//___/ SPARTA \____________
//~~~~~~~~~~~~~~~~~~~~~~~~~
public StartSparta()
{
	iDay = 6

	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i) && is_user_alive(i))
		{
			client_cmd(i, "spk sound/PlayGroundv2sparta/spartav2.wav")
			
			strip_user_weapons(i)
			give_item(i, "weapon_knife")
			switch(cs_get_user_team(i))
			{
				case CS_TEAM_CT: set_user_health(i, 150)
				case CS_TEAM_T: set_user_health(i, 35)
			}
			
			ColorChat(i, GREY, "%s Objective: Kill your enemies!", prefix)
		}
	}
	return PLUGIN_HANDLED
}

//    __________
//___/ SHARKDAY \__________
//~~~~~~~~~~~~~~~~~~~~~~~~~
public StartShark()
{
	iDay = 7

	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i) && is_user_alive(i))
		{
			strip_user_weapons(i)

			switch(cs_get_user_team(i))
			{
				case CS_TEAM_CT: 
				{
					set_user_health(i, 50 * getPlayers(CS_TEAM_T))
					give_item(i, "weapon_knife") 
					set_user_noclip(i, 1)
					set_user_rendering(i, kRenderFxNone, 0, 0, 0, kRenderTransAdd, 0)
				}
				case CS_TEAM_T: 
				{
					set_user_health(i, 100)
					give_item(i, "weapon_m249")
					cs_set_user_bpammo(i, CSW_M249, 900)
				}
			}
			
			ColorChat(i, GREY, "%s Objective: Kill your enemies! (The guards are invisible with noclip)", prefix)
			CantPickGun[i] = true
		}
	}
	
	set_lights("b")
	return PLUGIN_HANDLED
}

//    ______________
//___/ INTERVENTION \______
//~~~~~~~~~~~~~~~~~~~~~~~~~
public StartIntervention()
{
	iDay = 8

	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i) && is_user_alive(i))
		{
			set_task(1.0, "CheckGame", 321, _, _, "b")

			strip_user_weapons(i)
			set_user_health(i, 100)
			set_user_godmode(i, 0)
			
			switch(cs_get_user_team(i))
			{
				case CS_TEAM_T:
				{
					give_item(i, "weapon_awp")
					cs_set_user_bpammo(i, CSW_AWP, 30)
				}
				case CS_TEAM_CT:
				{
					set_user_godmode(i, 1)
					give_item(i, "weapon_deagle")
					cs_set_user_bpammo(i, CSW_DEAGLE, 35)
					give_item(i, "weapon_m4a1")
					cs_set_user_bpammo(i, CSW_M4A1, 90)
					cs_set_user_armor(i, 100, CS_ARMOR_VESTHELM)
				}
			}

			ColorChat(i, GREY, "%s Objective: Kill your enemies!", prefix)
			CantPickGun[i] = true
		}
	}
	return PLUGIN_HANDLED
}


//    _________________
//___/ Plugin Precache \_____________________________________________________________________________
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public plugin_precache() 
{
	//FREEDAY BELOW
	
	precache_sound("PlayGroundv2freeday/freeday.wav")
	
	//BOXING BELOW
	
	precache_model("models/PlayGroundv2box/v_box_red.mdl")
	precache_model("models/PlayGroundv2box/p_knife.mdl")

	for(new i = 0; i < sizeof boxing_sounds; i++)
		precache_sound(boxing_sounds[i])
	
	precache_sound("PlayGroundv2box/boxing.wav")
	
	//DODGEBALL BELOW
	
	precache_model("models/PlayGroundv2dodge/p_dodgeball.mdl")
	precache_model("models/PlayGroundv2dodge/v_dodgeball.mdl")
	precache_model("models/PlayGroundv2dodge/w_dodgeball.mdl")
	precache_sound("weapons/g_bounce1.wav")
	iBeamspr = precache_model("sprites/laserbeam.spr")
	
	precache_sound("PlayGroundv2dodge2/dodgeball.wav")
	
	// ANGRYBIRDS BELOW

	precache_model("models/PlayGroundv2angry/v_hegrenade.mdl")
	precache_model("models/PlayGroundv2angry/w_hegrenade.mdl")
	
	precache_sound("PlayGroundv2angry/angry.wav")
	precache_sound("weapons/bobi_pull.wav")
	precache_sound("weapons/bobi_throw.wav")
	
	// SAWMAN BELOW
	
	precache_model("models/PlayGroundv2saw/v_knife.mdl")
	precache_sound("PlayGroundv2saw/sawgame.wav")
	precache_sound("PlayGroundv2saw/gover.wav")
	
	// SPARTA BELOW
	
	precache_sound("PlayGroundv2sparta/spartav2.wav")
	
	// Intervention
	
	precache_model("models/PlayGroundv2intervention/v_intervention.mdl")
	precache_model("models/PlayGroundv2intervention/p_intervention.mdl")
}
__________________
I have many private and unique plugins for Jailbreak and Hide'N'Seek. PM me for more info.

Pm me.

Check out my roulette site.
ironskillz1 is offline
Send a message via Skype™ to ironskillz1
proffs
Senior Member
Join Date: Jul 2013
Old 03-11-2014 , 16:54   Re: Clear owner of a entity Notworking
Reply With Quote #3

Quote:
Originally Posted by ironskillz1 View Post
You can take the dodgeball code from here.

Code:
/*

Changelog v1.1.0

- Added 2 new days
Shark & Intervention Day.

*/
#include <amxmodx>
#include <colorchat>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta>
#include <engine>
#include <fun>
#include <dhudmessage>

#define VERSION "1.1.0"
#define TotalDays 8

new const prefix[] = "^4[PlayGround] Daysmenu:^3"

new g_iButtons[10]
new bool:CantPickGun[33]
new g_iMaxPlayers, iBeamspr
new iDay, g_msgCurWeapon

new sawMan
new cStun

new const DayNames[TotalDays][] = 
{
	"Freeday",		// 1
	"Box Fightning",	// 2
	"Dodgeball",		// 3
	"Angry Birds",		// 4
	"Sawgame",		// 5
	"Spartaday",		// 6
	"Shark Day",		// 7
	"Intervention Day"	// 8
}

new const boxing_sounds[][] =
{
	"PlayGroundv2box/boxing_deploy1.wav",    
	"PlayGroundv2box/boxing_hit1.wav",    
	"PlayGroundv2box/boxing_hit2.wav",    
	"PlayGroundv2box/boxing_hit3.wav",    
	"PlayGroundv2box/boxing_hit4.wav",    
	"PlayGroundv2box/boxing_hitwall1.wav",
	"PlayGroundv2box/boxing_slash1.wav",    
	"PlayGroundv2box/boxing_slash2.wav",    
	"PlayGroundv2box/boxing_stab.wav"    
}

new const oldknife_sounds[][] =
{
	"weapons/knife_deploy1.wav",   
	"weapons/knife_hit1.wav",   
	"weapons/knife_hit2.wav",    
	"weapons/knife_hit3.wav",    
	"weapons/knife_hit4.wav",    
	"weapons/knife_hitwall1.wav",  
	"weapons/knife_slash1.wav",    
	"weapons/knife_slash2.wav",    
	"weapons/knife_stab.wav"    
}

public plugin_init()
{
	register_plugin("PlayGround Daymenu", VERSION, "Larcyn")
	
	register_message(get_user_msgid("SendAudio"), "msg_sendaudio")
	register_message(get_user_msgid("TextMsg"), "msg_textmsg")
	
	register_event("CurWeapon", "EventCurWeapon", "be","1=1")
	register_event("DeathMsg", "eventDeathMsg", "a", "1>0");
	
	register_event("HLTV", "EventRoundRefresh", "a", "1=0", "2=0")
	register_logevent("EventRoundRefresh", 2, "1=Round_End")
	
	register_clcmd("say /dm", "CmdDayMenu")
	register_clcmd("say /daymenu", "CmdDayMenu")
	
	register_clcmd("say /stop", "CmdStopDay")
	register_clcmd("say /open", "CmdOpenCells")
	
	RegisterHam(Ham_Touch, "armoury_entity", "FwdHamPlayerPickup")
	RegisterHam(Ham_Touch, "weaponbox", "FwdHamPlayerPickup")
	RegisterHam(Ham_TraceAttack, "player", "FwdTraceAttack")
	
	register_forward(FM_EmitSound,"FwdEmitSound")
	register_forward(FM_SetModel, "FwdSetModel")
	
	register_touch("*","player","player_interact")
	register_touch("grenade","*","ball_interact")
	
	register_think("grenade", "GrenadeThink")
	
	cStun = register_cvar("box_stun", "1")
	
	g_iMaxPlayers = get_maxplayers()
	g_msgCurWeapon = get_user_msgid("CurWeapon")
	
	Setup_Buttons()
}

public plugin_natives()
	register_native("get_current_day", "_get_current_day")

public _get_current_day(iPlugin, iParams)
	return iDay

//    ______________
//___/ Misc Actions \________________________________________________________________________________
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public CmdOpenCells(iPlayer)
{
	if(!(get_user_flags(iPlayer) & ADMIN_BAN)) 
	{
		ColorChat(iPlayer, GREY, "%s Sorry, only admins can use this command.", prefix)
		return PLUGIN_HANDLED
	}
	
	new szName[33]; get_user_name(iPlayer, szName, charsmax(szName))
	ColorChat(0, GREY, "^4[PlayGround]^3 Jailbreak:^4 %s^3 opened the cells!", szName)
	
	Push_Button()
	return PLUGIN_HANDLED
}
	
public FwdHamPlayerPickup(iEntity, iPlayer)
	return (1 <= iPlayer <= g_iMaxPlayers && CantPickGun[iPlayer]) ? HAM_SUPERCEDE : HAM_IGNORED
	
public eventDeathMsg() 
{
	if(read_data(2) == sawMan && iDay == 5)
	{
		remove_task(123)
		remove_task(321)
		EventRoundRefresh()
		ColorChat(0, GREY, "%s The^4 Saw Man^3 died!", prefix)
	}
}

public EventRoundRefresh() 
{
	if(iDay == 3 || iDay == 4)
	{
		new iEnt
		while((iEnt = find_ent_by_class(iEnt, "grenade")) != 0) 
			remove_entity(iEnt)
	}
	
	iDay = 0
	sawMan = 0
	set_lights("#OFF")
	remove_task(123)
	remove_task(321)
	
	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i))
		{
			set_user_rendering(i)
			set_user_godmode(i, 0)
			set_user_noclip(i, 0)
			remove_task(i)
			cs_set_user_nvg(i, 0)
			set_user_maxspeed(i, 250.0)
			
			if(cs_get_user_team(i) == CS_TEAM_T && is_user_alive(i))
			{
				strip_user_weapons(i)
				give_item(i, "weapon_knife")
			}
	
			CantPickGun[i] = false
		}
	}
	return PLUGIN_HANDLED
}

public EventCurWeapon(iPlayer) 
{     
	new weaponID = read_data(2)
	
	if(iDay == 2 && is_user_alive(iPlayer) && cs_get_user_team(iPlayer) == CS_TEAM_T)
	{
		if(weaponID == CSW_KNIFE)
		{
			if(get_user_team(iPlayer) == 1)
			{
				entity_set_string(iPlayer, EV_SZ_viewmodel, "models/PlayGroundv2box/v_box_red.mdl")
				entity_set_string(iPlayer, EV_SZ_weaponmodel, "models/PlayGroundv2box/p_knife.mdl")
			}
		}
	}
	if(iDay == 3 && is_user_alive(iPlayer) && cs_get_user_team(iPlayer) == CS_TEAM_T)
	{
		if(weaponID == CSW_HEGRENADE)
		{
			entity_set_string(iPlayer, EV_SZ_viewmodel, "models/PlayGroundv2dodge/v_dodgeball.mdl");
			entity_set_string(iPlayer, EV_SZ_weaponmodel, "models/PlayGroundv2dodge/p_dodgeball.mdl");
		}
	}
	if(iDay == 4 && is_user_alive(iPlayer) && cs_get_user_team(iPlayer) == CS_TEAM_T)
	{
		if(weaponID == CSW_HEGRENADE)
		{
			entity_set_string(iPlayer, EV_SZ_viewmodel, "models/PlayGroundv2angry/v_hegrenade.mdl");
			entity_set_string(iPlayer, EV_SZ_weaponmodel, "models/PlayGroundv2angry/w_hegrenade.mdl");
		}
	}
	if(iDay == 5 && is_user_alive(iPlayer) && cs_get_user_team(iPlayer) == CS_TEAM_T && iPlayer == sawMan)
	{
		if(weaponID == CSW_KNIFE)
		{
			entity_set_string(iPlayer, EV_SZ_viewmodel, "models/PlayGroundv2saw/v_knife.mdl")
			entity_set_string(iPlayer, EV_SZ_weaponmodel, "models/PlayGroundv2box/p_knife.mdl")
		}
	}
	
	if(iDay == 8 && is_user_alive(iPlayer))
	{
		if(weaponID == CSW_AWP)
		{
			entity_set_string(iPlayer, EV_SZ_viewmodel, "models/PlayGroundv2intervention/v_intervention.mdl")
			entity_set_string(iPlayer, EV_SZ_weaponmodel, "models/PlayGroundv2intervention/p_intervention.mdl")
		}
	}
}

public FwdSetModel(iEnt, iModel[]) 
{
	if(iDay == 3)
	{	
		if(equali(iModel,"models/w_hegrenade.mdl")) 
		{
			entity_set_model(iEnt, "models/PlayGroundv2dodge/w_dodgeball.mdl")
			return FMRES_SUPERCEDE
		}
		return FMRES_IGNORED
	}
	if(iDay == 4)
	{
		if(equali(iModel, "models/w_hegrenade.mdl")) 
		{
			entity_set_model(iEnt, "models/PlayGroundv2angry/w_hegrenade.mdl")
			return FMRES_SUPERCEDE
		}
		return FMRES_IGNORED
	}
	return PLUGIN_CONTINUE
}

public FwdEmitSound(iPlayer, iChannel, const iSound[])
{
	if(iDay == 2 && is_user_alive(iPlayer) && cs_get_user_team(iPlayer) == CS_TEAM_T)
	{
		for(new i = 0; i < sizeof boxing_sounds; i++)
		{
			if(equal(iSound, oldknife_sounds[i]))
			{
				emit_sound(iPlayer, iChannel, boxing_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM)
				return FMRES_SUPERCEDE
			}
		}
	}
	return FMRES_IGNORED
}

public FwdTraceAttack(iPlayer, iAttacker, Float:iDmg, Float:iDir[3], iTr, iDmgbit)
{
	if(iDay == 2 && is_user_alive(iPlayer) && cs_get_user_team(iPlayer) == CS_TEAM_T)
	{
		if(get_pcvar_num(cStun) == 1)
		{
			new Float:Random_Float[3]
			for(new i = 0; i < 3; i++) Random_Float[i] = (get_tr2(iTr, TR_iHitgroup) == HIT_HEAD) ? random_float(100.0, 150.0) : random_float(25.0, 30.0)
			Punch_View(iPlayer, Random_Float)
		}
		
		set_user_health(iPlayer, get_user_health(iPlayer) - random_num(5, 10))
	}
	
	if(iDay == 5 && iAttacker == sawMan && get_user_team(iPlayer) == get_user_team(iAttacker))
		set_user_health(iPlayer, get_user_health(iPlayer) - 100)
		
	if(iDay == 7 && cs_get_user_team(iPlayer) == CS_TEAM_CT)
	{
		set_user_rendering(iPlayer, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 255)
		set_task(0.3, "RemoveGlow", iPlayer)
	}		
}

public RemoveGlow(iPlayer)
	if(is_user_connected(iPlayer) && is_user_alive(iPlayer))
		set_user_rendering(iPlayer, kRenderFxNone, 0, 0, 0, kRenderTransAdd, 0)

stock Punch_View(iPlayer, Float:ViewAngle[3]) 
	entity_set_vector(iPlayer, EV_VEC_punchangle, ViewAngle)
	
public client_disconnect(iPlayer)
{
	if(iPlayer == sawMan)
	{
		EventRoundRefresh()
		ColorChat(0, GREY, "%s The^4 Saw man^3 has left the game! Game stopped.", prefix)
	}
}

public CheckGame()
{
	if(getPlayers(CS_TEAM_T) == 1) // we have a winner
	{
		remove_task(321)
		EventRoundRefresh()
		ColorChat(0, GREY, "%s There's only 1^4 prisoner^3 alive now! Game stopped.", prefix)
	}
}

//    __________
//___/ Day Menu \____________________________________________________________________________________
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public CmdStopDay(iPlayer)
{
	if(!(get_user_flags(iPlayer) & ADMIN_BAN)) 
	{
		ColorChat(iPlayer, GREY, "%s Sorry, only admins can use this command.", prefix)
		return PLUGIN_HANDLED
	}
	
	if(iDay)
	{
		new iName[33]; get_user_name(iPlayer, iName, charsmax(iName))
		ColorChat(0, GREY, "%s^4 %s^3 stopped the game^4 %s^3", prefix, iName, DayNames[iDay-1])
	
		new szTemp[100]; formatex(szTemp, charsmax(szTemp), "[PlayGround] Days^nStopped: %s", DayNames[iDay-1])
		set_dhudmessage(255, 0, 0, -1.0, 0.2, 2, 6.0, 3.0, 0.1, 1.5)
		show_dhudmessage(0, szTemp)
	}
	
	if(iDay == 3 || iDay == 4)
	{
		new iEnt
		while((iEnt = find_ent_by_class(iEnt, "grenade")) != 0) 
			remove_entity(iEnt)
	}
	
	iDay = 0
	sawMan = 0
	set_lights("#OFF")
	
	remove_task(123)
	remove_task(321)
	
	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i))
		{
			set_user_rendering(i)
			set_user_godmode(i, 0)
			remove_task(i)
			cs_set_user_nvg(i, 0)
			set_user_maxspeed(i, 250.0)
			
			if(cs_get_user_team(i) == CS_TEAM_T)
			{
				strip_user_weapons(i)
				give_item(i, "weapon_knife")
			}
	
			CantPickGun[i] = false
		}
	}
	return PLUGIN_HANDLED
}

public CmdDayMenu(iPlayer) 
{	
	if(!(get_user_flags(iPlayer) & ADMIN_BAN)) 
	{
		ColorChat(iPlayer, GREY, "%s Sorry, only admins can open this menu.", prefix)
		return PLUGIN_HANDLED
	}
	if(iDay)
	{
		ColorChat(iPlayer, GREY, "%s There is already a special day going on.", prefix)
		return PLUGIN_HANDLED
	}
	if(getPlayers(CS_TEAM_T) < 2)
	{
		ColorChat(iPlayer, GREY, "%s Not enough prisoners found! Needed:^4 2^3", prefix)
		return PLUGIN_HANDLED
	}
	
	new DayMenu = menu_create("\y[PlayGround] Days menu", "DayMenuHandler")
	
	new Key[6]
	for(new i = 1; i <= TotalDays; i++) 
	{
		num_to_str(i, Key, charsmax(Key))
		menu_additem(DayMenu, DayNames[i-1], Key)
	}
	menu_setprop(DayMenu, MPROP_EXIT, MEXIT_ALL)
	menu_display(iPlayer, DayMenu, 0)
	return PLUGIN_HANDLED
}

public DayMenuHandler(iPlayer, iMenu, iItem) 
{  
	if(iItem == MENU_EXIT)  
	{ 
		menu_destroy(iMenu)
		return PLUGIN_HANDLED
	}
	if(iDay)
	{
		ColorChat(iPlayer, GREY, "%s There is already a special day going on.", prefix)
		return PLUGIN_HANDLED
	}
	if(getPlayers(CS_TEAM_T) < 2)
	{
		ColorChat(iPlayer, GREY, "%s Not enough prisoners found! Needed:^4 2^3", prefix)
		return PLUGIN_HANDLED
	}
	
	new iAccess, iCallback, szCommand[6], szName[64]
	menu_item_getinfo(iMenu, iItem, iAccess, szCommand, 5, szName, 63, iCallback)
	
	new DayName = str_to_num(szCommand)
	
	if(DayName != 5)
	{
		new iName[33]; get_user_name(iPlayer, iName, charsmax(iName))
		ColorChat(0, GREY, "%s^4 %s^3 chose to start^4 %s^3.", prefix, iName, DayNames[DayName-1])

		new szTemp[100]; formatex(szTemp, charsmax(szTemp), "[PlayGround] Days^nToday: %s", DayNames[DayName-1])
		set_dhudmessage(255, 0, 0, -1.0, 0.2, 2, 6.0, 3.0, 0.1, 1.5)
		show_dhudmessage(0, szTemp)
	}

	switch(str_to_num(szCommand)) 
	{
		case 1: StartFreeday()
		case 2: StartBoxing()
		case 3: StartDodgeball()
		case 4: StartAngry()
		case 5: SawMenu(iPlayer)
		case 6: StartSparta()
		case 7: StartShark()
		case 8: StartIntervention()
		default: return PLUGIN_HANDLED
	}
	
	menu_destroy(iMenu)
	return PLUGIN_HANDLED
}

//    ___________
//___/ Start Day \___________________________________________________________________________________
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

//    _________
//___/ FREEDAY \___________
//~~~~~~~~~~~~~~~~~~~~~~~~~
public StartFreeday()
{
	iDay = 1
	
	Push_Button()
	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i) && is_user_alive(i))
		{
			set_task(1.0, "CheckGame", 321, _, _, "b")
			
			client_cmd(i, "spk sound/PlayGroundv2freeday/freeday.wav")
			
			strip_user_weapons(i)
			give_item(i, "weapon_knife")
			set_user_health(i, 100)
			
			switch(cs_get_user_team(i))
			{
				case CS_TEAM_CT:
				{
					give_item(i, "weapon_deagle")
					cs_set_user_bpammo(i, CSW_DEAGLE, 35)
					give_item(i, "weapon_m4a1")
					cs_set_user_bpammo(i, CSW_M4A1, 90)
					cs_set_user_armor(i, 100, CS_ARMOR_VESTHELM)
				}
			}
			
			ColorChat(i, GREY, "%s Objective: Enjoy your free day!", prefix)
		}
	}
	return PLUGIN_HANDLED
}

public Setup_Buttons()
{
	new ent = 1 
	new ent3 
	new Float:origin[3] 
	new Float:radius = 200.0 
	new class[32] 
	new name[32]
	new pos 
	while((pos <= sizeof(g_iButtons)) && (ent = engfunc(EngFunc_FindEntityByString, ent, "classname", "info_player_deathmatch")))
	{ 
		new ent2 = 1 
		pev(ent, pev_origin, origin) 
		while((ent2 = engfunc(EngFunc_FindEntityInSphere, ent2, origin, radius)))
		{ 
			if(!pev_valid(ent2)) 
				continue 
			
			pev(ent2, pev_classname, class, charsmax(class)) 
			if(!equal(class, "func_door"))
				continue 
			
			pev(ent2, pev_targetname, name, charsmax(name)) 
			ent3 = engfunc(EngFunc_FindEntityByString, 0, "target", name)
			if(pev_valid(ent3) && (in_array(ent3, g_iButtons, sizeof(g_iButtons)) < 0)) 
			{ 
				ExecuteHamB(Ham_Use, ent3, 0, 0, 1, 1.0)
				g_iButtons[pos] = ent3 
				pos++
				break
			} 
		} 
	} 
	return pos 
}

public Push_Button()
{
	static i
	for(i = 0; i < sizeof(g_iButtons); i++)
	{
		if(g_iButtons[i])
		{
			ExecuteHamB(Ham_Use, g_iButtons[i], 0, 0, 1, 1.0)
			entity_set_float(g_iButtons[i], EV_FL_frame, 0.0)
		}
	}
}

stock in_array(needle, data[], size)
{
	for(new i = 0; i < size; i++)
	{
		if(data[i] == needle)
			return i
	}
	return -1
}

//    ________
//___/ BOXING \____________
//~~~~~~~~~~~~~~~~~~~~~~~~~
public StartBoxing() 
{	
	iDay = 2
	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i) && is_user_alive(i))
		{
			set_task(1.0, "CheckGame", 321, _, _, "b")
			
			client_cmd(i, "spk sound/PlayGroundv2box/boxing.wav")
		
			strip_user_weapons(i)
			give_item(i, "weapon_knife")
			set_user_health(i, 100)
			
			switch(cs_get_user_team(i))
			{
				case CS_TEAM_CT:
				{
					set_user_godmode(i, 1)
					give_item(i, "weapon_deagle")
					cs_set_user_bpammo(i, CSW_DEAGLE, 35)
					give_item(i, "weapon_m4a1")
					cs_set_user_bpammo(i, CSW_M4A1, 90)
					cs_set_user_armor(i, 100, CS_ARMOR_VESTHELM)
				}
			}
			
			ColorChat(i, GREY, "%s Objective: Knock your teammates to death!", prefix)
			CantPickGun[i] = true
		}
	}
	return PLUGIN_HANDLED
}

stock reset_user_knife(iPlayer) 
{         
	engclient_cmd(iPlayer, "weapon_knife")
	emessage_begin(MSG_ONE, g_msgCurWeapon, _, iPlayer)
	ewrite_byte(1)
	ewrite_byte(CSW_KNIFE)
	ewrite_byte(-1)
	emessage_end()
}

stock reset_user_nade(iPlayer) 
{         
	engclient_cmd(iPlayer, "weapon_hegrenade")
	emessage_begin(MSG_ONE, g_msgCurWeapon, _, iPlayer)
	ewrite_byte(1)
	ewrite_byte(CSW_HEGRENADE)
	ewrite_byte(-1)
	emessage_end()
}

//    ___________
//___/ DODGEBALL \_________
//~~~~~~~~~~~~~~~~~~~~~~~~~
public StartDodgeball() 
{	
	iDay = 3
	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i) && is_user_alive(i))
		{
			set_task(1.0, "CheckGame", 321, _, _, "b")
			
			client_cmd(i, "spk sound/PlayGroundv2dodge/dodgeball.wav")

			strip_user_weapons(i)
			set_user_health(i, 100)
			
			switch(cs_get_user_team(i))
			{
				case CS_TEAM_T:
				{
					set_task(1.7, "GiveHE", i, _, _, "b")
					give_item(i, "weapon_hegrenade")
				}
				case CS_TEAM_CT:
				{
					give_item(i, "weapon_knife")
					set_user_godmode(i, 1)
					give_item(i, "weapon_deagle")
					cs_set_user_bpammo(i, CSW_DEAGLE, 35)
					give_item(i, "weapon_m4a1")
					cs_set_user_bpammo(i, CSW_M4A1, 90)
					cs_set_user_armor(i, 100, CS_ARMOR_VESTHELM)
				}
			}
			
			ColorChat(i, GREY, "%s Objective: Dodge your teammates!", prefix)
			CantPickGun[i] = true
		}
	}
	return PLUGIN_HANDLED
}

public GiveHE(iPlayer)
{
	if(is_user_alive(iPlayer))
	{
		give_item(iPlayer, "weapon_hegrenade")
		reset_user_nade(iPlayer)
	}
	return PLUGIN_CONTINUE
}

public GrenadeThink(iEnt) 
{
	if(iDay == 3 || iDay == 4)
		return PLUGIN_HANDLED
		
	return PLUGIN_CONTINUE
}

public grenade_throw(index, greindex, wId) 
{
	if(wId != CSW_HEGRENADE)
	{
		return PLUGIN_CONTINUE;
	}
	
	if(iDay == 3 || iDay == 4)
	{
		entity_set_edict(greindex,EV_ENT_euser1,index)
		set_task(0.3, "clearowner", greindex)
		entity_set_int(greindex, EV_INT_iuser1, 0)
		entity_set_size(greindex, Float:{-6.0,-6.0,-6.0}, Float:{6.0,6.0,6.0})
		entity_set_float(greindex, EV_FL_friction,0.6)
		
		new r = random_num(1, 255)
		new g = random_num(1, 255)
		new b = random_num(1, 255)
		
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
		write_byte(22)
		write_short(greindex)
		write_short(iBeamspr)
		write_byte(10)
		write_byte(10)
		write_byte(r)
		write_byte(g)
		write_byte(b)
		write_byte(100)
		message_end()
		
		set_rendering(greindex,kRenderFxGlowShell, r, g, b)
		set_task(1.5, "EventStopRoll", greindex)

		return PLUGIN_CONTINUE;
	}
	return PLUGIN_CONTINUE
}

public EventStopRoll(iEnt) 
{
	if(is_valid_ent(iEnt)) 
	{
		if(get_entity_flags(iEnt) & FL_ONGROUND) 
		{
			entity_set_vector(iEnt, EV_VEC_velocity, Float:{0.0,0.0,0.0})
			entity_set_float(iEnt, EV_FL_gravity, 1.0)
			
			set_rendering(iEnt)
			clearowner(iEnt)
			
			remove_entity(iEnt)
		}
		else 
		{
			set_task(1.0, "EventStopRoll", iEnt)
		}
		
	}
}

public clearowner(iEnt) 
	if(is_valid_ent(iEnt)) 
		entity_set_edict(iEnt, EV_ENT_owner, 0)

public player_interact(iEnt, iPlayer) 
{
	if(iDay == 3 || iDay == 4)
	{
		if(is_valid_ent(iEnt)) 
		{
			new iClassname[32], iModel[32]
			entity_get_string(iEnt, EV_SZ_classname, iClassname, charsmax(iClassname))
			entity_get_string(iEnt, EV_SZ_model, iModel, charsmax(iModel))
		
			if(equali(iClassname, "grenade") && !equali(iModel,"models/w_c4.mdl")) 
			{
				hit_by_ball(iPlayer, iEnt)
			}
		}
		return PLUGIN_CONTINUE
	}
	return PLUGIN_CONTINUE
}

public ball_interact(iBall, iEnt) 
{
	if(iEnt == 0) 
	{
		entity_set_int(iBall, EV_INT_iuser1, 1)
		set_rendering(iBall);
	}
	else 
	{
		new iClassname[32]
		entity_get_string(iEnt,EV_SZ_classname, iClassname, charsmax(iClassname))
		
		if(equali(iClassname,"func_", 5)) 
		{
			entity_set_int(iBall, EV_INT_iuser1, 1)
			set_rendering(iBall)

			new Float:start[3], Float:end[3], Float:ground[3]
			entity_get_vector(iBall, EV_VEC_origin, start)
			end = start
			end[2] -= 1024.0
			trace_line(iEnt,start,end,ground)
			ground[2] += 7.0
			entity_set_vector(iBall, EV_VEC_origin, ground)
		}
	}
	return PLUGIN_CONTINUE
}

public hit_by_ball(iPlayer, iBall) 
{
	if(entity_get_int(iBall, EV_INT_iuser1) == 1) // Dead ball
		return PLUGIN_HANDLED

	new owner = entity_get_edict(iBall, EV_ENT_euser1)

	if(owner == iPlayer)
	{
		entity_set_int(iBall,EV_INT_iuser1, 1);
		set_rendering(iBall);
		return PLUGIN_HANDLED
	}

	if(get_user_team(iPlayer) != get_user_team(owner))
	{
		entity_set_int(iBall, EV_INT_iuser1,1);
		set_rendering(iBall);
		return PLUGIN_HANDLED
	}
	
	set_task(0.1, "kill", iPlayer)

	if(is_user_connected(owner)) 
	{
		set_user_frags(owner,  get_user_frags(owner)+1)
		message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"))
		write_byte(owner)
		write_short(get_user_frags(owner))
		write_short(cs_get_user_deaths(owner))
		write_short(0)
		write_short(get_user_team(owner))
		message_end()
	}

	make_deathmsg(owner, iPlayer, 1, "dodgeball")

	entity_set_int(iBall, EV_INT_iuser1, 1)
	set_rendering(iBall)
	
	return PLUGIN_HANDLED
 }

public kill(iPlayer) 
{
	strip_user_weapons(iPlayer)
	set_user_godmode(iPlayer, 0)
	user_silentkill(iPlayer)
	message_begin(MSG_BROADCAST,get_user_msgid("ScoreInfo"))
	write_byte(iPlayer)
	write_short(get_user_frags(iPlayer))
	write_short(cs_get_user_deaths(iPlayer))
	write_short(0)
	write_short(1)
	message_end()
}

public msg_sendaudio() 
{
	if(iDay == 3 || iDay == 4)
	{
		new string[32];
		get_msg_arg_string(2,string,31);

		if(equali(string,"%!MRAD_FIREINHOLE")) 
			return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

public msg_textmsg() 
{
	if(iDay == 3 || iDay == 4)
	{
		new string[32]
		
		get_msg_arg_string(2,string,31);
		if(equali(string,"#Weapon_Cannot_Be_Dropped"))
			return PLUGIN_HANDLED;

		if(str_to_num(string) > 0) 
		{
			get_msg_arg_string(3,string,31)
			if(equali(string,"#Game_radio")) 
			{
				get_msg_arg_string(5,string,31)
				if(equali(string,"#Fire_in_the_hole"))
					return PLUGIN_HANDLED
			}
		}
	}
	return PLUGIN_CONTINUE
}

//    _____________
//___/ ANGRY BIRDS \_______
//~~~~~~~~~~~~~~~~~~~~~~~~~
public StartAngry() 
{	
	iDay = 4
	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i) && is_user_alive(i))
		{
			set_task(1.0, "CheckGame", 321, _, _, "b")
			
			client_cmd(i, "spk sound/PlayGroundv2angry/angry.wav")
			
			strip_user_weapons(i)
			set_user_health(i, 100)
			
			switch(cs_get_user_team(i))
			{
				case CS_TEAM_T:
				{
					set_task(1.7, "GiveHE", i, _, _, "b")
					give_item(i, "weapon_hegrenade")
				}
				case CS_TEAM_CT:
				{
					give_item(i, "weapon_knife")
					set_user_godmode(i, 1)
					give_item(i, "weapon_deagle")
					cs_set_user_bpammo(i, CSW_DEAGLE, 35)
					give_item(i, "weapon_m4a1")
					cs_set_user_bpammo(i, CSW_M4A1, 90)
					cs_set_user_armor(i, 100, CS_ARMOR_VESTHELM)
				}
			}
			
			ColorChat(i, GREY, "%s Objective: Throw your^4 Angry Birds^3 at your teammates.", prefix)
			CantPickGun[i] = true
		}
	}
	return PLUGIN_HANDLED
}

//    _________
//___/ SAWGAME \___________
//~~~~~~~~~~~~~~~~~~~~~~~~~
public SawMenu(iPlayer)
{
	new szSawMenu = menu_create("[PlayGround] Saw Menu^nChoose Saw Man:", "SawMenuHandler")
	
	new players[32], pnum, tempid
	new szName[32], szTempid[10]
	get_players(players, pnum, "ac") 
	
	for(new i; i<pnum; i++)
	{
		tempid = players[i]

		if(cs_get_user_team(tempid) == CS_TEAM_T)
		{
			get_user_name(tempid, szName, charsmax(szName))
			num_to_str(tempid, szTempid, charsmax(szTempid))
		
			menu_additem(szSawMenu, szName, szTempid, 0)
		}
	}
	menu_display(iPlayer, szSawMenu, 0)
}

public SawMenuHandler(iPlayer, iMenu, iItem)
{
	if(iItem == MENU_EXIT)
	{
		menu_destroy(iMenu)
		return PLUGIN_HANDLED
	}
	if(iDay)
	{
		ColorChat(iPlayer, GREY, "%s There is already a special day going on.", prefix)
		return PLUGIN_HANDLED
	}

	new iAccess, iCallback, szCommand[6], szName[64]
	menu_item_getinfo(iMenu, iItem, iAccess, szCommand, 5, szName, 63, iCallback)

	sawMan = str_to_num(szCommand)
	
	if(is_user_connected(sawMan) && is_user_alive(sawMan))
	{
		StartSawgame()
		new iName[33]; get_user_name(iPlayer, iName, charsmax(iName))
		ColorChat(0, GREY, "%s^4 %s^3 chose to start^4 %s^3.", prefix, iName, DayNames[4])

		new szTemp[100]; formatex(szTemp, charsmax(szTemp), "[PlayGround] Days^nToday: %s", DayNames[4])
		set_dhudmessage(255, 0, 0, -1.0, 0.2, 2, 6.0, 3.0, 0.1, 1.5)
		show_dhudmessage(0, szTemp)
	}
	else
	{
		SawMenu(iPlayer)
		ColorChat(iPlayer, GREY, "%s This player is dead or not connected, please choose another^4 Saw Man^3.", prefix)
	}

	menu_destroy(iMenu)
	return PLUGIN_HANDLED
}

public StartSawgame() 
{	
	iDay = 5
	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i))
		{
			client_cmd(i, "spk sound/PlayGroundv2saw/sawgame.wav")
			
			strip_user_weapons(i)
			set_user_health(i, 100)
			give_item(i, "weapon_knife")
			
			switch(cs_get_user_team(i))
			{
				case CS_TEAM_CT:
				{
					set_user_godmode(i, 1)
					give_item(i, "weapon_deagle")
					cs_set_user_bpammo(i, CSW_DEAGLE, 35)
					give_item(i, "weapon_m4a1")
					cs_set_user_bpammo(i, CSW_M4A1, 90)
					cs_set_user_armor(i, 100, CS_ARMOR_VESTHELM)
				}
			}
			
			ColorChat(i, GREY, "%s Objective: Run away from the^4 Saw man^3!", prefix)
			CantPickGun[i] = true
		}
	}
	
	set_task(1.0, "CheckSawgame", 321, _, _, "b")
	set_task(180.0, "EndSawgame", 123)
	
	set_user_rendering(sawMan, kRenderFxGlowShell,255,0,0,kRenderNormal,25)
	cs_set_user_nvg(sawMan, 1)
	set_user_maxspeed(sawMan, 270.0)
	
	new iName[33]; get_user_name(sawMan, iName, charsmax(iName))
	ColorChat(0, GREY, "%s ^4%s^3 became a^4 Saw man^3!", prefix, iName)
	
	set_lights("b")
	return PLUGIN_HANDLED
}

public CheckSawgame()
{
	if(getPlayers(CS_TEAM_T) == 1) // Saw man has killed everyone, end everything.
	{
		remove_task(123)
		remove_task(321)
		
		EventRoundRefresh()
		
		ColorChat(0, GREY, "%s The^4 Saw man^3 killed all the prisoners and he gets his^4 LR^3.", prefix)
	}
}
	
public EndSawgame()
{
	remove_task(123)
	remove_task(321)
	
	if(getPlayers(CS_TEAM_T) != 1) // SAWMAN FAILED!
	{
		for(new i = 1; i < g_iMaxPlayers; i++)
		{
			if(is_user_connected(i) && is_user_alive(i) && i == sawMan)
			{
				user_silentkill(i)
				client_cmd(0, "spk sound/PlayGroundv2saw/gover.wav")
				ColorChat(0, GREY, "%s The^4 Saw man^3 failed to kill all the prisoners!", prefix)
				EventRoundRefresh()
			}
		}
	}
}

stock getPlayers(CsTeams:iTeam)
{
	new players
	for(new i = 1; i < 33; i++)
		if(is_user_connected(i) && !is_user_bot(i) && is_user_alive(i))
			if(cs_get_user_team(i) == iTeam) players++
	
	return players
}

//    ________
//___/ SPARTA \____________
//~~~~~~~~~~~~~~~~~~~~~~~~~
public StartSparta()
{
	iDay = 6

	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i) && is_user_alive(i))
		{
			client_cmd(i, "spk sound/PlayGroundv2sparta/spartav2.wav")
			
			strip_user_weapons(i)
			give_item(i, "weapon_knife")
			switch(cs_get_user_team(i))
			{
				case CS_TEAM_CT: set_user_health(i, 150)
				case CS_TEAM_T: set_user_health(i, 35)
			}
			
			ColorChat(i, GREY, "%s Objective: Kill your enemies!", prefix)
		}
	}
	return PLUGIN_HANDLED
}

//    __________
//___/ SHARKDAY \__________
//~~~~~~~~~~~~~~~~~~~~~~~~~
public StartShark()
{
	iDay = 7

	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i) && is_user_alive(i))
		{
			strip_user_weapons(i)

			switch(cs_get_user_team(i))
			{
				case CS_TEAM_CT: 
				{
					set_user_health(i, 50 * getPlayers(CS_TEAM_T))
					give_item(i, "weapon_knife") 
					set_user_noclip(i, 1)
					set_user_rendering(i, kRenderFxNone, 0, 0, 0, kRenderTransAdd, 0)
				}
				case CS_TEAM_T: 
				{
					set_user_health(i, 100)
					give_item(i, "weapon_m249")
					cs_set_user_bpammo(i, CSW_M249, 900)
				}
			}
			
			ColorChat(i, GREY, "%s Objective: Kill your enemies! (The guards are invisible with noclip)", prefix)
			CantPickGun[i] = true
		}
	}
	
	set_lights("b")
	return PLUGIN_HANDLED
}

//    ______________
//___/ INTERVENTION \______
//~~~~~~~~~~~~~~~~~~~~~~~~~
public StartIntervention()
{
	iDay = 8

	for(new i = 1; i < g_iMaxPlayers; i++)
	{
		if(is_user_connected(i) && !is_user_bot(i) && is_user_alive(i))
		{
			set_task(1.0, "CheckGame", 321, _, _, "b")

			strip_user_weapons(i)
			set_user_health(i, 100)
			set_user_godmode(i, 0)
			
			switch(cs_get_user_team(i))
			{
				case CS_TEAM_T:
				{
					give_item(i, "weapon_awp")
					cs_set_user_bpammo(i, CSW_AWP, 30)
				}
				case CS_TEAM_CT:
				{
					set_user_godmode(i, 1)
					give_item(i, "weapon_deagle")
					cs_set_user_bpammo(i, CSW_DEAGLE, 35)
					give_item(i, "weapon_m4a1")
					cs_set_user_bpammo(i, CSW_M4A1, 90)
					cs_set_user_armor(i, 100, CS_ARMOR_VESTHELM)
				}
			}

			ColorChat(i, GREY, "%s Objective: Kill your enemies!", prefix)
			CantPickGun[i] = true
		}
	}
	return PLUGIN_HANDLED
}


//    _________________
//___/ Plugin Precache \_____________________________________________________________________________
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public plugin_precache() 
{
	//FREEDAY BELOW
	
	precache_sound("PlayGroundv2freeday/freeday.wav")
	
	//BOXING BELOW
	
	precache_model("models/PlayGroundv2box/v_box_red.mdl")
	precache_model("models/PlayGroundv2box/p_knife.mdl")

	for(new i = 0; i < sizeof boxing_sounds; i++)
		precache_sound(boxing_sounds[i])
	
	precache_sound("PlayGroundv2box/boxing.wav")
	
	//DODGEBALL BELOW
	
	precache_model("models/PlayGroundv2dodge/p_dodgeball.mdl")
	precache_model("models/PlayGroundv2dodge/v_dodgeball.mdl")
	precache_model("models/PlayGroundv2dodge/w_dodgeball.mdl")
	precache_sound("weapons/g_bounce1.wav")
	iBeamspr = precache_model("sprites/laserbeam.spr")
	
	precache_sound("PlayGroundv2dodge2/dodgeball.wav")
	
	// ANGRYBIRDS BELOW

	precache_model("models/PlayGroundv2angry/v_hegrenade.mdl")
	precache_model("models/PlayGroundv2angry/w_hegrenade.mdl")
	
	precache_sound("PlayGroundv2angry/angry.wav")
	precache_sound("weapons/bobi_pull.wav")
	precache_sound("weapons/bobi_throw.wav")
	
	// SAWMAN BELOW
	
	precache_model("models/PlayGroundv2saw/v_knife.mdl")
	precache_sound("PlayGroundv2saw/sawgame.wav")
	precache_sound("PlayGroundv2saw/gover.wav")
	
	// SPARTA BELOW
	
	precache_sound("PlayGroundv2sparta/spartav2.wav")
	
	// Intervention
	
	precache_model("models/PlayGroundv2intervention/v_intervention.mdl")
	precache_model("models/PlayGroundv2intervention/p_intervention.mdl")
}

Thanks, send me more shitsz!
proffs is offline
ironskillz1
AlliedModders Donor
Join Date: Jul 2012
Location: Sweden
Old 03-11-2014 , 19:15   Re: Clear owner of a entity Notworking
Reply With Quote #4

Quote:
Originally Posted by proffs View Post
Thanks, send me more shitsz!
No
__________________
I have many private and unique plugins for Jailbreak and Hide'N'Seek. PM me for more info.

Pm me.

Check out my roulette site.
ironskillz1 is offline
Send a message via Skype™ to ironskillz1
Reply



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

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

Forum Jump


All times are GMT -4. The time now is 06:02.


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