#include #include #include #include #include #include #include #define PLUGIN "[ZP] LaserMine" #define VERSION "2.8.1" #define AUTHOR "SandStriker / Shidla / QuZ/DJ_WEST" #define RemoveEntity(%1) engfunc(EngFunc_RemoveEntity,%1) #define TASK_PLANT 15100 #define TASK_RESET 15500 #define TASK_RELEASE 15900 #define LASERMINE_TEAM pev_iuser1 //EV_INT_iuser1 #define LASERMINE_OWNER pev_iuser2 //EV_INT_iuser3 #define LASERMINE_STEP pev_iuser3 #define LASERMINE_HITING pev_iuser4 #define LASERMINE_COUNT pev_fuser1 #define LASERMINE_POWERUP pev_fuser2 #define LASERMINE_BEAMTHINK pev_fuser3 #define LASERMINE_BEAMENDPOINT pev_vuser1 #define MAX_MINES 10 #define MODE_LASERMINE 0 #define OFFSET_TEAM 114 #define OFFSET_MONEY 115 #define OFFSET_DEATH 444 // Цена за мину ОТОБРАЖАЕМОЕ в Меню. Реальная цена задаётся КВАРом! new const LMCost = 3 /*########### Цвета Мин и лазерных лучей ###########*/ // Цвет мины и лазера людей new const Red_Hum = 0, Green_Hum = 70, Blue_Hum = 255; // Цвет мины и лазера зомби new const Red_Zomb = 0, Green_Zomb = 255, Blue_Zomb = 30; /*####### Цвета Мин и лазерных лучей (конец) #######*/ enum tripmine_e { TRIPMINE_IDLE1 = 0, TRIPMINE_IDLE2, TRIPMINE_ARM1, TRIPMINE_ARM2, TRIPMINE_FIDGET, TRIPMINE_HOLSTER, TRIPMINE_DRAW, TRIPMINE_WORLD, TRIPMINE_GROUND, }; enum { POWERUP_THINK, BEAMBREAK_THINK, EXPLOSE_THINK }; enum { POWERUP_SOUND, ACTIVATE_SOUND, STOP_SOUND }; new const ENT_MODELS[] = "models/LaserMines/v_laser_mine.mdl", ENT_SOUND1[] = "weapons/mine_deploy.wav", ENT_SOUND2[] = "weapons/mine_charge.wav", ENT_SOUND3[] = "weapons/mine_activate.wav", ENT_SOUND4[] = "weapons/electro5.wav", ENT_SOUND5[] = "items/gunpickup2.wav", ENT_SOUND6[] = "debris/bustglass1.wav", ENT_SOUND7[] = "debris/bustglass2.wav", ENT_SPRITE1[] = "sprites/laserbeam.spr", ENT_SPRITE2[] = "sprites/zerogxplode.spr"; new const CHATTAG[] = "^3[ ^4Unity ^3]", STR_NOTACTIVE[] = "^4Lazer ^1Aktif Degil.!", STR_NOROUND[] = "^1Lazer Kurabilmek Icin ^4Enfeksiyonun Yayilmasini Beklemelisin.!", // STR_SURVROUND[] = "Survivor Roundunda Lazer Kuramazsin.!", STR_NEMROUND[] = "Nemesis Roundunda Lazer Kuramazsin.!", STR_DONTHAVEMINE[] = "Lazer'in yok!", STR_MAXDEPLOY[] = "Maximum Mayin Yerlestirildi!", STR_MANYPPL[] = "Ekibiniz cok kisi...", STR_PLANTWALL[] = "^4Lazer sadece ^3duvara ^1kurulabilir!", STR_REF[] = "Lazer su komut ile satin alabilirsiniz. say '/lm'", STR_CBT[] = "Senin Zombie! Lazer satin alamaz ve Dagitamaz!", STR_CANTBUY[] = "^4Bu serverda lazer satin alamazsin", STR_HAVEMAX[] = "Lazer alma hakkin Dolmustur.", // STR_NOMONEY[] = "Lazer alacak kadar paraniz yok! ($", // STR_NEEDED[] = "gerekli)", STR_DELAY[] = "Lazer kullanmak icin Enfeksiyonun Bulasmasini ^3Bekleyin", STR_SECONDS[] = "^4saniye.", STR_BOUGHT[] = "Basariyla lazer satin aldiniz", STR_STATE[] = "Lazer Sayisi:", STR_NOACCESS[] = "Bu Komuta Erisim Yetkiniz Yok."; new const ENT_CLASS_NAME[] = "lasermine", ENT_CLASS_NAME3[] = "func_breakable", gSnarkClassName[] = "wpn_snark", // Для совместимости с плагином "Snark" barnacle_class[] = "barnacle", // Для совместимости с плагином "Barnacle" weapon_box[] = "weaponbox"; new g_EntMine, beam, boom new g_LENABLE, g_LFMONEY, g_LAMMO, g_LDMG, g_LBEO, g_LTMAX/*, g_LCOST*/, g_LHEALTH, g_LMODE, g_LRADIUS new g_LRDMG,g_LFF,g_LCBT, g_LDELAY, g_LVISIBLE, g_LSTAMMO, g_LACCESS, g_LGLOW, g_LDMGMODE, g_LCLMODE new g_LCBRIGHT, g_LDSEC, g_LCMDMODE, g_LBUYMODE/*, g_LME*/; new g_msgDeathMsg,g_msgScoreInfo,g_msgDamage,g_msgStatusText; new g_dcount[33],g_nowtime,g_MaxPL new bool:g_settinglaser[33] new Float:plspeed[33], plsetting[33], g_havemine[33], g_deployed[33]; //new CVAR_LMCost public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); // Регистрируем ExtraItem //g_LME = zp_register_extra_item("Laser Mine", LMCost, ZP_TEAM_ANY) // Вызываем функцию Laser_TakeDamage при получении урона объектом ENT_CLASS_NAME3 (func_breakable) RegisterHam(Ham_TakeDamage, ENT_CLASS_NAME3, "Laser_TakeDamage") // Add your code here... register_clcmd("+setlaser","CreateLaserMine_Progress_b"); register_clcmd("-setlaser","StopCreateLaserMine"); register_clcmd("+dellaser","ReturnLaserMine_Progress"); register_clcmd("-dellaser","StopReturnLaserMine"); register_clcmd("say /gerial","topla"); register_clcmd("say /topla","topla"); register_clcmd("amx_kaldir", "kaldir", ADMIN_BAN ,"") register_clcmd("say","say_lasermine"); register_clcmd("buy_lasermine","BuyLasermine"); g_LENABLE = register_cvar("amx_lz","1") g_LACCESS = register_cvar("amx_lz_acs","0") //0 all, 1 admin g_LMODE = register_cvar("amx_lz_mode","0") //0 lasermine, 1 tripmine g_LAMMO = register_cvar("amx_lz_ammo","3") g_LDMG = register_cvar("amx_lz_dmg","99999") //laser hit dmg // g_LCOST = register_cvar("amx_lz_cost","2") g_LFMONEY = register_cvar("amx_lz_fragmoney","0") g_LHEALTH = register_cvar("amx_lz_health","99999999") g_LTMAX = register_cvar("amx_lz_teammax","64") g_LRADIUS = register_cvar("amx_lz_radius","320.0") g_LRDMG = register_cvar("amx_lz_rdmg","100") //radius damage g_LFF = register_cvar("amx_lz_ff","0") g_LCBT = register_cvar("amx_lz_cbt","ALL") g_LDELAY = register_cvar("amx_lz_delay","15") g_LVISIBLE = register_cvar("amx_lz_line","1") g_LGLOW = register_cvar("amx_lz_glow","1") g_LCBRIGHT = register_cvar("amx_lz_bright","255")//laser line brightness. g_LCLMODE = register_cvar("amx_lz_color","0") //0 is team color,1 is green g_LDMGMODE = register_cvar("amx_lz_ldmgmode","0") //0 - frame dmg, 1 - once dmg, 2 - 1 second dmg g_LDSEC = register_cvar("amx_lz_ldmgseconds","1") //mode 2 only, damage / seconds. default 1 (sec) g_LSTAMMO = register_cvar("amx_lz_startammo","3") g_LBUYMODE = register_cvar("amx_lz_buymode","0"); g_LCMDMODE = register_cvar("amx_lz_cmdmode","1"); //0 is +USE key, 1 is bind, 2 is each. g_LBEO = register_cvar("amx_lz_brokeenemy","1"); register_event_ex("DeathMsg", "DeathEvent", RegisterEvent_Global); register_event("CurWeapon", "standing", "be", "1=1"); register_event("ResetHUD", "delaycount", "a"); register_event("ResetHUD", "newround", "b"); register_logevent("roundnew", 2, "1=Round_Start") register_event("Damage","CutDeploy_onDamage","b"); g_msgDeathMsg = get_user_msgid("DeathMsg"); g_msgScoreInfo = get_user_msgid("ScoreInfo"); g_msgDamage = get_user_msgid("Damage"); g_msgStatusText = get_user_msgid("StatusText"); // Forward. register_forward(FM_Think, "ltm_Think"); register_forward(FM_PlayerPostThink, "ltm_PostThink"); register_forward(FM_PlayerPreThink, "ltm_PreThink"); // Регистируем файл языков register_cvar("Shidla", "[ZP] LaserMines v.2.8.1 Final", FCVAR_SERVER|FCVAR_SPONLY) } public plugin_precache() { precache_sound(ENT_SOUND1); precache_sound(ENT_SOUND2); precache_sound(ENT_SOUND3); precache_sound(ENT_SOUND4); precache_sound(ENT_SOUND5); precache_sound(ENT_SOUND6); precache_sound(ENT_SOUND7); precache_model(ENT_MODELS); beam = precache_model(ENT_SPRITE1); boom = precache_model(ENT_SPRITE2); return PLUGIN_CONTINUE; } public roundnew(){ set_cvar_num("amx_lz_delay",17); remove_task(); set_task(17.2,"yap"); } public plugin_cfg() { g_EntMine = engfunc(EngFunc_AllocString,ENT_CLASS_NAME3); arrayset(g_havemine,0,sizeof(g_havemine)); arrayset(g_deployed,0,sizeof(g_deployed)); g_MaxPL = get_maxplayers(); /*new file[64]; get_localinfo("amxx_configsdir",file,63); format(file, 63, "%s/zp_ltm_cvars_ap.cfg", file); if(file_exists(file)) server_cmd("exec %s", file), server_exec();*/ } public Laser_TakeDamage(victim, inflictor, attacker, Float:f_Damage, bit_Damage) { if(get_pcvar_num(g_LBEO)) { new i_Owner // Получаем ID игрока, который поставил мину i_Owner = pev(victim, LASERMINE_OWNER) // Если команда того, кто поставил мину и того, кто атаковал совпадают if(CsTeams:pev(victim, LASERMINE_TEAM) == cs_get_user_team(attacker)) // Если тот кто поставил мину, не совпадает с тем, кто ее атаковал, то прекращаем выполнение if(i_Owner != attacker) return HAM_SUPERCEDE return PLUGIN_CONTINUE } return PLUGIN_CONTINUE } public delaycount(id) { g_dcount[id] = floatround(get_gametime()); } bool:CheckTime(id) { g_nowtime = floatround(get_gametime()) - g_dcount[id]; if(g_nowtime >= get_pcvar_num(g_LDELAY)) return true; return false; } public zp_round_ended(){ for(new i = 1;i <= g_MaxPL;i++) { if(is_user_connected(i)){ DeleteTask(i); RemoveAllTripmines(i); remove_task(i); } } } public CreateLaserMine_Progress_b(id) { if(get_pcvar_num(g_LCMDMODE) != 0) CreateLaserMine_Progress(id); return PLUGIN_HANDLED; } public CreateLaserMine_Progress(id) { if(!CreateCheck(id)) return PLUGIN_HANDLED; g_settinglaser[id] = true; message_begin(MSG_ONE, 108, {0,0,0}, id); write_byte(1); write_byte(0); message_end(); set_task(1.2, "Spawn", (TASK_PLANT + id)); client_cmd(id, "spk buttons/button3.wav"); return PLUGIN_HANDLED; } public ReturnLaserMine_Progress(id) { if(!ReturnCheck(id)) return PLUGIN_HANDLED; g_settinglaser[id] = true; message_begin(MSG_ONE, 108, {0,0,0}, id); write_byte(1); write_byte(0); message_end(); set_task(1.2, "ReturnMine", (TASK_RELEASE + id)); client_cmd(id, "spk buttons/button3.wav"); return PLUGIN_HANDLED; } public StopCreateLaserMine(id) { DeleteTask(id); message_begin(MSG_ONE, 108, {0,0,0}, id); write_byte(0); write_byte(0); message_end(); return PLUGIN_HANDLED; } public StopReturnLaserMine(id) { DeleteTask(id); message_begin(MSG_ONE, 108, {0,0,0}, id); write_byte(0); write_byte(0); message_end(); return PLUGIN_HANDLED; } public ReturnMine(id) { id -= TASK_RELEASE; new tgt,body,Float:vo[3],Float:to[3]; get_user_aiming(id,tgt,body); if(!pev_valid(tgt)) return; pev(id,pev_origin,vo); pev(tgt,pev_origin,to); if(get_distance_f(vo,to) > 90.0) return; new EntityName[32]; pev(tgt, pev_classname, EntityName, 31); if(!equal(EntityName, ENT_CLASS_NAME)) return; if(pev(tgt,LASERMINE_OWNER) != id) return; RemoveEntity(tgt); g_havemine[id] ++; g_deployed[id] --; emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) ShowAmmo(id) return; } public Spawn(id) { id -= TASK_PLANT // motor new i_Ent = engfunc(EngFunc_CreateNamedEntity,g_EntMine); if(!i_Ent) { client_print_color(id,id,"[Laesrmine Debug] Can't Create Entity"); return PLUGIN_HANDLED_MAIN; } set_pev(i_Ent,pev_classname,ENT_CLASS_NAME); engfunc(EngFunc_SetModel,i_Ent,ENT_MODELS); set_pev(i_Ent,pev_solid,SOLID_NOT); set_pev(i_Ent,pev_movetype,MOVETYPE_FLY); set_pev(i_Ent,pev_frame,0); set_pev(i_Ent,pev_body,3); set_pev(i_Ent,pev_sequence,TRIPMINE_WORLD); set_pev(i_Ent,pev_framerate,0); set_pev(i_Ent,pev_takedamage,DAMAGE_YES); set_pev(i_Ent,pev_dmg,100.0); set_user_health(i_Ent,get_pcvar_num(g_LHEALTH)); new Float:vOrigin[3]; new Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vEntAngles[3]; pev(id, pev_origin, vOrigin); velocity_by_aim(id, 128, vTraceDirection); xs_vec_add(vTraceDirection, vOrigin, vTraceEnd); engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0); new Float:fFraction; get_tr2(0, TR_flFraction, fFraction); // -- We hit something! if(fFraction < 1.0) { // -- Save results to be used later. get_tr2(0, TR_vecEndPos, vTraceEnd); get_tr2(0, TR_vecPlaneNormal, vNormal); } xs_vec_mul_scalar(vNormal, 8.0, vNormal); xs_vec_add(vTraceEnd, vNormal, vNewOrigin); engfunc(EngFunc_SetSize, i_Ent, Float:{ -4.0, -4.0, -4.0 }, Float:{ 4.0, 4.0, 4.0 }); engfunc(EngFunc_SetOrigin, i_Ent, vNewOrigin); // -- Rotate tripmine. vector_to_angle(vNormal,vEntAngles); set_pev(i_Ent,pev_angles,vEntAngles); // -- Calculate laser end origin. new Float:vBeamEnd[3], Float:vTracedBeamEnd[3]; xs_vec_mul_scalar(vNormal, 8192.0, vNormal); xs_vec_add(vNewOrigin, vNormal, vBeamEnd); engfunc(EngFunc_TraceLine, vNewOrigin, vBeamEnd, IGNORE_MONSTERS, -1, 0); get_tr2(0, TR_vecPlaneNormal, vNormal); get_tr2(0, TR_vecEndPos, vTracedBeamEnd); // -- Save results to be used later. set_pev(i_Ent, LASERMINE_OWNER, id); set_pev(i_Ent,LASERMINE_BEAMENDPOINT,vTracedBeamEnd); set_pev(i_Ent,LASERMINE_TEAM,int:cs_get_user_team(id)); new Float:fCurrTime = get_gametime(); set_pev(i_Ent,LASERMINE_POWERUP, fCurrTime + 2.5); set_pev(i_Ent,LASERMINE_STEP,POWERUP_THINK); set_pev(i_Ent,pev_nextthink, fCurrTime + 0.2); PlaySound(i_Ent,POWERUP_SOUND); g_deployed[id]++; g_havemine[id]--; DeleteTask(id); ShowAmmo(id); return 1; } stock TeamDeployedCount(id) { static i; static CsTeams:t;t = cs_get_user_team(id); static cnt;cnt=0; for(i = 1;i <= g_MaxPL;i++) { if(is_user_connected(i)) if(t == cs_get_user_team(i)) cnt += g_deployed[i]; } return cnt; } bool:CheckCanTeam(id) { new arg[5],CsTeam:num; get_pcvar_string(g_LCBT,arg,3); if(equali(arg,"Z")) { num = CsTeam:CS_TEAM_T; } else if(equali(arg,"H")) { num = CsTeam:CS_TEAM_CT; } else if(equali(arg,"ALL") || equali(arg,"HZ") || equali(arg,"ZH")) { num = CsTeam:CS_TEAM_UNASSIGNED; } else { num = CsTeam:CS_TEAM_UNASSIGNED; } if(num != CsTeam:CS_TEAM_UNASSIGNED && num != CsTeam:cs_get_user_team(id)) return false; return true; } bool:CanCheck(id,mode) { if( !get_pcvar_num( g_LENABLE ) ) { client_print_color(id, id, "^4%s ^3%s",CHATTAG,STR_NOTACTIVE); client_cmd(id, "spk buttons/button2.wav"); return false; } if( get_pcvar_num(g_LACCESS) != 0) if(!(get_user_flags(id) & ADMIN_IMMUNITY)) { client_print_color(id, id, "^4%s ^3%s",CHATTAG,STR_NOACCESS); return false; } if(!pev_user_alive(id)) return false; if (!CheckCanTeam(id)) { client_print_color(id, id, "^4%s ^3%s",CHATTAG,STR_CBT); return false; } if( mode == 0) { if(g_havemine[id] <= 0) { client_print_color(id, id, "^4%s ^3%s",CHATTAG,STR_DONTHAVEMINE); client_cmd(id, "spk buttons/button2.wav"); return false; } } if (mode == 1) { if (get_pcvar_num(g_LBUYMODE) == 0) { client_print_color(id, id, "^4%s ^3%s",CHATTAG,STR_CANTBUY); return false; } if (g_havemine[id] >= get_pcvar_num(g_LAMMO)) { client_print_color(id, id, "^4%s ^3%s",CHATTAG,STR_HAVEMAX); return false; } /*if (cs_get_user_money(id) < get_pcvar_num(g_LCOST)) { client_print(id, print_chat, "%s %s%d %s",CHATTAG, STR_NOMONEY,get_pcvar_num(g_LCOST),STR_NEEDED); return false; } */ } if(!CheckTime(id)) { client_print_color(id, id, "^4%s ^3%s ^1%d ^3%s",CHATTAG,STR_DELAY,get_pcvar_num(g_LDELAY)-g_nowtime,STR_SECONDS); client_cmd(id, "spk buttons/button2.wav"); return false; } return true; } bool:ReturnCheck(id) { if(!CanCheck(id,-1)) return false; new tgt,body,Float:vo[3],Float:to[3]; get_user_aiming(id,tgt,body); if(!pev_valid(tgt)) return false; pev(id,pev_origin,vo); pev(tgt,pev_origin,to); new EntityName[32]; pev(tgt, pev_classname, EntityName, 31); if(!equal(EntityName, ENT_CLASS_NAME)) return false; if(pev(tgt,LASERMINE_OWNER) != id){ client_print_color(id,id,"^4[Unity]^1 Bu Lazer^3 %n^1 Oyuncusuna^4 Ait^1.",pev(tgt,LASERMINE_OWNER)) } if(get_distance_f(vo,to) > 90.0) return false; if(pev(tgt,LASERMINE_OWNER) != id){ if(pev(tgt,LASERMINE_TEAM) == get_user_team(id) || get_user_flags(id) & ADMIN_BAN_TEMP){ set_pev(tgt, pev_solid, SOLID_NOT) set_rendering(tgt,kRenderFxNone,255,255,255,kRenderTransAlpha,100); remove_task(tgt+94); set_task(2.2,"kapa",tgt+94); } return false; } if(g_havemine[id] + 1 > get_pcvar_num(g_LAMMO)) return false; return true; } public kapa(taskid) { new tgt;tgt = taskid - 94; if(!pev_valid(tgt)) return FMRES_IGNORED; static classname[32]; pev(tgt, pev_classname, classname, 31) if(!equal(classname, ENT_CLASS_NAME)) return FMRES_IGNORED; switch(pev(tgt,LASERMINE_TEAM)) { // цвет лазера Зомби case 1: set_rendering(tgt,kRenderFxGlowShell,Red_Zomb,Green_Zomb,Blue_Zomb,kRenderNormal,5); // цвет лазера Человека case 2:set_rendering(tgt,kRenderFxGlowShell,Red_Hum,Green_Hum,Blue_Hum,kRenderNormal,5); } set_pev(tgt, pev_solid, SOLID_BBOX); return FMRES_IGNORED; } bool:CreateCheck(id) { if (!CanCheck(id,0)) return false; if(!zp_has_round_started()) { client_print_color(id, id, "^4%s ^3%s", CHATTAG,STR_NOROUND) return false; } if(zp_is_nemesis_round()) { client_print_color(id, id, "^4%s ^3%s", CHATTAG,STR_NEMROUND) return false; } /*if(zp_is_survivor_round()) { client_print_color(id, id, "^4%s ^3%s",CHATTAG,STR_SURVROUND) return false; }*/ if (g_deployed[id] >= get_pcvar_num(g_LAMMO)) { client_print_color(id, id, "^4%s ^3%s",CHATTAG,STR_MAXDEPLOY); return false; } //client_print(id,print_chat,"[Lasermine] your team deployed %d",TeamDeployedCount(id)) if(TeamDeployedCount(id) >= get_pcvar_num(g_LTMAX)) { client_print_color(id, id, "^4%s ^3%s",CHATTAG,STR_MANYPPL); return false; } new Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vOrigin[3]; pev(id, pev_origin, vOrigin); velocity_by_aim(id, 128, vTraceDirection); xs_vec_add(vTraceDirection, vOrigin, vTraceEnd); engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0); new Float:fFraction,Float:vTraceNormal[3]; get_tr2(0, TR_flFraction, fFraction); // -- We hit something! if(fFraction < 1.0) { // -- Save results to be used later. get_tr2(0, TR_vecEndPos, vTraceEnd); get_tr2(0, TR_vecPlaneNormal, vTraceNormal); return true; } client_print_color(id, id, "^4%s ^3%s",CHATTAG,STR_PLANTWALL) client_cmd(id, "spk buttons/button2.wav"); DeleteTask(id); // -- Did not touched something. (not solid) return false; } public ltm_Think(i_Ent) { if(!pev_valid(i_Ent)) return FMRES_IGNORED; new EntityName[32]; pev(i_Ent, pev_classname, EntityName, 31); if(!get_pcvar_num(g_LENABLE)) return FMRES_IGNORED; // -- Entity is not a tripmine, ignoring the next... if(!equal(EntityName, ENT_CLASS_NAME)) return FMRES_IGNORED; static Float:fCurrTime; fCurrTime = get_gametime(); switch(pev(i_Ent, LASERMINE_STEP)) { case POWERUP_THINK : { new Float:fPowerupTime; pev(i_Ent, LASERMINE_POWERUP, fPowerupTime); if(fCurrTime > fPowerupTime) { set_pev(i_Ent, pev_solid, SOLID_BBOX); set_pev(i_Ent, LASERMINE_STEP, BEAMBREAK_THINK); PlaySound(i_Ent, ACTIVATE_SOUND); } if(get_pcvar_num(g_LGLOW)!=0) { if(get_pcvar_num(g_LCLMODE)==0) { switch (pev(i_Ent,LASERMINE_TEAM)) { // цвет лазера Зомби case CS_TEAM_T: set_rendering(i_Ent,kRenderFxGlowShell,Red_Zomb,Green_Zomb,Blue_Zomb,kRenderNormal,5); // цвет лазера Человека case CS_TEAM_CT:set_rendering(i_Ent,kRenderFxGlowShell,Red_Hum,Green_Hum,Blue_Hum,kRenderNormal,5); } }else { // цвет лазера, если стоит "одинаковый для всех" цвет set_rendering(i_Ent,kRenderFxGlowShell,random_num(50 , 200),random_num(50 , 200),random_num(50 , 200),kRenderNormal,5); } } set_pev(i_Ent, pev_nextthink, fCurrTime + 0.1); } case BEAMBREAK_THINK : { static Float:vEnd[3],Float:vOrigin[3]; pev(i_Ent, pev_origin, vOrigin); pev(i_Ent, LASERMINE_BEAMENDPOINT, vEnd); static iHit, Float:fFraction; engfunc(EngFunc_TraceLine, vOrigin, vEnd, DONT_IGNORE_MONSTERS, i_Ent, 0); get_tr2(0, TR_flFraction, fFraction); iHit = get_tr2(0, TR_pHit); // -- Something has passed the laser. if(fFraction < 1.0) { // -- Ignoring others tripmines entity. if(pev_valid(iHit)) { pev(iHit, pev_classname, EntityName, 31); // Игнорим всякую хрень if(!equal(EntityName, ENT_CLASS_NAME) && !equal(EntityName, gSnarkClassName) && !equal(EntityName, barnacle_class) && !equal(EntityName, weapon_box)) { set_pev(i_Ent, pev_enemy, iHit); if(get_pcvar_num(g_LMODE) == MODE_LASERMINE) CreateLaserDamage(i_Ent,iHit); else if(get_pcvar_num(g_LFF) || CsTeams:pev(i_Ent,LASERMINE_TEAM) != cs_get_user_team(iHit)) set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK); if (!pev_valid(i_Ent)) // если не верный объект - ничего не делаем. Спасибо DJ_WEST return FMRES_IGNORED; set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3)); } } } if(get_pcvar_num(g_LDMGMODE)!=0) if(pev(i_Ent,LASERMINE_HITING) != iHit) set_pev(i_Ent,LASERMINE_HITING,iHit); // -- Tripmine is still there. if(pev_valid(i_Ent)) { static Float:fHealth; pev(i_Ent, pev_health, fHealth); if(fHealth <= 0.0 || (pev(i_Ent,pev_flags) & FL_KILLME)) { set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK); set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3)); } static Float:fBeamthink; pev(i_Ent, LASERMINE_BEAMTHINK, fBeamthink); if(fBeamthink < fCurrTime && get_pcvar_num(g_LVISIBLE)) { DrawLaser(i_Ent, vOrigin, vEnd); set_pev(i_Ent, LASERMINE_BEAMTHINK, fCurrTime + 0.1); } set_pev(i_Ent, pev_nextthink, fCurrTime + 0.01); } } case EXPLOSE_THINK : { // -- Stopping entity to think set_pev(i_Ent, pev_nextthink, 0.0); PlaySound(i_Ent, STOP_SOUND); g_deployed[pev(i_Ent,LASERMINE_OWNER)]--; CreateExplosion(i_Ent); CreateDamage(i_Ent,get_pcvar_float(g_LRDMG),get_pcvar_float(g_LRADIUS)) RemoveEntity (i_Ent); } } return FMRES_IGNORED; } PlaySound(i_Ent, i_SoundType) { switch (i_SoundType) { case POWERUP_SOUND : { emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND1, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, 0, PITCH_NORM); } case ACTIVATE_SOUND : { emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, 1, 75); } case STOP_SOUND : { emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, SND_STOP, PITCH_NORM); emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, SND_STOP, 75); } } } DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3]) { new tcolor[3]; new teamid = pev(i_Ent, LASERMINE_TEAM); if(get_pcvar_num(g_LCLMODE) == 0) { switch(teamid){ case 1:{ // Цвет луча для Зомби tcolor[0] = Red_Zomb; tcolor[1] = Green_Zomb; tcolor[2] = Blue_Zomb; } case 2:{ // Цвет луча для Человека tcolor[0] = Red_Hum; tcolor[1] = Green_Hum; tcolor[2] = Blue_Hum; } } }else { // Цвет луча для всез при режиме 1-н луч для всех tcolor[0] = random_num(50 , 200); tcolor[1] = random_num(50 , 200); tcolor[2] = random_num(50 , 200); } message_begin(MSG_BROADCAST,SVC_TEMPENTITY); write_byte(TE_BEAMPOINTS); engfunc(EngFunc_WriteCoord,v_Origin[0]); engfunc(EngFunc_WriteCoord,v_Origin[1]); engfunc(EngFunc_WriteCoord,v_Origin[2]); engfunc(EngFunc_WriteCoord,v_EndOrigin[0]); //Random engfunc(EngFunc_WriteCoord,v_EndOrigin[1]); //Random engfunc(EngFunc_WriteCoord,v_EndOrigin[2]); //Random write_short(beam); write_byte(0); write_byte(0); write_byte(1); //Life write_byte(5); //Width write_byte(0); //wave write_byte(tcolor[0]); // r write_byte(tcolor[1]); // g write_byte(tcolor[2]); // b write_byte(get_pcvar_num(g_LCBRIGHT)); write_byte(255); message_end(); } CreateDamage(iCurrent,Float:DmgMAX,Float:Radius) { // Get given parameters new Float:vecSrc[3]; pev(iCurrent, pev_origin, vecSrc); new AtkID =pev(iCurrent,LASERMINE_OWNER); new TeamID=pev(iCurrent,LASERMINE_TEAM); new ent = -1; new Float:tmpdmg = DmgMAX; new Float:kickback = 0.0; // Needed for doing some nice calculations :P new Float:Tabsmin[3], Float:Tabsmax[3]; new Float:vecSpot[3]; new Float:Aabsmin[3], Float:Aabsmax[3]; new Float:vecSee[3]; new trRes; new Float:flFraction; new Float:vecEndPos[3]; new Float:distance; new Float:origin[3], Float:vecPush[3]; new Float:invlen; new Float:velocity[3]; new iHitHP,iHitTeam; // Calculate falloff new Float:falloff; if(Radius > 0.0) { falloff = DmgMAX / Radius; } else { falloff = 1.0; } // Find monsters and players inside a specifiec radius while((ent = engfunc(EngFunc_FindEntityInSphere, ent, vecSrc, Radius)) != 0) { if(!pev_valid(ent)) continue; if(!(pev(ent, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER))) { // Entity is not a player or monster, ignore it continue; } if(!pev_user_alive(ent)) continue; // Reset data kickback = 1.0; tmpdmg = DmgMAX; // The following calculations are provided by Orangutanz, THANKS! // We use absmin and absmax for the most accurate information pev(ent, pev_absmin, Tabsmin); pev(ent, pev_absmax, Tabsmax); xs_vec_add(Tabsmin,Tabsmax,Tabsmin); xs_vec_mul_scalar(Tabsmin,0.5,vecSpot); pev(iCurrent, pev_absmin, Aabsmin); pev(iCurrent, pev_absmax, Aabsmax); xs_vec_add(Aabsmin,Aabsmax,Aabsmin); xs_vec_mul_scalar(Aabsmin,0.5,vecSee); engfunc(EngFunc_TraceLine, vecSee, vecSpot, 0, iCurrent, trRes); get_tr2(trRes, TR_flFraction, flFraction); // Explosion can 'see' this entity, so hurt them! (or impact through objects has been enabled xD) if(flFraction >= 0.9 || get_tr2(trRes, TR_pHit) == ent) { // Work out the distance between impact and entity get_tr2(trRes, TR_vecEndPos, vecEndPos); distance = get_distance_f(vecSrc, vecEndPos) * falloff; tmpdmg -= distance; if(tmpdmg < 0.0) tmpdmg = 0.0; // Kickback Effect if(kickback != 0.0) { xs_vec_sub(vecSpot,vecSee,origin); invlen = 1.0/get_distance_f(vecSpot, vecSee); xs_vec_mul_scalar(origin,invlen,vecPush); pev(ent, pev_velocity, velocity) xs_vec_mul_scalar(vecPush,tmpdmg,vecPush); xs_vec_mul_scalar(vecPush,kickback,vecPush); xs_vec_add(velocity,vecPush,velocity); if(tmpdmg < 60.0) { xs_vec_mul_scalar(velocity,12.0,velocity); } else { xs_vec_mul_scalar(velocity,4.0,velocity); } if(velocity[0] != 0.0 || velocity[1] != 0.0 || velocity[2] != 0.0) { // There's some movement todo :) set_pev(ent, pev_velocity, velocity) } } iHitHP = pev_user_health(ent) - floatround(tmpdmg) iHitTeam = int:cs_get_user_team(ent) if(iHitHP <= 0) { if(iHitTeam != TeamID) { zp_set_user_ammo_packs(AtkID,zp_get_user_ammo_packs(AtkID) + get_pcvar_num(g_LFMONEY)) set_score(AtkID,ent,1,iHitHP) }else { if(get_pcvar_num(g_LFF)) { zp_set_user_ammo_packs(AtkID,zp_get_user_ammo_packs(AtkID) - get_pcvar_num(g_LFMONEY)) set_score(AtkID,ent,-1,iHitHP) } } }else { if(iHitTeam != TeamID || get_pcvar_num(g_LFF)) { //set_pev(Player,pev_health,iHitHP) set_user_health(ent, iHitHP) engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},ent); write_byte(floatround(tmpdmg)) write_byte(floatround(tmpdmg)) write_long(DMG_BULLET) engfunc(EngFunc_WriteCoord,vecSrc[0]) engfunc(EngFunc_WriteCoord,vecSrc[1]) engfunc(EngFunc_WriteCoord,vecSrc[2]) message_end() } } } } return } bool:pev_user_alive(ent) { new deadflag = pev(ent,pev_deadflag); if(deadflag != DEAD_NO) return false; return true; } CreateExplosion(iCurrent) { new Float:vOrigin[3]; pev(iCurrent,pev_origin,vOrigin); message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(99); //99 = KillBeam write_short(iCurrent); message_end(); engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0); write_byte(TE_EXPLOSION); engfunc(EngFunc_WriteCoord,vOrigin[0]); engfunc(EngFunc_WriteCoord,vOrigin[1]); engfunc(EngFunc_WriteCoord,vOrigin[2]); write_short(boom); write_byte(30); write_byte(15); write_byte(0); message_end(); } CreateLaserDamage(iCurrent,isHit) { if(isHit < 0) return PLUGIN_CONTINUE switch(get_pcvar_num(g_LDMGMODE)) { case 1: { if(pev(iCurrent,LASERMINE_HITING) == isHit) return PLUGIN_CONTINUE } case 2: { if(pev(iCurrent,LASERMINE_HITING) == isHit) { static Float:cnt static now,htime;now = floatround(get_gametime()) pev(iCurrent,LASERMINE_COUNT,cnt) htime = floatround(cnt) if(now - htime < get_pcvar_num(g_LDSEC)) { return PLUGIN_CONTINUE; }else{ set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) } }else { set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) } } } new Float:vOrigin[3],Float:vEnd[3] pev(iCurrent,pev_origin,vOrigin) pev(iCurrent,pev_vuser1,vEnd) new teamid = pev(iCurrent, LASERMINE_TEAM) new szClassName[32] new Alive,God new iHitTeam,iHitHP,id new hitscore szClassName[0] = '^0' pev(isHit,pev_classname,szClassName,32) if((pev(isHit, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER))) { Alive = pev_user_alive(isHit) God = get_user_godmode(isHit) if(!Alive || God) return PLUGIN_CONTINUE iHitTeam = int:cs_get_user_team(isHit) iHitHP = pev_user_health(isHit) - get_pcvar_num(g_LDMG) id = pev(iCurrent,LASERMINE_OWNER)//, szNetName[32] if(iHitHP <= 0) { if(iHitTeam != teamid) { emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) hitscore = 1 zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id) + get_pcvar_num(g_LFMONEY)) set_score(id,isHit,hitscore,iHitHP) }else { if(get_pcvar_num(g_LFF)) { emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) hitscore = -1 zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id) - get_pcvar_num(g_LFMONEY)) set_score(id,isHit,hitscore,iHitHP) } } }else if(iHitTeam != teamid || get_pcvar_num(g_LFF)) { emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) set_user_health(isHit,iHitHP) set_pev(iCurrent,LASERMINE_HITING,isHit); engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},isHit); write_byte(get_pcvar_num(g_LDMG)) write_byte(get_pcvar_num(g_LDMG)) write_long(DMG_BULLET) engfunc(EngFunc_WriteCoord,vOrigin[0]) engfunc(EngFunc_WriteCoord,vOrigin[1]) engfunc(EngFunc_WriteCoord,vOrigin[2]) message_end() } }else if(equal(szClassName, ENT_CLASS_NAME3)) { new hl; hl = pev_user_health(isHit); set_user_health(isHit,hl-get_pcvar_num(g_LDMG)); } return PLUGIN_CONTINUE } stock pev_user_health(id) { new Float:health pev(id,pev_health,health) return floatround(health) } stock set_user_health(id,health) { health > 0 ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id); } stock get_user_godmode(index) { new Float:val pev(index, pev_takedamage, val) return (val == DAMAGE_NO) } stock set_user_frags(index, frags) { set_pev(index, pev_frags, float(frags)) return 1 } stock pev_user_frags(index) { new Float:frags; pev(index,pev_frags,frags); return floatround(frags); } set_score(id,target,hitscore,HP){ new idfrags = pev_user_frags(id) + hitscore// get_user_frags(id) + hitscore set_user_frags(id,idfrags) new tarfrags = pev_user_frags(target) + 1 //get_user_frags(target) + 1 set_user_frags(target,tarfrags) new idteam = int:cs_get_user_team(id) new iddeaths = cs_get_user_deaths(id) message_begin(MSG_ALL, g_msgDeathMsg, {0, 0, 0} ,0) write_byte(id) write_byte(target) write_byte(0) write_string(ENT_CLASS_NAME) message_end() message_begin(MSG_ALL, g_msgScoreInfo) write_byte(id) write_short(idfrags) write_short(iddeaths) write_short(0) write_short(idteam) message_end() set_msg_block(g_msgDeathMsg, BLOCK_ONCE) set_user_health(target, HP) } public BuyLasermine(id) { if( !CanCheck(id,1) ) return PLUGIN_CONTINUE //cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(g_LCOST)) g_havemine[id]++; client_print_color(id, id, "^4%s ^3%s",CHATTAG,STR_BOUGHT) emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) ShowAmmo(id) return PLUGIN_HANDLED } /*public zp_extra_item_selected(id, itemid) { if(itemid == g_LME) { zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + LMCost) BuyLasermine(id) } return PLUGIN_CONTINUE }*/ ShowAmmo(id) { new ammo[51] formatex(ammo, 50, "%s %i/%i",STR_STATE, g_havemine[id],get_pcvar_num(g_LAMMO)) message_begin(MSG_ONE_UNRELIABLE, g_msgStatusText, {0,0,0}, id) write_byte(0) write_string(ammo) message_end() } public showInfo(id) { client_print_color(id,id, "%s", STR_REF) } public say_lasermine(id){ new said[32] read_argv(1,said,31); if(!get_pcvar_num(g_LENABLE)) { return PLUGIN_CONTINUE } if(equali(said,"/buy lasermine")||equali(said,"/lm")||equali(said,"buy_lasermine")){ BuyLasermine(id) }else if(equali(said, "lasermine") || equali(said, "/lasermine")){ const SIZE = 1024 new msg[SIZE+1],len = 0; len += formatex(msg[len], SIZE - len, "") len += formatex(msg[len], SIZE - len, "

LaserMine



") len += formatex(msg[len], SIZE - len, "

You can be setting the mine on the wall.


") len += formatex(msg[len], SIZE - len, "

That laser will give what touched it damage.



") len += formatex(msg[len], SIZE - len, "

LaserMine Commands



") len += formatex(msg[len], SIZE - len, "

Say /buy lasermine or Say /lm //buying lasermine
") len += formatex(msg[len], SIZE - len, "buy_lasermine //bind ^"F2^" buy_lasermine : using F2 buying lasermine
") len += formatex(msg[len], SIZE - len, "+setlaser //bind mouse3 +setlaser : using mouse3 set lasermine on wall
") len += formatex(msg[len], SIZE - len, "") show_motd(id, msg, "Lasermine Entity help") return PLUGIN_CONTINUE } else if(containi(said, "laser") != -1) { showInfo(id) return PLUGIN_CONTINUE } return PLUGIN_CONTINUE } public standing(id) { if(!g_settinglaser[id]) return PLUGIN_CONTINUE set_pev(id, pev_maxspeed, 1.0) return PLUGIN_CONTINUE } public ltm_PostThink(id) { if(!g_settinglaser[id] && plsetting[id]){ resetspeed(id) } else if(g_settinglaser[id] && !plsetting[id]) { pev(id, pev_maxspeed,plspeed[id]) set_pev(id, pev_maxspeed, 1.0) } plsetting[id] = g_settinglaser[id] return FMRES_IGNORED } public ltm_PreThink(id) { if(!pev_user_alive(id) || g_settinglaser[id] == true || is_user_bot(id) || get_pcvar_num(g_LCMDMODE) == 1) return FMRES_IGNORED; if(pev(id, pev_button) & IN_USE && !(pev(id, pev_oldbuttons) & IN_USE)) CreateLaserMine_Progress(id) return FMRES_IGNORED; } resetspeed(id) { set_pev(id, pev_maxspeed, plspeed[id]) } public client_putinserver(id){ g_deployed[id] = 0; g_havemine[id] = 0; DeleteTask(id); return PLUGIN_CONTINUE } public client_disconnected(id){ if(!get_pcvar_num(g_LENABLE)) return PLUGIN_CONTINUE DeleteTask(id); RemoveAllTripmines(id); remove_task(id); return PLUGIN_CONTINUE } public kaldir(id,level,cid){ if(~get_user_flags(id) & ADMIN_BAN){ client_print_color(id,id," -^3 Yetkisiz Erisim^4.!"); return PLUGIN_HANDLED; } new argument[32]; //, packs[4]; read_argv(1, argument, 31) //read_argv(2, packs, 3) new player = cmd_target(id, argument, CMDTARGET_ALLOW_SELF) if(!is_user_connected(player)) return PLUGIN_HANDLED; if(!player || player == id) { client_print_color(id,id,"[INFO] ^3Eksik veya Yanlis Komut..!"),console_print(id,"Eksik veya Yanlis Komut..!");return PLUGIN_HANDLED; } if(g_havemine[player] < get_pcvar_num(g_LAMMO)){ DeleteTask(player); RemoveAllTripmines(player); SetStartAmmo(player); client_print_color(player,player,"^4[Unity]^1 Kurulu Lazerlerin^3 Geri Verildi.!") client_print_color(0,print_team_grey,"^4[Unity]^3 - [%n]^1 ->^4 [^3%n^4]^1 Oyuncusunun Kurdugu Lazerleri Kaldirdi^3.!",id, player); ShowAmmo(player) }else{ client_print_color(id,id,"^4[Unity]^1 Kurulu Lazerleri^3 Yok.!") } return PLUGIN_HANDLED; } public newround(id){ if(!get_pcvar_num(g_LENABLE)) return PLUGIN_CONTINUE pev(id, pev_maxspeed,plspeed[id]) DeleteTask(id); RemoveAllTripmines(id); //client_printc(id, "[ZP][LM][DeBug] All Mines removied!"); delaycount(id); SetStartAmmo(id); return PLUGIN_CONTINUE } public yap() remove_task(),set_cvar_num("amx_lz_delay",0); public DeathEvent(){ new vID = read_data(2); // victim if (is_user_connected(vID)){ DeleteTask(vID); RemoveAllTripmines(vID); remove_task(vID); } } public topla(id){ if(g_havemine[id] < get_pcvar_num(g_LAMMO)){ DeleteTask(id); RemoveAllTripmines(id); SetStartAmmo(id); client_print_color(id,id,"^4[Unity]^1 Kurulu Lazerlerin^3 Geri Alindi.!") ShowAmmo(id) }else{ client_print_color(id,id,"^4[Unity]^1 Kurulu Lazerlerin^3 Yok.!") } } public zp_user_infected_post(id) { if(!get_pcvar_num(g_LENABLE)) return PLUGIN_CONTINUE DeleteTask(id); RemoveAllTripmines(id); SetStartAmmo(id); } public zp_user_humanized_post(id){ if(!get_pcvar_num(g_LENABLE)) return PLUGIN_CONTINUE DeleteTask(id); RemoveAllTripmines(id); SetStartAmmo(id); } public RemoveAllTripmines(i_Owner) { new iEnt = g_MaxPL + 1; new clsname[32]; while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", ENT_CLASS_NAME))) { if(i_Owner) { if(pev(iEnt, LASERMINE_OWNER) != i_Owner) continue; clsname[0] = '^0' pev(iEnt, pev_classname, clsname, sizeof(clsname)-1); if(equali(clsname, ENT_CLASS_NAME)) { PlaySound(iEnt, STOP_SOUND); RemoveEntity(iEnt); } } else set_pev(iEnt, pev_flags, FL_KILLME); } g_deployed[i_Owner]=0; } SetStartAmmo(id) { new stammo = get_pcvar_num(g_LSTAMMO); if(stammo <= 0) return PLUGIN_CONTINUE; g_havemine[id] = (g_havemine[id] <= stammo) ? stammo : g_havemine[id]; return PLUGIN_CONTINUE; } public CutDeploy_onDamage(id) { if(get_user_health(id) < 1) DeleteTask(id); } DeleteTask(id) { if(task_exists((TASK_PLANT + id))) { remove_task((TASK_PLANT + id)) } if(task_exists((TASK_RELEASE + id))) { remove_task((TASK_RELEASE + id)) } g_settinglaser[id] = false return PLUGIN_CONTINUE; } stock set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) { static Float:RenderColor[3]; RenderColor[0] = float(r); RenderColor[1] = float(g); RenderColor[2] = float(b); set_pev(entity, pev_renderfx, fx); set_pev(entity, pev_rendercolor, RenderColor); set_pev(entity, pev_rendermode, render); set_pev(entity, pev_renderamt, float(amount)); return 1 } /*// Gets offset data get_offset_value(id, type) { new key = -1; switch(type) { case OFFSET_TEAM: key = OFFSET_TEAM; case OFFSET_MONEY: key = OFFSET_MONEY; case OFFSET_DEATH: key = OFFSET_DEATH; } if(key != -1) { key += 25; return get_pdata_int(id, key); } return -1; } */