Example #1
0
	def garcha_skill10(usr):
		"""
		求技能10次
		"""
		
		gameConf = config.getConfig('game')
		
		goldCost = gameConf['garcha_skill_10_price']['gold']
		gemCost = gameConf['garcha_skill_10_price']['gem']
		
		if usr.gold < goldCost:
			return {'msg':'gold_not_enough'}
		if usr.gem < gemCost:
			return {'msg':'gem_not_enough'}	
				
		awd = {}
		awd = drop.open(usr, gameConf['garcha_skill_10_dropid1'], awd)
		
		for i in range(9):
			awd = drop.open(usr, gameConf['garcha_skill_10_dropid2'], awd)
					
		data = drop.makeData(awd, {})
		
		usr.gold = usr.gold - goldCost
		usr.gem = usr.gem - gemCost
		
		usr.save()
		
		data['gold'] = usr.gold
		data['gem'] = usr.gem
		return data
Example #2
0
    def garcha_skill10(usr):
        """
		求技能10次
		"""

        gameConf = config.getConfig('game')

        goldCost = gameConf['garcha_skill_10_price']['gold']
        gemCost = gameConf['garcha_skill_10_price']['gem']

        if usr.gold < goldCost:
            return {'msg': 'gold_not_enough'}
        if usr.gem < gemCost:
            return {'msg': 'gem_not_enough'}

        awd = {}
        awd = drop.open(usr, gameConf['garcha_skill_10_dropid1'], awd)

        for i in range(9):
            awd = drop.open(usr, gameConf['garcha_skill_10_dropid2'], awd)

        data = drop.makeData(awd, {})

        usr.gold = usr.gold - goldCost
        usr.gem = usr.gem - gemCost

        usr.save()

        data['gold'] = usr.gold
        data['gem'] = usr.gem
        return data
Example #3
0
    def inviteAward(usr, inviteCount):
        """
		邀请领奖
		"""

        if inviteCount > len(usr.invite['invite']):
            return {'msg': 'invite_count_not_enough'}

        while len(usr.invite['invite_award']) < (inviteCount + 1):
            usr.invite['invite_award'].append('')

        if usr.invite['invite_award'][inviteCount]:
            return {'msg': 'invite_award_already_have'}

        inviteConf = config.getConfig('invite')

        dropid = inviteConf['invite_award'][inviteCount - 1]
        if not dropid:
            return {'msg': 'invite_not_have_award'}

        usr.invite['invite_award'][inviteCount] = dropid
        awd = {}
        awd = drop.open(usr, dropid, awd)
        data = drop.makeData(awd, {})
        #data.update(invite.getClientData(usr))
        usr.save()

        data['invite_award'] = []
        for (i, di) in enumerate(usr.invite['invite_award']):
            if di:
                data['invite_award'].append(i + 1)

        return data
Example #4
0
	def finishQuest(self, questid):
		"""
		完成任务
		"""
		if not self.current.has_key(questid):
			return {'msg':'quest_not_exist'}
		q = self.current[questid]
		usr = self.user				
		questConf = config.getConfig('quest')
		questInfo = questConf[questid]		
		
		if (not quest.isFinish(questid, q)) and (questInfo['finishType'] != 'talk_npc_id'):
			return {'msg':'quest_not_finish'}
		q['count'] = q['count'] + 1
		
		del self.current[questid]
		self.finish[questid] = q		

		newQuest = self.acceptNextQuest(questid, questInfo, questConf)	
		
		data = {}
		data['finish_quest'] = questid
		if newQuest:
			data['accept_quest'] = newQuest
		if questInfo['dropid']:
			data = drop.open(usr, questInfo['dropid'], data)		
		self.save()
		return data
Example #5
0
    def garcha_skill(usr, nature):
        """
		求技能
		"""
        gameConf = config.getConfig('game')

        if (nature > len(gameConf['garcha_skill_dropid'])) or (nature < 0):
            return {'msg': 'parameter_bad'}

        goldCost = gameConf['garcha_skill_price'][nature - 1]['gold']
        gemCost = gameConf['garcha_skill_price'][nature - 1]['gem']

        if int(goldCost) == 0 and int(gemCost) == 0:
            return {'msg': 'parameter_bad'}

        if usr.gold < goldCost:
            return {'msg': 'gold_not_enough'}
        if usr.gem < gemCost:
            return {'msg': 'gem_not_enough'}

        awd = {}
        awd = drop.open(usr, gameConf['garcha_skill_dropid'][nature - 1], awd)

        data = drop.makeData(awd, {})

        usr.gold = usr.gold - goldCost
        usr.gem = usr.gem - gemCost

        data['gold'] = usr.gold
        data['gem'] = usr.gem
        return data
Example #6
0
	def draw_award(usr, position):
		"""
		开服奖励
		"""
		openAwardConf = config.getConfig('open_award')
		drawidx = []
		
		for t in usr.signin['draw_award_time']:
			if is_same_day(t, currentTime()):
				return {'msg':'open_award_already_get'}
		
		for idx, ad in enumerate(openAwardConf['draw_award']):
			 if len(usr.signin['draw_award_time']) > idx and not usr.signin['draw_award_time'][idx]:
			 	continue
			 if ad['day'] > len(usr.signin['draw_award_time']):
			 	continue			 	
			 drawidx.append(idx)
			 
		if not drawidx:
			return {'msg':'open_award_already_get'}
			
		adidx = random.sample(drawidx, 1)[0]
		ad = openAwardConf['draw_award'][adidx]
		awd = {}
		awd = drop.open(usr, ad['dropid'], awd)
		while len(usr.signin['draw_award_time']) <= adidx:
			usr.signin['draw_award_time'].append({})
		usr.signin['draw_award_time'][adidx] = {'time':currentTime(), 'position': position}
		usr.save()
		data = drop.makeData(awd, {})
		
		return data	
Example #7
0
	def inviteAward(usr, inviteCount):
		"""
		邀请领奖
		"""
		
		if inviteCount > len(usr.invite['invite']):
			return {'msg':'invite_count_not_enough'}
							
		while len(usr.invite['invite_award']) < (inviteCount + 1):
			usr.invite['invite_award'].append('')
		
		if usr.invite['invite_award'][inviteCount]:
			return {'msg':'invite_award_already_have'}
				
		inviteConf = config.getConfig('invite')
		
		dropid = inviteConf['invite_award'][inviteCount - 1]
		if not dropid:
			return {'msg': 'invite_not_have_award'}
					
		usr.invite['invite_award'][inviteCount] = dropid
		awd = {}
		awd = drop.open(usr, dropid, awd)		
		data = drop.makeData(awd, {})				
		#data.update(invite.getClientData(usr))
		usr.save()
		
		data['invite_award'] = []
		for (i, di) in enumerate(usr.invite['invite_award']):
			if di:
				data['invite_award'].append(i + 1)			
		
		return data
Example #8
0
	def emailOpen(self, id):
		"""
		打开邮件
		"""
		
		if not self.email.has_key(id):
			return {'msg':'email_not_exist'}
		
		if self.email[id]['open']:
			return {'msg':'email_already_open'}
		
		usr = self.user
		emailConf = config.getConfig('email')
		emailInfo = emailConf[self.email[id]['emailid']]
		if emailInfo:
			awd = {}
			awd = drop.open(usr, emailInfo['dropid'], awd)
			awd = drop.makeData(awd, {})
		self.email[id]['open'] = True
		
		self.save()
		
		data = awd
		data['email_update'] = self.email[id]
		return data
Example #9
0
    def emailOpen(self, id):
        """
		打开邮件
		"""

        if not self.email.has_key(id):
            return {'msg': 'email_not_exist'}

        if self.email[id]['open']:
            return {'msg': 'email_already_open'}

        usr = self.user
        emailConf = config.getConfig('email')
        emailInfo = emailConf[self.email[id]['emailid']]
        if emailInfo:
            awd = {}
            awd = drop.open(usr, emailInfo['dropid'], awd)
            awd = drop.makeData(awd, {})
        self.email[id]['open'] = True

        self.save()

        data = awd
        data['email_update'] = self.email[id]
        return data
Example #10
0
	def garcha_skill(usr, nature):
		"""
		求技能
		"""
		gameConf = config.getConfig('game')
		
		if (nature > len(gameConf['garcha_skill_dropid'])) or (nature < 0):
			return {'msg':'parameter_bad'}
				
		goldCost = gameConf['garcha_skill_price'][nature - 1]['gold']
		gemCost = gameConf['garcha_skill_price'][nature - 1]['gem']
		
		if int(goldCost) == 0 and int(gemCost) == 0:
			return {'msg':'parameter_bad'}
		
		if usr.gold < goldCost:
			return {'msg':'gold_not_enough'}
		if usr.gem < gemCost:
			return {'msg':'gem_not_enough'}	
				
		awd = {}
		awd = drop.open(usr, gameConf['garcha_skill_dropid'][nature - 1], awd)	
			
		data = drop.makeData(awd, {})
		
		usr.gold = usr.gold - goldCost
		usr.gem = usr.gem - gemCost
		
		data['gold'] = usr.gold
		data['gem'] = usr.gem
		return data
Example #11
0
	def battle_award(usr, battleRoleid, create_time):
		"""
		战斗奖励
		"""
		res = infection.BattleAward(usr, battleRoleid, create_time)
		if res.has_key('msg'):
			return res
		
		awd = {}
		if res.has_key('call_dropid'):
			awd = drop.open(usr, res['call_dropid'], awd)
		if res.has_key('last_hit_dropid'):
			awd = drop.open(usr, res['last_hit_dropid'], awd)
		if res.has_key('hit_dropid'):
			awd = drop.open(usr, res['hit_dropid'], awd)			
		data = drop.makeData(awd, {})
		
		return data
Example #12
0
    def battle_award(usr, battleRoleid, create_time):
        """
		战斗奖励
		"""
        res = infection.BattleAward(usr, battleRoleid, create_time)
        if res.has_key('msg'):
            return res

        awd = {}
        if res.has_key('call_dropid'):
            awd = drop.open(usr, res['call_dropid'], awd)
        if res.has_key('last_hit_dropid'):
            awd = drop.open(usr, res['last_hit_dropid'], awd)
        if res.has_key('hit_dropid'):
            awd = drop.open(usr, res['hit_dropid'], awd)
        data = drop.makeData(awd, {})

        return data
Example #13
0
def end(request):
    """
	结束地下城
	"""
    battleId = request.GET['battle_id']
    fieldId = request.GET['field_id']
    star = request.GET['star']
    star = int(star)
    usr = request.user
    dun = usr.getDungeon()
    dunConf = config.getConfig('dungeon')

    if dun.curren_field['battleid'] != battleId or fieldId != dun.curren_field[
            'fieldid']:
        return {'msg': 'dungeon_finished'}

    for battleConf in dunConf:
        if battleConf['battleId'] == battleId:
            for fieldConf in battleConf['field']:
                if fieldConf['fieldId'] == fieldId:
                    gameConf = config.getConfig('game')
                    exp = fieldConf['exp']
                    if dun.daily_recored[battleId][fieldId]['vip_reset']:
                        exp = int(exp * gameConf['dungeon_reset_benefit'])
                    usr.gainExp(exp)
                    data = {}
                    if fieldConf['dropid']:
                        awd = {}
                        awd = drop.open(usr, fieldConf['dropid'], awd)
                        data = dun.award()
                        data = drop.makeData(awd, data)

                    data['exp'] = usr.exp
                    data['level'] = usr.level
                    data['gold'] = usr.gold

                    infectionBattle = infection.dungeon_encounter(usr)
                    if infectionBattle:
                        if not infectionBattle.has_key('msg'):
                            data['infection_battle'] = infectionBattle
                    #if dun.curren_field['battleid'] == dun.last_dungeon['battleid'] and dun.curren_field['fieldid'] == dun.last_dungeon['fieldid']:
                    #	dun.nextField()
                    dun.curren_field = {'battleid': '', 'fieldid': ''}
                    dun.normalRecordEnd(battleId, fieldId, star)
                    #data['last_dungeon'] = dun.last_dungeon
                    qt = usr.getQuest()
                    qt.updateDungeonCountQuest()
                    qt.updateFinishDungeonQuest(battleId, fieldId)
                    dun.save()
                    return data
    return {'msg': 'field_not_exist'}
Example #14
0
def end(request):
	"""
	结束地下城
	"""
	battleId = request.GET['battle_id']
	fieldId = request.GET['field_id']
	star = request.GET['star']
	star = int(star)
	usr = request.user
	dun = usr.getDungeon()	
	dunConf = config.getConfig('dungeon')
	
	if dun.curren_field['battleid'] != battleId or fieldId != dun.curren_field['fieldid']:
		return {'msg':'dungeon_finished'}
	
	for battleConf in dunConf:
		if battleConf['battleId'] == battleId:
			for fieldConf in battleConf['field']:
				if fieldConf['fieldId'] == fieldId:
					gameConf = config.getConfig('game')
					exp = fieldConf['exp']
					if dun.daily_recored[battleId][fieldId]['vip_reset']:
						exp = int(exp * gameConf['dungeon_reset_benefit'])
					usr.gainExp(exp)
					data = {}
					if fieldConf['dropid']:
						awd = {}					
						awd = drop.open(usr, fieldConf['dropid'], awd)					
						data = dun.award()
						data = drop.makeData(awd, data)
						
					data['exp'] = usr.exp
					data['level'] = usr.level
					data['gold'] = usr.gold	
					
					infectionBattle = infection.dungeon_encounter(usr)
					if infectionBattle:
						if not infectionBattle.has_key('msg'):
							data['infection_battle'] = infectionBattle
					#if dun.curren_field['battleid'] == dun.last_dungeon['battleid'] and dun.curren_field['fieldid'] == dun.last_dungeon['fieldid']:
					#	dun.nextField()
					dun.curren_field = {'battleid':'', 'fieldid':''}
					dun.normalRecordEnd(battleId, fieldId, star)
					#data['last_dungeon'] = dun.last_dungeon
					qt = usr.getQuest()
					qt.updateDungeonCountQuest()
					qt.updateFinishDungeonQuest(battleId, fieldId)
					dun.save()
					return data					
	return {'msg':'field_not_exist'}
Example #15
0
	def prestige_award(usr):
		"""
		声望奖励
		"""
		res = infection.PrestigeAward(usr)
		if res.has_key('msg'):
			return res
		
		awd = {}
		for dropid in res['award']:
			awd = drop.open(usr, dropid, awd)
		data = drop.makeData(awd, {})
		
		return data
Example #16
0
    def prestige_award(usr):
        """
		声望奖励
		"""
        res = infection.PrestigeAward(usr)
        if res.has_key('msg'):
            return res

        awd = {}
        for dropid in res['award']:
            awd = drop.open(usr, dropid, awd)
        data = drop.makeData(awd, {})

        return data
Example #17
0
    def do_signin(usr):
        """
		是否签名
		"""

        now = currentTime()

        if signin.have_signin(usr, now):
            return {'msg': 'signin_already_have'}

        signinConf = config.getConfig('signin')
        signin_index = (usr.signin['login_count'] - 1) % len(signinConf)
        signinAward = signinConf[signin_index]

        awd = {}
        awd = drop.open(usr, signinAward['dropid'], awd)
        awd = drop.makeData(awd, {})
        usr.signin['last_signin_time'] = now
        usr.save()
        return awd
Example #18
0
	def do_signin(usr):
		"""
		是否签名
		"""
		
		now = currentTime()
		
		if signin.have_signin(usr, now):
			return {'msg':'signin_already_have'}
		
		signinConf = config.getConfig('signin')
		signin_index = (usr.signin['login_count'] - 1) % len(signinConf)
		signinAward = signinConf[signin_index]
		
		awd = {}
		awd = drop.open(usr, signinAward['dropid'], awd)
		awd = drop.makeData(awd, {})
		usr.signin['last_signin_time'] = now
		usr.save()
		return awd		
Example #19
0
	def enterInviteCode(usr, invite_code):
		"""
		输入邀请码
		"""
		
		gameConf = config.getConfig('game')				
		accountid = inviteU.reverseCode(invite_code)
		
		now = currentTime()
		if now - usr.invite['open_time'] > gameConf['invite_open_duration']:
			return {'msg':'invite_not_available'}
		
		invAccount = usr.getAccountCls().get(accountid)
		if not invAccount:
			return {'msg':'invite_code_bad'}
		if usr.accountid == accountid:
			return {'msg': 'invite_can_not_self'}
			
		invUsr = invAccount.getUser()
		if len(invUsr.invite['invite']) >= gameConf['invite_max_count']:
			return {'msg': 'invitee_max_count'}
		if str(usr.roleid) in invUsr.invite['invite']:
			return {'msg':'invite_code_already_use'}
		invUsr.invite['invite'].append(str(usr.roleid))
		
		if str(invUsr.roleid) in usr.invite['invitee']:
			return {'msg':'invite_code_already_use'}
		usr.invite['invitee'].append(str(invUsr.roleid))
		
		inviteConf = config.getConfig('invite')
		
		dropid = inviteConf['invitee_award']
		awd = {}
		data = {}
		if dropid:
			awd = drop.open(usr, dropid, awd)
			data = drop.makeData(awd, {})
		
		invUsr.save()
		usr.save()		
		return data
Example #20
0
    def enterInviteCode(usr, invite_code):
        """
		输入邀请码
		"""

        gameConf = config.getConfig('game')
        accountid = inviteU.reverseCode(invite_code)

        now = currentTime()
        if now - usr.invite['open_time'] > gameConf['invite_open_duration']:
            return {'msg': 'invite_not_available'}

        invAccount = usr.getAccountCls().get(accountid)
        if not invAccount:
            return {'msg': 'invite_code_bad'}
        if usr.accountid == accountid:
            return {'msg': 'invite_can_not_self'}

        invUsr = invAccount.getUser()
        if len(invUsr.invite['invite']) >= gameConf['invite_max_count']:
            return {'msg': 'invitee_max_count'}
        if str(usr.roleid) in invUsr.invite['invite']:
            return {'msg': 'invite_code_already_use'}
        invUsr.invite['invite'].append(str(usr.roleid))

        if str(invUsr.roleid) in usr.invite['invitee']:
            return {'msg': 'invite_code_already_use'}
        usr.invite['invitee'].append(str(invUsr.roleid))

        inviteConf = config.getConfig('invite')

        dropid = inviteConf['invitee_award']
        awd = {}
        data = {}
        if dropid:
            awd = drop.open(usr, dropid, awd)
            data = drop.makeData(awd, {})

        invUsr.save()
        usr.save()
        return data
Example #21
0
    def rank_award(usr, rk):
        """
		排名奖励
		"""
        if not usr.arena['rank_award'].has_key(rk):
            return {'msg': 'arena_rank_award_not_exist'}
        if not usr.arena['rank_award'][rk]:
            return {'msg': 'arena_rank_award_already_have'}

        gameConf = config.getConfig('game')

        for item in gameConf['arena_rank_award']:
            if item['rank'] == int(rk):
                #res = arena.award_score(usr.roleid, item['point'])
                data = {}
                awd = drop.open(usr, item['drop'], {})
                data = drop.makeData(awd, {})
                usr.arena['rank_award'][rk] = False
                usr.save()
                return data
        return {'msg': 'arena_rank_award_not_exist'}
Example #22
0
	def rank_award(usr, rk):
		"""
		排名奖励
		"""
		if not usr.arena['rank_award'].has_key(rk):
			return {'msg':'arena_rank_award_not_exist'}
		if not usr.arena['rank_award'][rk]:
			return {'msg':'arena_rank_award_already_have'}
		
		gameConf = config.getConfig('game')
		
		for item in gameConf['arena_rank_award']:
			if item['rank'] == int(rk):				
				#res = arena.award_score(usr.roleid, item['point'])
				data = {}
				awd = drop.open(usr, item['drop'], {})
				data = drop.makeData(awd, {})
				usr.arena['rank_award'][rk] = False				
				usr.save()
				return data				
		return {'msg':'arena_rank_award_not_exist'}
Example #23
0
	def award(usr, level):
		"""
		升级奖励
		"""
		if usr.level < level:
			return {'msg':'level_required'}
		if level in usr.levelup['record']:
			return {'msg':'levelup_award_already_have'}
				
		levelupConf = config.getConfig('levelup')
		
		levelKey = str(level)
		if not levelupConf.has_key(levelKey):
			return {'msg':'levelup_award_not_exist'}
		
		dropid = levelupConf[levelKey]
		
		awd = {}
		awd = drop.open(usr, dropid, awd)
		usr.levelup['record'].append(level)
		data = drop.makeData(awd, {})
		usr.save()
		return data
Example #24
0
    def award(usr, level):
        """
		升级奖励
		"""
        if usr.level < level:
            return {'msg': 'level_required'}
        if level in usr.levelup['record']:
            return {'msg': 'levelup_award_already_have'}

        levelupConf = config.getConfig('levelup')

        levelKey = str(level)
        if not levelupConf.has_key(levelKey):
            return {'msg': 'levelup_award_not_exist'}

        dropid = levelupConf[levelKey]

        awd = {}
        awd = drop.open(usr, dropid, awd)
        usr.levelup['record'].append(level)
        data = drop.makeData(awd, {})
        usr.save()
        return data
Example #25
0
    def draw_award(usr, position):
        """
		开服奖励
		"""
        openAwardConf = config.getConfig('open_award')
        drawidx = []

        for t in usr.signin['draw_award_time']:
            if is_same_day(t, currentTime()):
                return {'msg': 'open_award_already_get'}

        for idx, ad in enumerate(openAwardConf['draw_award']):
            if len(usr.signin['draw_award_time']
                   ) > idx and not usr.signin['draw_award_time'][idx]:
                continue
            if ad['day'] > len(usr.signin['draw_award_time']):
                continue
            drawidx.append(idx)

        if not drawidx:
            return {'msg': 'open_award_already_get'}

        adidx = random.sample(drawidx, 1)[0]
        ad = openAwardConf['draw_award'][adidx]
        awd = {}
        awd = drop.open(usr, ad['dropid'], awd)
        while len(usr.signin['draw_award_time']) <= adidx:
            usr.signin['draw_award_time'].append({})
        usr.signin['draw_award_time'][adidx] = {
            'time': currentTime(),
            'position': position
        }
        usr.save()
        data = drop.makeData(awd, {})

        return data
Example #26
0
    def sweep(self, battleid, fieldid, cnt):
        """
		扫荡
		"""
        if not self.normal_recored.has_key(battleid):
            return {'msg': 'dungeon_not_finished'}
        if not self.normal_recored[battleid].has_key(fieldid):
            return {'msg': 'dungeon_not_finished'}

        usr = self.user
        gameConf = config.getConfig('game')
        if (not vip.canDungeonSweep(usr)) and (
                gameConf['dungeon_vip0_sweep_star'] >
                self.normal_recored[battleid][fieldid]):
            return {'msg': 'dungeon_sweep_not_allowed'}
        self.curren_field = {'battleid': '', 'fieldid': ''}
        dunConf = config.getConfig('dungeon')
        resultData = {}
        resultData['sweep'] = []
        for battleConf in dunConf:
            if battleConf['battleId'] == battleid:
                for fieldConf in battleConf['field']:
                    if fieldConf['fieldId'] == fieldid:

                        staminaCost = fieldConf['stamina']
                        if usr.stamina < staminaCost:
                            return {'msg': 'stamina_not_enough'}
                        if fieldConf['dayCount'] == self.daily_recored[
                                battleid][fieldid]['count']:
                            return {'msg': 'dungeon_max_count'}
                        if fieldConf['dayCount'] < (
                                self.daily_recored[battleid][fieldid]['count']
                                + cnt):
                            cnt = fieldConf['dayCount'] - self.daily_recored[
                                battleid][fieldid]['count']
                        qt = usr.getQuest()
                        for i in range(cnt):
                            waves = self.arrangeWaves(fieldConf)
                            staminaCost = fieldConf['stamina']
                            if usr.stamina < staminaCost:
                                break
                            usr.stamina = usr.stamina - staminaCost
                            self.daily_recored[battleid][fieldid][
                                'count'] = self.daily_recored[battleid][
                                    fieldid]['count'] + 1
                            waves = self.arrangeWaves(fieldConf)
                            exp = fieldConf['exp']
                            if self.daily_recored[battleid][fieldid][
                                    'vip_reset']:
                                exp = int(exp *
                                          gameConf['dungeon_reset_benefit'])
                            usr.gainExp(exp)
                            data = {}
                            if fieldConf['dropid']:
                                awd = {}
                                awd = drop.open(usr, fieldConf['dropid'], awd)
                                data = self.award()
                                data = drop.makeData(awd, data)

                            data['add_exp'] = exp

                            resultData['sweep'].append(data)
                            #if dun.curren_field['battleid'] == dun.last_dungeon['battleid'] and dun.curren_field['fieldid'] == dun.last_dungeon['fieldid']:
                            #	dun.nextField()

                            #data['last_dungeon'] = dun.last_dungeon
                            qt.updateDungeonCountQuest()
                            qt.updateFinishDungeonQuest(battleid, fieldid)
                            self.save()
                            usr.save()
        resultData['stamina'] = usr.stamina
        resultData['exp'] = usr.exp
        resultData['level'] = usr.level
        resultData['gold'] = usr.gold
        return resultData
Example #27
0
	def sweep(self, battleid, fieldid, cnt):
		"""
		扫荡
		"""
		if not self.normal_recored.has_key(battleid):
			return {'msg' : 'dungeon_not_finished'}
		if not self.normal_recored[battleid].has_key(fieldid):
			return {'msg' : 'dungeon_not_finished'}
		
		usr = self.user
		gameConf = config.getConfig('game')
		if (not vip.canDungeonSweep(usr)) and (gameConf['dungeon_vip0_sweep_star'] > self.normal_recored[battleid][fieldid]):
			return {'msg':'dungeon_sweep_not_allowed'}
		self.curren_field = {'battleid':'', 'fieldid':''}	
		dunConf = config.getConfig('dungeon')
		resultData = {}
		resultData['sweep'] = []
		for battleConf in dunConf:
			if battleConf['battleId'] == battleid:
				for fieldConf in battleConf['field']:
					if fieldConf['fieldId'] == fieldid:					
						
						staminaCost = fieldConf['stamina']
						if usr.stamina < staminaCost:
							return {'msg':'stamina_not_enough'}						
						if fieldConf['dayCount'] == self.daily_recored[battleid][fieldid]['count']:
							return {'msg':'dungeon_max_count'}
						if fieldConf['dayCount'] < (self.daily_recored[battleid][fieldid]['count'] + cnt):
							cnt = fieldConf['dayCount'] - self.daily_recored[battleid][fieldid]['count']
						qt = usr.getQuest()
						for i in range(cnt):
							waves = self.arrangeWaves(fieldConf)
							staminaCost = fieldConf['stamina']
							if usr.stamina < staminaCost:
								break
							usr.stamina = usr.stamina - staminaCost
							self.daily_recored[battleid][fieldid]['count'] = self.daily_recored[battleid][fieldid]['count'] + 1
							waves = self.arrangeWaves(fieldConf)
							exp = fieldConf['exp']
							if self.daily_recored[battleid][fieldid]['vip_reset']:
								exp = int(exp * gameConf['dungeon_reset_benefit'])
							usr.gainExp(exp)
							data = {}
							if fieldConf['dropid']:
								awd = {}					
								awd = drop.open(usr, fieldConf['dropid'], awd)					
								data = self.award()
								data = drop.makeData(awd, data)
						
							data['add_exp'] = exp							
							
							resultData['sweep'].append(data)
							#if dun.curren_field['battleid'] == dun.last_dungeon['battleid'] and dun.curren_field['fieldid'] == dun.last_dungeon['fieldid']:
							#	dun.nextField()
												
							#data['last_dungeon'] = dun.last_dungeon							
							qt.updateDungeonCountQuest()
							qt.updateFinishDungeonQuest(battleid, fieldid)
							self.save()
							usr.save()
		resultData['stamina'] = usr.stamina
		resultData['exp'] = usr.exp
		resultData['level'] = usr.level
		resultData['gold'] = usr.gold
		return resultData
Example #28
0
	def garcha_once(usr, garchaAmount):
		"""
		一次求将
		"""
		inv = usr.getInventory()
		garchaConf = config.getConfig('garcha')
		gameConf = config.getConfig('game')
		
		now = currentTime()
		garcha.update_garcha(usr, now)
		
		garchaInfo = None
		if garchaAmount == 10:
			garchaInfo = usr.garcha['garcha10']
		elif garchaAmount == 100:
			garchaInfo = usr.garcha['garcha100']
		elif garchaAmount == 10000:
			garchaInfo = usr.garcha['garcha10000']
				
		isFirstTime = (garchaInfo['last_time'] == 0)
		isFree = False
		duration = now - garchaInfo['last_time']
		cooldownConf = 0
		cooldown = 0
		isCooldown = False
		if garchaAmount == 10:
			cooldownConf = gameConf['garcha_10_cooldown']
		if garchaAmount == 100:
			cooldownConf = gameConf['garcha_100_cooldown']
		if garchaAmount == 10000:
			cooldownConf = gameConf['garcha_10000_cooldown']
		
		cooldown = cooldownConf - duration
		
		if cooldown > 0:
			isCooldown = True
		else:
			isCooldown = False
			cooldown = 0
		
		if garchaAmount == 10:
			isFree = ((gameConf['garcha_10_times'] - garchaInfo['count']) > 0) and not isCooldown
		elif garchaAmount == 100:
			isFree = ((gameConf['garcha_100_times'] - garchaInfo['count']) > 0) and not isCooldown
		elif garchaAmount == 10000:
			isFree = ((gameConf['garcha_10000_times'] - garchaInfo['count']) > 0) and not isCooldown
			
		garchaCostGold = 0
		garchaCostGem = 0
		garchaType = ''
		garchaDropid1 = ''
		garchaDropid2 = ''
		garchaDropid3 = ''
		time_score = 0
		luck_score = 0
		petConf = config.getConfig('pet')
		
		if not isFree:
			if garchaAmount == 10:
				garchaCostGold = gameConf['garcha_10_price']['gold']
				garchaCostGem = gameConf['garcha_10_price']['gem']
				garchaType = 'garcha_10'
				garchaDropid1 = gameConf['garcha_10_dropid1']				
			elif garchaAmount == 100:
				garchaCostGold = gameConf['garcha_100_price']['gold']
				garchaCostGem = gameConf['garcha_100_price']['gem']
				garchaType = 'garcha_100'
				garchaDropid2 = gameConf['garcha_100_dropid2']
				garchaDropid1 = gameConf['garcha_100_dropid1']
				garchaDropid3 = gameConf['garcha_100_dropid3']
				time_score = garchaConf[vip.level(usr)]['garcha_100_free_time_score']
				luck_score = garchaConf[vip.level(usr)]['garcha_100_free_luck_score']
				if not garchaInfo.has_key('time_score'):
					garchaInfo['time_score'] = 0
				if not garchaInfo.has_key('luck_score'):
					garchaInfo['luck_score'] = 0					
				
			elif garchaAmount == 10000:
				garchaCostGold = gameConf['garcha_10000_price']['gold']
				garchaCostGem = gameConf['garcha_10000_price']['gem']
				garchaDropid1 = gameConf['garcha_10000_dropid1']
				garchaDropid2 = gameConf['garcha_10000_dropid2']
				garchaDropid3 = gameConf['garcha_10000_dropid3']
				time_score = garchaConf[vip.level(usr)]['garcha_10000_free_time_score']
				luck_score = garchaConf[vip.level(usr)]['garcha_10000_free_luck_score']
				if not garchaInfo.has_key('time_score'):
					garchaInfo['time_score'] = 0
				if not garchaInfo.has_key('luck_score'):
					garchaInfo['luck_score'] = 0
				garchaType = 'garcha_10000'
			if inv.CountCardByQuality(5, petConf) > 0:			 
					time_score = int(time_score / 2)
		else:
			if garchaAmount == 10:
				garchaType = 'garcha_10_free'
				garchaDropid1 = gameConf['garcha_10_dropid1']		
			elif garchaAmount == 100:
				garchaType = 'garcha_100_free'
				garchaDropid2 = gameConf['garcha_100_dropid2']
				garchaDropid1 = gameConf['garcha_100_dropid1']
				garchaDropid3 = gameConf['garcha_100_dropid3']
				time_score = garchaConf[vip.level(usr)]['garcha_100_time_score']
				luck_score = garchaConf[vip.level(usr)]['garcha_100_luck_score']
				if not garchaInfo.has_key('time_score'):
					garchaInfo['time_score'] = 0
				if not garchaInfo.has_key('luck_score'):
					garchaInfo['luck_score'] = 0
			elif garchaAmount == 10000:
				garchaType = 'garcha_10000_free'
				garchaDropid1 = gameConf['garcha_10000_dropid1']
				garchaDropid2 = gameConf['garcha_10000_dropid2']
				garchaDropid3 = gameConf['garcha_10000_dropid3']
				time_score = garchaConf[vip.level(usr)]['garcha_10000_time_score']
				luck_score = garchaConf[vip.level(usr)]['garcha_10000_luck_score']
				if not garchaInfo.has_key('time_score'):
					garchaInfo['time_score'] = 0
				if not garchaInfo.has_key('luck_score'):
					garchaInfo['luck_score'] = 0
			fatigue = inv.CountCardByQuality(5, petConf)
			if fatigue > 5:
				fatigue = 5
			time_score = int(time_score / (1 + fatigue))
		if usr.gold < garchaCostGold:
			return {'msg':'gold_not_enough'}
		if usr.gem < garchaCostGem:
			return {'msg':'gem_not_enough'}			

		awd = {}
		if garchaAmount == 10:			
			awd = drop.open(usr, garchaDropid1, awd)
		else:
			awd = {}
			if garchaInfo['time_score'] >= 800:
				rd = randint()
				if (rd <= 300) or (garchaInfo['time_score'] >= 1200):
					if garchaInfo['luck_score'] < 96:
						awd = drop.open(usr, garchaDropid2, awd)
					else:
						rd = randint()
						if rd < 5000:
							awd = drop.open(usr, garchaDropid3, awd)
						else:
							awd = drop.open(usr, garchaDropid2, awd)	
					garchaInfo['time_score'] = 0
					garchaInfo['luck_score'] = 0
					time_score = 0
					luck_score = 0
				else:
					awd = drop.open(usr, garchaDropid1, awd)
			else: 
				awd = drop.open(usr, garchaDropid1, awd)	
					
		data = drop.makeData(awd, {})
				
		usr.gold = usr.gold - garchaCostGold
		usr.gem = usr.gem - garchaCostGem
		if isFree:
			garchaInfo['last_time'] = now
			garchaInfo['count'] = garchaInfo['count'] + 1
		
		if time_score or luck_score:
			garchaInfo['time_score'] = garchaInfo['time_score'] + time_score
			garchaInfo['luck_score'] = garchaInfo['luck_score'] + luck_score
			
		duration = now - garchaInfo['last_time']
		cooldown = cooldownConf - duration		
		data['gold'] = usr.gold
		data['gem'] = usr.gem	
		
		data['garcha'] = {}
		data['garcha']['count'] = garchaInfo['count']
		data['garcha']['cooldown'] = cooldown
		
		usr.save()
		inv.save()
		return data
Example #29
0
	def use(usr, id, cnt):
		
		inv = usr.getInventory()
		it = inv.getItem(id)
		if not it:
			return {'msg' : 'item_not_exist'}
		if it['count'] < cnt:
			return {'msg': 'time_not_enough'}
				
		itemid = it['itemid']
		itemConfig = config.getConfig('item')
		itemInfo = itemConfig[itemid]		
		
		data = {}
		data['delete_item_array'] = []
		data['update_item_array'] = []		
		itemCount = cnt
		save_usr = False
		save_inv = False
		for (funkey, v) in itemInfo['fun'].items():			
			if funkey == 'treasure':
				key = None
				while itemCount > 0:
					keyitemid = v[1]
					dropid = v[0]		
					if keyitemid != '':
						key = item.get_by_itemid(inv, keyitemid)
						if not key:
							if itemCount == cnt:
								return {'msg':'key_not_exist'}
							else:
								break
						updateIt = inv.delItem(key['id'])
						if updateIt == None:
							data['delete_item_array'].append(key['id'])
						else: 
							data['update_item_array'].append(updateIt)
							key = None										
						inv.save()	
					awd = {}
					awd = drop.open(usr, dropid, awd)
					data = drop.makeData(awd, data)					
					itemCount = itemCount - 1					
				if key:					
					data['update_item_array'].append(key)				
			elif funkey == 'protect':
				if not vip.canBuyArenaProtectTimes(usr):
					return {'msg':'vip_required'}
				addProtectTime = v[0]
				newProtectTime = medal.add_protect_time(usr, addProtectTime)
				data['protect_time'] = newProtectTime
				usr.vip['buy_arena_protect_times'] = usr.vip['buy_arena_protect_times'] + 1
				save_usr = True
			elif funkey == 'stamina':
				if not vip.canBuyStamina(usr):
					return {'msg':'vip_required'}
				stamina = int(v[0])
				usr.chargeStamina(stamina * itemCount)
				itemCount = 0
				data['st'] = usr.stamina
				usr.vip['buy_stamina_count'] = usr.vip['buy_stamina_count'] + 1
				save_usr = True
			elif funkey == 'sp':
				if not vip.canBuyStamina(usr):
					return {'msg':'vip_required'}
				sp = int(v[0])
				usr.sp = usr.sp + sp * itemCount
				itemCount = 0
				data['sp'] = usr.sp
				usr.vip['buy_sp_count'] = usr.vip['buy_sp_count'] + 1
				save_usr = True
			elif funkey == 'arena_count':
				if not vip.canBuyArenaTimes(usr):
					return {'msg' : 'vip_required'}
				times = int(v[0])
				usr.arena['times'] = usr.arena['times'] - times * itemCount
				itemCount = 0
				data['arena_times'] = usr.arena['times']
				usr.vip['buy_arena_times'] = usr.vip['buy_arena_times'] + 1
				save_usr = True
			elif funkey == 'protect':
				pass				
			elif funkey == 'key':
				treasure = None
				while itemCount > 0:
					treasureid = v[0]				
					treasure = item.get_by_itemid(treasureid)
					if not treasure:
						if itemCount == cnt:
							return {'msg':'treasure_not_exist'}
						else:
							break
					treasureInfo = itemConfig[treasure['itemid']]
					if not treasureInfo['fun'].has_key('treasure'):
						if itemCount == cnt:
							return {'msg':'treasure_is_not'}
						else: 
							break
					dropid = treasureInfo['fun']['treasure'][0]
					awd = {}
					awd = drop.open(usr, dropid, awd).s()
					data = drop.makeData(awd, data)	
					if inv.delItem(treasure['id']) == None:						
						data['delete_item_array'].append(treasure['id'])
						treasure = None
					inv.save()
				if treasure:					
					data['update_item_array'].append(treasure)
			elif funkey == 'medium':
				pass		
		if inv.delItem(it['id'], cnt - itemCount) == None:
			data['delete_item_array'].append(it['id'])
		else:
			data['update_item_array'].append(it)
		save_inv = True
		if not data['delete_item_array']:
			del data['delete_item_array']
		if not data['update_item_array']:
			del data['update_item_array']
		if save_inv:
			inv.save()
		if save_usr:
			usr.save()
		return data			
Example #30
0
    def use(usr, id, cnt):

        inv = usr.getInventory()
        it = inv.getItem(id)
        if not it:
            return {'msg': 'item_not_exist'}
        if it['count'] < cnt:
            return {'msg': 'time_not_enough'}

        itemid = it['itemid']
        itemConfig = config.getConfig('item')
        itemInfo = itemConfig[itemid]

        data = {}
        data['delete_item_array'] = []
        data['update_item_array'] = []
        itemCount = cnt
        save_usr = False
        save_inv = False
        for (funkey, v) in itemInfo['fun'].items():
            if funkey == 'treasure':
                key = None
                while itemCount > 0:
                    keyitemid = v[1]
                    dropid = v[0]
                    if keyitemid != '':
                        key = item.get_by_itemid(inv, keyitemid)
                        if not key:
                            if itemCount == cnt:
                                return {'msg': 'key_not_exist'}
                            else:
                                break
                        updateIt = inv.delItem(key['id'])
                        if updateIt == None:
                            data['delete_item_array'].append(key['id'])
                        else:
                            data['update_item_array'].append(updateIt)
                            key = None
                        inv.save()
                    awd = {}
                    awd = drop.open(usr, dropid, awd)
                    data = drop.makeData(awd, data)
                    itemCount = itemCount - 1
                if key:
                    data['update_item_array'].append(key)
            elif funkey == 'protect':
                if not vip.canBuyArenaProtectTimes(usr):
                    return {'msg': 'vip_required'}
                addProtectTime = v[0]
                newProtectTime = medal.add_protect_time(usr, addProtectTime)
                data['protect_time'] = newProtectTime
                usr.vip['buy_arena_protect_times'] = usr.vip[
                    'buy_arena_protect_times'] + 1
                save_usr = True
            elif funkey == 'stamina':
                if not vip.canBuyStamina(usr):
                    return {'msg': 'vip_required'}
                stamina = int(v[0])
                usr.chargeStamina(stamina * itemCount)
                itemCount = 0
                data['st'] = usr.stamina
                usr.vip['buy_stamina_count'] = usr.vip['buy_stamina_count'] + 1
                save_usr = True
            elif funkey == 'sp':
                if not vip.canBuyStamina(usr):
                    return {'msg': 'vip_required'}
                sp = int(v[0])
                usr.sp = usr.sp + sp * itemCount
                itemCount = 0
                data['sp'] = usr.sp
                usr.vip['buy_sp_count'] = usr.vip['buy_sp_count'] + 1
                save_usr = True
            elif funkey == 'arena_count':
                if not vip.canBuyArenaTimes(usr):
                    return {'msg': 'vip_required'}
                times = int(v[0])
                usr.arena['times'] = usr.arena['times'] - times * itemCount
                itemCount = 0
                data['arena_times'] = usr.arena['times']
                usr.vip['buy_arena_times'] = usr.vip['buy_arena_times'] + 1
                save_usr = True
            elif funkey == 'protect':
                pass
            elif funkey == 'key':
                treasure = None
                while itemCount > 0:
                    treasureid = v[0]
                    treasure = item.get_by_itemid(treasureid)
                    if not treasure:
                        if itemCount == cnt:
                            return {'msg': 'treasure_not_exist'}
                        else:
                            break
                    treasureInfo = itemConfig[treasure['itemid']]
                    if not treasureInfo['fun'].has_key('treasure'):
                        if itemCount == cnt:
                            return {'msg': 'treasure_is_not'}
                        else:
                            break
                    dropid = treasureInfo['fun']['treasure'][0]
                    awd = {}
                    awd = drop.open(usr, dropid, awd).s()
                    data = drop.makeData(awd, data)
                    if inv.delItem(treasure['id']) == None:
                        data['delete_item_array'].append(treasure['id'])
                        treasure = None
                    inv.save()
                if treasure:
                    data['update_item_array'].append(treasure)
            elif funkey == 'medium':
                pass
        if inv.delItem(it['id'], cnt - itemCount) == None:
            data['delete_item_array'].append(it['id'])
        else:
            data['update_item_array'].append(it)
        save_inv = True
        if not data['delete_item_array']:
            del data['delete_item_array']
        if not data['update_item_array']:
            del data['update_item_array']
        if save_inv:
            inv.save()
        if save_usr:
            usr.save()
        return data
Example #31
0
    def garcha_once(usr, garchaAmount):
        """
		一次求将
		"""
        inv = usr.getInventory()
        garchaConf = config.getConfig('garcha')
        gameConf = config.getConfig('game')

        now = currentTime()
        garcha.update_garcha(usr, now)

        garchaInfo = None
        if garchaAmount == 10:
            garchaInfo = usr.garcha['garcha10']
        elif garchaAmount == 100:
            garchaInfo = usr.garcha['garcha100']
        elif garchaAmount == 10000:
            garchaInfo = usr.garcha['garcha10000']

        isFirstTime = (garchaInfo['last_time'] == 0)
        isFree = False
        duration = now - garchaInfo['last_time']
        cooldownConf = 0
        cooldown = 0
        isCooldown = False
        if garchaAmount == 10:
            cooldownConf = gameConf['garcha_10_cooldown']
        if garchaAmount == 100:
            cooldownConf = gameConf['garcha_100_cooldown']
        if garchaAmount == 10000:
            cooldownConf = gameConf['garcha_10000_cooldown']

        cooldown = cooldownConf - duration

        if cooldown > 0:
            isCooldown = True
        else:
            isCooldown = False
            cooldown = 0

        if garchaAmount == 10:
            isFree = ((gameConf['garcha_10_times'] - garchaInfo['count']) >
                      0) and not isCooldown
        elif garchaAmount == 100:
            isFree = ((gameConf['garcha_100_times'] - garchaInfo['count']) >
                      0) and not isCooldown
        elif garchaAmount == 10000:
            isFree = ((gameConf['garcha_10000_times'] - garchaInfo['count']) >
                      0) and not isCooldown

        garchaCostGold = 0
        garchaCostGem = 0
        garchaType = ''
        garchaDropid1 = ''
        garchaDropid2 = ''
        garchaDropid3 = ''
        time_score = 0
        luck_score = 0
        petConf = config.getConfig('pet')

        if not isFree:
            if garchaAmount == 10:
                garchaCostGold = gameConf['garcha_10_price']['gold']
                garchaCostGem = gameConf['garcha_10_price']['gem']
                garchaType = 'garcha_10'
                garchaDropid1 = gameConf['garcha_10_dropid1']
            elif garchaAmount == 100:
                garchaCostGold = gameConf['garcha_100_price']['gold']
                garchaCostGem = gameConf['garcha_100_price']['gem']
                garchaType = 'garcha_100'
                garchaDropid2 = gameConf['garcha_100_dropid2']
                garchaDropid1 = gameConf['garcha_100_dropid1']
                garchaDropid3 = gameConf['garcha_100_dropid3']
                time_score = garchaConf[vip.level(
                    usr)]['garcha_100_free_time_score']
                luck_score = garchaConf[vip.level(
                    usr)]['garcha_100_free_luck_score']
                if not garchaInfo.has_key('time_score'):
                    garchaInfo['time_score'] = 0
                if not garchaInfo.has_key('luck_score'):
                    garchaInfo['luck_score'] = 0

            elif garchaAmount == 10000:
                garchaCostGold = gameConf['garcha_10000_price']['gold']
                garchaCostGem = gameConf['garcha_10000_price']['gem']
                garchaDropid1 = gameConf['garcha_10000_dropid1']
                garchaDropid2 = gameConf['garcha_10000_dropid2']
                garchaDropid3 = gameConf['garcha_10000_dropid3']
                time_score = garchaConf[vip.level(
                    usr)]['garcha_10000_free_time_score']
                luck_score = garchaConf[vip.level(
                    usr)]['garcha_10000_free_luck_score']
                if not garchaInfo.has_key('time_score'):
                    garchaInfo['time_score'] = 0
                if not garchaInfo.has_key('luck_score'):
                    garchaInfo['luck_score'] = 0
                garchaType = 'garcha_10000'
            if inv.CountCardByQuality(5, petConf) > 0:
                time_score = int(time_score / 2)
        else:
            if garchaAmount == 10:
                garchaType = 'garcha_10_free'
                garchaDropid1 = gameConf['garcha_10_dropid1']
            elif garchaAmount == 100:
                garchaType = 'garcha_100_free'
                garchaDropid2 = gameConf['garcha_100_dropid2']
                garchaDropid1 = gameConf['garcha_100_dropid1']
                garchaDropid3 = gameConf['garcha_100_dropid3']
                time_score = garchaConf[vip.level(
                    usr)]['garcha_100_time_score']
                luck_score = garchaConf[vip.level(
                    usr)]['garcha_100_luck_score']
                if not garchaInfo.has_key('time_score'):
                    garchaInfo['time_score'] = 0
                if not garchaInfo.has_key('luck_score'):
                    garchaInfo['luck_score'] = 0
            elif garchaAmount == 10000:
                garchaType = 'garcha_10000_free'
                garchaDropid1 = gameConf['garcha_10000_dropid1']
                garchaDropid2 = gameConf['garcha_10000_dropid2']
                garchaDropid3 = gameConf['garcha_10000_dropid3']
                time_score = garchaConf[vip.level(
                    usr)]['garcha_10000_time_score']
                luck_score = garchaConf[vip.level(
                    usr)]['garcha_10000_luck_score']
                if not garchaInfo.has_key('time_score'):
                    garchaInfo['time_score'] = 0
                if not garchaInfo.has_key('luck_score'):
                    garchaInfo['luck_score'] = 0
            fatigue = inv.CountCardByQuality(5, petConf)
            if fatigue > 5:
                fatigue = 5
            time_score = int(time_score / (1 + fatigue))
        if usr.gold < garchaCostGold:
            return {'msg': 'gold_not_enough'}
        if usr.gem < garchaCostGem:
            return {'msg': 'gem_not_enough'}

        awd = {}
        if garchaAmount == 10:
            awd = drop.open(usr, garchaDropid1, awd)
        else:
            awd = {}
            if garchaInfo['time_score'] >= 800:
                rd = randint()
                if (rd <= 300) or (garchaInfo['time_score'] >= 1200):
                    if garchaInfo['luck_score'] < 96:
                        awd = drop.open(usr, garchaDropid2, awd)
                    else:
                        rd = randint()
                        if rd < 5000:
                            awd = drop.open(usr, garchaDropid3, awd)
                        else:
                            awd = drop.open(usr, garchaDropid2, awd)
                    garchaInfo['time_score'] = 0
                    garchaInfo['luck_score'] = 0
                    time_score = 0
                    luck_score = 0
                else:
                    awd = drop.open(usr, garchaDropid1, awd)
            else:
                awd = drop.open(usr, garchaDropid1, awd)

        data = drop.makeData(awd, {})

        usr.gold = usr.gold - garchaCostGold
        usr.gem = usr.gem - garchaCostGem
        if isFree:
            garchaInfo['last_time'] = now
            garchaInfo['count'] = garchaInfo['count'] + 1

        if time_score or luck_score:
            garchaInfo['time_score'] = garchaInfo['time_score'] + time_score
            garchaInfo['luck_score'] = garchaInfo['luck_score'] + luck_score

        duration = now - garchaInfo['last_time']
        cooldown = cooldownConf - duration
        data['gold'] = usr.gold
        data['gem'] = usr.gem

        data['garcha'] = {}
        data['garcha']['count'] = garchaInfo['count']
        data['garcha']['cooldown'] = cooldown

        usr.save()
        inv.save()
        return data
Example #32
0
	def beat(usr, difficulty, star, dp, ehc):
		"""
		战胜
		"""
		if not usr.tower['current']:
			return {'msg':'tower_not_start'}
				
		if usr.tower['current'].has_key('enhance') and (ehc == -1):
			return {'msg':'tower_enhance_required'}
				
		gameConf = config.getConfig('game')
		towerAwardConf = config.getConfig('tower_award')
		towerMonster = config.getConfig('tower_monster')
						
		usr.tower['current']['point'] = usr.tower['current']['point'] + star * difficulty
		usr.tower['current']['energy'] = usr.tower['current']['energy'] + star * difficulty
		usr.tower['current']['score'] = usr.tower['current']['score'] + star * difficulty		
		usr.tower['current']['floor'] = usr.tower['current']['floor'] + 1
		
		if usr.tower['max_point'] < usr.tower['current']['point']:
			usr.tower['max_point'] = usr.tower['current']['point']
		
		while len(usr.tower['floor_score']) < usr.tower['current']['floor']:
			usr.tower['floor_score'].append(0)
		while len(usr.tower['floor_point']) < usr.tower['current']['floor']:
			usr.tower['floor_point'].append(0)
				
		newPoint = False
		if usr.tower['floor_point'][usr.tower['current']['floor'] - 1] < usr.tower['current']['point']:
			newPoint = True			
		
		newScore = False
		if usr.tower['floor_score'][usr.tower['current']['floor'] - 1] < usr.tower['current']['score']:
			newScore = True
		print usr.tower['floor_score'][usr.tower['current']['floor'] - 1], usr.tower['current']['score']
		
		data = {}		
					
		if ehc != -1:
			if not usr.tower['current'].has_key('enhance'):
				return {'msg':'tower_enhance_not_exsit'}
			tower.do_enhance(usr, ehc, gameConf)
				
		enhance = []
		if usr.tower['current']['floor'] % gameConf['tower_enhance_interval_floor'] == 0:
			enhance = tower.make_enhance_list()
			usr.tower['current']['enhance'] = enhance
		
		
			
		if usr.tower['current']['floor'] % gameConf['tower_award_interval_floor'] == 0:
			towerAwardInfo = towerAwardConf[str(usr.tower['current']['floor'])]
			if newPoint:
				awd = {}
				awd = drop.open(usr, towerAwardInfo[1], awd)
				data = drop.makeData(awd, data,'top_drop')
				usr.tower['floor_point'][usr.tower['current']['floor'] - 1] = usr.tower['current']['point']
			if newScore:				
				if usr.tower['current']['score'] > 45:
					awd = {}
					awd = drop.open(usr, towerAwardInfo[3], awd)
					data = drop.makeData(awd, data, 'record_drop')
				if usr.tower['current']['score'] > 30:
					awd = {}
					awd = drop.open(usr, towerAwardInfo[2], awd)
					data = drop.makeData(awd, data, 'record_drop')
				usr.tower['floor_score'][usr.tower['current']['floor'] - 1] = usr.tower['current']['score']
			usr.tower['current']['score'] = 0

		if usr.tower['max_floor'] < usr.tower['current']['floor']:
			 usr.tower['max_floor'] = usr.tower['current']['floor']				

		if dp:
			awd = {}
			awd = drop.open(usr, towerMonster[usr.tower['current']['floor']]['dropid'], awd)
			data = drop.makeData(awd, data, 'random_drop')		
		
		usr.save()
		if enhance:
			data['tower_enhance'] = enhance
		data['tower_point'] = usr.tower['current']['point']
		data['tower_energy'] = usr.tower['current']['energy']
		data['tower_strength'] = usr.tower['current']['strength']
		data['tower_intelligence'] = usr.tower['current']['intelligence']
		data['tower_artifice'] = usr.tower['current']['artifice']
		data['tower_floor'] = usr.tower['current']['floor']
		data['tower_max_floor'] = usr.tower['max_floor']
		data['tower_max_point'] = usr.tower['max_point']
		return data		
Example #33
0
def tool_create_player(request):
    if request.method == 'POST':
        player_name = request.POST['player_name']
        levelf = int(request.POST['levelf'])
        levelt = int(request.POST['levelt'])
        protagonist_card = request.POST['protagonist_card']
        other_card = request.POST['other_card']
        card_count = int(request.POST['card_count'])
        card_levelf = int(request.POST['card_levelf'])
        card_levelt = int(request.POST['card_levelt'])
        attack_equipment = request.POST['attack_equipment']
        hp_equipment = request.POST['hp_equipment']
        defence_equipment = request.POST['defence_equipment']
        pd_equipment = request.POST['pd_equipment']
        md_equipment = request.POST['md_equipment']
        equipment_strength_levelf = int(
            request.POST['equipment_strength_levelf'])
        equipment_strength_levelt = int(
            request.POST['equipment_strength_levelt'])
        fire_skill = request.POST['fire_skill']
        water_skill = request.POST['water_skill']
        poison_skill = request.POST['poison_skill']
        super_skill = request.POST['super_skill']
        straw_skill = request.POST['straw_skill']
        general_skill = request.POST['general_skill']
        skill_levelf = int(request.POST['skill_levelf'])
        skill_levelt = int(request.POST['skill_levelt'])
        stone_seed = request.POST['stone']
        stone_levelf = int(request.POST['stone_levelf'])
        stone_levelt = int(request.POST['stone_levelt'])
        practicef = int(request.POST['practicef'])
        practicet = int(request.POST['practicet'])
        strengthenf = int(request.POST['strengthenf'])
        strengthent = int(request.POST['strengthent'])

        intelligencef = int(request.POST['intelligencef'])
        intelligencet = int(request.POST['intelligencet'])
        artificef = int(request.POST['artificef'])
        artificet = int(request.POST['artificet'])
        medal_levelf = int(request.POST['medal_levelf'])
        medal_levelt = int(request.POST['medal_levelt'])

        gameConf = config.getConfig('game')

        for i in range(card_count):
            usr = user()
            usr.init(None)
            usr.last_login = currentTime()
            usr.name = player_name
            usr.gender = 'male'
            usr.avatar = '1'
            usr.install(0)

            usr.saveRoleId()
            usr.onInit()
            usr.level = random.randint(levelf, levelt)
            inv = usr.getInventory()
            awd = drop.open(usr, protagonist_card, {})
            for (i, l) in enumerate(gameConf['team_member_open_level']):
                if l <= usr.level:
                    if awd['add_card_array']:
                        awd['add_card_array'][0]['level'] = random.randint(
                            card_levelf, card_levelt)
                        inv.team[i] = awd['add_card_array'][0]['id']
                    break

            for (i, l) in enumerate(gameConf['team_member_open_level']):
                if l <= usr.level and not inv.team[i]:
                    awd = drop.open(usr, other_card, {})
                    if awd['add_card_array']:
                        awd['add_card_array'][0]['level'] = random.randint(
                            card_levelf, card_levelt)
                        inv.team[i] = awd['add_card_array'][0]['id']
                    break
            petConf = config.getConfig('pet')
            for (i, cid) in enumerate(inv.team):
                if cid:
                    card = inv.getCard(cid)
                    if card:
                        awd = drop.open(usr, attack_equipment, {})
                        if awd.has_key('add_equipment_array'):
                            awd['add_equipment_array'][0][
                                'strengthLevel'] = random.randint(
                                    equipment_strength_levelf,
                                    equipment_strength_levelt)
                            equipment.equip(
                                usr, i, -1,
                                awd['add_equipment_array'][0]['id'])
                        awd = drop.open(usr, hp_equipment, {})
                        if awd.has_key('add_equipment_array'):
                            awd['add_equipment_array'][0][
                                'strengthLevel'] = random.randint(
                                    equipment_strength_levelf,
                                    equipment_strength_levelt)
                            equipment.equip(
                                usr, i, -1,
                                awd['add_equipment_array'][0]['id'])
                        awd = drop.open(usr, defence_equipment, {})
                        if awd.has_key('add_equipment_array'):
                            awd['add_equipment_array'][0][
                                'strengthLevel'] = random.randint(
                                    equipment_strength_levelf,
                                    equipment_strength_levelt)
                            equipment.equip(
                                usr, i, -1,
                                awd['add_equipment_array'][0]['id'])
                        awd = drop.open(usr, pd_equipment, {})
                        if awd.has_key('add_equipment_array'):
                            awd['add_equipment_array'][0][
                                'strengthLevel'] = random.randint(
                                    equipment_strength_levelf,
                                    equipment_strength_levelt)
                            equipment.equip(
                                usr, i, -1,
                                awd['add_equipment_array'][0]['id'])
                        awd = drop.open(usr, md_equipment, {})
                        if awd.has_key('add_equipment_array'):
                            awd['add_equipment_array'][0][
                                'strengthLevel'] = random.randint(
                                    equipment_strength_levelf,
                                    equipment_strength_levelt)
                            equipment.equip(
                                usr, i, -1,
                                awd['add_equipment_array'][0]['id'])

                        petInfo = petConf[card['cardid']]
                        skill_seed = None

                        if petInfo['nature'] == '2':
                            skill_seed = poison_skill
                        elif petInfo['nature'] == '3':
                            skill_seed = straw_skill
                        elif petInfo['nature'] == '4':
                            skill_seed = water_skill
                        elif petInfo['nature'] == '5':
                            skill_seed = fire_skill
                        elif petInfo['nature'] == '6':
                            skill_seed = super_skill
                        elif petInfo['nature'] == '7':
                            skill_seed = general_skill

                        if skill_seed:
                            for k in range(3):
                                awd = drop.open(usr, skill_seed, {})
                                if awd.has_key('add_skill_array'):
                                    awd['add_skill_array'][0][
                                        'level'] = random.randint(
                                            skill_levelf, skill_levelt)
                                    skill.install(
                                        usr, i, -1, k,
                                        awd['add_skill_array'][0]['id'])

                        for (k, l) in enumerate(gameConf['stone_slot_level']):
                            if l <= usr.level:
                                awd = drop.open(usr, stone_seed, {})
                                if awd.has_key('add_stone_array'):
                                    awd['add_stone_array'][0][
                                        'level'] = random.randint(
                                            stone_levelf, stone_levelt)
                                    stone.install(
                                        usr, i, -1, k,
                                        awd['add_stone_array'][0]['id'])
                        card['strength'] = random.randint(
                            strengthenf, strengthent)
                        card['intelligence'] = random.randint(
                            intelligencef, intelligencet)
                        card['artifice'] = random.randint(artificef, artificet)

                        medalConf = config.getConfig('medal')

                        for medalid in medalConf:
                            inv.medal[medalid] = {
                                'level': 0,
                                'chip': [0] * medalConf[medalid]['chip'],
                                'id': medalid,
                                'gravel': 0
                            }
                            inv.medal[medalid]['level'] = random.randint(
                                medal_levelf, medal_levelt)

            usr.practice['critical_level'] = random.randint(
                practicef, practicet)
            usr.practice['tenacity_level'] = random.randint(
                practicef, practicet)
            usr.practice['block_level'] = random.randint(practicef, practicet)
            usr.practice['wreck_level'] = random.randint(practicef, practicet)

            usr.save()
            res = arena.stand_ladder(usr)
            if isinstance(res, str):
                res = json.loads(res)
                if res.has_key('msg'):
                    return HttpResponse('error:' + str(i) + ':' +
                                        str(usr.roleid) + res['msg'])
    ld = arena.show_all()
    return render(request, 'arena_tool.html', {'ladder': ld})
Example #34
0
def tool_create_player(request):
	if request.method == 'POST':
		player_name = request.POST['player_name']
		levelf = int(request.POST['levelf'])
		levelt = int(request.POST['levelt'])
		protagonist_card = request.POST['protagonist_card']
		other_card = request.POST['other_card']
		card_count = int(request.POST['card_count'])
		card_levelf = int(request.POST['card_levelf'])
		card_levelt = int(request.POST['card_levelt'])
		attack_equipment = request.POST['attack_equipment']
		hp_equipment = request.POST['hp_equipment']
		defence_equipment = request.POST['defence_equipment']		
		pd_equipment = request.POST['pd_equipment']
		md_equipment = request.POST['md_equipment']
		equipment_strength_levelf = int(request.POST['equipment_strength_levelf'])
		equipment_strength_levelt = int(request.POST['equipment_strength_levelt'])
		fire_skill = request.POST['fire_skill']
		water_skill = request.POST['water_skill']
		poison_skill = request.POST['poison_skill']
		super_skill = request.POST['super_skill']
		straw_skill = request.POST['straw_skill']		
		general_skill = request.POST['general_skill']
		skill_levelf = int(request.POST['skill_levelf'])
		skill_levelt = int(request.POST['skill_levelt'])
		stone_seed = request.POST['stone']
		stone_levelf = int(request.POST['stone_levelf'])
		stone_levelt = int(request.POST['stone_levelt'])
		practicef = int(request.POST['practicef'])
		practicet = int(request.POST['practicet'])
		strengthenf = int(request.POST['strengthenf'])
		strengthent = int(request.POST['strengthent'])
		
		intelligencef = int(request.POST['intelligencef'])
		intelligencet = int(request.POST['intelligencet'])
		artificef = int(request.POST['artificef'])
		artificet = int(request.POST['artificet'])
		medal_levelf = int(request.POST['medal_levelf'])
		medal_levelt = int(request.POST['medal_levelt'])
			
		gameConf = config.getConfig('game')
		
		for i in range(card_count):
			usr = user()					
			usr.init(None)
			usr.last_login = currentTime()
			usr.name = player_name
			usr.gender = 'male'
			usr.avatar = '1'
			usr.install(0)
			
			usr.saveRoleId()
			usr.onInit()
			usr.level = random.randint(levelf, levelt)
			inv = usr.getInventory()
			awd = drop.open(usr, protagonist_card, {})
			for (i, l) in enumerate(gameConf['team_member_open_level']):
				if l <= usr.level:
					if awd['add_card_array']:
						awd['add_card_array'][0]['level'] = random.randint(card_levelf, card_levelt)
						inv.team[i] = awd['add_card_array'][0]['id']
					break
					
			for (i, l) in enumerate(gameConf['team_member_open_level']):
				if l <= usr.level and not inv.team[i]:
					awd = drop.open(usr, other_card, {})
					if awd['add_card_array']:
						awd['add_card_array'][0]['level'] = random.randint(card_levelf, card_levelt)
						inv.team[i] = awd['add_card_array'][0]['id']
					break			
			petConf = config.getConfig('pet')
			for (i, cid) in enumerate(inv.team):
				if cid:
					card = inv.getCard(cid)
					if card:
						awd = drop.open(usr, attack_equipment, {})
						if awd.has_key('add_equipment_array'):
							awd['add_equipment_array'][0]['strengthLevel'] = random.randint(equipment_strength_levelf, equipment_strength_levelt)
							equipment.equip(usr, i, -1, awd['add_equipment_array'][0]['id'])
						awd = drop.open(usr, hp_equipment, {})
						if awd.has_key('add_equipment_array'):
							awd['add_equipment_array'][0]['strengthLevel'] = random.randint(equipment_strength_levelf, equipment_strength_levelt)
							equipment.equip(usr, i, -1, awd['add_equipment_array'][0]['id'])
						awd = drop.open(usr, defence_equipment, {})
						if awd.has_key('add_equipment_array'):
							awd['add_equipment_array'][0]['strengthLevel'] = random.randint(equipment_strength_levelf, equipment_strength_levelt)
							equipment.equip(usr, i, -1, awd['add_equipment_array'][0]['id'])						
						awd = drop.open(usr, pd_equipment, {})
						if awd.has_key('add_equipment_array'):
							awd['add_equipment_array'][0]['strengthLevel'] = random.randint(equipment_strength_levelf, equipment_strength_levelt)
							equipment.equip(usr, i, -1, awd['add_equipment_array'][0]['id'])
						awd = drop.open(usr, md_equipment, {})
						if awd.has_key('add_equipment_array'):
							awd['add_equipment_array'][0]['strengthLevel'] = random.randint(equipment_strength_levelf, equipment_strength_levelt)
							equipment.equip(usr, i, -1, awd['add_equipment_array'][0]['id'])
						
						petInfo = petConf[card['cardid']]						
						skill_seed = None
						
						if petInfo['nature'] == '2':
							skill_seed = poison_skill
						elif petInfo['nature'] == '3':
							skill_seed = straw_skill
						elif petInfo['nature'] == '4':
							skill_seed = water_skill
						elif petInfo['nature'] == '5':
							skill_seed = fire_skill
						elif petInfo['nature'] == '6':
							skill_seed = super_skill
						elif petInfo['nature'] == '7':
							skill_seed = general_skill
							
						if skill_seed:
							for k in range(3):
								awd = drop.open(usr, skill_seed, {})
								if awd.has_key('add_skill_array'):
									awd['add_skill_array'][0]['level'] = random.randint(skill_levelf, skill_levelt)
									skill.install(usr, i, -1, k, awd['add_skill_array'][0]['id'])
									
						for (k, l) in enumerate(gameConf['stone_slot_level']):
							if l <= usr.level:
								awd = drop.open(usr, stone_seed, {})
								if awd.has_key('add_stone_array'):
									awd['add_stone_array'][0]['level'] = random.randint(stone_levelf, stone_levelt)
									stone.install(usr, i, -1, k, awd['add_stone_array'][0]['id'])
						card['strength'] = random.randint(strengthenf, strengthent)
						card['intelligence'] = random.randint(intelligencef, intelligencet)
						card['artifice'] = random.randint(artificef, artificet)
						
						medalConf = config.getConfig('medal')
						
						for medalid in medalConf:
							inv.medal[medalid] =  {'level':0, 'chip': [0] * medalConf[medalid]['chip'], 'id':medalid, 'gravel':0}
							inv.medal[medalid]['level'] = random.randint(medal_levelf, medal_levelt)
									
			usr.practice['critical_level'] = random.randint(practicef, practicet)
			usr.practice['tenacity_level'] = random.randint(practicef, practicet)
			usr.practice['block_level'] = random.randint(practicef, practicet)
			usr.practice['wreck_level'] = random.randint(practicef, practicet)			
			
																	
			usr.save()
			res = arena.stand_ladder(usr)	
			if isinstance(res, str):
				res = json.loads(res)
				if res.has_key('msg'):
					return HttpResponse('error:' + str(i) + ':' + str(usr.roleid) + res['msg'])		
	ld = arena.show_all()	
	return render(request, 'arena_tool.html', {'ladder':ld})