def guyongpet(pid, petid, typeid): """雇用宠物 @param pid: int 角色id @param petid: int 宠物模板id @param typeid: int #1表示金币兑换的宠物 2表示幸运值兑换 """ from app.scense.utils.dbopera import dbCharacterPet player = PlayersManager().getPlayerByID(pid) if not player: return {"result": False, "message": Lg().g(18)} alls = dbCharacterPet.PET_TEMPLATE if alls.has_key(petid): pet = alls.get(petid) coin = pet["coin"] xy = pet["xy"] if typeid == 1: # 扣除金币 pcoin = player.finance.getCoin() if pcoin >= coin: petlevel = 1 # 宠物等级 for i in player.petShop.shop1: # i[宠物模板id,宠物等级] if i[0]["id"] == petid: petlevel = i[1] flg = player.pet.addPet(petid, level=petlevel) # 添加宠物并返回 if flg == -1: pushObjectNetInterface.pushOtherMessage(905, Lg().g(167), [player.getDynamicId()]) return {"result": True, "message": Lg().g(167)} elif flg == -2: pushObjectNetInterface.pushOtherMessage(905, Lg().g(168), [player.getDynamicId()]) return {"result": True, "message": Lg().g(168)} player.finance.updateCoin(pcoin - coin) player.quest.specialTaskHandle(115) # 特殊任务处理 player.schedule.noticeSchedule(16, goal=1) return {"result": True, "message": Lg().g(166)} else: return {"result": False, "message": Lg().g(88)} else: # 扣除幸运值 pxy = player.petShop.xy if pxy < xy: pushObjectNetInterface.pushOtherMessage(905, Lg().g(169), [player.getDynamicId()]) return {"result": True, "message": Lg().g(169)} if pxy >= xy: flg = player.pet.addPet(petid) if flg == -1: pushObjectNetInterface.pushOtherMessage(905, Lg().g(167), [player.getDynamicId()]) return {"result": False, "message": Lg().g(167)} elif flg == -2: pushObjectNetInterface.pushOtherMessage(905, Lg().g(168), [player.getDynamicId()]) return {"result": True, "message": Lg().g(168)} player.petShop.xy = pxy - xy player.quest.specialTaskHandle(115) # 特殊任务处理 player.schedule.noticeSchedule(16, goal=1) return {"result": True, "message": Lg().g(166)} else: return {"result": False, "message": Lg().g(169)} else: return {"result": False, "message": Lg().g(170)}
def addPlayerFriend(dynamicId, characterId, friendName, friendType, isSheildedMail=0): '''添加好友 @param dynamicId: int 客户端的动态id @param characterId: int 角色的id @param friendName: string 对方的昵称 @param friendType: int(1,2) 好友的类型 1:好友 2:黑名单 @param isSheildedMail: 是否屏蔽邮件 ''' player = PlayersManager().getPlayerByID(characterId) if not player: return {'result': False, 'message': Lg().g(18)} friendId = dbaccess.getCharacterIdByNickName(friendName) #返回好友角色id [id] if not friendId: msg = Lg().g(75) pushObjectNetInterface.pushOtherMessage(905, msg, [player.getDynamicId()]) return {'result': False, 'message': Lg().g(68)} pyid = -1 #关系好友动态id -1表示角色没有在线 其他表示角色动态id py1 = PlayersManager().getPlayerByID(friendId[0]) if py1 and py1.friend.getTypeByid(characterId) == 0: #如果好友在线 pyid = py1.getDynamicId() result = player.friend.addFriend(characterId, friendId[0], friendType, pyid) if result: pushObjectNetInterface.pushOtherMessage(905, result['message'], [player.getDynamicId()]) return {'result': True, 'message': Lg().g(69)} return {'result': False, 'message': Lg().g(70)}
def addPlayerFriend(dynamicId,characterId,friendName,friendType,isSheildedMail=0): '''添加好友 @param dynamicId: int 客户端的动态id @param characterId: int 角色的id @param friendName: string 对方的昵称 @param friendType: int(1,2) 好友的类型 1:好友 2:黑名单 @param isSheildedMail: 是否屏蔽邮件 ''' player = PlayersManager().getPlayerByID(characterId) if not player: return {'result':False,'message':Lg().g(18)} friendId = dbaccess.getCharacterIdByNickName(friendName)#返回好友角色id [id] if not friendId: msg =Lg().g(75) pushObjectNetInterface.pushOtherMessage(905,msg, [player.getDynamicId()]) return {'result':False,'message':Lg().g(68)} pyid=-1 #关系好友动态id -1表示角色没有在线 其他表示角色动态id py1=PlayersManager().getPlayerByID(friendId[0]) if py1 and py1.friend.getTypeByid(characterId)==0:#如果好友在线 pyid=py1.getDynamicId() result = player.friend.addFriend(characterId,friendId[0],friendType,pyid) if result: pushObjectNetInterface.pushOtherMessage(905, result['message'], [player.getDynamicId()]) return {'result':True,'message':Lg().g(69)} return {'result':False,'message':Lg().g(70)}
def runingQd(self, pid, gold): """祈祷逻辑 @param gold: int 钻石数量 """ from app.scense.serverconfig.chatnode import chatnoderemote from app.scense.core.PlayersManager import PlayersManager v = {1: Lg().g(564), 2: Lg().g(499), 3: Lg().g(565), 4: Lg().g(566), 0: Lg().g(564)} player = PlayersManager().getPlayerByID(pid) mygold = player.finance.getGold() if mygold < gold: pushObjectNetInterface.pushOtherMessage(905, Lg().g(567), [player.getDynamicId()]) return False result = configure.qd(gold) lx = result[0] # 奖励类型 1金币奖励 2经验奖励 3声望奖励 4活力 sl = result[1] # 奖励数量 bs = result[2] # 奖励倍数 if lx == 1: player.finance.addCoin(sl) ss = Lg().g(568) % (v.get(lx), sl) elif lx == 2: player.level.addExp(sl) ss = Lg().g(568) % (v.get(lx), sl) elif lx == 3: player.finance.addPrestige(sl) ss = Lg().g(568) % (v.get(lx), sl) elif lx == 4: player.attribute.addEnergy(sl) ss = Lg().g(568) % (v.get(lx), sl) else: player.finance.addCoin(sl) if bs > 1: ss += Lg().g(569) % bs pushObjectNetInterface.pushOtherMessage(905, ss, [player.getDynamicId()]) # player.finance.updateGold(mygold-gold) player.finance.consGold(gold, 1) bbs = 1 # 大于这个倍数的才会广播 sj = time.strftime("%w%H") sj = int(sj) if sj >= 310 and sj <= 314: bbs = 2 if bs > bbs: pname = player.baseInfo.getName() tm = time.strftime("%Y-%m-%d %X") mg = Lg().g(570) % (pname, bs, v.get(lx), sl) chatnoderemote.callRemote("pushSystemToInfo", mg) if len(self.getGG()) == 4: del self.gg[0] self.gg.append([tm, mg]) self.uploadGG(self.gg) return True
def updateSpirit(pid, contxt): """修改角色心情 @param pid: int 角色id @param context: str 心情 """ player = PlayersManager().getPlayerByID(pid) if player.baseInfo.updateSpirit(contxt): pushObjectNetInterface.pushOtherMessage(905, Lg().g(175), [player.getDynamicId()]) else: pushObjectNetInterface.pushOtherMessage(905, Lg().g(176), [player.getDynamicId()]) return {"result": True, "message": u""}
def updateSpirit(pid, contxt): '''修改角色心情 @param pid: int 角色id @param context: str 心情 ''' player = PlayersManager().getPlayerByID(pid) if player.baseInfo.updateSpirit(contxt): pushObjectNetInterface.pushOtherMessage(905, Lg().g(175), [player.getDynamicId()]) else: pushObjectNetInterface.pushOtherMessage(905, Lg().g(176), [player.getDynamicId()]) return {'result': True, 'message': u''}
def pushSceneInfo(self,rate): '''给每一个在场景中的玩家推送场景信息 @param rate: int 移动的频率 ''' if not self._canRec: return self.updateAllPlayerLocation(rate) if self._monsters: self.updateAllMonsterLocation() groupState = configure.isteamInstanceTime(20)#组队副本时间判断 guildFightState = fortress.IsWarTime()#国战时间判断 for room in self.rooms: sendlist = [] sceneInfo = pushSceneMessage_pb2.pushSceneMessage() for playerId in room: player = PlayersManager().getPlayerByID(playerId) if not player: continue player.icon.groupIconManager(groupState)#组队战图标管理 player.icon.guildFightManager(guildFightState)#国战图标管理 PlayerPosition = sceneInfo.PlayerPosition.add() PlayerPosition.id = player.baseInfo.id PlayerPosition.name = player.baseInfo.getNickName() PlayerPosition.profession = player.profession.getProfessionName() PlayerPosition.headicon = player.profession.getFigure() GuildInfo = player.guild.getGuildInfo() if GuildInfo: PlayerPosition.guildname = GuildInfo.get('name','') PlayerPosition.figure = player.profession.getSceneFigure() position = player.baseInfo.getDestination() PlayerPosition.x = int(position[0]) PlayerPosition.y = int(position[1]) PlayerPosition.level = player.level.getLevel() PlayerPosition.viptype = player.baseInfo.getType() PlayerPosition.gemlevel = player.pack._equipmentSlot.getGemLevel() sendlist.append(player.getDynamicId()) ###############角色展示宠物的处理################ petremove = player.pet.popLastRemove() for petId in petremove: self.dropPet(petId) for petId in player.matrix._matrixSetting.values(): if petId<=0: continue pet = player.pet.getPet(petId) figure = pet.templateInfo['resourceid'] position = pet.getPosition() PetPosition = sceneInfo.petInfo.add() PetPosition.id = petId PetPosition.name = pet.baseInfo.getName() PetPosition.profession = pet.baseInfo.getName() PetPosition.headicon = figure PetPosition.figure = figure PetPosition.x = int(position[0]) PetPosition.y = int(position[1]) PetPosition.masterId = playerId sceneInfo.sceneId = self._id msg = sceneInfo.SerializeToString() pushApplyMessage(602,msg, sendlist)
def isHaveQH(characterid,itemid): '''判断是否能够强化 @param characterid: int 角色id @param itemid: int 物品1(item)表主键id ''' item1=None#物品实例1 player=PlayersManager().getPlayerByID(characterid) if itemid>0:#如果物品1存在 if player.pack._package._PropsPagePack.getPositionByItemId(itemid)!=-1:#背包中没有此物品 item1=player.pack._package._PropsPagePack.getItemInfoByItemid(itemid)#获取物品实例 else: item1=player.pack._equipmentSlot.getItemInfoByItemid(itemid) if not item1: return {'result':False,'message':Lg().g(189),'data':None} wqtype=item1.getWQtype()#武器类型 #装备类型id #0=衣服#1=裤子 #2=头盔#3=手套#4=靴子#5=护肩#6=项链#7=戒指#8=主武器#9=副武器#10=双手 if wqtype<0 or wqtype>10: #装备类型id pushObjectNetInterface.pushOtherMessage(905, Lg().g(196), [player.getDynamicId()]) return {'result':False,'message':Lg().g(197),'data':None} baseQuality=item1.baseInfo.getItemTemplateInfo().get("baseQuality",0)#基础品质 1灰 2白 3绿 4蓝 5紫 6橙 7红 itemlevel=item1.baseInfo.getItemTemplateInfo().get("levelRequire",0) #装备等级 qlevel=item1.attribute.getStrengthen() #物品当前的强化等级 jinbi= coinCount(qlevel,baseQuality,wqtype,itemlevel) return qq(player, itemid,wqtype,baseQuality,jinbi,item1)
def ObtainItem_2408(dynamicId, request_proto): '''放到自己背包中''' argument=ObtainItem2408_pb2.ObtainItemRequest() argument.ParseFromString(request_proto) response=ObtainItem2408_pb2.ObtainItemResponse() id=argument.id #角色id type=argument.type #0获取所有 1获取单个 pos=argument.pos # 单个在背包的位置 player=PlayersManager().getPlayerByID(id) #角色实例 if type==0: data=player.instance.putAllItemsInPack() if not data: response.result=False response.message=Lg().g(16) pushObjectNetInterface.pushOtherMessage(905, Lg().g(16), [player.getDynamicId()]) return response.SerializeToString() else: data=player.instance.getOneItemInPackByPosition(pos) if not data: response.result=False response.message=Lg().g(16) return response.SerializeToString() response.result=True response.message=u'' return response.SerializeToString()
def LevelUpEmblem(self, operator): '''升级军徽 @param operator: int 操作者的id ''' if self.MAXLEVEL <= self.get('emblemLevel'): return {'result': False, 'message': Lg().g(542)} player = PlayersManager().getPlayerByID(operator) self.emblemLevel += 1 result = True if result: msg = Lg().g(543)%\ (self.guildinfo['emblemLevel']) pushOtherMessage(905, msg, [player.getDynamicId()]) if self.guildinfo['emblemLevel'] == 20: utype = { 1: Lg().g(544), 2: Lg().g(545) }.get(self.guildinfo['camp'], Lg().g(546)) palyername = player.baseInfo.getName(0) gname = self.getGuildName() sendmsg = Lg().g(547) % (utype, palyername, gname) chatnoderemote.callRemote('pushSystemToInfo', sendmsg) return { 'result': True, 'message': Lg().g(548) % (self.guildinfo['emblemLevel']) } return {'result': False, 'message': Lg().g(549)}
def ObtainReward(pid,did): '''领取单个保卫奖励 @param pid: int 角色id @param did: int 保卫奖励表主键id ''' msg=u"" flg=True player=PlayersManager().getPlayerByID(pid)#获得角色id info=dbDefenceBonus.getByid(did) #根据奖励主键id获得奖励信息 if not info: pushObjectNetInterface.pushOtherMessage(905, Lg().g(61), [player.getDynamicId()]) return False,Lg().g(61) reward=info['reward'] player.finance.updatePrestige(player.finance.getPrestige()+reward) if not dbDefenceBonus.delByid(info['id']) : msg+=Lg().g(62) flg=False # item=Item(itemTemplateId=20030061) # item.pack.setStack(info['reward']) #物品的数量 # rs1=player.pack._package.canPutItem(item,info['reward']) #判断背包中是否可以放入这些数量的物品 # if rs1: #如果可以放进去 # player.pack.putNewItemsInPackage(20030061,info['reward']) # del item # if not dbDefenceBonus.delByid(info['id']) : # msg+=Lg().g(62) # flg=False # else: #如果一个奖励所获得物品不能放入背包 # del item # pushObjectNetInterface.pushOtherMessage(905, Lg().g(16), [player.getDynamicId()]) # return False,Lg().g(16) return flg,msg
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 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 ObtainReward(pid, did): '''领取单个保卫奖励 @param pid: int 角色id @param did: int 保卫奖励表主键id ''' msg = u"" flg = True player = PlayersManager().getPlayerByID(pid) #获得角色id info = dbDefenceBonus.getByid(did) #根据奖励主键id获得奖励信息 if not info: pushObjectNetInterface.pushOtherMessage(905, Lg().g(61), [player.getDynamicId()]) return False, Lg().g(61) reward = info['reward'] player.finance.updatePrestige(player.finance.getPrestige() + reward) if not dbDefenceBonus.delByid(info['id']): msg += Lg().g(62) flg = False # item=Item(itemTemplateId=20030061) # item.pack.setStack(info['reward']) #物品的数量 # rs1=player.pack._package.canPutItem(item,info['reward']) #判断背包中是否可以放入这些数量的物品 # if rs1: #如果可以放进去 # player.pack.putNewItemsInPackage(20030061,info['reward']) # del item # if not dbDefenceBonus.delByid(info['id']) : # msg+=Lg().g(62) # flg=False # else: #如果一个奖励所获得物品不能放入背包 # del item # pushObjectNetInterface.pushOtherMessage(905, Lg().g(16), [player.getDynamicId()]) # return False,Lg().g(16) return flg, msg
def getSxzy(characterid,item1,item2): '''获取属性转移后的效果及其花费信息 @param item1: int 物品id (转移后强化等级变成0的那个物品的id) @param item: int 物品id ''' if item1==item2: pushObjectNetInterface.pushOtherMessageByCharacterId(Lg().g(206), [characterid]) return {'result':False,'message':Lg().g(206),'data':None} player=PlayersManager().getPlayerByID(characterid) #角色实例 if not player: return {'result':False,'message':Lg().g(199),'data':None} if player.level.getLevel()<30: return {'result':False,'message':Lg().g(205),'data':None} items1=getItemByplayer(player, item1) if not items1: return {'result':False,'message':Lg().g(189),'data':None} items2=getItemByplayer(player, item2) if not items2: return {'result':False,'message':Lg().g(189),'data':None} if items1.getWQtype()!=items2.getWQtype(): return {'qh':None,'coin':0} level=Sxzy(items1, items2) zyyh=level+items2.attribute.getStrengthen()#转移以后装备的强化等级 if player.level.getLevel()<zyyh: pushObjectNetInterface.pushOtherMessage(905, Lg().g(207)%zyyh, [player.getDynamicId()]) Zcion=getSxzyCoin(items1, items2)#转移花费金币 return {'qh':level,'coin':Zcion}
def tiaozhuan(dynamicId,characterid,csz): '''场景间的跳转或者进入副本 ''' player = PlayersManager().getPlayerByID(characterid) if not player: return {'result':False,'message':Lg().g(18)} doorinfo = dbMap.ALL_DOOR_INFO.get(csz)#获取传送门的信息 lastscene = MapManager().getMapId(player.baseInfo.getTown()) if doorinfo.get('functionType')==1:#跳转场景 placeId = doorinfo.get('nextmap') position = (doorinfo.get('init_x'),doorinfo.get('init_y')) player.baseInfo.setTown( placeId) player.baseInfo.setState(0) PlayersManager().addPlayer(player) defencelog_app.isReward(player.baseInfo.id, player.getDynamicId()) scene = MapManager().getMapId(placeId) scenename = scene.getSceneName() chatnoderemote.callRemote('JoinRoom',characterid,placeId,scenename) scene.addPlayer(characterid) player.quest.setNpcList(scene._npclist) player.baseInfo.initPosition(position) scene.pushEnterPlace([dynamicId]) result = {'result':True} else: instanceId = doorinfo.get('famID') result = instance_app.enterInstance1(player,dynamicId, characterid, instanceId,0) if result.get('result'): lastscene.dropPlayer(characterid)
def ObtainItem_2408(dynamicId, request_proto): '''放到自己背包中''' argument = ObtainItem2408_pb2.ObtainItemRequest() argument.ParseFromString(request_proto) response = ObtainItem2408_pb2.ObtainItemResponse() id = argument.id #角色id type = argument.type #0获取所有 1获取单个 pos = argument.pos # 单个在背包的位置 player = PlayersManager().getPlayerByID(id) #角色实例 if type == 0: data = player.instance.putAllItemsInPack() if not data: response.result = False response.message = Lg().g(16) pushObjectNetInterface.pushOtherMessage(905, Lg().g(16), [player.getDynamicId()]) return response.SerializeToString() else: data = player.instance.getOneItemInPackByPosition(pos) if not data: response.result = False response.message = Lg().g(16) return response.SerializeToString() response.result = True response.message = u'' return response.SerializeToString()
def StartUpGuaJi(dynamicId,characterId): '''角色开始挂机 @param characterId: int 角色的ID ''' from app.scense.core.campaign.FortressManager import FortressManager player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result':False,'message':Lg().g(18)} #判断是否有冥想加成 if player.baseInfo.getState()==1: #如果角色在副本 state = 0 else: guildId = player.guild.getID() sceneId = player.baseInfo.getTown() fortress= FortressManager().getFortressBySceneId(sceneId) if not fortress.isOccupied: state = 0 else: if fortress.kimori==guildId and guildId!=0: state=1 else: state = 0 result = player.afk.startMeditation(state=state) if not result.get('result'): msg = result.get('message') sendId = player.getDynamicId() pushOtherMessage(905, msg, [sendId]) return result
def isHaveQH(characterid, itemid): '''判断是否能够强化 @param characterid: int 角色id @param itemid: int 物品1(item)表主键id ''' item1 = None #物品实例1 player = PlayersManager().getPlayerByID(characterid) if itemid > 0: #如果物品1存在 if player.pack._package._PropsPagePack.getPositionByItemId( itemid) != -1: #背包中没有此物品 item1 = player.pack._package._PropsPagePack.getItemInfoByItemid( itemid) #获取物品实例 else: item1 = player.pack._equipmentSlot.getItemInfoByItemid(itemid) if not item1: return {'result': False, 'message': Lg().g(189), 'data': None} wqtype = item1.getWQtype( ) #武器类型 #装备类型id #0=衣服#1=裤子 #2=头盔#3=手套#4=靴子#5=护肩#6=项链#7=戒指#8=主武器#9=副武器#10=双手 if wqtype < 0 or wqtype > 10: #装备类型id pushObjectNetInterface.pushOtherMessage(905, Lg().g(196), [player.getDynamicId()]) return {'result': False, 'message': Lg().g(197), 'data': None} baseQuality = item1.baseInfo.getItemTemplateInfo().get( "baseQuality", 0) #基础品质 1灰 2白 3绿 4蓝 5紫 6橙 7红 itemlevel = item1.baseInfo.getItemTemplateInfo().get("levelRequire", 0) #装备等级 qlevel = item1.attribute.getStrengthen() #物品当前的强化等级 jinbi = coinCount(qlevel, baseQuality, wqtype, itemlevel) return qq(player, itemid, wqtype, baseQuality, jinbi, item1)
def getSxzy(characterid, item1, item2): '''获取属性转移后的效果及其花费信息 @param item1: int 物品id (转移后强化等级变成0的那个物品的id) @param item: int 物品id ''' if item1 == item2: pushObjectNetInterface.pushOtherMessageByCharacterId( Lg().g(206), [characterid]) return {'result': False, 'message': Lg().g(206), 'data': None} player = PlayersManager().getPlayerByID(characterid) #角色实例 if not player: return {'result': False, 'message': Lg().g(199), 'data': None} if player.level.getLevel() < 30: return {'result': False, 'message': Lg().g(205), 'data': None} items1 = getItemByplayer(player, item1) if not items1: return {'result': False, 'message': Lg().g(189), 'data': None} items2 = getItemByplayer(player, item2) if not items2: return {'result': False, 'message': Lg().g(189), 'data': None} if items1.getWQtype() != items2.getWQtype(): return {'qh': None, 'coin': 0} level = Sxzy(items1, items2) zyyh = level + items2.attribute.getStrengthen() #转移以后装备的强化等级 if player.level.getLevel() < zyyh: pushObjectNetInterface.pushOtherMessage(905, Lg().g(207) % zyyh, [player.getDynamicId()]) Zcion = getSxzyCoin(items1, items2) #转移花费金币 return {'qh': level, 'coin': Zcion}
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 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 getSendList(self,room): '''获取接受场景消息的角色的客户端ID''' sendlist = [] for playerId in room: player = PlayersManager().getPlayerByID(playerId) if playerId in self._canRec and player and player.baseInfo.getStatus()!=4: sendlist.append(player.getDynamicId()) return sendlist
def packageArrange(dynamicId,characterId,packageType): '''包裹整理''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result':False,'message':Lg().g(18)} player.pack.packageArrange(packageType) pushPromptedMessage(Lg().g(158),[player.getDynamicId()]) return {'result':True,'message':Lg().g(158)}
def getSendList(self): '''获取可发送的客户端列表''' sendList = [] for pId in self._playerlist: pl = PlayersManager().getPlayerByID(pId) if pl and (pId in self._canRec) and pl.baseInfo.getStatus()!=4: sendList.append(pl.getDynamicId()) return sendList
def getSendList(self): '''获取可发送的客户端列表''' sendList = [] for pId in self._playerlist: pl = PlayersManager().getPlayerByID(pId) if pl and (pId in self._canRec) and pl.baseInfo.getStatus() != 4: sendList.append(pl.getDynamicId()) return sendList
def getAllSendList(self): '''获取接受场景消息的角色的客户端ID''' sendlist = [] for playerId in self._canRec: player = PlayersManager().getPlayerByID(playerId) if player and player.baseInfo.getStatus() != 4: sendlist.append(player.getDynamicId()) return sendlist
def backScnee(pid, instanceid, boo): '''角色退出殖民战斗,返回城镇场景 @param pid: int 角色id @param instanceid: int 副本id @param boo: bool 战斗结果 ''' player = PlayersManager().getPlayerByID(pid) player.msgbox.AfterFightMsgHandle() sceneId = player.baseInfo.getTown() scene = MapManager().getMapId(sceneId) scene.addPlayer(pid) scene.pushEnterPlace([player.getDynamicId()])
def pushRoomMatrixInfo(self): '''推送房间阵法的信息''' matrixInfo = self.matrix.fromatMatrixInfo() sendList = [] for key in self.members.keys(): member = self.members[key] if not member: continue player = PlayersManager().getPlayerByID(member['id']) if player: sendList.append(player.getDynamicId()) pushRoomMatrixInfo(sendList, matrixInfo)
def backScnee(pid, instanceid, boo): """角色退出殖民战斗,返回城镇场景 @param pid: int 角色id @param instanceid: int 副本id @param boo: bool 战斗结果 """ player = PlayersManager().getPlayerByID(pid) player.msgbox.AfterFightMsgHandle() sceneId = player.baseInfo.getTown() scene = MapManager().getMapId(sceneId) scene.addPlayer(pid) scene.pushEnterPlace([player.getDynamicId()])
def startCopyScene(self,characterId,vipMatrix): '''开始副本 @param chracterId: 角色的ID ''' if characterId != self.roomowner: return {'result':False,'message':u'只有房主有权限'} if not self.areAllReady(): return {'result':False,'message':u'还有玩家没有准备好'} player = PlayersManager().getPlayerByID(characterId) if vipMatrix ==1: if player.finance.getCoin()>=5000: self.matrix.setNowEffect(vipMatrix) player.finance.updateCoin(player.finance.getCoin() -5000) elif vipMatrix ==2: if player.finance.getGold()>=10: self.matrix.setNowEffect(vipMatrix) player.finance.updateGold(player.finance.getGold() -10) elif vipMatrix ==3 : if player.finance.getGold()>=50: self.matrix.setNowEffect(vipMatrix) player.finance.updateGold(player.finance.getGold() -50) sendList = [] if len([member for member in self.members.values() if member])>1: team = TeamManager().creatTeam(characterId) team.setMatrix(self.matrix) for member in self.members.values(): if member: pp = PlayersManager().getPlayerByID(member['id']) if pp: sendList.append(pp.getDynamicId()) team.addMember(member['id']) data = enterInstance1(0, characterId, self.copySceneId) if data['result']: player = PlayersManager().getPlayerByID(characterId) dynamicId = player.getDynamicId() pushQuitHallMessage(sendList) pushEnterPlace(data['data'].get('placeId'), [dynamicId]) return data
def startCopyScene(self, characterId, vipMatrix): '''开始副本 @param chracterId: 角色的ID ''' if characterId != self.roomowner: return {'result': False, 'message': u'只有房主有权限'} if not self.areAllReady(): return {'result': False, 'message': u'还有玩家没有准备好'} player = PlayersManager().getPlayerByID(characterId) if vipMatrix == 1: if player.finance.getCoin() >= 5000: self.matrix.setNowEffect(vipMatrix) player.finance.updateCoin(player.finance.getCoin() - 5000) elif vipMatrix == 2: if player.finance.getGold() >= 10: self.matrix.setNowEffect(vipMatrix) player.finance.updateGold(player.finance.getGold() - 10) elif vipMatrix == 3: if player.finance.getGold() >= 50: self.matrix.setNowEffect(vipMatrix) player.finance.updateGold(player.finance.getGold() - 50) sendList = [] if len([member for member in self.members.values() if member]) > 1: team = TeamManager().creatTeam(characterId) team.setMatrix(self.matrix) for member in self.members.values(): if member: pp = PlayersManager().getPlayerByID(member['id']) if pp: sendList.append(pp.getDynamicId()) team.addMember(member['id']) data = enterInstance1(0, characterId, self.copySceneId) if data['result']: player = PlayersManager().getPlayerByID(characterId) dynamicId = player.getDynamicId() pushQuitHallMessage(sendList) pushEnterPlace(data['data'].get('placeId'), [dynamicId]) return data
def addInstance_record(characterid,instanceid,score=-1): '''添加角色通关记录 @param characterid:int 角色id @param instanceid: int 副本组id ''' player=PlayersManager().getPlayerByID(characterid) #当前角色实例 # sid=dbaccess.getisInstanceRecord(characterid, instanceid) sid=player.instance.isGroupClean(instanceid) if not sid: #如果通关记录里面没有,加入通关副本 if player.instance.addGroupClear(instanceid):#如果添加通关副本成功 # if dbaccess.insertInstanceRecord(characterid, instanceid):#如果添加通关副本成功 pushObjectNetInterface.pushOtherMessage(905, Lg().g(119), [player.getDynamicId()]) # UnionTypeStr = player.guild.getUnionTypeStr()+Lg().g(129) # playername = player.baseInfo.getName() # instanceinfo = allInfo.get(instanceid) # hardinfo = {1:u'普通',2:Lg().g(282),3:Lg().g(283)}.get(instanceinfo.get('hard',0)) # instansname = instanceinfo.get('name') +"-"+ hardinfo # sendstr = u"【%s】的强者【%s】通关了【%s】"%(UnionTypeStr, # playername,instansname) # chatnoderemote.callRemote('pushSystemToInfo',sendstr) else: pushObjectNetInterface.pushOtherMessage(905, u'通关副本添加失败', [player.getDynamicId()])
def CancelGuaJi(characterId): '''角色取消挂机 @param characterId: int 角色的ID ''' player = PlayersManager().getPlayerByID(characterId) if not player: return {'result':False,'message':Lg().g(18)} result = player.afk.stopMeditation() if not result.get('result'): msg = result.get('message') sendId = player.getDynamicId() pushOtherMessage(905, msg, [sendId]) return result
def StrengthenItem(characterid, itemid): '''强化装备 @param characterid: int 角色id @param itemid: int 装备id ''' item = None #装备实例 player = PlayersManager().getPlayerByID(characterid) #角色实例 if not player: return {'result': False, 'message': Lg().g(199), 'data': None} if player.pack._package._PropsPagePack.getPositionByItemId( itemid) != -1: #背包中没有此物品 item = player.pack._package._PropsPagePack.getItemInfoByItemid(itemid) else: item = player.pack._equipmentSlot.getItemInfoByItemid(itemid) if not item: return {'result': False, 'message': Lg().g(189), 'data': None} qlevel = item.attribute.getStrengthen() #装备的强化等级 plevel = player.level.getLevel() if qlevel >= plevel: pushObjectNetInterface.pushOtherMessageByCharacterId( Lg().g(198), [player.baseInfo.id]) return {'result': False, 'message': Lg().g(198), 'data': None} # sim=player.qhtime.isdraw() # if not sim: # pushObjectNetInterface.pushOtherMessageByCharacterId(u'冷却时间不足', [player.baseInfo.id]) # return {'result':False,'message':u'冷却时间不足','data':None} baseQuality = item.baseInfo.getItemTemplateInfo().get( "baseQuality", 0) #基础品质 1灰 2白 3绿 4蓝 5紫 6橙 7红 itemlevel = item.baseInfo.getItemTemplateInfo().get("levelRequire", 0) #装备等级 wqtype = item.getWQtype( ) #武器类型 #0=衣服#1=裤子 #2=头盔#3=手套#4=靴子#5=护肩#6=项链#7=戒指#8=主武器#9=副武器#10=双手 if wqtype < 0 or wqtype > 10: #装备类型id pushObjectNetInterface.pushOtherMessage(905, Lg().g(196), [player.getDynamicId()]) return {'result': False, 'message': Lg().g(197), 'data': None} jinbi = coinCount(qlevel, baseQuality, wqtype, itemlevel) #强化所需金币 if player.finance.getCoin() >= jinbi: player.finance.updateCoin(player.finance.getCoin() - jinbi) else: return {'result': False, 'message': Lg().g(200), 'data': None} result = __StrengthenOne(player, item, qlevel, characterid) if result: return result return {'result': True, 'message': Lg().g(166), 'data': None}
def helpme(characterId,argument): '''帮助''' player = PlayersManager().getPlayerByID(characterId) if not player: return s = globals() helps = [] for key,item in s.items(): if type(item)==type(helpme): info = "\\"+key + ":" + item.func_doc+"\n" helps.append(info) helpstr = "" helpstr = helpstr.join(helps) pushObjectNetInterface.pushEnterMessage(helpstr.decode('utf8'), [player.getDynamicId()])
def pushGuildLevelUp(self,level): '''推送国升级的消息''' memberList = dbGuild.getGuildMemberIdList(self.id) sendlist = [] for memberId in memberList: player = PlayersManager().getPlayerByID(memberId) if player: sendlist.append(player.getDynamicId()) pushGuildLevelUpMessage(level, sendlist) if level==20: utype = {1:Lg().g(544),2:Lg().g(545)}.get(self.guildinfo['camp'],Lg().g(546)) gname = self.getGuildName() msg = Lg().g(558)%(utype,gname) chatnoderemote.callRemote('pushSystemToInfo',msg)
def removePlayerFriend(dynamicId,characterId,friendId): '''删除好友 @param dynamicId: int 客户端的动态id @param characterId: int 角色的id @param friendId: int 好友编号 ''' player = PlayersManager().getPlayerByID(characterId) if not player: return {'result':False,'message':Lg().g(18)} result = player.friend.deleteFriend(characterId,friendId) if result: if result.get('result'): chatnoderemote.callRemote('dropfriend',characterId,friendId)#删除好友 pushObjectNetInterface.pushOtherMessage(905, Lg().g(71), [player.getDynamicId()]) return result
def helpme(characterId, argument): '''帮助''' player = PlayersManager().getPlayerByID(characterId) if not player: return s = globals() helps = [] for key, item in s.items(): if type(item) == type(helpme): info = "\\" + key + ":" + item.func_doc + "\n" helps.append(info) helpstr = "" helpstr = helpstr.join(helps) pushObjectNetInterface.pushEnterMessage(helpstr.decode('utf8'), [player.getDynamicId()])
def runningSxzy(characterid, item1, item2): '''执行属性转移''' if item1 == item2: pushObjectNetInterface.pushOtherMessageByCharacterId( Lg().g(206), [characterid]) return {'result': False, 'message': Lg().g(206), 'data': None} player = PlayersManager().getPlayerByID(characterid) #角色实例 if not player: return {'result': False, 'message': Lg().g(199), 'data': None} if player.level.getLevel() < 30: return {'result': False, 'message': Lg().g(205), 'data': None} items1 = None if player.pack._package._PropsPagePack.getPositionByItemId( item1) != -1: #背包中没有此物品 items1 = player.pack._package._PropsPagePack.getItemInfoByItemid( item1) #获取物品实例 else: items1 = player.pack._equipmentSlot.getItemInfoByItemid(item1) if not items1: return {'result': False, 'message': Lg().g(189), 'data': None} items2 = None if player.pack._package._PropsPagePack.getPositionByItemId( item2) != -1: #背包中没有此物品 items2 = player.pack._package._PropsPagePack.getItemInfoByItemid( item2) #获取物品实例 else: items2 = player.pack._equipmentSlot.getItemInfoByItemid(item2) if not items2: return {'result': False, 'message': Lg().g(189), 'data': None} Zcion = getSxzyCoin(items1, items2) #转移花费金币 if player.finance.getCoin() < Zcion: return {'result': False, 'message': Lg().g(88), 'data': None} level = Sxzy(items1, items2) #转移获得等级 zyyh = level + items2.attribute.getStrengthen() #转移以后装备的强化等级 if player.level.getLevel() < zyyh: pushObjectNetInterface.pushOtherMessage(905, Lg().g(207) % zyyh, [player.getDynamicId()]) return {'result': False, 'message': Lg().g(207) % zyyh, 'data': None} items1.attribute.updateStrengthen(0) if level != 0: items2.attribute.updateStrengthen(items2.attribute.getStrengthen() + level) player.finance.updateCoin(player.finance.getCoin() - Zcion) player.quest.specialTaskHandle(112) #特殊任务处理 player.schedule.noticeSchedule(5, goal=1) return {'result': True, 'message': Lg().g(166), 'data': None}
def addPlayer(self, playerId): '''添加一个角色到当前场景 @param playerId: int 角色的id ''' if playerId in self._playerlist: self.dropPlayer(playerId) self._playerlist.append(playerId) player = PlayersManager().getPlayerByID(playerId) #根据角色id获取角色实例 if player: player.quest.setNpcList(self.getNPC()) dyid = player.getDynamicId() sendList = [dyid] initx = self._init_X + random.randint(-GAPX, GAPX) inity = self._init_Y + random.randint(-GAPY, GAPY) player.baseInfo.initPosition((initx, inity)) self.pushEnterPlace(sendList)
def addPlayer(self,playerId): '''添加一个角色到当前场景 @param playerId: int 角色的id ''' if playerId in self._playerlist: self.dropPlayer(playerId) self._playerlist.append(playerId) player=PlayersManager().getPlayerByID(playerId) #根据角色id获取角色实例 if player: player.quest.setNpcList(self.getNPC()) dyid=player.getDynamicId() sendList = [dyid] initx = self._init_X+random.randint(-GAPX,GAPX) inity = self._init_Y+random.randint(-GAPY,GAPY) player.baseInfo.initPosition((initx,inity)) self.pushEnterPlace(sendList)
def pushServerSendChatInfo(id,message,tid): '''推送的私聊信息 @param id: int 私聊对象角色id @param tid: int 私聊角色id @param message: str 聊天内容 ''' from app.scense.protoFile.chat import ServerSendChatInfo1012_pb2 response=ServerSendChatInfo1012_pb2.ServerSendChatInfoResponse() response.id=tid response.chatMessage=message msg=response.SerializeToString() playerto=PlayersManager().getPlayerByID(id) #推送给这个人的角色 if not playerto: return dyid=playerto.getDynamicId() pushApplyMessage(1012,msg,[dyid])
def InviteJoinGroupRefuse(dynamicId,characterId,inviteId): '''拒绝邀请 @param dynamicId: int 客户端的动态Id @param characterId: int 角色的ID @param inviteId: int 邀请者的ID ''' player = PlayersManager().getPlayerByID(characterId) if not player: return {'result':False,'message':Lg().g(18)} toplayer = PlayersManager().getPlayerByID(inviteId) if not toplayer: return {'result':False,'message':Lg().g(106)} msg = u'玩家%s拒绝了你的邀请'%player.baseInfo.getNickName() sendList = [] sendList.append(toplayer.getDynamicId()) pushOtherMessage(905, msg, sendList) return {'result':True,'message':u''}
def InviteJoinGroupRefuse(dynamicId, characterId, inviteId): '''拒绝邀请 @param dynamicId: int 客户端的动态Id @param characterId: int 角色的ID @param inviteId: int 邀请者的ID ''' player = PlayersManager().getPlayerByID(characterId) if not player: return {'result': False, 'message': Lg().g(18)} toplayer = PlayersManager().getPlayerByID(inviteId) if not toplayer: return {'result': False, 'message': Lg().g(106)} msg = u'玩家%s拒绝了你的邀请' % player.baseInfo.getNickName() sendList = [] sendList.append(toplayer.getDynamicId()) pushOtherMessage(905, msg, sendList) return {'result': True, 'message': u''}
def removePlayerFriend(dynamicId, characterId, friendId): '''删除好友 @param dynamicId: int 客户端的动态id @param characterId: int 角色的id @param friendId: int 好友编号 ''' player = PlayersManager().getPlayerByID(characterId) if not player: return {'result': False, 'message': Lg().g(18)} result = player.friend.deleteFriend(characterId, friendId) if result: if result.get('result'): chatnoderemote.callRemote('dropfriend', characterId, friendId) #删除好友 pushObjectNetInterface.pushOtherMessage(905, Lg().g(71), [player.getDynamicId()]) return result
def pushGuildLevelUp(self, level): '''推送国升级的消息''' memberList = dbGuild.getGuildMemberIdList(self.id) sendlist = [] for memberId in memberList: player = PlayersManager().getPlayerByID(memberId) if player: sendlist.append(player.getDynamicId()) pushGuildLevelUpMessage(level, sendlist) if level == 20: utype = { 1: Lg().g(544), 2: Lg().g(545) }.get(self.guildinfo['camp'], Lg().g(546)) gname = self.getGuildName() msg = Lg().g(558) % (utype, gname) chatnoderemote.callRemote('pushSystemToInfo', msg)
def addLog(self,id,tid,context,time): '''添加聊天记录 @param id: int 当前角色id @param tid: int 接受聊天信息对象id @param contxt: int 聊天内容 ''' from app.scense.core.PlayersManager import PlayersManager py=PlayersManager().getPlayerByID(id) #聊天接收者 from app.scense.utils.dbopera import dbFriend from app.scense.netInterface import pushObjectNetInterface ftypeid=dbFriend.getis(tid, id)#1好友 2黑名单 0没有关系 if ftypeid==2: pushObjectNetInterface.pushOtherMessage(905, Lg().g(643), [py.getDynamicId()]) return clog=self.addChatLog(id) #获取或添加私聊类 clog.addFriends(tid) #当前角色添加私聊好友 clog.addChat(tid,context,time) #添加聊天记录 clog1=self.addChatLog(tid) #获取或添加私聊类(聊天接受者聊天类) clog1.addReaderList(id) #设置聊天接受者有未读信息 clog1.addFriends(id) #聊天接受者角色添加私聊好友 pye1=PlayersManager().getPlayerByID(tid) #聊天接收者 sid=clog.getReading()#获取正在聊天角色id if sid==tid : #当前角色正在跟聊天接受者私聊中(并且私聊面板开启中) ct=self.getLogonly(id, tid) pushObjectNetInterface.pushChatToObjectList(id, tid) #推送给聊天发送者,聊天成员列表 if pye1:#如果聊天接收者在线 pushObjectNetInterface.pushChatToObjectList(tid, id) #推送给聊天发接收者,聊天成员列表 pushObjectNetInterface.pushServerSendChatInfo(id, ct,tid) #推送聊天信息 if clog1.getReading()==id: #如果对方也正在跟我聊天 pushObjectNetInterface.pushServerSendChatInfo(tid, ct,id) #推送聊天信息 clog1.delReaderList(id) # else: # pushObjectNetInterface.pushChatToObjectList(tid, id) #推送给聊天接受者,聊天成员列表 else: # 当前角色正在跟其他角色饲料中(或者私聊面板关闭) pushObjectNetInterface.pushChatToObjectList(id, tid) #推送给聊天发送者,聊天成员列表 if not pye1: #如果对方已经下线 return pushObjectNetInterface.pushChatToObjectList(tid, id) #推送给聊天接受者,聊天成员列表 # pushObjectNetInterface.pushServerSendChatInfo(id, context) clog.setReading(tid) #设置当前角色正在和tid聊天
def ModifyRoomInfo(self,characterId,groupName,groupPassword,copySceneId,copyLevel): '''修改房间信息''' if characterId != self.roomowner: return {'result':False,'message':u'只有房主有权限'} self.roomName = groupName self.password = groupPassword self.copySceneId = copySceneId self.copyLevel = copyLevel roomInfo = self.getRoomInfo() sendList = [] for key in self.members.keys(): member = self.members[key] if not member: continue player = PlayersManager().getPlayerByID(member['id']) if player: sendList.append(player.getDynamicId()) pushRoomInfo(sendList, roomInfo) return {'result':True}
def StrengthenItem(characterid,itemid): '''强化装备 @param characterid: int 角色id @param itemid: int 装备id ''' item=None #装备实例 player=PlayersManager().getPlayerByID(characterid) #角色实例 if not player: return {'result':False,'message':Lg().g(199),'data':None} if player.pack._package._PropsPagePack.getPositionByItemId(itemid)!=-1:#背包中没有此物品 item=player.pack._package._PropsPagePack.getItemInfoByItemid(itemid) else: item=player.pack._equipmentSlot.getItemInfoByItemid(itemid) if not item: return {'result':False,'message':Lg().g(189),'data':None} qlevel=item.attribute.getStrengthen() #装备的强化等级 plevel=player.level.getLevel() if qlevel>=plevel: pushObjectNetInterface.pushOtherMessageByCharacterId(Lg().g(198), [player.baseInfo.id]) return {'result':False,'message':Lg().g(198),'data':None} # sim=player.qhtime.isdraw() # if not sim: # pushObjectNetInterface.pushOtherMessageByCharacterId(u'冷却时间不足', [player.baseInfo.id]) # return {'result':False,'message':u'冷却时间不足','data':None} baseQuality=item.baseInfo.getItemTemplateInfo().get("baseQuality",0)#基础品质 1灰 2白 3绿 4蓝 5紫 6橙 7红 itemlevel=item.baseInfo.getItemTemplateInfo().get("levelRequire",0) #装备等级 wqtype=item.getWQtype()#武器类型 #0=衣服#1=裤子 #2=头盔#3=手套#4=靴子#5=护肩#6=项链#7=戒指#8=主武器#9=副武器#10=双手 if wqtype<0 or wqtype>10: #装备类型id pushObjectNetInterface.pushOtherMessage(905, Lg().g(196), [player.getDynamicId()]) return {'result':False,'message':Lg().g(197),'data':None} jinbi= coinCount(qlevel,baseQuality,wqtype,itemlevel)#强化所需金币 if player.finance.getCoin()>=jinbi: player.finance.updateCoin(player.finance.getCoin()-jinbi) else: return {'result':False,'message':Lg().g(200),'data':None} result=__StrengthenOne(player,item,qlevel,characterid) if result: return result return {'result':True,'message':Lg().g(166),'data':None}
def ModifyRoomInfo(self, characterId, groupName, groupPassword, copySceneId, copyLevel): '''修改房间信息''' if characterId != self.roomowner: return {'result': False, 'message': u'只有房主有权限'} self.roomName = groupName self.password = groupPassword self.copySceneId = copySceneId self.copyLevel = copyLevel roomInfo = self.getRoomInfo() sendList = [] for key in self.members.keys(): member = self.members[key] if not member: continue player = PlayersManager().getPlayerByID(member['id']) if player: sendList.append(player.getDynamicId()) pushRoomInfo(sendList, roomInfo) return {'result': True}
def InviteJoinGroup(dynamicId, characterId, roleId): '''邀请加入房间 @param dynamicId: int 客户端的动态Id @param characterId: int 邀请者的ID @param roleId: int 被邀请者的ID ''' player = PlayersManager().getPlayerByID(characterId) if not player: return {'result': False, 'message': Lg().g(18)} toplayer = PlayersManager().getPlayerByID(roleId) if not toplayer: return {'result': False, 'message': Lg().g(106)} if toplayer.baseInfo.getQueueRoom(): return {'result': False, 'message': Lg().g(107)} sendList = [] sendList.append(toplayer.getDynamicId()) argument = {} argument['inviteID'] = characterId argument['areaID'] = 1 argument['roomId'] = player.baseInfo.getQueueRoom() argument['message'] = Lg().g(108) % player.baseInfo.getNickName() pushInviteJoinGroupMsg(sendList, argument) return {'result': True, 'message': Lg().g(109)}
def pushRoomRoleInfo(self): '''推送房间中角色的信息''' sendList = [] playerListInfo = [] for key in self.members.keys(): member = self.members[key] if not member: playerListInfo.append(None) continue player = PlayersManager().getPlayerByID(member['id']) if not player: self.dropmember(member['id']) continue sendList.append(player.getDynamicId()) info = {} info['roleId'] = member['id'] info['roleLevel'] = player.level.getLevel() info['roleName'] = player.baseInfo.getNickName() info['roleWork'] = player.profession.getFigure() info['isRoomOwner'] = member['id'] == self.roomowner info['isReady'] = bool(member['status']) info['roleSkillInfo'] = [] playerListInfo.append(info) reactor.callLater(0, pushRoomRoleInfo, sendList, playerListInfo)
def guyongpet(pid, petid, typeid): '''雇用宠物 @param pid: int 角色id @param petid: int 宠物模板id @param typeid: int #1表示金币兑换的宠物 2表示幸运值兑换 ''' from app.scense.utils.dbopera import dbCharacterPet player = PlayersManager().getPlayerByID(pid) if not player: return {'result': False, 'message': Lg().g(18)} alls = dbCharacterPet.PET_TEMPLATE if alls.has_key(petid): pet = alls.get(petid) coin = pet['coin'] xy = pet['xy'] if typeid == 1: #扣除金币 pcoin = player.finance.getCoin() if pcoin >= coin: petlevel = 1 #宠物等级 for i in player.petShop.shop1: # i[宠物模板id,宠物等级] if i[0]['id'] == petid: petlevel = i[1] flg = player.pet.addPet(petid, level=petlevel) #添加宠物并返回 if flg == -1: pushObjectNetInterface.pushOtherMessage( 905, Lg().g(167), [player.getDynamicId()]) return {'result': True, 'message': Lg().g(167)} elif flg == -2: pushObjectNetInterface.pushOtherMessage( 905, Lg().g(168), [player.getDynamicId()]) return {'result': True, 'message': Lg().g(168)} player.finance.updateCoin(pcoin - coin) player.quest.specialTaskHandle(115) #特殊任务处理 player.schedule.noticeSchedule(16, goal=1) return {'result': True, 'message': Lg().g(166)} else: return {'result': False, 'message': Lg().g(88)} else: #扣除幸运值 pxy = player.petShop.xy if pxy < xy: pushObjectNetInterface.pushOtherMessage( 905, Lg().g(169), [player.getDynamicId()]) return {'result': True, 'message': Lg().g(169)} if pxy >= xy: flg = player.pet.addPet(petid) if flg == -1: pushObjectNetInterface.pushOtherMessage( 905, Lg().g(167), [player.getDynamicId()]) return {'result': False, 'message': Lg().g(167)} elif flg == -2: pushObjectNetInterface.pushOtherMessage( 905, Lg().g(168), [player.getDynamicId()]) return {'result': True, 'message': Lg().g(168)} player.petShop.xy = pxy - xy player.quest.specialTaskHandle(115) #特殊任务处理 player.schedule.noticeSchedule(16, goal=1) return {'result': True, 'message': Lg().g(166)} else: return {'result': False, 'message': Lg().g(169)} else: return {'result': False, 'message': Lg().g(170)}
def getBattlePlayer(instanceid, cid): '''副本殖民战斗,返回对手实例''' from app.scense.core.instance.Instance import Instance from app.scense.core.map.MapManager import MapManager player = PlayersManager().getPlayerByID(cid) #获取角色实例 if player.baseInfo._state != 0: #如果在普通场景 return False, Lg().g(144), False # cityid=InstanceGroupManage().getcityidBygroupid(instanceid) # if player.baseInfo._town!=cityid: # pushObjectNetInterface.pushOtherMessage(905, u'只能殖民本场景的副本', [player.getDynamicId()]) # return False,u'只能殖民本场景的副本',False if player.level._level <= 12: return False, Lg().g(145), False guildLevel = player.guild.getGuildLevel() #当前角色行会等级 if guildLevel < 1: #没有国 return False, Lg().g(146), False zmcount = int(math.ceil((guildLevel / 5.0))) #可殖民副本数量 yydata = 0 #该角色已殖民数量 for info in ColonizeManage().getI().values(): if info['pid'] == cid: yydata += 1 if zmcount <= yydata: pushObjectNetInterface.pushOtherMessage(905, Lg().g(147), [player.getDynamicId()]) return False, Lg().g(147), False player.schedule.noticeSchedule(17, goal=1) tlist = [] sceneId = player.baseInfo.getTown() scene = MapManager().getMapId(sceneId) scene.dropPlayer(cid) allInfo = instance_app.allInfo info = allInfo.get(instanceid) downlevel = info.get('downlevle', 0) #殖民等级 if downlevel > player.level.getLevel(): #如果角色等级<副本等级要求 return False, Lg().g(148), False instancegroupid = InstanceGroupManage().getFristInstanceBy( instanceid) #根据副本id获取副本组id pid = ColonizeManage().getpidByinstanceid( instancegroupid) #通过副本组id获得副本殖民者id mosterid = 15001 if pid < 1: #如果此副本没有被殖民 try: mosterid = instanceColonizeChallenge.getColonizeChallengeByMosterid( instancegroupid) #获取怪物id if mosterid < 0: log.err(u'殖民战斗当中副本组中没有配置对应的殖民挑战怪物,殖民副本组id为%d' % instancegroupid) except Exception as e: log.err(u'殖民战斗当中副本组中没有配置对应的殖民挑战怪物,殖民副本组id为%d' % instancegroupid) log.err(e.message) tlist.append(Monster(templateId=mosterid)) else: #如果此副本被殖民了 py = PlayersManager().getPlayerByID(pid) if not py: py = PlayerCharacter(pid) tlist.append(py) instance = Instance(instanceid) #副本 scene = instance.getScene(instance._inSceneid) #第一个场景实例 del instance zon = random.randint(500, scene._width - 500) return tlist, zon, scene.formatSceneInfo() #场景资源id