Jump to content
Korean Random
Aydomir

Вывод данных из кэша игры

Recommended Posts

что значит расширенный? по танкам?

Нет, кол-во боев и победы мне ясно, но хочется узнать нанесенный урон, полученный урон, захват/защита базы и т.п.

Edited by Aydomir

Share this post


Link to post

Short link
Share on other sites

Нет, кол-во боев и победы мне ясно, но хочется узнать нанесенный урон, полученный урон, захват/защита базы и т.п.

посмотрите список доступных функций:

    for attr in dir(g_itemsCache.items.getAccountDossier().getRandomStats()):
        if attr.find('get') == 0:
            print attr

их можно вызвать так:

g_itemsCache.items.getAccountDossier().getRandomStats().функция()
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

 

посмотрите список доступных функций:

    for attr in dir(g_itemsCache.items.getAccountDossier().getRandomStats()):
        if attr.find('get') == 0:
            print attr

их можно вызвать так:

g_itemsCache.items.getAccountDossier().getRandomStats().функция()

У меня не получается получить, можете показать список? Если нет, то не надо. Спасибо.

Share this post


Link to post

Short link
Share on other sites

INFO: getAchievement
INFO: getAchievements
INFO: getArmorUsingEfficiency
INFO: getAvgDamage
INFO: getAvgDamageBlocked
INFO: getAvgDamageDealt
INFO: getAvgDamageReceived
INFO: getAvgEnemiesSpotted
INFO: getAvgFrags
INFO: getAvgXP
INFO: getBattlesCount
INFO: getBattlesCountBefore8_8
INFO: getBattlesCountBefore9_0
INFO: getBattlesCountVer2
INFO: getBattlesCountVer3
INFO: getBattlesStats
INFO: getCapturePoints
INFO: getDamageAssistedEfficiency
INFO: getDamageAssistedRadio
INFO: getDamageAssistedTrack
INFO: getDamageBlockedByArmor
INFO: getDamageDealt
INFO: getDamageEfficiency
INFO: getDamageReceived
INFO: getDeathsCount
INFO: getDrawsCount
INFO: getDroppedCapturePoints
INFO: getFrags8p
INFO: getFragsCount
INFO: getFragsEfficiency
INFO: getHeHits
INFO: getHeHitsReceived
INFO: getHitsCount
INFO: getHitsEfficiency
INFO: getLossesCount
INFO: getLossesEfficiency
INFO: getMarksOfMastery
INFO: getMaxDamage
INFO: getMaxDamageVehicle
INFO: getMaxFrags
INFO: getMaxFragsVehicle
INFO: getMaxXp
INFO: getMaxXpVehicle
INFO: getNearestAchievements
INFO: getNoDamageShotsReceived
INFO: getOriginalXP
INFO: getPierced
INFO: getPiercedReceived
INFO: getPotentialDamageReceived
INFO: getRecord
INFO: getShotsCount
INFO: getShotsReceived
INFO: getSignificantAchievements
INFO: getSpottedEnemiesCount
INFO: getSurvivalEfficiency
INFO: getSurvivedBattlesCount
INFO: getVehicles
INFO: getWinAndSurvived
INFO: getWinsCount
INFO: getWinsEfficiency
INFO: getXP
INFO: getXpBefore8_8
 

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

 

INFO: getAchievement
INFO: getAchievements
INFO: getArmorUsingEfficiency
INFO: getAvgDamage
INFO: getAvgDamageBlocked
INFO: getAvgDamageDealt
INFO: getAvgDamageReceived
INFO: getAvgEnemiesSpotted
INFO: getAvgFrags
INFO: getAvgXP
INFO: getBattlesCount
INFO: getBattlesCountBefore8_8
INFO: getBattlesCountBefore9_0
INFO: getBattlesCountVer2
INFO: getBattlesCountVer3
INFO: getBattlesStats
INFO: getCapturePoints
INFO: getDamageAssistedEfficiency
INFO: getDamageAssistedRadio
INFO: getDamageAssistedTrack
INFO: getDamageBlockedByArmor
INFO: getDamageDealt
INFO: getDamageEfficiency
INFO: getDamageReceived
INFO: getDeathsCount
INFO: getDrawsCount
INFO: getDroppedCapturePoints
INFO: getFrags8p
INFO: getFragsCount
INFO: getFragsEfficiency
INFO: getHeHits
INFO: getHeHitsReceived
INFO: getHitsCount
INFO: getHitsEfficiency
INFO: getLossesCount
INFO: getLossesEfficiency
INFO: getMarksOfMastery
INFO: getMaxDamage
INFO: getMaxDamageVehicle
INFO: getMaxFrags
INFO: getMaxFragsVehicle
INFO: getMaxXp
INFO: getMaxXpVehicle
INFO: getNearestAchievements
INFO: getNoDamageShotsReceived
INFO: getOriginalXP
INFO: getPierced
INFO: getPiercedReceived
INFO: getPotentialDamageReceived
INFO: getRecord
INFO: getShotsCount
INFO: getShotsReceived
INFO: getSignificantAchievements
INFO: getSpottedEnemiesCount
INFO: getSurvivalEfficiency
INFO: getSurvivedBattlesCount
INFO: getVehicles
INFO: getWinAndSurvived
INFO: getWinsCount
INFO: getWinsEfficiency
INFO: getXP
INFO: getXpBefore8_8
 

 

 

Спасибо! Я очень благодарен! Просто рад!  Edited by Aydomir

Share this post


Link to post

Short link
Share on other sites

а как установить себе 99999999 хотяб визуально, чтоб чики тащились от моих скринов

from gui.Scaleform.locale.MENU import MENU
from gui.Scaleform.locale.TOOLTIPS import TOOLTIPS
from gui.Scaleform.daapi.view.lobby.header.LobbyHeader import LobbyHeader
from gui.Scaleform.daapi.view.lobby.header.LobbyHeader import TOOLTIP_TYPES

def New_onCredits(self, accCredits):
    Old_onCredits(self, accCredits)
    self.as_creditsResponseS('100 000 000', MENU.HEADERBUTTONS_BTNLABEL_EXCHANGE_GOLD, TOOLTIPS.HEADER_GOLD_EXCHANGE, TOOLTIP_TYPES.COMPLEX)


Old_onCredits = LobbyHeader._LobbyHeader__setCredits
LobbyHeader._LobbyHeader__setCredits = New_onCredits
Edited by Dark_Knight_MiX
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

подскажите пожалуйста, как получить список танков, оставшихся для получения медали "эксперт"?

from gui.shared import g_itemsCache
isInDossier = False
result = []
awards = g_itemsCache.items.getAccountDossier().getTotalStats().getAchievements(isInDossier)
for x in awards[1]:
    if 'TankExpertAchievement' in str(x):
        result.append(x)
print result

результат:

[TankExpertAchievement<name=tankExpert; value=0; levelUpValue=282 levelUpTotalValue=324 isDone=False>, TankExpertAchievement<name=tankExpert0; value=0; levelUpValue=50 levelUpTotalValue=63 isDone=False>, TankExpertAchievement<name=tankExpert1; value=0; levelUpValue=59 levelUpTotalValue=71 isDone=False>, TankExpertAchievement<name=tankExpert2; value=0; levelUpValue=49 levelUpTotalValue=55 isDone=False>, TankExpertAchievement<name=tankExpert4; value=0; levelUpValue=42 levelUpTotalValue=44 isDone=False>, TankExpertAchievement<name=tankExpert5; value=0; levelUpValue=45 levelUpTotalValue=52 isDone=False>, TankExpertAchievement<name=tankExpert3; value=0; levelUpValue=16 levelUpTotalValue=17 isDone=False>, TankExpertAchievement<name=tankExpert6; value=0; levelUpValue=21 levelUpTotalValue=22 isDone=False>]

как получить список танков для каждой медали?

Edited by bagbirs

Share this post


Link to post

Short link
Share on other sites

есть еще g_itemsCache.items.getAccountDossier().getTotalStats().getAchievement() и она что то принимает. может с помощью этого можно добраться?

Share this post


Link to post

Short link
Share on other sites

Товарищи мододелы, подскажите пожалуйста, как в текущем патче получить информацию о любом игроке по ID?

Количество боев, WG рейтинг и тому подобное, при этом, как в лобби, так и в бою.

Пока что для себя реализовал через запрос в api.worldoftanks. Но хочу понять, как это сделать через получение accountDossier через Python, ведь g_itemsCache убрали.

Нашел код:

from helpers import dependency
from skeletons.gui.shared import IItemsCache
itemsCache = dependency.descriptor(IItemsCache)
dossier = itemsCache.items.getAccountDossier(id)

Но не могу понять, когда и как правильно вызывать. Вылезает ошибка из за отсутствия items в кэше...

 

P.S. И какой из вариантов правильнее использовать (api.worldoftanks или accountDossier)? Что будет быстрее и лучше в плане оптимизации, например, при тех же 30 запросах в начале боя?

Share this post


Link to post

Short link
Share on other sites

какой из вариантов правильнее использовать (api.worldoftanks или accountDossier)? Что будет быстрее и лучше в плане оптимизации, например, при тех же 30 запросах в начале боя?

Само собой используйте PAPI

 

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

 

Используя доссьер вам придется только на запросы 29 доссьров (ваш уже в кеше) потратить 29 * 0.5 - 15 секунд (0.5 это таймаут ибо запрашивая с меньшим интервалом сервер будет отвергать запрос)

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Товарищи мододелы, подскажите пожалуйста, как в текущем патче получить информацию о любом игроке по ID?

Количество боев, WG рейтинг и тому подобное, при этом, как в лобби, так и в бою.

Пока что для себя реализовал через запрос в api.worldoftanks. Но хочу понять, как это сделать через получение accountDossier через Python, ведь g_itemsCache убрали.

Нашел код:

from helpers import dependency
from skeletons.gui.shared import IItemsCache
itemsCache = dependency.descriptor(IItemsCache)
dossier = itemsCache.items.getAccountDossier(id)

Но не могу понять, когда и как правильно вызывать. Вылезает ошибка из за отсутствия items в кэше...

Если inline, то так:

from helpers import dependency
from skeletons.gui.shared import IItemsCache
itemsCache = dependency.instance(IItemsCache)
dossier = itemsCache.items.getAccountDossier(id)

Если в классе, то так:

from helpers import dependency
from skeletons.gui.shared import IItemsCache
class Foo:
    itemsCache = dependency.descriptor(IItemsCache)
    def bar(self, id):
        dossier = self.itemsCache.items.getAccountDossier(id)

Если по 30 игрокам, то @POLIROID ответил как лучше.

Edited by sirmax
  • Upvote 3

Share this post


Link to post

Short link
Share on other sites

POLIROIDsirmax, спасибо вам большое, буду разбираться.

 

 

Правда, еще уточню...

 

 

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

 

Имеете ввиду, что бы в запросе были указаны только необходимые поля ответа, или есть еще какие то хитрости? Ранее просто никогда не работал с API, потому интересуют все нюансы.

 

 

ваш уже в кеше

 

А как правильнее его считать? Сейчас делаю по коду ниже, не указывая id.

from helpers import dependency
from skeletons.gui.shared import IItemsCache
itemsCache = dependency.instance(IItemsCache)
accountDossier = itemsCache.items.getAccountDossier()

Или так и нужно, и возможно в таком случае запрос на сервер уже не отправляется, а считывается с уже сформированного кэша?

Share this post


Link to post

Short link
Share on other sites

>что бы в запросе были указаны только необходимые поля ответа, или есть еще какие то хитрости?

Отправляешь список аккаунтов по которым нужны данные и список полей которые тебе нужны

 

К примеру так:

http://api.worldoftanks.ru/wot/ratings/accounts/?application_id=Demo&fields=battles_count.value,wins_ratio.value,global_rating.value,xp_avg.value,damage_avg.value&type=all&account_id=111,222,333,444,555,666,777

И не забудь про разные кластеры (если это тебе важно)

 

Ну а вообще вот тут: https://developers.wargaming.net/все написано с пояснениями и возможностью протестировать

Edited by ShuraBB
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Отправляешь список аккаунтов по которым нужны данные и список полей которые тебе нужны

 

Спасибо, значит я все правильно делал.

Edited by Steeler

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...