AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Clear owner of a entity Notworking (https://forums.alliedmods.net/showthread.php?t=236780)

proffs 03-11-2014 04:22

Clear owner of a entity Notworking
 
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
        
}

    }
 } 


ironskillz1 03-11-2014 10:06

Re: Clear owner of a entity Notworking
 
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")
}


proffs 03-11-2014 16:54

Re: Clear owner of a entity Notworking
 
Quote:

Originally Posted by ironskillz1 (Post 2110407)
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!

ironskillz1 03-11-2014 19:15

Re: Clear owner of a entity Notworking
 
Quote:

Originally Posted by proffs (Post 2110597)
Thanks, send me more shitsz!

No


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

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