// Comment this line if you need more CPU or you don't want to block client-side doubleduck.
#define BLOCK_CLIENT_SIDE_DD_VIEW // default: enabled (uncommented)
// If you are using client-side doubleduck block (this is just a start of upcoming configs):
#if defined BLOCK_CLIENT_SIDE_DD_VIEW // this is only a notification (but a needed one) - do not change/remove it.
// Please write any world-view gun model what is automatically downloaded by the engine.
#define ENTITY_MDL "models/w_awp.mdl" // default: ("models/w_awp.mdl") (for use in cs/cz)
// Class-Name of anti-doubleduck entity.
#define ENTITY_NAME "anti_doubleducker" // default: ("anti_doubleducker")
#endif // this is only a notification (but a needed one) - do not change/remove it.
#include <amxmodx>
#include <fakemeta>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#define PLUGIN_NAME "Kisayollar"
#define PLUGIN_VERSION "0.1"
#define PLUGIN_AUTHOR "ByBuLuT"
#if defined BLOCK_CLIENT_SIDE_DD_VIEW
#define ENTITY_NAME "anti_doubleducker"
#define YETKI ADMIN_BAN
new const tag[] = "WOW SJ";
new bool:duck,bool:BJT,bool:say,bool:usay;
new g_iFakeEnt;
new Float: iAngles[ 33 ][ 3 ]
new fwPreThink,g_frozen[33]
#endif
new bool:g_bIsUserDead[33];
new const TAG[] = "WOW SJ";
public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
register_clcmd("say /duck","duckackapa")
register_clcmd("say /team","BlockJTx")
register_clcmd("say /spec","spece")
register_clcmd("say /say","says"),register_clcmd("say /usay","usays")
register_clcmd("say /macbaslat","davayy");
register_clcmd("say /yarisaha", "yarisaha");
register_clcmd("say /freeze","cmd_freeze"),register_clcmd("say /dondur","cmd_freeze")
register_clcmd("say /unfreeze","kontrol"),register_clcmd("say /durdur","cmd_freeze")
register_clcmd("say /coz","kontrol")
register_clcmd("say /devam","devamkee"),register_clcmd("say /rev","devamkee")
register_clcmd("say","hooksay"),register_clcmd("say_team","hooksayt")
register_clcmd( "jointeam", "BlockJT"),register_clcmd( "chooseteam", "BlockJT")
register_event("ResetHUD", "Event_ResetHUD", "be");
register_event("Health", "Event_Health", "bd", "1=0");
register_forward(FM_PlayerPreThink, "FM_PlayerPreThink_Pre", 0);
#if defined BLOCK_CLIENT_SIDE_DD_VIEW
if( (g_iFakeEnt=engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")))>0 ) // if anti-doubleduck entity created successfully:
{
set_pev(g_iFakeEnt, pev_classname, ENTITY_NAME); // lets register entity as non-standard
set_pev(g_iFakeEnt, pev_solid, SOLID_NOT); // why it should be solid to the server engine?
set_pev(g_iFakeEnt, pev_movetype, MOVETYPE_NONE); // lets make it unmovable
set_pev(g_iFakeEnt, pev_rendermode, kRenderTransAlpha); // we are starting to render it in invisible mode
set_pev(g_iFakeEnt, pev_renderamt, 0.0); // setting visibility level to zero (invinsible)
engfunc(EngFunc_SetModel, g_iFakeEnt, ENTITY_MDL); // we are setting model so client-side trace scan cold detect the entity
engfunc(EngFunc_SetSize, g_iFakeEnt, Float:{-16.0, -16.0, 53.0}, Float:{16.0, 16.0, 54.0}); // plugin will use less power if we wont change entity size at each FM_AddToFullPack
register_forward(FM_AddToFullPack, "FM_AddToFullPack_Pre", 0); // now we enable main and most important part of client-side double-duck block
}
#endif
}
public devamkee(WE){
if(~get_user_flags(WE) & YETKI) { Renkli_Yazi(WE,"^1[^3%s^1] ^4Bu Komut Icin ^3Yetkin Yok", TAG);return FMRES_IGNORED; }
kontrol(WE)
new players[32],inum,UWE;
get_players(players,inum, "ch")
for(new i;i<inum;i++) {
UWE = players[i];
if(get_user_team(UWE) != 3)
{
ExecuteHamB(Ham_CS_RoundRespawn, UWE)
}
}
Renkli_Yazi(0,"^1[^3%s^1] ^4Herkes ^3Revlendi", TAG)
return FMRES_IGNORED;
}
public duckackapa(WE){
if(~get_user_flags(WE) & YETKI) { Renkli_Yazi(WE,"^1[^3%s^1] ^4Bu Komut Icin ^3Yetkin Yok", TAG);return FMRES_IGNORED; }
if(duck) Renkli_Yazi(0,"^1[^3%s^1] ^4Duck ^3Kapatildi", TAG),duck = false;
else Renkli_Yazi(0,"^1[^3%s^1] ^4Duck ^3Acildi", TAG),duck = true;
return FMRES_IGNORED;
}
public davayy(WE)
{
if(~get_user_flags(WE) & YETKI) { Renkli_Yazi(WE,"^1[^3%s^1] ^4Bu Komut Icin ^3Yetkin Yok", TAG);return FMRES_IGNORED; }
TenSekindsRimeyning();
server_cmd("amx_cvar sj_golesencontra 1");
server_cmd("amx_cvar sj_kill_distance_holder 0");
server_cmd("amx_cvar sj_offside 1");
server_cmd("amx_cvar sj_limites 1");
Renkli_Yazi(0,"^1[^3%s^1] ^4Restart ^3Atiliyor ^1ve ^4Mac^3 10 Saniye Sonra ^4Baslayacak", TAG);return FMRES_IGNORED;
}
public TenSekindsRimeyning(){
static eskiskin = 0;
set_dhudmessage(random_num(0,100),random_num(15,255),random_num(15,255),-1.0,-0.70,2,0.4,0.5,0.02,2.0);
show_dhudmessage(0, "MAC BASLIYOR.!");
set_hudmessage(random_num(15,255),random_num(15,255),0,-1.0,random_float(-0.64,-0.68),2,0.4,0.5,0.02,0.45);
if(eskiskin!=10)show_hudmessage(0, "^n^n^n^n[ %i ] Saniye",10-eskiskin);
else show_dhudmessage(0, "^n^n^n^nMAC BASLADI.!");
switch(eskiskin)
{
case 0:client_print_color(0,print_team_default,"^4%s:^1 Macin Baslamasina^4 10 Saniye^1...^3!!",tag),eskiskin++,set_task(1.0,"TenSekindsRimeyning"),set_cvar_string("sv_restart","11");
case 1:client_print_color(0,print_team_default,"^4%s:^1 Macin Baslamasina^4 9 Saniye^1...^3!!",tag),eskiskin++,set_task(1.0,"TenSekindsRimeyning");
case 2:client_print_color(0,print_team_default,"^4%s:^1 Macin Baslamasina^4 8 Saniye^1...^3!!",tag),eskiskin++,set_task(1.0,"TenSekindsRimeyning");
case 3:client_print_color(0,print_team_default,"^4%s:^1 Macin Baslamasina^4 7 Saniye^1...^3!!",tag),eskiskin++,set_task(1.0,"TenSekindsRimeyning");
case 4:client_print_color(0,print_team_default,"^4%s:^1 Macin Baslamasina^4 6 Saniye^1...^3!!",tag),eskiskin++,set_task(1.0,"TenSekindsRimeyning");
case 5:client_print_color(0,print_team_default,"^4%s:^1 Macin Baslamasina^4 5 Saniye^1...^3!!",tag),eskiskin++,set_task(1.0,"TenSekindsRimeyning");
case 6:client_print_color(0,print_team_default,"^4%s:^1 Macin Baslamasina^4 4 Saniye^1...^3!!",tag),eskiskin++,set_task(1.0,"TenSekindsRimeyning");
case 7:client_print_color(0,print_team_default,"^4%s:^1 Macin Baslamasina^4 3 Saniye^1...^3!!",tag),eskiskin++,set_task(1.0,"TenSekindsRimeyning");
case 8:client_print_color(0,print_team_default,"^4%s:^1 Macin Baslamasina^4 2 Saniye^1...^3!!",tag),eskiskin++,set_task(1.0,"TenSekindsRimeyning");
case 9:client_print_color(0,print_team_default,"^4%s:^1 Macin Baslamasina^4 1 Saniye^1...^3!!",tag),eskiskin++,set_task(1.0,"TenSekindsRimeyning");
case 10:client_print_color(0,print_team_default,"^4%s:^3 AYARLAR YAPILDI^1 ve^3 MAC^4 BASLADI^1...^3!!",tag),eskiskin=0,set_task(1.0,"ayarla");
}
}
public ayarla(){
say=true,usay=true,BJT=true,duck=false;
set_cvar_string("sj_score","21");
set_cvar_num("sj_golesencontra",1);
set_cvar_num("sj_kill_distance_holder",0);
set_cvar_num("sj_kill_distance_ball",0);
set_cvar_num("sj_offside",1);
set_cvar_num("sj_limites",1);
}
public yarisaha(WE){
if(~get_user_flags(WE) & YETKI) { Renkli_Yazi(WE,"^1[^3%s^1] ^4Bu Komut Icin ^3Yetkin Yok", TAG);return FMRES_IGNORED; }
new cvar = get_cvar_pointer("sj_limites");
new cvarpos = get_pcvar_num(cvar);
set_pcvar_num(cvar,cvarpos == 1 ? 0:1);
Renkli_Yazi(0,"^1[^3WOW SJ^1] ^4Yarisaha modu ^3%s.!",cvarpos == 1 ? "Kapatildi":"Aktif Edildi");
return FMRES_IGNORED;
}
public says(WE){
if(~get_user_flags(WE) & YETKI) { Renkli_Yazi(WE,"^1[^3%s^1] ^4Bu Komut Icin ^3Yetkin Yok", TAG);return FMRES_IGNORED; }
if(!say) Renkli_Yazi(0,"^1[^3%s^1] ^4Say ^3Kapatildi", TAG),say = true;
else Renkli_Yazi(0,"^1[^3%s^1] ^4Say ^3Acildi", TAG),say = false;
return FMRES_IGNORED;
}
public hooksay(WE){
if(say && ~get_user_flags(WE) & YETKI) { Renkli_Yazi(WE,"^1[^3%s^1] ^4Say ^3Kapatilmis", TAG);return FMRES_IGNORED; }
else return FMRES_SUPERCEDE;
}
public usays(WE){
if(~get_user_flags(WE) & YETKI) { Renkli_Yazi(WE,"^1[^3%s^1] ^4Takim Konusmasi ^3Kapatilmis.", TAG);return FMRES_IGNORED; }
if(!usay) Renkli_Yazi(0,"^1[^3%s^1] ^3usay KAPATILDI.!"),usay = true;
else Renkli_Yazi(0,"^1[^3%s^1] ^3usay ACILDI.!"),usay = false;
return FMRES_IGNORED;
}
public hooksayt(WE){
if(usay && ~get_user_flags(WE) & YETKI) { Renkli_Yazi(WE,"^1[^3%s^1] ^4Takim Konusmasi ^3Kapatilmis.", TAG);return FMRES_IGNORED; }
else return FMRES_SUPERCEDE;
}
public spece(WE){
if(~get_user_flags(WE) & YETKI) { Renkli_Yazi(WE,"^1[^3%s^1] ^4Bu Komut Icin ^3Yetkin Yok", TAG);return FMRES_IGNORED; }
new players[32],inum,UWE;
get_players(players,inum, "ch")
for(new i;i<inum;i++) {
UWE = players[i];
if(get_user_team(UWE) != 3)
{
user_silentkill(UWE);
cs_set_user_team(UWE, CS_TEAM_SPECTATOR)
}
}
Renkli_Yazi(0,"^1[^3%s^1] ^4HERKES SPECE ATILDI!", TAG)
return FMRES_IGNORED;
}
public cmd_freeze(WE)
{
if(get_user_flags(WE) & YETKI)
{
new players[32],inum,cWE
get_players(players,inum, "ah")
for(new i;i<inum;i++)
{
cWE = players[i]
{
new iFlags = pev( cWE , pev_flags )
if( ~iFlags & FL_FROZEN )
{
set_pev( cWE , pev_flags , iFlags | FL_FROZEN )
pev( cWE , pev_v_angle , iAngles[ WE ] )
set_user_rendering( cWE , kRenderFxGlowShell , 0 , 100 , 200 , kRenderNormal , 16 )
fwPreThink = register_forward( FM_PlayerPreThink , "fwPlayerPreThink" )
}
}
}
}else client_print(WE,print_chat,"Bu Komut Icin Yetkin Yok.!");
Renkli_Yazi(0,"^1[^3%s^1] ^4OYUN DURDURULDU!", TAG)
return FMRES_IGNORED;
}
public kontrol(WE)
{
if(get_user_flags(WE) & YETKI)
{
new players[32],inum,cWE
get_players(players,inum, "ah")
for(new i;i<inum;i++)
{
cWE = players[i]
{
cmd_unfreeze(cWE)
}
}
Renkli_Yazi(0,"^1[^3%s^1] ^4OYUN DEVAM EDIYOR!", TAG)
}else client_print(WE,print_chat,"Bu Komut Icin Yetkin Yok.!");
return FMRES_IGNORED;
}
public cmd_unfreeze(WE)
{
new frozenCount = 0;
g_frozen[WE] = false
new iFlags = pev( WE , pev_flags)
if(iFlags & FL_FROZEN)
{
set_pev(WE ,pev_flags ,iFlags & ~FL_FROZEN)
set_user_rendering( WE , kRenderFxNone , 0 , 0 , 0 , kRenderNormal , 0 )
new iPlayers[ 32 ] , iNum , i , tWE
get_players( iPlayers , iNum , "ah" )
for( i = 0; i < iNum; i++ )
{
tWE = iPlayers[ i ]
if( g_frozen[ tWE ] )
{
frozenCount++
}
}
if( !frozenCount && fwPreThink ) unregister_forward( FM_PlayerPreThink , fwPreThink )
}
return FMRES_IGNORED;
}
public client_connect(WE)
g_bIsUserDead[WE] = true;
public Event_ResetHUD(WE)
g_bIsUserDead[WE] = false;
public Event_Health(WE)
g_bIsUserDead[WE] = true;
public FM_PlayerPreThink_Pre(WE)
{
if( duck )
return FMRES_IGNORED;
if( g_bIsUserDead[WE] )
return FMRES_IGNORED;
if( pev(WE, pev_oldbuttons)&IN_DUCK && !(pev(WE, pev_button)&IN_DUCK) ) // if user unpressed duck key
{
static s_iFlags;
s_iFlags = pev(WE, pev_flags);
if( !(s_iFlags&FL_DUCKING) && pev(WE, pev_bInDuck) ) // if user wasn't fully ducked and is in ducking process
{
set_pev(WE, pev_bInDuck, false); // set user not in ducking process
set_pev(WE, pev_flags, (s_iFlags|FL_DUCKING)); // set user fully fucked
engfunc(EngFunc_SetSize, WE, Float:{-16.0, -16.0, -25.0}, Float:{16.0, 16.0, 25.0}); // set user size as fully ducked (won't take one frame delay)
}
}
return FMRES_IGNORED;
}
#if defined BLOCK_CLIENT_SIDE_DD_VIEW
public FM_AddToFullPack_Pre(iEsHandle, iE, iEnt, WE, iHostFlags, iPlayer, iPSet)
{
if( iEnt==g_iFakeEnt )
{
if( g_bIsUserDead[WE] ) // we are just blocking the function if user is dead cause why on earth we need it in this case (plus saves a bit of inet speed)
return FMRES_SUPERCEDE; // also I would block it if user is on ladder or in water, but it's unneeded CPU usage cause this two cases are rare
static Float:s_fFallSpeed;
pev(WE, pev_flFallVelocity, s_fFallSpeed);
if( s_fFallSpeed>=0.0 ) // vertical speed is always 0.0 if user is on ground, so we aren't checking FL_ONGROUND existence. Plus we need a check is user falling down
{
static Float:s_fOrigin[3];
pev(WE, pev_origin, s_fOrigin); // lets get player origin
if( pev(WE, pev_flags)&FL_DUCKING ) // this part teleports anti-doubleduck entity 17 units above player head
s_fOrigin[2] += s_fFallSpeed?2.0:18.0; // or right on players head if he is falling down to avoid instant double-duck after landing
else // and yes - if player is ducked we must teleport it a bit higher comparing to player center
s_fOrigin[2] -= s_fFallSpeed?16.0:0.0;
//set_es(iEsHandle, ES_Origin, s_fOrigin); // don't care asking me why this doesn't work in certain areas - I really dunno. if it did - CPU would be much better...
engfunc(EngFunc_SetOrigin, iEnt, s_fOrigin); // cause ES_Origin doesn't work I use this one (the one what takes all of this power)
forward_return(FMV_CELL, dllfunc(DLLFunc_AddToFullPack, iEsHandle, iE, iEnt, WE, iHostFlags, iPlayer, iPSet));
// cause ES_Origin doesn't work I forward my own function and block original one to
// save CPU by not hooking it twice like I did in 1.6 and older versions of plugin
set_es(iEsHandle, ES_Solid, SOLID_BBOX); // now we are making anti-doubleduck entity solid to the client engine
return FMRES_SUPERCEDE;
}
return FMRES_SUPERCEDE; // now we block original AddToFullPack cause or we already forwarded our own one or to save and server
// and client CPU and internet power cause we don't need this entity to be sent to client this frame
}
return FMRES_IGNORED;
}
#endif
public BlockJTx(WE) {
if(~get_user_flags(WE) & YETKI) { Renkli_Yazi(WE,"^1[^3%s^1] ^4Bu Komut Icin ^3Yetkin Yok", TAG);return FMRES_IGNORED; }
if(BJT) Renkli_Yazi(0,"^1[^3%s^1] ^4TAKIM DEGISTIRME ACILDI!", TAG),BJT = false;
else Renkli_Yazi(0,"^1[^3%s^1] ^4TAKIM DEGISTIRME KAPANDI!", TAG),BJT = true;
return FMRES_IGNORED;
}
public BlockJT(WE) {
if(BJT) { Renkli_Yazi(WE,"^1[^3%s^1] ^4TAKIM DEGISTIRME KAPALI!!", TAG);return FMRES_IGNORED; }
else return FMRES_SUPERCEDE;
}
stock Renkli_Yazi(const ID, const input[], any:...)
{
new Count = 1, Players[32];
static Message[191];
vformat(Message, 190, input, 3);
/* ^1 | ^x01 --> Yellow */
/* ^4 | ^x04 --> Green */
/* ^3 | ^x03 --> Team Color */
replace_all(Message, 190, "^1", "^x01");
replace_all(Message, 190, "^4", "^x04");
replace_all(Message, 190, "^3", "^x03");
if(ID) Players[0] = ID; else get_players(Players, Count, "ch");
{
for(new i = 0; i < Count; i++)
{
if(is_user_connected(Players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, Players[i]);
write_byte(Players[i]);
write_string(Message);
message_end();
}
}
}
}