def decEquip(self, uuid, count): if uuid not in self.equipsContainer: self.onEquipError(EquipModuleError.Equip_not_exist) return curCount = self.equipsContainer[uuid]["amount"] itemID = self.equipsContainer[uuid]["itemID"] if curCount < count: self.onEquipError(EquipModuleError.Equip_not_enough) return if curCount > count: setMap = {"amount": curCount - count} filterMap = {"roleID": self.databaseID, "UUID": uuid} sql = util.getUpdateSql("tbl_ItemEquips", setMap, filterMap) @util.dbDeco def cb(result, rownum, error): self.equipsContainer[uuid]["amount"] = curCount - count self.noticeClientBagUpdate(uuid,itemID , curCount - count) KBEngine.executeRawDatabaseCommand(sql, cb) elif curCount == count: filterMap = {"roleID": self.databaseID, "UUID": uuid} sql = util.getDelSql("tbl_ItemEquips", filterMap) @util.dbDeco def cb(result, rownum, error): del self.equipsContainer[uuid] self.noticeClientBagUpdate(uuid, itemID, 0) return KBEngine.executeRawDatabaseCommand(sql, cb)
def delMail(self, mailTime): @util.dbDeco def delSucCB(result, rownum, error): for i in range(len(self.mails)): if self.mails[i]["time"] == mailTime: del self.mails[i] break filterValueMap = {"to_dbid": self.databaseID, "time": mailTime} sql = util.getDelSql("tbl_Mails", filterValueMap) KBEngine.executeRawDatabaseCommand(sql, delSucCB)
def delAllMailByType(self, mailType): @util.dbDeco def delSucCB(result, rownum, error): for i in range(len(self.mails) - 1, -1, -1): if self.mails[i]["state"] == Mails.Mail_State_read: del self.mails[i] self.getMail() filterValueMap = { "to_dbid": self.databaseID, "state": Mails.Mail_State_read } sql = util.getDelSql("tbl_Mails", filterValueMap) KBEngine.executeRawDatabaseCommand(sql, delSucCB)
def onDelYouFriend(self, selfDBID, toDBID, toMethod): # 在线 if toDBID in self.dbidToMailBox: mb = self.dbidToMailBox[toDBID] args = {"delDBID": selfDBID} mb.onPlayerMgrCmd(toMethod, args) # 离线 elif toDBID in self.dbidToOfflinePlayerInfo: rowValueMap = {"parentID": toDBID, "sm_value": selfDBID} sql = util.getDelSql("tbl_Avatar_friendDBIDList", rowValueMap, False) KBEngine.executeRawDatabaseCommand(sql, None)
def decPieces(self, uuid, count): if uuid not in self.piecesContainer: self.client.onPieceError(PieceCombineError.Piece_not_exist) return curCount = self.piecesContainer[uuid]["amount"] itemID = self.piecesContainer[uuid]["itemID"] if curCount < count: self.client.onPieceError(PieceCombineError.Piece_not_enough) return if curCount > count: setMap = {"amount": curCount - count} filterMap = {"roleID": self.databaseID, "UUID": uuid} sql = util.getUpdateSql("tbl_ItemPieces", setMap, filterMap) @util.dbDeco def cb(result, rownum, error): self.piecesContainer[uuid]["amount"] = curCount - count self.writeToDB() self.noticeClientBagUpdate(uuid, itemID, curCount - count) return KBEngine.executeRawDatabaseCommand(sql, cb) elif curCount == count: filterMap = {"roleID": self.databaseID, "UUID": uuid} sql = util.getDelSql("tbl_ItemPieces", filterMap) @util.dbDeco def cb(result, rownum, error): del self.piecesContainer[uuid] self.writeToDB() self.noticeClientBagUpdate(uuid, itemID, 0) return True KBEngine.executeRawDatabaseCommand(sql, cb)
def decDiamond(self, uuid, count): if uuid not in self.diamondsContainer: self.onDiamondError(DiamondModuleError.Diamond_not_exist) return ERROR_MSG("-----------decDiamond---------uuid-----------" + str(uuid)) curCount = self.diamondsContainer[uuid]["amount"] itemID = self.diamondsContainer[uuid]["itemID"] if curCount < count: self.onDiamondError(DiamondModuleError.Diamond_not_enough) return if curCount > count: setMap = {"amount": curCount - count} filterMap = {"roleID": self.databaseID, "UUID": uuid} sql = util.getUpdateSql("tbl_ItemDiamonds", setMap, filterMap) @util.dbDeco def cb(result, rownum, error): self.diamondsContainer[uuid]["amount"] = curCount - count self.noticeClientBagUpdate(uuid, itemID, curCount - count) self.writeToDB() return KBEngine.executeRawDatabaseCommand(sql, cb) elif curCount == count: filterMap = {"roleID": self.databaseID, "UUID": uuid} sql = util.getDelSql("tbl_ItemDiamonds", filterMap) @util.dbDeco def cb(result, rownum, error): del self.diamondsContainer[uuid] self.noticeClientBagUpdate(uuid, itemID, 0) return KBEngine.executeRawDatabaseCommand(sql, cb)
def delEquipDB(self, item): filterMap = {"roleID": self.databaseID, "UUID": item["UUID"]} sql = util.getDelSql("tbl_ItemEquips", filterMap) KBEngine.executeRawDatabaseCommand(sql, None, self.id)