from ctypes import * from .panel import * from .property import * from PublicReference.choise.选项设置_buff import * from PublicReference.common import * from PublicReference.utils.common import * from PublicReference.view.DialogRegister import DefaultDialogRegister from PublicReference.equipment.冒险家名望 import * class 角色窗口(窗口): def __init__(self): self.初始属性: 辅助角色属性 = None self.护石选项 = [ '无', 'BUFF力量、智力+2%', 'BUFF力量、智力+4%', 'BUFF力量、智力+6%', 'BUFF力量、智力+8%' ] self.登记启用 = False super().__init__() store.bind(self, "登记启用", "/{type}/data/register_enable") def 称号描述(self): temp = '' temp += '' + trans( self.称号.currentData()) + '
' temp += 称号列表[self.称号.currentIndex()].装备描述_BUFF(self.角色属性B)[:-4] temp += '
' return temp def 宠物描述(self): temp = '' temp += '' + self.宠物.currentData( ) + '
' temp += 宠物列表[self.宠物.currentIndex()].装备描述_BUFF(self.角色属性B)[:-4] temp += '
' return temp def 界面(self): self.setFixedSize(1120, 680) self.窗口高度 = 680 self.行高 = 30 self.输出背景图片 = QPixmap(trans("./ResourceFiles/img/输出背景_BUFF.png")) super().界面() def 界面1(self): super().界面1() # increase_counter(ga_category="buffer界面", name="装备/选择/打造") for i in 称号列表: self.称号.addItem(trans(i.显示名称), i.名称) for i in 宠物列表: self.宠物.addItem(trans(i.显示名称), i.名称) 标签 = QLabel(self.main_frame1) 人物 = QPixmap('./ResourceFiles/' + self.角色属性A.实际名称 + "/职业.png") 标签.setPixmap(人物) 标签.resize(191, 523) 标签.move(922 + int((191 - 人物.width()) / 2), 10) self.百变怪选项 = QCheckBox(trans('百变怪'), self.main_frame1) self.百变怪选项.move(660, 613) self.百变怪选项.resize(80, 24) self.百变怪选项.setToolTip( '{}'.format('仅在极速模式和套装模式下生效')) self.百变怪选项.setStyleSheet(复选框样式) self.计算模式选择 = MyQComboBox(self.main_frame1) self.计算模式选择.addItems(['计算模式:极速模式', '计算模式:套装模式', '计算模式:单件模式']) self.计算模式选择.move(750, 613) self.计算模式选择.resize(235, 24) self.计算模式选择.setStyleSheet(下拉框样式) self.计算模式选择.setToolTip('{}'.format( trans( '极速模式:533和3332(散搭) (不含智慧产物)

套装模式:533、3332(散搭)和3233(双防具) (不含智慧产物)

单件模式:所有组合 (不含百变怪)' ))) self.切装模式选项 = QCheckBox(trans('一觉切1件装备'), self.main_frame1) self.切装模式选项.move(875, 580) self.切装模式选项.resize(105, 24) self.切装模式选项.setToolTip('{}'.format( trans('仅对极速/套装模式中的3332散搭组合生效

默认相同打造'))) self.切装模式选项.setStyleSheet(复选框样式) self.神话排名选项 = QCheckBox(trans('神话排名模式'), self.main_frame1) self.神话排名选项.move(990, 580) self.神话排名选项.resize(100, 24) self.神话排名选项.setToolTip('{}'.format( trans('仅显示有神话的组合,且每件神话装备只会出现一次'))) self.神话排名选项.setStyleSheet(复选框样式) self.最大使用线程数 = thread_num self.线程数选择 = MyQComboBox(self.main_frame1) self.线程数选择.move(660, 580) self.线程数选择.resize(80, 24) for i in range(thread_num, 0, -1): self.线程数选择.addItem(trans('进程:') + str(i)) if thread_num > 1: self.线程数选择.setCurrentIndex(1) self.禁用存档 = QCheckBox(trans('禁用自动存档'), self.main_frame1) self.禁用存档.move(990, 545) self.禁用存档.resize(100, 24) self.禁用存档.setStyleSheet(复选框样式) 重置按钮 = QPushButton(trans('全局重置'), self.main_frame1) 重置按钮.clicked.connect(lambda state: self.全局重置()) 重置按钮.move(880, 545) 重置按钮.resize(100, 24) 重置按钮.setStyleSheet(按钮样式) self.排行参数 = MyQComboBox(self.main_frame1) self.排行参数.addItems(['提升率排行', '面板排行', '力智排行', '三攻排行']) self.排行参数.move(770, 545) self.排行参数.resize(100, 24) self.存档选择 = MyQComboBox(self.main_frame1) self.存档选择.move(660, 545) self.存档选择.resize(90, 24) self.存档选择.currentIndexChanged.connect(lambda state: self.存档更换()) # 一键修正按钮添加 self.一键站街设置输入.append(QLineEdit(self.main_frame1)) self.一键站街设置输入[0].setAlignment(Qt.AlignCenter) self.一键站街设置输入[0].setStyleSheet(输入框样式) self.一键站街设置输入[0].resize(45, 24) self.一键站街设置输入[0].move(750, 580) self.一键修正按钮 = QPushButton(trans('一键修正'), self.main_frame1) self.一键修正按钮.clicked.connect(lambda state: self.一键修正()) self.一键修正按钮.move(800, 580) self.一键修正按钮.resize(70, 24) self.一键修正按钮.setStyleSheet(按钮样式) 增幅选项 = [] for i in range(12): combo = self.装备打造选项[i + 12] combo.currentIndexChanged.connect( lambda: store.emit("/{type}/data/amplifies")) 增幅选项.append(combo) store.compute("/{type}/data/amplifies", lambda: [i.currentIndex() for i in 增幅选项], None) def 界面2(self): # increase_counter(ga_category="buffer界面", name="技能/符文/其它") # 第二个布局界面 self.main_frame2 = QWidget() # 技能等级、次数输入 self.护石第一栏 = MyQComboBox(self.main_frame2) self.护石第二栏 = MyQComboBox(self.main_frame2) self.护石第三栏 = MyQComboBox(self.main_frame2) self.等级调整 = [] self.次数输入 = [] num = 0 for skill in self.角色属性A.技能表.values(): level_combo = MyQComboBox(self.main_frame2) enable_combo = MyQComboBox(self.main_frame2) level_min = 0 if skill.所在等级 == 50 or skill.所在等级 == 85 else -skill.基础等级 level_max = skill.等级上限 - skill.基础等级 + 1 for j in range(level_min, level_max): level_combo.addItem(str(j)) for j in range(2): enable_combo.addItem(str(j)) enable_combo.activated.connect( lambda state, index=num: self.BUFF次数输入填写(index)) self.等级调整.append(level_combo) self.次数输入.append(enable_combo) num += 1 横坐标 = 30 纵坐标 = 0 横坐标偏移量 = 60 纵坐标偏移量 = 30 词条框宽度 = 48 行高 = 20 counter = 0 for i in trans(['契约满级', '等级调整', '是否适用']): x = QLabel(i, self.main_frame2) x.move(横坐标 + 横坐标偏移量 - 30 + 50 * counter, 纵坐标 + 5) x.setStyleSheet(标签样式) counter += 1 纵坐标 += 20 num = 0 for skill in self.角色属性A.技能表.values(): x = QLabel(self.main_frame2) x.setPixmap(self.技能图片[num]) x.resize(28, 28) tempstr = '' + \ skill.名称 + skill.备注 + '
' tempstr += '所在等级:' + str(skill.所在等级) + '
' tempstr += '等级上限:' + str(skill.等级上限) + '
' x.setToolTip(tempstr) x.move(横坐标, 纵坐标 + 7) 横坐标 += 40 x = QLabel('Lv' + str(skill.基础等级), self.main_frame2) x.resize(40, 28) x.move(横坐标, 纵坐标 + 7) x.setStyleSheet(标签样式) 横坐标 += 40 self.等级调整[num].resize(词条框宽度, 行高) self.等级调整[num].move(横坐标, 纵坐标 + 10) 横坐标 -= 80 纵坐标 += 纵坐标偏移量 num += 1 横坐标 = 横坐标 + 80 + 50 纵坐标 = 30 for i in range(len(self.角色属性A.技能表)): self.次数输入[i].resize(词条框宽度, 行高) self.次数输入[i].move(横坐标, 纵坐标) 纵坐标 += 纵坐标偏移量 self.护石第一栏.addItems(self.护石选项) self.护石第二栏.addItems(self.护石选项) self.护石第三栏.addItems(self.护石选项) self.护石栏 = [self.护石第一栏, self.护石第二栏, self.护石第三栏] 横坐标 = 395 纵坐标 = 20 行高 = 18 x = QLabel(trans("护石") + "Ⅰ", self.main_frame2) x.move(横坐标, 纵坐标) x.setStyleSheet(标签样式) 纵坐标 += 21 self.护石第一栏.move(横坐标, 纵坐标) self.护石第一栏.resize(130, 行高) 横坐标 = 565 纵坐标 = 20 x = QLabel(trans("护石") + "Ⅱ", self.main_frame2) x.move(横坐标, 纵坐标) x.setStyleSheet(标签样式) 纵坐标 += 21 self.护石第二栏.move(横坐标, 纵坐标) self.护石第二栏.resize(130, 行高) 横坐标 = 395 纵坐标 = 70 行高 = 18 x = QLabel(trans("护石") + "Ⅲ", self.main_frame2) x.move(横坐标, 纵坐标) x.setStyleSheet(标签样式) 纵坐标 += 21 self.护石第三栏.move(横坐标, 纵坐标) self.护石第三栏.resize(130, 行高) self.辟邪玉选择 = [] self.辟邪玉数值 = [] x = QLabel(trans("辟邪玉选择"), self.main_frame2) x.move(395, 115 + 5) x.setStyleSheet(标签样式) for i in range(4): x = MyQComboBox(self.main_frame2) for j in 辟邪玉列表: # '[' + str(j.编号) + ']' + x.addItem(j.名称) x.resize(200, 20) x.move(395, 140 + i * 25) x.currentIndexChanged.connect( lambda state, index=i: self.辟邪玉数值选项更新(index)) self.辟邪玉选择.append(x) y = MyQComboBox(self.main_frame2) y.resize(80, 20) y.move(615, 140 + i * 25) self.辟邪玉数值.append(y) self.复选框列表 = [] for i in 选项设置列表: self.复选框列表.append(QCheckBox(trans(i.名称), self.main_frame2)) 横坐标 = 395 纵坐标 = 240 x = QLabel(trans("武器融合:"), self.main_frame2) x.move(横坐标, 纵坐标 + 5) x.resize(300, 20) x.setStyleSheet(标签样式) self.希洛克武器选择 = MyQComboBox(self.main_frame2) self.希洛克武器选择.addItems(['武器词条:无', '自适应最高值', '自选词条数值']) self.希洛克武器选择.resize(120, 20) self.希洛克武器选择.move(横坐标 + 60, 纵坐标 + 5) self.希洛克武器选择.currentIndexChanged.connect( lambda state: self.希洛克武器选择更新()) 纵坐标 += 10 self.武器融合属性A = MyQComboBox(self.main_frame2) for j in 武器属性A列表: self.武器融合属性A.addItem(j.固定属性描述) self.武器融合属性A.resize(60, 20) self.武器融合属性A.move(横坐标, 纵坐标 + 25) self.武器融合属性A1 = MyQComboBox(self.main_frame2) self.武器融合属性A1.resize(90 + 75, 20) self.武器融合属性A1.move(横坐标 + 110 - 50 + 5, 纵坐标 + 25) self.武器融合属性A2 = MyQComboBox(self.main_frame2) self.武器融合属性A2.resize(50, 20) self.武器融合属性A2.move(横坐标 + 205 + 20 + 10, 纵坐标 + 25) self.武器融合属性A.currentIndexChanged.connect( lambda: self.希洛克武器随机词条更新(self.武器融合属性A.currentIndex())) x = QLabel(trans("择优方向"), self.main_frame2) x.move(横坐标 + 335, 纵坐标 + 15) x.resize(300, 20) x.setStyleSheet(标签样式) self.觉醒择优方向 = MyQComboBox(self.main_frame2) self.觉醒择优方向.addItem('自选觉醒择优系数') self.觉醒择优方向.addItem('续航向:觉醒0.7系数') self.觉醒择优方向.addItem('爆发向:觉醒1.0系数') self.觉醒择优方向.resize(138, 20) self.觉醒择优方向.move(横坐标 + 300, 纵坐标 + 40) self.觉醒择优方向.currentIndexChanged.connect( lambda index: self.调整觉醒择优方向(index)) self.觉醒择优系数 = MyQComboBox(self.main_frame2) self.觉醒择优系数.resize(138, 20) self.觉醒择优系数.move(横坐标 + 440, 纵坐标 + 40) for i in range(21): self.觉醒择优系数.addItem(str(round(i / 10, 1))) self.觉醒择优系数.setCurrentIndex(10) 纵坐标 = 纵坐标 + 30 self.武器融合属性B = MyQComboBox(self.main_frame2) for j in 武器属性B列表: self.武器融合属性B.addItem(j.固定属性描述) self.武器融合属性B.resize(60, 20) self.武器融合属性B.move(横坐标, 纵坐标 + 25) self.武器融合属性B1 = MyQComboBox(self.main_frame2) self.武器融合属性B1.resize(90 + 75, 20) self.武器融合属性B1.move(横坐标 + 110 - 50 + 5, 纵坐标 + 25) self.武器融合属性B2 = MyQComboBox(self.main_frame2) self.武器融合属性B2.resize(50, 20) self.武器融合属性B2.move(横坐标 + 205 + 20 + 10, 纵坐标 + 25) self.武器融合属性B.currentIndexChanged.connect( lambda: self.希洛克武器随机词条更新(self.武器融合属性B.currentIndex(), 1)) 纵坐标 = 纵坐标 + 60 标签 = QLabel(trans('黑鸦遴选词条'), self.main_frame2) 标签.setStyleSheet(标签样式 + 'QLabel{font-size:13px;}') 标签.resize(410, 20) 标签.move(横坐标, 纵坐标) 标签.setAlignment(Qt.AlignCenter) 名称 = trans(['武  器', '戒  指', '辅助装备', '下  装']) 纵坐标 = 纵坐标 + 25 self.黑鸦词条选项 = [] for i in range(4): this_index = i x = QLabel(名称[i], self.main_frame2) x.setStyleSheet(标签样式 + 'QLabel{font-size:13px;};text-align: justify;') # x.setStyleSheet('text-align: justify') x.resize(55, 20) x.move(横坐标, 纵坐标 + i * 25) tem = [] tem.append(MyQComboBox(self.main_frame2)) if i == 0: tem[0].addItems(['无', '计算最高', '自选数值', '自选数值-觉醒']) tem[0].resize(91, 20) tem[0].move(横坐标 + 60, 纵坐标 + 25 * i) tem[0].currentIndexChanged.connect( lambda state, index=i: self.黑鸦词条更新(index)) else: tem[0].addItems(['无', '计算最高', '自选数值']) tem[0].resize(91, 20) tem[0].move(横坐标 + 60, 纵坐标 + 25 * i) tem[0].currentIndexChanged.connect( lambda state, index=i: self.黑鸦词条更新(index)) tem.append(MyQComboBox(self.main_frame2)) tem[1].resize(60, 20) tem[1].move(横坐标 + 156, 纵坐标 + 25 * i) tem.append(MyQComboBox(self.main_frame2)) tem[2].resize(90 + 75, 20) tem[2].move(横坐标 + 266 - 50 + 5, 纵坐标 + 25 * i) tem.append(MyQComboBox(self.main_frame2)) tem[3].resize(50, 20) tem[3].move(横坐标 + 361 + 20 + 10, 纵坐标 + 25 * i) if i > 0: for item in 装备变换属性列表: tem[1].addItem(item.固定属性描述) tem[1].currentIndexChanged.connect( lambda state, index=i: self.黑鸦随机词条更新(index, 1)) else: for item in 武器变换属性列表: tem[1].addItem(item.固定属性描述) tem[1].currentIndexChanged.connect( lambda state, index=i: self.黑鸦随机词条更新(index)) self.黑鸦词条选项.append(tem) self.黑鸦词条更新(i) 横坐标 = 740 纵坐标 = 30 self.希洛克套装按钮 = [] self.希洛克单件按钮 = [] self.希洛克遮罩透明度 = [] self.希洛克选择状态 = [0] * 15 count = 0 for i in 希洛克套装: self.希洛克套装按钮.append(QPushButton(trans(i), self.main_frame2)) self.希洛克套装按钮[count].setStyleSheet(按钮样式) self.希洛克套装按钮[count].resize(50, 22) self.希洛克套装按钮[count].move(横坐标, 纵坐标 + 3 + count * 40) self.希洛克套装按钮[count].clicked.connect( lambda state, index=(count + 1) * 100: self.希洛克选择(index)) for j in range(3): 序号 = count * 3 + j 图片 = QLabel(self.main_frame2) 图片.setPixmap( QPixmap('./ResourceFiles/img/希洛克/' + str(序号) + '.png')) 图片.resize(28, 28) 图片.move(横坐标 + 60 + j * 30, 纵坐标 + count * 40) self.希洛克遮罩透明度.append(QGraphicsOpacityEffect()) self.希洛克遮罩透明度[序号].setOpacity(0.5) siroco_button = QPushButton(self.main_frame2) siroco_button.setStyleSheet("background-color: rgb(0, 0, 0)") siroco_button.resize(28, 28) siroco_button.move(横坐标 + 60 + j * 30, 纵坐标 + count * 40) siroco_button.setGraphicsEffect(self.希洛克遮罩透明度[序号]) siroco_button.clicked.connect( lambda state, index=序号: self.希洛克选择(index)) self.希洛克单件按钮.append(siroco_button) count += 1 横坐标 = 395 纵坐标 = 480 self.奥兹玛套装按钮 = [] self.奥兹玛单件按钮 = [] self.奥兹玛遮罩透明度 = [] self.奥兹玛选择状态 = [0] * 25 T = deepcopy(self.初始属性) T.装备描述 = 1 count = 0 for i in 奥兹玛套装: self.奥兹玛套装按钮.append(QPushButton(trans(i), self.main_frame2)) self.奥兹玛套装按钮[count].setStyleSheet(按钮样式) self.奥兹玛套装按钮[count].resize(75, 22) self.奥兹玛套装按钮[count].move(横坐标, 纵坐标 + 3 + count * 32) self.奥兹玛套装按钮[count].clicked.connect( lambda state, index=(count + 1) * 100: self.奥兹玛选择(index)) ozma = OzmaList[count] for j in range(5): 序号 = count * 5 + j 图片 = QLabel(self.main_frame2) 图片.setPixmap( QPixmap('./ResourceFiles/img/奥兹玛/' + str(序号) + '.png')) 图片.resize(28, 28) 图片.move(横坐标 + 60 + j * 30 + 20, 纵坐标 + count * 32) self.奥兹玛遮罩透明度.append(QGraphicsOpacityEffect()) self.奥兹玛遮罩透明度[序号].setOpacity(0.5) tooltip = trans('{奥兹玛融合属性}:
') tooltip += ozma(T) tooltip = tooltip_trim(tooltip) ozma_button = QPushButton(self.main_frame2) ozma_button.setStyleSheet("background-color: rgb(0, 0, 0)") ozma_button.setToolTip(tooltip) ozma_button.resize(28, 28) ozma_button.move(横坐标 + 60 + j * 30 + 20, 纵坐标 + count * 32) ozma_button.setGraphicsEffect(self.奥兹玛遮罩透明度[序号]) ozma_button.clicked.connect( lambda state, index=序号: self.奥兹玛选择(index)) self.奥兹玛单件按钮.append(ozma_button) count += 1 counter = 0 for i in self.复选框列表: i.setStyleSheet(复选框样式) i.resize(180, 20) i.move(930, 25 + counter * 28) if counter < 1: i.setChecked(True) counter += 1 self.排行选项 = [] for i in range(4): self.排行选项.append(MyQComboBox(self.main_frame2)) self.排行选项[0].setEditable(True) for i in [ 3000, 3500, 4000, 4500, 5000, 5500, 6000, 7000, 8000, 10000, 12000, 15000, 20000 ]: self.排行选项[0].addItem(trans('C力智:') + str(i)) self.排行选项[0].setCurrentIndex(4) self.排行选项[1].setEditable(True) for i in [ 2000, 2100, 2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900, 3000, 3100, 3200, 3300, 3400, 3500, 3600, 3700, 3800, 3900, 4000, 4200, 4400, 4600, 4800, 5000 ]: self.排行选项[1].addItem(trans('C三攻:') + str(i)) self.排行选项[1].setCurrentIndex(10) for i in ['物理百分比', '魔法百分比', '物理固伤', '魔法固伤']: self.排行选项[2].addItem(i) for i in ['无系统奶', '希洛克系统奶', '黑鸦系统奶']: self.排行选项[3].addItem(i) counter = 0 for i in self.排行选项: i.resize(100, 20) i.move(990, 490 + counter * 28) counter += 1 self.计算按钮2 = QPushButton(trans('开始计算'), self.main_frame2) self.计算按钮2.clicked.connect(lambda state: self.计算()) self.计算按钮2.move(990, 610) self.计算按钮2.resize(100, 30) self.计算按钮2.setStyleSheet(按钮样式) self.觉醒选择状态 = 2 self.一觉遮罩透明度 = QGraphicsOpacityEffect() self.一觉遮罩透明度.setOpacity(0.5) self.二觉遮罩透明度 = QGraphicsOpacityEffect() self.二觉遮罩透明度.setOpacity(0.0) x = 250 y = 230 self.觉醒选择 = QLabel(self.main_frame2) self.觉醒选择.setPixmap(QPixmap('./ResourceFiles/img/觉醒选择.png')) self.觉醒选择.resize(120, 100) self.觉醒选择.move(x, y - 20) self.一觉图片 = QLabel(self.main_frame2) self.一觉图片.setPixmap(self.技能图片[self.初始属性.一觉序号]) self.一觉图片.resize(28, 28) self.一觉图片.move(x + 7, y + 8) self.二觉图片 = QLabel(self.main_frame2) self.二觉图片.setPixmap(self.技能图片[self.初始属性.二觉序号]) self.二觉图片.resize(28, 28) self.二觉图片.move(x + 52, y + 8) self.一觉遮罩 = QPushButton(self.main_frame2) self.一觉遮罩.resize(38, 50) self.一觉遮罩.move(x + 2, y + 5) self.一觉遮罩.setStyleSheet( "QPushButton{background-color:rgb(0,0,0);border:1px;border-radius:3px;}" ) self.一觉遮罩.setGraphicsEffect(self.一觉遮罩透明度) self.一觉遮罩.clicked.connect(lambda state, index=1: self.强化觉醒选择(index)) self.二觉遮罩 = QPushButton(self.main_frame2) self.二觉遮罩.resize(38, 50) self.二觉遮罩.move(x + 47, y + 5) self.二觉遮罩.setStyleSheet( "QPushButton{background-color:rgb(0,0,0);border:1px;border-radius:3px;}" ) self.二觉遮罩.setGraphicsEffect(self.二觉遮罩透明度) self.二觉遮罩.clicked.connect(lambda state, index=2: self.强化觉醒选择(index)) self.武器融合属性A.setEnabled(False) self.武器融合属性A1.setEnabled(False) self.武器融合属性A2.setEnabled(False) self.武器融合属性A.setStyleSheet(下拉框样式) self.武器融合属性A1.setStyleSheet(下拉框样式) self.武器融合属性A2.setStyleSheet(下拉框样式) # 武器融合属性B禁用 self.武器融合属性B.setEnabled(False) self.武器融合属性B1.setEnabled(False) self.武器融合属性B2.setEnabled(False) self.武器融合属性B.setStyleSheet(下拉框样式) self.武器融合属性B1.setStyleSheet(下拉框样式) self.武器融合属性B2.setStyleSheet(下拉框样式) def 界面3(self): # increase_counter(ga_category="buffer界面", name="基础/细节/修正") # 第三个布局界面 self.main_frame3 = QWidget() self.属性设置输入 = [] self.技能设置输入 = [] 宽度 = 43 列名称1 = trans(["智力", "体力", "精神"]) 行名称1 = trans([ "工会属性", "训练官BUFF", "戒指", "婚房", "冒险团", "晶体契约", "收集箱", "勋章", "名称装饰卡", "快捷栏纹章", "宠物装备-红", " 宠物装备-蓝 ", " 宠物装备-绿 ", "宠物附魔", "皮肤", "站街修正", "进图修正", "登记修正", '' ]) column_count = len(列名称1) row_count = len(行名称1) 名称 = QLabel(trans("基础细节"), self.main_frame3) 名称.setAlignment(Qt.AlignCenter) 名称.setStyleSheet(标签样式) 名称.resize(80, 25) 名称.move(10, 5) for i in range(column_count): 名称 = QLabel(列名称1[i], self.main_frame3) 名称.setAlignment(Qt.AlignCenter) 名称.setStyleSheet(标签样式) 名称.resize(宽度, 25) 名称.move(95 + i * (宽度 + 5), 5) Linelist = [[], [], []] for j in range(row_count): 名称 = QLabel(行名称1[j], self.main_frame3) 名称.setAlignment(Qt.AlignCenter) 名称.setStyleSheet(标签样式) 名称.resize(80, 25) 名称.move(10, 35 + j * 30) for i in range(column_count): Linelist[i].append(QLineEdit(self.main_frame3)) Linelist[i][j].setAlignment(Qt.AlignCenter) Linelist[i][j].setStyleSheet(输入框样式) if 行名称1[j] != '': Linelist[i][j].resize(宽度, 22) Linelist[i][j].move(95 + i * (宽度 + 5), 35 + j * 30) else: Linelist[i][j].resize(0, 0) self.属性设置输入.extend(Linelist) 列名称2 = trans(["智力", "体力", "精神", "徽章智", "徽章体", "徽章精", "技能等级及选项"]) 行名称2 = trans([ "上衣", "下装", "头肩", "腰带", "鞋", "手镯", "项链", "戒指", "左槽", "右槽", "耳环", "武器", "BUFF等级补正", "穿戴称号", "穿戴光环", "武器装扮", "时装", "宠物登记补正", "光环登记补正" ]) self.列名称 = 列名称1 + 列名称2 self.行名称 = 行名称1 + 行名称2 名称 = QLabel(trans("附魔&徽章"), self.main_frame3) 名称.setAlignment(Qt.AlignCenter) 名称.setStyleSheet(标签样式) 名称.resize(80, 25) 名称.move(7 * 宽度, 5) for i in range(7): 名称 = QLabel(列名称2[i], self.main_frame3) 名称.setAlignment(Qt.AlignCenter) 名称.setStyleSheet(标签样式) if i == 6: 名称.resize(150, 25) else: 名称.resize(宽度, 25) 名称.move(90 + 7 * 宽度 + i * (宽度 + 5), 5) for j in range(19): 名称 = QLabel(行名称2[j], self.main_frame3) 名称.setAlignment(Qt.AlignCenter) 名称.setStyleSheet(标签样式) 名称.resize(80, 25) 名称.move(7 * 宽度, 35 + j * 30) for i in range(6): Linelist = [] for j in range(19): Linelist.append(QLineEdit(self.main_frame3)) Linelist[j].setAlignment(Qt.AlignCenter) Linelist[j].setStyleSheet(输入框样式) Linelist[j].resize(宽度, 22) Linelist[j].move(90 + 7 * 宽度 + i * (宽度 + 5), 35 + j * 30) self.属性设置输入.append(Linelist) for j in range(19): self.技能设置输入.append(MyQComboBox(self.main_frame3)) self.技能设置输入[j].addItem('无') self.技能设置输入[j].setStyleSheet(下拉框样式) self.技能设置输入[j].resize(150, 22) self.技能设置输入[j].move(90 + 7 * 宽度 + 6 * (宽度 + 5), 35 + j * 30) for j in [2, 3, 4]: self.技能设置输入[j].addItems(['Lv1-30(主动)Lv+1', 'Lv1-50(主动)Lv+1']) self.技能设置输入[2].addItems(['Lv1-35(主动)Lv+1', 'Lv30-50(主动)Lv+1']) self.技能设置输入[3].addItem('Lv30-50(主动)Lv+1') # 白金 skills = [ trans('{$name}Lv+1', name=i.名称) for i in self.角色属性A.技能表.values() if i.所在等级 < 48 ] for j in [8, 9]: self.技能设置输入[j].addItems(skills) self.技能设置输入[12].addItems( ['BUFFLv+1', 'BUFFLv+2', 'BUFFLv+3', 'BUFFLv+4']) self.技能设置输入[13].addItems(['Lv1-50(主动)Lv+1', '一觉Lv+1', '一觉Lv+2']) self.技能设置输入[14].addItems([ 'Lv1-30(所有)Lv+1', 'Lv1-50(所有)Lv+1', 'Lv1-20(所有)Lv+1', 'Lv20-30(所有)Lv+1', 'Lv1-80(所有)Lv+1' ]) skills = [ trans('{$name}Lv+1', name=i.名称) for i in self.角色属性A.技能表.values() if i.所在等级 < 85 ] skills_weapons = [ trans('{$name}Lv+1', name=i.名称) for i in self.角色属性A.技能表.values() if (i.所在等级 in [40, 45, 60, 70, 75, 80] and i.是否主动 == 1) ] self.技能设置输入[15].addItems(skills_weapons) self.技能设置输入[16].addItems(skills) self.技能设置输入[17].addItems(['BUFF力智+3%', 'BUFF三攻+3%', 'BUFF力智、三攻+3%']) self.技能设置输入[18].addItem('BUFF力智+3%') if '智力' in self.角色属性A.类型: self.修正列表名称 = trans([ '转职被动智力', 'BUFF力智%', 'BUFF三攻%', '转职被动等级', '一觉被动力智', '一觉力智%', '一觉力智' ]) else: self.修正列表名称 = trans([ '守护恩赐体精', 'BUFF力智%', 'BUFF三攻%', '守护恩赐等级', '信念光环体精', '一觉力智%', '一觉力智' ]) Linelist = [] for i in range(len(self.修正列表名称)): 名称 = QLabel(self.修正列表名称[i], self.main_frame3) 名称.setAlignment(Qt.AlignCenter) 名称.setStyleSheet(标签样式) 名称.resize(90, 25) 名称.move(170 + 7 * 宽度 + 9 * (宽度 + 5), 35 + i * 30) Linelist.append(QLineEdit(self.main_frame3)) Linelist[i].setAlignment(Qt.AlignCenter) Linelist[i].setStyleSheet(输入框样式) Linelist[i].resize(60, 25) Linelist[i].move(270 + 7 * 宽度 + 9 * (宽度 + 5), 35 + i * 30) self.属性设置输入.append(Linelist) count = 0 self.时装选项 = [] for i in trans(['头部', '帽子', '脸部', '胸部', '上衣', '腰带', '下装', '鞋']): 名称 = QLabel(i, self.main_frame3) 名称.setAlignment(Qt.AlignCenter) 名称.setStyleSheet(标签样式) 名称.resize(90, 25) 名称.move(170 + 7 * 宽度 + 9 * (宽度 + 5), 255 + count * 30) self.时装选项.append(MyQComboBox(self.main_frame3)) self.时装选项[count].addItems(['高级', '节日', '稀有', '神器']) self.时装选项[count].resize(60, 22) self.时装选项[count].move(270 + 7 * 宽度 + 9 * (宽度 + 5), 255 + count * 30) self.时装选项[count].currentIndexChanged.connect( lambda state, index=count: self.时装选项更新(index)) count += 1 self.时装选项.append(MyQComboBox(self.main_frame3)) self.时装选项[8].addItems( format_range("{}[8]", trans(['高级套装', '节日套装', '稀有套装', '神器套装']))) self.时装选项[8].resize(160, 22) self.时装选项[8].move(170 + 7 * 宽度 + 9 * (宽度 + 5), 260 + count * 30) self.时装选项[8].currentIndexChanged.connect( lambda state, index=8: self.时装选项更新(index)) self.计算按钮3 = QPushButton(trans('开始计算'), self.main_frame3) self.计算按钮3.clicked.connect(lambda state: self.计算()) self.计算按钮3.move(990, 610) self.计算按钮3.resize(100, 30) self.计算按钮3.setStyleSheet(按钮样式) def 界面5(self): # increase_counter(ga_category="buffer界面", name="自选装备计算") # 第五个布局 self.main_frame5 = QWidget() 标签 = QLabel(trans('单件选择'), self.main_frame5) 标签.setAlignment(Qt.AlignCenter) 标签.setStyleSheet(标签样式) 标签.resize(240, 25) 标签.move(70, 20) 标签 = QLabel(trans('锁定'), self.main_frame5) 标签.setAlignment(Qt.AlignCenter) 标签.setStyleSheet(标签样式) 标签.resize(70, 25) 标签.move(10, 20) self.图片显示 = [] count = 0 self.装备锁定 = [] self.自选装备 = [] self.自选装备结果 = [] self.self_selects = [] def equips_getter(): return [i.currentData() for i in self.自选装备] def equips_setter(value): self.self_selects = value store.compute("/{type}/memory/equips", equips_getter, equips_setter) for i in 部位列表: 锁定选择 = QCheckBox(i, self.main_frame5) 锁定选择.setStyleSheet(复选框样式) 锁定选择.resize(70, 22) 锁定选择.move(10, 50 + 30 * count) self.装备锁定.append(锁定选择) combo = MyQComboBox(self.main_frame5) combo.resize(220, 22) combo.move(90, 50 + 30 * count) self.自选装备.append(combo) combo.currentIndexChanged.connect( lambda _: store.emit("/{type}/memory/equips")) combo.currentIndexChanged.connect( lambda index, part=count: self.自选装备更改(part)) for j in equ.get_equ_list(): if j.部位 == i: if i == '武器': if j.类型 in self.角色属性A.武器选项: combo.addItem(j.名称) else: combo.addItem(j.名称) count += 1 self.计算标识 = 1 标签 = QLabel(trans('批量选择'), self.main_frame5) 标签.setAlignment(Qt.AlignCenter) 标签.setStyleSheet(标签样式) 标签.resize(160, 25) 标签.move(330, 20) 套装类型 = ['防具', '首饰', '特殊', '上链左', '镯下右', '环鞋指'] count = 0 self.自选套装 = [] for i in 套装类型: combo = MyQComboBox(self.main_frame5) 套装名称 = [] for j in equ.get_suit_list(): if j.名称 not in 套装名称 and j.类型 == i: 套装名称.append(j.名称) combo.addItems(套装名称) combo.resize(160, 22) combo.move(330, 50 + 30 * count) combo.activated.connect( lambda state, index=count: self.自选套装更改(index)) self.自选套装.append(combo) count += 1 self.神话部位选项 = MyQComboBox(self.main_frame5) self.神话部位选项.addItems(['神话部位:无', '神话部位:上衣', '神话部位:手镯', '神话部位:耳环']) self.神话部位选项.resize(160, 22) self.神话部位选项.move(330, 50 + 30 * count) self.神话部位选项.activated.connect(lambda state: self.神话部位更改()) count += 1 self.自选装备栏选项 = MyQComboBox(self.main_frame5) # 自行设定自选装备栏数量,最大值为20,最小值为1,默认为6 column_count = store.get("/{type}/data/self-select/column-count", 6) column_count = min(max(column_count, 1), 20) self.last_select_column = 0 for i in range(column_count): self.自选装备栏选项.addItem('{}:{}'.format(trans('自选装备栏'), i)) self.自选装备栏选项.setCurrentIndex(-1) self.自选装备栏选项.resize(160, 22) self.自选装备栏选项.move(330, 50 + 30 * count) self.自选装备栏选项.activated.connect(lambda state: self.自选装备栏更改(state)) count += 1 # 一键修正按钮添加 self.一键站街设置输入.append(QLineEdit(self.main_frame5)) self.一键站街设置输入[1].setAlignment(Qt.AlignCenter) self.一键站街设置输入[1].setStyleSheet(输入框样式) self.一键站街设置输入[1].resize(45, 24) self.一键站街设置输入[1].move(330, 50 + 30 * count) self.一键修正按钮 = QPushButton(trans('一键修正'), self.main_frame5) self.一键修正按钮.clicked.connect(lambda state: self.一键修正(1)) self.一键修正按钮.move(330 + 60, 50 + 30 * count) self.一键修正按钮.resize(80, 24) self.一键修正按钮.setStyleSheet(按钮样式) 标签 = QLabel(trans('辟邪玉提升率(理论值仅供参考)'), self.main_frame5) 标签.setAlignment(Qt.AlignCenter) 标签.setStyleSheet(标签样式) 标签.resize(200, 25) 标签.move(525, 20) self.辟邪玉提升率1 = [] self.辟邪玉提升率2 = [] count = 0 for i in 辟邪玉列表: if i.名称 != '无': if i.间隔 < 1: temp = trans(i.名称) + '+' + str(i.最大值) + '%' else: temp = trans(i.名称) + '+' + str(i.最大值) self.辟邪玉提升率1.append(QLabel(temp, self.main_frame5)) self.辟邪玉提升率1[count].setAlignment(Qt.AlignCenter) self.辟邪玉提升率1[count].setStyleSheet(标签样式) self.辟邪玉提升率1[count].resize(180, 25) self.辟邪玉提升率1[count].move(500, 50 + 30 * count) self.辟邪玉提升率2.append(QLabel('0.00%', self.main_frame5)) self.辟邪玉提升率2[count].setAlignment(Qt.AlignCenter) self.辟邪玉提升率2[count].setStyleSheet(标签样式) self.辟邪玉提升率2[count].resize(60, 25) self.辟邪玉提升率2[count].move(690, 50 + 30 * count) count += 1 初始x = 805 初始y = 20 图片显示 = QLabel(self.main_frame5) 图片显示.setPixmap(self.输出背景图片) 图片显示.setAlignment(Qt.AlignTop) 图片显示.resize(268, 546) 图片显示.move(初始x, 初始y + 11) 人物 = QLabel(self.main_frame5) 图片 = QPixmap('./ResourceFiles/' + self.角色属性A.实际名称 + "/人物.png") 人物.setPixmap(图片) 人物.move(初始x + 90 + int(45 - 图片.width() / 2), 初始y + 40) 人物.resize(90, 90) 人物.setAlignment(Qt.AlignTop) self.提升率显示 = QLabel(self.main_frame5) self.提升率显示.setStyleSheet( "QLabel{color:rgb(255,255,255);font-size:25px}") self.提升率显示.resize(250, 36) self.提升率显示.move(初始x + 10, 初始y + 517) self.提升率显示.setAlignment(Qt.AlignCenter) 偏移量 = 187 x坐标 = [ 32, 0, 0, 32, 0, 偏移量, 偏移量 + 32, 偏移量 + 32, 偏移量, 偏移量, 偏移量 + 32, 32 ] y坐标 = [0, 0, 32, 32, 64, 0, 0, 32, 64, 32, 64, 64] for i in range(12): self.图片显示.append(QLabel(self.main_frame5)) self.图片显示[i].setMovie(equ.get_img_by_name(self.self_selects[i])) self.图片显示[i].resize(26, 26) self.图片显示[i].move(初始x + 10 + x坐标[i], 初始y + 31 + y坐标[i]) self.图片显示[i].setAlignment(Qt.AlignCenter) self.面板显示 = [] for i in range(11): self.面板显示.append(QLabel(self.main_frame5)) const = 139 self.面板显示[0].move(初始x + 20, 初始y + const + 10) const += 36 count = 0 for i in [2, 3, 4, 5, 6, 7]: self.面板显示[i].move(初始x + 20, 初始y + const + count * 18) count += 1 count = 0 for i in [8, 9, 10]: self.面板显示[i].move(初始x + 155, 初始y + const + count * 18) count += 1 for i in range(len(self.面板显示)): self.面板显示[i].setStyleSheet( "QLabel{font-size:12px;color:rgb(255,255,255)}") self.面板显示[i].resize(100, 18) self.面板显示[i].setAlignment(Qt.AlignLeft if i not in [2, 8] else Qt.AlignCenter) self.词条显示 = [] for i in range(12): self.词条显示.append(QLabel(self.main_frame5)) j = 315 + 初始y for i in self.词条显示: i.setStyleSheet("QLabel{font-size:12px;color:rgb(104,213,237)}") i.move(8 + 初始x, j) i.resize(300, 18) i.setAlignment(Qt.AlignLeft) j += 18 # self.总伤害 = QLabel(self.main_frame5) # self.总伤害.setStyleSheet("QLabel{color:rgb(255,255,255);font-size:25px}") # self.总伤害.resize(600, 36) # self.总伤害.move(200, 517 + 初始y) # self.总伤害.setAlignment(Qt.AlignCenter) self.套装名称显示 = [] for i in range(9): self.套装名称显示.append(QLabel(self.main_frame5)) self.套装名称显示[i].move(132 + 初始x, 138 + 180 + 20 * i + 初始y) self.套装名称显示[i].resize(132, 18) self.套装名称显示[i].setAlignment(Qt.AlignCenter) 自选计算按钮 = QPushButton(trans('查看详情'), self.main_frame5) 自选计算按钮.clicked.connect(lambda state: self.自选计算()) 自选计算按钮.move(995, 610) 自选计算按钮.resize(80, 28) 自选计算按钮.setStyleSheet(按钮样式) self.基准值 = [] 设置基准值 = QPushButton(trans('设为基准'), self.main_frame5) 设置基准值.clicked.connect(lambda state: self.基准值设置()) 设置基准值.move(900, 610) 设置基准值.resize(80, 28) 设置基准值.setStyleSheet(按钮样式) 清空基准值 = QPushButton(trans('清空基准'), self.main_frame5) 清空基准值.clicked.connect(lambda state: self.基准值设置(1)) 清空基准值.move(805, 610) 清空基准值.resize(80, 28) 清空基准值.setStyleSheet(按钮样式) 换装选项 = QCheckBox(trans('启用登记'), self.main_frame5) 换装选项.toggled.connect(lambda checked: self.启用换装登记(checked)) 换装选项.move(320, 340) 换装选项.resize(70, 28) 换装选项.setStyleSheet(复选框样式) 换装设置 = QPushButton(trans('登记设置'), self.main_frame5) 换装设置.clicked.connect(lambda _: self.换装设置()) 换装设置.move(390, 340) 换装设置.resize(80, 28) 换装设置.setStyleSheet(按钮样式) 名望设置 = QPushButton('名望细节', self.main_frame5) 名望设置.clicked.connect(lambda _: self.名望设置()) 名望设置.move(710, 610) 名望设置.resize(80, 28) 名望设置.setStyleSheet(按钮样式) def 名望设置(self): increase_counter(ga_category="buffer详细功能使用", name="名望") def createClient(): store.set("/fame/temp/property", self) # 设置图标和背景 临时做法 store.const("/app/window/icon", self.icon) store.const("/app/window/background_image", self.主背景图片) store.watch("/fame/event/changed", lambda _, : self.自选计算(1)) client = 名望窗口() client.初始化() return client DefaultDialogRegister.showDialog("base_fame({})".format(type(self)), createClient, self) def 自选装备栏更改(self, index): if self.计算标识 == 0: return self.计算标识 = 0 data = store.get("/{type}/data/self_select/equips", []) length = len(self.自选装备) column_index = store.get("/{type}/data/self_select/column_index") defaultData = [0] * length while column_index >= len(data): data.append(defaultData) if column_index != index: data[column_index] = [i.currentIndex() for i in self.自选装备] column = data[index] if index < len(data) else defaultData for i in range(length): self.自选装备[i].setCurrentIndex(column[i]) store.set("/{type}/data/self_select/column_index", index) store.set("/{type}/data/self_select/equips", data) self.计算标识 = 1 self.自选计算(1) def 启用换装登记(self, checked): self.登记启用 = checked self.自选计算(1) def 换装设置(self): increase_counter(ga_category="buffer详细功能使用", name="切装") def createClient(): store.compute("/{type}/temp/property_a", lambda: self.角色属性A) # 换装更新事件 store.watch("/{type}/event/register_changed", lambda _, : self.自选计算(1)) # 设置图标和背景 临时做法 store.const("/app/window/icon", self.icon) store.const("/app/window/background_image", self.主背景图片) client = 登记窗口() client.初始化() return client DefaultDialogRegister.showDialog("panel({})".format(type(self)), createClient, self) def 时装选项更新(self, index): if index == 8: count = 0 for i in self.时装选项: if count != 8: i.setCurrentIndex(self.时装选项[8].currentIndex()) count += 1 return else: 智力, 体力, 精神 = 0, 0, 0 套装字典 = {'高级': 0, '节日': 0, '稀有': 0, '神器': 0} for i in range(8): 套装字典[self.时装选项[i].currentData()] = 套装字典.get( self.时装选项[i].currentData(), 0) + 1 # 套装属性 神器 = 套装字典['神器'] 稀有 = 套装字典['稀有'] + 神器 if 套装字典['高级'] >= 3: 智力 += 10 体力 += 10 精神 += 10 if 稀有 >= 3 and 神器 < 3: 智力 += 40 体力 += 40 精神 += 40 if 套装字典['神器'] >= 3: 智力 += 50 体力 += 50 精神 += 50 if 套装字典['高级'] >= 8: 智力 += 10 体力 += 10 精神 += 10 if 套装字典['节日'] >= 8: 智力 += 25 体力 += 25 精神 += 25 if 稀有 >= 8 and 神器 < 8: 智力 += 40 体力 += 40 精神 += 40 if 套装字典['神器'] >= 8: 智力 += 50 体力 += 50 精神 += 50 数据 = [45, 45, 55, 65] 智力 += 数据[self.时装选项[0].currentIndex()] # 头部 精神 += 数据[self.时装选项[0].currentIndex()] # 头部 智力 += 数据[self.时装选项[1].currentIndex()] # 帽子 精神 += 数据[self.时装选项[1].currentIndex()] # 帽子 数据 = [0, 0, 55, 65] 体力 += 数据[self.时装选项[5].currentIndex()] # 腰带 数据 = [45, 45, 55, 65] 体力 += 数据[self.时装选项[7].currentIndex()] # 鞋子 数据 = [0, 20, 0, 0] 智力 += 数据[self.时装选项[6].currentIndex()] # 下装 体力 += 数据[self.时装选项[6].currentIndex()] # 下装 精神 += 数据[self.时装选项[6].currentIndex()] # 下装 self.属性设置输入[3][16].setText(str(智力)) self.属性设置输入[4][16].setText(str(体力)) self.属性设置输入[5][16].setText(str(精神)) def 希洛克武器选择更新(self): if self.希洛克武器选择.currentIndex() != 2: # 武器融合属性A禁用 self.武器融合属性A.setEnabled(False) self.武器融合属性A1.setEnabled(False) self.武器融合属性A2.setEnabled(False) self.武器融合属性A.setStyleSheet(下拉框样式) self.武器融合属性A1.setStyleSheet(下拉框样式) self.武器融合属性A2.setStyleSheet(下拉框样式) # 武器融合属性B禁用 self.武器融合属性B.setEnabled(False) self.武器融合属性B1.setEnabled(False) self.武器融合属性B2.setEnabled(False) self.武器融合属性B.setStyleSheet(下拉框样式) self.武器融合属性B1.setStyleSheet(下拉框样式) self.武器融合属性B2.setStyleSheet(下拉框样式) else: # 武器融合属性A启用 self.武器融合属性A.setEnabled(True) self.武器融合属性A1.setEnabled(True) self.武器融合属性A2.setEnabled(True) self.武器融合属性A.setStyleSheet(下拉框样式) self.武器融合属性A1.setStyleSheet(下拉框样式) self.武器融合属性A2.setStyleSheet(下拉框样式) # 武器融合属性B启用 self.武器融合属性B.setEnabled(True) self.武器融合属性B1.setEnabled(True) self.武器融合属性B2.setEnabled(True) self.武器融合属性B.setStyleSheet(下拉框样式) self.武器融合属性B1.setStyleSheet(下拉框样式) self.武器融合属性B2.setStyleSheet(下拉框样式) def 调整觉醒择优方向(self, index): if index < 1: self.觉醒择优系数.setVisible(True) else: self.觉醒择优系数.setVisible(False) self.觉醒择优系数.setCurrentText(str(1.0 if index > 1 else 0.7)) def 希洛克武器随机词条更新(self, index, x=0): if x == 0: self.武器融合属性A1.clear() self.武器融合属性A2.clear() if index == 0: return 属性A = 武器属性A列表[index] for item in 属性A.range(): self.武器融合属性A2.addItem(item) self.武器融合属性A1.addItem(属性A.随机属性描述) elif x == 1: self.武器融合属性B1.clear() self.武器融合属性B2.clear() if index == 0: return 属性B = 武器属性B列表[index] for item in 属性B.range(): self.武器融合属性B2.addItem(item) self.武器融合属性B1.addItem(属性B.随机属性描述) def 黑鸦词条更新(self, index): if self.黑鸦词条选项[index][0].currentIndex() < 2: for i in range(1, 4): self.黑鸦词条选项[index][i].setEnabled(False) self.黑鸦词条选项[index][i].setStyleSheet(下拉框样式) elif index == 0 and self.黑鸦词条选项[index][0].currentIndex() == 3: for i in range(1, 4): self.黑鸦词条选项[0][i].setEnabled(False) self.黑鸦词条选项[0][i].setStyleSheet(下拉框样式) else: for i in range(1, 4): self.黑鸦词条选项[index][i].setEnabled(True) self.黑鸦词条选项[index][i].setStyleSheet(下拉框样式) def 黑鸦随机词条更新(self, i, x=0): index = self.黑鸦词条选项[i][1].currentIndex() self.黑鸦词条选项[i][2].clear() self.黑鸦词条选项[i][3].clear() if index == 0: return 装备属性 = 武器变换属性列表[index] if x == 0 else 装备变换属性列表[index] temp = 装备属性.最大值 while temp >= 装备属性.最小值: if 装备属性.间隔 / 10 >= 1: self.黑鸦词条选项[i][3].addItem(str(int(temp))) else: self.黑鸦词条选项[i][3].addItem(str(temp) + '%') temp -= 装备属性.间隔 self.黑鸦词条选项[i][2].addItem(装备属性.随机属性描述) def BUFF次数输入填写(self, x, skill=None): if self.次数输入[x].currentIndex() == 2: self.次数输入[x].setEditable(True) self.次数输入[x].clearEditText() self.次数输入[x].setStyleSheet(下拉框样式) else: self.次数输入[x].setEditable(False) def 批量选择(self, index): if index == 1: if self.全选状态 == 1: self.全选状态 = 0 else: self.全选状态 = 1 if sum(self.装备选择状态[74:244]) == 170: self.批量选择(0) for i in equ.get_equ_list(): if i.部位 != '武器': if i.品质 != '神话' or index == 0 or self.全选状态 == 0: self.装备图标点击事件(equ.get_id_by_name(i.名称), index, x=0) elif i.类型 in self.角色属性A.武器选项: self.装备图标点击事件(equ.get_id_by_name(i.名称), index, x=0) self.装备图标点击事件(74, index) def 基准值设置(self, x=0): self.基准值.clear() if x == 0: A = deepcopy(self.初始属性) self.输入属性(A) A.穿戴装备(self.self_selects) self.关闭排行窗口() self.排行数据.clear() self.排行数据.append(self.self_selects + [0] + A.套装栏 + ['无']) self.输出界面(0, '基准值', 自选计算模式=True) self.基准值 = deepcopy(self.自选计算数据) self.自选计算(1) def 载入配置(self, path='set'): filepath = './ResourceFiles/{}/{}/'.format(self.角色属性A.实际名称, path) if os.path.exists(os.path.join( filepath, "page_1.json")) or os.path.exists( os.path.join(filepath, "store.json")): self.载入json(path) return else: # 如果不存在任何存档则载入重置存档 self.载入json(path='reset') def 设置技能选项(self, num, info): try: self.等级调整[num].setCurrentIndex(info['level']) except Exception as e: logger.error(e) pass try: self.次数输入[num].setCurrentIndex(info['count']) except Exception as e: logger.error(e) def 获取技能选项(self, num): info = {} try: info['level'] = self.等级调整[num].currentIndex() except Exception as e: info['level'] = 0 logger.error(e) try: info['count'] = self.次数输入[num].currentIndex() except Exception as e: info['count'] = 0 logger.error(e) return info def 载入旧版json(self, path='set', page=[0, 1, 2, 3, 4]): filepath = './ResourceFiles/{}/{}'.format(self.角色属性A.实际名称, path) if 0 in page: # 第一页(装备/选择/打造) try: filename = 'page_1.json' set_data = {} with open(os.path.join(filepath, filename), encoding='utf-8') as fp: set_data = json.load(fp) fp.close() store.set("/{type}/data/title", set_data['称号']) store.set("/{type}/data/pet", set_data['宠物']) store.set('/{type}/data/compute_mode', set_data["计算模式"]) store.set('/{type}/data/ditto_checked', set_data["百变怪"]) store.set('/{type}/data/myth_top_checked', set_data['神话排名勾选']) store.set('/{type}/data/awakening_switch_checked', set_data['切装模式选项']) store.set('/{type}/data/thread_count', set_data['线程数量']) store.set("/{type}/data/equip_checked", set_data['装备勾选']) store.set("/{type}/data/equip_forges", set_data['装备打造']) except Exception as error: logger.error(error) if 1 in page: # 第二页(技能/符文/药剂) try: filename = 'page_2.json' set_data = {} with open(os.path.join(filepath, filename), encoding='utf-8') as fp: set_data = json.load(fp) fp.close() store.set("/{type}/data/awakening_binding", set_data['觉醒选择']) store.set("/{type}/data/talismans", set_data['护石栏']) store.set("/{type}/data/consumables", set_data['药剂勾选']) skills = {} 技能选项 = set_data['技能选项'] for key in 技能选项.keys(): skills[key] = { 'level': 技能选项[key]['等级'], 'count': 技能选项[key]['次数'] } store.set("/{type}/data/skill", skills) store.set("/{type}/data/weapon_fusion", [ set_data['武器融合属性A'], set_data['武器融合属性A2'], set_data['武器融合属性B'], set_data['武器融合属性B2'] ]) store.set("/{type}/data/siroco_weapon", set_data['希洛克武器选择']) store.set("/{type}/data/jude_effects", set_data['辟邪玉效果']) store.set('/{type}/data/jude_values', set_data['辟邪玉数值']) store.set('/{type}/data/top_options', set_data['排行选项']) store.set('/{type}/data/black_purgatory', set_data['黑鸦选择']) if '希洛克选择' in set_data: store.set('/{type}/data/siroco', set_data['希洛克选择']) if '奥兹玛选择' in set_data: store.set('/{type}/data/ozma', set_data['奥兹玛选择']) except Exception as error: logger.error(error) if 2 in page: # 第三页(基础/细节/修正) try: filename = 'page_3.json' set_data = {} with open(os.path.join(filepath, filename), encoding='utf-8') as fp: set_data = json.load(fp) fp.close() store.set("/{type}/data/avatar", set_data['时装选项']) store.set("/{type}/data/detail_values", set_data['细节数值']) store.set("/{type}/data/detail_options", set_data['细节选项']) except Exception as error: logger.error(error) if 3 in page: # 第四页(神话属性修正) try: filename = 'page_4.json' set_data = {} with open(os.path.join(filepath, filename), encoding='utf-8') as fp: set_data = json.load(fp) fp.close() store.set("/{type}/data/myth_properties", set_data['神话属性修正']) except Exception as error: logger.error(error) if 4 in page: # 第五页(自选装备计算) try: filename = 'page_5.json' set_data = {} with open(os.path.join(filepath, filename), encoding='utf-8') as fp: set_data = json.load(fp) fp.close() store.set("/{type}/data/self_select/equips", [set_data['自选装备']]) store.set("/{type}/data/self_select/column_index", 0) store.set("/{type}/data/self_select/locked", set_data['装备锁定']) except Exception as error: logger.error(error) def 载入json(self, path='set', page=[0, 1, 2, 3, 4]): filepath = './ResourceFiles/{}/{}'.format(self.角色属性A.实际名称, path) filename = os.path.join(filepath, "store.json") if os.path.exists(filename): try: set_data = {} with open(filename, encoding='utf-8') as fp: set_data = json.load(fp) fp.close() store.imports(set_data) except Exception as error: logger.error(error) else: self.载入旧版json(path, page) if 0 in page: try: self.称号.setCurrentIndex(store.get("/{type}/data/title", 0)) except Exception as error: logger.error(error) try: self.宠物.setCurrentIndex(store.get("/{type}/data/pet", 0)) except Exception as error: logger.error(error) try: self.计算模式选择.setCurrentIndex( store.get("/{type}/data/compute_mode", 1)) except Exception as error: logger.error(error) try: self.百变怪选项.setChecked( store.get("/{type}/data/ditto_checked", 1)) except Exception as error: logger.error(error) try: self.神话排名选项.setChecked( store.get("/{type}/data/myth_top_checked", 0)) except Exception as error: logger.error(error) try: self.切装模式选项.setChecked( store.get("/{type}/data/awakening_switch_checked", 1)) except Exception as error: logger.error(error) try: self.线程数选择.setCurrentIndex( store.get("/{type}/data/thread_count", 12)) except Exception as error: logger.error(error) try: self.批量选择(0) num = 0 data = store.get("/{type}/data/equip_checked", []) for i in data: if i == 1: self.装备图标点击事件(num, 1) num += 1 except Exception as error: logger.error(error) try: num = 0 data = store.get("/{type}/data/equip_forges", []) for i in data: self.装备打造选项[num].setCurrentIndex(i) num += 1 except Exception as error: logger.error(error) if 1 in page: try: try: self.强化觉醒选择(store.get('/{type}/data/awakening_binding')) except Exception as error: logger.error(error) try: num = 0 data = store.get('/{type}/data/talismans') for i in data: self.护石栏[num].setCurrentIndex(i) num += 1 except Exception as error: logger.error(error) try: num = 0 data = store.get('/{type}/data/consumables') for i in data: self.复选框列表[num].setChecked(i) num += 1 except Exception as error: logger.error(error) data = store.get('/{type}/data/skill', {}) num = 0 for skill in self.角色属性A.技能表.values(): try: self.设置技能选项(num, data[skill.名称]) except Exception as error: logger.error(error) num += 1 try: self.觉醒择优系数.setCurrentText( str( store.get("/{type}/data/awakening_coefficient", 1.0))) except Exception as error: logger.error(error) try: self.觉醒择优方向.setCurrentIndex( store.get("/{type}/data/awakening_direction", 0)) except Exception as error: logger.error(error) data = store.get('/{type}/data/weapon_fusion', [0, 0, 0, 0]) try: self.武器融合属性A.setCurrentIndex(data[0]) except Exception as error: logger.error(error) try: self.武器融合属性A2.setCurrentIndex(data[1]) except Exception as error: logger.error(error) try: self.武器融合属性B.setCurrentIndex(data[2]) except Exception as error: logger.error(error) try: self.武器融合属性B2.setCurrentIndex(data[3]) except Exception as error: logger.error(error) try: self.希洛克武器选择.setCurrentIndex( store.get('/{type}/data/siroco_weapon')) except Exception as error: logger.error(error) try: data = store.get('/{type}/data/jude_effects') num = 0 for i in data: self.辟邪玉选择[num].setCurrentIndex(i) num += 1 except Exception as error: logger.error(error) try: data = store.get('/{type}/data/jude_values') num = 0 for i in data: self.辟邪玉数值[num].setCurrentIndex(i) num += 1 except Exception as error: logger.error(error) try: data = store.get('/{type}/data/top_options') num = 0 for i in data: self.排行选项[num].setCurrentIndex(i) num += 1 except Exception as error: logger.error(error) try: data = store.get('/{type}/data/black_purgatory') x = 0 for i in data: y = 0 for j in i: self.黑鸦词条选项[x][y].setCurrentIndex(j) y += 1 x += 1 except Exception as error: logger.error(error) try: data = store.get("/{type}/data/siroco", [0] * 15) self.希洛克选择(0, 1) num = 0 for i in data: if i == 1: self.希洛克选择(num) num += 1 except Exception as error: logger.error(error) try: data = store.get("/{type}/data/ozma", [0] * 25) self.奥兹玛选择(0, 1) num = 0 for i in data: if i == 1: self.奥兹玛选择(num) num += 1 except Exception as error: logger.error(error) except Exception as error: logger.error(error) if 2 in page: try: try: num = 0 data = store.get("/{type}/data/avatar") for i in data: self.时装选项[num].setCurrentIndex(i) num += 1 except Exception as error: logger.error(error) try: x = 0 data = store.get("/{type}/data/detail_values") for i in data: y = 0 for j in i: try: self.属性设置输入[x][y].setText(j) except Exception as e: logger.error(e) y += 1 x += 1 except Exception as error: logger.error(error) try: num = 0 data = store.get("/{type}/data/detail_options") for i in data: self.技能设置输入[num].setCurrentIndex(i) num += 1 except Exception as error: logger.error(error) except Exception as error: logger.error(error) if 3 in page: try: num = 0 data = store.get("/{type}/data/myth_properties") for i in data: self.神话属性选项[num].setCurrentIndex(i) num += 1 except Exception as error: logger.error(error) if 4 in page: try: try: num = 0 index = store.get('/{type}/data/self_select/column_index', 0) self.自选装备栏选项.setCurrentIndex(index) self.自选装备栏更改(index) except Exception as error: logger.error(error) try: num = 0 data = store.get('/{type}/data/self_select/locked') for i in data: self.装备锁定[num].setChecked(i) num += 1 except Exception as error: logger.error(error) except Exception as error: logger.error(error) def 奥兹玛选择(self, index, x=0): super().奥兹玛选择(index, x) store.emit("/{type}/data/ozma") def 希洛克选择(self, index, x=0): super().希洛克选择(index, x) store.emit("/{type}/data/siroco") def exports_store(self, page=[0, 1, 2, 3, 4]): if 0 in page: # 第一页(装备/选择/打造) try: store.set('/{type}/data/title', self.称号.currentIndex()) store.set("/{type}/memory/title", self.称号.currentData()) store.set('/{type}/data/pet', self.宠物.currentIndex()) store.set('/{type}/memory/pet', self.宠物.currentData()) store.set('/{type}/data/compute_mode', self.计算模式选择.currentIndex()) store.set('/{type}/data/ditto_checked', self.百变怪选项.isChecked()) store.set('/{type}/data/myth_top_checked', self.神话排名选项.isChecked()) store.set('/{type}/data/awakening_switch_checked', self.切装模式选项.isChecked()) store.set('/{type}/data/thread_count', self.线程数选择.currentIndex()) store.set('/{type}/data/equip_checked', self.装备选择状态) store.set('/{type}/data/equip_forges', [i.currentIndex() for i in self.装备打造选项]) except Exception as error: logger.error(error) if 1 in page: # 第二页(技能/符文/药剂) try: store.set('/{type}/data/awakening_binding', self.觉醒选择状态) store.set('/{type}/data/talismans', [i.currentIndex() for i in self.护石栏]) store.set('/{type}/data/consumables', [i.isChecked() for i in self.复选框列表]) skills = {} num = 0 for skill in self.角色属性A.技能表.values(): skills[skill.名称] = self.获取技能选项(num) num += 1 store.set('/{type}/data/skill', skills) data = [ self.武器融合属性A.currentIndex(), self.武器融合属性A2.currentIndex(), self.武器融合属性B.currentIndex(), self.武器融合属性B2.currentIndex(), ] store.set("/{type}/data/weapon_fusion", data) store.set("/{type}/data/siroco_weapon", self.希洛克武器选择.currentIndex()) store.set("/{type}/data/jude_effects", [i.currentIndex() for i in self.辟邪玉选择]) store.set("/{type}/data/jude_values", [i.currentIndex() for i in self.辟邪玉数值]) store.set("/{type}/data/black_purgatory", [[j.currentIndex() for j in i] for i in self.黑鸦词条选项]) store.set("/{type}/data/top_options", [i.currentIndex() for i in self.排行选项]) store.set("/{type}/data/awakening_coefficient", float(self.觉醒择优系数.currentText())) store.set("/{type}/data/awakening_direction", self.觉醒择优方向.currentIndex()) store.set("/{type}/data/siroco", self.希洛克选择状态) store.set("/{type}/data/ozma", self.奥兹玛选择状态) except Exception as error: logger.error(error) if 2 in page: # 第三页(基础/细节/修正) try: # 时装选项 store.set("/{type}/data/avatar", [i.currentIndex() for i in self.时装选项]) store.set("/{type}/memory/avatar", [i.currentData() for i in self.时装选项]) # 细节数值 store.set("/{type}/data/detail_values", [[j.text() for j in i] for i in self.属性设置输入]) # 细节选项 store.set("/{type}/data/detail_options", [i.currentIndex() for i in self.技能设置输入]) except Exception as error: logger.error(error) if 3 in page: # 第四页(神话属性修正) try: # 神话属性修正 store.set("/{type}/data/myth_properties", [i.currentIndex() for i in self.神话属性选项]) except Exception as error: logger.error(error) if 4 in page: # 第五页(自选装备计算) try: data = store.get("/{type}/data/self_select/equips", []) column_index = self.自选装备栏选项.currentIndex() length = len(self.自选装备) while column_index >= len(data): data.append([0] * length) data[column_index] = [i.currentIndex() for i in self.自选装备] store.set("/{type}/data/self_select/equips", data) store.set('/{type}/data/self_select/column_index', column_index) store.set("/{type}/data/self_select/locked", [i.isChecked() for i in self.装备锁定]) except Exception as error: logger.error(error) def 保存json(self, path='set', page=[0, 1, 2, 3, 4]): self.exports_store(page) try: filepath = './ResourceFiles/{}/{}/store.json'.format( self.角色属性A.实际名称, path) set_data = store.exports( lambda i: str.startswith(i, "/buffer/data")) with open(filepath, "w", encoding='utf-8') as fp: json.dump(set_data, fp, ensure_ascii=False, indent=4) fp.close() except Exception as error: logger.error(error) def 保存配置(self, path='set'): if self.禁用存档.isChecked(): return self.保存json(path) # 一键修正计算 def 一键修正(self, x=0): increase_counter(ga_category="buffer详细功能使用", name="一键修正") sign = -1 try: if self.一键站街设置输入[0].text() != '' or self.一键站街设置输入[1].text() != '': sign = 1 except Exception as e: logger.error(e) pass if sign == -1: QMessageBox.information(self, "错误", "请在按钮左侧输入站街数值") return if x == 0: if self.组合计算(2) == 0: QMessageBox.information(self, "错误", "请勾选齐全身上穿戴的装备") return if self.组合计算(2) > 1: QMessageBox.information(self, "错误", "请勿勾选身上未穿戴的装备") return self.修正套装计算(x) self.角色属性B = deepcopy(self.初始属性) self.输入属性(self.角色属性B) self.角色属性B.穿戴装备(self.有效穿戴组合[0]) self.角色属性B.排行系数 = 1 self.角色属性B.装备属性计算() self.面板修正(self.角色属性B, x) def 面板修正(self, 属性, x): 数据 = 0 数据 = to_int(self.一键站街设置输入[x].text()) if 数据 is None: QMessageBox.information(self, "错误", "站街面板输入格式错误,已重置为空") self.一键站街设置输入[x].setText('') 数据 = 0 if 数据 == 0: QMessageBox.information(self, "错误", "请输入站街面板") return self.站街面板修正(属性, 数据) self.click_window(2) QMessageBox.information( self, "自动修正计算完毕", "仅对站街修正进行了修改,使面板与输入一致
请自行核对其它页面 非智力/体力/精神条目") def click_window(self, index, info=''): if info != '': increase_counter(ga_category="界面使用情况", name=info) self.保存json(self.存档位置, page=[self.当前页面]) self.当前页面 = index if self.stacked_layout.currentIndex() != index: self.stacked_layout.setCurrentIndex(index) for i in self.window_btn: i.setStyleSheet(页签样式) self.window_btn[index].setStyleSheet(页签样式_选中) if index == 3: count1 = 0 count2 = 0 num = 0 width = 1100 height = 680 page4_height = 0 for j in equ.get_equ_id_list(): temp = equ.get_equ_by_id(j) if temp.品质 == '神话': if self.装备选择状态[j] == 1 or temp.名称 in self.self_selects: self.神话属性图片[num].move( int(width / 7 * (count1 % 7 + 0.42)), int(height / 5.2 * (count2 + 0.05)) - 3) for i in range(4): self.神话属性选项[num * 4 + i].move( int(width / 7 * (count1 % 7) + 6), int(height / 5.2 * (count2 + 0.05)) - 3 + i * 22 + 32) count1 += 1 if count1 % 7 == 0: count2 += 1 page4_height += 1 else: self.神话属性图片[num].move(-1000, -1000) for i in range(4): self.神话属性选项[num * 4 + i].move(-1000, -1000) num += 1 page4_height = max(ceil(page4_height / 7) * 130, height) self.main_frame4.setMinimumSize(width, page4_height) if index == 4: self.自选计算(1) def 神话数量判断(self, x=0): count = 0 for j in equ.get_equ_id_list(): if equ.get_equ_by_id(j).品质 == '神话': if self.装备选择状态[j] == 1: count += 1 if x == 0: return count == 0 else: return count def 站街面板修正(self, 属性, 输入面板, x=0, append=True): i = ['智力', '体力', '精神'].index(属性.类型) 修正前面板 = int(属性.站街系数) 修正后面板 = 输入面板 - 修正前面板 if append: 修正面板 = to_int(self.属性设置输入[i][15 + x].text(), 0) 修正后面板 += 修正面板 self.属性设置输入[i][15 + x].setText(str(int(修正后面板))) def exports_property(self, property): num = 0 for skill in property.技能表.values(): skill.等级 = skill.基础等级 + int(self.等级调整[num].currentData()) skill.是否启用 = self.次数输入[num].currentIndex() num += 1 property.排行系数 = self.排行参数.currentIndex() # print(self.排行选项[0].currentText()) # print(self.排行选项[0].currentData()) property.C力智 = int(''.join( filter(str.isdigit, self.排行选项[0].currentText()))) property.C三攻 = int(''.join( filter(str.isdigit, self.排行选项[1].currentText()))) property.排行类型 = self.排行选项[2].currentData() if self.排行选项[3].currentIndex() == 0: pass elif self.排行选项[3].currentIndex() == 1: property.系统奶系数 = 1.35 property.系统奶基数 = 7664 elif self.排行选项[3].currentIndex() == 2: property.系统奶系数 = 2.31 property.系统奶基数 = 4581 if self.初始属性.技能表['三次觉醒'].是否启用: if self.觉醒选择状态 == 1: property.技能表['三次觉醒'].关联技能 = [property.技能表['一次觉醒'].名称] elif self.觉醒选择状态 == 2: property.技能表['三次觉醒'].关联技能 = [property.技能表['二次觉醒'].名称] count = 0 for i in equ.get_equ_list(): if i.品质 == '神话': i.属性1选择_BUFF = self.神话属性选项[count * 4 + 0].currentIndex() i.属性2选择_BUFF = self.神话属性选项[count * 4 + 1].currentIndex() i.属性3选择_BUFF = self.神话属性选项[count * 4 + 2].currentIndex() i.属性4选择_BUFF = self.神话属性选项[count * 4 + 3].currentIndex() count += 1 property.护石栏 = [i.currentIndex() for i in self.护石栏] if self.护石第一栏.currentData() != '无': property.护石第一栏 = self.护石第一栏.currentData() if self.护石第二栏.currentData() != '无': property.护石第二栏 = self.护石第二栏.currentData() if self.护石第三栏.currentData() != '无': property.护石第三栏 = self.护石第三栏.currentData() def 换装计算(self, AWAKE: 辅助角色属性 = None) -> 辅助角色属性: if not self.登记启用: return None if AWAKE is None: AWAKE = self.角色属性A 装备 = store.clone("/{type}/data/register/equips", self.self_selects) 装备打造 = store.clone("/{type}/data/register/amplifies", [-1] * 12) 奥兹玛选择状态 = store.clone("/{type}/data/register/ozma", [0] * 25) 希洛克选择状态 = store.clone("/{type}/data/register/siroco", [0] * 15) 黑鸦词条 = store.clone("/{type}/data/register/black_purgatory", [[0] * 4] * 4) 武器融合选项 = store.clone("/{type}/data/register/weapon_fusion", [0] * 4) 站街面板 = store.get("/{type}/data/register/display_power") BUFF = deepcopy(self.初始属性) for i in range(len(装备)): if 装备[i] == '无': 装备[i] = self.self_selects[i] if 装备打造[i] == -1: 装备打造[i] = self.装备打造选项[i + 12].currentIndex() for i in range(4): if 黑鸦词条[i][0] == 0 or 黑鸦词条[i][1] == 0: 黑鸦词条[i] = deepcopy(AWAKE.黑鸦词条[i]) 黑鸦词条[i][0] == 2 BUFF.黑鸦词条 = 黑鸦词条 if 希洛克选择状态 is None or len(希洛克选择状态) == 0 or sum(希洛克选择状态) == 0: 希洛克选择状态 = self.希洛克选择状态 BUFF.希洛克选择状态 = 希洛克选择状态 if 奥兹玛选择状态 is None or len(奥兹玛选择状态) == 0 or sum(奥兹玛选择状态) == 0: 奥兹玛选择状态 = self.奥兹玛选择状态 BUFF.奥兹玛选择状态 = 奥兹玛选择状态 self.登记希洛克 = 希洛克选择状态 self.登记奥兹玛 = 奥兹玛选择状态 if 武器融合选项[0] == 0: 武器融合选项[0] = AWAKE.残香词条[0] 武器融合选项[1] = AWAKE.残香词条[1] if 武器融合选项[2] == 0: 武器融合选项[2] = AWAKE.残香词条[2] 武器融合选项[3] = AWAKE.残香词条[3] BUFF.希洛克武器词条 = 2 BUFF.残香词条 = 武器融合选项 self.exports_property(BUFF) self.辟邪玉属性计算(BUFF) if sum(希洛克选择状态) == 3: BUFF.武器词条触发 = 1 for i in range(len(self.复选框列表)): if self.复选框列表[i].isChecked(): 选项设置列表[i].适用效果(BUFF) 称号列表[self.称号.currentIndex()].城镇属性_BUFF(BUFF) if BUFF.称号触发: 称号列表[self.称号.currentIndex()].触发属性(BUFF) 宠物列表[self.宠物.currentIndex()].城镇属性_BUFF(BUFF) for i in range(12): BUFF.是否增幅[i] = 1 BUFF.强化等级[i] = 装备打造[i] BUFF.改造等级[i] = 装备打造[i] BUFF.武器锻造等级 = self.装备打造选项[36].currentIndex() BUFF.类型 = self.装备打造选项[37].currentData() self.是否计算 = 1 self.基础属性(BUFF) BUFF.穿戴装备(装备) if 站街面板 is not None: 站街属性 = deepcopy(BUFF) 站街属性.排行系数 = 1 站街属性.装备属性计算() self.站街面板修正(站街属性, 站街面板, 2, False) BUFF.预计算() AWAKE.替换技能(BUFF.技能表['BUFF'], 'BUFF') return BUFF def 自选计算(self, 输出=0): if 输出 == 0: self.保存配置(self.存档位置) self.关闭排行窗口() self.排行数据.clear() self.角色属性A = deepcopy(self.初始属性) self.输入属性(self.角色属性A) if self.是否计算 != 1: self.click_window(1) return 装备 = self.self_selects C = self.站街计算(装备) B = deepcopy(self.角色属性A) B.穿戴装备(装备) B.预计算() self.换装计算(B) if 输出 != 0: D = deepcopy(self.初始属性) self.输入属性(D) D.双装备模式 = 0 伤害列表 = [] for i in 辟邪玉列表: i.当前值 = i.最大值 temp = deepcopy(D) i.穿戴属性(temp) temp.穿戴装备(装备) 伤害列表.append(temp.BUFF计算(0)) 辟邪玉提升率 = [] for i in range(1, len(伤害列表)): if 伤害列表[0] != 0: 辟邪玉提升率.append(伤害列表[i] / 伤害列表[0] - 1) else: 辟邪玉提升率.append(0) 提升率排序 = copy(辟邪玉提升率) 提升率排序.sort(reverse=True) for i in range(len(辟邪玉提升率)): temp = str('%.2f' % (辟邪玉提升率[i] * 100)) + '%' self.辟邪玉提升率2[i].setText(temp) x = 提升率排序.index(辟邪玉提升率[i]) / len(辟邪玉提升率) * 10 - 2 y = 1 / (1 + math.exp(-x)) if SkinVersion == 'None': 颜色 = (0, 0, 0) else: 颜色 = (int(255 - 80 * y), int(245 - 100 * y), int(0 + 150 * y)) self.辟邪玉提升率1[i].setStyleSheet( 'QLabel{font-size:12px;color:rgb' + str(颜色) + '}') self.辟邪玉提升率2[i].setStyleSheet( 'QLabel{font-size:12px;color:rgb' + str(颜色) + '}') 合计力量 = 0 合计智力 = 0 合计物攻 = 0 合计魔攻 = 0 合计独立 = 0 总数据 = B.compute() for data in 总数据: if sum(data) > 0: 合计力量 += data[3] 合计智力 += data[4] 合计物攻 += data[5] 合计魔攻 += data[6] 合计独立 += data[7] 总奶量 = '' # tempstr = '' if 合计力量 == 合计智力: 总奶量 += trans('力智') + '+' + str(round(合计力量)) else: 总奶量 += '力量+' + str(round(合计力量)) 总奶量 += ',智力+' + str(round(合计智力)) if 合计物攻 == 合计魔攻 and 合计魔攻 == 合计独立: 总奶量 += ',' + trans('三攻') + '+' + str(round(合计物攻)) else: 总奶量 += ',物攻+' + str(round(合计物攻)) 总奶量 += ',魔攻+' + str(round(合计魔攻)) 总奶量 += ',独立+' + str(round(合计独立)) # self.总伤害.setText(str(tempstr)) 提升率 = B.提升率计算(总数据) x = B.BUFF面板() y = B.一觉面板() self.角色属性B = deepcopy(B) tempstr = self.装备描述_BUFF计算(B) 图片列表 = self.获取装备图片(装备) for i in range(12): self.图片显示[i].setToolTip(tempstr[i]) self.图片显示[i].setMovie(图片列表[i]) self.面板显示[0].setText(trans('站街') + ':' + str(int(C.系数数值站街()))) self.面板显示[1].setText('') self.面板显示[3].setText(trans('力量') + ':' + str(x[1])) self.面板显示[4].setText(trans('智力') + ':' + str(x[2])) self.面板显示[5].setText(trans('物攻') + ':' + str(x[3])) self.面板显示[6].setText(trans('魔攻') + ':' + str(x[4])) self.面板显示[7].setText(trans('独立') + ':' + str(x[5])) self.面板显示[9].setText(trans('力量') + ':' + str(y[1])) self.面板显示[10].setText(trans('智力') + ':' + str(y[2])) skill_buff = B.技能表['BUFF'] skill_awake = B.技能表['一次觉醒'] tempstr = [] tempstr.append( trans('BUFF力量%') + ' :' + to_percent(skill_buff.BUFF力量per)) tempstr.append( trans('BUFF智力%') + ' :' + to_percent(skill_buff.BUFF智力per)) tempstr.append( trans('BUFF物攻%') + ' :' + to_percent(skill_buff.BUFF物攻per)) tempstr.append( trans('BUFF魔攻%') + ' :' + to_percent(skill_buff.BUFF魔攻per)) tempstr.append( trans('BUFF独立%') + ' :' + to_percent(skill_buff.BUFF独立per)) tempstr.append( trans('一觉力智') + ' :' + str(int(round(skill_awake.一觉力智, 0)))) tempstr.append(trans('一觉力智%') + ' :' + to_percent(skill_awake.一觉力智per)) tempstr.append(str(总奶量)) # if self.角色属性B.希洛克武器词条 == 1: # 武器词条最高值 = self.角色属性B.自适应最高值 # 武器属性A = 武器属性A列表[武器词条最高值[0]] # 武器属性B = 武器属性B列表[武器词条最高值[1]] # tempstr.append("属性1:" +""+武器属性A.固定属性描述 + '') # if self.角色属性B.武器词条触发 == 1: # tempstr.append("属性2:" +""+武器属性B.固定属性描述 + '') if self.角色属性B.希洛克武器词条 == 1: 武器词条最高值 = self.角色属性B.自适应最高值 武器属性A = 武器属性A列表[武器词条最高值[0]] 武器属性B = 武器属性B列表[武器词条最高值[1]] # tempstr += '

' + "属性1:" +""+武器属性A.固定属性描述 + ',' + 武器属性A.随机属性描述 + str(武器属性A.最大值)+ ('%' if 武器属性A.间隔 / 10 < 1 else '') temp = trans("残香") + " " + trans( 武器属性A.固定属性描述) + '' if self.角色属性B.武器词条触发 == 1: # tempstr += "| 属性2:" +""+武器属性B.固定属性描述 + ',' + 武器属性B.随机属性描述 + str(武器属性B.最大值)+ ('%' if 武器属性B.间隔 / 10
" + trans( 武器属性B.固定属性描述) + '' tempstr.append(temp) if self.角色属性B.黑鸦词条[0][0] == 1 or self.角色属性B.黑鸦词条[1][ 0] == 1 or self.角色属性B.黑鸦词条[2][0] == 1 or self.角色属性B.黑鸦词条[3][ 0] == 1: temp = trans("黑鸦") if self.角色属性B.黑鸦词条[0][0] == 1: if self.角色属性B.武器变换属性自适应 > 0: 黑鸦武器 = 武器变换属性列表[self.角色属性B.武器变换属性自适应] temp += " {}:".format( trans('武器')) + "" + trans( 黑鸦武器.固定属性描述) + '' else: temp += " {}:".format( trans('武器')) + "" + trans( '觉醒') + '' if self.角色属性B.黑鸦词条[1][0] == 1: 黑鸦 = 装备变换属性列表[self.角色属性B.防具变换属性自适应[0]] temp += " {}:".format( trans('戒指')) + "" + trans( 黑鸦.固定属性描述) + '' tempstr.append(temp) temp = trans("黑鸦") if self.角色属性B.黑鸦词条[2][0] == 1: 黑鸦 = 装备变换属性列表[self.角色属性B.防具变换属性自适应[1]] temp += " {}:".format( trans('辅助')) + "" + trans( 黑鸦.固定属性描述) + '' if self.角色属性B.黑鸦词条[3][0] == 1: 黑鸦 = 装备变换属性列表[self.角色属性B.防具变换属性自适应[2]] temp += " {}:".format( trans('下装')) + "" + trans( 黑鸦.固定属性描述) + '' tempstr.append(temp) count = len(tempstr) for i in range(len(self.词条显示)): value = tempstr[i] if i < count else '' self.词条显示[i].setText(value) for i in self.套装名称显示: i.setText('') self.套装名称显示[0].setText(trans(装备[11])) self.套装名称显示[0].setStyleSheet( "QLabel{font-size:12px;color:rgb(255,255,255)}") 套装名称 = copy(self.角色属性B.套装栏) 神话所在套装 = [] for i in range(11): if equ.get_equ_by_name(装备[i]).品质 == '神话': 神话所在套装.append(equ.get_equ_by_name(装备[i]).所属套装) 套装 = [] 套装件数 = [] 套装属性 = [] for i in range(len(套装名称)): temp = 套装名称[i].split('[')[0] if temp not in 套装: 套装.append(trans(temp)) 套装件数.append([]) 套装属性.append('') if len(套装名称[i].split('[')) > 1: 件数 = 套装名称[i].split('[')[1].split(']')[0] 套装件数[套装.index(trans(temp))].append(件数) 套装属性[套装.index( trans(temp) )] += '' + 套装名称[ i] + '
' + equ.get_suit_by_name( 套装名称[i]).装备描述_BUFF(self.角色属性B)[:-4] + '

' self.角色属性B.装备描述 = 1 sirocos = [] temp = '' for i in range(15): if self.希洛克选择状态[i] == 1: siroco = SirocoList[i // 3] if siroco not in sirocos: siroco.set_character(self.角色属性B) sirocos.append(siroco) siroco.fuse(i % 3) for siroco in sirocos: temp += siroco.compute() self.角色属性B.装备描述 = 0 套装属性.append(temp) for i in range(len(希洛克套装)): count = self.希洛克选择状态[i * 3 + 0] + \ self.希洛克选择状态[i * 3 + 1] + self.希洛克选择状态[i * 3 + 2] if count > 1: 套装.append("{}-{}".format(trans('希洛克'), trans(希洛克套装[i]))) 套装件数.append([count]) for i in range(len(套装)): if len(套装件数[i]) > 0: self.套装名称显示[i + 1].setText( trans(套装[i]) + '[' + str(max(套装件数[i])) + ']') else: self.套装名称显示[i + 1].setText(trans(套装[i])) if 套装[i] in 神话所在套装: self.套装名称显示[i + 1].setStyleSheet( "QLabel{font-size:12px;color:rgb(226,150,146)}") else: self.套装名称显示[i + 1].setStyleSheet( "QLabel{font-size:12px;color:rgb(255,255,255)}") self.套装名称显示[i + 1].setToolTip(套装属性[i][:-4]) if len(self.基准值) != 0: self.提升率显示.setText(self.对比输出(提升率, self.基准值[0], 1, 1)) else: self.提升率显示.setText(str(round(提升率, 2)) + '%') self.自选计算数据 = [提升率, 总数据] if 输出 == 0: self.排行数据.append(装备 + [0] + 套装 + ['无']) self.输出界面(0, 自选计算模式=True) def 站街计算(self, 装备名称, 套装名称=None): C = deepcopy(self.角色属性A) C.穿戴装备(装备名称, 套装名称) C.装备属性计算(x=1) C.站街计算() return C def 对比输出(self, A, B, x=0, y=0): if B == 0: return str(A) if x == 0: temp = int(A - B) if temp == 0: if y == 1: return '不变' return '-' elif temp > 0: return '+' + str( temp) + '' else: return '' + str( temp) + '' else: temp = round((A / B - 1) * 100, 2) if temp == 0: if y == 1: return '不变' return '-' elif temp > 0: return '+' + str( '%.2f' % temp) + '%' else: return '' + str( '%.2f' % temp) + '%' def 输出界面(self, index, name='', 自选计算模式=False): 装备名称 = [] 套装名称 = [] 百变怪 = self.排行数据[index][-1] for i in range(12): 装备名称.append(self.排行数据[index][i]) if not 自选计算模式: for i in range(13, len(self.排行数据[index]) - 1): 套装名称.append(self.排行数据[index][i]) C = self.站街计算(装备名称) self.角色属性B = deepcopy(self.角色属性A) self.角色属性B.穿戴装备(装备名称, 套装名称) # 登记 Start self.角色属性B.预计算(自动切装=not 自选计算模式) if self.登记启用 and 自选计算模式: 登记属性 = self.换装计算(self.角色属性B) 登记装备 = 登记属性.装备栏 # self.输入属性(self.角色属性B) self.角色属性B.切换详情 = '换装详情:
' + '
'.join( [' , '.join(登记装备[i:i + 4]) for i in range(0, len(登记装备), 4)]) # 登记 end # 最大输出界面限制 if len(self.输出窗口列表) >= 10: del self.输出窗口列表[0] 输出窗口 = QWidget() 输出窗口.setStyleSheet('''QToolTip { background-color: black; color: white; border: 0px }''') 输出窗口.setFixedSize(788, 546) pox_y = 18 pox_y2 = 11 temp = '' if name == '': temp += trans('详细数据') + ' 仅供参考 带节奏死个' + ' ' + get_mac_address() else: temp += name # temp += '(最多显示前18个技能)'+"装备版本:"+self.角色属性A.版本 + " 增幅版本:" + self.角色属性A.增幅版本 输出窗口.setWindowTitle(temp) 输出窗口.setWindowIcon(self.icon) QLabel(输出窗口).setPixmap(self.输出背景图片) 人物 = QLabel(输出窗口) 图片 = QPixmap('./ResourceFiles/' + self.角色属性A.实际名称 + "/人物.png") 人物.setPixmap(图片) 人物.move(90 + int(45 - 图片.width() / 2), 40 - pox_y2) 人物.resize(90, 90) 人物.setAlignment(Qt.AlignTop) y = self.角色属性B.一觉面板() x = self.角色属性B.BUFF面板() 面板显示 = [] for i in range(11): 面板显示.append(QLabel(输出窗口)) 面板显示[0].setText(trans('站街') + ':' + str(int(C.系数数值站街()))) 面板显示[3].setText(trans('力量') + ':' + str(x[1])) 面板显示[4].setText(trans('智力') + ':' + str(x[2])) 面板显示[5].setText(trans('物攻') + ':' + str(x[3])) 面板显示[6].setText(trans('魔攻') + ':' + str(x[4])) 面板显示[7].setText(trans('独立') + ':' + str(x[5])) 面板显示[9].setText(trans('力量') + ':' + str(y[1])) 面板显示[10].setText(trans('智力') + ':' + str(y[2])) const = 139 面板显示[0].move(35, const - pox_y2 + 10) const += 36 count = 0 for i in [2, 3, 4, 5, 6, 7]: 面板显示[i].move(35, const + count * 18 - pox_y2) count += 1 count = 0 for i in [8, 9, 10]: 面板显示[i].move(165, const + count * 18 - pox_y2) count += 1 for i in range(len(面板显示)): 面板显示[i].setStyleSheet("QLabel{font-size:12px;color:white;}") 面板显示[i].resize(100, 18) 面板显示[i].setAlignment(Qt.AlignLeft) skill_buff = self.角色属性B.技能表['BUFF'] skill_awake = self.角色属性B.技能表['一次觉醒'] tempstr = [] tempstr.append( trans('BUFF力量%') + ' :' + to_percent(skill_buff.BUFF力量per)) tempstr.append( trans('BUFF智力%') + ' :' + to_percent(skill_buff.BUFF智力per)) tempstr.append( trans('BUFF物攻%') + ' :' + to_percent(skill_buff.BUFF物攻per)) tempstr.append( trans('BUFF魔攻%') + ' :' + to_percent(skill_buff.BUFF魔攻per)) tempstr.append( trans('BUFF独立%') + ' :' + to_percent(skill_buff.BUFF独立per)) tempstr.append( trans('一觉力智') + ' :' + str(int(round(skill_awake.一觉力智, 0)))) tempstr.append(trans('一觉力智%') + ' :' + to_percent(skill_awake.一觉力智per)) j = 318 for i in tempstr: templab = QLabel(输出窗口) templab.setText(i) templab.setStyleSheet( "QLabel{font-size:12px;color:rgb(104,213,237)}") templab.move(20, j - pox_y2) templab.resize(305, 18) templab.setAlignment(Qt.AlignLeft) j += 18 位置 = 313 间隔 = 20 适用称号名称 = QLabel(self.称号.currentData(), 输出窗口) 适用称号名称.setStyleSheet("QLabel{font-size:12px;color:rgb(255,255,255)}") 适用称号名称.move(114, 位置 - pox_y2) 适用称号名称.resize(150, 18) 适用称号名称.setAlignment(Qt.AlignCenter) 位置 += 间隔 适用称号名称.setToolTip(self.称号描述()) 适用宠物名称 = QLabel(self.宠物.currentData(), 输出窗口) 适用宠物名称.setStyleSheet("QLabel{font-size:12px;color:rgb(255,255,255)}") 适用宠物名称.move(114, 位置 - pox_y2) 适用宠物名称.resize(150, 18) 适用宠物名称.setAlignment(Qt.AlignCenter) 位置 += 间隔 适用宠物名称.setToolTip(self.宠物描述()) 适用中的套装 = QLabel(trans(装备名称[11]), 输出窗口) 适用中的套装.setStyleSheet("QLabel{font-size:12px;color:rgb(255,255,255)}") 适用中的套装.move(132, 位置 - pox_y2) 适用中的套装.resize(132, 18) 适用中的套装.setAlignment(Qt.AlignCenter) 神话所在套装 = '无' for i in range(11): temp = equ.get_equ_by_name(装备名称[i]) if temp.品质 == '神话': 神话所在套装 = temp.所属套装 套装 = [] 套装件数 = [] 套装属性 = [] 套装名称 = copy(self.角色属性B.套装栏) for i in range(len(套装名称)): temp = 套装名称[i].split('[')[0] if temp not in 套装: 套装.append(temp) 套装件数.append([]) 套装属性.append('') if len(套装名称[i].split('[')) > 1: 件数 = 套装名称[i].split('[')[1].split(']')[0] 套装件数[套装.index(temp)].append(件数) 套装属性[套装.index( temp )] += '' + 套装名称[ i] + '
' + equ.get_suit_by_name( 套装名称[i]).装备描述_BUFF(self.角色属性B)[:-4] + '

' E = deepcopy(self.初始属性) sirocos = [] temp = '' for i in range(15): if self.希洛克选择状态[i] == 1: siroco = SirocoList[i // 3] if siroco not in sirocos: siroco.set_character(E) sirocos.append(siroco) siroco.fuse(i % 3) for siroco in sirocos: temp += siroco.compute() 套装属性.append(temp) for i in range(len(希洛克套装)): count = self.希洛克选择状态[i * 3 + 0] + \ self.希洛克选择状态[i * 3 + 1] + self.希洛克选择状态[i * 3 + 2] if count > 1: 套装.append("{}-{}".format(trans('希洛克'), trans(希洛克套装[i]))) 套装件数.append([count]) for i in range(len(套装)): 位置 += 间隔 适用套装名称 = QLabel(输出窗口) if len(套装件数[i]) > 0: 适用套装名称.setText(trans(套装[i]) + '[' + str(max(套装件数[i])) + ']') else: 适用套装名称.setText(trans(套装[i])) 适用套装名称.move(132, 位置 - pox_y2) 适用套装名称.resize(132, 18) 适用套装名称.setAlignment(Qt.AlignCenter) if 套装[i] in 神话所在套装: 适用套装名称.setStyleSheet( "QLabel{font-size:12px;color:rgb(226,150,146)}") else: 适用套装名称.setStyleSheet( "QLabel{font-size:12px;color:rgb(255,255,255)}") 适用套装名称.setToolTip(套装属性[i][:-4]) 实际技能等级 = [] 技能表 = self.角色属性B.技能表.values() for skill in 技能表: 实际技能等级.append(skill.等级) if len(self.基准值) != 0: 显示模式 = 1 else: 显示模式 = 0 count = 0 统计详情 = self.角色属性B.compute() for 详情 in 统计详情: if sum(详情) != 0: count += 1 self.行高 = 30 if count > 0: self.行高 = min(int(440 / count), 30) j = -1 num = 0 for skill in 技能表: if skill.是否启用 and sum(统计详情[num]) != 0: j += 1 每行详情 = [] for k in range(11): 每行详情.append(QLabel(输出窗口)) # 图片 每行详情[0].setPixmap(self.技能图片[num]) 每行详情[0].move(302, 50 + j * self.行高 - pox_y) 每行详情[0].resize(28, min(28, self.行高 - 2)) # 等级 每行详情[1].setText('Lv.' + str(实际技能等级[num])) 每行详情[1].move(337, 50 + j * self.行高 - pox_y) 每行详情[1].resize(30, min(28, self.行高)) for k in range(8): 详情 = str(int(统计详情[num][k])) if 显示模式 == 1: 详情 = self.对比输出(统计详情[num][k], self.基准值[1][num][k]) if 详情 == '0' or 详情 == 0: 详情 = '' 每行详情[k + 2].setText(详情) 每行详情[k + 2].move(370 + k * 40, 50 + j * self.行高 - pox_y) 每行详情[k + 2].resize(50, min(28, self.行高)) if hasattr(skill, "适用数值") and skill.适用数值 != 0: 每行详情[10].setText("(" + str(round(skill.适用数值)) + ")") 每行详情[10].setStyleSheet( "QLabel{font-size:12px;color:rgb(104,213,237)}") 每行详情[10].move(710, 50 + j * self.行高 - pox_y) 每行详情[10].resize(50, min(28, self.行高)) for l in range(1, 10): if self.登记启用 and skill.名称 in BUFF影响技能 and 自选计算模式: 每行详情[l].setStyleSheet( "QLabel{font-size:12px;color:rgb(255,0,0)}") else: 每行详情[l].setStyleSheet( "QLabel{font-size:12px;color:rgb(255,255,255)}") 每行详情[l].setAlignment(Qt.AlignCenter) num += 1 合计力量 = 0 合计智力 = 0 合计物攻 = 0 合计魔攻 = 0 合计独立 = 0 基准值合计力量 = 0 基准值合计智力 = 0 基准值合计物攻 = 0 基准值合计魔攻 = 0 基准值合计独立 = 0 for i in range(len(统计详情)): if 显示模式 == 1: 基准值合计力量 += self.基准值[1][i][3] 基准值合计智力 += self.基准值[1][i][4] 基准值合计物攻 += self.基准值[1][i][5] 基准值合计魔攻 += self.基准值[1][i][6] 基准值合计独立 += self.基准值[1][i][7] 合计力量 += 统计详情[i][3] 合计智力 += 统计详情[i][4] 合计物攻 += 统计详情[i][5] 合计魔攻 += 统计详情[i][6] 合计独立 += 统计详情[i][7] tempstr = '' if 显示模式 == 1: 对比力量 = self.对比输出(合计力量, 基准值合计力量, 0, 1) 对比智力 = self.对比输出(合计智力, 基准值合计智力, 0, 1) 对比物攻 = self.对比输出(合计物攻, 基准值合计物攻, 0, 1) 对比魔攻 = self.对比输出(合计魔攻, 基准值合计魔攻, 0, 1) 对比独立 = self.对比输出(合计独立, 基准值合计独立, 0, 1) if 对比力量 == 对比智力: tempstr += trans('力智') + 对比力量 else: tempstr += '力量' + 对比力量 tempstr += ',智力' + 对比智力 if 对比物攻 == 对比魔攻 and 对比魔攻 == 对比独立: tempstr += ',' + trans('三攻') + 对比物攻 else: tempstr += ',物攻' + 对比物攻 tempstr += ',魔攻' + 对比魔攻 tempstr += ',独立' + 对比独立 else: if 合计力量 == 合计智力: tempstr += trans('力智') + '+' + str(round(合计力量)) else: tempstr += '力量+' + str(round(合计力量)) tempstr += ',智力+' + str(round(合计智力)) if 合计物攻 == 合计魔攻 and 合计魔攻 == 合计独立: tempstr += ',' + trans('三攻') + '+' + str(round(合计物攻)) else: tempstr += ',物攻+' + str(round(合计物攻)) tempstr += ',魔攻+' + str(round(合计魔攻)) tempstr += ',独立+' + str(round(合计独立)) if self.角色属性B.切换详情 != '无': tempstr += '

' + self.角色属性B.切换详情 if self.角色属性B.希洛克武器词条 == 1: 武器词条最高值 = self.角色属性B.自适应最高值 武器属性A = 武器属性A列表[武器词条最高值[0]] 武器属性B = 武器属性B列表[武器词条最高值[1]] # tempstr += '

' + "属性1:" +""+武器属性A.固定属性描述 + ',' + 武器属性A.随机属性描述 + str(武器属性A.最大值)+ ('%' if 武器属性A.间隔 / 10 < 1 else '') tempstr += "

" + trans("残香") +""+ \ "" + trans(武器属性A.固定属性描述) + '' if self.角色属性B.武器词条触发 == 1: # tempstr += "| 属性2:" +""+武器属性B.固定属性描述 + ',' + 武器属性B.随机属性描述 + str(武器属性B.最大值)+ ('%' if 武器属性B.间隔 / 10 < 1 else '') tempstr += " | " + "" + trans( 武器属性B.固定属性描述) + '' if self.角色属性B.黑鸦词条[0][0] == 1 or self.角色属性B.黑鸦词条[1][ 0] == 1 or self.角色属性B.黑鸦词条[2][0] == 1 or self.角色属性B.黑鸦词条[3][ 0] == 1: tempstr += "

" + trans("黑鸦") if self.角色属性B.黑鸦词条[0][0] == 1: if self.角色属性B.武器变换属性自适应 > 0: 黑鸦武器 = 武器变换属性列表[self.角色属性B.武器变换属性自适应] tempstr += " {}:".format( trans('武器')) + "" + trans( 黑鸦武器.固定属性描述) + '' else: tempstr += " {}:".format( trans('武器')) + "" + trans( '觉醒') + '' if self.角色属性B.黑鸦词条[1][0] == 1: 黑鸦 = 装备变换属性列表[self.角色属性B.防具变换属性自适应[0]] tempstr += " {}:".format( trans('戒指')) + "" + trans( 黑鸦.固定属性描述) + '' if self.角色属性B.黑鸦词条[2][0] == 1: 黑鸦 = 装备变换属性列表[self.角色属性B.防具变换属性自适应[1]] tempstr += " {}:".format( trans('辅助')) + "" + trans( 黑鸦.固定属性描述) + '' if self.角色属性B.黑鸦词条[3][0] == 1: 黑鸦 = 装备变换属性列表[self.角色属性B.防具变换属性自适应[2]] tempstr += " {}:".format( trans('下装')) + "" + trans( 黑鸦.固定属性描述) + '' 合计 = QLabel(输出窗口) 合计.setStyleSheet("QLabel{color:rgb(104,213,237);font-size:15px}") 合计.setText(tempstr) if self.登记启用 and 自选计算模式: 合计.setStyleSheet("QLabel{color:rgb(104,213,237);font-size:12px}") 合计.resize(450, 300) 合计.move(280, 30 + j * self.行高 - pox_y2) 合计.setAlignment(Qt.AlignCenter) 初始x = 10 初始y = 31 图片列表 = self.获取装备图片(self.排行数据[index]) 提升率 = self.角色属性B.提升率计算(统计详情) 提升率显示 = QLabel(输出窗口) 提升率显示.setStyleSheet("QLabel{color:rgb(255,255,255);font-size:25px}") if 显示模式 == 1: 提升率显示.setText(self.对比输出(提升率, self.基准值[0], 1, 1)) else: 提升率显示.setText(str(round(提升率, 2)) + '%') 提升率显示.resize(250, 36) 提升率显示.move(10, 517 - pox_y2) 提升率显示.setAlignment(Qt.AlignCenter) 图片列表 = self.获取装备图片(self.排行数据[index]) 偏移量 = 187 x坐标 = [ 32, 0, 0, 32, 0, 偏移量, 偏移量 + 32, 偏移量 + 32, 偏移量, 偏移量, 偏移量 + 32, 32 ] y坐标 = [0, 0, 32, 32, 64, 0, 0, 32, 64, 32, 64, 64] tempstr = self.装备描述_BUFF计算(self.角色属性B) for i in range(12): x = 初始x + x坐标[i] y = 初始y + y坐标[i] - pox_y2 装备图标 = QLabel(输出窗口) 装备图标.setMovie(图片列表[i]) 装备图标.resize(26, 26) 装备图标.move(x, y) 装备图标.setAlignment(Qt.AlignCenter) 装备 = equ.get_equ_by_name(self.角色属性B.装备栏[i]) if self.角色属性B.装备栏[i] == 百变怪: 图标遮罩 = QLabel(输出窗口) 图标遮罩.setStyleSheet("QLabel{background-color:rgba(0,0,0,0.5)}") 图标遮罩.resize(26, 26) 图标遮罩.move(x, y) 图标遮罩.setToolTip(tempstr[i]) else: 装备图标.setToolTip(tempstr[i]) for i in range(12): 装备 = equ.get_equ_by_name(self.角色属性B.装备栏[i]) 打造状态 = QLabel(输出窗口) if 装备.所属套装 != '智慧产物': 打造状态.setText('+' + str(self.角色属性B.强化等级[i])) if self.角色属性B.是否增幅[i] == 1: 打造状态.setStyleSheet( "QLabel{color:rgb(228,88,169);font-size:12px;font-weight:Bold}" ) else: 打造状态.setStyleSheet( "QLabel{color:rgb(25,199,234);font-size:12px;font-weight:Bold}" ) else: 打造状态.setText('+' + str(self.角色属性B.改造等级[i])) 打造状态.setStyleSheet( "QLabel{color:rgb(249,141,62);font-size:12px;font-weight:Bold;}" ) 打造状态.move(初始x + x坐标[i] + 13, 初始y + y坐标[i] - 8 - pox_y2) 装备 = equ.get_equ_by_name(self.角色属性B.装备栏[11]) if 装备.所属套装 != '智慧产物' and self.角色属性B.武器锻造等级 != 0: 打造状态 = QLabel(输出窗口) 打造状态.setText('+' + str(self.角色属性B.武器锻造等级)) 打造状态.setStyleSheet( "QLabel{color:rgb(232,104,24);font-size:12px;font-weight:Bold}" ) 打造状态.move(初始x + x坐标[11] + 13, 初始y + y坐标[11] + 20 - pox_y2) if self.登记启用 and 自选计算模式: # 登记装备图表显示 偏移量 = 80 x坐标 = [ 32, 0, 0, 32, 0, 偏移量, 偏移量 + 32, 偏移量 + 32, 偏移量, 偏移量, 偏移量 + 32, 32 ] y坐标 = [0, 0, 32, 32, 64, 0, 0, 32, 64, 32, 64, 64] 图片列表2 = self.获取装备图片(登记装备, self.登记希洛克, self.登记奥兹玛) def compare(i): if 登记装备[i] != self.排行数据[index][i]: return False if i == 2: if self.角色属性A.黑鸦词条[3][0] != self.角色属性B.黑鸦词条[3][0]: return False elif i == 7: if self.角色属性A.黑鸦词条[1][0] != self.角色属性B.黑鸦词条[1][0]: return False elif i == 9: if self.角色属性A.黑鸦词条[2][0] != self.角色属性B.黑鸦词条[2][0]: return False elif i == 11: if self.角色属性A.黑鸦词条[0][0] != self.角色属性B.黑鸦词条[0][0]: return False return True for i in range(len(登记装备)): x = 初始x + x坐标[i] + 600 y = 初始y + y坐标[i] - pox_y2 + 200 装备图标 = QLabel(输出窗口) 装备图标.setMovie(图片列表2[i]) 装备图标.resize(26, 26) 装备图标.move(x, y) 装备图标.setAlignment(Qt.AlignCenter) if compare(i): 图标遮罩 = QLabel(输出窗口) 图标遮罩.setStyleSheet( "QLabel{background-color:rgba(0,0,0,0.8)}") 图标遮罩.resize(26, 26) 图标遮罩.move(x, y) try: self.exports_store() 更新人物名望() # TODO: 重新布局 总名望 = store.get("/fame/temp_result") 名望详情 = store.get("/fame/temp_result/detail") if 总名望 > 0: bmi = pow(提升率, 2) / 1e5 / pow((总名望 / 1e4 - 0.5), 3) templabel = QLabel(输出窗口) templabel.setText("名望 {}({})".format(str(总名望), str(round(bmi, 2)))) templabel.setStyleSheet( "QLabel{font-size:12px;color:rgb(255,255,255)}") templabel.move(130, 110) templabel.resize(100, 42) templabel.setToolTip( '系数计算公式:bmi = pow(提升率,2) / 1e5 / pow((总名望 / 1e4 - 0.5), 3)
' + str(名望详情)) except Exception as e: logger.error(e) 输出显示 = MainWindow(输出窗口) self.输出窗口列表.append(输出显示) 输出显示.show() def 辟邪玉显示(self, x=0): temp = '' num = 0 for i in range(4): k = self.辟邪玉选择[i].currentIndex() if k > 0: temp += trans('{$name}$value
', name=辟邪玉列表[k].简称, value=self.辟邪玉数值[i].currentData()) num += 1 辟邪玉颜色 = 颜色[{4: '史诗', 3: '传说', 2: '神器', 1: '稀有'}.get(num, '稀有')] if x == 0: return 辟邪玉颜色 else: if num == 0: return '' else: return trans('{辟邪玉}:
$effect
', color=辟邪玉颜色, effect=temp[:-4]) def 装备描述_BUFF计算(self, property): tempstr = [] 希洛克选择状态 = [0] * 3 for i in range(len(self.希洛克选择状态)): 希洛克选择状态[i % 3] += self.希洛克选择状态[i] 奥兹玛选择状态 = [0] * 5 for i in range(len(self.奥兹玛选择状态)): 奥兹玛选择状态[i % 5] += self.奥兹玛选择状态[i] for i in range(12): 装备 = equ.get_equ_by_name(property.装备栏[i]) tempstr.append( trans( ' {$name}
', color=颜色[装备.品质], name=装备.名称)) if 装备.所属套装 != '无': if 装备.所属套装 != '智慧产物': y = ' ' + 装备.所属套装 else: try: y = ' ' + 装备.所属套装2 except Exception as e: y = ' ' else: y = ' ' if i == 11: y += ' ' + 装备.类型 tempstr[i] += trans('{Lv}$level {$rarity} {$name}', level=装备.等级, rarity=装备.品质, name=y) if i < 5: x = property.防具精通计算(i) tempstr[i] += trans('
{防具精通}: ') for n in property.防具精通属性: if n != '体力': tempstr[i] += n + ' +' + str(2 * x) + ' ' else: tempstr[i] += n + ' +' + str(x) + ' ' if 装备.所属套装 != '智慧产物': if property.强化等级[i] != 0: if i in [9, 10]: tempstr[i] += trans( '
+$value {强化}:', value=property.强化等级[i]) tempstr[i] += trans('{四维} +$value ', value=左右计算(100, 装备.品质, property.强化等级[i])) if property.武器锻造等级 != 0: if i == 11: tempstr[i] += trans( '
+$value {锻造} ', value=property.武器锻造等级) tempstr[i] += trans("{四维} +$value ", value=锻造四维(装备.等级, 装备.品质, property.武器锻造等级)) if property.是否增幅[i] == 1: value = 增幅计算(装备.等级, 装备.品质, property.强化等级[i], property.增幅版本) if tempstr[i] != '': tempstr[i] += '
' tempstr[i] += trans('+$value {增幅}:', value=property.强化等级[i]) if '体力' in property.类型: tempstr[i] += trans('{异次元体力} +$value', value=value) elif '精神' in property.类型: tempstr[i] += trans('{异次元精神} +$value
', value=value) elif '智力' in property.类型: tempstr[i] += trans('{异次元智力} +$value', value=value) if tempstr[i] != '': tempstr[i] += '
' if 装备.所属套装 != '智慧产物': weapon_index = property.黑鸦词条[0][0] ring_index = property.黑鸦词条[1][0] left_index = property.黑鸦词条[2][0] pants_index = property.黑鸦词条[3][0] # 下装 if i == 2 and pants_index != 0: tempstr[i] += 装备.装备描述_变换属性_BUFF(property) if pants_index == 1: tempstr[i] += self.黑鸦属性描述(property.防具变换属性自适应[2], 0, 1) else: tempstr[i] += self.黑鸦属性描述(property.黑鸦词条[3][1], property.黑鸦词条[3][2], 1) # 戒指 elif i == 7 and ring_index != 0: tempstr[i] += 装备.装备描述_变换属性_BUFF(property) if ring_index == 1: tempstr[i] += self.黑鸦属性描述(property.防具变换属性自适应[0], 0, 1) else: tempstr[i] += self.黑鸦属性描述(property.黑鸦词条[1][1], 0, 1) # 辅助装备 elif i == 9 and left_index != 0: tempstr[i] += 装备.装备描述_变换属性_BUFF(property) if left_index == 1: tempstr[i] += self.黑鸦属性描述(property.防具变换属性自适应[1], 0, 1) else: tempstr[i] += self.黑鸦属性描述(property.黑鸦词条[2][1], property.黑鸦词条[2][2], 1) # 武器 elif i == 11 and weapon_index != 0: tempstr[i] += 装备.装备描述_变换属性_BUFF(property) # 当遴选为觉醒时 add_awake = weapon_index == 3 or (weapon_index == 1 and property.武器变换属性自适应 == 0) # 自选觉醒 if add_awake: tempstr[i] += 'Lv50 技能等级+2
' tempstr[i] += 'Lv85 技能等级+2
' tempstr[i] += 'Lv100 技能等级+2
' if weapon_index > 0: if weapon_index == 1 and property.武器变换属性自适应 != 0: tempstr[i] += self.黑鸦属性描述(property.武器变换属性自适应, 0) elif weapon_index == 2: tempstr[i] += self.黑鸦属性描述(property.黑鸦词条[0][0], property.黑鸦词条[0][2]) if 装备.名称 == '世界树之精灵': tempstr[i] += 'Lv50 技能等级+2
' else: tempstr[i] += 装备.装备描述_BUFF(property) property.装备描述 = 1 部位 = 部位列表[i] 希洛克title = trans('{希洛克融合属性}:
') if 希洛克选择状态[0] == 1 and 部位 == '下装': # tempstr[i]+='
' tempstr[i] += 希洛克title tempstr[i] += BUFF增加(property, BUFF力智per=1.03) elif 希洛克选择状态[1] == 1 and 部位 == '戒指': # tempstr[i]+='
' tempstr[i] += 希洛克title tempstr[i] += 觉醒增加(property, 一觉力智per=1.03) elif 希洛克选择状态[2] == 1 and 部位 == '辅助装备': # tempstr[i]+='
' tempstr[i] += 希洛克title tempstr[i] += 被动增加(property, 被动进图加成=80) if self.角色属性B.希洛克武器词条 > 0 and i == 11: # tempstr[i]+='
' tempstr[i] += 希洛克title if self.角色属性B.希洛克武器词条 == 1: 武器词条最高值 = self.角色属性B.自适应最高值 武器属性A = 武器属性A列表[武器词条最高值[0]] 武器属性B = 武器属性B列表[武器词条最高值[1]] elif self.角色属性B.希洛克武器词条 == 2: 武器属性A = 武器属性A列表[self.武器融合属性A.currentIndex()] 武器属性B = 武器属性B列表[self.武器融合属性B.currentIndex()] tempstr[i] += trans("{属性1}:$a,$b$c$d
",\ a = 武器属性A.固定属性描述,\ b = 武器属性A.随机属性描述,\ c = 武器属性A.最大值,\ d = '%' if 武器属性A.间隔 / 10 < 1 else '') if self.角色属性B.武器词条触发 == 1: tempstr[i] += trans("{属性2}:$a,$b$c$d
",\ a = 武器属性B.固定属性描述,\ b = 武器属性B.随机属性描述,\ c = 武器属性B.最大值,\ d = '%' if 武器属性B.间隔 / 10 < 1 else '') if 部位 in 奥兹玛部位列表: index = 奥兹玛部位列表.index(部位) cur = -1 for j in range(0, 5): if self.奥兹玛选择状态[j * 5 + index] == 1: cur = j break if cur > 0: tempstr[i] += trans( '{奥兹玛融合属性}:
') tempstr[i] += str(OzmaList[cur](property)) property.装备描述 = 0 tempstr[i] = tooltip_trim(tempstr[i]) tempstr[i] += '' return tempstr def 黑鸦属性描述(self, index, value=0, x=0): 变换属性 = 武器变换属性列表[index] if x == 0 else 装备变换属性列表[index] value = 变换属性.最大值 - 变换属性.间隔 * value if value // 10 < 1: value = str(value) + "%" return "{},,{}{}
".format( 变换属性.固定属性描述, 变换属性.随机属性描述, value) def 黑鸦属性计算(self, 属性: 辅助角色属性): for i in range(4): if self.黑鸦词条选项[i][0].currentIndex() == 2: if i == 0: 武器属性 = 武器变换属性列表[self.黑鸦词条选项[i][1].currentIndex()] 武器属性数值 = self.黑鸦词条选项[i][3].currentText().replace('%', '') 武器属性.当前值 = int(武器属性数值 if 武器属性数值 != '' else 0) 武器属性.变换属性(属性) else: 装备属性 = 装备变换属性列表[self.黑鸦词条选项[i][1].currentIndex()] 装备属性数值 = self.黑鸦词条选项[i][3].currentText().replace('%', '') 装备属性.当前值 = int(装备属性数值 if 装备属性数值 != '' else 0) 装备属性.变换属性(属性) def 输入属性(self, 属性: 辅助角色属性, x=0): self.exports_property(属性) if x == 0: self.辟邪玉属性计算(属性) if sum(self.希洛克选择状态) == 3: 属性.武器词条触发 = 1 属性.希洛克武器词条 = self.希洛克武器选择.currentIndex() if 属性.希洛克武器词条 == 2: 属性.残香词条 = [ self.武器融合属性A.currentIndex(), self.武器融合属性A2.currentIndex(), self.武器融合属性B.currentIndex(), self.武器融合属性B2.currentIndex() ] for i in range(len(self.复选框列表)): if self.复选框列表[i].isChecked(): 选项设置列表[i].适用效果(属性) 称号列表[self.称号.currentIndex()].城镇属性_BUFF(属性) if 属性.称号触发: 称号列表[self.称号.currentIndex()].触发属性(属性) 宠物列表[self.宠物.currentIndex()].城镇属性_BUFF(属性) for i in range(12): 属性.是否增幅[i] = self.装备打造选项[i].currentIndex() 属性.强化等级[i] = self.装备打造选项[i + 12].currentIndex() 属性.改造等级[i] = self.装备打造选项[i + 24].currentIndex() 属性.武器锻造等级 = self.装备打造选项[36].currentIndex() 属性.类型 = self.装备打造选项[37].currentData() self.是否计算 = 1 if self.切装模式选项.isChecked() and self.计算模式选择.currentIndex( ) != 2 and 属性.技能表['BUFF'].是否启用 and 属性.技能表['一次觉醒'].是否启用: 属性.双装备模式 = 1 pass 黑鸦词条 = [] for i in range(4): temp = [ self.黑鸦词条选项[i][0].currentIndex(), self.黑鸦词条选项[i][1].currentIndex(), self.黑鸦词条选项[i][3].currentIndex(), ] 黑鸦词条.append(temp) 属性.黑鸦词条 = 黑鸦词条 属性.希洛克选择状态 = self.希洛克选择状态 属性.奥兹玛选择状态 = self.奥兹玛选择状态 属性.觉醒择优系数 = float(self.觉醒择优系数.currentText()) self.基础属性(属性) def 技能加成判断(self, name, 属性): if name == 'Lv1-30(主动)Lv+1': 属性.技能等级加成('主动', 1, 30, 1) return if name == 'Lv1-50(主动)Lv+1': 属性.技能等级加成('主动', 1, 50, 1) return if name == 'Lv1-35(主动)Lv+1': 属性.技能等级加成('主动', 1, 35, 1) return if name == 'Lv30-50(主动)Lv+1': 属性.技能等级加成('主动', 30, 50, 1) return if name == 'Lv1-30(所有)Lv+1': 属性.技能等级加成('所有', 1, 30, 1) return if name == 'Lv1-50(所有)Lv+1': 属性.技能等级加成('所有', 1, 50, 1) return if name == 'Lv1-20(所有)Lv+1': 属性.技能等级加成('所有', 1, 20, 1) return if name == 'Lv20-30(所有)Lv+1': 属性.技能等级加成('所有', 20, 30, 1) return if name == 'Lv1-80(所有)Lv+1': 属性.技能等级加成('所有', 1, 80, 1) return if name == '一觉Lv+1': 属性.一觉Lv += 1 return if name == '一觉Lv+2': 属性.一觉Lv += 2 return if name == 'BUFFLv+1': 属性.BUFFLv += 1 return if name == 'BUFFLv+2': 属性.BUFFLv += 2 return if name == 'BUFFLv+3': 属性.BUFFLv += 3 return if name == 'BUFFLv+4': 属性.BUFFLv += 4 return for skill in 属性.技能表.values(): if name == skill.名称 + 'Lv+1': skill.等级加成(1) return if name == 'BUFF力智+3%': 属性.BUFF增加(BUFF力量per=1.03, BUFF智力per=1.03) if name == 'BUFF三攻+3%': 属性.BUFF增加(BUFF物攻per=1.03, BUFF魔攻per=1.03, BUFF独立per=1.03) if name == 'BUFF力智、三攻+3%': 属性.BUFF增加(BUFF力量per=1.03, BUFF智力per=1.03, BUFF物攻per=1.03, BUFF魔攻per=1.03, BUFF独立per=1.03) def 基础属性(self, 属性): for i in range(3): for j in range(16): if self.属性设置输入[i][j].text() != '': try: float(self.属性设置输入[i][j].text()) except Exception as e: logger.error(e) QMessageBox.information( self, "错误", self.行名称[j + 17 if i > 2 else j] + ":" + self.列名称[i] + " 输入格式错误,已重置为空") self.属性设置输入[i][j].setText('') for i in range(3, 9): for j in range(17): if self.属性设置输入[i][j].text() != '': try: float(self.属性设置输入[i][j].text()) except Exception as e: logger.error(e) QMessageBox.information( self, "错误", self.行名称[j + 17 if i > 2 else j] + ":" + self.列名称[i] + " 输入格式错误,已重置为空") self.属性设置输入[i][j].setText('') temp = [] for j in range(len(self.属性设置输入[9])): if self.属性设置输入[9][j].text() != '' and j in [1, 2, 5]: try: temp.append(float(self.属性设置输入[9][j].text()) / 100) if temp[-1] > 1 or temp[-1] < -.2: QMessageBox.information( self, "错误", self.修正列表名称[j] + " 输入数值超出[-20,100],已重置为空") temp[-1] = 0.0 self.属性设置输入[9][j].setText('') except Exception as e: temp.append(0.0) QMessageBox.information(self, "错误", self.修正列表名称[j] + " 输入格式错误,已重置为空") self.属性设置输入[9][j].setText('') elif self.属性设置输入[9][j].text() != '' and j in [0, 3, 4, 6]: try: temp.append(int(self.属性设置输入[9][j].text())) except Exception as e: temp.append(0.0) QMessageBox.information(self, "错误", self.修正列表名称[j] + " 输入格式错误,已重置为空") self.属性设置输入[9][j].setText('') else: temp.append(0.0) # 神话补正 if 属性.类型 == '智力': 属性.转职被动智力 += int(temp[0]) 属性.一觉被动力智 += int(temp[4]) else: 属性.守护恩赐体精 += int(temp[0]) 属性.信念光环体精 += int(temp[4]) 属性.BUFF力量per *= 1 + temp[1] 属性.BUFF智力per *= 1 + temp[1] 属性.BUFF物攻per *= 1 + temp[2] 属性.BUFF魔攻per *= 1 + temp[2] 属性.BUFF独立per *= 1 + temp[2] 属性.转职被动Lv += int(temp[3]) 属性.一觉力智per *= 1 + temp[5] 属性.一觉力智 += int(temp[6]) for i in [0, 3, 6]: for j in range(17): if self.属性设置输入[i][j].text() != '': if i == 3 and j == 12: 属性.BUFF适用面板 += int(self.属性设置输入[i][j].text()) continue if i == 0 and j in [1, 9, 16]: 属性.进图智力 += int(self.属性设置输入[i][j].text()) else: 属性.智力 += int(self.属性设置输入[i][j].text()) for j in range(17, 19): if self.属性设置输入[i][j].text() != '': 属性.BUFF补正力智 += int(self.属性设置输入[i][j].text()) for i in [1, 4, 7]: for j in range(17): if self.属性设置输入[i][j].text() != '': if i == 4 and j == 12: 属性.BUFF适用面板 += int(self.属性设置输入[i][j].text()) continue if i == 1 and j in [1, 9, 16]: 属性.进图体力 += int(self.属性设置输入[i][j].text()) else: 属性.体力 += int(self.属性设置输入[i][j].text()) for j in range(17, 19): if self.属性设置输入[i][j].text() != '': 属性.BUFF补正体力 += int(self.属性设置输入[i][j].text()) for i in [2, 5, 8]: for j in range(17): if self.属性设置输入[i][j].text() != '': if i == 5 and j == 12: 属性.BUFF适用面板 += int(self.属性设置输入[i][j].text()) continue if i == 2 and j in [1, 9, 16]: 属性.进图精神 += int(self.属性设置输入[i][j].text()) else: 属性.精神 += int(self.属性设置输入[i][j].text()) for j in range(17, 19): if self.属性设置输入[i][j].text() != '': 属性.BUFF补正精神 += int(self.属性设置输入[i][j].text()) for i in self.技能设置输入: self.技能加成判断(i.currentData(), 属性) 属性.护石计算()