Senior Member
|
02-14-2024
, 07:55
Re: bot auto planting bomb
|
#3
|
Quote:
Originally Posted by Mordekay
I'm not a coder, so I don't know if this is changeable. But the item C4 for T is the defuse kit for CT. So, any CT buying the defuse kit, would instantly plant the "bomb"
|
I am using this plugin, but the BOT in the CT team picks up the bomb, but the BOT will not install the bomb, I need to ask the CT picks up the bomb to install the bomb automatically if it is a BOT
Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#include <fun>
#define PLUGIN "CT PickUP C4"
#define VERSION "1.7"
#define AUTHOR "KinSprite"
#define MORE_THAN_ONE_BOMB
// Whether it is defined as an older version of the game, yes is 1, no is 0
#define FOR_OLD_GAME_ENGINE 0
new g_allowctpickupbomb
new g_lastcvarvalue
new g_allowctplantbomb
new g_lastallowctplantbomb
new bool:allowctpickupbomb[33]=true
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_dictionary("ctpickupc4.txt")
register_concmd("amx_ctpickupc4","cmdallowctpickupbomb",ADMIN_IMMUNITY," Effect cvar changing immediately,not until new round.")
register_logevent("startnewround",2,"0=World triggered","1=Round_Start")
register_logevent("round_end", 2, "1=Round_End")
register_logevent("ct_dropbomb",3,"1=triggered")
#if FOR_OLD_GAME_ENGINE == 1
register_event("Damage", "on_Damage", "b", "2!0")
#else
register_event("DeathMsg","on_DeathMsg","a")
#endif
register_touch("weaponbox", "player", "ctpickupbomb")
g_allowctpickupbomb = register_cvar("amx_allowctpickupbomb","0")
g_allowctplantbomb = register_cvar("amx_allowctplantbomb","1")
}
public cmdallowctpickupbomb(id,level,cid){
if(!cmd_access(id,level,cid,1))
return PLUGIN_HANDLED
console_print(id,"[AMXX] Effect cvar changing now")
set_task(0.5,"startnewround")
return PLUGIN_HANDLED
}
public startnewround(){
new now_value = get_pcvar_num(g_allowctpickupbomb)
new state_value
if(now_value!=g_lastcvarvalue)
{
new players[32],num,i
get_players(players, num,"ae","CT")
if(now_value==1){
for(i=0;i<num;i++)
allowctpickupbomb[players[i]] = true
state_value = 10
} else {
for(i=0;i<num;i++)
allowctpickupbomb[players[i]] = false
state_value = 20
}
g_lastcvarvalue = now_value
}
new now_allowctplantbomb = get_pcvar_num(g_allowctplantbomb)
if(g_lastcvarvalue==1&&now_allowctplantbomb!=g_lastallowctplantbomb)
{
if(now_allowctplantbomb==1)
state_value ++
else
state_value +=2
g_lastallowctplantbomb=now_allowctplantbomb
}
if(state_value!=0){
if(state_value==10)
{
if(g_lastallowctplantbomb==1)
state_value = 11
else
state_value = 12
}
new message[32]
switch(state_value)
{
case 1 : format(message,31,"CAN_PLANT_BOMB")
case 2 : format(message,31,"CAN_NOT_PLANT_BOMB")
case 11 : format(message,31,"ALLOW_CT_PICK_BOMB_AND_PLANT")
case 12 : format(message,31,"ALLOW_CT_PICK_BOMB_NOT_PLANT")
case 20 : format(message,31,"NOT_ALLOW_CT_PICK_BOMB")
}
client_print(0,print_chat,"[AMXX] %L",LANG_PLAYER,message)
new hud_message[64]
format(hud_message,63,"%s_SHORT",message)
set_hudmessage(0,100,255,-1.0,0.38,0,1.0,6.0,2.0,2.0,3)
show_hudmessage(0,"%L",LANG_PLAYER,hud_message)
}
}
public client_putinserver(id){
allowctpickupbomb[id] = true
if (g_lastcvarvalue == 1)
{
if (is_user_bot(id))
return PLUGIN_CONTINUE
new param[2]
param[0]=id
set_task(5.0,"show_server_state",id,param,1)
}
return PLUGIN_CONTINUE
}
public show_server_state(param[])
{
new message[32]
if(g_lastallowctplantbomb==1)
format(message,31,"ALLOW_CT_PICK_BOMB_AND_PLANT")
else
format(message,31,"ALLOW_CT_PICK_BOMB_NOT_PLANT")
client_print(param[0],print_chat,"[AMXX] %L",param[0],message)
new hud_message[64]
format(hud_message,63,"%s_SHORT",message)
set_hudmessage(0,100,255,-1.0,0.38,0,1.0,6.0,2.0,2.0,3)
show_hudmessage(param[0],"%L",param[0],hud_message)
}
public ct_dropbomb(){
new sArg[64], sAction[64]
new sName[64]
new iUserId, id
read_logargv(0,sArg,64)
read_logargv(2,sAction,64)
parse_loguser(sArg,sName,64,iUserId)
id = find_player("k",iUserId)
if(id==0)
return PLUGIN_CONTINUE
if(equal(sAction,"Dropped_The_Bomb")&&get_user_team(id)==2)
{
allowctpickupbomb[id]=false
new param[2]
param[0]=id
set_task(0.2,"reset_ctpickbomb",8963+id,param,1)
}
return PLUGIN_HANDLED
}
public reset_ctpickbomb(param[]){
allowctpickupbomb[param[0]]=true
}
public ctpickupbomb(Ent,player){
if ( get_user_team(player) != 2 || g_lastcvarvalue != 1 || !allowctpickupbomb[player] )
return PLUGIN_CONTINUE
new sz[33]
entity_get_string(Ent,EV_SZ_model,sz,32)
if(equal(sz,"models/w_backpack.mdl"))
{
#if defined (MORE_THAN_ONE_BOMB)
if(hasweapon(player,CSW_C4))
return PLUGIN_CONTINUE
#endif
give_item(player,"weapon_c4")
if(g_lastallowctplantbomb==1)
cs_set_user_plant(player, 1, 1)
else
cs_set_user_plant(player, 0, 1)
new c4 = find_ent_by_owner(-1, "weapon_c4", Ent)
kill_entity(Ent)
kill_entity(c4)
}
return PLUGIN_CONTINUE
}
public round_end() {
set_task(4.6, "round_prestart")
}
public round_prestart() {
new Players[32]
new playerCount, i
get_players(Players, playerCount, "ae", "CT")
new origin[3]
for (i=0; i<playerCount; i++)
if (hasweapon(Players[i], CSW_C4))
{
get_user_origin(Players[i],origin)
origin[2] -= 2000
set_user_origin(Players[i],origin)
engclient_cmd(Players[i],"drop","weapon_c4")
origin[2] += 2000
set_user_origin(Players[i],origin)
}
}
#if FOR_OLD_GAME_ENGINE == 1
public on_Damage(victim){
if ( victim < 1 || victim > 32 )
return PLUGIN_CONTINUE
if ( get_user_team(victim) != 2 )
return PLUGIN_CONTINUE
new damage = read_data(2)
if ( get_user_health(victim) - damage < 1 )
drop_c4(victim)
return PLUGIN_CONTINUE
}
#else
public on_DeathMsg(){
new victim = read_data(2)
if ( victim < 1 || victim > 32 )
return PLUGIN_CONTINUE
if (get_user_team(victim) == 2)
drop_c4(victim)
return PLUGIN_CONTINUE
}
#endif
drop_c4(id){
if (hasweapon(id, CSW_C4))
engclient_cmd(id,"drop","weapon_c4")
}
stock hasweapon(player_id,weapon_id)
{
new Weapons[32]
new numWeapons,i
get_user_weapons(player_id, Weapons, numWeapons)
for(i=0;i<numWeapons; i++)
{
if(Weapons[i]==weapon_id)
return true
}
return false
}
stock kill_entity(id)
{
entity_set_int(id, EV_INT_flags, entity_get_int(id, EV_INT_flags)|FL_KILLME)
}
__________________
|
|