def updateCoin(self,coin,state=1): if coin ==self._coin: return if coin-self._coin>0: msg = Lg().g(311)%abs(coin-self._coin) else: msg = Lg().g(312)%abs(coin-self._coin) if coin>= self.MAXCOIN: msg = msg.join(["\n",Lg().g(313)]) self._coin = self.MAXCOIN else: self._coin = coin # dbaccess.updateCharacter(self._owner.baseInfo.id, 'coin', self._coin) pushObjectNetInterface.pushUpdatePlayerInfo(self._owner.getDynamicId()) if state: pushPromptedMessage( msg, [self._owner.getDynamicId()]) else: self._owner.msgbox.putFightMsg(msg)#将消息加入战后消息处理中
def JointGuild(self, characterId): '''将角色加入国''' curMenberNum = dbGuild.countGuildMenberNum(self.id) info = self.guildinfo maxMemberCount = 20 + ((info['emblemLevel'] - 1) * 30) if curMenberNum >= maxMemberCount: return {'result': False, 'message': Lg().g(83)} result = dbGuild.insertCharacterGuildInfo(characterId, self.id) dbGuild.delCharacterAllApply(characterId) if result: player = PlayersManager().getPlayerByID(characterId) if player: player.quest.specialTaskHandle(ADDGUILDTASKTYPE) player.guild.updateID(self.id) chatnoderemote.callRemote('updateGuild', characterId, self.id, 1) #同步聊天角色中的行会 player.updatePlayerInfo() return {'result': True, 'message': Lg().g(530)} #同意申请成功 return {'result': True, 'message': Lg().g(531)} #同意申请失败
def searchGuildMemberInfo(self, searchCriteria, curPage, limit=10): '''搜索行会成员 @param searchCriteria: str 成员的名称 ''' MemberInfoList = {} infos = [] maxPage = math.ceil( dbGuild.countSearchMemberNum(self.id, searchCriteria) / float(limit)) if maxPage == 0: maxPage = 1 members = dbGuild.searchGuildMemberInfo(self.id, searchCriteria, curPage, limit) for member in members: data = {} data['memberliId'] = member['characterId'] data['memberName'] = member['nickname'] data['memberLevel'] = member['level'] data['memberProfession'] = member['profession'] #data['memberRank'] = Lg().g(516)#{0:Lg().g(516),1:Lg().g(517),2:Lg().g(518),3:Lg().g(519),4:Lg().g(520)}.get(member['post']) if data['memberliId'] == self.president: data['memberRank'] = Lg().g(520) elif data['memberliId'] in eval("[" + self.guildinfo['veterans'] + "]"): data['memberRank'] = Lg().g(519) elif data['memberliId'] in eval("[" + self.guildinfo['staffOfficers'] + "]"): data['memberRank'] = Lg().g(518) elif data['memberliId'] in eval("[" + self.guildinfo['senators'] + "]"): data['memberRank'] = Lg().g(517) else: data['memberRank'] = Lg().g(516) data['onlineState'] = self.getCharacterOnlineState( member['isOnline'], member['outtime']) data['memberContribution'] = member['contribution'] infos.append(data) MemberInfoList['curPage'] = curPage MemberInfoList['MemberListBaseInfo'] = infos MemberInfoList['maxPage'] = maxPage return MemberInfoList
def PetChuanCheng(dynamicId, characterId, petFrom, petTo): '''宠物传承 ''' player = PlayersManager().getPlayerByID(characterId) if not player: return {'result': False, 'message': Lg().g(18)} data = player.pet.TransferExp(petFrom, petTo) msg = data.get('message', 0) if msg: pushOtherMessage(905, msg, [dynamicId]) return data
def getRestRoomInfo(dynamicId, characterId, placeId): '''获取宿屋信息 @param dynamicId: int 客户端的动态id @param characterId: int 角色的id @param placeId: int 场景的id ''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} restNum = player.attribute.getRestNum() return {'result': True, 'data': restNum}
def MoveXingYun(dynamicId, characterId, opear, opeType, frompos, topos): '''移动星运 ''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} data = player.fate.MoveFate(opeType, opear, frompos, topos) msg = data.get('message', '') if msg: pushOtherMessage(905, msg, [dynamicId]) return data
def readMail(self, mailID): '''阅读邮件(将邮件未读状态改为以读状态) @param mailID: int 邮件的ID ''' result = self.checkMyMail(mailID) if not result: return {'result': False, 'message': Lg().g(360)} m = Mail(id=mailID) m.updateMainInfo({'isReaded': 1}) data = m.formatMailInfo() return {'result': True, 'data': data}
def getQuestListOnNpc(dynamicId, characterId, npcId): '''获取npc身上任务列表 @param dynamicId: int 客户端动态Id @param characterId: int 角色的id @param npcId: int npc的id ''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} player.quest.pushPlayerScenceNpcQuestStatus() return {'result': True}
def receiveBound(self, step): '''领取奖励 @param step: int 步骤 ''' if self.schedule['bound_%d' % step]: return {'result': False, 'message': Lg().g(287)} boundinfo = dbSchedule.SCHEDULE_BOUND.get(step) if not boundinfo: return {'result': False, 'message': Lg().g(464)} activityrequired = boundinfo.get('vitality_required', 100) if activityrequired > self.schedule.get('activity'): return {'result': False, 'message': Lg().g(456)} itembound = boundinfo.get('item_bound') if self._owner.pack._package._PropsPagePack.findSparePositionNum() < 1: return {'result': False, 'message': Lg().g(16)} self._owner.pack.putNewItemsInPackage(itembound, 1) self.schedule['bound_%d' % step] = 1 dbSchedule.updateSchedule(self._owner.baseInfo.id, {'bound_%d' % step: 1}) return {'result': True, 'message': Lg().g(288)}
def KickRoomMember(dynamicId, characterId, tocharacterId): '''踢出房间成员 @param dynamicId: int 客户端的动态Id @param characterId: int 角色的id @param tocharacterId: int 房间成衣店的ID ''' player = PlayersManager().getPlayerByID(characterId) if not player: return {'result': False, 'message': Lg().g(18)} if characterId == tocharacterId: return {'result': False, 'message': Lg().g(110)} areahall = Hall().getAreaHallById(1) roomId = player.baseInfo.getQueueRoom() if not roomId: return {'result': False, 'message': Lg().g(104)} room = areahall.getQueueRoomById(roomId) result = room.dropmember(tocharacterId) if result == 0: return {'result': False, 'message': Lg().g(111)} return {'result': True, 'message': Lg().g(112)}
def getMailList(dynamicId, characterId, mailType, pageCount): '''获取邮件列表 @param characterId: int 角色的ID @param mailType: int 邮件的类型 @param pageCount: int 页面数 ''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} mailListInfo = player.mail.getMailList(mailType, pageCount) return {'result': True, 'data': mailListInfo}
def getAwardInfo(dynamicId, characterId, awardtype): '''获取奖励信息 @param dynamicId: int 客户端的动态id @param characterId: int 角色的id @param awardtype: int 奖励的类型 ''' player = PlayersManager().getPlayerByID(characterId) if not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} awardInfo = player.award.getAwardInfo(awardtype) return {'result': True, 'message': u'', 'rewardInfo': awardInfo}
def LevelMailPrompt(level, receiverId): '''等级邮件提示 ''' if dbMail.LEVEL_MAIL.has_key(level): mailinfo = dbMail.LEVEL_MAIL.get(level) title = mailinfo.get('title') senderId = -1 sender = Lg().g(128) content = mailinfo.get('content') mtype = 1 sendMail(title, senderId, sender, receiverId, content, mtype)
def ObtainTargetReward(characterId, taskId): '''领取每日目标奖励 ''' player = PlayersManager().getPlayerByID(characterId) if not player: return {'result': False, 'message': Lg().g(18)} data = player.daily.receiveBound(taskId) msg = data.get('message', '') if msg: pushOtherMessage(905, msg, [player.dynamicId]) return data
def buyItemInMyshop(dynamicId, characterId, itemTemplateId): '''获取商城信息 @param dynamicId: int 客户端的id @param characterId: int 角色的id @param itemTemplateId: int 物品的模板Id ''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} data = player.shop.buyItemInMyshop(itemTemplateId) return data
def sendMail(title, senderId, sender, receiverId, content, type): '''发送邮件 @param senderId: int 发送者的ID ,系统发送时为-1 @param sender: str 发送者的名称 ,系统发送时为Lg().g(128) @param memberId: int 接受者的ID @param content: str 邮件的类容 @param type: int#邮件的类型(1.系统信函 2.玩家信函 ) ''' m = Mail( title=title,type =0, senderId =senderId, receiverId=receiverId,\ sender = Lg().g(128),content=content) m.mailIntoDB()
def GetColonizationSceneInfo_2405(dynamicId, request_proto): '''殖民管理获取当前页副本及其相关信息''' argument = GetColonizationSceneInfo2405_pb2.GetColonizationSceneInfoRequest( ) argument.ParseFromString(request_proto) response = GetColonizationSceneInfo2405_pb2.GetColonizationSceneInfoResponse( ) pid = argument.id page = argument.curPage #当前页数 data, zong = InstanceColonizeGuerdon.getInstanceinfoBypid(pid, page) if len(data) < 1: response.data.curPage = page response.data.maxPage = zong response.message = Lg().g(613) response.result = False return response.SerializeToString() response.message = u'' response.result = True response.data.curPage = page response.data.maxPage = zong for val in data: info = response.data.copyInfo.add() info.c_id = val.get('id', 0) info.c_name = val.get('name', u'') info.li_liang = val.get('liliang', 0) info.add_li_liang = val.get('jialiliang', 0) info.min_jie = val.get('minjie', 0) info.add_min_jie = val.get('jiaminjie', 0) info.zhi_li = val.get('zhili', 0) info.add_zhi_li = val.get('jiazhili', 0) info.nai_li = val.get('naili', 0) info.add_nai_li = val.get('jianaili', 0) info.ji_shen = val.get('jingshen', 0) info.add_ji_shen = val.get('jiajingshen', 0) info.wu_gong = val.get('wugong', 0) info.wu_fang = val.get('wu_fang', 0) info.mo_gong = val.get('mogong', 0) info.mo_fang = val.get('mofang', 0) info.gong_su = val.get('gongsu', 0) info.ming_zhong = val.get('mingzhong', 0) info.bao_ji = val.get('baoji', 0) info.shan_bi = val.get('shanbi', 0) d = val.get('state', None) info.liliang_info.status = d[1]['status'] info.liliang_info.remainTime = d[1]['remainTime'] info.minjie_info.status = d[2]['status'] info.minjie_info.remainTime = d[2]['remainTime'] info.zhili_info.status = d[3]['status'] info.zhili_info.remainTime = d[3]['remainTime'] info.naili_info.status = d[4]['status'] info.naili_info.remainTime = d[4]['remainTime'] info.jingshen_info.status = d[5]['status'] info.jingshen_info.remainTime = d[5]['remainTime'] return response.SerializeToString()
def SellFate(self, fateId): '''卖掉命格 @param fateId: int 命格的ID ''' fate = self.fates.get(fateId) if not fate: return False price = fate.templateinfo.get('price') fate.destroyByDB() del self.fates[fateId] self.outside.remove(fateId) self._owner.finance.addCoin(price) name = fate.templateinfo.get('name') try: msg = Lg().g(300) % (name, price) except: msg = Lg().g(300) % (name.decode('utf8'), price) dynamicId = self._owner.dynamicId pushOtherMessage(905, msg, [dynamicId]) return True
def getItemsInPackage(dynamicId,characterId,packCategory,page): '''获取角色包裹信息 @param dynamicId: int 客户端的id @param characterId: int 角色的id @param packCategory: int 1:普通物品 2:任务 ''' player = PlayersManager().getPlayerByID(characterId) if not player: return {'result':False,'message':Lg().g(18)} packageItemInfo = player.pack._package.getCategoryPageItemInfo(packCategory,page) return {'result':True,'message':u'','data':packageItemInfo}
def JingJiCleanCD_2705(dynamicId,characterId): '''清除竞技场CD ''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result':False,'message':Lg().g(18)} result = player.arena.clearCD() msg = result.get('message',u'') if msg: pushOtherMessage(905, result.get('message',u''), [dynamicId]) return result
def ModifyJoinLevel(dynamicId, characterId, levelrequired): '''修改申请加入等级限制 @param dynamicId: int 客户端的动态id @param characterId: int 角色的id @param levelrequired: int 等级限制 ''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} guildId = player.guild.getID() if not guildId: return {'result': False, 'message': Lg().g(79)} guild = GuildManager().getGuildById(guildId) data = guild.ModifyJoinLevel(characterId, levelrequired) reason = {0: Lg().g(80), -1: Lg().g(81)} if data == 1: result = {'result': True, 'message': Lg().g(85)} else: result = {'result': False, 'message': reason[data]} return result
def getMonsterPracticeExp(dynamicId, characterId, monsterId): '''获取单个怪物修炼所得经验 @param dynamicId: int 客户端的动态id @param characterId: int 角色的id @param monsterId: int 怪物的模板id ''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} data = player.practice.getMonsterPracticeExp(monsterId) return data
def applyQuest(dynamicId, characterId, taskId): '''接受任务 @param dynamicId: int 任务的id @param characterId: int 角色的id @param taskId: int 任务的id ''' player = PlayersManager().getPlayerByID(characterId) if not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} data = player.quest.applyQuest(taskId) return data
def pingFen_2002(dynamicId, request_proto): argument = GetMyScoreInfo2002_pb2.GetMyScoreInfoRequest() argument.ParseFromString(request_proto) response = GetMyScoreInfo2002_pb2.GetMyScoreInfoResponse() characterid = argument.id #角色id data = pingfen.getPFenByCharacterId(characterid) if not data or len(data) < 1: response.result = False response.message = Lg().g(622) return response.SerializeToString() response.result = True response.message = Lg().g(166) for item in data: it = response.data.add() it.score = item.get('pf') #评分 itemm = item.get('item') itemm.SerializationItemInfo(it.itemsInfo) return response.SerializeToString()
def YiJianObtainAndDrop(dynamicId, characterId, opearType): '''一键拾取或卖出 ''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} if opearType: result = player.fate.SellAll() else: result = player.fate.PickUpAll() return result
def itemConsignment(self, position, payNum, page, payType=1): '''物品寄卖 @param position: int 物品在包裹中的位置 ''' package = self._package.getPropsPagePack() position = package.getRealPostion(position, page) item = package.getItemByPosition(position) if not item: return {'result': False, 'message': Lg().g(189)} if item.attribute.getIsBound(): return {'result': False, 'message': Lg().g(384)} result = db_package.itemConsignment(self._owner.baseInfo.getId(),\ item, payNum, payType) if not result: return {'result': False} result = db_package.updateItemInPackStack(3, item, 0, tag=0) if not result: return {'result': False} package.removeItemByPosition(position) return {'result': True, 'message': Lg().g(385)}
def AfterGetNewEqupment(self,item): '''获取新的装备奖励后的处理''' toposition = item.baseInfo.getItemBodyType() if toposition==-1: return recCharacterId = self._owner.baseInfo.id sysOpeType = 1 tishiStr = Lg().g(450) contentStr = Lg().g(451) caozuoStr = Lg().g(452) icon = item.baseInfo.getItemTemplateInfo().get('icon',0) itype = item.baseInfo.getItemTemplateInfo().get('type',0) package = self._owner.pack._package.getPropsPagePack() realpos = package.getPositionByItemId(item.baseInfo.id) curPage = realpos/30+1 pos = realpos%30 pushCorpsApplication(recCharacterId, sysOpeType, tishiStr, contentStr, caozuoStr, icon = icon, type = itype, pos = pos, curPage= curPage, toposition = toposition)
def updateGuild(self,typeid): '''更新行会排行数据 @param typeid: int 1国等级 2国实力 ''' resu=dbGuild.getTop100(typeid) if not resu or len(resu)<1: return{'result':False,'message':Lg().g(586),'data:':None} if typeid==1: self.glevel=resu elif typeid==2: self.gstrength=resu
def SettingMatrix(dynamicId, characterId, matrixID, petId, operationType, fromPos, toPos): '''阵法设置''' player = PlayersManager().getPlayerByID(characterId) if not player: return {'result': False, 'message': Lg().g(18)} result = player.matrix.updateMatrix(petId, operationType, fromPos, toPos) if not result.get('result'): msg = result.get('message', '') pushOtherMessage(905, msg, [dynamicId]) return result
def addTeamMember(self, characterId): '''添加队伍成员''' if characterId == self._owner.baseInfo.id: return {'result': False, 'message': Lg().g(491)} if self._teamId == -1: team = TeamManager().creatTeam(self._owner.baseInfo.id) else: team = TeamManager().getTeamByID(self._teamId) result = team.addMember(characterId) team.pushTeamMemberInfo() return result
def StrengthenItem_2118(dynamicId, request_proto): '''获取转移后的属性效果''' argument = StrengthenItem2118_pb2.StrengthenItemRequest() argument.ParseFromString(request_proto) response = StrengthenItem2118_pb2.StrengthenItemResponse() characterid = argument.id #角色id itemid1 = argument.itemId1 #装备id itemid2 = argument.itemId2 #装备id result = strengthen.getSxzy(characterid, itemid1,itemid2) response.result = True response.message = Lg().g(166) if result.get('qh',None)==None: response.result =False response.message = Lg().g(620) else: response.qh=result.get('qh',-1) response.coin=result.get('coin',-1) return response.SerializeToString()
def promote(self): '''升级爵位 return bool ''' info=self.getNextInfo()#下级爵位信息 if not info: return False ww=info['prestige']#升爵位所需威望值 nowww=self.owner.finance.getPrestige()#角色当前威望值 if nowww>=ww: self.owner.finance.updatePrestige(nowww-ww)#更新威望值 self._level+=1#内存更改爵位等级 # dbaccess.updateCharacter(self._owner.baseInfo.id, 'NobilityLevel', self._level)#数据库更改爵位等级 me=Lg().g(376)%self.getName() self.clear()#清除所有限制 me=me.replace("\\\\", "\\") dbNobilityHistory.add(self._owner.baseInfo.id, me, self._level) self._owner.daily.noticeDaily(18,0,self._level) self._owner.quest.specialTaskHandle(128) return True else: return False