示例#1
0
def dealPoison(userid, attacker, dmg, time):
    userid = int(userid)
    if userid not in poison_dict:
        poison_dict[userid] = []
    poison_repeat = Repeat(_poison_repeat, (userid, attacker, dmg))
    poison_dict[userid].append(poison_repeat)
    poison_repeat.start(time, execute_on_start=True)
示例#2
0
    def repeat(
            self, callback, args=(), kwargs=None,
            cancel_on_level_end=False):
        """Create the repeat which will be stopped after removing the entity.
        :param callback:
            A callable object that should be called at the end of each loop.
        :param tuple args:
            Arguments that should be passed to the callback.
        :param dict kwargs:
            Keyword arguments that should be passed to the callback.
        :param bool cancel_on_level_end:
            Whether or not to cancel the delay at the end of the map.
        :raise ValueError:
            Raised if the given callback is not callable.
        :return:
            The repeat instance.
        :rtype: Repeat
        """

        # Get the repeat instance...
        repeat = Repeat(callback, args, kwargs, cancel_on_level_end)

        # Add the repeat to the dictionary...
        _entity_repeats[self.index].add(repeat)

        # Return the repeat instance...
        return repeat
示例#3
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.cooldowns = CooldownDict()
        self._player = self.parent.parent
        self._players_hit = set()
        self._repeater = Repeat(self._repeat, args=(self._player, ))
        self._wards = list()

        self.outer_ring = TempEntity('BeamRingPoint',
                                     model_index=self._model.index,
                                     halo_index=self._model.index,
                                     amplitude=10,
                                     red=250,
                                     green=200,
                                     blue=100,
                                     alpha=245,
                                     fade_length=100,
                                     start_width=10,
                                     end_width=10,
                                     speed=3)
        self.beam = TempEntity('BeamPoints',
                               alpha=255,
                               red=0,
                               green=0,
                               blue=255,
                               model_index=self._model2.index,
                               start_width=7,
                               end_width=7,
                               frame_rate=255,
                               halo_index=self._model2.index)
示例#4
0
    def _on_player_pre_attack(self, attacker, victim, **kwargs):
        if randint(1, 100) > 20 or self.cooldowns['blizzard'] > 0 or self.level == 0:
            return

        self._center = victim.origin
        self._player = attacker
        self._players_hit.clear()
        self._repeater = Repeat(self._repeat)
        self._repeater.start(0.1)

        self._effect = TempEntity('BeamRingPoint', center=self._center, start_radius=self.range,
            end_radius=self.range+1, model_index=self._model.index, halo_index=self._model.index,
            life_time=7, amplitude=10, red=200, green=200, blue=255, alpha=245, flags=0,
            start_width=10, end_width=10)
        self._effect.create()

        self._stack = Entity.create('env_smokestack')

        self._stack.teleport(self._center, QAngle(0, 180, 0), None)
        self._stack.base_spread = self.range / 2
        self._stack.spread_speed = 10
        self._stack.start_size = 2
        self._stack.end_size = 1
        self._stack.jet_length = 100
        self._stack.angles = QAngle(0, 0, 0)
        self._stack.rate = 600
        self._stack.speed = 100
        self._stack.twist = 180
        self._stack.render_mode = RenderMode.TRANS_COLOR
        self._stack.render_amt = 100
        self._stack.render_color = Color(200, 200, 255)
        self._stack.add_output('SmokeMaterial particle/rain.vmt')
        self._stack.turn_on()

        self._stack2 = Entity.create('env_smokestack')

        self._stack2.teleport(self._center, None, QAngle(0, 180, 0))
        self._stack2.base_spread = self.range / 4
        self._stack2.spread_speed = self.range / 2
        self._stack2.start_size = 2
        self._stack2.end_size = 1
        self._stack2.jet_length = 100
        self._stack2.angles = QAngle(0, 180, 0)
        self._stack2.rate = 600
        self._stack2.speed = 100
        self._stack2.twist = 120
        self._stack2.render_mode = RenderMode.TRANS_COLOR
        self._stack2.render_amt = 100
        self._stack2.render_color = Color(200, 200, 255)
        self._stack2.add_output('SmokeMaterial particle/rain.vmt')
        self._stack2.turn_on()

        send_wcs_saytext_by_index(self._msg_a.format(name=victim.name), attacker.index)

        self._stack.delay(7, self._stack.turn_off)
        self._stack2.delay(7, self._stack2.turn_off)
        Delay(7, self._repeater.stop)

        self.cooldowns['blizzard'] = 10
示例#5
0
 def __init__(self):
     self.state_warmup = True
     self.handle_flag = False
     self.checking = Repeat(self.players_quantity)
     self.players_to_start_sdm = settings.PAYERS_TO_START
     self.player_weapon = "weapon_glock"
     self.bot_weapon = "weapon_knife"
     self.single_player_weapon_restrict = WeaponRestrictionHandler()
    def _on_spawn_start_repeat(self, player, **kwargs):
        self.can_crit = True
        self.counter = 0

        self.repeater = Repeat(self._on_game_tick,
                               kwargs={},
                               cancel_on_level_end=True)
        self.repeater.start(0.1)
示例#7
0
def wcs_regeneration_command(command_info, player:convert_userid_to_player, value:int, duration:float, maxhealth:int, maxheal:deprecated, radius:float):
    if player is None:
        return

    repeat = Repeat(_regeneration_repeat, (player.userid, value, maxhealth, radius))
    repeat.start(duration)

    _repeats[player.userid].append(repeat)
示例#8
0
def cluster_rockets():
    player = Player.from_userid(int(es.ServerVar('wcs_userid')))
    if player.team >= 2:
        nade_repeat = Repeat(create_nade,
                             (player, int(es.ServerVar('wcs_dmg'))))
        nade_repeat.start(0.2, int(es.ServerVar('wcs_rockets')), True)
        es.tell(
            player.userid, '#multi',
            '#green[WCS] #lightgreenYou fired #green%s Cluster Rockets!' %
            int(es.ServerVar('wcs_rockets')))
示例#9
0
文件: entity.py 项目: marlinla/WCS
    def request_input(self, callback, return_menu=None):
        assert self.data.get('_internal_input_callback') is None

        self.data['_internal_input_callback'] = callback
        self.data['_internal_input_menu'] = return_menu
        self.data['_internal_input_repeat'] = Repeat(self._request_update)
        self.data['_internal_input_repeat'].start(0.25, 39)
        self.data['_internal_input_delay'] = Delay(10, self._request_end)

        return input_menu
示例#10
0
    def __init__(self):
        super().__init__()

        self._counter = 0
        self._repeat = Repeat(self._tick)
        self._refreshing = False

        self._threads = []

        self['races'] = {}
        self['items'] = {}
示例#11
0
    def __init__(self):
        super().__init__()

        self._counter = 0
        self._repeat = Repeat(self._tick)
        self._checking_new_version = False
        self._installing_new_version = False
        self._refreshing_modules = False
        self._refreshing_commits = False

        self._threads = []

        self['races'] = {}
        self['items'] = {}
示例#12
0
def _regeneration(command):
    #<userid> <amount> <time> <maxhp> <maxheal> <radius>
    userid = int(command[1])
    amount = int(command[2])
    time = float(command[3])
    maxhp = int(command[4])
    maxheal = int(command[5])
    radius = float(command[6])
    if exists(userid):
        wcsgroup.setUser(userid, 'regeneration_active', 1)
        player = Player.from_userid(userid)
        repeat_dict[player.userid] = Repeat(
            _regeneration_repeat, (player, amount, maxhp, maxheal, radius))
        repeat_dict[player.userid].start(time)
示例#13
0
db = pickle.getDict()

joined = set()


def exptick():
    for player in PlayerIter():
        steamid = player.steamid
        if steamid == 'BOT':
            steamid = 'BOT_' + player.name.upper()
        if tickoxp.get_int():
            db[steamid]["exp"] += int(tickoxp)
        db[steamid]["left"] = time()


repeat = Repeat(exptick)
repeat.start(timer.get_int())


def player_menu_select(menu, index, choice):
    userid = choice.value
    player = Player.from_userid(userid)

    steamid = player.steamid
    if steamid == 'BOT':
        steamid = 'BOT_' + player.name.upper()
    check(steamid)
    exp = int(db[steamid]["exp"])
    if player.index == index:
        wcs.wcs.tell(
            Player(index).userid,
示例#14
0
    def __init__(self):
        super().__init__()

        self._repeat = Repeat(self._tick)
        self._filter = PlayerReadyIter(is_filters='alive')
示例#15
0
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.longjump = False
     self.repeater = Repeat(self.on_cycle, args=(self.parent.parent, ))
     self.state = None
     self.reduction = 0
示例#16
0
 def __init__(self):
     self._repeat = Repeat(self.tick)
     self._filter = PlayerReadyIter(['bot', 'alive'])
示例#17
0
 def on_purchase(self, player):
     super().on_purchase(player)
     player.cash -= self.cost
     self.repeater = Repeat(self.on_cycle, args=(player, ))
     self.repeater.start(1)
     send_wcs_saytext_by_index(self._msg_purchase, player.index)
示例#18
0
def dealTimed(userid, attacker, dmg, time):
    if userid not in timed_dict:
        timed_dict[userid] = []
    timed_repeat = Repeat(_timed_repeat, (userid, attacker, dmg))
    timed_dict[userid].append(timed_repeat)
    timed_repeat.start(time, execute_on_start=True)
示例#19
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.repeater = Repeat(self.on_cycle, args=(self.parent.parent, ))
示例#20
0
def load():
    global log_players_loop
    log_players_loop = Repeat(log_players)
    log_players_loop.start(5, execute_on_start=True)