def shoot(base, self, isRepeat=False): global deadBlockTimeOut if not (safeShotConfig['enabled'] and safeShotEnabled): return base(self, isRepeat) if target() is None: if safeShotConfig['wasteShotBlock']: addClientMessage( safeShotConfig['clientMessages']['wasteShotBlockedMessage']) return else: if hasattr(target().publicInfo, 'team'): if safeShotConfig['teamShotBlock'] and player().team is target( ).publicInfo.team and target().isAlive(): if not (safeShotConfig['teamKillerShotUnblock'] and player().guiSessionProvider.getArenaDP().isTeamKiller( target().id)): addChatMessage( safeShotConfig['chatMessages'] ['teamShotBlockedMessage'].replace( '{{target-name}}', target().publicInfo.name).replace( '{{target-vehicle}}', target().typeDescriptor.type.shortUserString)) addClientMessage(safeShotConfig['clientMessages'] ['teamShotBlockedMessage']) return else: if deadBlockEnabled and not target().isAlive() and ( deadBlockTimeOut == 0 or serverTime() - deadDict.get(target().id, 0) < deadBlockTimeOut): addClientMessage(safeShotConfig['clientMessages'] ['deadShotBlockedMessage']) return return base(self, isRepeat)
def addChatMessage(msg): global lastChatMessageTime if len(msg) == 0: return msg = _getL10n(msg) if lastChatMessageTime is None: player().guiSessionProvider.shared.chatCommands.proto.arenaChat.broadcast(msg, 0) elif (serverTime() - lastChatMessageTime) > 2: player().guiSessionProvider.shared.chatCommands.proto.arenaChat.broadcast(msg, 0) lastChatMessageTime = serverTime()
def addChatMessage(msg): global lastChatMessageTime if len(msg) == 0: return if lastChatMessageTime is None: player( ).guiSessionProvider.shared.chatCommands.proto.arenaChat.broadcast( msg, 0) else: if serverTime() - lastChatMessageTime > 3: player( ).guiSessionProvider.shared.chatCommands.proto.arenaChat.broadcast( msg, 0) lastChatMessageTime = serverTime() return
def onEnterWorld(self, prereqs): global _player, isPlayerInSquad, isStuns, enemiesHealth, allyVehicles, enemyVehiclesMaxHP, enemyVehiclesSumMaxHP, arenaDP, alliesDamage if not battle.isBattleTypeSupported: return if _player is None: _player = player() arenaDP = _player.guiSessionProvider.getArenaDP() if self.publicInfo['team'] != _player.team: enemiesHealth[self.id] = self.health if self.health is not None else 0 if self.id in enemyVehiclesMaxHP and enemyVehiclesMaxHP[ self.id] < self.health: enemyVehiclesMaxHP[ self.id] = self.health if self.health is not None else 0 enemyVehiclesSumMaxHP = sum(enemyVehiclesMaxHP.values()) else: allyVehicles.append(self.id) if self.id not in alliesDamage: alliesDamage[self.id] = 0 if self.isPlayerVehicle: global maxHealth, vehCD, burst isPlayerInSquad = arenaDP.isSquadMan(_player.playerVehicleID) vehCD = self.typeDescriptor.type.compactDescr burst = self.typeDescriptor.gun.burst[0] maxHealth = self.health isStuns = 'st' if self.typeDescriptor.shot.shell.hasStun else None
def useEquipment(self, intCD, entityName, sessionProvider): res, err = sessionProvider.shared.equipments.changeSetting( intCD, entityName, player()) if not res and err: sessionProvider.shared.messages.showVehicleError(err.key, err.ctx) else: if self.contused and (entityName in self.contused): self.contused.remove(entityName)
def updateBlur(self): if hotKeyPressed or (player().getVehicleAttached() is None): return if self.timer is not None and self.timer.isStarted(): self.timer.stop() self.timer = None self.timer = TimeInterval(infoPanelConfig['delay'], self, 'hide') self.timer.start()
def updateBlur(self): if self.hotKeyDown or (player().getVehicleAttached() is None): return if self.timer is not None and self.timer.isStarted(): self.timer.stop() self.timer = None self.timer = TimeInterval(infoPanelConfig['delay'], self, 'hide') self.timer.start()
def isShotAllowed(): if not (safeShotConfig['enabled'] and safeShotEnabled and not isEventBattle): return True if target() is None: if safeShotConfig['wasteShotBlock']: addClientMessage(safeShotConfig['clientMessages']['wasteShotBlockedMessage'], 2) return False elif hasattr(target().publicInfo, 'team'): if safeShotConfig['teamShotBlock'] and (player().team is target().publicInfo.team) and target().isAlive(): if not (safeShotConfig['teamKillerShotUnblock'] and player().guiSessionProvider.getArenaDP().isTeamKiller(target().id)): addChatMessage(safeShotConfig['chatMessages']['teamShotBlockedMessage'].replace('{{target-name}}', target().publicInfo.name).replace('{{target-vehicle}}', target().typeDescriptor.type.shortUserString)) addClientMessage(safeShotConfig['clientMessages']['teamShotBlockedMessage'], 2) return False elif deadBlockEnabled and (not target().isAlive()) and ((deadBlockTimeOut == 0) or ((serverTime() - deadDict.get(target().id, 0)) < deadBlockTimeOut)): addClientMessage(safeShotConfig['clientMessages']['deadShotBlockedMessage'], 2) return False return True
def _isEntitySatisfiesConditions(entity): if (entity is None) or not hasattr(entity, 'publicInfo'): return False isAlly = 0 < getattr(entity.publicInfo, 'team', 0) == player().team showFor = (infoPanelConfig['showFor'] == 'all') or ( (infoPanelConfig['showFor'] == 'ally') and isAlly) or ((infoPanelConfig['showFor'] == 'enemy') and not isAlly) aliveOnly = (not infoPanelConfig['aliveOnly']) or ( infoPanelConfig['aliveOnly'] and entity.isAlive()) return showFor and aliveOnly
def FragsCollectableStats_addVehicleStatusUpdate(self, vInfoVO): global enemyVehiclesMaxHP, enemyVehiclesSumMaxHP, _player, arenaDP if _player is None: _player = player() arenaDP = _player.guiSessionProvider.getArenaDP() if vInfoVO.vehicleID not in enemyVehiclesMaxHP and vInfoVO.team != _player.team: enemyVehiclesMaxHP[ vInfoVO. vehicleID] = vInfoVO.vehicleType.maxHealth if vInfoVO.vehicleType.maxHealth is not None else 0 enemyVehiclesSumMaxHP = sum(enemyVehiclesMaxHP.values())
def handleKey(self, isDown): if isDown: self.update(player().getVehicleAttached()) self.hotKeyDown = True elif not isDown: self.hotKeyDown = False _target = target() if _isEntitySatisfiesConditions(_target): self.update(_target) else: self.hide()
def update(self, vehicle): if self.hotKeyDown: return playerVehicle = player().getVehicleAttached() if playerVehicle is not None: self.visible = True if hasattr(vehicle, 'typeDescriptor'): info_panel_data.init(vehicle, playerVehicle) elif hasattr(playerVehicle, 'typeDescriptor'): info_panel_data.init(None, playerVehicle) self.setTextsFormatted() as_event('ON_INFO_PANEL')
def handleKey(self, isDown, key, mods): global hotKeyPressed if (key != infoPanelConfig['altKey']) or MessengerEntry.g_instance.gui.isFocused(): return if isDown: InfoPanel.update(player().getVehicleAttached()) hotKeyPressed = True elif not isDown: hotKeyPressed = False if target() is not None: InfoPanel.update(target()) else: InfoPanel.hide()
def set_gunAnglesPacked(self, prev): global yaw, old_yaw, pitch, old_pitch, old_gunAnglesPacked, dataHor, dataVert, smoothingID, currentStepPitch, currentStepYaw if self.isPlayerVehicle and ( self.gunAnglesPacked != old_gunAnglesPacked ) and battle.isBattleTypeSupported and showCorners and not isMapCas: if player() is not None and not player().isObserver(): _pitch = self.gunAnglesPacked & 63 if ((old_gunAnglesPacked & 63) == _pitch) and not showHorCorners: return old_gunAnglesPacked = self.gunAnglesPacked yaw = YAW_STEP_CORNER * (self.gunAnglesPacked >> 6 & 1023) - pi pitch = minBound + _pitch * pitchStep currentStepPitch = (pitch - old_pitch) * STEP currentStepYaw = (yaw - old_yaw) * STEP if smoothingID is not None: cancelCallback(smoothingID) smoothingID = None smoothing(old_yaw + currentStepYaw, old_pitch + currentStepPitch, STEP) old_yaw = 0 if not showHorCorners else yaw old_pitch = pitch else: hideCorners()
def calcEfficiency(self): if self.tankExists: rDAMAGE = float(self.damage) / float(self.tankExpd['wn8expDamage']) rSPOT = float(self.spotted) / float(self.tankExpd['wn8expSpot']) rFRAG = float(self.frags) / float(self.tankExpd['wn8expFrag']) rDEF = float(self.defence) / float(self.tankExpd['wn8expDef']) rWIN = 0 rDAMAGEc = max(0.0, (rDAMAGE - 0.22) / (1 - 0.22)) rSPOTc = max( 0.0, min(rDAMAGEc + 0.1, max(0.0, (rSPOT - 0.38) / (1 - 0.38)))) rFRAGc = max( 0.0, min(rDAMAGEc + 0.2, max(0.0, (rFRAG - 0.12) / (1 - 0.12)))) rDEFc = max( 0.0, min(rDAMAGEc + 0.1, max(0.0, (rDEF - 0.10) / (1 - 0.10)))) rWINc = max(0.0, (rWIN - 0.71) / (1 - 0.71)) self.WN8 = int(980 * rDAMAGEc + 210 * rDAMAGEc * rFRAGc + 155 * rFRAGc * rSPOTc + 75 * rDEFc * rFRAGc + 145 * min(1.8, rWINc)) self.DIFFExpDmg = int(self.damage - self.tankExpd['wn8expDamage']) else: self.WN8 = 0 self.DIFFExpDmg = 0 try: avgTier = float(stats._stat.resp['players'].get( player().name)['lvl']) except: avgTier = 5 self.EFF = int( max( 0, int(self.damage * (10 / (avgTier + 2)) * (0.23 + 2 * avgTier / 100.0) + self.frags * 250 + self.spotted * 150 + mathLog(self.capture + 1, 1.732) * 150 + self.defence * 150))) self.XTE = vehinfo.calculateXTE(self.vehCD, self.damage, self.frags)
def onBecomePlayer(self): global isEventBattle isEventBattle = player().guiSessionProvider.arenaVisitor.gui.isEventBattle()
def setAvgTier(self): plName = player().name if stats._stat.resp and (plName in stats._stat.resp.get('players', {})): plStats = stats._stat.resp['players'].get(plName) self.avgTier = plStats.get('avglvl', 5)
def isPremium(): _typeDescriptor = player().getVehicleAttached().typeDescriptor if (( target() is None) or infoPanel.hotKeyDown) else target().typeDescriptor return 'premium' if ('premium' in _typeDescriptor.type.tags) else ''
def _vehicle(): vehicle = target() if not vehicle: vehicle = player().getVehicleAttached() return vehicle