예제 #1
0
class MyWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QMainWindow.__init__(self, parent)
        self.ui = gui.Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.pushButton_3.clicked.connect(self.connection)
        self.ui.pushButton_2.clicked.connect(self.disconnection)
        self.ui.pushButton_6.clicked.connect(self.getStats)
        self.ui.pushButton_5.clicked.connect(self.applyStats)

    def getStats(self):
        try:
            # Level
            self.ui.spinBox.setValue(self.gecko.readkern(0x12CDC1A8) + 1)
            # XP
            self.ui.spinBox_2.setValue(self.gecko.readkern(0x12CDC1A4))
            # Rank
            rank = self.gecko.readkern(0x12CDC1AC)
            if rank == 0:
                self.ui.comboBox.setCurrentIndex(0)
            elif rank == 1:
                self.ui.comboBox.setCurrentIndex(1)
            elif rank == 2:
                self.ui.comboBox.setCurrentIndex(2)
            elif rank == 3:
                self.ui.comboBox.setCurrentIndex(3)
            elif rank == 4:
                self.ui.comboBox.setCurrentIndex(4)
            elif rank == 5:
                self.ui.comboBox.setCurrentIndex(5)
            elif rank == 6:
                self.ui.comboBox.setCurrentIndex(6)
            elif rank == 7:
                self.ui.comboBox.setCurrentIndex(7)
            elif rank == 8:
                self.ui.comboBox.setCurrentIndex(8)
            elif rank == 9:
                self.ui.comboBox.setCurrentIndex(9)
            elif rank == 10:
                self.ui.comboBox.setCurrentIndex(10)
            # Rank Points
            self.ui.spinBox_3.setValue(self.gecko.readkern(0x12CDC1B0))
            # Gold
            self.ui.spinBox_4.setValue(self.gecko.readkern(0x12CDC1A0))
            # Sea Snails
            self.ui.spinBox_5.setValue(self.gecko.readkern(0x12CDC1B4))
            # Gender
            gender = self.gecko.readkern(0x12CD1D90)
            if gender == 0:
                self.ui.comboBox_2.setCurrentIndex(0)
            elif gender == 1:
                self.ui.comboBox_2.setCurrentIndex(1)
            elif gender == 2:
                self.ui.comboBox_2.setCurrentIndex(2)
            # Eyes
            eyes = self.gecko.readkern(0x12CD1D98)
            if eyes == 0:
                self.ui.comboBox_3.setCurrentIndex(0)
            elif eyes == 1:
                self.ui.comboBox_3.setCurrentIndex(1)
            elif eyes == 2:
                self.ui.comboBox_3.setCurrentIndex(2)
            elif eyes == 3:
                self.ui.comboBox_3.setCurrentIndex(3)
            elif eyes == 4:
                self.ui.comboBox_3.setCurrentIndex(4)
            elif eyes == 5:
                self.ui.comboBox_3.setCurrentIndex(5)
            elif eyes == 6:
                self.ui.comboBox_3.setCurrentIndex(6)
            # Skin
            skin = self.gecko.readkern(0x12CD1D94)
            if skin == 0:
                self.ui.comboBox_4.setCurrentIndex(0)
            elif skin == 1:
                self.ui.comboBox_4.setCurrentIndex(1)
            elif skin == 2:
                self.ui.comboBox_4.setCurrentIndex(2)
            elif skin == 3:
                self.ui.comboBox_4.setCurrentIndex(3)
            elif skin == 4:
                self.ui.comboBox_4.setCurrentIndex(4)
            elif skin == 5:
                self.ui.comboBox_4.setCurrentIndex(5)
            elif skin == 6:
                self.ui.comboBox_4.setCurrentIndex(6)
            self.ui.comboBox.setEnabled(True)
            self.ui.comboBox_2.setEnabled(True)
            self.ui.comboBox_3.setEnabled(True)
            self.ui.comboBox_4.setEnabled(True)
            self.ui.spinBox.setEnabled(True)
            self.ui.spinBox_2.setEnabled(True)
            self.ui.spinBox_3.setEnabled(True)
            self.ui.spinBox_4.setEnabled(True)
            self.ui.spinBox_5.setEnabled(True)
            self.ui.pushButton_5.setEnabled(True)
            QMessageBox.information(self, 'SplatStats',
                                    "The statistics have been updated!")
        except:
            QMessageBox.critical(self, 'SplatStats',
                                 "Reading console data failed!")

    def disconnection(self):
        try:
            self.gecko.s.close()
            self.ui.lineEdit.setEnabled(True)
            self.ui.pushButton_3.setEnabled(True)
            self.ui.pushButton_2.setEnabled(False)
            self.ui.pushButton_5.setEnabled(False)
            self.ui.pushButton_6.setEnabled(False)
            self.ui.comboBox.setEnabled(False)
            self.ui.comboBox_2.setEnabled(False)
            self.ui.comboBox_3.setEnabled(False)
            self.ui.comboBox_4.setEnabled(False)
            self.ui.spinBox.setEnabled(False)
            self.ui.spinBox_2.setEnabled(False)
            self.ui.spinBox_3.setEnabled(False)
            self.ui.spinBox_4.setEnabled(False)
            self.ui.spinBox_5.setEnabled(False)
            QMessageBox.information(
                self, 'SplatStats',
                "Disconnection of the console was successful!")
        except:
            QMessageBox.critical(
                self, 'SplatStats',
                "An error occurred when disconnecting the console!")

    def connection(self):
        try:
            ip = self.ui.lineEdit.text()
            self.gecko = TCPGecko(ip)
        except:
            QMessageBox.critical(self, 'SplatStats',
                                 "The connection to the console failed!")
            return

        firmVer = self.gecko.getversion()
        if firmVer == 550:
            loc = 0x10013C10
        elif firmVer < 550 and firmVer >= 532:
            loc = 0x100136D0
        elif firmVer < 532 and firmVer >= 500:
            loc = 0x10013010
        elif firmVer == 410:
            loc = 0x1000ECB0
        else:
            QMessageBox.critical(
                self, 'SplatStats',
                "The version of your wiiu is not compatible with the software. Please update it!"
            )
            return

        titleID = int(hexlify(self.gecko.readmem(loc, 8)), 16)
        if titleID == TID_EUR or titleID == TID_USA or titleID == TID_JAP:
            self.ui.lineEdit.setEnabled(False)
            self.ui.pushButton_3.setEnabled(False)
            self.ui.pushButton_2.setEnabled(True)
            self.ui.pushButton_6.setEnabled(True)
            QMessageBox.information(
                self, 'SplatStats',
                "The connection to " + ip + " was successful!")
        else:
            self.gecko.s.close()
            QMessageBox.critical(
                self, 'SplatStats',
                "The connection to the console was successful, but was cut because Splatoon was not launched!"
            )

    def applyStats(self):
        try:
            # Level
            self.gecko.pokemem(0x12CDC1A8, self.ui.spinBox.value() - 1)
            # XP
            self.gecko.pokemem(0x12CDC1A4, self.ui.spinBox_2.value())
            # Rank
            self.gecko.pokemem(0x12CDC1AC, self.ui.comboBox.currentIndex())
            # Rank Points
            self.gecko.pokemem(0x12CDC1B0, self.ui.spinBox_3.value())
            # Money
            self.gecko.pokemem(0x12CDC1A0, self.ui.spinBox_4.value())
            # Sea Snails
            self.gecko.pokemem(0x12CDC1B4, self.ui.spinBox_5.value())
            # Gender
            self.gecko.pokemem(0x12CD1D90, self.ui.comboBox_2.currentIndex())
            # Eyes
            self.gecko.pokemem(0x12CD1D98, self.ui.comboBox_3.currentIndex())
            # Skin
            self.gecko.pokemem(0x12CD1D94, self.ui.comboBox_4.currentIndex())
            QMessageBox.information(
                self, 'SplatStats',
                "The statistics have been changed successfully!")
        except:
            QMessageBox.critical(
                self, 'SplatStats',
                "An error occurred when changing the values!")