//------------------------------------------------------------------------------------------ // I-Spy Weapon Cam version 1.0 // By Don // // Description: // Allows you to spy on any other player // // Features: // Admin configurable to take health and/or cash at a settable interval // Admin can set if hit only taken when spying enemy // Admin can set if other player will be notified when spied on // Admin can set maximum number of spys per team // // Requirements: ES 1.1.1 // ES Tools .41x // // Install instructions: // Put this file in cstrike/addons/eventscripts/ispy as es_ispy.txt // // In team chat or console // Type "!spy username" where username is the name of someone else in the game. // Type "!spyoff" to turn it off and set your view back to yourself. // // In console only: // Type "!spyt" to spy on the closest Terrorist // Type "!spyct" to spy on the closest Counter-Terrorist // Type "!spye" to spy on the closest Enemy // // Thanks to Mattie for EventScripts and allowing me to beta test // Thanks to GODJonez for testing and suggestions //------------------------------------------------------------------------------------------ block load { // Set this to the length of delay you want between the check if weapon has changed. // This seems to work well at .1 but if it lags your server you might want to increae it to .2 es_xsetinfo spydelay .1 // Set this to the interval in seconds you want between taking cash and/or health. es_xsetinfo intervaltime 1 // Set this to the amout of cash you want taken at each interval. If it's 0 none will be taken. es_xsetinfo cashtake 0 // Set this to the amout of health you want taken at each interval. If it's 0 none will be taken. es_xsetinfo healthtake 0 // Set this to 1 if you want to only take health/cash if spying on the enemy. es_xsetinfo takehitenemyonly 1 // Set this to 1 if you want it to reset everyone at round end. es_xsetinfo resetatroundend 1 // Set this to 1 if you don't want the person spyed on to be notified es_xsetinfo stelathspymode 1 // Set this to the maximum number of spys per team. es_xsetinfo spylimit 32 es_xsetinfo ax 0 es_xsetinfo ay 0 es_xsetinfo az 0 es_xsetinfo fa 0 es_xsetinfo fb 0 es_xsetinfo fc 0 es_xsetinfo text1 0 es_xsetinfo text2 0 es_xsetinfo spyeeid 0 es_xsetinfo myindex 0 es_xsetinfo spying 0 es_xsetinfo spyalive 0 es_xsetinfo spyenb 0 es_xsetinfo spyerteam 0 es_xsetinfo spyeeteam 0 es_xsetinfo spyteam 0 es_xsetinfo newtime 0 es_xsetinfo oldtime 0 es_xsetinfo takehit 0 es_xsetinfo spycash 0 es_xsetinfo spyername 0 es_xsetinfo spyeename 0 es_xsetinfo spyhealth 0 es_xsetinfo viewid 0 es_xsetinfo viewalive 0 es_xsetinfo viewindex 0 es_xsetinfo activeweapon 0 es_xsetinfo ctspys 0 es_xsetinfo tspys 0 es_keygroupcreate ispy alias "ispyloop" "es_doblock ispy/spyloop;if (server_var(spyenb) == 1) then es_delayed server_var(spydelay) ispyloop" } block unload { es_keygroupdelete ispy } event player_spawn { es_tell event_var(userid) #multi #lightgreen[#green[#defaultI-Spy#green]#lightgreen]#default is loaded. #lightgreenType #green"!spy username"#lightgreen in team chat to spy. } event es_player_chat } es_token text1 event_var(text) 1 if (server_var(text1) == !spy) do { es_setinfo text1 event_var(text) es_string text1 replace "!spy " "" es_token text2 server_var(text1) 1 es_getuserid spyeeid server_var(text2) if (event_var(userid) = server_var(spyeeid)) do { es_tell event_var(userid) #multi #lightgreen You cannot spy on #defaultyourself! } else do { es_doblock ispy/dospy } } if ("!spyof" in event_var(text)) do { es_doblock checkspystatus if (server_var(spying) == 1) do { es_getplayerteam spyteam event_var(userid) if (server_var(spyteam) == 2) do { es_xmath tspys - 1 if (server_var(tspys) < 0) then es_xsetinfo tspys 0 } else do { es_xmath ctspys - 1 if (server_var(ctspys) < 0) then es_xsetinfo ctspys 0 } es est_getindex myindex event_var(userid) es_setview event_var(userid) server_var(myindex) es_keydelete ispy event_var(userid) } } } event es_client_command { if (event_var(command) == !spy) do { es_getuserid spyeeid event_var(commandstring) if (event_var(userid) = server_var(spyeeid)) do { es_tell event_var(userid) #multi #lightgreen You cannot spy on #defaultyourself! } else do { es_doblock ispy/dospy } } if (event_var(command) == !spyoff) do { es_doblock ispy/checkspystatus if (server_var(spying) == 1) do { es_getplayerteam spyteam event_var(userid) if (server_var(spyteam) == 2) do { es_xmath tspys - 1 if (server_var(tspys) < 0) then es_xsetinfo tspys 0 } else do { es_xmath ctspys - 1 if (server_var(ctspys) < 0) then es_xsetinfo ctspys 0 } es est_getindex myindex event_var(userid) es_setview event_var(userid) server_var(myindex) es_keydelete ispy event_var(userid) } } if (event_var(command) == !spye) do { es_getplayerteam spyteam event_var(userid) if (server_var(spyteam) == 2) do { es_doblock ispy/spyct } else do { es_doblock ispy/spyt } } if (event_var(command) == !spyt) do { es_getplayerteam spyteam event_var(userid) es_getlivingplayercount alive 2 if (server_var(spyteam) == 2) do { if (server_var(alive) > 1) do { es_doblock ispy/spyt } else do { es_tell event_var(userid) #multi #greenNobody else alive on your team! } } else do { es_doblock ispy/spyt } } if (event_var(command) == !spyct) do { es_getplayerteam spyteam event_var(userid) es_getlivingplayercount alive 3 if (server_var(spyteam) == 3) do { if (server_var(alive) > 1) do { es_doblock ispy/spyct } else do { es_tell event_var(userid) #multi #greenNobody else alive on your team! } } else do { es_doblock ispy/spyct } } } block checkspystatus { es_xsetinfo spying 0 es_foreachkey spyid in ispy ";if (event_var(userid) == server_var(spyid)) then es_xsetinfo spying 1" } event round_start { es_xsetinfo spyenb 0 } event round_freeze_end { es_xsetinfo spyenb 1 est_uptime newtime est_uptime oldtime es_xsetinfo takehit 0 ispyloop } event player_death { es_foreachkey spyid in ispy "es_doblock ispy/checkdead" } event round_end { if (server_var(resetatroundend) == 1) do { es_foreachkey spyid in ispy "es_doblock ispy/resetall" es_xsetinfo ctspys 0 es_xsetinfo tspys 0 } } block spyt { es_xsetinfo closespyee 20000 est_loop spyid #t!d es_doblock ispy/findclosest if (server_var(spyeeid) != event_var(userid)) do { es_doblock ispy/dospy } } block spyct { es_xsetinfo closespyee 20000 est_loop spyid #c!d es_doblock ispy/findclosest if (server_var(spyeeid) != event_var(userid)) do { es_doblock ispy/dospy } } block findclosest { if (server_var(spyid) != event_var(userid)) do { es_xsetinfo fb 0 es_xsetinfo fc 0 es_getplayerprop fa event_var(userid) "CBaseEntity.m_vecOrigin" es_getplayerprop fb server_var(spyid) "CBaseEntity.m_vecOrigin" es_createvectorfrompoints fc server_var(fa) server_var(fb) es_splitvectorstring ax ay az server_var(fc) es_math ax abs es_math ay abs es_xmath ax power 2 es_xmath ay power 2 es_math ax + server_var(ay) es_xmath ax root 2 if (server_var(ax) < server_var(closespyee)) do { es_setinfo closespyee server_var(ax) es_setinfo spyeeid server_var(spyid) } } } block spyloop { est_uptime newtime es_math newtime - server_var(oldtime) if (server_var(newtime) > server_var(intervaltime)) do { es_xsetinfo takehit 1 est_uptime oldtime } es_foreachkey spyid in ispy "es_doblock ispy/checkview" if (server_var(takehit) == 1) then es_xsetinfo takehit 0 } block checkview { es_keygetvalue viewid ispy server_var(spyid) spyee if (server_var(takehit) = 1) do { if (server_var(takehitenemyonly) == 1) do { es_getplayerteam spyerteam server_var(spyid) es_getplayerteam spyeeteam server_var(viewid) if (server_var(spyerteam) != server_var(spyeeteam)) do { if (server_var(cashtake) != 0) do { es_getmoney spycash server_var(spyid) es_math spycash - server_var(cashtake) if (server_var(spycash) < 1) then es_xsetinfo spycash 0 es est_setcash server_var(spyid) server_var(spycash) } if (server_var(healthtake) != 0) do { es est_gethealth spyhealth server_var(spyid) es_math spyhealth - server_var(healthtake) if (server_var(spyhealth) < 2) then es_xsetinfo spyhealth 0 es est_sethealth server_var(spyid) server_var(spyhealth) } } } else do { if (server_var(cashtake) != 0) do { es_getmoney spycash server_var(spyid) es_math spycash - server_var(cashtake) es est_setcash server_var(spyid) server_var(spycash) } if (server_var(healthtake) != 0) do { es est_gethealth spyhealth server_var(spyid) es_math spyhealth - server_var(healthtake) es est_sethealth server_var(spyid) server_var(spyhealth) } } } es est_isalive viewalive server_var(viewid) if (server_var(viewalive) == 1) do { es est_getgun activeweapon server_var(viewid) es est_GetWeaponIndex viewindex server_var(viewid) server_var(activeweapon) es_setview server_var(spyid) server_var(viewindex) } } block checkdead { es_keygetvalue viewid ispy server_var(spyid) spyee if (server_var(viewid) == event_var(userid)) do { es_getplayerteam spyteam server_var(spyid) if (server_var(spyteam) == 2) do { es_xmath tspys - 1 if (server_var(tspys) < 0) then es_xsetinfo tspys 0 } else do { es_xmath ctspys - 1 if (server_var(ctspys) < 0) then es_xsetinfo ctspys 0 } es est_getindex myindex server_var(spyid) es_setview server_var(spyid) server_var(myindex) es_keydelete ispy server_var(spyid) } } block resetall { es est_getindex myindex server_var(spyid) es_setview server_var(spyid) server_var(myindex) es_keydelete ispy server_var(spyid) } block dospy { es_doblock ispy/checkspystatus if (server_var(spying) == 0) do { es est_isalive spyalive server_var(spyeeid) if (server_var(spyalive) == 1) do { es_getplayerteam spyteam event_var(userid) if (server_var(spyteam) == 2) do { if (server_var(tspys) < server_var(spylimit)) do { es_math tspys + 1 es_doblock ispy/setspy } else do { es_tell event_var(userid) #multi #greenThe limit of spys has been reached. #lightgreenTry later. } } else do { if (server_var(ctspys) < server_var(spylimit)) do { es_math ctspys + 1 es_doblock ispy/setspy } else do { es_tell event_var(userid) #multi #greenThe limit of spys has been reached. #lightgreenTry later. } } } } else do { es_tell event_var(userid) #multi #greenYou are already spying. Type !spyoff to stop. } } block setspy { es_getplayername spyeename server_var(spyeeid) es_tell event_var(userid) #multi #lightgreenYou are spying on #default server_var(spyeename) if (server_var(stelathspymode) == 0) do { es_tell server_var(spyeeid) #multi #default event_var(es_username) #greenis spying on you! } es_keycreate ispy event_var(userid) es_keysetvalue ispy event_var(userid) spyee server_var(spyeeid) }