コード例 #1
0
ファイル: mod_safeShot.py プロジェクト: Kronx12/ModdingWot
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)
コード例 #2
0
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()
コード例 #3
0
ファイル: mod_safeShot.py プロジェクト: Kronx12/ModdingWot
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
コード例 #4
0
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
コード例 #5
0
 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)
コード例 #6
0
ファイル: infoPanel.py プロジェクト: xenus/wot
 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()
コード例 #7
0
 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()
コード例 #8
0
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
コード例 #9
0
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
コード例 #10
0
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())
コード例 #11
0
 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()
コード例 #12
0
 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')
コード例 #13
0
ファイル: infoPanel.py プロジェクト: xenus/wot
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()
コード例 #14
0
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()
コード例 #15
0
    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)
コード例 #16
0
def onBecomePlayer(self):
    global isEventBattle
    isEventBattle = player().guiSessionProvider.arenaVisitor.gui.isEventBattle()
コード例 #17
0
 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)
コード例 #18
0
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 ''
コード例 #19
0
ファイル: info_panel.py プロジェクト: buser-spb-ru/xvm_config
def _vehicle():
    vehicle = target()
    if not vehicle:
        vehicle = player().getVehicleAttached()
    return vehicle