Exemple #1
0
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())
Exemple #2
0
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())
Exemple #3
0
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())
Exemple #4
0
    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()