コード例 #1
0
ファイル: pet.py プロジェクト: joyfish/crossapp-demo
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)}
コード例 #2
0
ファイル: firend.py プロジェクト: JaydenGui/crossapp-demo
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)}
コード例 #3
0
ファイル: firend.py プロジェクト: 9miao/firefly_fengyan_OL
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)}
コード例 #4
0
ファイル: PrayManage.py プロジェクト: joyfish/crossapp-demo
    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
コード例 #5
0
ファイル: playerInfo.py プロジェクト: joyfish/crossapp-demo
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""}
コード例 #6
0
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''}
コード例 #7
0
ファイル: scene.py プロジェクト: 9miao/firefly_fengyan_OL
 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)
コード例 #8
0
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)
コード例 #9
0
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()
コード例 #10
0
 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)}
コード例 #11
0
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
コード例 #12
0
ファイル: guild.py プロジェクト: 9miao/firefly_fengyan_OL
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
コード例 #13
0
ファイル: guild.py プロジェクト: 9miao/firefly_fengyan_OL
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}
コード例 #14
0
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
コード例 #15
0
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}
コード例 #16
0
ファイル: tiaozhuan.py プロジェクト: 9miao/firefly_fengyan_OL
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)
コード例 #17
0
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()
コード例 #18
0
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
コード例 #19
0
ファイル: strengthen.py プロジェクト: JaydenGui/crossapp-demo
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)
コード例 #20
0
ファイル: strengthen.py プロジェクト: JaydenGui/crossapp-demo
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}
コード例 #21
0
ファイル: guild.py プロジェクト: JaydenGui/crossapp-demo
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}
コード例 #22
0
ファイル: guild.py プロジェクト: JaydenGui/crossapp-demo
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
コード例 #23
0
ファイル: scene.py プロジェクト: 9miao/firefly_fengyan_OL
 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
コード例 #24
0
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)}
コード例 #25
0
ファイル: baseScene.py プロジェクト: 9miao/firefly_fengyan_OL
 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
コード例 #26
0
ファイル: baseScene.py プロジェクト: JaydenGui/crossapp-demo
 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
コード例 #27
0
 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
コード例 #28
0
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()])
コード例 #29
0
ファイル: queueRoom.py プロジェクト: 9miao/firefly_fengyan_OL
 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)
コード例 #30
0
ファイル: queueRoom.py プロジェクト: JaydenGui/crossapp-demo
 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)
コード例 #31
0
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()])
コード例 #32
0
ファイル: queueRoom.py プロジェクト: 9miao/firefly_fengyan_OL
 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
コード例 #33
0
ファイル: queueRoom.py プロジェクト: JaydenGui/crossapp-demo
    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
コード例 #34
0
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()])
コード例 #35
0
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
コード例 #36
0
ファイル: strengthen.py プロジェクト: JaydenGui/crossapp-demo
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}
コード例 #37
0
ファイル: gmCommand.py プロジェクト: 9miao/firefly_fengyan_OL
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()])
コード例 #38
0
ファイル: Guild.py プロジェクト: 9miao/firefly_fengyan_OL
 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)
コード例 #39
0
ファイル: firend.py プロジェクト: 9miao/firefly_fengyan_OL
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
コード例 #40
0
ファイル: gmCommand.py プロジェクト: JaydenGui/crossapp-demo
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()])
コード例 #41
0
ファイル: strengthen.py プロジェクト: JaydenGui/crossapp-demo
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}
コード例 #42
0
ファイル: baseScene.py プロジェクト: JaydenGui/crossapp-demo
 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)
コード例 #43
0
ファイル: baseScene.py プロジェクト: 9miao/firefly_fengyan_OL
 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)
コード例 #44
0
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])
コード例 #45
0
ファイル: hall.py プロジェクト: 9miao/firefly_fengyan_OL
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''}
コード例 #46
0
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''}
コード例 #47
0
ファイル: firend.py プロジェクト: JaydenGui/crossapp-demo
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
コード例 #48
0
 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)
コード例 #49
0
    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聊天
コード例 #50
0
ファイル: queueRoom.py プロジェクト: 9miao/firefly_fengyan_OL
 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}
コード例 #51
0
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}
コード例 #52
0
ファイル: queueRoom.py プロジェクト: JaydenGui/crossapp-demo
 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}
コード例 #53
0
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)}
コード例 #54
0
ファイル: queueRoom.py プロジェクト: JaydenGui/crossapp-demo
 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)
コード例 #55
0
ファイル: pet.py プロジェクト: JaydenGui/crossapp-demo
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)}
コード例 #56
0
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