Jump to content
Korean Random

del


angelsoft

Recommended Posts

Улучшенный таймер сведения орудия, для прицелов WoT 0.9.6.

 

источник

 

Автор: ?

 

 

Обновлено: 16.02.2015 23:05

 

attachicon.gifpp (1).jpgattachicon.gifpp (2).jpg

Главная особенность таймера сведения орудия - отображение информации в любом,используемом вами,прицеле.Выводиться информация о времени сведения,полете с наряда и разбросе.

В файле конфигурации можете настроить цвет надписей и положение на экране.

Установка:

папку scripts  в res_mods/версия клиента.

 

attachicon.gifextra_aiminfo-timer_svedeniya.zip

 

 

 

modpack.gif

мод супер!только как уменьшить шрифт ?чтоб был как на картинке по размеру как слово ready?

Link to comment
Short link
Share on other sites

мод супер!только как уменьшить шрифт ?чтоб был как на картинке по размеру как слово ready?

обновил шапку, тему

Edited by angelsoft
Link to comment
Short link
Share on other sites

это я уже видела!ширина высота выравнивание по центру всё делала но не уменьшается шрифт

 

default_medium.font

default_smaller.font

default_small.font

hpmp_panel.font

system_large.font

system_medium.font

system_small.font

system_tiny.font

verdana_medium.font

verdana_small.font

Link to comment
Short link
Share on other sites

кто с питонов на ты где код кривой



from debug_utils import *
from PlayerEvents import g_playerEvents
from constants import ARENA_PERIOD
from gui.WindowsManager import g_windowsManager
from AvatarInputHandler.aims import Aim
import AvatarInputHandler.aims
import BigWorld
import ResMgr
import json
import os
import math
import Math
import GUI
from gui import g_guiResetters
oldupdateMarkerPos = Aim.updateMarkerPos
config = None
infoArea = None
playerVehicleID = None
aimTimeRemain = None
aimTimeAll = None
aimFactorNow = None
flyTime = None
startFactor = None
startTime = None
deviation = None
aimTimeRemaintest = None

def newupdateMarkerPos(self, pos, relaxTime):
    global deviation
    global startFactor
    global flyTime
    global aimTimeRemain
    global aimFactorNow
    global infoArea
    global startTime
    global playerVehicleID
    global aimTimeAll
    global config
    oldupdateMarkerPos(self, pos, relaxTime)
    player = BigWorld.player()
    if config is None:
        return
    else:
        descr = player.vehicleTypeDescriptor
        if playerVehicleID is None:
            arena = player.arena
            playerVehicleID = player.playerVehicleID
            arena.onVehicleKilled += myOnVehicleKilled
            try:
                infoArea = TextLabel(config.get('TextArea_Style', {}))
            except:
                LOG_CURRENT_EXCEPTION()

        aimingStartTime, aimingStartFactor, multFactor, gunShotDispersionFactorsTurretRotation, chassisShotDispersionFactorsMovement, chassisShotDispersionFactorsRotation, aimingTime = player._PlayerAvatar__aimingInfo
        currTime = BigWorld.time()
        startFactor = aimingStartFactor
        startTime = aimingStartTime
        if currTime - aimingStartTime < 0.01 and startFactor < multFactor + 0.2:
            aimFactorNow = descr.gun['shotDispersionAngle'] * aimingStartFactor
            aimTimeAll = 0
            aimTimeRemain = 0
        else:
            aimFactorNow = descr.gun['shotDispersionAngle'] * aimingStartFactor * math.exp((aimingStartTime - currTime) / aimingTime)
            finishtime = math.log(aimingStartFactor / multFactor) * aimingTime + aimingStartTime
            aimTimeAll = math.log(aimingStartFactor / multFactor) * aimingTime
            aimTimeRemain = finishtime - currTime
        deviation = aimFactorNow * getAimDistance()
        flyTime = getAimDistance() / descr.shot['speed']
        infoArea.setText(getFormatText())
        return
        return


Aim.updateMarkerPos = newupdateMarkerPos

def getFormatText():
    format = config.get('format', '')
    if format == '':
        return None
    else:
        format = str(round(aimTimeRemain, 1)).join(format.split('{{aimTimeRemain}}'))
        format = str(round(aimTimeAll, 1)).join(format.split('{{aimTimeAll}}'))
        format = str(round(aimFactorNow * 100, 2)).join(format.split('{{aimFactorNow}}'))
        format = str(round(deviation, 1)).join(format.split('{{deviation}}'))
        format = str(round(flyTime, 1)).join(format.split('{{flyTime}}'))
        return format
        return None


def MYLOGLIVE(message):
    from messenger import MessengerEntry
    MessengerEntry.g_instance.gui.addClientMessage('<font color="#FF0000">' + message + '</font>')
    LOG_NOTE(message)


def MYLOG(message, *args):
    LOG_NOTE(message, *args)


def cleanUp():
    global playerVehicleID
    global infoArea
    playerVehicleID = None
    player = BigWorld.player()
    arena = player.arena
    player.arena.onVehicleKilled -= myOnVehicleKilled
    if infoArea is not None:
        GUI.delRoot(infoArea.window)
        infoArea = None
    return


def myOnVehicleKilled(vehicleID, *args):
    global playerVehicleID
    global infoArea
    if vehicleID == playerVehicleID:
        playerVehicleID = None
        GUI.delRoot(infoArea.window)
        infoArea = None
        cleanUp()
    return


def getAimDistance():
    x, y, z = BigWorld.player().gunRotator.markerInfo[0]
    v = BigWorld.player().getOwnVehiclePosition() - Math.Vector3(x, y, z)
    return int(v.length)


class TextLabel(object):
    label = None
    shadow = None
    window = None
    color = '\\cFFFFFFFF;'
    visible = True
    x = 0
    y = 0
    hcentered = False
    vcentered = False
    mainCaliberValue = 0

    def __init__(self, config):
        if config.get('color', False):
            self.color = '\\c' + config.get('color')[1:] + 'FF;'
        self.visible = config.get('visible', True)
        self.x = config.get('x', 100)
        self.y = config.get('y', 100)
        self.hcentered = config.get('hcentered', False)
        self.vcentered = config.get('vcentered', False)
        background = os.path.join('scripts', 'client', 'mods', config.get('background')) if config.get('background', '') else ''
        self.window = GUI.Window(background)
        self.window.materialFX = 'BLEND'
        self.window.verticalAnchor = 'TOP'
        self.window.horizontalAnchor = 'LEFT'
        self.window.horizontalPositionMode = 'PIXEL'
        self.window.verticalPositionMode = 'PIXEL'
        self.window.heightMode = 'PIXEL'
        self.window.widthMode = 'PIXEL'
        self.window.width = config.get('width', 186)
        self.window.height = config.get('height', 32)
        GUI.addRoot(self.window)
        self.shadow = GUI.Text('')
        font = config.get('font', 'default_medium.font')
        self.installItem(self.shadow, font)
        self.label = GUI.Text('')
        self.installItem(self.label, font)
        self.setText('')
        self.setVisible(self.visible)

    def installItem(self, item, font):
        item.font = font
        self.window.addChild(item)
        item.verticalAnchor = 'TOP'
        item.horizontalAnchor = 'CENTER'
        item.horizontalPositionMode = 'PIXEL'
        item.verticalPositionMode = 'PIXEL'
        item.position = (self.window.width / 2, 0, 1)
        item.colourFormatting = True
        item.multiline = True

    def setVisible(self, flag):
        flag = flag and self.visible
        self.window.visible = flag
        self.shadow.visible = flag
        self.label.visible = flag

    def setText(self, text, color = None):
        if text is None:
            return
        else:
            shadowText = text.replace('\\c60FF00FF;', '')
            self.shadow.text = '\\c000000FF;' + shadowText
            color = '\\c' + color + 'FF;' if color else self.color
            self.label.text = color + text
            return
            return


def onChangeScreenResolution():
    sr = GUI.screenResolution()
    for panel in [infoArea]:
        if panel is None:
            continue
        x = sr[0] / 2 - panel.window.width / 2 + panel.x if panel.hcentered else panel.x
        y = sr[1] / 2 - panel.window.height / 2 + panel.y if panel.vcentered else panel.y
        panel.window.position = (x, y, 1)

    return


def onAfterBattle(period = ARENA_PERIOD.BATTLE, *args):
    if period is ARENA_PERIOD.AFTERBATTLE:
        cleanUp()


res = ResMgr.openSection('../paths.xml')
sb = res['Paths']
vals = sb.values()[0:2]
for vl in vals:
    path = vl.asString + '/scripts/client/mods/'
    if os.path.isdir(path):
        conf_file = path + 'extra_aiminfo.json'
        if os.path.isfile(conf_file):
            with open(conf_file) as data_file:
                try:
                    config = json.load(data_file)
                except:
                    LOG_ERROR('Error while loading extra_aiminfo.json: %s' % sys.exc_info()[0])
                finally:
                    break

g_playerEvents.onArenaPeriodChange += onAfterBattle
g_guiResetters.add(onChangeScreenResolution)

 
Edited by angelsoft
Link to comment
Short link
Share on other sites

меняю координаты надписей, сохраняю. эти три строчки положение не изменили.
зато удалось поменять цвет и надписи сохранить с маленькой буквы.

 

передвинуть можно только по горизонтали,править нужно "width": 600, а не как в большенстве конфигов координаты по оси "X" и "Y"!большее число сдвигает в право,меньшее соответственно в лево!а вот по вертикали никак не хочет двигаться!

Link to comment
Short link
Share on other sites

меняю координаты надписей, сохраняю. эти три строчки положение не изменили.

зато удалось поменять цвет и надписи сохранить с маленькой буквы.

 

передвинуть можно только по горизонтали,править нужно "width": 600, а не как в большенстве конфигов координаты по оси "X" и "Y"!большее число сдвигает в право,меньшее соответственно в лево!а вот по вертикали никак не хочет двигаться!

А "hcentered": true,

        "vcentered": true, не пробовал?

Да,еще бы кто то прикрутил отключалку по видам прицела(аркада,срайпер,арта),жаль в питоне ноль:(

Edited by Slava7572
Link to comment
Short link
Share on other sites

Как оставить видимым только на арте ?

не как, нужно найти автора данного чуда или попросить  всем известного P0LIR0ID pmod пусть добавит такой функционал

Link to comment
Short link
Share on other sites

Интересный мод, но что-то конфиг не особо работает. Вправо-влево не смещает. Надо добавить тип прицела. В аркадном он не особо нужен. А в снайперском и для арты вполне сгодится.

Link to comment
Short link
Share on other sites

Обновлено \ Добавлено \ Исправлено:

Обновлено 02.03.2015

В шапке мод без "StrategicOnly",или можно просто в конфиг добавить?Хотя я скачал на wotsite:)

Link to comment
Short link
Share on other sites

В шапке мод без "StrategicOnly",или можно просто в конфиг добавить?Хотя я скачал на wotsite:)

 

1 extra_aiminfo2 исправлена и работает, нету StrategicOnly

2 улучшенная и не всегда работает сведения, в ней есть StrategicOnly, но нету background

Link to comment
Short link
Share on other sites

1 extra_aiminfo2 исправлена и работает, нету StrategicOnly

2 улучшенная и не всегда работает сведения, в ней есть StrategicOnly, но нету background

Ясн,мне подложка и не нужна в общем то.Правда и в снайпере оставил бы эту фишку,жаль что нет по типу прицела настройки :sob0:

Link to comment
Short link
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...