def getSourcePlayer(self): """ Returns a bs.Player representing the source of this bomb. """ if self.sourcePlayer is None: return bs.Player(None) # empty player ref return self.sourcePlayer
def __init__(self, pos=(0, 1, 0), sourcePlayer=None): bs.Actor.__init__(self) factory = self.getFactory() self.targetSound = factory.targetSound self.popSound = factory.popSound if sourcePlayer is None: self.sourcePlayers = [bs.Player(None)] else: self.sourcePlayers = [sourcePlayer] self.node = bs.newNode( 'prop', delegate=self, attrs={ 'body': 'sphere', 'position': pos, 'velocity': (0, 0, 1), # Не менять на (0, 0, 0)! 'model': factory.botModel, 'colorTexture': factory.botTexture, 'reflection': u'powerup', 'reflectionScale': (10, 10, 0), 'shadowSize': 0.5, 'extraAcceleration': (0, 20, 0), 'materials': [bs.getSharedObject("objectMaterial")] }) bs.gameTimer(30000, bs.WeakCall(self.handleMessage, bs.DieMessage())) self._updTimer = bs.Timer(500, bs.WeakCall(self._update), repeat=True)
def curseExplodeNoShrapnel(self, sourcePlayer=None): """ Explode the poor spaz as happens when a curse timer runs out. Less shrapnel for surviveCurse, just explode. Otherwise, shrapnel hits other players too much. Player shrapnel causes instant curse explosion of other players. Over too quickly. I could probably figure out how to prevent. However, too lazy. Making immediate=True in the DieMessage prevents shrapnel. However, spaz node disappears instantly and no cleanup happens. """ # convert None to an empty player-ref if sourcePlayer is None: sourcePlayer = bs.Player(None) if self._cursed and self.node.exists(): #self.shatter(extreme=True) self.handleMessage(bs.DieMessage(immediate=False)) activity = self._activity() if activity: bs.Blast(position=self.node.position, velocity=self.node.velocity, blastRadius=3.0, blastType='normal', sourcePlayer=sourcePlayer if sourcePlayer.exists() else self.sourcePlayer).autoRetain() self._cursed = False
def __init__(self,color=(1,1,1),highlight=(0.5,0.5,0.5),character="Spaz",player=None,powerupsExpire=True): """ Create a spaz for the provided bs.Player. Note: this does not wire up any controls; you must call connectControlsToPlayer() to do so. """ # convert None to an empty player-ref if player is None: player = bs.Player(None) Spaz.__init__(self,color=color,highlight=highlight,character=character,sourcePlayer=player,startInvincible=True,powerupsExpire=powerupsExpire) self.lastPlayerAttackedBy = None # FIXME - should use empty player ref self.lastAttackedTime = 0 self.lastAttackedType = None self.heldCount = 0 self.lastPlayerHeldBy = None # FIXME - should use empty player ref here self._player = player profiles = [] profiles = self._player.getInputDevice()._getPlayerProfiles() ### account_id = self._player.get_account_id() ## if profiles == [] or profiles == {}: profiles = bs.getConfig()['Player Profiles'] for p in profiles: try: if account_id in topranks.admin: PermissionEffect(owner = self.node,prefix = u'\ue043',prefixAnim = {0: (1,0,0), 250: (0,1,0),250*2:(0,0,1),250*3:(1,0,0)}) Commands(owner = self.node,commands = False) break if account_id in topranks.topone: PermissionEffect(owner = self.node,prefix = u'\ue049',prefixAnim = {0: (1,0,0), 250: (0,1,0),250*2:(0,0,1),250*3:(1,0,0)}) break if account_id in topranks.topthree: PermissionEffect(owner = self.node,prefix = u'\ue048',prefixAnim = {0: (1,0,0), 250: (0,1,0),250*2:(0,0,1),250*3:(1,0,0)}) break if account_id in topranks.topten: PermissionEffect(owner = self.node,prefix = u'\ue04b',prefixAnim = {0: (1,0,0), 250: (0,1,0),250*2:(0,0,1),250*3:(1,0,0)}) break except: pass # grab the node for this player and wire it to follow our spaz (so players' controllers know where to draw their guides, etc) if player.exists(): playerNode = bs.getActivity()._getPlayerNode(player) self.node.connectAttr('torsoPosition',playerNode,'position')
def __init__(self, color=(1, 1, 1), highlight=(0.5, 0.5, 0.5), character="Spaz", player=None, powerupsExpire=True): """ Create a spaz for the provided bs.Player. Note: this does not wire up any controls; you must call connectControlsToPlayer() to do so. """ #https://github.com/imayushsaini/Bombsquad-Mr.Smoothy-Admin-Powerup-Server # convert None to an empty player-ref if player is None: player = bs.Player(None) Spaz.__init__(self, color=color, highlight=highlight, character=character, sourcePlayer=player, startInvincible=True, powerupsExpire=powerupsExpire) self.lastPlayerAttackedBy = None # FIXME - should use empty player ref self.lastAttackedTime = 0 self.lastAttackedType = None self.heldCount = 0 self.lastPlayerHeldBy = None # FIXME - should use empty player ref here self._player = player profiles = [] profiles = self._player.getInputDevice()._getPlayerProfiles() ### cName = player.getName() clID = self._player.getInputDevice().getClientID() #bsInternal._chatMessage(str(clID)+'clid') #bsInternal._chatMessage(str(self._player.get_account_id())) #bsInternal._chatMessage(str(self._player.getID())) cl_str = [] if cName[0] == ' ' or cName == '': bsInternal._disconnectClient(int( player.getInputDevice().getClientID())) bsInternal._chatMessage("No white Space Name Allowed") bsInternal._chatMessage("kicking" + cl_str) playeraccountid = self._player.get_account_id() ## if profiles == [] or profiles == {}: profiles = bs.getConfig()['Player Profiles'] for p in profiles: try: if playeraccountid in MID.admins: PermissionEffect(owner=self.node, prefix=u'\ue048 A.D.M.I.N \ue048', prefixAnim={ 0: (0.5, 0.011, 0.605), 250: (1, 0.411, 0.3411), 250 * 2: (1, 0.591, 0.811), 250 * 3: (0.829, 0.331, 0.403) }) break if playeraccountid in MID.vips: PermissionEffect(owner=self.node, prefix=u'\ue043 VIP \ue043', prefixAnim={ 0: (0.9, 0.611, 0.705), 250: (1, 0.311, 0.5411), 250 * 2: (0.7, 0.591, 0.811), 250 * 3: (0.729, 0.431, 0.703) }) break if playeraccountid in MID.members: PermissionEffect(owner=self.node, prefix=u" MEMBER ", prefixAnim={ 0: (0.85, 0.852, 0.85), 250: (0.59, 0.598, 0), 250 * 2: (0.75, 1, 0), 250 * 3: (0.9, 0.17, 0.028) }) break except: pass # grab the node for this player and wire it to follow our spaz (so players' controllers know where to draw their guides, etc) if player.exists(): playerNode = bs.getActivity()._getPlayerNode(player) self.node.connectAttr('torsoPosition', playerNode, 'position')
def __init__(self, color=(1, 1, 1), highlight=(0.5, 0.5, 0.5), character="Spaz", player=None, powerupsExpire=True): """ Create a spaz for the provided bs.Player. Note: this does not wire up any controls; you must call connectControlsToPlayer() to do so. """ # convert None to an empty player-ref if player is None: player = bs.Player(None) Spaz.__init__(self, color=color, highlight=highlight, character=character, sourcePlayer=player, startInvincible=True, powerupsExpire=powerupsExpire) self.lastPlayerAttackedBy = None # FIXME - should use empty player ref self.lastAttackedTime = 0 self.lastAttackedType = None self.heldCount = 0 self.lastPlayerHeldBy = None # FIXME - should use empty player ref here self._player = player profile = self._player.get_account_id() ### if profile in mbal.AdminList: ##u'\u2B50' # ADMIN PermissionEffect(owner=self.node, prefix=bs.getSpecialChar('crown'), posPrefix=(0, 2.2, 0), particles=True, isAdmin=True, prefixAnimate=True) if profile in mbal.Fighter1stList: #1st fighter PermissionEffect(owner=self.node, prefix=bs.getSpecialChar('trophy4'), posPrefix=(-0.3, 1.8, 0), particles=True) if profile in mbal.Fighter2nd3rd: #2. 3. fighter PermissionEffect(owner=self.node, prefix=bs.getSpecialChar('trophy3'), posPrefix=(-0.3, 1.8, 0)) if profile in mbal.FighterTop15List: #top15 fighter PermissionEffect(owner=self.node, prefix=bs.getSpecialChar('trophy2'), posPrefix=(-0.3, 1.8, 0)) if profile in mbal.Scorer1stList: #1st scorer PermissionEffect(owner=self.node, prefix=bs.getSpecialChar('trophy4'), posPrefix=(0.3, 1.8, 0), particles=True) if profile in mbal.Scorer2nd3rdList: #2. 3. scorer PermissionEffect(owner=self.node, prefix=bs.getSpecialChar('trophy3'), posPrefix=(0.3, 1.8, 0)) if profile in mbal.ScorerTop15List: #top15 scorer PermissionEffect(owner=self.node, prefix=bs.getSpecialChar('trophy2'), posPrefix=(0.3, 1.8, 0)) if profile in mbal.autoKickList: #kick him every time clID = self._player.getInputDevice().getClientID() kickName = self._player.getName() bs.screenMessage(kickName + ' in blacklist' + ' auto kicking in 3 seconds', color=(0, 0.9, 0)) def kickIt(): bsInternal._disconnectClient(clID) bs.gameTimer(4000, bs.Call(kickIt)) # grab the node for this player and wire it to follow our spaz (so players' controllers know where to draw their guides, etc) if player.exists(): playerNode = bs.getActivity()._getPlayerNode(player) self.node.connectAttr('torsoPosition', playerNode, 'position')
def __init__(self, color=(1, 1, 1), highlight=(0.5, 0.5, 0.5), character="Spaz", player=None, powerupsExpire=True): """ Create a spaz for the provided bs.Player. Note: this does not wire up any controls; you must call connectControlsToPlayer() to do so. """ # convert None to an empty player-ref if player is None: player = bs.Player(None) Spaz.__init__(self, color=color, highlight=highlight, character=character, sourcePlayer=player, startInvincible=True, powerupsExpire=powerupsExpire) self.lastPlayerAttackedBy = None # FIXME - should use empty player ref self.lastAttackedTime = 0 self.lastAttackedType = None self.heldCount = 0 self.lastPlayerHeldBy = None # FIXME - should use empty player ref here self._player = player profiles = [] profiles = self._player.getInputDevice()._getPlayerProfiles() ### clID = self._player.getInputDevice().getClientID() cl_str = [] for client in bsInternal._getGameRoster(): if client['clientID'] == clID: cl_str = client['displayString'] ## if profiles == [] or profiles == {}: profiles = bs.getConfig()['Player Profiles'] for p in profiles: try: if cl_str in gph.co: PermissionEffect(owner=self.node, prefix='~<CO-LEADER>~', prefixAnim={ 0: (1, 0, 0), 250: (0, 1, 0), 250 * 2: (0, 0, 1), 250 * 3: (1, 0, 0) }) break if cl_str in gph.elder: PermissionEffect(owner=self.node, prefix='{Elder}', prefixAnim={ 0: (1, 0, 0), 250: (0, 1, 0), 250 * 2: (0, 0, 1), 250 * 3: (1, 0, 0) }) break if cl_str in gph.member: PermissionEffect(owner=self.node, prefix='-Member-', prefixAnim={ 0: (1, 0, 0), 250: (0, 1, 0), 250 * 2: (0, 0, 1), 250 * 3: (1, 0, 0) }) break if cl_str in gph.vipHashes: PermissionEffect(owner=self.node, prefix='[VIP+]', prefixAnim={ 0: (1, 0, 0), 250: (0, 1, 0), 250 * 2: (0, 0, 1), 250 * 3: (1, 0, 0) }) break if cl_str in gph.adminHashes: PermissionEffect(owner=self.node, prefix='~<{LEADER}>~', prefixAnim={ 0: (1, 0, 0), 250: (0, 1, 0), 250 * 2: (0, 0, 1), 250 * 3: (1, 0, 0) }) break except: PermissionEffect(owner=self.node, prefix='Player', prefixAnim={ 0: (1, 0, 0), 250: (0, 1, 0), 250 * 2: (0, 0, 1), 250 * 3: (1, 0, 0) }) # grab the node for this player and wire it to follow our spaz (so players' controllers know where to draw their guides, etc) if player.exists(): playerNode = bs.getActivity()._getPlayerNode(player) self.node.connectAttr('torsoPosition', playerNode, 'position')
def __init__(self, color=(1, 1, 1), highlight=(0.5, 0.5, 0.5), character="Spaz", player=None, powerupsExpire=True): """ Create a spaz for the provided bs.Player. Note: this does not wire up any controls; you must call connectControlsToPlayer() to do so. """ # convert None to an empty player-ref if player is None: player = bs.Player(None) Spaz.__init__(self, color=color, highlight=highlight, character=character, sourcePlayer=player, startInvincible=True, powerupsExpire=powerupsExpire) self.lastPlayerAttackedBy = None # FIXME - should use empty player ref self.lastAttackedTime = 0 self.lastAttackedType = None self.heldCount = 0 self.lastPlayerHeldBy = None # FIXME - should use empty player ref here self._player = player profiles = [] profiles = self._player.getInputDevice()._getPlayerProfiles() ### clID = self._player.getInputDevice().getClientID() cl_str = [] for client in bsInternal._getGameRoster(): if client['clientID'] == clID: cl_str = client['displayString'] for spclient in bsInternal._getForegroundHostSession().players: spPlayerID = spclient.get_account_id() ## if profiles == [] or profiles == {}: profiles = bs.getConfig()['Player Profiles'] for p in profiles: try: if cl_str in gph.vipHashes: PermissionEffect(owner=self.node, prefix='[PAID MEMBER]', prefixAnim={ 0: (1, 0, 0), 250: (0, 1, 0), 250 * 2: (0, 0, 1), 250 * 3: (1, 0, 0) }) break if cl_str in gph.sneha: PermissionEffect(owner=self.node, prefix='[QUEEN]', prefixAnim={ 0: (1, 0, 0), 250: (0, 1, 0), 250 * 2: (0, 0, 1), 250 * 3: (1, 0, 0) }) break if cl_str in gph.ayush: PermissionEffect(owner=self.node, prefix='[KING]', prefixAnim={ 0: (1, 0, 0), 250: (0, 1, 1), 250 * 2: (1, 0, 1), 250 * 3: (1, 0, 0) }) break if cl_str in gph.adminHashes: PermissionEffect(owner=self.node, prefix='[OWNER]', prefixAnim={ 0: (1, 0, 0), 250: (0, 1, 0), 250 * 2: (0, 0, 1), 250 * 3: (1, 0, 0) }) break if cl_str in gph.frndHashes: PermissionEffect(owner=self.node, prefix='[TEAM MEMBER]', prefixAnim={ 0: (1, 0, 0), 250: (0, 1, 0), 250 * 2: (0, 0, 1), 250 * 3: (1, 0, 0) }) break if spPlayerID in gph.autoKickList: PermissionEffect(owner=self.node, prefix='[LOOSER]', prefixAnim={ 0: (1, 0, 0), 250: (0, 1, 0), 250 * 2: (0, 0, 1), 250 * 3: (1, 0, 0) }) break if cl_str in gph.royalpass: PermissionEffect(owner=self.node, prefix='[ROYAL PASS]', prefixAnim={ 0: (1, 0, 0), 250: (0, 1, 0), 250 * 2: (0, 0, 1), 250 * 3: (1, 0, 0) }) break ''' else: PermissionEffect(owner = self.node,prefix = '[ADMIN]',prefixAnim = {0: (1,0,0), 250: (0,1,0),250*2:(0,0,1),250*3:(1,0,0)}) break ''' except: pass # grab the node for this player and wire it to follow our spaz (so players' controllers know where to draw their guides, etc) if player.exists(): playerNode = bs.getActivity()._getPlayerNode(player) self.node.connectAttr('torsoPosition', playerNode, 'position')
def __init__(self, color=(1, 1, 1), highlight=(0.5, 0.5, 0.5), character="Spaz", player=None, powerupsExpire=True): """ Create a spaz for the provided bs.Player. Note: this does not wire up any controls; you must call connectControlsToPlayer() to do so. """ #https://github.com/imayushsaini/Bombsquad-Mr.Smoothy-Admin-Powerup-Server # convert None to an empty player-ref if player is None: player = bs.Player(None) Spaz.__init__(self, color=color, highlight=highlight, character=character, sourcePlayer=player, startInvincible=True, powerupsExpire=powerupsExpire) self.lastPlayerAttackedBy = None # FIXME - should use empty player ref self.lastAttackedTime = 0 self.lastAttackedType = None self.heldCount = 0 self.lastPlayerHeldBy = None # FIXME - should use empty player ref here self._player = player profiles = [] profiles = self._player.getInputDevice()._getPlayerProfiles() ### cName = player.getName() clID = self._player.getInputDevice().getClientID() cl_str = [] if cName[0] == ' ' or cName == '': bsInternal._disconnectClient(int( player.getInputDevice().getClientID())) bsInternal._chatMessage("No white Space Name Allowed") bsInternal._chatMessage("kicking" + cl_str) playeraccountid = self._player.get_account_id() if os.path.exists('stats2.json'): while True: try: with open('stats2.json') as f: stats = json.loads(f.read()) break except Exception as (e): print e time.sleep(0.05) else: stats = {} if playeraccountid not in stats: killed = 1 kills = 0 else: killed = stats[playeraccountid]['killed'] kills = stats[playeraccountid]['kills'] if (killed == 0): killed = 1 kd = kills / round(killed, 1) kd = round(kd, 3) ranked = False #print("kill",kills,"killed",killed,"kd",round(kd,3)) ##v if profiles == [] or profiles == {}: profiles = bs.getConfig()['Player Profiles'] reload(rank) if playeraccountid in rank.player: prank = rank.player.index(playeraccountid) + 1 ranked = True for p in profiles: try: if ranked: ranktag(owner=self.node, prank=prank, prefix=" ", prefixAnim={ 0: (0.85, 0.852, 0.85), 250: (0.59, 0.598, 0), 250 * 2: (0.75, 1, 0), 250 * 3: (0.9, 0.17, 0.028) }, prefixAnimate=False, particles=False) kdpronoobtag(owner=self.node, kd=kd, kills=kills, prefix=" ", prefixAnim={ 0: (0.85, 0.852, 0.85), 250: (0.59, 0.598, 0), 250 * 2: (0.75, 1, 0), 250 * 3: (0.9, 0.17, 0.028) }, prefixAnimate=False, particles=False) kdtag(owner=self.node, kd=kd, prefix=" ", prefixAnim={ 0: (0.85, 0.852, 0.85), 250: (0.59, 0.598, 0), 250 * 2: (0.75, 1, 0), 250 * 3: (0.9, 0.17, 0.028) }, prefixAnimate=False, particles=False) if playeraccountid in MID.smoothy: PermissionEffect(owner=self.node, prefix=u'\ue048 Smoothy \ue048', prefixAnim={ 0: (0.5, 0.011, 0.605), 250: (1, 0.411, 0.3411), 250 * 2: (1, 0.591, 0.811), 250 * 3: (0.829, 0.331, 0.403) }) break # do same to add more custom tags to owners or someone .. if playeraccountid in MID.admins: PermissionEffect(owner=self.node, kd=kd, prefix=u'\ue048 A.D.M.I.N \ue048', prefixAnim={ 0: (0.5, 0.011, 0.605), 250: (1, 0.411, 0.3411), 250 * 2: (1, 0.591, 0.811), 250 * 3: (0.829, 0.331, 0.403) }) break if playeraccountid in MID.vips: PermissionEffect(owner=self.node, kd=kd, prefix=u'\ue043 VIP \ue043', prefixAnim={ 0: (0.9, 0.611, 0.705), 250: (1, 0.311, 0.5411), 250 * 2: (0.7, 0.591, 0.811), 250 * 3: (0.729, 0.431, 0.703) }) break if playeraccountid in MID.members: PermissionEffect(owner=self.node, kd=kd, prefix=u" MEMBER ", prefixAnim={ 0: (0.85, 0.852, 0.85), 250: (0.59, 0.598, 0), 250 * 2: (0.75, 1, 0), 250 * 3: (0.9, 0.17, 0.028) }) break #you can give custom tag to anyone without giving any command permision # if playeraccountid in MID.anyname: # PermissionEffect(owner = self.node,kd=kd,prefix = u" anyname ",prefixAnim = {0: (0.85,0.852,0.85), 250: (0.59,0.598,0),250*2:(0.75,1,0),250*3:(0.9,0.17,0.028)}) # break except: pass # grab the node for this player and wire it to follow our spaz (so players' controllers know where to draw their guides, etc) if player.exists(): playerNode = bs.getActivity()._getPlayerNode(player) self.node.connectAttr('torsoPosition', playerNode, 'position')
def __init__(self, color=(1, 1, 1), highlight=(0.5, 0.5, 0.5), character="Spaz", player=None, powerupsExpire=True): a = bsInternal._getForegroundHostActivity() if player is None: player = bs.Player(None) if gSettingsEnabled: settings = bs.get_settings() else: settings = {} if a is not None: with bs.Context(a): account = player.getInputDevice()._getAccountName(True) skin = settings.get("skins", {}).get(account, None) if skin is not None: character_name = get_unformat_skin_name(skin) if character_name is not None and character_name in bsSpaz.appearances.keys( ): character = character_name bsSpaz.Spaz.__init__(self, color=color, highlight=highlight, character=character, sourcePlayer=player, startInvincible=True, powerupsExpire=powerupsExpire) self.lastPlayerAttackedBy = None self.lastAttackedTime = 0 self.lastAttackedType = None self.heldCount = 0 self.lastPlayerHeldBy = None self._player = player if skin not in ["invincible"]: prefixes = settings.get("prefixes", {}) vips, admins, hosts = settings.get("vips", []), settings.get( "admins", []), settings.get("hosts", []) profiles = self._player.getInputDevice()._getPlayerProfiles() if profiles == [] or profiles == {}: profiles = bs.getConfig()['Player Profiles'] if prefixes.get(account) is not None: prefix_info = prefixes[account] if isinstance(prefix_info, list): prefix_info = {prefix_info[0]: prefix_info[1]} PermissionEffect(owner=self.node, prefix=prefix_info.values()[0], prefixAnim={ 0: self.node.color, 5000: self.node.highlight, 10000: self.node.color }, type=prefix_info.keys()[0]) elif settings.get("admins_prefix", True): if account in vips or account in admins or account in hosts: anim = {0: (0, 1, 1), 2500: (1, 0, 1), 5000: (0, 1, 1)} if account in hosts: prefix = 'Host' elif account in admins: prefix = 'Admin' elif account in vips: prefix, anim = 'VIP', { 0: (1, 1, 0), 2500: (1, 0.75, 0), 5000: (1, 1, 0) } PermissionEffect(owner=self.node, prefix=prefix, prefixAnim=anim) if player.exists(): playerNode = bs.getActivity()._getPlayerNode(player) self.node.connectAttr('torsoPosition', playerNode, 'position') check_skin(account, self.node)