#include #include #include #include #include #include #define PLUGIN "NST Nemesis Deimos" #define VERSION "1.0" #define AUTHOR "NST" new spr_skill[] = "g_tentacle" new const light_classname[] = "nst_deimos_skill" new sprites_exp_index, sprites_trail_index new g_wait[33], g_check[33], g_useskill[33], g_msgStatusIcon const WPN_NOT_DROP = ((1<<2)|(1<0) && (get_user_weapon(id)==CSW_KNIFE)) { g_useskill[id] = 1 // set health fm_set_user_health(id, health) // set time wait new Float:timewait = skill_time_wait g_wait[id] = 1 if (task_exists(id+TASK_WAIT)) remove_task(id+TASK_WAIT) set_task(timewait, "RemoveWait", id+TASK_WAIT) return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public task_use_skill(taskid) { new id = ID_USE_SKILL // play anim & sound play_weapon_anim(id, 8) set_weapons_timeidle(id, skill_time_wait) set_player_nextattack(id, 0.5) PlayEmitSound(id, sound_skill_start) entity_set_int(id, EV_INT_sequence, skill_anim) // attack if (task_exists(id+TASK_ATTACK)) remove_task(id+TASK_ATTACK) set_task(0.5, "launch_light", id+TASK_ATTACK) } public launch_light(taskid) { new id = ID_ATTACK if (task_exists(id+TASK_ATTACK)) remove_task(id+TASK_ATTACK) if (!is_user_alive(id)) return; // check new Float: fOrigin[3], Float:fAngle[3],Float: fVelocity[3] pev(id, pev_origin, fOrigin) pev(id, pev_view_ofs, fAngle) fm_velocity_by_aim(id, 2.0, fVelocity, fAngle) fAngle[0] *= -1.0 // create ent new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, light_classname) engfunc(EngFunc_SetModel, ent, "models/w_hegrenade.mdl") set_pev(ent, pev_mins, Float:{-1.0, -1.0, -1.0}) set_pev(ent, pev_maxs, Float:{1.0, 1.0, 1.0}) set_pev(ent, pev_origin, fOrigin) fOrigin[0] += fVelocity[0] fOrigin[1] += fVelocity[1] fOrigin[2] += fVelocity[2] set_pev(ent, pev_movetype, MOVETYPE_BOUNCE) set_pev(ent, pev_gravity, 0.01) fVelocity[0] *= 1000 fVelocity[1] *= 1000 fVelocity[2] *= 1000 set_pev(ent, pev_velocity, fVelocity) set_pev(ent, pev_owner, id) set_pev(ent, pev_angles, fAngle) set_pev(ent, pev_solid, SOLID_BBOX) //store the enitty id // invisible ent fm_set_rendering(ent, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0) // show trail message_begin( MSG_BROADCAST, SVC_TEMPENTITY ) write_byte(TE_BEAMFOLLOW) write_short(ent) //entity write_short(sprites_trail_index) //model write_byte(5) //10)//life write_byte(3) //5)//width write_byte(209) //r, hegrenade write_byte(120) //g, gas-grenade write_byte(9) //b write_byte(200) //brightness message_end() //move PHS/PVS data sending into here (SEND_ALL, SEND_PVS, SEND_PHS) //client_print(0, print_chat, "phong") return; } public fw_Touch(ent, victim) { if (!pev_valid(ent)) return FMRES_IGNORED new EntClassName[32] entity_get_string(ent, EV_SZ_classname, EntClassName, charsmax(EntClassName)) if (equal(EntClassName, light_classname)) { light_exp(ent, victim) remove_entity(ent) return FMRES_IGNORED } return FMRES_IGNORED } light_exp(ent, victim) { if (!pev_valid(ent)) return; // drop current wpn of victim new attacker = pev(ent, pev_owner) if (is_user_alive(victim) && !zp_get_user_survivor(victim) && (zp_get_user_nemesis(attacker) != zp_get_user_nemesis(victim))) { new wpn, wpnname[32] wpn = get_user_weapon(victim) if( !(WPN_NOT_DROP & (1< 0) ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id); } // Set entity's rendering type (from fakemeta_util) stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) { static Float:color[3] color[0] = float(r) color[1] = float(g) color[2] = float(b) set_pev(entity, pev_renderfx, fx) set_pev(entity, pev_rendercolor, color) set_pev(entity, pev_rendermode, render) set_pev(entity, pev_renderamt, float(amount)) } // Find entity by its owner (from fakemeta_util) stock fm_find_ent_by_owner(entity, const classname[], owner) { while ((entity = engfunc(EngFunc_FindEntityByString, entity, "classname", classname)) && pev(entity, pev_owner) != owner) { /* keep looping */ } return entity; } stock client_printcolor(const id, const input[], any:...) { new iCount = 1, iPlayers[32] static szMsg[191] vformat(szMsg, charsmax(szMsg), input, 3) replace_all(szMsg, 190, "/g", "^4") replace_all(szMsg, 190, "/y", "^1") replace_all(szMsg, 190, "/ctr", "^3") replace_all(szMsg, 190, "/w", "^0") if(id) iPlayers[0] = id else get_players(iPlayers, iCount, "ch") for (new i = 0; i < iCount; i++) { if (is_user_connected(iPlayers[i])) { message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, iPlayers[i]) write_byte(iPlayers[i]) write_string(szMsg) message_end() } } } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par } */