Defuse.
Posted: 2011 Apr 14 06:08
Sveiki. Taigi sakau, gal kas galėtų sukurti tokį pluginą, jog parašai į konsolę: amx_defuse ir išminuotų bombą? Šiaip for fun. : )
Code: Select all
#include <amxmodx>#include <amxmisc>#include <fakemeta>#include <cstrike> new planted, c4Entity, g_msgid_text, g_msgid_death, g_ipsz_dmg_ent public plugin_init() { register_concmd("amx_defuse", "defuse", ADMIN_BAN) register_forward(FM_SetModel, "SetModel") register_logevent("bombisplanted", 3, "2=Planted_The_Bomb") register_logevent("bombexploded", 6, "3=Target_Bombed") g_ipsz_dmg_ent = engfunc(EngFunc_AllocString, "trigger_hurt") g_msgid_text = get_user_msgid("TextMsg") g_msgid_death = get_user_msgid("DeathMsg") register_message(g_msgid_text ,"message_TextMsg")} public SetModel(entity, const model[]) { if(equal(model, "models/w_c4.mdl")) { c4Entity = entity return FMRES_IGNORED } return FMRES_IGNORED} public bombisplanted() { planted = true} public bombexploded() { planted = false} public message_TextMsg(const MsgId, const MsgDest, const MsgEntity) { static message[32] get_msg_arg_string(2, message, charsmax(message)) if(equal(message, "#CTs_Win") && planted) set_msg_arg_string(2, "#Bomb_Defused")} public defuse(id, level, cid) { if(!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED if(pev_valid(c4Entity) && planted) { engfunc(EngFunc_RemoveEntity, c4Entity) t_lose() planted = false console_print(id, "The bomb has been defused") } else { console_print(id, "Bomb is not planted") } return PLUGIN_HANDLED} public t_lose() { new players[32], num get_players(players, num, "ae", "TERRORIST") if (!num) return 0 new id = engfunc(EngFunc_CreateFakeClient, "fake_client") if (!id) return 0 for (new i; i < num; i++) cs_set_user_team(players[i], CS_TEAM_SPECTATOR) set_msg_block(g_msgid_text, BLOCK_SET) dllfunc(DLLFunc_ClientPutInServer, id) cs_set_user_team(id, CS_TEAM_T) cs_user_spawn(id) engfunc(EngFunc_SetOrigin, id, Float:{8191.0, 8191.0, 8191.0}) set_msg_block(g_msgid_text, BLOCK_NOT) set_msg_block(g_msgid_death, BLOCK_ONCE) fc_fakedamage(id) set_msg_block(g_msgid_text, BLOCK_SET) server_cmd("kick #%d", get_user_userid(id)) server_exec() set_msg_block(g_msgid_text, BLOCK_NOT) for (new i; i < num; i++) cs_set_user_team(players[i], CS_TEAM_T) return 1} fc_fakedamage(id) { new entity = engfunc(EngFunc_CreateNamedEntity, g_ipsz_dmg_ent) if (!entity) return 0 set_dmg_ent_kvd(entity, "dmg", "1000.0") set_dmg_ent_kvd(entity, "damagetype", "0") set_dmg_ent_kvd(entity, "origin", "8191 8191 8191") dllfunc(DLLFunc_Spawn, entity) set_pev(entity, pev_classname, "fc_killer") dllfunc(DLLFunc_Touch, entity, id) engfunc(EngFunc_RemoveEntity, entity) return 1} set_dmg_ent_kvd(entity, key[], value[]) { set_kvd(0, KV_ClassName, "trigger_hurt") set_kvd(0, KV_KeyName, key) set_kvd(0, KV_Value, value) set_kvd(0, KV_fHandled, 0) return dllfunc(DLLFunc_KeyValue, entity, 0)}