Member
|
02-19-2020
, 02:35
Request modify furien base
|
#1
|
Hi guys , i've got a furien base , which one I am gonna put down bellow ,I want you to modify it such as when you are furien it gives you the bomb from the beggining of the round , the base I have gives the bomb after some time.
PHP Code:
#include <amxmodx>
#include <cstrike>
#include <engine>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#define PLUGIN "Furien Base"
#define VERSION "1.0"
#define SCOREATTRIB_BOMB (1<<1)
#define TASK_BOMB 25432
#define TASKHP 25525
#define SWITCH_TASK 112233
#define TASK_CANPLANT 10001
//** Furien Defines **//
#define IsWeaponBoxC4(%1) ( get_pdata_cbase(%1, 39, 4) > 0 )
#define Ham_Player_ResetMaxSpeed Ham_Item_PreFrame
/** **/
enum _:CvarBits (<<=1) {
BLOCK_RADIO = 1,
BLOCK_MSG
};
new Float:g_flFurienGravity = 0.375, Float:g_flMaxSpeed = 900.0;
new g_iInvisFactor = 1, g_iPickUp = 2;
/*
new const g_szPlayerModels[][] = {
"subzeroFurien",
"subzeroHuman"
}
*/
new g_iJumpNum[33];
new bool:g_bDoJump[33], bool:g_bCanPlant;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, "FaTzZu");
register_event( "HLTV", "evRoundStart", "a", "1=0", "2=0" );
RegisterHam(Ham_Spawn, "player", "hamPlayerSpawn", 1);
RegisterHam(Ham_Player_ResetMaxSpeed, "player", "Player_ResetMaxSpeed", 1);
RegisterHam( Ham_TakeDamage, "player", "HamTakeDamage" );
register_event( "SendAudio", "ev_CounterWin", "a", "1=0", "2=%!MRAD_ctwin" );
new iEnt;
iEnt = create_entity("info_target");
set_pev(iEnt, pev_classname, "check_speed");
set_pev(iEnt, pev_nextthink, get_gametime() + 0.1);
register_think("check_speed", "Set_Furiens_Visibility");
RegisterHam(Ham_Touch, "weaponbox", "CWeaponBox_Touch")
RegisterHam(Ham_Touch, "armoury_entity", "GroundWeapon_Touch")
RegisterHam(Ham_Touch, "weapon_shield", "GroundWeapon_Touch")
register_logevent( "LogEvent_PlayerSpawnWithBomb", 3, "2=Spawned_With_The_Bomb" )
//Game name changer
register_forward( FM_GetGameDescription, "GameDesc" );
register_message(get_user_msgid("ShowMenu"), "message_show_menu")
register_message(get_user_msgid("VGUIMenu"), "message_vgui_menu")
register_forward(FM_PlayerPreThink, "fwdPlayerPreThink" );
register_message(get_user_msgid("ScoreAttrib"), "Message_ScoreAttrib")
register_event( "TeamInfo", "join_team", "a")
}
public plugin_precache()
{
disable_buyzone();
/*
for( new i;i<sizeof(g_szPlayerModels); i++)
{
new szFileName[128];
formatex(szFileName, charsmax(szFileName), "models/player/%s/%s.mdl", g_szPlayerModels[i], g_szPlayerModels[i]);
if(file_exists(szFileName))
precache_model(szFileName);
else
{
new szError[64];
formatex(szError, charsmax(szError), "Missing file [%s]",szFileName);
set_fail_state(szError);
}
}
*/
}
public Message_ScoreAttrib()
{
new iFlags = get_msg_arg_int(2)
if( iFlags & SCOREATTRIB_BOMB && !g_bCanPlant)
{
iFlags &= ~SCOREATTRIB_BOMB
set_msg_arg_int(2, 0, iFlags)
}
}
public client_connect(id)
{
g_iJumpNum[id] = 0;
g_bDoJump[id] = false
}
public client_disconnect(id)
remove_task(id+TASKHP);
public Player_ResetMaxSpeed(id)
{
if( is_user_alive(id) && get_user_team(id) == 1 && get_user_maxspeed(id) != 1.0)
set_pev(id, pev_maxspeed, g_flMaxSpeed)
}
public CWeaponBox_Touch(iWeaponBox, id)
{
if(is_user_connected(id))
{
if(!is_user_alive(id))
return HAM_SUPERCEDE
if(IsWeaponBoxC4(iWeaponBox))
return HAM_IGNORED
if(!g_iPickUp)
{
remove_entity(iWeaponBox)
return HAM_SUPERCEDE
}
new iTeam = get_user_team(id)
if((iTeam == 1 && g_iPickUp != 1) || (iTeam == 2 && g_iPickUp != 2))
{
return HAM_SUPERCEDE
}
}
return HAM_IGNORED
}
public GroundWeapon_Touch(iWeapon, id)
{
if(is_user_connected(id))
{
if( !g_iPickUp )
{
remove_entity(iWeapon)
return HAM_SUPERCEDE
}
if( !is_user_alive(id) )
return HAM_SUPERCEDE
new iTeam = get_user_team(id)
if((iTeam == 1 && g_iPickUp != 1) || (iTeam == 2 && g_iPickUp != 2))
{
return HAM_SUPERCEDE
}
}
return HAM_IGNORED
}
public Set_Furiens_Visibility( iEnt )
{
entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.1)
new iPlayers[32], iNum, id, Float:fVecVelocity[3], iSpeed
get_players(iPlayers, iNum, "ae", "TERRORIST")
for(new i; i<iNum; i++)
{
id = iPlayers[i]
if( get_user_weapon(id) == CSW_KNIFE )
{
entity_get_vector(id, EV_VEC_velocity, fVecVelocity)
iSpeed = floatround( vector_length(fVecVelocity) )
if( iSpeed < g_iInvisFactor*255 )
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, iSpeed/g_iInvisFactor)
else
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
}
else
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
}
}
public disable_buyzone()
{
new ent = find_ent_by_class(-1,"info_map_parameters");
if(!ent) ent = create_entity("info_map_parameters");
DispatchKeyValue(ent,"buying","3");
DispatchSpawn(ent);
}
/** ----------------------- **/
public hamPlayerSpawn(id)
{
if(!is_user_alive(id))
return;
switch(get_user_team(id))
{
case 1:
{
//cs_reset_user_model(id)
//cs_set_user_model(id, g_szPlayerModels[0]);
set_user_gravity(id, g_flFurienGravity);
set_user_footsteps(id, 1);
}
case 2:
{
//cs_reset_user_model(id)
//cs_set_user_model(id, g_szPlayerModels[1]);
set_user_footsteps(id, 0);
set_user_gravity(id, 1.0);
}
}
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
}
/** ----------------------- **/
public ev_CounterWin()
{
new iPlayers[32], iNum;
get_players( iPlayers, iNum, "ch" );
if( iNum )
{
new id;
for( --iNum; iNum >= 0; iNum-- )
{
id = iPlayers[ iNum ];
if( is_user_connected( id ) )
{
BeginDelayedTeamChange( id );
}
}
}
}
public BeginDelayedTeamChange(id)
{
switch(id)
{
case 1..6: set_task( 0.1, "ChangeUserTeamWithDelay",id+SWITCH_TASK);
case 7..13: set_task( 0.2, "ChangeUserTeamWithDelay",id+SWITCH_TASK);
case 14..20: set_task( 0.3, "ChangeUserTeamWithDelay",id+SWITCH_TASK);
case 21..26: set_task( 0.4, "ChangeUserTeamWithDelay",id+SWITCH_TASK);
case 27..32: set_task( 0.5, "ChangeUserTeamWithDelay",id+SWITCH_TASK);
}
}
public ChangeUserTeamWithDelay(id)
{
id -= SWITCH_TASK;
if(!is_user_connected(id)) return 1;
switch(cs_get_user_team(id))
{
case CS_TEAM_T: cs_set_user_team( id, CS_TEAM_CT );
case CS_TEAM_CT: cs_set_user_team( id, CS_TEAM_T );
}
return 0;
}
/** ----------------------- **/
public evRoundStart()
{
g_bCanPlant = false;
remove_task(TASK_BOMB);
new Float: flTime = get_cvar_num( "mp_freezetime" ) + ( get_cvar_num( "mp_roundtime" ) * 60 ) - 30.0;
set_task( flTime, "taskGiveBomb", TASK_BOMB );
}
public taskGiveBomb()
{
new id = GetRandomPlayer("ae", "TERRORIST");
if(!id)
return;
give_item(id, "weapon_c4");
SetBombSites(true);
cs_set_user_plant(id, 1, 1);
new szName[32];
get_user_name(id, szName, 31);
g_bCanPlant = true;
}
public LogEvent_PlayerSpawnWithBomb(id)
{
new id = get_loguser_index();
if (user_has_weapon(id, CSW_C4))
{
engclient_cmd(id, "weapon_c4")
cs_set_user_bpammo(id, CSW_C4, 0)
engclient_cmd(id, "lastinv")
message_begin(MSG_ONE, get_user_msgid("StatusIcon"), _, id)
write_byte(0)
write_string("c4")
message_end()
SetBombSites(false);
cs_set_user_plant(id, 0, 0);
}
}
/** ----------------------- **/
public client_PreThink(id)
{
if(!is_user_alive(id))
return;
new Float:fallspeed = 100.0 * -1.0
new button = get_user_button(id)
if(button & IN_USE && get_user_team(id) == 2)
{
new Float:velocity[3]
entity_get_vector(id, EV_VEC_velocity, velocity)
if (velocity[2] < 0.0)
{
entity_set_int(id, EV_INT_sequence, 3)
entity_set_int(id, EV_INT_gaitsequence, 1)
entity_set_float(id, EV_FL_frame, 1.0)
entity_set_float(id, EV_FL_framerate, 1.0)
velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed
entity_set_vector(id, EV_VEC_velocity, velocity)
}
}
new nbut = get_user_button(id)
new obut = get_user_oldbutton(id)
if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
{
if(g_iJumpNum[id] < 1)
{
g_bDoJump[id] = true
g_iJumpNum[id]++
}
}
if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
{
g_iJumpNum[id] = 0
}
}
public client_PostThink(id)
{
if(!is_user_alive(id))
return;
if(g_bDoJump[id])
{
new Float:velocity[3]
entity_get_vector(id,EV_VEC_velocity,velocity)
velocity[2] = random_float(265.0,285.0)
entity_set_vector(id,EV_VEC_velocity,velocity)
g_bDoJump[id] = false
}
}
/** ----------------------- **/
public fwdPlayerPreThink( id )
{
if(is_user_alive(id))
{
new target, body;
get_user_aiming(id, target, body, 9999);
new CsTeams:team = cs_get_user_team(id);
if(is_user_alive(target))
{
new CsTeams:targetTeam = cs_get_user_team(target);
new sName[32];
get_user_name(target,sName,31);
new sMessage[ 64 ];
if(targetTeam == team)
formatex( sMessage, charsmax(sMessage), "%s Health: %i", sName, get_user_health( target ) );
else if( targetTeam != team && team != CS_TEAM_CT )
formatex( sMessage, sizeof ( sMessage ) -1, "%s Health: %i", sName, get_user_health( target ) );
if( targetTeam == CS_TEAM_CT )
set_hudmessage( 0, 63, 127, -1.0, -1.0, 0, 0.0, 0.1, 0.0, 0.0, -1 );
else if( targetTeam == CS_TEAM_T )
set_hudmessage( 127, 0, 0, -1.0, -1.0, 0, 0.0, 0.1, 0.0, 0.0, -1 );
show_hudmessage( id, "%s", sMessage );
}
}
return FMRES_IGNORED;
}
/** ----------------------- **/
public message_show_menu(msgid, dest, id) {
if (!should_autojoin(id))
return PLUGIN_CONTINUE
static team_select[] = "#Team_Select"
static menu_text_code[sizeof team_select]
get_msg_arg_string(4, menu_text_code, sizeof menu_text_code - 1)
if (!equal(menu_text_code, team_select))
return PLUGIN_CONTINUE
set_force_team_join_task(id, msgid)
return PLUGIN_HANDLED
}
public message_vgui_menu(msgid, dest, id) {
if (get_msg_arg_int(1) != 2 || !should_autojoin(id))
return PLUGIN_CONTINUE
set_force_team_join_task(id, msgid)
return PLUGIN_HANDLED
}
/** ----------------------- **/
public HamTakeDamage(id, iInflictor, iAttacker, Float: flDamage, iDamageBits)
{
if( iDamageBits & DMG_BLAST )
return HAM_SUPERCEDE;
return HAM_IGNORED;
}
/** ----------------------- **/
public GameDesc()
{
forward_return(FMV_STRING, "Furien by Ghimpe" );
return FMRES_SUPERCEDE;
}
/** ----------------------- **/
public join_team()
{
new id = read_data(1);
static jucator[32];
read_data(2, jucator, 31);
if(!is_user_connected(id))
return PLUGIN_CONTINUE ;
switch(jucator[0])
{
case 'C':
{
register_clcmd("jointeam","cmd_block");
register_clcmd("jointeam 1","cmd_block");
register_clcmd("jointeam 5","cmd_block");
}
case 'T':
{
register_clcmd("jointeam","cmd_block");
register_clcmd("jointeam 1","cmd_block");
register_clcmd("jointeam 5","cmd_block");
}
case 'S':
{
register_clcmd("jointeam","cmd_block");
register_clcmd("jointeam 1","cmd_block");
register_clcmd("jointeam 5","cmd_block");
}
}
return PLUGIN_CONTINUE;
}
public cmd_block(id) return PLUGIN_HANDLED;
/** ----------------------- **/
bool:should_autojoin(id) {
return (!get_user_team(id) && !task_exists(id))
}
set_force_team_join_task(id, menu_msgid) {
static param_menu_msgid[2]
param_menu_msgid[0] = menu_msgid
set_task(0.1, "task_force_team_join", id, param_menu_msgid, sizeof param_menu_msgid)
}
public task_force_team_join(menu_msgid[], id) {
if (get_user_team(id))
return
force_team_join(id, menu_msgid[0], "5","5")
}
stock force_team_join(id, menu_msgid, /* const */ team[] = "5", /* const */ class[] = "0") {
static jointeam[] = "jointeam"
if (class[0] == '0') {
engclient_cmd(id, jointeam, team)
return
}
static msg_block, joinclass[] = "joinclass"
msg_block = get_msg_block(menu_msgid)
set_msg_block(menu_msgid, BLOCK_SET)
engclient_cmd(id, jointeam, team)
engclient_cmd(id, joinclass, class)
set_msg_block(menu_msgid, msg_block)
}
/** ----------------------- **/
stock GetRandomPlayer( const flags[ ] = "", const team[ ]= "" ) {
new iPlayers[ 32 ], iNum;
get_players( iPlayers, iNum, flags, team );
return iNum ? iPlayers[ random_num( 0, iNum - 1 ) ] : 0;
}
stock get_loguser_index() {
new loguser[80], name[32]
read_logargv(0, loguser, 79)
parse_loguser(loguser, name, 31)
return get_user_index(name)
}
SetBombSites( bool:bActive )
{
new iEnt = -1
while( (iEnt = find_ent_by_class(iEnt, "func_bomb_target")) > 0 )
{
entity_set_int(iEnt, EV_INT_solid, bActive ? SOLID_TRIGGER : SOLID_NOT)
}
while( (iEnt = find_ent_by_class(iEnt, "info_bomb_target")) > 0 )
{
entity_set_int(iEnt, EV_INT_solid, bActive ? SOLID_TRIGGER : SOLID_NOT)
}
}
And one question , do you think that base can make lag on server?
|
|