Beispiel #1
0
    def gongchengCount(self):

        from game.mgr.room import get_rpc_gongcheng
        rpc_gongcheng = get_rpc_gongcheng()
        if rpc_gongcheng:
            rpc_gongcheng.gongchengGuildCountScore()
            rpc_gongcheng.gongchengGuildReward()
    def rc_gongchengTeamCreateSend(self,team,city,atk):
        # 宠物互斥
        petList = copy.deepcopy(team)
        rs = self.player.pet.checkSpecMutex(petList)
        if not rs:
            return 0, errcode.EC_PET_MUTEX_LIMIT


        from game.mgr.room import get_rpc_gongcheng
        rpc_gongcheng = get_rpc_gongcheng()
        if not rpc_gongcheng:
            return 0, errcode.EC_GETD_RPC_ROOM_FAIL
        
        rrv = rpc_gongcheng.gongchengTeamCreate(self.player.id,team)
        if not rrv:
            return 0, errcode.EC_GONGCHENG_ERR
        if rrv["err"]!=0:
            return 0, rrv["err"]


        rrv1 = rpc_gongcheng.gongchengSend(self.player.id,rrv["teamid"],city,atk)
        if not rrv1:
            return 0, errcode.EC_GONGCHENG_ERR
        if rrv1["err"]!=0:
            
            rpc_gongcheng.gongchengTeamDestroy(list(self.player.id,rrv["team"].keys()),False)
            
            return 0, rrv1["err"]

        self.player.safe_pub(msg_define.MSG_GUILD_WAR_SEND)
        return 1,{"team":rrv["team"]}
    def rc_gongchengTeamDestroy(self,team,reborn):

        from game.mgr.room import get_rpc_gongcheng
        rpc_gongcheng = get_rpc_gongcheng()
        if not rpc_gongcheng:
            return 0, errcode.EC_GETD_RPC_ROOM_FAIL

        respBag = {}
        if reborn:
            res = Game.res_mgr.res_common.get("gongchengReborn")
            respBag = self.player.bag.costItem(res.arrayint2, constant.ITEM_COST_GONGCHENG_REBORN, wLog=True)
            if not respBag.get("rs", 0):
                return 0, errcode.EC_KFBOSS_REVIVE_NOT_ENOUGH

        rrv = rpc_gongcheng.gongchengTeamDestroy(self.player.id,team,reborn)
        if not rrv:
            return 0, errcode.EC_GONGCHENG_ERR
        if rrv["err"]!=0:
            return 0, rrv["err"]

        dUpdate = self.player.packRespBag(respBag)
        resp = {
            "team":team,
            "allUpdate": dUpdate,
        }
        return 1, resp
    def rc_gongchengGiveup(self,cityid):


        from game.mgr.room import get_rpc_gongcheng
        rpc_gongcheng = get_rpc_gongcheng()
        if not rpc_gongcheng:
            return 0, errcode.EC_GETD_RPC_ROOM_FAIL
        
        rrv = rpc_gongcheng.gongchengGiveup(self.player.id,cityid)
        if not rrv:
            return 0, errcode.EC_GONGCHENG_ERR
        if rrv["err"]!=0:
            return 0, rrv["err"]

        guildId = self.player.guild.GetGuildId()
        if not guildId:
            return 0, errcode.EC_NO_GUILD
        rpc_guild = get_rpc_guild(guildId)
        if not rpc_guild:
            return 0, errcode.EC_NOT_FOUND_GUILD

        rpc_guild.GiveupCity()

        dUpdate = {}
        dUpdate["guildInfo"] = self.player.guild.to_init_data()
        resp = {
            "allUpdate": dUpdate,
        }
        return 1,resp
Beispiel #5
0
    def rc_sendWorldMSG(self, content, type=0):

        if self.player.isShutup():
            return

        if type == 0:
            for addr, logic in Game.rpc_logic_game:
                if logic:
                    logic.sendWorldMSG(self.player.id, content)
        elif type == 2:
            from game.mgr.room import get_rpc_diaoyu
            rpc_diaoyu = get_rpc_diaoyu()
            if not rpc_diaoyu:
                return 0, errcode.EC_GETD_RPC_ROOM_FAIL

            rrv = rpc_diaoyu.msg(2, self.player.id, content)
            if not rrv:
                return 0, errcode.EC_CALL_RPC_ROOM_FAIL
        elif type == 3:
            from game.mgr.room import get_rpc_wakuang
            rpc_wakuang = get_rpc_wakuang()
            if not rpc_wakuang:
                return 0, errcode.EC_GETD_RPC_ROOM_FAIL

            data = self.player.zudui.getTeamInfo(0)
            rrv = rpc_wakuang.msg(3, data["id"], content)
            if not rrv:
                return 0, errcode.EC_CALL_RPC_ROOM_FAIL
        elif type == 4:
            from game.mgr.room import get_rpc_boss
            rpc_boss = get_rpc_boss()
            if not rpc_boss:
                return 0, errcode.EC_GETD_RPC_ROOM_FAIL

            rrv = rpc_boss.msg(4, self.player.id, content)
            if not rrv:
                return 0, errcode.EC_CALL_RPC_ROOM_FAIL

        elif type == 5:
            from game.mgr.room import get_rpc_gongcheng
            rpc_gongcheng = get_rpc_gongcheng()
            if not rpc_gongcheng:
                return 0, errcode.EC_GETD_RPC_ROOM_FAIL
            rrv = rpc_gongcheng.msg(5, self.player.id, content)
            if not rrv:
                return 0, errcode.EC_CALL_RPC_ROOM_FAIL
        elif type == 6:
            from game.mgr.room import get_rpc_jiujiyishou
            rpc_jiujiyishou = get_rpc_jiujiyishou()
            if not rpc_jiujiyishou:
                return 0, errcode.EC_GETD_RPC_ROOM_FAIL
            rrv = rpc_jiujiyishou.msg(6, self.player.id, content)
            if not rrv:
                return 0, errcode.EC_CALL_RPC_ROOM_FAIL

        # 抛事件
        self.player.safe_pub(msg_define.MSG_SEND_WORLD_MSG)

        return 1, {}
    def rc_gongchengGetData(self):


        from game.mgr.room import get_rpc_gongcheng
        rpc_gongcheng = get_rpc_gongcheng()
        if not rpc_gongcheng:
            return 0, errcode.EC_GETD_RPC_ROOM_FAIL

        self.player.gongcheng.enter()

        data = self.player.getGongchengInfo()
        import app
        rrv = rpc_gongcheng.hello(5,self.player.id,config.serverNo,app.addr,self.player.name,data,0,0)
        if not rrv:
            return 0, errcode.EC_CALL_RPC_ROOM_FAIL

        rrv = rpc_gongcheng.getByServerNo(5,config.serverNo)
        if not rrv:
            return 0, errcode.EC_CALL_RPC_ROOM_FAIL

        ghid=self.player.guild.GetGuildId()
        ghname = ""
        ghcolor = 0
        ghlv = 0
        guildRpc = get_rpc_guild(ghid)
        if guildRpc:
            ghname = guildRpc.getName()
            ghcolor = guildRpc.getColor()
            ghlv = guildRpc.GetLevel()
        if ghid==0:
            return 0, errcode.EC_NO_GUILD

        fdata=self.player.GetFightData()
        pdata=self.player.GetAllPetData()
        rrv3=rpc_gongcheng.gongchengFightData(self.player.id,fdata,pdata,ghid,ghname,ghcolor,ghlv,self.player.gongcheng.serverNo)
        if not rrv3:
            return 0, errcode.EC_CALL_RPC_ROOM_FAIL
        if rrv3["err"]!=0:
            return 0, rrv3["err"]

        rrv2=rpc_gongcheng.gongchengGetAllTeam(self.player.id)
        
        if not rrv2:
            return 0, errcode.EC_CALL_RPC_ROOM_FAIL
        if rrv2["err"]!=0:
            return 0, rrv2["err"]

        # a=bytearray(os.urandom(100*1024))
        # rrv["common"]["xxyy"]=a

        # retval={"list":rrv["v"],"common":rrv["common"],"team":rrv2["team"],"myteam":rrv2["myteam"]}
        retval={"list":[],"common":rrv["common"],"team":rrv2["team"],"myteam":rrv2["myteam"]}

        # 同步攻城任务数据
        self.player.gongcheng.rsyncRpcGongchengTaskData()

        return 1,retval
Beispiel #7
0
    def exit(self):

        if self.time == 0:

            self.time = time.time()
            self.markDirty()

            from game.mgr.room import get_rpc_gongcheng
            rpc_gongcheng = get_rpc_gongcheng()
            if rpc_gongcheng:
                rpc_gongcheng.bye(5, self.owner.id)
    def rc_gongchengSend(self,team,city,atk):


        from game.mgr.room import get_rpc_gongcheng
        rpc_gongcheng = get_rpc_gongcheng()
        if not rpc_gongcheng:
            return 0, errcode.EC_GETD_RPC_ROOM_FAIL
        
        rrv = rpc_gongcheng.gongchengSend(self.player.id,team,city,atk)
        if not rrv:
            return 0, errcode.EC_GONGCHENG_ERR
        if rrv["err"]!=0:
            return 0, rrv["err"]
        self.player.safe_pub(msg_define.MSG_GUILD_WAR_SEND)
        return 1,{}
    def rc_gongchengLogData(self,fightlog):


        from game.mgr.room import get_rpc_gongcheng
        rpc_gongcheng = get_rpc_gongcheng()
        if not rpc_gongcheng:
            return 0, errcode.EC_GETD_RPC_ROOM_FAIL
        
        rrv = rpc_gongcheng.gongchengLogData(self.player.id,fightlog)
        if not rrv:
            return 0, errcode.EC_GONGCHENG_ERR
        if rrv["err"]!=0:
            return 0, rrv["err"]



        return 1,{"fightLog":rrv["fightlog"]}
Beispiel #10
0
    def rc_gongchengRankGuild(self,pre):


        from game.mgr.room import get_rpc_gongcheng
        rpc_gongcheng = get_rpc_gongcheng()
        if not rpc_gongcheng:
            return 0, errcode.EC_GETD_RPC_ROOM_FAIL
        
        rrv = rpc_gongcheng.gongchengRankGuild(self.player.id,pre)
        if not rrv:
            return 0, errcode.EC_GONGCHENG_ERR
        if rrv["err"]!=0:
            return 0, rrv["err"]



        return 1,{"data":rrv["data"]}
Beispiel #11
0
    def rc_gongchengCleanTag(self,city):


        from game.mgr.room import get_rpc_gongcheng
        rpc_gongcheng = get_rpc_gongcheng()
        if not rpc_gongcheng:
            return 0, errcode.EC_GETD_RPC_ROOM_FAIL
        
        rrv = rpc_gongcheng.gongchengCleanTag(self.player.id,city)
        if not rrv:
            return 0, errcode.EC_GONGCHENG_ERR
        if rrv["err"]!=0:
            return 0, rrv["err"]



        return 1,{}
Beispiel #12
0
    def rc_gongchengWar(self,city):


        from game.mgr.room import get_rpc_gongcheng
        rpc_gongcheng = get_rpc_gongcheng()
        if not rpc_gongcheng:
            return 0, errcode.EC_GETD_RPC_ROOM_FAIL
        
        rrv = rpc_gongcheng.gongchengWar(self.player.id,city)
        if not rrv:
            return 0, errcode.EC_GONGCHENG_ERR
        if rrv["err"]!=0:
            return 0, rrv["err"]

        guildId = self.player.guild.GetGuildId()
        if not guildId:
            return 0, errcode.EC_NO_GUILD
        rpc_guild = get_rpc_guild(guildId)
        if not rpc_guild:
            return 0, errcode.EC_NOT_FOUND_GUILD

        from game.mgr.player import get_rpc_player
        nowtime=time.time()
        members = rpc_guild.getMembers()
        for one in members:
            rid = one.get("rid", 0)
            if not rid:
                continue
            
            # isRobot = one.get("isRobot", 1)
            # if isRobot:
            #     continue

            rpc_player = get_rpc_player(rid)
            if not rpc_player:
                continue
            rpc_player.gongchengNotiyGuild(city,True,nowtime)

        rpc_guild.WarCity()

        dUpdate = {}
        dUpdate["guildInfo"] = self.player.guild.to_init_data()
        resp = {
            "allUpdate": dUpdate,
        }
        return 1,resp
Beispiel #13
0
    def rc_gongchengHistory(self):


        from game.mgr.room import get_rpc_gongcheng
        rpc_gongcheng = get_rpc_gongcheng()
        if not rpc_gongcheng:
            return 0, errcode.EC_GETD_RPC_ROOM_FAIL
        
        guildId = self.player.guild.GetGuildId()
        rrv = rpc_gongcheng.gongchengHistory(self.player.id,guildId)
        if not rrv:
            return 0, errcode.EC_GONGCHENG_ERR
        if rrv["err"]!=0:
            return 0, rrv["err"]



        return 1,{"data":rrv["data"]}
Beispiel #14
0
    def rc_gongchengTeamCreate(self,team):
        # 宠物互斥
        petList = copy.deepcopy(team)
        rs = self.player.pet.checkSpecMutex(petList)
        if not rs:
            return 0, errcode.EC_PET_MUTEX_LIMIT

        from game.mgr.room import get_rpc_gongcheng
        rpc_gongcheng = get_rpc_gongcheng()
        if not rpc_gongcheng:
            return 0, errcode.EC_GETD_RPC_ROOM_FAIL
        
        rrv = rpc_gongcheng.gongchengTeamCreate(self.player.id,team)
        if not rrv:
            return 0, errcode.EC_GONGCHENG_ERR
        if rrv["err"]!=0:
            return 0, rrv["err"]
        


        return 1,{"team":rrv["team"]}
Beispiel #15
0
 def rsyncRpcGongchengTaskData(self):
     from game.mgr.room import get_rpc_gongcheng
     rpc_gongcheng = get_rpc_gongcheng()
Beispiel #16
0
    def gongchengNew(self):

        from game.mgr.room import get_rpc_gongcheng
        rpc_gongcheng = get_rpc_gongcheng()
        if rpc_gongcheng:
            rpc_gongcheng.gongchengNew()
Beispiel #17
0
    def rc_gongchengQuanmingRank(self):

        #同步攻城任务数据
        self.rc_gongchengGetData()

        gongchengActiveSerNum = Game.res_mgr.res_common.get("gongchengActiveSerNum")
        if not gongchengActiveSerNum:
            return 0, errcode.EC_NORES

        if config.serverNo not in Game.res_mgr.res_List_kuafuServerNo:
            return 0, 15
        
        idx=Game.res_mgr.res_List_kuafuServerNo.index(config.serverNo)
        startidx=(idx+1)-gongchengActiveSerNum.i
        if startidx<0:
            startidx=0

        slist=Game.res_mgr.res_List_kuafuServerNo[startidx:startidx+gongchengActiveSerNum.i]

        from game.mgr.room import get_rpc_gongcheng
        rpc_gongcheng = get_rpc_gongcheng()
        if not rpc_gongcheng:
            return 0, errcode.EC_GETD_RPC_ROOM_FAIL

        iOpenServiceDay = self.player.base.GetServerOpenDay()  # 开服天数
        t = self.player.base.GetServerOpenTime()  # 开服时间戳


        for k,v in Game.res_mgr.res_gongchengActive.items():
            if v.lastDay:
                if v.lastDayRank and v.openDay<=iOpenServiceDay<v.openDay+v.lastDay:

                    data=rpc_gongcheng.gongchengQuanmingRank()

                    newdata={}
                    bestGuildName=""
                    bestGuildScore=0

                    ymds=[]
                    for x in range(v.lastDayRank):
                        tt=t+ (x+v.openDay-1)  *3600*24
                        ymd=gtime.getYYYYMMDDbyT(tt)
                        ymds.append(ymd)
                    

                    bestGuild={}
                    
                    for x in data:
                        if x["d"] in ymds:
                            for kk,vv in x["s"].items():
                                if kk in slist:


                                    newdata[kk]=newdata.get(kk,{"list":[],"gnum":0,"score":0})
                                    newdata[kk]["score"]+=vv["score"]

                                    for kkk,vvv in vv["ghid"].items():

                                        bestGuild[kkk]=bestGuild.get(kkk,{"name":vvv["name"],"score":0})
                                        bestGuild[kkk]["score"]+=vvv["score"]
                                        
                                        

                                        # 去重计算工会数量
                                        if kkk not in newdata[kk]["list"]:
                                            newdata[kk]["list"].append(kkk)
                                            newdata[kk]["gnum"]+=1
                                        
                    bgs=list(bestGuild.values())
                    bgs = sorted(bgs, key=lambda fff: fff["score"], reverse=True)
                    if len(bgs):
                        bestGuildName=bgs[0]["name"]
                        bestGuildScore=bgs[0]["score"]

                    return 1,{"serverNo":config.serverNo,"rank":newdata,"bestGuildName":bestGuildName,"bestGuildScore":bestGuildScore}

        


        return 1,{"serverNo":config.serverNo,"rank":{},"bestGuildName":"","bestGuildScore":0}
Beispiel #18
0
    def gongchengFucknpc(self):

        from game.mgr.room import get_rpc_gongcheng
        rpc_gongcheng = get_rpc_gongcheng()
        if rpc_gongcheng:
            rpc_gongcheng.gongchengFucknpc(self.owner.id)
Beispiel #19
0
    def rc_gongchengQuanmingReward(self):
        gongchengActiveSerNum = Game.res_mgr.res_common.get("gongchengActiveSerNum")
        if not gongchengActiveSerNum:
            return 0, errcode.EC_NORES

        if config.serverNo not in Game.res_mgr.res_List_kuafuServerNo:
            return 0, errcode.EC_NORES
        
        idx=Game.res_mgr.res_List_kuafuServerNo.index(config.serverNo)
        startidx=(idx+1)-gongchengActiveSerNum.i
        if startidx<0:
            startidx=0

        slist=Game.res_mgr.res_List_kuafuServerNo[startidx:startidx+gongchengActiveSerNum.i]

        from game.mgr.room import get_rpc_gongcheng
        rpc_gongcheng = get_rpc_gongcheng()
        if not rpc_gongcheng:
            return 0, errcode.EC_GETD_RPC_ROOM_FAIL

        iOpenServiceDay = self.player.base.GetServerOpenDay()  # 开服天数
        t = self.player.base.GetServerOpenTime()  # 开服时间戳


        for k,v in Game.res_mgr.res_gongchengActive.items():
            if v.lastDay:
                if v.lastDayRank and v.openDay<=iOpenServiceDay<v.openDay+v.lastDay and v.openDay+v.lastDayRank<=iOpenServiceDay:

                    data=rpc_gongcheng.gongchengQuanmingRank()

                    newdata={}
    

                    ymds=[]
                    for x in range(v.lastDayRank):
                        tt=t+ (x+v.openDay-1)  *3600*24
                        ymd=gtime.getYYYYMMDDbyT(tt)
                        ymds.append(ymd)
                    

                    bestGuild={}
                    
                    for x in data:
                        if x["d"] in ymds:
                            for kk,vv in x["s"].items():
                                if kk in slist:


                                    newdata[kk]=newdata.get(kk,{"sno":kk,"list":[],"gnum":0,"score":0})
                                    newdata[kk]["score"]+=vv["score"]

                                    for kkk,vvv in vv["ghid"].items():

                                        bestGuild[kkk]=bestGuild.get(kkk,{"sno":kkk,"name":vvv["name"],"score":0})
                                        bestGuild[kkk]["score"]+=vvv["score"]
                                        
                                        

                                        # 去重计算工会数量
                                        if kkk not in newdata[kk]["list"]:
                                            newdata[kk]["list"].append(kkk)
                                            newdata[kk]["gnum"]+=1
                                        
                    bgs=list(newdata.values())
                    bgs = sorted(bgs, key=lambda fff: fff["score"], reverse=True)
                    if not len(bgs):
                        return 0, errcode.EC_GONGCHENG_QUANMING_NORANK #



                    if k in self.player.gongcheng.isRankRewardList:
                        return 0, errcode.EC_GONGCHENG_QUANMING_ALREADY #
                    
                    self.player.gongcheng.gongchengisRankReward(k)

                    reward=v.reward2
                    if bgs[0]["sno"]==config.serverNo:
                        reward=v.reward1
                    

                    respBag = self.player.bag.add(reward, constant.ITEM_ADD_GONGCHENG_QUANMING_RANK, wLog=True)

                    dUpdate = self.player.packRespBag(respBag)
                    dUpdate["gongcheng"] = self.player.gongcheng.to_init_data()
                    resp = {
                        "allUpdate": dUpdate,
                    }
                    return 1, resp

        


        return 0, errcode.EC_GONGCHENG_QUANMING_NOOPEN #