Advertisement
Hojjke

Untitled

Sep 22nd, 2018
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.63 KB | None | 0 0
  1. import es
  2. from listeners.tick import Delay
  3. from players.entity import Player
  4. from filters.players import PlayerIter
  5. from colors import Color
  6. from wcs import wcs_commands
  7. from wcs import wcsgroup
  8. from mathlib import Vector
  9. from engines.server import queue_command_string
  10. import core
  11. from entities.constants import MoveType
  12. from events import Event
  13. from entities.entity import Entity
  14. from entities.constants import SolidType
  15. from listeners.tick import Repeat
  16. from colors import BLACK
  17. from engines.precache import Model
  18. from entities.hooks import EntityCondition
  19. from entities.hooks import EntityPostHook
  20. from memory import make_object
  21. from effects.base import TempEntity
  22. from filters.entities import EntityIter
  23. from core import SOURCE_ENGINE_BRANCH
  24.  
  25. if SOURCE_ENGINE_BRANCH == 'css':
  26. rocket_model = Model("models/weapons/w_missile.mdl")
  27. beam_model = Model("sprites/laser.vmt")
  28.  
  29.  
  30. def cluster_rockets():
  31. player = Player.from_userid(int(es.ServerVar('wcs_userid')))
  32. if player.team >= 2:
  33. nade_repeat = Repeat(create_nade, (player,int(es.ServerVar('wcs_dmg'))))
  34. nade_repeat.start(0.2, int(es.ServerVar('wcs_rockets')),True)
  35. es.tell(player.userid, '#multi', '#green[WCS] #lightgreenYou fired #green%s Cluster Rockets!' % int(es.ServerVar('wcs_rockets')))
  36.  
  37.  
  38. def create_nade(player,damage):
  39. ent = Entity.create('hegrenade_projectile')
  40. origin = player.origin
  41. origin[2] += 100
  42. ent.origin = origin
  43. ent.spawn()
  44. angles = player.view_angle
  45. forward = Vector()
  46. right = Vector()
  47. up = Vector()
  48. angles.get_angle_vectors(forward, right, up)
  49. ent.damage = damage
  50. ent.set_property_vector('m_vecBaseVelocity',(forward+up)*400)
  51. ent.thrower = player.inthandle
  52. if SOURCE_ENGINE_BRANCH == 'css':
  53. ent.model_index = rocket_model.index
  54. ent.solid_type = SolidType.NONE
  55. ent.angles = player.angles
  56. ent.set_key_value_string('targetname', "cluster")
  57. give_trail(ent,player.team)
  58.  
  59. def give_trail(ent,team):
  60. if team == 2:
  61. color = Color(255,0,0)
  62. if team == 3:
  63. color = Color(0,0,255)
  64. entity = TempEntity('BeamFollow')
  65. entity.start_width = 3
  66. entity.end_width = 3
  67. entity.color = color
  68. entity.model = beam_model
  69. entity.halo = beam_model
  70. entity.entity_index = ent.index
  71. entity.life_time = 2
  72. entity.create()
  73.  
  74.  
  75. @Event('grenade_bounce')
  76. def _grenade_bounce(game_event):
  77. coords = Vector(*[game_event[x] for x in 'xyz'])
  78. for entity in EntityIter('hegrenade_projectile'):
  79. if entity.origin == coords:
  80. if entity.get_key_value_string('targetname') == "cluster":
  81. detonate(entity)
  82. break
  83. else:
  84. return
  85.  
  86. def detonate(grenade):
  87. grenade.set_property_uchar('m_takedamage', 2)
  88. grenade.health = 1
  89. grenade.take_damage(1)
  90.  
  91. def remove_freeze(player):
  92. player.move_type = MoveType.WALK
  93.  
  94. def cancel(userid, what):
  95. wcsgroup.setUser(userid, what+'_cooldown', wcsgroup.getUser(userid, what+'_pre_cooldown'))
  96.  
  97.  
  98. def wcs_ulti_roots():
  99. userid = int(es.ServerVar('wcs_userid'))
  100. player = Player.from_userid(userid)
  101. if player.team >= 2:
  102. count = 0
  103. wcs_commands.fade(userid,10,55,5,200,1)
  104. radius = float(es.ServerVar('wcs_radius'))
  105. time = float(es.ServerVar('wcs_duration'))
  106. atk_origin = player.origin
  107. for play in PlayerIter('alive'):
  108. if play.team != player.team:
  109. vic_origin = play.origin
  110. if vic_origin.get_distance(atk_origin) <= radius:
  111. if not wcsgroup.getUser(play.userid, 'ulti_immunity'):
  112. play.move_type = MoveType.NONE
  113. count += 1
  114. Delay(time, remove_freeze, (play,))
  115. es.emitsound('player', play.userid, 'wcs/root.wav', 1.0, 0.6)
  116. queue_command_string('es est_effect_06 #a 0 sprites/laser.vmt "%s,%s,%s" "%s,%s,%s" 10 1 5 5 10 4 0 160 0 155 2' % (atk_origin[0],atk_origin[1],atk_origin[2]+35,vic_origin[0],vic_origin[1],vic_origin[2]+35))
  117. queue_command_string('es est_effect_06 #a 0 sprites/laser.vmt "%s,%s,%s" "%s,%s,%s" 10 1 4 4 10 2 0 108 0 180 2' % (atk_origin[0],atk_origin[1],atk_origin[2]+35,vic_origin[0],vic_origin[1],vic_origin[2]+35))
  118. queue_command_string('es est_effect_06 #a 0 sprites/laser.vmt "%s,%s,%s" "%s,%s,%s" 10 1 5 5 10 4 0 80 0 190 2' % (atk_origin[0],atk_origin[1],atk_origin[2]+35,vic_origin[0],vic_origin[1],vic_origin[2]+35))
  119. queue_command_string('es est_effect 10 #a 0 sprites/laser.vmt %s %s %s 60 20 1 3 3 5 0 80 0 155 0 255 2' % (vic_origin[0],vic_origin[1],vic_origin[2]+10))
  120. queue_command_string('es est_effect 10 #a 0 sprites/laser.vmt %s %s %s 75 35 1 3 3 6 0 108 0 190 0 255 2' % (vic_origin[0],vic_origin[1],vic_origin[2]+25))
  121. else:
  122. es.tell(player.userid, '#multi', '#lightgreenYour ultimate was blocked, the enemy is #greenimmune.')
  123. es.tell(play.userid, '#multi', '#lightgreenYou #greenblocked #lightgreenan ultimate skill.')
  124. if count > 0:
  125. es.centertell(userid, 'Entangling Roots: %s' % (count))
  126. else:
  127. es.tell(userid, '#multi','#lightgreenEntangling Roots #greenfailed#lightgreen, because no enemy is close enough.')
  128. cancel(userid,'player_ultimate')
  129.  
  130. def wcs_ulti_roots2():
  131. userid = int(es.ServerVar('userid'))
  132. player = Player.from_userid(userid)
  133. if player.team >= 2:
  134. count = 0
  135. wcs_commands.fade(userid,10,55,5,200,1)
  136. radius = float(es.ServerVar('wcs_radius'))
  137. time = float(es.ServerVar('wcs_duration'))
  138. atk_origin = player.origin
  139. for play in PlayerIter('alive'):
  140. if play.team != player.team:
  141. vic_origin = play.origin
  142. if vic_origin.get_distance(atk_origin) <= radius:
  143. if not wcsgroup.getUser(play.userid, 'ulti_immunity'):
  144. play.move_type = MoveType.NONE
  145. count += 1
  146. Delay(time, remove_freeze, (play,))
  147. es.emitsound('player', play.userid, 'wcs/root.wav', 1.0, 0.6)
  148. queue_command_string('es est_effect_06 #a 0 sprites/laser.vmt "%s,%s,%s" "%s,%s,%s" 10 1 5 5 10 4 0 160 0 155 2' % (atk_origin[0],atk_origin[1],atk_origin[2]+35,vic_origin[0],vic_origin[1],vic_origin[2]+35))
  149. queue_command_string('es est_effect_06 #a 0 sprites/laser.vmt "%s,%s,%s" "%s,%s,%s" 10 1 4 4 10 2 0 108 0 180 2' % (atk_origin[0],atk_origin[1],atk_origin[2]+35,vic_origin[0],vic_origin[1],vic_origin[2]+35))
  150. queue_command_string('es est_effect_06 #a 0 sprites/laser.vmt "%s,%s,%s" "%s,%s,%s" 10 1 5 5 10 4 0 80 0 190 2' % (atk_origin[0],atk_origin[1],atk_origin[2]+35,vic_origin[0],vic_origin[1],vic_origin[2]+35))
  151. queue_command_string('es est_effect 10 #a 0 sprites/laser.vmt %s %s %s 60 20 1 3 3 5 0 80 0 155 0 255 2' % (vic_origin[0],vic_origin[1],vic_origin[2]+10))
  152. queue_command_string('es est_effect 10 #a 0 sprites/laser.vmt %s %s %s 75 35 1 3 3 6 0 108 0 190 0 255 2' % (vic_origin[0],vic_origin[1],vic_origin[2]+25))
  153. else:
  154. es.tell(player.userid, '#multi', '#lightgreenYour ultimate was blocked, the enemy is #greenimmune.')
  155. es.tell(play.userid, '#multi', '#lightgreenYou #greenblocked #lightgreenan ultimate skill.')
  156. if count > 0:
  157. es.centertell(userid, 'Entangling Roots: %s' % (count))
  158. else:
  159. es.tell(userid, '#multi','#lightgreenEntangling Roots #greenfailed#lightgreen, because no enemy is close enough.')
  160. cancel(userid,'player_ultimate')
  161.  
  162.  
  163. def wcs_ulti_chain():
  164. userid = int(es.ServerVar('wcs_userid'))
  165. player = Player.from_userid(userid)
  166. if player.team >= 2:
  167. count = 0
  168. wcs_commands.fade(userid,10,55,5,200,1)
  169. radius = float(es.ServerVar('wcs_radius'))
  170. atk_origin = player.origin
  171. for play in PlayerIter('alive'):
  172. if play.team != player.team:
  173. vic_origin = play.origin
  174. if vic_origin.get_distance(atk_origin) <= radius:
  175. if not wcsgroup.getUser(play.userid, 'ulti_immunity'):
  176. wcs_commands.damage(play.userid,32,userid,solo=1)
  177. count += 1
  178. es.emitsound('player', play.userid, 'wcs/lightning.wav', 1.0, 0.6)
  179. queue_command_string('es est_effect_06 #a 0 sprites/lgtning.vmt "%s,%s,%s" "%s,%s,%s" 10 .2 10 1 1 13 160 160 230 255 11' % (atk_origin[0],atk_origin[1],atk_origin[2]+35,vic_origin[0],vic_origin[1],vic_origin[2]+35))
  180. queue_command_string('es est_effect_06 #a 0 sprites/lgtning.vmt "%s,%s,%s" "%s,%s,%s" 10 .2 10 2 2 12 150 150 255 220 8' % (atk_origin[0],atk_origin[1],atk_origin[2]+35,vic_origin[0],vic_origin[1],vic_origin[2]+35))
  181. queue_command_string('es est_effect_06 #a 0 sprites/lgtning.vmt "%s,%s,%s" "%s,%s,%s" 10 .2 10 1 1 14 200 200 255 235 10' % (atk_origin[0],atk_origin[1],atk_origin[2]+35,vic_origin[0],vic_origin[1],vic_origin[2]+35))
  182. else:
  183. es.tell(userid, '#multi', '#lightgreenYour ultimate was blocked, the enemy is #greenimmune.')
  184. es.tell(play.userid, '#multi', '#lightgreenYou #greenblocked #lightgreenan ultimate skill.')
  185. if count > 0:
  186. es.centertell(userid, 'Chain Lightning: %s players damaged' % (count))
  187. else:
  188. es.tell(userid, '#multi', '#lightgreenChain Lightning #greenfailed#lightgreen, because no enemy is close enough to be damaged.')
  189. cancel(userid,'player_ultimate')
  190.  
  191.  
  192. def wcs_ulti_chain2():
  193. userid = int(es.ServerVar('userid'))
  194. player = Player.from_userid(userid)
  195. if player.team >= 2:
  196. count = 0
  197. wcs_commands.fade(userid,10,55,5,200,1)
  198. radius = float(es.ServerVar('wcs_radius'))
  199. atk_origin = player.origin
  200. for play in PlayerIter('alive'):
  201. if play.team != player.team:
  202. vic_origin = play.origin
  203. if vic_origin.get_distance(atk_origin) <= radius:
  204. if not wcsgroup.getUser(play.userid, 'ulti_immunity'):
  205. wcs_commands.damage(play.userid,32,userid,solo=1)
  206. count += 1
  207. es.emitsound('player', play.userid, 'wcs/lightning.wav', 1.0, 0.6)
  208. queue_command_string('es est_effect_06 #a 0 sprites/lgtning.vmt "%s,%s,%s" "%s,%s,%s" 10 .2 10 1 1 13 160 160 230 255 11' % (atk_origin[0],atk_origin[1],atk_origin[2]+35,vic_origin[0],vic_origin[1],vic_origin[2]+35))
  209. queue_command_string('es est_effect_06 #a 0 sprites/lgtning.vmt "%s,%s,%s" "%s,%s,%s" 10 .2 10 2 2 12 150 150 255 220 8' % (atk_origin[0],atk_origin[1],atk_origin[2]+35,vic_origin[0],vic_origin[1],vic_origin[2]+35))
  210. queue_command_string('es est_effect_06 #a 0 sprites/lgtning.vmt "%s,%s,%s" "%s,%s,%s" 10 .2 10 1 1 14 200 200 255 235 10' % (atk_origin[0],atk_origin[1],atk_origin[2]+35,vic_origin[0],vic_origin[1],vic_origin[2]+35))
  211. else:
  212. es.tell(userid, '#multi', '#lightgreenYour ultimate was blocked, the enemy is #greenimmune.')
  213. es.tell(play.userid, '#multi', '#lightgreenYou #greenblocked #lightgreenan ultimate skill.')
  214. if count > 0:
  215. es.centertell(userid, 'Chain Lightning: %s players damaged' % (count))
  216. else:
  217. es.tell(userid, '#multi', '#lightgreenChain Lightning #greenfailed#lightgreen, because no enemy is close enough to be damaged.')
  218. cancel(userid,'player_ultimate')
  219.  
  220. def wcs_arkhem():
  221. userid = int(es.ServerVar('userid'))
  222. player = Player.from_userid(userid)
  223. if player.team >= 2:
  224. count = 0
  225. wcs_commands.fade(userid,10,55,5,200,1)
  226. radius = float(es.ServerVar('wcs_radius'))
  227. time = float(es.ServerVar('wcs_duration'))
  228. atk_origin = player.origin
  229. for play in PlayerIter('alive'):
  230. if play.team != player.team:
  231. vic_origin = play.origin
  232. if vic_origin.get_distance(atk_origin) <= radius:
  233. if not wcsgroup.getUser(play.userid, 'ulti_immunity'):
  234. play.move_type = MoveType.NONE
  235. wcs_commands.push(play.userid,0,100,0)
  236. count += 1
  237. Delay(time, remove_freeze, (play,))
  238. es.emitsound('player', play.userid, 'wcs/root.wav', 1.0, 0.6)
  239. queue_command_string('es est_effect_06 #a 0 sprites/laser.vmt "%s,%s,%s" "%s,%s,%s" 10 1 5 5 10 4 0 160 0 155 2' % (atk_origin[0],atk_origin[1],atk_origin[2]+35,vic_origin[0],vic_origin[1],vic_origin[2]+35))
  240. queue_command_string('es est_effect_06 #a 0 sprites/laser.vmt "%s,%s,%s" "%s,%s,%s" 10 1 4 4 10 2 0 108 0 180 2' % (atk_origin[0],atk_origin[1],atk_origin[2]+35,vic_origin[0],vic_origin[1],vic_origin[2]+35))
  241. queue_command_string('es est_effect_06 #a 0 sprites/laser.vmt "%s,%s,%s" "%s,%s,%s" 10 1 5 5 10 4 0 80 0 190 2' % (atk_origin[0],atk_origin[1],atk_origin[2]+35,vic_origin[0],vic_origin[1],vic_origin[2]+35))
  242. queue_command_string('es est_effect 10 #a 0 sprites/laser.vmt %s %s %s 60 20 1 3 3 5 0 80 0 155 0 255 2' % (vic_origin[0],vic_origin[1],vic_origin[2]+10))
  243. queue_command_string('es est_effect 10 #a 0 sprites/laser.vmt %s %s %s 75 35 1 3 3 6 0 108 0 190 0 255 2' % (vic_origin[0],vic_origin[1],vic_origin[2]+25))
  244. else:
  245. es.tell(player.userid, '#multi', '#lightgreenYour ultimate was blocked, the enemy is #greenimmune.')
  246. es.tell(play.userid, '#multi', '#lightgreenYou #greenblocked #lightgreenan ultimate skill.')
  247. if count > 0:
  248. es.centertell(userid, 'Entangling Roots: %s' % (count))
  249. else:
  250. es.tell(userid, '#multi','#lightgreenEntangling Roots #greenfailed#lightgreen, because no enemy is close enough.')
  251. cancel(userid,'player_ultimate')
  252.  
  253.  
  254. def zeusstorm():
  255. userid = int(es.ServerVar('wcs_userid'))
  256. player = Player.from_userid(userid)
  257. if player.team >= 2:
  258. count = 0
  259. wcs_commands.fade(userid,10,55,5,200,1)
  260. radius = float(es.ServerVar('wcs_radius'))
  261. atk_origin = player.origin
  262. for play in PlayerIter('alive'):
  263. if play.team != player.team:
  264. vic_origin = play.origin
  265. if vic_origin.get_distance(atk_origin) <= radius:
  266. if not wcsgroup.getUser(play.userid, 'ulti_immunity'):
  267. wcs_commands.damage(play.userid,32,userid,solo=1)
  268. count += 1
  269.  
  270. else:
  271. es.tell(userid, '#multi', '#lightgreenYour ultimate was blocked, the enemy is #greenimmune.')
  272. es.tell(play.userid, '#multi', '#lightgreenYou #greenblocked #lightgreenan ultimate skill.')
  273. if count > 0:
  274. es.centertell(userid, 'Thunder Storm: %s players damaged' % (count))
  275. else:
  276. es.tell(userid, '#multi', '#lightgreenThunder Storm#green failed#lightgreen, because no enemy is close enough to be damaged.')
  277. cancel(userid,'player_ultimate')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement