用户:SegFault:修订间差异
跳转到导航
跳转到搜索
无编辑摘要 |
无编辑摘要 |
||
| 第2行: | 第2行: | ||
from urllib.request import urlopen | from urllib.request import urlopen | ||
import json | import json | ||
url = 'http://login.jianniang.com/index/getInitConfigs' | |||
specialShipNames = [ '重庆', '奥希金斯', '信赖', '萝德尼' ] | |||
countryNames = [ '', '日本', '德国', '英国', '美国', '意大利', '法国', '苏联', '中国', '???' ] | |||
specialCountries = { '戈本':'土耳其', '德·鲁伊特':'荷兰', '苏赫巴托尔':'蒙古', '奥希金斯':'智利', '吸血鬼':'英国', '海达人':'加拿大', '奥丁':'冰岛' } | |||
shipTypeNames = [ '', '航空母舰', '轻型航空母舰', '装甲航母', '战列舰', 'BBV', '战列巡洋舰', '航空战列舰', \ | |||
'CAV', 'CLT', '轻巡洋舰', '浅水重炮舰', '驱逐舰', 'SSV', '潜艇', '重炮潜艇', '补给舰' ] | |||
rangeNames = [ '', '短', '中', '长', '超长' ] | |||
coreNames = { 10441:'驱逐', 10341:'巡洋', 10241:'战列', 10141:'航母', 10541:'潜艇' } | |||
remodelPostfix = '·改' | |||
specialPostfix = '(特殊)' | |||
canNotEquip = '不可装备' | |||
noEquipt = '无' | |||
aquire = '获得' | |||
day = '白天' | |||
night = '夜间' | |||
formation = '阵型' | |||
attack = '攻击' | |||
nightAttack = '夜战' | |||
damaged = '中破' | |||
vow = '誓约' | |||
desc = '简介' | |||
def getShipName(ship): | def getShipName(ship): | ||
name = ship['title'].strip() | name = ship['title'].strip() | ||
idx = int(ship['shipIndex']) | idx = int(ship['shipIndex']) | ||
if idx < 1000 or name in | if idx < 1000 or name in specialShipNames: | ||
return name | return name | ||
elif idx < 2000: | elif idx < 2000: | ||
return name + | return name + remodelPostfix | ||
else: | else: | ||
return name + | return name + specialPostfix | ||
def getShipAttr(ship, allShips, equipts): | def getShipAttr(ship, allShips, equipts): | ||
| 第22行: | 第46行: | ||
cap[i] = ship['capacityInit'][i] | cap[i] = ship['capacityInit'][i] | ||
eq = [ | eq = [ canNotEquip ] * 4 | ||
n = len(ship['equipment']) | n = len(ship['equipment']) | ||
for i in range(n): | for i in range(n): | ||
eq[i] = [ e['title'] for e in equipts if e['cid'] == ship['equipment'][i] ][0] | eq[i] = [ e['title'] for e in equipts if e['cid'] == ship['equipment'][i] ][0] | ||
for i in range(n, ship['equipmentNum']): | for i in range(n, ship['equipmentNum']): | ||
eq[i] = | eq[i] = noEquipt | ||
country = countryNames[int(ship['country'])] | |||
country = | if ship['title'] in specialCountries: | ||
country = specialCountries[ship['title']] | |||
if ship['title'] in | |||
country = | |||
ret = "ships['%s'] = {\n " % getShipName(ship) | ret = "ships['%s'] = {\n " % getShipName(ship) | ||
| 第39行: | 第61行: | ||
ret += "index=%s, " % int(ship['shipIndex']) | ret += "index=%s, " % int(ship['shipIndex']) | ||
ret += "rarity=%s, " % ship['star'] | ret += "rarity=%s, " % ship['star'] | ||
ret += "type='%s', " % shipTypeNames[ship['type']] | |||
ret += "type='%s', " % | |||
ret += "country='%s', " % country | ret += "country='%s', " % country | ||
ret += "class='%s', " % ship['classNo'] | ret += "class='%s', " % ship['classNo'] | ||
| 第57行: | 第78行: | ||
ret += "speed=%s, " % ship['speed'] | ret += "speed=%s, " % ship['speed'] | ||
ret += "luck=%s, " % ship['luck'] | ret += "luck=%s, " % ship['luck'] | ||
ret += "range='%s', " % rangeNames[ship['range']] | |||
ret += "range='%s', " % | |||
ret = ret[:-1] + '\n ' | ret = ret[:-1] + '\n ' | ||
| 第105行: | 第125行: | ||
ret += "mod='%s', " % getShipName(t[0]) | ret += "mod='%s', " % getShipName(t[0]) | ||
ret += "modLv=%s, " % ship['evoLevel'] | ret += "modLv=%s, " % ship['evoLevel'] | ||
ret += "coreType='%s', " % coreNames[ship['evoNeedItemCid']] | |||
ret += "coreType='%s', " % | |||
ret += "coreNum=%s, " % ship['evoNeedResource'][str(ship['evoNeedItemCid'])] | ret += "coreNum=%s, " % ship['evoNeedResource'][str(ship['evoNeedItemCid'])] | ||
ret += "mFuel=%s, " % mod['2'] | ret += "mFuel=%s, " % mod['2'] | ||
| 第114行: | 第133行: | ||
return ret[:-2] + '\n}\n' | return ret[:-2] + '\n}\n' | ||
def getDialogue(ship): | def getDialogue(ship): | ||
name = getShipName(ship) | name = getShipName(ship) | ||
ret = "text['" + name + "']= { }\n" | ret = "text['" + name + "'] = { }\n" | ||
ret += "text['" + name + "'][' | ret += "text['" + name + "']['" + aquire + "'] = '" + ship['getDialogue'].strip() + "'\n" | ||
if ship['mainDialogue'] and ship['mainDialogue'][0]: | if ship['mainDialogue'] and ship['mainDialogue'][0]: | ||
ret += "text['" + name + "'][' | ret += "text['" + name + "']['" + day + "1'] = '" + ship['mainDialogue'][0].strip() + "'\n" | ||
ret += "text['" + name + "'][' | ret += "text['" + name + "']['" + day + "2'] = '" + ship['mainDialogue'][1].strip() + "'\n" | ||
ret += "text['" + name + "'][' | ret += "text['" + name + "']['" + day + "3'] = '" + ship['mainDialogue'][2].strip() + "'\n" | ||
if ship['mainDialogue'] and ship['mainDialogue'][6]: | if ship['mainDialogue'] and ship['mainDialogue'][6]: | ||
ret += "text['" + name + "'][' | ret += "text['" + name + "']['" + night + "1'] = '" + ship['mainDialogue'][6].strip() + "'\n" | ||
ret += "text['" + name + "'][' | ret += "text['" + name + "']['" + night + "2'] = '" + ship['mainDialogue'][7].strip() + "'\n" | ||
ret += "text['" + name + "'][' | ret += "text['" + name + "']['" + night + "3'] = '" + ship['mainDialogue'][8].strip() + "'\n" | ||
if ship['formationDialogue']: | if ship['formationDialogue']: | ||
ret += "text['" + name + "'][' | ret += "text['" + name + "']['" + formation + "'] = '" + ship['formationDialogue'].strip() + "'\n" | ||
if ship['atkDialogue']: | if ship['atkDialogue']: | ||
ret += "text['" + name + "'][' | ret += "text['" + name + "']['" + attack + "'] = '" + ship['atkDialogue'].strip() + "'\n" | ||
if ship['nightAtkDialogue']: | if ship['nightAtkDialogue']: | ||
ret += "text['" + name + "'][' | ret += "text['" + name + "']['" + nightAttack + "'] = '" + ship['nightAtkDialogue'].strip() + "'\n" | ||
if ship['breakDialogue']: | if ship['breakDialogue']: | ||
ret += "text['" + name + "'][' | ret += "text['" + name + "']['" + damaged + "'] = '" + ship['breakDialogue'].strip() + "'\n" | ||
ret += "text['" + name + "'][' | ret += "text['" + name + "']['" + vow + "'] = '" + ship['vow'].strip() + "'\n" | ||
ret += "text['" + name + "'][' | ret += "text['" + name + "']['" + desc + "'] = '" + ship['desc'].strip() + "'\n" | ||
return ret + '\n' | return ret + '\n' | ||
| 第183行: | 第201行: | ||
for equipt in data['shipEquipmnt']: | for equipt in data['shipEquipmnt']: | ||
if equipt['picId'] == 998: continue | if equipt['picId'] == 998: continue | ||
if equipt['title'] == '喵': continue | if equipt['title'] == '喵' or equipt['title'] == '': continue | ||
f.write(getEquiptAttr(equipt)) | f.write(getEquiptAttr(equipt)) | ||
f.write('\n') | f.write('\n') | ||
| 第190行: | 第208行: | ||
def download(): | def download(): | ||
j = urlopen( | j = urlopen(url).read().decode('utf-8') | ||
return json.loads(j) | return json.loads(j) | ||
2016年10月3日 (一) 04:55的版本
from urllib.request import urlopen
import json
url = 'http://login.jianniang.com/index/getInitConfigs'
specialShipNames = [ '重庆', '奥希金斯', '信赖', '萝德尼' ]
countryNames = [ '', '日本', '德国', '英国', '美国', '意大利', '法国', '苏联', '中国', '???' ]
specialCountries = { '戈本':'土耳其', '德·鲁伊特':'荷兰', '苏赫巴托尔':'蒙古', '奥希金斯':'智利', '吸血鬼':'英国', '海达人':'加拿大', '奥丁':'冰岛' }
shipTypeNames = [ '', '航空母舰', '轻型航空母舰', '装甲航母', '战列舰', 'BBV', '战列巡洋舰', '航空战列舰', \
'CAV', 'CLT', '轻巡洋舰', '浅水重炮舰', '驱逐舰', 'SSV', '潜艇', '重炮潜艇', '补给舰' ]
rangeNames = [ '', '短', '中', '长', '超长' ]
coreNames = { 10441:'驱逐', 10341:'巡洋', 10241:'战列', 10141:'航母', 10541:'潜艇' }
remodelPostfix = '·改'
specialPostfix = '(特殊)'
canNotEquip = '不可装备'
noEquipt = '无'
aquire = '获得'
day = '白天'
night = '夜间'
formation = '阵型'
attack = '攻击'
nightAttack = '夜战'
damaged = '中破'
vow = '誓约'
desc = '简介'
def getShipName(ship):
name = ship['title'].strip()
idx = int(ship['shipIndex'])
if idx < 1000 or name in specialShipNames:
return name
elif idx < 2000:
return name + remodelPostfix
else:
return name + specialPostfix
def getShipAttr(ship, allShips, equipts):
st = ship['strengthenTop']
exp = ship['strengthenLevelUpExp']
cap = [ 0 ] * 4
if ship['capacityInit']:
for i in range(len(ship['capacityInit'])):
cap[i] = ship['capacityInit'][i]
eq = [ canNotEquip ] * 4
n = len(ship['equipment'])
for i in range(n):
eq[i] = [ e['title'] for e in equipts if e['cid'] == ship['equipment'][i] ][0]
for i in range(n, ship['equipmentNum']):
eq[i] = noEquipt
country = countryNames[int(ship['country'])]
if ship['title'] in specialCountries:
country = specialCountries[ship['title']]
ret = "ships['%s'] = {\n " % getShipName(ship)
ret += "index=%s, " % int(ship['shipIndex'])
ret += "rarity=%s, " % ship['star']
ret += "type='%s', " % shipTypeNames[ship['type']]
ret += "country='%s', " % country
ret += "class='%s', " % ship['classNo']
ret = ret[:-1] + '\n '
ret += "hp=%s, " % ship['hp']
ret += "atk=%s, " % ship['atk']
ret += "tpd=%s, " % ship['torpedo']
ret += "def=%s, " % ship['def']
ret += "aa=%s, " % ship['airDef']
ret += "eva=%s, " % ship['miss']
ret += "as=%s, " % ship['antisub']
ret += "rec=%s, " % ship['radar']
ret += "speed=%s, " % ship['speed']
ret += "luck=%s, " % ship['luck']
ret += "range='%s', " % rangeNames[ship['range']]
ret = ret[:-1] + '\n '
ret += "atkMax=%s, " % (int(ship['atk']) + st['atk'] // exp)
ret += "tpdMax=%s, " % (int(ship['torpedo']) + st['torpedo'] // exp)
ret += "defMax=%s, " % (ship['def'] + st['def'] // exp)
ret += "aaMax=%s, " % (int(ship['airDef']) + st['air_def'] // exp)
ret += "evaMax=%s, " % ship['missMax']
ret += "asMax=%s, " % ship['antisubMax']
ret += "recMax=%s, " % ship['radarMax']
ret = ret[:-1] + '\n '
ret += "cap1=%s, " % cap[0]
ret += "cap2=%s, " % cap[1]
ret += "cap3=%s, " % cap[2]
ret += "cap4=%s, " % cap[3]
ret += "eq1='%s', " % eq[0]
ret += "eq2='%s', " % eq[1]
ret += "eq3='%s', " % eq[2]
ret += "eq4='%s', " % eq[3]
ret = ret[:-1] + '\n '
ret += "sFuel=%s, " % ship['maxOil']
ret += "sAmmo=%s, " % ship['maxAmmo']
ret += "rFuel=%s, " % ship['repairOilModulus']
ret += "rSteel=%s, " % ship['repairSteelModulus']
ret += "sAtk=%s, " % ship['strengthenSupplyExp']['atk']
ret += "sTpd=%s, " % ship['strengthenSupplyExp']['torpedo']
ret += "sDef=%s, " % ship['strengthenSupplyExp']['def']
ret += "sAa=%s, " % ship['strengthenSupplyExp']['air_def']
ret += "dFuel=%s, " % ship['dismantle']['2']
ret += "dAmmo=%s, " % ship['dismantle']['3']
ret += "dSteel=%s, " % ship['dismantle']['4']
ret += "dBaux=%s, " % ship['dismantle']['9']
t = [ s for s in allShips if int(s['shipIndex']) - int(ship['shipIndex']) == 1000 ]
if len(t) != 0:
mod = { '2':0, '3':0, '4':0, '9':0 }
for k,v in ship['evoNeedResource'].items():
mod[k] = v
ret = ret[:-1] + '\n '
ret += "mod='%s', " % getShipName(t[0])
ret += "modLv=%s, " % ship['evoLevel']
ret += "coreType='%s', " % coreNames[ship['evoNeedItemCid']]
ret += "coreNum=%s, " % ship['evoNeedResource'][str(ship['evoNeedItemCid'])]
ret += "mFuel=%s, " % mod['2']
ret += "mAmmo=%s, " % mod['3']
ret += "mSteel=%s, " % mod['4']
ret += "mBaux=%s, " % mod['9']
return ret[:-2] + '\n}\n'
def getDialogue(ship):
name = getShipName(ship)
ret = "text['" + name + "'] = { }\n"
ret += "text['" + name + "']['" + aquire + "'] = '" + ship['getDialogue'].strip() + "'\n"
if ship['mainDialogue'] and ship['mainDialogue'][0]:
ret += "text['" + name + "']['" + day + "1'] = '" + ship['mainDialogue'][0].strip() + "'\n"
ret += "text['" + name + "']['" + day + "2'] = '" + ship['mainDialogue'][1].strip() + "'\n"
ret += "text['" + name + "']['" + day + "3'] = '" + ship['mainDialogue'][2].strip() + "'\n"
if ship['mainDialogue'] and ship['mainDialogue'][6]:
ret += "text['" + name + "']['" + night + "1'] = '" + ship['mainDialogue'][6].strip() + "'\n"
ret += "text['" + name + "']['" + night + "2'] = '" + ship['mainDialogue'][7].strip() + "'\n"
ret += "text['" + name + "']['" + night + "3'] = '" + ship['mainDialogue'][8].strip() + "'\n"
if ship['formationDialogue']:
ret += "text['" + name + "']['" + formation + "'] = '" + ship['formationDialogue'].strip() + "'\n"
if ship['atkDialogue']:
ret += "text['" + name + "']['" + attack + "'] = '" + ship['atkDialogue'].strip() + "'\n"
if ship['nightAtkDialogue']:
ret += "text['" + name + "']['" + nightAttack + "'] = '" + ship['nightAtkDialogue'].strip() + "'\n"
if ship['breakDialogue']:
ret += "text['" + name + "']['" + damaged + "'] = '" + ship['breakDialogue'].strip() + "'\n"
ret += "text['" + name + "']['" + vow + "'] = '" + ship['vow'].strip() + "'\n"
ret += "text['" + name + "']['" + desc + "'] = '" + ship['desc'].strip() + "'\n"
return ret + '\n'
def getEquiptAttr(e):
ret = "equipts['%s'] = { " % e['title']
ret += 'index=%s, rarity=%s' % (int(e['equipIndex']), e['star'])
if int(e['atk']) != 0: ret += ', atk=%s' % e['atk']
if int(e['def']) != 0: ret += ', def=%s' % e['def']
if int(e['torpedo']) != 0: ret += ', tpd=%s' % e['torpedo']
if int(e['antisub']) != 0: ret += ', as=%s' % e['antisub']
if int(e['radar']) != 0: ret += ', rec=%s' % e['radar']
if int(e['hit']) != 0: ret += ', acc=%s' % e['hit']
if int(e['range']) != 0: ret += ', range=%s' % e['range']
if int(e['miss']) != 0: ret += ', eva=%s' % e['miss']
if int(e['luck']) != 0: ret += ', luck=%s' % e['luck']
if int(e['aircraftAtk']) != 0: ret += ', bomb=%s' % e['aircraftAtk']
if int(e['airDef']) != 0: ret += ', aa=%s' % e['airDef']
if float(e['airDefCorrect']) != 0: ret += ', aac=%d' % (float(e['airDefCorrect']) * 100)
if int(e['aluminiumUse']) != 0: ret += ', baux=%s' % e['aluminiumUse']
return ret + ' }'
def printShips(data):
ships = [ s for s in data['shipCard'] if int(s['npc']) == 0 ]
f = open('台词.txt', 'w')
f.write('text = { }\n\n')
for s in ships:
f.write(getDialogue(s))
f.write('return text')
f.close()
ships = [ s for s in data['shipCard'] if int(s['npc']) == 0 and int(s['shipIndex']) < 2000 ]
f = open('属性.txt', 'w')
f.write('ships = { }\n\n')
for s in ships:
f.write(getShipAttr(s, ships, data['shipEquipmnt']))
f.write('\n')
f.write('return ships')
f.close()
f = open('装备.txt', 'w')
f.write('equipts = { }\n\n')
for equipt in data['shipEquipmnt']:
if equipt['picId'] == 998: continue
if equipt['title'] == '喵' or equipt['title'] == '': continue
f.write(getEquiptAttr(equipt))
f.write('\n')
f.write('\nreturn equipts')
f.close()
def download():
j = urlopen(url).read().decode('utf-8')
return json.loads(j)
def run():
data = download()
printShips(data)