Beispiel #1
0
        def getRankCount(result, rownum, error):
            count = int(result[0][0])
            sql = "select sm_dbid,sm_rank,sm_isRobot from tbl_ArenaRow where sm_rank  between " + str(
                start) + " and " + str(end)

            @util.dbDeco
            def rankResult(result, rownum, error):
                if result is None:
                    return
                param = []
                for i in range(len(result)):
                    dbid = int(result[i][0])
                    rank = int(result[i][1])
                    isRobot = int(result[i][2])

                    item = {
                        "dbid": dbid,
                        "rank": rank,
                        "isRobot": isRobot,
                        "count": count
                    }
                    param.append(item)
                playerMB.onPlayerMgrCmd("onArenaMgrValueRankResult", param)

            KBEngine.executeRawDatabaseCommand(sql, rankResult)
Beispiel #2
0
        def getRankCount(result, rownum, error):
            count = int(result[0][0])
            sql = "select sm_dbid,sm_rank,sm_isRobot from tbl_ArenaRow"

            ERROR_MSG("--onCmdGetArenaAllRankValue--count" + str(count))

            @util.dbDeco
            def rankResult(result, rownum, error):
                if result is None:
                    return
                param = []
                for i in range(len(result)):
                    dbid = int(result[i][0])
                    rank = int(result[i][1])
                    isRobot = int(result[i][2])

                    item = {
                        "dbid": dbid,
                        "rank": rank,
                        "isRobot": isRobot,
                        "count": count
                    }
                    param.append(item)

                    argMap["areanList"] = param

                leagueMgr = KBEngine.globalData["LeagueMgr"]
                leagueMgr.onCmd("onCmdAreanRankData", argMap)

            KBEngine.executeRawDatabaseCommand(sql, rankResult)
Beispiel #3
0
    def initMail(self):

        filterMap = {"sm_to_dbid": self.databaseID}
        sql = util.getSelectSql("tbl_Mails", filterValueMap=filterMap)

        @util.dbDeco
        def onMailsLoadCB(result, rownum, error):
            """
            加载邮件
            """
            if result is None:
                return

            for i in range(len(result)):
                mail = {}
                mail["mail_type"] = int(result[i][3])
                mail["title"] = result[i][4].decode('utf-8')
                mail["from_name"] = result[i][5].decode('utf-8')
                mail["text"] = result[i][6].decode('utf-8')
                mail["time"] = int(result[i][7])
                mail["attachment"] = result[i][8].decode('utf-8')
                mail["state"] = int(result[i][9])
                mail["extern_info"] = result[i][10].decode('utf-8')

                self.mails.insert(i, mail)

            DEBUG_MSG("mails load complete!")

        KBEngine.executeRawDatabaseCommand(sql, onMailsLoadCB)
Beispiel #4
0
	def update( self, callback, *args, **kwargs):
		"""
		例子:更新字段id = 123的条目的数据
		xxx.filter(id = 123).update( cb, (field2, value1), (field2, value2), fieldN = valueN )
		
		回调格式:
		def callback(success, rows):
			pass
		"""
		assert self.model is not None
		where = self.build_where_clauses(*self.filters)

		paramsKey = []
		paramsVal = []
		kw = list(args) + list(kwargs.items())
		for k, v in kw:
			if hasattr(v, "resolve_expression"):
				paramsKey.append( "{} = {}".format( self.meta.fields[k].db_column, v.resolve_expression(self.meta) ) )
			else:
				paramsKey.append( "{} = %s".format( self.meta.fields[k].db_column ) )
				paramsVal.append( v )
		
		cmd = "UPDATE {} SET {}".format( self.meta.db_table, ", ".join( paramsKey ) )
		cmd = MysqlUtility.makeSafeSql( cmd, paramsVal ) + where
		#DEBUG_MSG( "%s::update(), %s" % (self.__class__.__name__, cmd) )
		KBEngine.executeRawDatabaseCommand( cmd, functools.partial( self._update_callback, cmd, callback ) )
Beispiel #5
0
def _dbCmdSelectCB(resultCollect, num, errorInfo):
    DEBUG_MSG(resultCollect)
    DEBUG_MSG(num)
    # DEBUG_MSG(errorInfo)
    if errorInfo is not None:
        DEBUG_MSG("error")
        KBEngine.executeRawDatabaseCommand(
            "CREATE TABLE mini_Spaces (name VARCHAR(255) NOT NULL DEFAULT '' primary key, dbid BIGINT)",
            _dbCmdCreateTblCB)
    else:
        DEBUG_MSG("not error")
        if not resultCollect:
            DEBUG_MSG("resultCollect == []")
            bigWorld = KBEngine.createBaseLocally("BigWorld", {})
            if bigWorld:
                DEBUG_MSG("create bigWorld success")
                bigWorld.writeToDB(_bigWorldSavedCB)
                # KBEngine.executeRawDatabaseCommand("INSERT INTO mini_Spaces VALUES ('BigWorld', 0)",
                # _dbCmdInsertBigWorldCB)
            else:
                ERROR_MSG("create bigWorld failed")
        else:
            for value in resultCollect:
                if value[0] == b'BigWorld':
                    DEBUG_MSG("==b")
                    if value[1] != 0:
                        KBEngine.createBaseFromDBID(
                            "BigWorld", int(value[1].decode('ascii')),
                            _onBigWorldCreateCB)
                        DEBUG_MSG(int(value[1].decode('ascii')))
                        return
Beispiel #6
0
    def addFriend(self, name):
        sqlCommond = "SELECT * FROM tbl_account WHERE sm_Name = '" + name + "'"

        # 数据库查询回调
        def sqlcallback(result, row, insertid, errstr):
            if errstr:  # 输出错误信息
                ERROR_MSG("Account[%i].reqChangeName:[%s]" % (self.id, errstr))
            elif len(result) == 0:  # 不存在角色名字
                self.client.reqMessageCall("名字为  " + name + "  的角色不存在")
                DEBUG_MSG("Account[%i].addFriend:[%s] || 该角色名不存在" %
                          (self.id, name))
            elif len(result) != 0:  # 名字存在
                dbid = int(result[0][0])
                level = int(result[0][3])

                # 检测在线回调
                def lookUpEntityCallBack(result):
                    if result == True:
                        self.client.reqMessageCall("名字为  " + name + "  的角色不在线")
                        DEBUG_MSG("lookUpEntityCallBack : 玩家不在线")
                    elif result == False:
                        DEBUG_MSG("lookUpEntityCallBack : 其他原因")
                    else:
                        DEBUG_MSG("lookUpEntityCallBack : 玩家在线")
                        #像该id实体的客户端发送好友请求
                        KBEngine.entities[
                            result.id].client.reqAddFriendMessage(
                                self.id, self.Name)

                # 检查该DBID对应实体是否检出  也就是是否在线
                KBEngine.lookUpEntityByDBID("Account", dbid,
                                            lookUpEntityCallBack)

        # 查询数据库
        KBEngine.executeRawDatabaseCommand(sqlCommond, sqlcallback)
Beispiel #7
0
    def onCmdInsertArenaRank(self, param):
        selfDBID = param["selfDBID"]
        isRobot = param["isRobot"]
        sql = "INSERT INTO tbl_ArenaRow (sm_dbid, sm_rank,sm_isRobot)VALUES(" + str(
            selfDBID
        ) + "," + "(	SELECT IFNULL(max(t.sm_rank) + 1,1) FROM tbl_ArenaRow t)," + str(
            isRobot) + ")"

        @util.dbDeco
        def cb(result, rownum, error):
            if isRobot == 0:
                sql1 = "SELECT sm_rank FROM tbl_ArenaRow AS a WHERE a.sm_dbid = " + str(
                    selfDBID) + "  AND a.sm_isRobot = 0"

                @util.dbDeco
                def findMyRank(result, rownum, error):
                    if result is None:
                        return
                    rank = int(result[0][0])
                    playerMB = param["playerMB"]
                    item = {
                        "rank": rank,
                    }
                    playerMB.onPlayerMgrCmd("defaultMyRank", item)

                KBEngine.executeRawDatabaseCommand(sql1, findMyRank)

        KBEngine.executeRawDatabaseCommand(sql, cb, self.id)
Beispiel #8
0
	def __init__(self):
		self.uuid2pid = {}
		self.accountName2pid = {}
		self.cachedInfos = {}
		# SELECT sm_name,sm_wealth FROM const.DB_NAME.tbl_Avatar;
		def queryDatabaseCallBack(result, num, error):
			if error is None:
				if result is not None:
					DEBUG_MSG("result is not None, len(result)=%s, num=%s" % (len(result), num))
					for item in result:
						DEBUG_MSG("sm_uuid: %i sm_name: %s, sm_wealth: %i " % (int(item[0]), str(item[1]), int(item[2])))
						self.cachedInfos[int(item[0])] = {
						'uuid':int(item[0]),
						'name':str(item[1], "utf-8"), 
						 'characterNum':int(item[2]), 
						 'gender':int(item[3]), 
						 'userId':int(item[4]),
						 'dbid':int(item[5]),
						 'curPower':int(item[6]),
						 'blockFriends':int(item[7]),
						 }
				else:
					ERROR_MSG("queryDatabaseCallBack result is None. result=%s, num=%s, error=%s" % (result, num, error))
			else:
				ERROR_MSG("queryDatabaseCallBack error=%s" % (error))
		KBEngine.executeRawDatabaseCommand("SELECT `sm_uuid`,`sm_name`, `sm_characterNum`, \
			`sm_gender`, `sm_userId`, `id`, `sm_curPower`, `sm_blockFriends` FROM "+const.DB_NAME+".tbl_Avatar;", queryDatabaseCallBack)

		return
Beispiel #9
0
	def sendFriendGiftByDBID(self, dbid, gift):
		DEBUG_MSG("Space[%i].sendFriendGiftByDBID %i success." % (self.id, dbid))

		# INSERT sm_name,sm_wealth FROM const.DB_NAME.tbl_Avatar;
		def insertDatabaseCallBack(result, num, error):
			if error is not None:
				ERROR_MSG("Space[%i].sendFriendGiftByDBID %i insertDatabaseCallBack Fail." % (self.id, dbid))
				return
			DEBUG_MSG("Space[%i] insertDatabaseCallBack %i -- %i %s success." % (self.id, dbid, num, str(result)))

			# def queryDatabaseCallBack(result, num, error):
			# 	if error is not None:
			# 		ERROR_MSG("Space[%i].sendFriendGiftByDBID %i queryDatabaseCallBack Fail." % (self.id, dbid))
			# 		return

			# 	if len(result) != 1:
			# 		ERROR_MSG("Space[%i].sendFriendGiftByDBID %i queryDatabaseCallBack result:%s is error." % (self.id, dbid, str(result)))
			# 		return

			# 	for item in gift["attachment"]:
			# 		KBEngine.executeRawDatabaseCommand("INSERT INTO "+const.DB_NAME+".tbl_Avatar_giftList_attachment (parentID, sm_itemId, sm_count) VALUES(%i, %i, %i);" 
			# 			% (int(result[0][0]), item["itemId"], item["count"]), None)
			
			# KBEngine.executeRawDatabaseCommand("SELECT `id` FROM "+const.DB_NAME+".tbl_Avatar_giftList WHERE sm_mid = %i;" % gift["mid"], queryDatabaseCallBack)

		KBEngine.executeRawDatabaseCommand("INSERT INTO "+const.DB_NAME+".tbl_Avatar_canGetFriendGiftList (parentID, sm_gid, sm_time) VALUES(%i, %f, %f);" 
			% (dbid, gift["gid"], gift["time"]), insertDatabaseCallBack)

		return
Beispiel #10
0
	def sendMailByDBID(self, dbid, mail):
		DEBUG_MSG("Space[%i].sendMailByDBID %i success." % (self.id, dbid))


		# INSERT sm_name,sm_wealth FROM const.DB_NAME.tbl_Avatar;
		def insertDatabaseCallBack(result, num, error):
			if error is not None:
				ERROR_MSG("Space[%i].sendMailByDBID %i insertDatabaseCallBack Fail." % (self.id, dbid))
				return
			DEBUG_MSG("Space[%i] insertDatabaseCallBack %i -- %i %s success." % (self.id, dbid, num, str(result)))

			def queryDatabaseCallBack(result, num, error):
				if error is not None:
					ERROR_MSG("Space[%i].sendMailByDBID %i queryDatabaseCallBack Fail." % (self.id, dbid))
					return

				if len(result) != 1:
					ERROR_MSG("Space[%i].sendMailByDBID %i queryDatabaseCallBack result:%s is error." % (self.id, dbid, str(result)))
					return

				for item in mail["attachment"]:
					KBEngine.executeRawDatabaseCommand("INSERT INTO "+const.DB_NAME+".tbl_Avatar_mailList_attachment (parentID, sm_itemId, sm_count) VALUES(%i, %i, %i);" 
						% (int(result[0][0]), item["itemId"], item["count"]), None)
			
			KBEngine.executeRawDatabaseCommand("SELECT `id` FROM "+const.DB_NAME+".tbl_Avatar_mailList WHERE sm_mid = %i;" % mail["mid"], queryDatabaseCallBack)

		KBEngine.executeRawDatabaseCommand("INSERT INTO "+const.DB_NAME+".tbl_Avatar_mailList (parentID, sm_mid, sm_type, sm_time, sm_title, sm_info, sm_from) VALUES(%i, %i, %i, %f, \"%s\", \"%s\", \"%s\");" 
			% (dbid, mail["mid"], mail["type"], mail["time"], mail["content"]["title"], mail["content"]["info"], mail["from"]), insertDatabaseCallBack)

		return
Beispiel #11
0
    def find(self, fields, cb, table=None):
        """
        :param fields: select 的字段列表
        :param cb: 回调函数,参数有两个(result_list, error),表示结果列表和错误信息
        :param table: 表结构名
        :return:
        """
        _table = self._get_table(table)
        filter_phase = self._get_filter_phase()
        if filter_phase:
            sql = "SELECT {fields} FROM {table} WHERE {filter_phase}".format(
                table=_table,
                fields=",".join(fields),
                filter_phase=self._gen_filter_phase(filter_phase))
        else:
            sql = "SELECT {fields} FROM {table}".format(
                fields=",".join(fields), table=_table)

        if self._orders:
            order_phase = self._get_order_phase()
            sql += order_phase

        if self._limit:
            sql += " limit %s" % self._limit

        DEBUG_MSG("DML::find sql: %s" % sql)
        KBEngine.executeRawDatabaseCommand(
            sql, Functor(self.find_cb, cb, fields, _table, sql))
Beispiel #12
0
    def initOfflineData(self):
        colTuple = ("id", "sm_name", "sm_photoIndex", "sm_level", "sm_club",
                    "sm_fightValue", "sm_vipLevel", "sm_logoutTime")
        sql = util.getSelectSql("tbl_Avatar", colTuple)

        @util.dbDeco
        def queryResult(result, rownum, error):
            for item in result:
                playerInfo = {}
                playerInfo[FriendInfoKey.DBID] = int(item[0])
                playerInfo[FriendInfoKey.name] = item[1].decode('utf-8')
                playerInfo[FriendInfoKey.photoIndex] = str(item[2])
                playerInfo[FriendInfoKey.level] = int(item[3])
                playerInfo[FriendInfoKey.clubName] = item[4].decode('utf-8')
                playerInfo[FriendInfoKey.fightValue] = int(item[5])
                playerInfo[FriendInfoKey.vipLevel] = int(item[6])
                playerInfo[FriendInfoKey.onlineState] = int(item[7])

                self.dbidToOfflinePlayerInfo[playerInfo[
                    FriendInfoKey.DBID]] = playerInfo

                self.allPlayerInfo.append(playerInfo)
            self.allPlayerInfo.sort(key=lambda x: (x[
                FriendInfoKey.onlineState], x[FriendInfoKey.level]))

        KBEngine.executeRawDatabaseCommand(sql, queryResult)
Beispiel #13
0
def findAvatarByUserId(user_id, callback=None):
    select_sql = "SELECT {} FROM {}.tbl_Avatar WHERE sm_userId={}".format(
        ','.join(UINFO_DEFAULT), switch.DB_NAME, user_id)

    def select_cb(result, rows, insertid, error):
        # DEBUG_MSG("findAvatarByUserId result:", result)
        if result:
            result = result[0]
            user_info = {
                'id': int(result[0]),
                'uuid': int(result[1]),
                'userId': int(result[2]),
                'accountName': str(result[3], 'utf-8'),
                'name': str(result[4], 'utf-8'),
                'head_icon': str(result[5], 'utf-8'),
                'sex': int(result[6]),
                'isAgent': int(result[7]),
                'login_time': int(result[8]),
                'logout_time': int(result[9]),
            }
            # DEBUG_MSG("findAvatarByUserId result:", user_info)
            callable(callback) and callback(user_info, None)
        else:
            callable(callback) and callback(None, None)
            if error:
                ERROR_MSG("dbi findAvatarByUserId Error = {}".format(error))

    KBEngine.executeRawDatabaseCommand(select_sql, select_cb)
Beispiel #14
0
    def reqChangeName(self, name):
        """
		数据库查询语句
		"SELECT * FROM tbl_account WHERE sm_Name = '" + name + "'"
		"SELECT * FROM kbe.tbl_account WHERE sm_Name = '" + name + "'"
		"""
        sqlCommond = "SELECT * FROM tbl_account WHERE sm_Name = '" + name + "'"

        #回调函数
        def sqlcallback(result, row, insertid, errstr):
            if errstr:  #输出错误信息
                ERROR_MSG("Account[%i].reqChangeName:[%s]" % (self.id, errstr))
                self.client.reqChangeNameCall(errstr)
            elif len(result) == 0:  #不存在则注册名字
                if name == "":
                    return
                self.Name = name
                DEBUG_MSG("Account[%i].reqChangeName:[%s]" % (self.id, name))
                # 写入数据库  回调函数暂无
                self.writeToDB()
                self.client.reqChangeNameCall("success")
            elif len(result) != 0:  #告诉客户端 名字已存在
                DEBUG_MSG("该名字已存在")
                self.client.reqChangeNameCall("repetition")

        #查询数据库
        KBEngine.executeRawDatabaseCommand(sqlCommond, sqlcallback)
Beispiel #15
0
    def readMail(self, mailTime):
        findKey = -1
        mailsCount = len(self.mails)

        state = Mails.Mail_State_read

        @util.dbDeco
        def updateSucCB(result, rownum, error):
            if findKey != -1:
                self.mails[findKey]["state"] = state

                self.client.onOperateSuc("readMail")

        for i in range(mailsCount):
            mail = self.mails[i]

            if mail["time"] == mailTime:
                if mail["state"] != Mails.Mail_State_Not_Open:
                    return
                findKey = i
                if mail["attachment"] != "":
                    state = Mails.Mail_State_Has_Open_Not_Get

                setValueMap = {"state": state}
                filterValueMap = {"to_dbid": self.databaseID, "time": mailTime}
                sql = util.getUpdateSql("tbl_Mails", setValueMap,
                                        filterValueMap)
                KBEngine.executeRawDatabaseCommand(sql, updateSucCB)

                break
Beispiel #16
0
    def reqCash(self, amount, alipay):
        #请求兑现
        retcode = 0
        income = 0
        if self.alipay != alipay:
            self.alipay = alipay

        #进行写入兑现数据表操作,并扣去玩家对应金额
        if (self.gold - amount) >= d_users["base_money"]:
            self.gold -= amount
            if amount <= d_users["duixian_base"]:
                income = d_users["duixian_base_fee"]
            else:
                income += d_users["duixian_base_fee"]
                rate = (int)((amount - d_users["duixian_base"]) /
                             d_users["duixian_add"])
                remain = (int)((amount - d_users["duixian_base"]) %
                               (int)(d_users["duixian_add"]))
                income += rate * d_users["duixian_add_fee"]
                if remain > 0:
                    income += d_users["duixian_add_fee"]

            curAmount = amount - income
            KBEngine.globalData["Games"].addIncome(income)
            sql = "insert into TBL_WITHDDRAW(USER,ZHIFUBAO_NUMBER,ADDTIME,AMOUNT) values('%s','%s','%s','%s')" \
               % (self.__ACCOUNT_NAME__,self.alipay,datetime.now(),str(curAmount))
            KBEngine.executeRawDatabaseCommand(sql, None)
        else:
            retcode = -1

        if self.client:
            self.client.onCash(retcode, self.gold, self.alipay)
Beispiel #17
0
    def userPaySuccess(self, cmd):
        proxy, user_id, count = cmd[0], int(cmd[1]), int(cmd[2])

        DEBUG_MSG("PlayerChargeCard cmd {0}->{1}->{2}.".format(
            proxy, user_id, count))

        for k in self.avatars:
            p = self.avatars[k]
            if p.userId == user_id:
                DEBUG_MSG(
                    "PlayerChargeCard Succeed {0}->{1}->{2} Online.".format(
                        proxy, user_id, count))
                p.addCards(count)
                p.writeToDB()
                break
        else:
            DEBUG_MSG("TO DATABASE {0}->{1}->{2} Online.".format(
                proxy, user_id, count))

            # 玩家下线, 直接写入数据库
            def updateDatabaseCallBack(result, num, insert_id, error):
                if error is not None:
                    ERROR_MSG("PlayerChargeCard Failed {0}->{1}->{2}.".format(
                        proxy, user_id, count))
                    return
                DEBUG_MSG(
                    "PlayerChargeCard Succeed {0}->{1}->{2} num={3} result={4}."
                    .format(proxy, user_id, count, num, str(result)))

            cmd = "UPDATE {0}.tbl_Avatar SET sm_cards = sm_cards + {1} WHERE sm_userID = {2}".format(
                const.DB_NAME, count, user_id)
            KBEngine.executeRawDatabaseCommand(cmd, updateDatabaseCallBack)
Beispiel #18
0
        def insertDatabaseCallBack(result, num, insert_id, error):
            if error is not None:
                ERROR_MSG(
                    "Space[%i].sendMailByDBID %i insertDatabaseCallBack Fail."
                    % (self.id, dbid))
                return
            DEBUG_MSG("Space[%i] insertDatabaseCallBack %i -- %i %s success." %
                      (self.id, dbid, num, str(result)))

            def queryDatabaseCallBack(result, num, insert_id, error):
                if error is not None:
                    ERROR_MSG(
                        "Space[%i].sendMailByDBID %i queryDatabaseCallBack Fail."
                        % (self.id, dbid))
                    return

                if len(result) != 1:
                    ERROR_MSG(
                        "Space[%i].sendMailByDBID %i queryDatabaseCallBack result:%s is error."
                        % (self.id, dbid, str(result)))
                    return

                for item in mail["attachment"]:
                    KBEngine.executeRawDatabaseCommand(
                        "INSERT INTO " + const.DB_NAME +
                        ".tbl_Avatar_mailList_attachment (parentID, sm_itemId, sm_count) VALUES(%i, %i, %i);"
                        % (int(result[0][0]), item["itemId"], item["count"]),
                        None)

            KBEngine.executeRawDatabaseCommand(
                "SELECT `id` FROM " + const.DB_NAME +
                ".tbl_Avatar_mailList WHERE sm_mid = %i;" % mail["mid"],
                queryDatabaseCallBack)
Beispiel #19
0
 def CheckCanSteal(self, stealDBID, ByStealDBID, callback):
     sql = "select count(*) from kbe.tbl_Account_Land_LandData where parentID in (select id from kbe.tbl_Account_Land where parentID = %i) \
     and sm_stage = 6 and sm_surpHarvest > (sm_Harvest/2) and not find_in_set('%i',sm_StealList) " % (
         ByStealDBID, stealDBID)
     KBEngine.executeRawDatabaseCommand(
         sql,
         Functor.Functor(self.CanStealsqlcallback, stealDBID, ByStealDBID,
                         callback))
Beispiel #20
0
def onTick(timerID):
    """
	"""
    INFO_MSG('onTick()')

    # 测试数据库查询
    KBEngine.executeRawDatabaseCommand(
        "select * from kbe_accountinfos limit 3;", onSqlCallback)
Beispiel #21
0
def onTick(timerID):
	"""
	"""
	INFO_MSG('onTick()')

	# 测试数据库查询
	KBEngine.executeRawDatabaseCommand("select * from kbe_accountinfos limit 3;", onSqlCallback)
	KBEngine.urlopen("https://www.baidu.com", onHttpCallback)
Beispiel #22
0
    def init_database():
        def create_callback(result, rows, insert_id, errorCode):
            DEBUG_MSG("room record init_database: {0}, {1}, {2},{3}".format(
                result, rows, insert_id, errorCode))

        KBEngine.executeRawDatabaseCommand(
            'CREATE TABLE IF NOT EXISTS {0} ( id INT NOT NULL AUTO_INCREMENT,record_id INT,player_id_list VARCHAR(255) NOT NULL, record TEXT NOT NULL, create_time DATETIME,PRIMARY KEY (id)) DEFAULT CHARSET = utf8;'
            .format(const.TABLE_GAME_RECORD_NAME), create_callback)
Beispiel #23
0
def _onBigWorldCreateCB(baseRef, dbid, wasActive):
    if baseRef is None:
        DEBUG_MSG("_onBigWorldCreateCB-failed")
        KBEngine.executeRawDatabaseCommand("SELECT * from mini_Spaces",
                                           _dbCmdSelectCB)
        # KBEngine.executeRawDatabaseCommand("INSERT INTO MiniGame.tbl_BigWorld VALUES(0,0,0,0,0,0,0,0,0)", _dbCmdCB)
    else:
        DEBUG_MSG("_onBigWorldCreateCB-success")
Beispiel #24
0
 def insertDatabaseCallBack(result, num, insert_id, error):
     cmd = ''
     parentID = insert_id
     for x in all_list:
         if x['userId'] <= 0:
             continue
         cmd = 'INSERT INTO {0}.tbl_Avatar_rank_detailed (parentID, sm_userId, sm_nickname, sm_score) VALUES({1}, {2},"{3}",{4});' \
         .format(const.DB_NAME, parentID, x['userId'], x['nickname'], x['score'])
         KBEngine.executeRawDatabaseCommand(cmd, None)
Beispiel #25
0
	def _insert_record(self, record_id, player_id_list, record):
		def insert_callback(result, rows, insert_id, error):
			DEBUG_MSG('insert_callback {0}, {1}, {2}, {3}'.format(result, rows, insert_id, error))

		del self.recordNoneCache[record_id]
		sql = 'INSERT INTO {0} (record_id, player_id_list,record,create_time) VALUES ("{1}", "{2}","{3}","{4}")' \
			.format(const.TABLE_GAME_RECORD_NAME, record_id, json.dumps(player_id_list), re.escape(record),
					datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
		KBEngine.executeRawDatabaseCommand(sql, insert_callback)
Beispiel #26
0
 def reqCreateRole(self, name, career):
     self.params = {
         "name": name,
         "career": career,
         "level": 1,
     }
     KBEngine.executeRawDatabaseCommand(
         "select * from tbl_Role where sm_name='%s'" % name,
         self.sqlcallback)
 def findFriends(self, exposed):
     """
     返回数据库中的所有注册人员在客户端进行比对,在客户端检测是否有此搜索朋友
     """
     DEBUG_MSG("FindFriends")
     avatarId = self.id
     KBEngine.globalData["avatarId"] = self.id
     DEBUG_MSG(avatarId)
     KBEngine.executeRawDatabaseCommand(
         "SELECT sm_entityName from tbl_Avatar", _getAllEntityName)
Beispiel #28
0
def deleteClub(club_id, callback=None):
	delete_sql = "DELETE FROM {}.tbl_Avatar_clubList WHERE sm_value={}".format(switch.DB_NAME, club_id)

	def delete_cb(result, rows, insertid, error):
		if error:
			ERROR_MSG("kickOutClub delete_cb Error = {}".format(error))
			callable(callback) and callback(False, error)
		else:
			callable(callback) and callback(True, None)

	KBEngine.executeRawDatabaseCommand(delete_sql, delete_cb)
Beispiel #29
0
    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)
Beispiel #30
0
def insertIntoAvatarClubList(dbid, club_id, callback=None):
	insert_sql = "INSERT INTO {}.tbl_Avatar_clubList (`parentID`,`sm_value`) VALUES ({}, {})".format(switch.DB_NAME, dbid, club_id)

	def insert_cb(result, rows, insertid, error):
		if error:
			ERROR_MSG("dbi insertIntoAvatarClubList result = {} {}".format(result, (rows, insertid, error)))
			callable(callback) and callback(False, error)
		else:
			callable(callback) and callback(True, None)

	KBEngine.executeRawDatabaseCommand(insert_sql, insert_cb)
Beispiel #31
0
def onBaseAppReady(isBootstrap):
	"""
	KBEngine method.
	baseapp已经准备好了
	@param isBootstrap: 是否为第一个启动的baseapp
	@type isBootstrap: BOOL
	"""
	bootIdxGroup = int(os.getenv("KBE_BOOTIDX_GROUP"))
	bootIdxGlobal = int(os.getenv("KBE_BOOTIDX_GLOBAL"))
	INFO_MSG('onBaseAppReady: isBootstrap=%s, bootstrapGroupIndex=%s, bootstrapGlobalIndex=%s' % (isBootstrap, bootIdxGroup, bootIdxGlobal))
	
	table_vex = "map_%s_vex" % (bootIdxGroup)
	table_arc = "map_%s_arc" % (bootIdxGroup)
	table_triangle = "map_%s_triangle" % (bootIdxGroup)
	
	cmd = "CREATE TABLE IF NOT EXISTS `%s`(`id` BIGINT UNSIGNED NOT NULL, `campId` TINYINT NOT NULL, `position_x` INT NOT NULL, `position_y` INT NOT NULL, PRIMARY KEY(`id`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;" % (table_vex)
	KBEngine.executeRawDatabaseCommand(cmd, None, bootIdxGlobal)
	cmd = "CREATE TABLE IF NOT EXISTS `%s`(`id1` BIGINT UNSIGNED NOT NULL, `id2` BIGINT UNSIGNED NOT NULL) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;" % (table_arc)
	KBEngine.executeRawDatabaseCommand(cmd, None, bootIdxGlobal)
	cmd = "CREATE TABLE IF NOT EXISTS `%s`(`id1` BIGINT UNSIGNED NOT NULL, `id2` BIGINT UNSIGNED NOT NULL, `id3` BIGINT UNSIGNED NOT NULL) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;" % (table_triangle)
	KBEngine.executeRawDatabaseCommand(cmd, None, bootIdxGlobal)
	
	cmd = "SELECT `id`, `campId`, `position_x`, `position_y` FROM `%s`;" % (table_vex)
	KBEngine.executeRawDatabaseCommand(cmd, dbGetVexs, bootIdxGlobal)
	
	cmd = "SELECT `id1`, `id2` FROM `%s`;" % (table_arc)
	KBEngine.executeRawDatabaseCommand(cmd, dbGetArcs, bootIdxGlobal)
	
	cmd = "SELECT `id1`, `id2`, `id3` FROM `%s`;" % (table_triangle)
	KBEngine.executeRawDatabaseCommand(cmd, dbGetTriangles, bootIdxGlobal)