new g_client_weapons[33] = {0, ...} new g_lastinv[33] = {0, ...} register_clcmd("weapon_handgrenade", "weapon_handgrenade") register_clcmd("weapon_grenade", "weapon_grenade") register_clcmd("weapon_stickgrenade", "weapon_stickgrenade") register_clcmd("lastinv", "lastinv") register_event("ResetHUD", "reset_hud", "be") public grenade_throw(id, gren_id, wpn_id) { client_print(id, print_chat, "Grenade Thrown") return PLUGIN_CONTINUE } public weapon_handgrenade(id) { if(get_user_team(id) == 1) { g_can_smoke[id] = 0 } else { g_can_smoke[id] = 1 entity_set_string(id, EV_SZ_model, g_smoke_grenade_models[0]) entity_set_string(id, EV_SZ_viewmodel, g_smoke_grenade_models[1]) entity_set_string(id, EV_SZ_weaponmodel, g_smoke_grenade_models[2]) } client_print(id, print_chat, "Slot weapon_handgrenade Selected") return PLUGIN_CONTINUE } public weapon_grenade(id) { if(get_user_team(id) == 1) { g_can_smoke[id] = 0 } else { g_can_smoke[id] = 1 entity_set_string(id, EV_SZ_model, g_smoke_grenade_models[0]) entity_set_string(id, EV_SZ_viewmodel, g_smoke_grenade_models[1]) entity_set_string(id, EV_SZ_weaponmodel, g_smoke_grenade_models[2]) } client_print(id, print_chat, "Slot weapon_grenade Selected") return PLUGIN_CONTINUE } public weapon_stickgrenade(id) { if(get_user_team(id) == 1) { g_can_smoke[id] = 1 entity_set_string(id, EV_SZ_model, g_smoke_grenade_models[0]) entity_set_string(id, EV_SZ_viewmodel, g_smoke_grenade_models[1]) entity_set_string(id, EV_SZ_weaponmodel, g_smoke_grenade_models[2]) } else { g_can_smoke[id] = 0 } client_print(id, print_chat, "Slot weapon_stickgrenade Selected") return PLUGIN_CONTINUE } stock make_grenade(id) { new Float:origin[3] entity_get_vector(id, EV_VEC_origin, origin) new handgrenade = create_entity("info_target") entity_set_string(handgrenade, EV_SZ_classname, "g_smoke_grenade_models") entity_set_int(handgrenade, EV_ENT_owner, id) entity_set_int(handgrenade, EV_INT_solid, SOLID_TRIGGER) entity_set_int(handgrenade, EV_INT_movetype, MOVETYPE_FOLLOW) entity_set_vector(handgrenade, EV_VEC_origin, origin) entity_set_edict(handgrenade, EV_ENT_aiment, id) entity_set_string(handgrenade, EV_SZ_model, g_smoke_grenade_models[0]) entity_set_string(handgrenade, EV_SZ_viewmodel, g_smoke_grenade_models[1]) entity_set_string(handgrenade, EV_SZ_weaponmodel, g_smoke_grenade_models[2]) return PLUGIN_CONTINUE } public lastinv(id) { new clip, ammo, wpn = dod_get_user_weapon(id, clip, ammo) if(g_lastinv[id] == DODW_HANDGRENADE || g_lastinv[id] == DODW_STICKGRENADE || g_lastinv[id] == DODW_MILLS_BOMB) { if(g_lastinv[id] == 100) g_can_smoke[id] = 1 } */ client_print(id, print_chat, "Slot lastinv Selected %d", g_lastinv[id]) return PLUGIN_CONTINUE } public reset_hud(id) { /*if(get_user_team(id) == 1) give_item(id, "weapon_stickgrenade") else give_item(id, "weapon_handgrenade") */ //make_grenade(id) } /*if(get_user_team(id) == 1) { if(dod_get_map_info(MI_ALLIES_TEAM) == 1) give_item(id, "weapon_handgrenade") else give_item(id, "weapon_grenade") } else give_item(id, "weapon_stickgrenade")*/ stock give_user_weapons(id) { new wpn[32] switch(dod_get_user_class(id)) { case DODC_GARAND: { xmod_get_wpnname(DODW_GARAND, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_GARAND, 10) // Grenades xmod_get_wpnname(DODW_HANDGRENADE, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_HANDGRENADE, 2) } case DODC_CARBINE: { xmod_get_wpnname(DODW_M1_CARBINE, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_M1_CARBINE, 10) // Grenades xmod_get_wpnname(DODW_HANDGRENADE, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_HANDGRENADE, 2) } case DODC_THOMPSON: { xmod_get_wpnname(DODW_THOMPSON, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_THOMPSON, 5) // Grenades xmod_get_wpnname(DODW_HANDGRENADE, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_HANDGRENADE, 1) } case DODC_GREASE: { xmod_get_wpnname(DODW_GREASEGUN, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_GREASEGUN, 5) // Grenades xmod_get_wpnname(DODW_HANDGRENADE, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_HANDGRENADE, 1) } case DODC_SNIPER: { xmod_get_wpnname(DODW_SPRINGFIELD, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_SPRINGFIELD, 5) } case DODC_BAR: { xmod_get_wpnname(DODW_BAR, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_BAR, 12) // Grenades xmod_get_wpnname(DODW_HANDGRENADE, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_HANDGRENADE, 1) } case DODC_30CAL: { xmod_get_wpnname(DODW_30_CAL, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_30_CAL, 2) } case DODC_BAZOOKA: { xmod_get_wpnname(DODW_BAZOOKA, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_BAZOOKA, 5) } case DODC_KAR: { xmod_get_wpnname(DODW_KAR, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_KAR, 12) // Grenades xmod_get_wpnname(DODW_STICKGRENADE, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_STICKGRENADE, 2) } case DODC_K43: { xmod_get_wpnname(DODW_K43, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_K43, 10) // Grenades xmod_get_wpnname(DODW_STICKGRENADE, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_STICKGRENADE, 2) } case DODC_MP40: { xmod_get_wpnname(DODW_MP40, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_MP40, 5) // Grenades xmod_get_wpnname(DODW_STICKGRENADE, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_STICKGRENADE, 1) } case DODC_MP44: { xmod_get_wpnname(DODW_STG44, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_STG44, 10) // Grenades xmod_get_wpnname(DODW_STICKGRENADE, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_STICKGRENADE, 1) } case DODC_SCHARFSCHUTZE: { xmod_get_wpnname(DODW_SCOPED_KAR, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_SCOPED_KAR, 5) } case DODC_FG42: { xmod_get_wpnname(DODW_FG42, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_FG42, 10) // Grenades xmod_get_wpnname(DODW_STICKGRENADE, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_STICKGRENADE, 1) } case DODC_SCOPED_FG42: { xmod_get_wpnname(DODW_SCOPED_FG42, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_SCOPED_FG42, 10) // Grenades xmod_get_wpnname(DODW_STICKGRENADE, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_STICKGRENADE, 1) } case DODC_MG34: { xmod_get_wpnname(DODW_MG34, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_MG34, 2) } case DODC_MG42: { xmod_get_wpnname(DODW_MG42, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_MG42, 2) } case DODC_PANZERJAGER: { xmod_get_wpnname(DODW_PANZERSCHRECK, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_PANZERSCHRECK, 5) } case DODC_ENFIELD: { xmod_get_wpnname(DODW_ENFIELD, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_ENFIELD, 12) // Grenades xmod_get_wpnname(DODW_HANDGRENADE, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_HANDGRENADE, 2) } case DODC_STEN: { xmod_get_wpnname(DODW_STEN, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_STEN, 5) // Grenades xmod_get_wpnname(DODW_HANDGRENADE, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_HANDGRENADE, 1) } case DODC_MARKSMAN: { xmod_get_wpnname(DODW_SCOPED_ENFIELD, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_SCOPED_ENFIELD, 5) } case DODC_BREN: { xmod_get_wpnname(DODW_BREN, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_BREN, 10) // Grenades xmod_get_wpnname(DODW_HANDGRENADE, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_HANDGRENADE, 1) } case DODC_PIAT: { xmod_get_wpnname(DODW_PIAT, wpn, 31) format(wpn, 31, "weapon_%s", wpn) give_item(id, wpn) dod_set_user_ammo(id, DODW_PIAT, 5) } } } register_event("TextMsg", "hook_spec_mode_other", "bd", "2!#Spec_Mode4") register_event("TextMsg", "hook_spec_mode_good", "bd", "2=#Spec_Mode4") public hook_spec_mode_other(id) { g_first_person[id] = false } public hook_spec_mode_good(id) { g_first_person[id] = true } // Temporary Entities ------------------------------------------------------------------------------ // there is a list of much more temp entities at: http://djeyl.net/forum/index.php?s=80ec5b9163006b5cbd0a51dd198e563a&act=Attach&type=post&id=290870 // all messages are sent with MSG_ONE_UNRELIABLE flag to avoid overflow in case of very low esp_repeat setting and much targets public make_TE_IMPLOSION(id, Float:Vec[3]) { message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, {0,0,0}, id) //message begin write_byte(14) write_coord(floatround(Vec[0])) // start position write_coord(floatround(Vec[1])) write_coord(floatround(Vec[2])) write_byte(255) // radius write_byte(10) // count write_byte(floatround(get_cvar_float("esp_repeat") * 10)) // life in 0.1's message_end() } register_plugin(PLUGIN, VERSION, AUTHOR) register_event("WeaponList", "hook_weaponlist", "b") register_event("ResetHUD", "reset_hud", "be") } public hook_weaponlist(id) { //WeaponList //byte, byte, byte, byte, byte, byte, byte, byte, byte //1: Weapon name, 2: Ammo1 ID, 3: Ammo1 Max, 4: Ammo2 ID, 5: Ammo2 Max, 6: Bucket, 7: Bucket Position, 8: Weapon ID, 9: Flags log_amx("^nWeapon: %d^nAmmo1 ID: %d^nAmmo1 Max: %d^nAmmo2 ID: %d^nAmmo2 Max: %d^nBucket: %d^nBucket Position: %d^nWeapon ID: %d^nFlags: %d", read_data(1), read_data(2), read_data(3), read_data(4), read_data(5), read_data(6), read_data(7), read_data(8), read_data(9)) } public reset_hud(id) { client_print(id, print_chat, "Reseting") message_begin(MSG_ONE, get_user_msgid("WeaponList"), {0,0,0}, id) write_string("weapon_mortar") write_byte(10) write_byte(-1) write_byte(-1) write_byte(-1) write_byte(5) write_byte(1) write_byte(40) write_byte(0) message_end() return PLUGIN_CONTINUE } // msg_id new string[32] num_to_str(msg_id, string, 32) log_amx("ID: %s", string) /* msg_dest = One of these #define MSG_BROADCAST 0 unreliable to all #define MSG_ONE 1 reliable to one (msg_entity) #define MSG_ALL 2 reliable to all #define MSG_INIT 3 write to the init string #define MSG_PVS 4 Ents in PVS of org #define MSG_PAS 5 Ents in PAS of org #define MSG_PVS_R 6 Reliable to PVS #define MSG_PAS_R 7 Reliable to PAS #define MSG_ONE_UNRELIABLE 8 Send to one client, but don't put in reliable stream, put in unreliable datagram ( could be dropped ) #define MSG_SPEC 9 Sends to all spectator proxies */ log_amx("Dest: %d", msg_dest) // msg_entity if(msg_entity != 0) { new entClassname[128] new entNetname[128] entity_get_string(msg_entity, EV_SZ_classname, entClassname, 127) entity_get_string(msg_entity, EV_SZ_netname, entNetname, 127) log_amx("ClassName: %s NetName: %s", entClassname, entNetname) } // Messages new count = get_msg_args() for(new i = 0; i < count; i++) { switch(get_msg_argtype(i)) { case ARG_BYTE: log_amx("ARG_BYTE: %d", get_msg_arg_int(i)) case ARG_CHAR: log_amx("ARG_CHAR: %d", get_msg_arg_int(i)) case ARG_SHORT: { new num = get_msg_arg_int(i) xmod_get_wpnname(num, string, 31) log_amx("Num: %d Name: %s", num, string) } case ARG_LONG: log_amx("ARG_LONG: %d", get_msg_arg_int(i)) case ARG_ANGLE: log_amx("ARG_ANGLE: %d", get_msg_arg_float(i)) case ARG_COORD: log_amx("ARG_COORD: %d", get_msg_arg_int(i)) case ARG_STRING: { set_msg_arg_string(i, string) log_amx("ARG_STRING: %s", string) } case ARG_ENTITY: log_amx("ARG_ENTITY: %d", get_msg_arg_int(i)) } } public hook_weaponlist(msg_id, msg_dest, msg_entity) { // Throw it out if if(msg_id == 1 || msg_dest != MSG_ONE) return PLUGIN_CONTINUE // msg_entity new entClassname[128] new entNetname[128] if(msg_entity != 0) { entity_get_string(msg_entity, EV_SZ_classname, entClassname, 127) entity_get_string(msg_entity, EV_SZ_netname, entNetname, 127) } if(!equal(entClassname, "player")) return PLUGIN_CONTINUE if(get_msg_argtype(7) != ARG_BYTE) return PLUGIN_CONTINUE if(get_msg_arg_int(7) == 1) { log_amx("Sending") set_msg_arg_int(5, ARG_BYTE, 5) set_msg_arg_int(6, ARG_BYTE, 0) set_msg_arg_int(7, ARG_BYTE, DODMAX_WEAPONS) } return PLUGIN_CONTINUE }