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
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()
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
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)
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
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
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