コード例 #1
0
    def rc_revengeHusongCar(self,id):
        
        yabiaoDoubleTime = Game.res_mgr.res_common.get("yabiaoDoubleTime")
        if not yabiaoDoubleTime:
            return 0, errcode.EC_NORES
    

        if str(id) not in self.player.yabiao.history:
            return 0, errcode.EC_REVENGEHUSONG_NOIN

        if self.player.yabiao.history[str(id)]["type"]!=0:
            return 0, errcode.EC_REVENGEHUSONG_NOTYPE

        res = Game.res_mgr.res_yabiao.get(self.player.yabiao.history[str(id)]["data"]["data"]["quality"])
        if not res:
            return 0, errcode.EC_NORES
          
        
        from game.mgr.logicgame import LogicGame
        proxy = get_proxy_by_addr(self.player.yabiao.history[str(id)]["data"]["addr"], LogicGame._rpc_name_)
        if not proxy:
            return 0, errcode.EC_GETD_LOGIC_PROXY_ERR
  
        fdata = self.player.GetFightData()

        bhname = ""
        from game.mgr.guild import get_rpc_guild
        rpc_guild = get_rpc_guild(self.player.guild.GetGuildId())
        if rpc_guild:
            bhname = rpc_guild.getName()

        historydata={"id":self.player.id,"endtime":0,"name":self.player.name,"data":{"quality":self.player.yabiao.history[str(id)]["data"]["data"]["quality"],"power":self.player.base.fa,"bhname":bhname,"sex":self.player.base.GetSex()}}

        resp  = proxy.revengeHusongCar(self.player.id,{"id":self.player.yabiao.history[str(id)]["data"]["id"]},fdata,historydata)
        if not resp:
            return 0, errcode.EC_CALL_LOGIC_PROXY_ERR

        self.player.yabiao.modfiyHistoryFinish(id)

        respBag = {}
        fightResult = resp["fightLog"]["result"].get("win", 0)
        if fightResult:
            mul=1
            currHour = gtime.current_hour()
            if currHour in yabiaoDoubleTime.arrayint1:
                mul=2
            
            reward = {}
            for kk, vv in res.rob.items():
                reward[kk]=vv*mul

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

        dUpdate = self.player.packRespBag(respBag)
        dUpdate["jiebiao"] = self.player.yabiao.to_init_data()

        resp["allUpdate"] = dUpdate
        return 1, resp
コード例 #2
0
ファイル: playerGuild.py プロジェクト: hw233/gsdld_pokemon2
 def reSetRefTime(self):
     tRefe = (0, 4, 8, 12, 16, 20)
     iHour = current_hour()
     iNextHour = 0
     for refe in tRefe:
         if iHour < refe:
             iNextHour = refe
     if iNextHour == 0:
         iNextHour = 24
     self.refTime = int(cur_day_hour_time(iNextHour))
     self.markDirty()
コード例 #3
0
    def rc_guildCj(self):
        guildId = self.player.guild.GetGuildId()
        if not guildId:
            return 0, errcode.EC_NO_GUILD
        info = self.player.guild.GetSceneTaskInfo(constant.GUILD_TASK_TYPE_1)
        taskId = info.get("taskId", 0)
        taskRes = Game.res_mgr.res_guildTask.get(taskId)
        if not taskRes:
            return 0, errcode.EC_NORES
        rewardRes = Game.res_mgr.res_reward.get(int(taskRes.arg2))
        if not rewardRes:
            return 0, errcode.EC_NORES
        guildTaskRewardTimeRes = Game.res_mgr.res_common.get(
            "guildTaskRewardTime")
        if not guildTaskRewardTimeRes:
            return 0, errcode.EC_NORES
        iNum = info.get("num", 0)
        if iNum >= taskRes.condition:
            return 0, errcode.EC_GUILD_TASK_HAS_FINISH
        iHour = current_hour()
        iAdd = 1
        if guildTaskRewardTimeRes.arrayint1[
                0] <= iHour < guildTaskRewardTimeRes.arrayint1[1]:
            iAdd = 5
        info["num"] = iNum + iAdd
        if info["num"] >= taskRes.condition:
            info["num"] = taskRes.condition
        self.player.guild.SetSceneTaskInfo(constant.GUILD_TASK_TYPE_1, info)
        #采集奖励
        respBag = {}
        for i in range(iAdd):
            dReward = rewardRes.doReward()
            respBag1 = self.player.bag.add(dReward,
                                           constant.ITEM_ADD_GUILD_TASK,
                                           wLog=True)
            respBag = self.player.mergeRespBag(respBag, respBag1)
        #统计采集次数
        collectNum = self.player.guild.GetCollectNum()
        collectNum += iAdd
        self.player.guild.SetCollectNum(collectNum)
        # 抛事件
        self.player.safe_pub(msg_define.MSG_GUILD_COLLECT)

        # 打包返回信息

        dUpdate = self.player.packRespBag(respBag)
        dUpdate["guildInfo"] = {"scene": {"taskList": [info]}}
        resp = {
            "allUpdate": dUpdate,
        }
        return 1, resp
コード例 #4
0
    def load_from_dict(self, data):
        
        self.cycleDay.load_from_dict(data.get("cycleDay", ""))
        self.cycleWeek.load_from_dict(data.get("cycleWeek", ""))

        numRes = Game.res_mgr.res_common.get("pvpChallengeNumMax")
        self.challengeNum = data.get("challengeNum", numRes.i)  # 挑战次数 初始3次
        self.lastRecoverTime = data.get("lastRecoverTime", 0)  # 最后一次恢复时间
        self.TotalWin = data.get("TotalWin", 0)  # 历史总战胜次数
        self.TotalFightNum = data.get("TotalFightNum", 0) # 历史总挑战次数
        self.winMax = data.get("winMax", 0)  # 历史最大连胜次数
        self.revengeNum = data.get("revengeNum", 0)  # 历史复仇次数
        try:
            self.beChallengeData = data.get("beChallengeData", [])
            if self.beChallengeData:
                self.beChallengeData = pickle.loads(self.beChallengeData)
        except:
            self.beChallengeData = []

        #判断离线时长
        cdRes = Game.res_mgr.res_common.get("pvpChallengeNumCD")
        now = int(time.time())
        add = int((now - self.lastRecoverTime)/cdRes.i)
        self.challengeNum += add
        if self.challengeNum > numRes.i:
            self.challengeNum = numRes.i

        #设定最后一次恢复时间
        nowhour = gtime.current_hour()
        refresh = (0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22)
        last = 0
        for hour in refresh:
            if nowhour < hour:
                break
            last = hour

        #今日凌晨时间
        zero_day_time = int(gtime.zero_day_time())
        self.lastRecoverTime = zero_day_time + 3600*last

        nextRecoverTime = self.lastRecoverTime + 7200

        self.recover_task = spawn_later(nextRecoverTime-now, self.recoverChallengeNum)
コード例 #5
0
    def rc_guildKillMst(self):
        guildId = self.player.guild.GetGuildId()
        if not guildId:
            return 0, errcode.EC_NO_GUILD
        info = self.player.guild.GetSceneTaskInfo(constant.GUILD_TASK_TYPE_2)
        taskId = info.get("taskId", 0)
        taskRes = Game.res_mgr.res_guildTask.get(taskId)
        if not taskRes:
            return 0, errcode.EC_NORES
        rewardRes = Game.res_mgr.res_reward.get(int(taskRes.arg2))
        if not rewardRes:
            return 0, errcode.EC_NORES
        iNum = info.get("num", 0)
        if iNum >= taskRes.condition:
            return 0, errcode.EC_GUILD_TASK_HAS_FINISH
        guildTaskRewardTimeRes = Game.res_mgr.res_common.get(
            "guildTaskRewardTime")
        if not guildTaskRewardTimeRes:
            return 0, errcode.EC_NORES
        #初始化副本
        fightobj = Game.fight_mgr.createFight(constant.FIGHT_TYPE_110)
        rs = fightobj.init_by_barrId(self.player, int(taskRes.arg1))
        if not rs:
            return 0, errcode.EC_INIT_BARR_FAIL
        fightLog = fightobj.doFight()
        fightResult = fightLog["result"].get("win", 0)
        #更新数据
        respBag = {}
        if fightResult:
            iHour = current_hour()
            iAdd = 1
            if guildTaskRewardTimeRes.arrayint1[
                    0] <= iHour < guildTaskRewardTimeRes.arrayint1[1]:
                iAdd = 5
            info["num"] = iNum + iAdd
            if info["num"] >= taskRes.condition:
                info["num"] = taskRes.condition

            self.player.guild.SetSceneTaskInfo(constant.GUILD_TASK_TYPE_2,
                                               info)
            # 打怪奖励
            for i in range(iAdd):
                dReward = rewardRes.doReward()
                respBag1 = self.player.bag.add(dReward,
                                               constant.ITEM_ADD_GUILD_TASK,
                                               wLog=True)
                respBag = self.player.mergeRespBag(respBag, respBag1)
            # 统计次数
            monsterNum = self.player.guild.GetMonsterNum()
            monsterNum += iAdd
            self.player.guild.SetMonsterNum(monsterNum)
            # 抛事件
            self.player.safe_pub(msg_define.MSG_GUILD_MONSTER_KILL)
        # 打包返回信息
        dUpdate = self.player.packRespBag(respBag)
        dUpdate["guildInfo"] = {"scene": {"taskList": [info]}}
        resp = {
            "fightLog": fightLog,
            "allUpdate": dUpdate,
        }
        return 1, resp
コード例 #6
0
    def rc_robHusongCar(self,id):
        yabiaoJiebiaoLimit = Game.res_mgr.res_common.get("yabiaoJiebiaoLimit")
        if not yabiaoJiebiaoLimit:
            return 0, errcode.EC_NORES

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

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

        if self.player.yabiao.getYabiaoRob()>=yabiaoJiebiaoNum.i:
            return 0, errcode.EC_ROBHUSONG_USEUP

        days = self.player.base.GetServerOpenDay()
        ares = Game.res_mgr.res_activity.get(constant.ACTIVITY_YABIAO)
        startD = ares.openDayRange[0]
        from game.mgr.room import get_rpc_room
        rpc_room = get_rpc_room(startD<=days)
        if not rpc_room:
            return 0, errcode.EC_GETD_RPC_ROOM_FAIL

        rrv = rpc_room.getOneByServerNo(1,config.serverNo,id)
        if not rrv:
            return 0, errcode.EC_CALL_RPC_ROOM_FAIL
        
        data = rrv["v"]

        if len(data)==0:
            return 0, errcode.EC_HUSONG_NOFOUNDONE
        
        res = Game.res_mgr.res_yabiao.get(data[0]["data"]["quality"])
        if not res:
            return 0, errcode.EC_NORES
        
        if yabiaoJiebiaoLimit.i<=len(data[0]["data"]["becatchID"]):
            return 0, errcode.EC_ROBHUSONG_LIMIT

        if self.player.id in data[0]["data"]["becatchID"]:
            return 0, errcode.EC_ROBHUSONG_ALREADY

        from game.mgr.logicgame import LogicGame
        proxy = get_proxy_by_addr(data[0]["addr"], LogicGame._rpc_name_)
        if not proxy:
            return 0, errcode.EC_GETD_LOGIC_PROXY_ERR

        fdata = self.player.GetFightData()

        bhname = ""
        from game.mgr.guild import get_rpc_guild
        rpc_guild = get_rpc_guild(self.player.guild.GetGuildId())
        if rpc_guild:
            bhname = rpc_guild.getName()

        import app
        historydata={"addr":app.addr,"id":self.player.id,"endtime":0,"name":self.player.name,"data":{"quality":0,"power":self.player.base.fa,"bhname":bhname,"sex":self.player.base.GetSex()}}

        resp  = proxy.robHusongCar(self.player.id,data[0],fdata,historydata)
        if not resp:
            return 0, errcode.EC_CALL_LOGIC_PROXY_ERR

        self.player.yabiao.addYabiaoRob()

        respBag = {}
        fightResult = resp["fightLog"]["result"].get("win", 0)
        if fightResult:
            self.player.yabiao.addHistory(3,data[0])

            mul=1
            currHour = gtime.current_hour()
            if currHour in yabiaoDoubleTime.arrayint1:
                mul=2
            
            reward = {}
            for kk, vv in res.rob.items():
                reward[kk]=vv*mul

            respBag = self.player.bag.add(reward, constant.ITEM_ADD_ROBREWARD, wLog=True)
        else:
            self.player.yabiao.addHistory(2,data[0])

        dUpdate = self.player.packRespBag(respBag)
        dUpdate["jiebiao"] = self.player.yabiao.to_init_data()

        resp["allUpdate"] = dUpdate
        return 1, resp
コード例 #7
0
    def rc_husong(self):

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

        if self.player.yabiao.time!=0:
            return 0, errcode.EC_HUSONG_TIME_NO_ZERO
    
        if self.player.yabiao.getYabiaoHusong()>=yabiaoHusongNum.i:
            return 0, errcode.EC_HUSONG_NUM_USEUP



        mul=1
        currHour = gtime.current_hour()
        if currHour in yabiaoDoubleTime.arrayint1:
            mul=2

        self.player.yabiao.husong(mul)


        bhname = ""
        from game.mgr.guild import get_rpc_guild
        rpc_guild = get_rpc_guild(self.player.guild.GetGuildId())
        if rpc_guild:
            bhname = rpc_guild.getName()

        days = self.player.base.GetServerOpenDay()
        ares = Game.res_mgr.res_activity.get(constant.ACTIVITY_YABIAO)
        startD = ares.openDayRange[0]
        from game.mgr.room import get_rpc_room
        rpc_room = get_rpc_room(startD<=days)
        if not rpc_room:
            return 0, errcode.EC_GETD_RPC_ROOM_FAIL


        data={
            "power":self.player.base.fa,
            "quality":self.player.yabiao.quality,
            "bhname":bhname,
            "sex":self.player.base.GetSex(),
            "portrait":self.player.myhead.getPortrait(),
            "headframe":self.player.myhead.getHeadframe(),
            "becatchID":self.player.yabiao.getBecatchID(),
        }

        import app
        rrv = rpc_room.hello(1,self.player.id,config.serverNo,app.addr,self.player.name,data,self.player.yabiao.time,0)
        if not rrv:
            return 0, errcode.EC_CALL_RPC_ROOM_FAIL
        
        rrv = rpc_room.get(1,self.player.id)
        if not rrv:
            return 0, errcode.EC_CALL_RPC_ROOM_FAIL
        
        resp = {}
        resp["list"] = rrv["v"]
        dUpdate={}
        dUpdate["jiebiao"] = self.player.yabiao.to_init_data()
        resp["allUpdate"] = dUpdate


        return 1, resp