RSSy MYGO.pl Opublikowano Czerwiec 15, 2022 o 18:31 RSSy Udostępnij Opublikowano Czerwiec 15, 2022 o 18:31 how to get a CT bot with a bomb to plant a bomb code 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 // 是否定义为老版本游戏, 是为1,否为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) } Attached Files ctpickupc4.zip (13.0 KB) Przeczytaj cały wpis Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi