xiangxiang
|
分享:
▲
[补充说明]
#include <amxmodx> #include <cstrike> #include <zombieplague> #include <engine> #include <xs> #include <fakemeta> #include <hamsandwich>
#define PLUGIN_NAME "透视眼插件" #define PLUGIN_VERSION "1.0" #define PLUGIN_AUTHOR " 3"
new Float:g_fDelay[33] new const money = 10 new buy_num[33] new sprite_playerheat new cvar_maxdistance new cvar_updatedelay public plugin_init() { register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR) register_clcmd("say /buy_eye", "buy_ammo") cvar_maxdistance = register_cvar("zp_tig_distance", "1000") cvar_updatedelay = register_cvar("zp_tig_updatedelay", "0.2") register_event("HLTV", "event_round_start", "a", "1=0", "2=0") } public plugin_precache() { sprite_playerheat = precache_model("sprites/poison.spr") } public buy_eye(id) { if (!is_user_alive(id)) { client_print(id, print_chat, "[便利店] 你已经死了,不能购买!") return PLUGIN_HANDLED; } if (zp_get_user_ammo_packs(id) < money) { client_print(id, print_chat, "[便利店] 你没有足够的龙鳞!", money) return PLUGIN_HANDLED; } if (buy_num[id] >= 3) { client_print(id, print_chat, "[便利店] 每局便利店只能买3次!") return PLUGIN_HANDLED; } buy_num[id]++ new name[32] get_user_name(id, name, 31) zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - money) client_print(id, print_chat, "[便利店] %s在便利店购买了透视!", name) g_fDelay[id] = get_gametime() if((g_fDelay[id] + get_pcvar_float(cvar_updatedelay)) > get_gametime()) return PLUGIN_CONTINUE new Float:fMyOrigin[3] entity_get_vector(id, EV_VEC_origin, fMyOrigin) static Players[32], iNum get_players(Players, iNum, "a") for(new i = 0; i < iNum; ++i) if(id != Players) { if (!zp_get_user_zombie(traget)) { new Float:fTargetOrigin[3] entity_get_vector(target, EV_VEC_origin, fTargetOrigin) if((get_distance_f(fMyOrigin, fTargetOrigin) > get_pcvar_num(cvar_maxdistance)) || !is_in_viewcone(id, fTargetOrigin)) continue new Float:fMiddle[3], Float:fHitPoint[3] xs_vec_sub(fTargetOrigin, fMyOrigin, fMiddle) trace_line(-1, fMyOrigin, fTargetOrigin, fHitPoint) new Float:fWallOffset[3], Float:fDistanceToWall fDistanceToWall = vector_distance(fMyOrigin, fHitPoint) - 10.0 normalize(fMiddle, fWallOffset, fDistanceToWall) new Float:fSpriteOffset[3] xs_vec_add(fWallOffset, fMyOrigin, fSpriteOffset) new Float:fScale, Float:fDistanceToTarget = vector_distance(fMyOrigin, fTargetOrigin) if(fDistanceToWall > 100.0) fScale = 8.0 * (fDistanceToWall / fDistanceToTarget) else fScale = 2.0 te_sprite(id, fSpriteOffset, sprite_playerheat, floatround(fScale), 125) } } return 1 }
public event_round_start() { for (new id = 1; id <= 32; id++) buy_num[id] = 0 }
stock normalize(Float:fIn[3], Float:fOut[3], Float:fMul) { new Float:fLen = xs_vec_len(fIn) xs_vec_copy(fIn, fOut) fOut[0] /= fLen, fOut[1] /= fLen, fOut[2] /= fLen fOut[0] *= fMul, fOut[1] *= fMul, fOut[2] *= fMul }
stock te_sprite(id, Float:origin[3], sprite, scale, brightness) { message_begin(MSG_ONE, SVC_TEMPENTITY, _, id) write_byte(TE_SPRITE) write_coord(floatround(origin[0])) write_coord(floatround(origin[1])) write_coord(floatround(origin[2])) write_short(sprite) write_byte(scale) write_byte(brightness) message_end() }
|