def getForTressInfo(self): '''获取当个要塞的信息 ''' from app.scense.core.guild.GuildManager import GuildManager info = {} info['id'] = self.id kimoriguild = GuildManager().getGuildById(self.kimori) siegeguild = GuildManager().getGuildById(self.siege) if kimoriguild: #领主国的名称 info['kimoriname'] = kimoriguild.get('name') info['kimoriemblem'] = kimoriguild.get('emblemLevel') else: info['kimoriname'] = u'' info['kimoriemblem'] = 0 if siegeguild: #挑战国的名称 info['siegename'] = siegeguild.get('name') info['siegeemblem'] = siegeguild.get('emblemLevel') else: info['siegename'] = u'' info['siegeemblem'] = 0 if not IsSignUpTime(): info['fortressstatus'] = 1 #等待征战 elif IsWarTime(): info['fortressstatus'] = 2 #征战中 else: if not (kimoriguild and siegeguild): #判断征战状态 info['fortressstatus'] = 0 #可以征战 else: info['fortressstatus'] = 1 #等待征战 return info
def CorpsInviteOther(dynamicId, characterId, otherid, otername): '''邀请加入行会 @param dynamicId: int 客户端的动态id @param characterId: int 角色的id @param otherid: int 对方的Id @param otername: 对方的名称 ''' 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)} toplayer = PlayersManager().getPlayerByID(otherid) if not toplayer: return {'result': False, 'message': Lg().g(91)} if toplayer.level.getLevel() < LEVELREQUIRED: return {'result': False, 'message': Lg().g(86)} guild = GuildManager().getGuildById(guildId) if guild.guildinfo.get('curMenberNum', 50) >= guild.guildinfo.get( 'memberCount', 50): return {'result': False, 'message': Lg().g(83)} sendList = [toplayer.getDynamicId()] pushInviteOtherJoinGuild(characterId, guildId, player.baseInfo.getName(),\ guild.getGuildName(), sendList) msg = Lg().g(92) pushOtherMessage(905, msg, [dynamicId]) return {'result': True}
def Donate(self,technology): '''捐献''' nowdate = datetime.date.today() limittime = 1 if self.getPost()>0: limittime = 2 if (nowdate - self.getLastDonate()).days<1 and self.getDonatetimes()>=limittime: msg = Lg().g(351) pushOtherMessage(905,msg,[self._owner.getDynamicId()]) return {'result':False,'message':Lg().g(351)} guild = GuildManager().getGuildById(self.id) if not guild: return {'result':False,'message':Lg().g(339)} operator = self._owner.baseInfo.id coinCount = self._owner.level.getLevel()*250 if self._owner.finance.getCoin()<coinCount: msg = Lg().g(88) pushOtherMessage(905,msg,[self._owner.getDynamicId()]) return {'result':False,'message':Lg().g(88)} data = guild.Donate(operator,coinCount,technology) if data.get('result',False): self.addContribution(coinCount) self._owner.finance.updateCoin(self._owner.finance.getCoin()-coinCount) if (nowdate - self.getLastDonate()).days>1: self.updateLastDonate(nowdate) self.updateDonatetimes(self.getDonatetimes()+1) self._owner.updatePlayerInfo() else: msg = data.get('message') pushOtherMessage(905,msg,[self._owner.getDynamicId()]) return data
def creatGuild(self,corpsName,camp): '''创建行会 @param corpsName: 国的名称 ''' if self.getID(): return {'result':False,'message':Lg().g(340)} surplushours = self.getCanJoinTime() if surplushours: return {'result':False,'message':Lg().g(647)%surplushours} if self._owner.finance.getCoin()<self.CREATECOIN: return {'result':False,'message':Lg().g(345)} if self._owner.level.getLevel()<12: return {'result':False,'message':Lg().g(346)} if self.id: return {'result':False,'message':Lg().g(347)} guildId = GuildManager().creatGuild(corpsName, self._owner.baseInfo.id,camp) if guildId == -1: return {'result':False,'message':Lg().g(348)} if guildId: self.updateID(guildId) chatnoderemote.callRemote('updateGuild',self._owner.baseInfo.id,guildId,1)#同步聊天角色中的行会 self._owner.updatePlayerInfo() self._owner.quest.specialTaskHandle(ADDGUILDTASKTYPE) self._owner.finance.addCoin(-self.CREATECOIN) return {'result':True,'message':Lg().g(349)} return {'result':False,'message':Lg().g(350)}
def getUnionTypeStr(self): '''获取行会阵营''' guild = GuildManager().getGuildById(self.id) if guild: utype = guild.camp return {1:Lg().g(336),2:Lg().g(337)}.get(utype,Lg().g(338)) return Lg().g(338)
def AcceptOrRefuseApply(dynamicId, characterId, operType, appliId): '''拒绝或同意申请 @param dynamicId: int 客户端的动态id @param characterId: int 客户端的动态id @param operType: int 操作类型 0 接受 1 拒绝 @param appliId: int 申请ID ''' 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) if operType == 0: data = guild.acceptGuildApply(characterId, appliId) reason = {0:Lg().g(80),-1:Lg().g(81),-2:Lg().g(82),\ -3:Lg().g(83),-4:Lg().g(84)} if data == 1: result = {'result': True, 'message': Lg().g(85)} else: result = {'result': False, 'message': reason[data]} else: data = guild.refuseGuildApply(characterId, appliId) reason = {0: Lg().g(80), -1: Lg().g(81), -4: Lg().g(84)} if data == 1: result = {'result': True, 'message': Lg().g(85)} else: result = {'result': False, 'message': reason[data]} return result
def loadModule(): from app.scense.nodeapp import * # from app.scense.publicnodeapp import * from app.scense.chatnodeapp import * dbScene.getALlInstanceSceneInfo() dbScene.getAllPublicSceneInfo() dbPortals.getAllPortalsInfo() dbStrengthen.getAll() dbInstance_colonize_title.updateAll() #更新殖民头衔配置 dbNpc.getAllNpcInfo() dbAward.getAllAwardInfo() dbSchedule.getAllScheduleBound() dbSchedule.getAllScheduleConfig() dbdaily.getAllDaily() dbGodhead.getAllGodhead() dbGodhead.getAllHeadtype() dbItems.getAllsetInfo() dbItems.getAllGemInfo() dbItems.getAllCompoundInfo() dbMonster.getAllMonsterInfo() dbMap.getAllDoorInfo() dbMap.getAllMonsterConfig() dbMap.getAllMapInfo() GuildManager() MapManager() serviceByStart.doService() updateInstanceInfo(1) updateSceneInfo(1) cleanMeM(1800)
def AcceptOrRefuseApply(self,operType,appliId): '''拒绝或同意申请 @param operType: int 操作类型 0 接受 1 拒绝 @param appliId: int 申请ID ''' guild = GuildManager().getGuildById(self.id) if not guild: return {'result':False,'message':Lg().g(339)} post = self.getPost() if post ==0: return {'result':False,'message':Lg().g(81)} if operType==0: data = guild.acceptGuildApply(self._owner.baseInfo.id,appliId) reason = {0:Lg().g(80),-1:Lg().g(81),-2:Lg().g(82),\ -3:Lg().g(83),-4:Lg().g(84)} if data ==1: result = {'result':True,'message':Lg().g(85)} else: result = {'result':False,'message':reason[data]} else: data = guild.refuseGuildApply(self._owner.baseInfo.id,appliId) reason = {0:Lg().g(80),-1:Lg().g(81),-4:Lg().g(84)} if data ==1: result = {'result':True,'message':Lg().g(85)} else: result = {'result':False,'message':reason[data]} return result
def CorpsInviteReply(dynamicId, characterId, union_id, is_ok): '''邀请加入行会的反馈信息 @param dynamicId: int 客户端的动态id @param characterId: int 角色的id @param union_id: int 行会的id(邀请者的ID) @param is_ok: int 是否同意 0否 1是 ''' player = PlayersManager().getPlayerByID(characterId) fplayer = PlayersManager().getPlayerByID(union_id) if not player or not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} nowguildId = player.guild.getID() toguildId = dbGuild.getCharacterGuildId(union_id) if fplayer and not is_ok: msg = "%s拒绝了你的邀请" % player.baseInfo.getName() pushOtherMessage(905, msg, [fplayer.getDynamicId()]) return {'result': True} if nowguildId: return {'result': False, 'message': Lg().g(94)} guild = GuildManager().getGuildById(toguildId) if not guild: return {'result': False, 'message': Lg().g(95)} surplushours = player.guild.getCanJoinTime() if surplushours: return {'result': False, 'message': Lg().g(647) % surplushours} result = guild.JointGuild(characterId) if result.get('result', False): msg = u'成功加入%s' % guild.getGuildName() pushOtherMessage(905, msg, [dynamicId]) else: nmsg = result.get('message', '') pushOtherMessage(905, nmsg, [dynamicId]) return result
def UseXingYun(self,usetype): ''' @param usetype: int 0四叶草1郁金香2蝴蝶兰3紫罗兰4曼陀罗 ''' self.clearWishRecord() if usetype not in [0,1,2,3,4]: return {'result':False,'msgID':651} CONS_CONFIG = {0:0,1:10,2:15,3:20,4:30} goldcons = CONS_CONFIG.get(usetype) guild = GuildManager().getGuildById(self.id) if not guild: return {'result':False,'msgID':79} if self._owner.finance.getGold()<goldcons: return {'result':False,'msgID':652} characterId = self._owner.baseInfo.id viplevel = self._owner.baseInfo._viptype nowtimes=getattr(self,'wish_%d_times'%usetype) result = dbVIP.vipCertification('wish_%d_times'%usetype, viplevel, nowtimes=nowtimes) if not result: return {'result':False,'msgID':655} setattr(self, 'wish_%d_times'%usetype, nowtimes+1) dbGuild.updateCharacterWishRecord(characterId, {'wish_%d_times'%usetype:nowtimes+1}) self._owner.finance.addGold(-goldcons) usename = self._owner.baseInfo.getName() xingyunadd = guild.UseXingYun(usetype,usename) self._owner.petShop.addXy(xingyunadd) return {'result':True}
def getGuildAttrExt(self): '''获取国苏醒的加成''' info = {} guild = GuildManager().getGuildById(self.id) if guild: info = guild.getGuildAttrExt() return info
def GetGroupLingDiInfo4400(dynamicId, characterId): '''获取国领地信息 ''' 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) guildInfo = guild.guildinfo info = {} ldID = FortressManager().getGuildFortressId(guildId) fortress = FortressManager().getFortressById(ldID) if fortress: if not fortress.isOccupied: fortress = None info['ldType'] = ldID if fortress else 0 info['groupName'] = guildInfo['name'] info['groupLevel'] = guildInfo['level'] info['groupLeader'] = guildInfo['presidentname'] info['obtainJL'] = True if fortress else False info['icon'] = guildInfo['emblemLevel'] info['battleInfo'] = [] if not fortress else fortress.fightlog info['battleTime'] = 0 if not fortress else fortress.getNextFightTime() return {'result': True, 'data': info}
def InstanceMapInfos_2502(dynamicId, request_proto): '''获取副本组信息''' argument = MapMessage_pb2.InstanceMapInfosRequest() argument.ParseFromString(request_proto) response = MapMessage_pb2.InstanceMapInfosResponse() dynamicId = dynamicId characterId = argument.id result = map.InstanceMapInfos(dynamicId, characterId) response.result = result.get('result', False) response.message = result.get('message', '') response.self_color = result.get('self_color', 0) infos = result.get('infos', {}) for key, _info in infos.items(): mapinfo = response.infos.add() mapinfo.id = key mapinfo.once = _info.get('reward', 0) mapinfo.income = _info.get('rewardAll', 0) mapinfo.instance_name = _info.get('instancename', '') mapinfo.union_name = _info.get('pname', '') + "(%s)" % _info.get('gname', '') guildId = _info.get('gid', 0) color = 0 if not guildId: if not _info.get('pid', 0): color = 0 else: color = DEFAULTCOLOR else: guild = GuildManager().getGuildById(guildId) if guild: color = guild.guildinfo.get('color', 0) mapinfo.color = color return response.SerializeToString()
def getUnionType(self): '''获取阵营类型''' guild = GuildManager().getGuildById(self.id) if guild: utype = guild.camp return utype return 0
def CrusadeCorps(dynamicId, characterId, corpsId): '''国讨伐申请 @param dynamicId: int 客户端的动态id @param characterId: int 角色的id @param corpsId: int 国的id ''' 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) toGuild = GuildManager().getGuildById(corpsId) if not toGuild: return {'result': False, 'message': Lg().g(87)} data = guild.CrusadeCorps(characterId, guildId) return data
def addGuildExp(self,exp): '''添加国经验''' guild = GuildManager().getGuildById(self.id) if guild: result = guild.addExp(exp) if result: self.addContribution(exp) else: raise Exception(Lg().g(339))
def GetBattleInfo4406(dynamicId, characterId): '''获取战斗信息''' 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)} ldID = FortressManager().guildFightFortressId(guildId) fortress = FortressManager().getFortressById(ldID) if not fortress: return {'result': False, 'message': Lg().g(654)} guildBattleInfo = {} guildBattleInfo['roundCount'] = fortress.getRound() guildBattleInfo['remainTime'] = fortress.getBattleRemainTime() guildBattleInfo['jishaCount'] = player.guild.successTimes guildBattleInfo['obtainCoin'] = player.guild.coinBound guildBattleInfo['failCount'] = player.guild.failTimes guildBattleInfo['obtainSw'] = player.guild.prestigeBound guildBattleInfo['battleInfoList'] = fortress.battleInfoList guild1Id = fortress.get('kimori') guild2Id = fortress.get('siege') guild1Info = {} guild2Info = {} if guild1Id: guild1 = GuildManager().getGuildById(guild1Id) guild1Info = {} guild1Info['groupName'] = guild1.get('name') guild1Info['groupCount'] = fortress.kimoriScore guild1Info['icon'] = guild1.get('emblemLevel') guild1Info['groupMember'] = fortress.kimoriMembers if guild2Id: guild2 = GuildManager().getGuildById(guild2Id) guild2Info = {} guild2Info['groupName'] = guild2.get('name') guild2Info['groupCount'] = fortress.siegeScore guild2Info['icon'] = guild2.get('emblemLevel') guild2Info['groupMember'] = fortress.siegeMembers guildBattleInfo['group1Info'] = guild1Info guildBattleInfo['group2Info'] = guild2Info return {'result': True, 'data': guildBattleInfo}
def getGuildInfo(self): '''获取行会基本信息''' if not self.id: return {'result':False,'message':Lg().g(339)} # if self.id>0 and not GuildManager()._guilds.has_key(self.id): # GuildManager().addGuildById(self.id) guild = GuildManager().getGuildById(self.id) if not guild: return {} return guild.guildinfo
def ChangeUnionColor(dynamicId, characterId, color): '''修改本国势力颜色''' 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) return guild.changeColor(characterId, color)
def pushGuildLevelUp(self): '''获取行会升级消息''' guild = GuildManager().getGuildById(self.id) if guild: lastonline = self._owner.lastOnline leveluptime = guild.levelupTime if leveluptime>lastonline: level = guild.level sendList = [self._owner.getDynamicId()] pushGuildLevelUpMessage(level, sendList)
def ClearingFight(self): '''国战战后结算 ''' from app.scense.core.guild.GuildManager import GuildManager info = {} info['applyTime'] = str(datetime.datetime.now()) if not self.siege: info['kimori'] = self.kimori winner = info['kimori'] Loser = 0 else: #守城方的分数大于攻城方的分数 if self.kimoriScore > self.siegeScore: info['kimori'] = self.kimori winner = info['kimori'] Loser = self.siege else: self.kimori = self.siege info['kimori'] = self.siege winner = info['kimori'] Loser = self.kimori self.kimoriScore = 0 self.siegeScore = 0 self.isOccupied = 1 info['kimoriScore'] = 0 info['siegeScore'] = 0 info['siege'] = 0 info['isOccupied'] = 1 self.addFightlog(info['kimori'], 2) guild1 = GuildManager().getGuildById(winner) guild2 = GuildManager().getGuildById(Loser) if guild1: guild1.addExp(3500) msg = u"%s国成功征战%s,成为其国领地!" % (guild1.get('name'), self.name) chatnoderemote.callRemote('pushSystemToInfo', msg) if guild2: guild1.addExp(1500) dbfortress.updateFortressInfo(self.id, { 'kimori': info['kimori'], 'isOccupied': 1, 'siege': 0 })
def updateInstancePid(self, groupid, pid, pname, gid, gname, instancename): '''更改(或添加)副本领主 @param groupid: int 副本组id @param pid: int 角色id @param pname: str 角色名称 @param gid: int 国id @param gname: str 国名称 @instancename:str 副本名称 ''' from app.scense.core.guild.GuildManager import GuildManager self.updateIByid(groupid) info = self.i[groupid] #副本殖民信息 if info['pid'] == 0: #如果这个副本没有被殖民 dbInstanceColonize.addInstanceColonize(groupid, instancename, pid, pname, gid, gname, 0, 0) #添加到数据库中 info['pid'] = pid #设置此副本的领主角色id info['pname'] = pname #设置副本领主的角色名称 info['gid'] = gid #设置领主行会id info['camp'] = 0 if gid > 0: info['camp'] = GuildManager().getGuildById(gid).guildinfo[ 'camp'] #所属阵营 0中立 1光明 2黑暗 info['gname'] = gname #设置领主行会名称 info['name'] = instancename #设置副本名称 self.setI(groupid, info) cityid = self.ic.get(groupid) #根据副本组id获取所属城市id result, instanceinfo = self.cityColonize(cityid) #根据城市id判断城市是否已经被玩家占领 if result: pid = instanceinfo['pid'] cinfo = self.c[cityid] cinfo['pid'] = pid cinfo['pname'] = instanceinfo['pname'] cinfo['gid'] = instanceinfo['gid'] cinfo['gname'] = instanceinfo['gname'] cinfo['camp'] = instanceinfo['camp'] self.setC(cityid, cinfo) cszid = self.ip.get(groupid) #根据副本组id获取所属传送阵id rs1, cs1 = self.Portal(cszid) #根据传送阵id判断传送阵是否被主宰 if rs1: pid = cs1['pid'] #设置城市占领者id pname = cs1['pname'] #设置城市占领者名称 gid = cs1['gid'] #设置城市占领者行会id gname = cs1['gname'] camp = cs1['camp'] #所属阵营 0中立 1光明 2黑暗 pinfo = self.p[cszid] #传送阵殖民信息 pinfo['pid'] = pid pinfo['pname'] = pname pinfo['gid'] = gid pinfo['gname'] = gname pinfo['camp'] = camp self.setP(cszid, pinfo)
def GetSingleUnion(dynamicId, characterId, union_id): '''获取单个国的信息''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} guild = GuildManager().getGuildById(union_id) if not guild: return {'result': False, 'message': Lg().g(95)} guildInfo = guild.getGuildInfo(characterId) if not guildInfo: return {'result': False, 'message': Lg().g(95)} return {'result': True, 'data': guildInfo}
def GetXuYuanInfo4404(dynamicId, characterId): '''获取许愿相关信息 ''' 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) info = guild.GetXuYuanInfo() info['xyValue'] = player.petShop.xy return {'result': True, 'data': info}
def getSceneGuildName(self): '''获取城镇占领国的名称 ''' from app.scense.core.campaign.FortressManager import FortressManager from app.scense.core.guild.GuildManager import GuildManager f = FortressManager().getFortressBySceneId(self._id) if not f.isOccupied: return '' if not f.kimori: return '' guildId = f.kimori guild = GuildManager().getGuildById(guildId) return guild.get('name')
def leaveGuild(self): '''离开国''' guild = GuildManager().getGuildById(self.id) gid=self.id if not guild: return {'result':False,'message':Lg().g(79)} data = guild.leaveGuild(self._owner.baseInfo.id) if data.get('result',False): self.updateID(0) self.setLeaveTime(datetime.datetime.now()) chatnoderemote.callRemote('updateGuild',self._owner.baseInfo.id,gid,0)#同步聊天角色中的行会 self._owner.updatePlayerInfo() return data
def getGuildListInfo(dynamicId, characterId, getType, curPage, searchCriteria): '''获取国列表 @param dynamicId: int 客户端动态id @param characterId: int 角色的id @param getType: int 获取类型 0获取所有1搜索 @param curPage: int 当前页数 @param searchCriteria: str 搜索条件 ''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} info = GuildManager().getGuildListInfo(characterId, getType, curPage, searchCriteria) return {'result': True, 'data': info}
def GetEmblemInfo(dynamicId, characterId): '''获取行会的管理信息 @param dynamicId: int 客户端的动态id @param characterId: int 角色的id ''' 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.GetEmblemInfo() return {'result': True, 'data': data}
def TakeCorpsChief(dynamicId, characterId): '''接位国长 @param dynamicId: int 客户端的动态id @param characterId: int 角色的id ''' 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.takeCorpsChief(characterId) return data
def ObtainFortressReward(self): '''获取国领地奖励 ''' #判断是否领取过今天的奖励 if self.lastDonate.date()==datetime.date.today(): return {'result':False,'msgId':658} guild = GuildManager().getGuildById(self.id) if not guild: return {'result':False,'msgId':659} coinBound = guild.level * 10000 self._owner.finance.addCoin(coinBound) lastDonate = datetime.datetime.now() self.updateLastDonate(lastDonate) return {'result':True,'msgId':660}