def get_wall_between(command): var = str(command[1]) user_one = int(command[2]) user_two = int(command[3]) origin_vector = Player.from_userid(user_one).origin direction_vector = Player.from_userid(user_two).origin trace = GameTrace() engine_trace.trace_ray(Ray(origin_vector, direction_vector), ContentMasks.ALL, None, trace) ConVar(var).set_int(trace.did_hit_world())
def get_wall_between_command(command_info, var:ConVar, x:float, y:float, z:float, x2:float, y2:float, z2:float): vector = Vector(x, y, z) vector2 = Vector(x, y, z) trace = GameTrace() ray = Ray(vector, vector2) engine_trace.trace_ray(ray, ContentMasks.ALL, None, trace) var.set_int(trace.did_hit_world())
def wcs_getwallbetween_command(command_info, var:ConVar, player:convert_userid_to_player, target:convert_userid_to_player): if player is None or target is None: var.set_int(-1) return vector = player.origin vector2 = target.origin trace = GameTrace() ray = Ray(vector, vector2) engine_trace.trace_ray(ray, ContentMasks.ALL, None, trace) var.set_int(trace.did_hit_world())
def _tick(self): now = time() players = { wcsplayer: player.origin for player, wcsplayer in self._filter } for wcsplayer in list(players.keys()): if wcsplayer.player.dead: warn(f'Player "{wcsplayer.name}" should NOT be here') del players[wcsplayer] ignore = TraceFilterSimple(PlayerIter()) for ward in self.copy(): if ward._next_tick <= now: try: ward.on_tick() except: except_hooks.print_exception() try: ward.on_disappear() except: except_hooks.print_exception() self.remove(ward) continue else: ward._next_tick = now + ward.tick_interval ward.duration -= 1 if not ward.duration: try: ward.on_disappear() except: except_hooks.print_exception() self.remove(ward) entities = ward.entities team = ward.team_target for wcsplayer, origin in players.items(): if team is None or wcsplayer.player.team == team: trace = GameTrace() ray = Ray(ward.origin, origin) engine_trace.trace_ray(ray, ContentMasks.ALL, ignore, trace) if ward.has_within(origin) and not trace.did_hit_world(): if wcsplayer in entities: if entities[wcsplayer] <= now: entities[ wcsplayer] = now + ward.update_interval try: ward.on_update(wcsplayer) except: except_hooks.print_exception() else: entities[wcsplayer] = now + ward.update_interval try: ward.on_enter(wcsplayer) except: except_hooks.print_exception() else: if wcsplayer in entities: del entities[wcsplayer] try: ward.on_exit(wcsplayer) except: except_hooks.print_exception()