Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/isida/4.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordiSabler <dissy@ya.ru>2015-07-16 21:05:41 +0300
committerdiSabler <dissy@ya.ru>2015-07-16 21:05:41 +0300
commit48ed76f21630548a3b49ac54360c8ff9036a93b6 (patch)
treed1edeedfb62934cc5fe4cf3c4524504ec0306e59
parent1beebff4ddc5c92ad35771811a728c5625dd5673 (diff)
fix: variables priority
-rw-r--r--data/locales/ru.txt57
-rw-r--r--data/locales/ua.txt57
-rw-r--r--kernel.py12
-rw-r--r--plugins/acl.py2
-rw-r--r--plugins/wot.py364
5 files changed, 12 insertions, 480 deletions
diff --git a/data/locales/ru.txt b/data/locales/ru.txt
index 0b39bd7..bf25746 100644
--- a/data/locales/ru.txt
+++ b/data/locales/ru.txt
@@ -1368,59 +1368,6 @@ For a last day i see: %s За последние сутки я видела: %s
All who i see for a last day now is here. Все, кого я видела за сутки, находятся тут.
Show list of users for last day Показ списка участников за сутки
-# file: plugins/wot.py
-Use more characters in the name of the tank Используйте больше символов в названии танка
-none отсутствует
-3 class 3 степень
-2 class 2 степень
-1 class 1 степень
-master мастер
-\n%s: %s/%s (%s%%), avg.damage: %s, xp (avg/max): %s/%s,%s mastery: %s \n%s: %s/%s (%s%%), ср.урон: %s, опыт (ср/макс): %s/%s,%s классность: %s
- not founded tank танк не найден
-Impossible to get tanks' statistics Невозможно получить статистику танков
-\nUp to %s%% win left: %s battles \nДо %s%% побед осталось: %s битв
-\nAv. damage: %s \nСр. дамаг: %s
-\nAv. destroyed: %s \nВ ср. уничтожено: %s
-\nAv. spotted: %s \nВ ср. обнаружено: %s
-\nAv. captured points: %s \nВ ср. очков захвата: %s
-\nAv. defense points: %s \nВ ср. очков защиты: %s
-\nAv. tank lvl: %s \nСр. уровень танков: %s
-\nEfficiency rating: %s (XVM: %s) \nРейтинг эффективности: %s (XVM: %s)
- - bad player - плохой игрок
- - player below average - игрок ниже среднего
- - average player - средний игрок
- - good player - хороший игрок
- - great player - превосходный игрок
- - unicum - уникум
-\nWN6 rating: %s (XVM: %s) \nРейтинг WN6: %s (XVM: %s)
-\nWN8 rating: %s (XVM: %s) \nРейтинг WN8: %s (XVM: %s)
-\nWG rating: %s \nРейтинг WG: %s
-\nArmor-rating: %s \nРейтинг Бронесайта: %s
- - virtuoso - виртуоз
- - master tanker - мастер-танкист
- - tanker 1st class - танкист 1-го класса
- - tanker 2nd class - танкист 2-го класса
- - tanker 3rd class - танкист 3-го класса
- - deerhead 3rd class - оленевод 3-го класса
- - deerhead 2nd class - оленевод 2-го класса
- - deerhead 1st class - оленевод 1-го класса
- - master deerhead - мастер-оленевод
-\nLast seen: \nПоследний раз замечен:
-%s\n- in battle: %s %s\n- в бою: %s
-%s\n- online: %s %s\n- в сети: %s
-Impossible to get statistics Невозможно получить статистику
-Query error Ошибка запроса
-Player not found Игрок не найден
-Name: %s [%s] Название: %s [%s]
-\nOwner: %s \nВладелец: %s
-\nCreated at: %s \nДата создания: %s
-\nCount of members: %s \nКоличество участников: %s
-\nMotto: %s \nДевиз: %s
-Clan not found Клан не найден
-Impossible to get info Невозможно получить информацию
-World of Tanks - info about user. Usage: wot [nick [tank]] World of Tanks - информация о пользователе. Использование: wot [ник [танк]]
-World of Tanks - info about clan. Usage: wotclan clan World of Tanks - информация о клане. Пример: wotclan клан
-
# file: plugins/wtf.py
I know that %s is %s Я знаю, что %s - %s
from %s: %s от %s: %s
@@ -1858,5 +1805,5 @@ API settings Настройки API
World of Tanks settings Настройки плагина World of Tanks
# write locale file: ru.txt
-# total: 1434
-# missed translations: 3
+# total: 1384
+# regenarated without mistakes!
diff --git a/data/locales/ua.txt b/data/locales/ua.txt
index 450d0c1..6f04707 100644
--- a/data/locales/ua.txt
+++ b/data/locales/ua.txt
@@ -1368,59 +1368,6 @@ For a last day i see: %s Протягом останньої доби я бач
All who i see for a last day now is here. Всі, кого я бачила протягом доби, знаходяться тут.
Show list of users for last day Показ списку учасників за добу
-# file: plugins/wot.py
-Use more characters in the name of the tank Використовуйте більше символів в назві танку
-none відсутня
-3 class 3 степінь
-2 class 2 степінь
-1 class 1 степінь
-master майстер
-\n%s: %s/%s (%s%%), avg.damage: %s, xp (avg/max): %s/%s,%s mastery: %s \n%s: %s/%s (%s%%), сер.ушкодж.: %s, досвід (сер/макс): %s/%s,%s класність: %s
- not founded tank танк не знайдено
-Impossible to get tanks' statistics Неможливо отримати статистику танків
-\nUp to %s%% win left: %s battles \nДо %s%% перемог залишилося: %s битв
-\nAv. damage: %s \nСер. дамаг: %s
-\nAv. destroyed: %s \nВ сер. знищено: %s
-\nAv. spotted: %s \nВ сер. знайдено: %s
-\nAv. captured points: %s \nВ сер. очків захвату: %s
-\nAv. defense points: %s \nВ сер. очків захисту: %s
-\nAv. tank lvl: %s \nСер. рівень танків: %s
-\nEfficiency rating: %s (XVM: %s) \nРейтинг ефективності: %s (XVM: %s)
- - bad player - поганий гравець
- - player below average - гравець нижче середнього
- - average player - середній гравець
- - good player - хороший гравець
- - great player - чудовий гравець
- - unicum - унікум
-\nWN6 rating: %s (XVM: %s) \nРейтинг WN6: %s (XVM: %s)
-\nWN8 rating: %s (XVM: %s) \nРейтинг WN8: %s (XVM: %s)
-\nWG rating: %s \nРейтинг WG: %s
-\nArmor-rating: %s \nРейтинг Бронесайту: %s
- - virtuoso - віртуоз
- - master tanker - майстер-танкіст
- - tanker 1st class - танкіст 1-го класу
- - tanker 2nd class - танкіст 2-го класу
- - tanker 3rd class - танкіст 3-го класу
- - deerhead 3rd class - оленевід 3-го класу
- - deerhead 2nd class - оленевід 2-го класу
- - deerhead 1st class - оленевід 1-го класу
- - master deerhead - майстер-оленевід
-\nLast seen: \nОстанній раз помічений:
-%s\n- in battle: %s %s\n- в бою: %s
-%s\n- online: %s %s\n- в мережі: %s
-Impossible to get statistics Неможливо отримати статистику
-Query error Помилка запиту
-Player not found Гравця не знайдено
-Name: %s [%s] Назва: %s [%s]
-\nOwner: %s \nВласник: %s
-\nCreated at: %s \nДата створення: %s
-\nCount of members: %s \nКількість учасників: %s
-\nMotto: %s \nДевіз: %s
-Clan not found Клан не знайдено
-Impossible to get info Неможливо отримати інформацію
-World of Tanks - info about user. Usage: wot [nick [tank]] World of Tanks - інформація про користувача. Використання: wot [нік [танк]]
-World of Tanks - info about clan. Usage: wotclan clan World of Tanks - інформація про клан. Приклад: wotclan клан
-
# file: plugins/wtf.py
I know that %s is %s Я знаю, що %s - %s
from %s: %s від %s: %s
@@ -1858,5 +1805,5 @@ API settings Налаштування API
World of Tanks settings Налаштування плагіна World of Tanks
# write locale file: ua.txt
-# total: 1434
-# missed translations: 3
+# total: 1384
+# regenarated without mistakes!
diff --git a/kernel.py b/kernel.py
index 69964df..6154c5c 100644
--- a/kernel.py
+++ b/kernel.py
@@ -1568,7 +1568,7 @@ nmbrs = ['0','1','2','3','4','5','6','7','8','9','.']
ul = slog_folder % 'update.log' # лог последнего обновление
halt_on_exception = False # остановка на ошибках
debug_xmpppy = False # отладка xmpppy
-debug_console = False # отладка действий бота
+debug_console = True # отладка действий бота
CommandsLog = None # логгирование команд
prefix = '_' # префикс комманд
msg_limit = 1000 # лимит размера сообщений
@@ -1648,6 +1648,11 @@ elif lt[0:3] > gt[0:3]: timeofset = int(lt[3])-int(gt[3]) + 24
else: timeofset = int(gt[3])-int(lt[3]) + 24
is_win32 = sys.platform == 'win32'
+if is_win32:
+ import ctypes
+ ctypes.windll.Kernel32.GetStdHandle.restype = ctypes.c_ulong
+ win_console_color = ctypes.windll.Kernel32.GetStdHandle(ctypes.c_ulong(0xfffffff5))
+
if os.path.isfile(configname): execfile(configname)
else: errorHandler('%s is missed.' % configname)
@@ -1705,11 +1710,6 @@ if thread_type:
else: import thread
-if is_win32:
- import ctypes
- ctypes.windll.Kernel32.GetStdHandle.restype = ctypes.c_ulong
- win_console_color = ctypes.windll.Kernel32.GetStdHandle(ctypes.c_ulong(0xfffffff5))
-
botVersion = get_bot_version()
try: tmp = botOs
except: botOs = os_version()
diff --git a/plugins/acl.py b/plugins/acl.py
index a0c5571..e3d8923 100644
--- a/plugins/acl.py
+++ b/plugins/acl.py
@@ -34,6 +34,8 @@ def acl_show(jid,nick,text):
a = cur_execute_fetchall('select * from acl where jid=%s and action ilike %s order by level,action',(jid,text))
if len(a):
msg = L('Acl:','%s/%s'%(jid,nick))
+ msg = L('Acl111:','%s/%s'%(jid,nick))
+ msg = L('Acl122:','%s/%s'%(jid,nick))
for tmp in a:
if text == '%': t4 = tmp[4].replace('\n',' // ')
else: t4 = tmp[4].replace('\n','\n ')
diff --git a/plugins/wot.py b/plugins/wot.py
deleted file mode 100644
index 6ce3813..0000000
--- a/plugins/wot.py
+++ /dev/null
@@ -1,364 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-
-# --------------------------------------------------------------------------- #
-# #
-# Plugin for iSida Jabber Bot #
-# Copyright (C) 2013 VitaliyS <hetleven@yandex.ua> #
-# #
-# This program is free software: you can redistribute it and/or modify #
-# it under the terms of the GNU General Public License as published by #
-# the Free Software Foundation, either version 3 of the License, or #
-# (at your option) any later version. #
-# #
-# This program is distributed in the hope that it will be useful, #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
-# GNU General Public License for more details. #
-# #
-# You should have received a copy of the GNU General Public License #
-# along with this program. If not, see <http://www.gnu.org/licenses/>. #
-# #
-# --------------------------------------------------------------------------- #
-
-import wgpapi
-
-wot_api = wgpapi.Session(getattr(wgpapi.Server, GT('wot_region')), GT('wot_appid'), GT('wot_retries'), GT('wot_delay'))
-
-clantags = re.compile('(\(.*?\))|(\[.*?\])')
-
-def get_tanks_data():
- d = wot_api.fetch('wot/encyclopedia/tanks', 'fields=level,name_i18n,name')
- res = {}
- for i in d:
- n18 = d[i]['name_i18n'].rsplit(':', 1)[-1].replace('_', ' ')
- n = d[i]['name'].rsplit(':', 1)[-1].replace('_', ' ')
- res[i] = {'name_i18n': n18, 'name': n, 'level': d[i]['level']}
- return res
-
-def getExtValue():
- try:
- data = load_page('http://www.wnefficiency.net/exp/expected_tank_values_latest.json')
- v = json.loads(data)
- extv = dict([[d['IDNum'], {'expFrag':d['expFrag'],'expDamage':d['expDamage'],'expSpot':d['expSpot'],'expDef':d['expDef'],'expWinRate':d['expWinRate']}] for d in v['data']])
- return extv
- except:
- return
-
-try:
- tanks_data = get_tanks_data()
-except:
- tanks_data = {}
-
-extv = getExtValue()
-
-def wot(type, jid, nick, text):
- text = text.strip()
- if not text:
- tmp_text = clantags.sub('', nick).strip().split(' ', 1)[0]
- if re.match('[\da-zA-Z_].*?', tmp_text):
- text = tmp_text
- if text:
- text = text.split(' ', 1)
- if len(text) == 1:
- name, tank = text[0], ''
- else:
- name, tank = text[0], text[1].lower()
-
- try:
-
- v = wot_api.fetch('wot/account/list', 'search=%s&fields=account_id&limit=1' % name)
- player_id = str(v[0]['account_id'])
-
- vdata = wot_api.fetch('wot/tanks/stats', 'account_id=%s' % player_id)
-
- pdata = wot_api.fetch('wot/account/info', 'account_id=%s&fields=nickname,statistics,global_rating,last_battle_time,logout_at' % player_id)
- stat = pdata[player_id]['statistics']
-
- claninfo = wot_api.fetch('wot/clan/membersinfo', 'member_id=%s' % player_id)
-
- if claninfo[player_id]:
- clan_id = str(claninfo[player_id]['clan_id'])
- cdata = wot_api.fetch('wot/clan/info', 'clan_id=%s&fields=abbreviation' % clan_id)
- cname = cdata[clan_id]['abbreviation']
- except:
- pdata = None
-
- if pdata and pdata[player_id]:
- wotname = pdata[player_id]['nickname'] + ('[%s]' % cname if claninfo[player_id] else '')
-
- if tank:
- if len(tank) == 1:
- msg = L('Use more characters in the name of the tank','%s/%s'%(jid,nick))
- else:
- try:
- msg = '%s:' % wotname
- tids = [tid for tid in tanks_data if tank in tanks_data[tid]['name'].lower() or tank in tanks_data[tid]['name_i18n'].lower()]
-
- for t in vdata[player_id]:
- if str(t['tank_id']) in tids:
- tank_win = t['all']['wins']
- tank_battle = t['all']['battles']
- if tank_battle:
- tank_avgxp = t['all']['battle_avg_xp']
- tank_maxxp = t['max_xp']
- mom = [ L('none','%s/%s'%(jid,nick)),
- L('3 class','%s/%s'%(jid,nick)),
- L('2 class','%s/%s'%(jid,nick)), L('1 class','%s/%s'%(jid,nick)),
- L('master','%s/%s'%(jid,nick))][t['mark_of_mastery']]
- tank_dmg = int(round(t['all']['damage_dealt'] / float(tank_battle), 0))
- tank_name = tanks_data[str(t['tank_id'])]['name_i18n']
- tank_wins = round(100.0*tank_win/tank_battle, 2)
-
- if extv and extv.has_key(t['tank_id']):
- #wn8
- expDmg = tank_battle * extv[t['tank_id']]['expDamage']
- expSpot = tank_battle * extv[t['tank_id']]['expSpot']
- expFrag = tank_battle * extv[t['tank_id']]['expFrag']
- expDef = tank_battle * extv[t['tank_id']]['expDef']
- expWins = tank_battle * extv[t['tank_id']]['expWinRate'] / 100.0
-
- rDAMAGE = t['all']['damage_dealt'] / expDmg
- rSPOT = t['all']['spotted'] / expSpot
- rFRAG = t['all']['frags'] / expFrag
- rDEF = t['all']['dropped_capture_points'] / expDef
- rWIN = tank_win / expWins
-
- rWINc = max(0, (rWIN - 0.71) / (1 - 0.71) )
- rDAMAGEc = max(0, (rDAMAGE - 0.22) / (1 - 0.22) )
- rFRAGc = max(0, min(rDAMAGEc + 0.2, (rFRAG - 0.12) / (1 - 0.12)))
- rSPOTc = max(0, min(rDAMAGEc + 0.1, (rSPOT - 0.38) / (1 - 0.38)))
- rDEFc = max(0, min(rDAMAGEc + 0.1, (rDEF - 0.10) / (1 - 0.10)))
-
- twn8 = 980*rDAMAGEc + 210*rDAMAGEc*rFRAGc + 155*rFRAGc*rSPOTc + 75*rDEFc*rFRAGc + 145*min(1.8,rWINc)
-
- if twn8 > 3400:
- twn8_xvm = 100
- else:
- twn8_xvm = max(min(twn8*(twn8*(twn8*(twn8*(twn8*(9.553e-20*twn8 - 1.644e-16) - 4.26e-12) + 1.97e-8) - 3.192e-5) + 5.6265e-2) - 0.157, 100), 0)
- WN8_TXT = ' WN8: %s (%s),' % (int(round(twn8)), round(twn8_xvm, 1))
- else:
- WN8_TXT = ''
-
- msg += L('\n%s: %s/%s (%s%%), avg.damage: %s, xp (avg/max): %s/%s,%s mastery: %s','%s/%s'%(jid,nick)) % (tank_name, tank_win, tank_battle, tank_wins, tank_dmg, tank_avgxp, tank_maxxp, WN8_TXT, mom)
-
- else:
- msg += '\n%s (%s/%s)' % (tanks_data[str(t['tank_id'])]['name_i18n'], tank_win, tank_battle)
- if not msg.count('\n'):
- msg += L(' not founded tank','%s/%s'%(jid,nick))
- except:
- msg = L('Impossible to get tanks\' statistics','%s/%s'%(jid,nick))
- else:
-
- wins = stat['all']['wins']
- battles = stat['all']['battles']
-
- if not battles:
- msg = '%s: %s/%s' % (wotname, wins, battles)
-
- else:
- try:
- win_percent = round(100.0 * wins / battles, 2)
- msg = '%s: %s/%s (%s%%)' % (wotname, wins, battles, win_percent)
-
- np = int(win_percent) + 1
- np_int = int((np * battles - 100 * wins) / (100 - np) + 1)
- np05 = int(win_percent + 0.5) + 0.5
- np_round = int((np05 * battles - 100 * wins) / (100 - np05) + 1)
-
- msg += L('\nUp to %s%% win left: %s battles', '%s/%s'%(jid,nick)) % (np, np_int)
- msg += L('\nUp to %s%% win left: %s battles', '%s/%s'%(jid,nick)) % (np05, np_round)
-
- avg_exp = stat['all']['battle_avg_xp']
-
- DAMAGE = stat['all']['damage_dealt'] / float(battles)
- msg += L('\nAv. damage: %s','%s/%s'%(jid,nick)) % int(round(DAMAGE))
- FRAGS = stat['all']['frags'] / float(battles)
- msg += L('\nAv. destroyed: %s','%s/%s'%(jid,nick)) % round(FRAGS, 2)
- SPOT = stat['all']['spotted'] / float(battles)
- msg += L('\nAv. spotted: %s','%s/%s'%(jid,nick)) % round(SPOT, 2)
- CAP = stat['all']['capture_points'] / float(battles)
- msg += L('\nAv. captured points: %s','%s/%s'%(jid,nick)) % round(CAP, 2)
- DEF = stat['all']['dropped_capture_points'] / float(battles)
- msg += L('\nAv. defense points: %s','%s/%s'%(jid,nick)) % round(DEF, 2)
- tanks = [vh for vh in vdata[player_id] if vh['all']['battles']]
- s = sum([t['all']['battles'] * tanks_data[str(t['tank_id'])]['level'] for t in tanks])
- TIER = s / float(battles)
- WINRATE = wins / float(battles)
- msg += L('\nAv. tank lvl: %s','%s/%s'%(jid,nick)) % round(TIER, 2)
-
- er = DAMAGE * (10 / (TIER + 2)) * (0.23 + 2 * TIER / 100) + FRAGS * 250 + SPOT * 150 + math.log(CAP + 1) / math.log(1.732) * 150 + DEF * 150
- if er < 350:
- er_xvm = 0
- else:
- er_xvm = max(min(er*(er*(er*(er*(er*(3.388e-17*er - 2.469e-13) + 6.9335e-10) - 9.5342e-7) + 6.656e-4) -0.1485) - 0.85, 100), 0)
-
- msg += L('\nEfficiency rating: %s (XVM: %s)','%s/%s'%(jid,nick)) % (int(round(er)), round(er_xvm, 1))
-
- if er < 610:
- msg += L(' - bad player','%s/%s'%(jid,nick))
- elif er < 850:
- msg += L(' - player below average','%s/%s'%(jid,nick))
- elif er < 1145:
- msg += L(' - average player','%s/%s'%(jid,nick))
- elif er < 1475:
- msg += L(' - good player','%s/%s'%(jid,nick))
- elif er < 1775:
- msg += L(' - great player','%s/%s'%(jid,nick))
- elif er >= 1775:
- msg += L(' - unicum','%s/%s'%(jid,nick))
-
- wn6 = (1240 - 1040 / math.pow((min(TIER, 6)), 0.164)) * FRAGS + DAMAGE * 530 / (184 * math.exp(0.24 * TIER) + 130) + SPOT * 125 + min(DEF, 2.2) * 100 + ((185 / (0.17 + math.exp((WINRATE * 100 - 35) * -0.134))) - 500) * 0.45 + (6 - min(TIER, 6)) * (-60)
-
- if wn6 > 2300:
- wn6_xvm = 100
- else:
- wn6_xvm = max(min(wn6*(wn6*(wn6*(wn6*(wn6*(4.66e-18*wn6 - 3.2413e-14) + 7.524e-11) - 6.516e-8) + 1.307e-5) + 5.153e-2) - 3.9, 100), 0)
-
- msg += L('\nWN6 rating: %s (XVM: %s)','%s/%s'%(jid,nick)) % (int(round(wn6)), round(wn6_xvm, 1))
-
- if wn6 < 410:
- msg += L(' - bad player','%s/%s'%(jid,nick))
- elif wn6 < 795:
- msg += L(' - player below average','%s/%s'%(jid,nick))
- elif wn6 < 1185:
- msg += L(' - average player','%s/%s'%(jid,nick))
- elif wn6 < 1585:
- msg += L(' - good player','%s/%s'%(jid,nick))
- elif wn6 < 1925:
- msg += L(' - great player','%s/%s'%(jid,nick))
- elif wn6 >= 1925:
- msg += L(' - unicum','%s/%s'%(jid,nick))
-
- if extv:
- expDmg = 0
- expSpot = 0
- expFrag = 0
- expDef = 0
- expWins = 0
-
- for t in vdata[player_id]:
- if not extv.has_key(t['tank_id']):
- continue
-
- tank_battle = t['all']['battles']
-
- expDmg += tank_battle * extv[t['tank_id']]['expDamage']
- expSpot += tank_battle * extv[t['tank_id']]['expSpot']
- expFrag += tank_battle * extv[t['tank_id']]['expFrag']
- expDef += tank_battle * extv[t['tank_id']]['expDef']
- expWins += tank_battle * extv[t['tank_id']]['expWinRate'] / 100.0
-
- rDAMAGE = stat['all']['damage_dealt'] / expDmg
- rSPOT = stat['all']['spotted'] / expSpot
- rFRAG = stat['all']['frags'] / expFrag
- rDEF = stat['all']['dropped_capture_points'] / expDef
- rWIN = wins / expWins
-
- rWINc = max(0, (rWIN - 0.71) / (1 - 0.71) )
- rDAMAGEc = max(0, (rDAMAGE - 0.22) / (1 - 0.22) )
- rFRAGc = max(0, min(rDAMAGEc + 0.2, (rFRAG - 0.12) / (1 - 0.12)))
- rSPOTc = max(0, min(rDAMAGEc + 0.1, (rSPOT - 0.38) / (1 - 0.38)))
- rDEFc = max(0, min(rDAMAGEc + 0.1, (rDEF - 0.10) / (1 - 0.10)))
-
- #http://www.koreanrandom.com/forum/topic/13434-%D1%80%D0%B5%D0%B9%D1%82%D0%B8%D0%BD%D0%B3-wn8-%D1%84%D0%BE%D1%80%D0%BC%D1%83%D0%BB%D0%B0-%D0%BE%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5/
- wn8 = 980*rDAMAGEc + 210*rDAMAGEc*rFRAGc + 155*rFRAGc*rSPOTc + 75*rDEFc*rFRAGc + 145*min(1.8,rWINc)
-
- if wn8 > 3400:
- wn8_xvm = 100
- else:
- wn8_xvm = max(min(wn8*(wn8*(wn8*(wn8*(wn8*(9.553e-20*wn8 - 1.644e-16) - 4.26e-12) + 1.97e-8) - 3.192e-5) + 5.6265e-2) - 0.157, 100), 0)
-
- msg += L('\nWN8 rating: %s (XVM: %s)','%s/%s'%(jid,nick)) % (int(round(wn8)), round(wn8_xvm, 1))
-
- if wn8 < 355:
- msg += L(' - bad player','%s/%s'%(jid,nick))
- elif wn8 < 820:
- msg += L(' - player below average','%s/%s'%(jid,nick))
- elif wn8 < 1370:
- msg += L(' - average player','%s/%s'%(jid,nick))
- elif wn8 < 2020:
- msg += L(' - good player','%s/%s'%(jid,nick))
- elif wn8 < 2620:
- msg += L(' - great player','%s/%s'%(jid,nick))
- elif wn8 >= 2620:
- msg += L(' - unicum','%s/%s'%(jid,nick))
-
- msg += L('\nWG rating: %s','%s/%s'%(jid,nick)) % pdata[player_id]['global_rating']
-
- stat_rnd = lambda x: stat['all'][x] - stat['clan'][x] - stat['company'][x]
-
- armor = math.log(stat_rnd('battles')) / 10 * (stat_rnd('xp')/float(stat_rnd('battles')) + stat_rnd('damage_dealt')/float(stat_rnd('battles')) * (stat_rnd('wins') * 2 + stat_rnd('frags') * 0.9 + (stat_rnd('spotted') + stat_rnd('capture_points') + stat_rnd('dropped_capture_points')) * 0.5)/float(stat_rnd('battles')))
-
- msg += L('\nArmor-rating: %s','%s/%s'%(jid,nick)) % int(round(armor))
-
- try:
- data = load_page('http://armor.kiev.ua/wot/api.php?version=iSida3')
- armor_limits = json.loads(data)
-
- if armor > armor_limits['classRatings']['cv']:
- msg += L(' - virtuoso','%s/%s'%(jid,nick))
- elif armor > armor_limits['classRatings']['cm']:
- msg += L(' - master tanker','%s/%s'%(jid,nick))
- elif armor > armor_limits['classRatings']['c1']:
- msg += L(' - tanker 1st class','%s/%s'%(jid,nick))
- elif armor > armor_limits['classRatings']['c2']:
- msg += L(' - tanker 2nd class','%s/%s'%(jid,nick))
- elif armor > armor_limits['classRatings']['c3']:
- msg += L(' - tanker 3rd class','%s/%s'%(jid,nick))
- elif armor > armor_limits['classRatings']['d3']:
- msg += L(' - deerhead 3rd class','%s/%s'%(jid,nick))
- elif armor > armor_limits['classRatings']['d2']:
- msg += L(' - deerhead 2nd class','%s/%s'%(jid,nick))
- elif armor > armor_limits['classRatings']['d1']:
- msg += L(' - deerhead 1st class','%s/%s'%(jid,nick))
- else: #['dm']
- msg += L(' - master deerhead','%s/%s'%(jid,nick))
- except:
- pass
- msg += L('\nLast seen:','%s/%s'%(jid,nick))
- msg = L('%s\n- in battle: %s','%s/%s'%(jid,nick)) % (msg, datetime.datetime.fromtimestamp(pdata[player_id]['last_battle_time']))
- msg = L('%s\n- online: %s','%s/%s'%(jid,nick)) % (msg, datetime.datetime.fromtimestamp(pdata[player_id]['logout_at']))
-
- except:
- msg = L('Impossible to get statistics','%s/%s'%(jid,nick))
- elif not pdata['status']:
- msg = L('Query error','%s/%s'%(jid,nick))
- else:
- msg = L('Player not found','%s/%s'%(jid,nick))
- else:
- msg = L('What?','%s/%s'%(jid,nick))
- send_msg(type,jid,nick,msg)
-
-def wotclan(type, jid, nick, text):
- text = text.strip().upper()
- if text:
- try:
- data = wot_api.fetch('wot/clan/list/', 'search=%s' % text)
- claninfo = [i for i in data if i['abbreviation'] == text]
- if claninfo:
- claninfo = claninfo[0]
- clid = claninfo['clan_id']
- owner = claninfo['owner_name']
- created_at = claninfo['created_at']
- abbrev = claninfo['abbreviation']
- data = wot_api.fetch('wot/clan/info/', 'clan_id=%s' % clid)
- claninfo2 = data[str(clid)]
- msg = L('Name: %s [%s]','%s/%s'%(jid,nick)) % (claninfo2['name'], abbrev)
- msg += L('\nOwner: %s','%s/%s'%(jid,nick)) % owner
- msg += L('\nCreated at: %s','%s/%s'%(jid,nick)) % time.ctime(created_at)
- msg += L('\nCount of members: %s','%s/%s'%(jid,nick)) % claninfo2['members_count']
- msg += L('\nMotto: %s','%s/%s'%(jid,nick)) % claninfo2['motto']
- msg += '\n%s' % claninfo2['description']
- else:
- msg = L('Clan not found','%s/%s'%(jid,nick))
- except:
- msg = L('Impossible to get info','%s/%s'%(jid,nick))
- else:
- msg = L('What?','%s/%s'%(jid,nick))
- send_msg(type,jid,nick,msg)
-
-global execute
-
-execute = [(3, 'wot', wot, 2, 'World of Tanks - info about user. Usage: wot [nick [tank]]'),
- (3, 'wotclan', wotclan, 2, 'World of Tanks - info about clan. Usage: wotclan clan')]