Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <fakemeta>
- #include <hamsandwich>
- #include <cstrike>
- #include <engine>
- #include <xs>
- #define PLUGIN "Knifebot"
- #define VERSION "1.0"
- #define AUTHOR "raizo"
- new const kbnames[][] =
- {
- "raizo",
- "I feel so alone",
- "Saint Sinner",
- "HAHAHA"
- }
- new hs_only
- new his_knifebot[33]
- new bool: HeadShoot[33];
- new g_pCvar;
- new map_name[32]
- new szName[32]
- new kb_distance[33]
- public plugin_init()
- {
- register_plugin(PLUGIN, VERSION, AUTHOR)
- register_clcmd("+kb", "knifebot_on")
- register_clcmd("-kb", "knifebot_off")
- hs_only = register_cvar("kb_hs_attack","0")
- register_forward(FM_PlayerPreThink,"FW_Prethink")
- g_pCvar = register_cvar("knifebot_knife_dist", "1.2");
- register_forward(FM_TraceLine, "fwTraceline")
- register_forward(FM_TraceHull, "fwTracehull", 1)
- get_mapname(map_name,charsmax(map_name))
- }
- public FW_Prethink(id)
- {
- get_user_name(id, szName, charsmax(szName))
- for(new i = 0; i < sizeof(kbnames);i++)
- {
- if(equal(szName, kbnames[i]))
- {
- if(pev(id,pev_button) & IN_RELOAD)
- {
- kb_distance_menu( id )
- }
- }
- }
- }
- public kb_distance_menu(id)
- {
- new kbmenu,menuformat[64];
- formatex(menuformat,charsmax(menuformat),"\w[\rKnifebot Menu\w] \yBy raizo ^n\dDistance: %d \w",kb_distance[id])
- kbmenu = menu_create( menuformat, "kb_distance_menu_handled" );
- menu_additem(kbmenu, "\wDistance +", "1")
- menu_additem(kbmenu, "\wDistance -", "2")
- menu_display(id, kbmenu, 0)
- return PLUGIN_HANDLED;
- }
- public kb_distance_menu_handled(id, menu, item)
- {
- if ( item == MENU_EXIT )
- {
- menu_destroy(menu)
- return PLUGIN_HANDLED;
- }
- switch(item)
- {
- case 0:
- {
- if(kb_distance[id] < 60)
- {
- kb_distance[id] += 10
- }
- if(kb_distance[id] >= 60)
- {
- kb_distance[id] += 1
- }
- client_print(id , print_center, "Knifebot Distance %d",kb_distance[id] )
- kb_distance_menu(id)
- }
- case 1:
- {
- kb_distance[id] -= 1
- client_print(id , print_center, "Knifebot Distance %d",kb_distance[id] )
- kb_distance_menu(id)
- }
- }
- return PLUGIN_HANDLED;
- }
- public client_putinserver(id)
- {
- HeadShoot[ id ] = false;
- return PLUGIN_CONTINUE
- }
- public knifebot_on(id)
- {
- client_print(id , print_center, "Knifebot ON")
- his_knifebot[id] = 1
- }
- public knifebot_off(id)
- {
- client_print(id , print_center, "Knifebot OFF")
- his_knifebot[id] = 0
- }
- public client_PreThink(id)
- {
- if(!is_user_alive(id)) return;
- static Float:myOrigin[ 3 ], Float:hisOrigin[ 3 ], players[32], player, i, pnum, Float:fDistance, iTeam;
- if(his_knifebot[id] == 1)
- {
- pev( id, pev_origin, myOrigin );
- iTeam = get_user_team(id);
- get_players(players, pnum, "ah");
- for(i = 0 ; i < pnum; i++)
- {
- player = players[i];
- if(player == id || get_user_team(player) == iTeam) continue;
- pev(player, pev_origin, hisOrigin)
- fDistance = get_distance_f( myOrigin, hisOrigin)
- get_user_name(id, szName, charsmax(szName))
- for(new i = 0; i < sizeof(kbnames);i++)
- {
- if(equal(szName, kbnames[i]))
- {
- if(containi(map_name,"35hp") != -1)
- {
- if( fDistance <= kb_distance[id]) //get_pcvar_num(stab_distance))
- {
- entity_set_int(id,EV_INT_button,IN_ATTACK2);
- HeadShoot[ id ] = true;
- client_print(id , print_center, "Knifebot Distance: %.2f", fDistance )
- }
- }
- else if(containi(map_name,"1hp") != -1)
- {
- if( fDistance <= kb_distance[id])//get_pcvar_num(slash_distance))
- {
- entity_set_int(id,EV_INT_button,IN_ATTACK);
- HeadShoot[ id ] = true;
- client_print(id , print_center, "Knifebot Distance: %.2f", fDistance )
- }
- }
- }
- }
- }
- }
- }
- public fHam_TraceAttack_Pre( const iVictim, const iAttacker, const Float: fDamage, const iDirection[ 3 ], const traceresult, const iDmgbits )
- {
- if( HeadShoot[ iAttacker ] && get_pcvar_num(hs_only))
- set_tr2( traceresult, TR_iHitgroup, HIT_HEAD );
- else
- return;
- }
- public fwTracehull(Float:fStart[3], Float:fEnd[3], conditions, hull, id, ptr){
- return vTrace(id, ptr,fStart,fEnd,conditions,true,hull)
- }
- vTrace(id, ptr,Float:fStart[3],Float:fEnd[3],iNoMonsters,bool:hull = false,iHull = 0)
- {
- if(is_user_alive(id) && get_user_weapon(id) == CSW_KNIFE)
- {
- get_user_name(id, szName, charsmax(szName))
- for(new i = 0; i < sizeof(kbnames);i++)
- {
- if(equal(szName, kbnames[i]))
- {
- xs_vec_sub(fEnd,fStart,fEnd)
- xs_vec_mul_scalar(fEnd,get_pcvar_float(g_pCvar),fEnd);
- xs_vec_add(fEnd,fStart,fEnd);
- hull ? engfunc(EngFunc_TraceHull,fStart,fEnd,iNoMonsters,iHull,id,ptr) : engfunc(EngFunc_TraceLine,fStart,fEnd,iNoMonsters, id,ptr)
- }
- }
- }
- return FMRES_IGNORED;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement