コード例 #1
0
ファイル: Classes.py プロジェクト: GraciousGpal/Surge
    async def take_from_inv(self, id_item, quantity=1):
        """
        Takes an item from the player inventory
        :param id_item:
        :param quantity:
        :return:
        """
        s_r = session.query(exists().where(
            Inventory.player_id == self.user.id
            and Inventory.item_id == id_item)).scalar()  # Check if item exists
        if s_r:
            try:  # If item exists take from quantity
                inv_object = session.query(Inventory).filter(
                    Inventory.player_id == self.user.id).filter(
                        Inventory.item_id == id_item).first()

                if quantity > inv_object.quantity:
                    raise InsufficientQuantity(
                        "You do not have enough of {}".format(id_item))
                inv_object.quantity -= quantity

                if inv_object.quantity <= 0:
                    session.delete(inv_object)

                session.commit()
                return inv_object.item.base_value, quantity
            except SQLAlchemyError as e:
                logg.warning(e)
                session.rollback()
        else:  # If it does not exists raise an itemNot found exception
            raise ItemNotFound("You do not have this item")
コード例 #2
0
ファイル: Classes.py プロジェクト: GraciousGpal/Surge
    def moolah(self, value):
        try:
            transaction = abs(int(value))
        except ValueError:
            raise ValueError('Please Enter a Number')

        if transaction >= 2147483647:
            raise OverflownError(
                'Cannot Exceed the transaction max limit ! [2147483647] ')

        if value < self.plyr.moolah and value < 0:  # Detect subtraction
            raise InsufficientFunds(
                "{} in balance, Transaction amount: {}".format(
                    self.plyr.moolah, self.plyr.moolah + value * -1))

        if self.plyr.moolah < 0:
            self.plyr.moolah = 0

        try:
            self.plyr.moolah = value
            session.commit()
        except SQLAlchemyError as e:
            session.rollback()
            logg.error("Moolah transaction error {} - {}".format(
                self.user.id, value))
コード例 #3
0
ファイル: Classes.py プロジェクト: GraciousGpal/Surge
 async def add_to_inv(self, id_item, quantity=1):
     """
     Adds an item to the player inventory
     :param id_item:
     :param quantity:
     :return:
     """
     s_r = session.query(exists().where(
         Inventory.player_id == self.user.id
         and Inventory.item_id == id_item)).scalar()  # Check if item exists
     if s_r:
         try:  # If item exists add to quantity
             inv_object = session.query(Inventory).filter(
                 Inventory.player_id == self.user.id).filter(
                     Inventory.item_id == id_item).first()
             inv_object.quantity += quantity
             session.commit()
         except SQLAlchemyError as e:
             logg.warning(e)
             session.rollback()
     else:  # If it does not exists create an entry and initialize it
         inv_entry = Inventory(player_id=self.user.id,
                               item_id=id_item,
                               quantity=1)
         try:
             session.add(inv_entry)
             session.commit()
         except SQLAlchemyError as e:
             logg.warning(e)
             session.rollback()
コード例 #4
0
ファイル: Classes.py プロジェクト: GraciousGpal/Surge
 def create_player(self):
     try:
         player = Player(id=self.user.id)
         session.add(player)
         session.commit()
     except SQLAlchemyError as e:
         session.rollback()
         logg.error(e)
コード例 #5
0
ファイル: Classes.py プロジェクト: GraciousGpal/Surge
 def location(self, dest):
     try:
         self.plyr.location = dest
         session.commit()
     except SQLAlchemyError as e:
         logg.info("Error Setting Location Data {} - {} ".format(
             self.user.id, dest))
         session.rollback()
コード例 #6
0
ファイル: Classes.py プロジェクト: GraciousGpal/Surge
 def level(self, value):
     if value < 0:
         value = 0
     try:
         self.plyr.level = value
         session.commit()
     except SQLAlchemyError as e:
         session.rollback()
         logg.error("Level up error {} - {}".format(self.user.id, value))
コード例 #7
0
ファイル: Classes.py プロジェクト: GraciousGpal/Surge
    def exp(self, value):
        if self.has_chosen is None:
            raise CharacterNotSetup("Your Character has not been setup!.")
        if value < 0:
            value = 0

        try:
            self.plyr.exp = value
            new_lvl = max([
                x for x in self.bot.master["ProfData"]["level_data"] if
                self.plyr.exp >= self.bot.master["ProfData"]["level_data"][x]
            ])
            old_c = new_lvl
            # Level Up logic
            if old_c != self.level:
                old_lvl = int(self.plyr.level)
                self.plyr.level = new_lvl
                logg.info("Leveled: {} - {} --> {}".format(
                    self.user.name, old_lvl, self.plyr.level))

            session.commit()
        except SQLAlchemyError as e:
            session.rollback()
            logg.error(e)