#!/usr/bin/python # -*- coding: GBK -*- # # ##@package HighLadderTube.py # # @todo:ÌìÌݾº¼¼³¡MapServer # # @author xmnathan # @date 2010-01-01 10:00 # @version 3.2 # @note: # @change: "2014-08-05 18:00" xmnathan ÌìÌݾº¼¼³¡ # @change: "2014-08-07 11:30" xmnathan ÿÈÕ½±ÀøÖ§³ÖÁìÈ¡ »ý·Ö ¾­Ñé ħ»ê ½ð±Ò;Ôö¼Ó¹ºÂò´ÎÊýÉÏÏÞ # @change: "2014-08-07 16:30" xmnathan ÐÞ¸ÄÀäȴʱ¼ä¼ÆË㣺ÿ´ÎÌôÕ½Ôö¼ÓÀäȴʱ¼ä£¬Ê±¼ä´ïµ½Ò»¶¨ÖµÊ±ÐèÒªÀäȴʱ¼äΪ0²ÅÄÜÌôÕ½ # @change: "2014-08-08 10:00" hxp Ôö¼Ó²Î¼Ó¾º¼¼³¡ÈÎÎñʼþ´¥·¢ # @change: "2014-08-08 17:30" xmnathan Ôö¼Óħ»êÔÊÐíÒç³ö # @change: "2014-08-12 10:50" xmnathan Ôö¼ÓÁ¬Ê¤¹ã²¥ # @change: "2014-10-30 21:51" Alee ·þÎñÆ÷µÄtickÊÇ¿ª»úºó´Ó0ËãÆðµÄ£¬ÒªÓÃÏÖʵʱ¼ä´Á # @change: "2014-11-12 16:30" hxp Ôö¼ÓʤÀû³É¾Í # @change: "2014-11-13 16:30" xmnathan ¹ýÌìÔö¼ÓÒ»´Î½±Àø²éѯ ÒÔ֪ͨ¿Í»§¶ËˢР# @change: "2014-12-08 17:00" hxp Ôö¼Ó×êʯÏû·ÑÁ÷Ïò # @change: "2015-01-14 20:30" hxp Ôö¼Ó¸ù¾ÝÌôÕ½´ÎÊýÒ»¶¨¼¸ÂʸøÎïÆ· # @change: "2015-01-29 21:52" xmnathan ¾º¼¼³¡±£´æÊý¾ÝÔö¼ÓÍæ¼ÒתÉúµÈ¼¶¡¢´ÎÊý # @change: "2015-02-10 22:30" hxp Ôö¼Ó×êʯÏûºÄÀàÐÍʼþ»ã±¨ # @change: "2015-02-26 11:40" xmnathan ¾º¼¼³¡±£´æÊý¾ÝÔö¼ÓÍæ¼Ò´óʦµÈ¼¶ # @change: "2015-03-19 16:50" ljd ¹ó×å¼Ó³É # @change: "2015-04-16 17:50" ljd µ¼ÈëmathÓÃÓÚ¿ªÅäÖà # @change: "2015-07-10 15:40" xdh ¾º¼¼³¡±£´æÊý¾ÝÔö¼ÓÍæ¼ÒÔËÓªÉÌÐÅÏ¢ # @change: "2015-07-28 11:10" ljd ¹ó×å¼Ó³É »¹Ô­ # @change: "2015-07-29 11:30" ljd Ïû·ÑVIPÔö¼Ó´ÎÊý # @change: "2015-08-24 11:00" xdh Ôö¼ÓJJCÁ¬Ðø»÷ɱ³É¾Í # @change: "2016-01-26 15:00" hxp PY±íÖ§³ÖÖØ¶Á # @change: "2016-12-13 21:00" xdh Ôö¼ÓJJCÒ»´ÎÐÔÅÅÃû½±Àø #--------------------------------------------------------------------- """Version = 2016-12-13 21:00""" #--------------------------------------------------------------------- import IPY_GameWorld import GameWorld import ChConfig import ReadChConfig import ShareDefine import ChPyNetSendPack import NetPackCommon import PlayerControl import ItemCommon import ItemControler import DataRecordPack import ChMapToGamePyPack import PyMapTable import PlayerActivity import PlayerSuccess import EventShell import PlayerCostVIP import time import math # ¶¨ÒåÎïÆ·ÀàÐÍ ( Def_ItemType_CommonItem, # Ò»°ãÎïÆ· Def_ItemType_AppointItem, # ÌØÊâ¶¨ÖÆÎïÆ· ) = range(2) ##//1A 13 ÌìÌݾº¼¼³¡ÌôÕ½Íæ¼Ò#tagCHightLadderChallenge #struct tagCHightLadderChallenge #{ # tagHead Head; # DWORD VSOrder; //ÒªÌôÕ½µÄÅÅλ #}; ## ÌìÌݾº¼¼³¡ÌôÕ½Íæ¼Ò # @param index, tick # @return None def OnHightLadderChallenge(index, tick): GameWorld.DebugLog('HightLadder### OnHightLadderChallenge in') curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) if not curPlayer: return clientPack = IPY_GameWorld.IPY_CHightLadderChallenge() HighLadderPriceDict = ReadChConfig.GetEvalChConfig("HighLadderPrice") needPay = 0 buyCount = False Count = 0 #УÑé´ÎÊý #ÒÑÌôÕ½´ÎÊý hadFightCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadderFightCnt, 0, ChConfig.Def_PDictType_Default) #¹ºÂò´ÎÊý AddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadderAddCnt, 0, ChConfig.Def_PDictType_Default) #ÿÈÕĬÈÏ´ÎÊý vipAddNum = PlayerCostVIP.GetArenaNum(curPlayer) HighLadderFightCntDict = ReadChConfig.GetEvalChConfig("HighLadderFightCnt") FightCntPerDay = HighLadderFightCntDict["FightCnt"] + vipAddNum CanAddCntPerDay = HighLadderFightCntDict["CanAddCnt"] if hadFightCnt >= (FightCntPerDay + AddCnt): #ÿÈÕĬÈÏ´ÎÊý + ÒѹºÂò´ÎÊý Count = AddCnt + 1 if Count > CanAddCntPerDay: GameWorld.DebugLog('HightLadder### OnHightLadderChallenge AddCnt %s max %s' % (AddCnt, CanAddCntPerDay)) return AddCountPrice = eval(HighLadderPriceDict["AddCount"]) GameWorld.DebugLog('HightLadder### OnHightLadderChallenge hadFightCnt %s max %s' % (hadFightCnt, FightCntPerDay)) needPay += AddCountPrice buyCount = True #УÑéÌôÕ½CD CDTime = GetCDTime(curPlayer) isRelCDTime = IsRelCDTime(curPlayer, tick) if isRelCDTime: ClearCDPrice = eval(HighLadderPriceDict["ClearCD"]) needPay += ClearCDPrice #×êʯ¹ºÂò¼Û¸ñ if needPay: infoDict = {"CDTime":CDTime, "IsRelCDTime":isRelCDTime, "IsBuyCount":buyCount, "Count":Count, ChConfig.Def_Cost_Reason_SonKey:"CDAndCount"} if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, needPay, ChConfig.Def_Cost_HighLadder, infoDict): return #ÇåCD if isRelCDTime: ClearCDTime(curPlayer); #¹ºÂò´ÎÊý if buyCount: PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HighLadderAddCnt, AddCnt + 1, ChConfig.Def_PDictType_Default) SendHighLadderState(curPlayer, tick) #·¢ËÍÏà¹ØÊý¾Ý sendPack = ChMapToGamePyPack.tagMGHighLadderChallenge() sendPack.PlayerID = curPlayer.GetPlayerID() sendPack.PlayerName = curPlayer.GetPlayerName() sendPack.PlayerLV = curPlayer.GetLV() sendPack.FightPower = curPlayer.GetFightPower() sendPack.VSOrder = clientPack.GetVSOrder() GameWorld.DebugLog('HightLadder### OnHightLadderChallenge VSOrder %s' % sendPack.VSOrder) #¸½´øÊý¾Ý curFightPropertyDict = {} curFightPropertyDict["Job"] = curPlayer.GetJob() curFightPropertyDict["LVEx"] = curPlayer.GetLVEx() curFightPropertyDict["LV2"] = curPlayer.GetLV2() curFightPropertyDict["ReincarnationLv"] = curPlayer.GetReincarnationLv() curFightPropertyDict["OperateInfo"] = curPlayer.GetOperateInfo() #Õ½¶·ÊôÐÔ curFightPropertyDict["Atk"] = curPlayer.GetMaxAtk() curFightPropertyDict["Def"] = curPlayer.GetDef() curFightPropertyDict["MaxHP"] = curPlayer.GetMaxHP() curFightPropertyDict["Hit"] = curPlayer.GetHit() curFightPropertyDict["Miss"] = curPlayer.GetMiss() curFightPropertyDict["AtkSpeed"] = curPlayer.GetBattleValEx1() curFightPropertyDict["GreatHitRate"] = curPlayer.GetGreatHitRate() curFightPropertyDict["GreatHit"] = curPlayer.GetGreatHitVal() curFightPropertyDict["LuckyHitRate"] = curPlayer.GetLuckyHitRate() curFightPropertyDict["LuckyHit"] = curPlayer.GetLuckyHitVal() curFightPropertyDict["SuperHitRate"] = curPlayer.GetSuperHitRate() curFightPropertyDict["SuperHit"] = curPlayer.GetSuperHit() curFightPropertyDict["IgnoreDefRate"] = curPlayer.GetIgnoreDefRate() curFightPropertyDict["DamageReduceRate"] = curPlayer.GetDamageReduceRate() hadFightCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadderFightCnt, 0, ChConfig.Def_PDictType_Default) curFightPropertyDict["HadFightCnt"] = hadFightCnt historyMaxOrder = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadder_HistoryMaxOrder, 0, ChConfig.Def_PDictType_Default) curFightPropertyDict["HistoryMaxOrder"] = historyMaxOrder sendPack.FightPropertyData = str(curFightPropertyDict) sendPack.FightPropertyDataLen = len(sendPack.FightPropertyData) #×°±¸Êý¾Ý equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip) for index in xrange(ShareDefine.retMax): curEquip = equipPack.GetAt(index) if curEquip.IsEmpty(): continue curEquipData = ChMapToGamePyPack.tagHightLadderItemInfo() curEquipData.ItemTypeID = curEquip.GetItemTypeID() curEquipData.ItemPlaceType = curEquip.GetItemPlaceType() curEquipData.ItemPlaceIndex = curEquip.GetItemPlaceIndex() curEquipData.Count = curEquip.GetCount() curEquipData.Maker = curEquip.GetGearScore() curEquipData.UserData = curEquip.GetUserData() curEquipData.UserDataLen = len(curEquipData.UserData) curEquipData.IsSuite = curEquip.GetIsSuite() sendPack.EquipList.append(curEquipData) sendPack.EquipCount = len(sendPack.EquipList) GameWorld.DebugLog('HightLadder### OnHightLadderChallenge out') NetPackCommon.SendPyPackToGameServer(sendPack) return ##//03 01 ÌìÌݾº¼¼³¡Íæ¼ÒÌôÕ½½á¹ûͬ²½#tagGMHighLadderChallengeReuslt # @param curPackData, tick # @return None def OnGMHighLadderChallengeReuslt(curPackData, tick): GameWorld.DebugLog('HightLadder### OnGMHighLadderChallengeReuslt in') curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(curPackData.PlayerID) if not curPlayer: return # »îÔ¾¶È #PlayerActivity.AddActivityFinishCnt(curPlayer, ShareDefine.ActivityNum_HighLadderArena) #¼Ç¼Àäȴʱ¼ä AddCDTimePer(curPlayer, tick) #¼Ç¼ÌôÕ½´ÎÊý hadFightCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadderFightCnt, 0, ChConfig.Def_PDictType_Default) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HighLadderFightCnt, hadFightCnt + 1, ChConfig.Def_PDictType_Default) #¼Ç¼Á¬Ê¤´ÎÊý if curPackData.Result > 0: EventShell.EventRespons_ArenaEvent(curPlayer, "on_win") WinningStreakCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadder_WinningStreak, 0, ChConfig.Def_PDictType_Default) WinningStreakCnt += 1 PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HighLadder_WinningStreak, WinningStreakCnt, ChConfig.Def_PDictType_Default) WinningStreakMsgDict = ReadChConfig.GetEvalChConfig("HighLadderWinningStreakMsg") winMsg = WinningStreakMsgDict.get(WinningStreakCnt, "") if winMsg: PlayerControl.WorldNotify(0, winMsg, [curPlayer.GetPlayerName(), "%s" % WinningStreakCnt]) # ʤÀû³É¾Í #PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_HighLadderWin, 1) # Á¬ÐøÊ¤Àû³É¾Í #successType = ShareDefine.SuccType_JJCWin #PlayerSuccess.UptateSuccessProgress(curPlayer, successType, WinningStreakCnt) else: PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HighLadder_WinningStreak, 0, ChConfig.Def_PDictType_Default) #¼ÆËã½±Àø ²ÎÊý PlusInfoDict = eval(curPackData.PlusInfo) upOrder = PlusInfoDict["upOrder"] order = PlusInfoDict["Order"] vsorder = PlusInfoDict["VSOrder"] awardItemList = PlusInfoDict["AwardItemList"] newMaxOrder = PlusInfoDict["HistoryMaxOrder"] GameWorld.DebugLog("OnGMHighLadderChallengeReuslt awardItemList=%s" % str(awardItemList)) reLV = curPlayer.GetLV() reExp = 0 reMoney = 0 result = curPackData.Result historyMaxOrder = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadder_HistoryMaxOrder, 0, ChConfig.Def_PDictType_Default) GameWorld.DebugLog(' JJCÀúÊ·×î¸ßÅÅÃû¸üРoldhistoryMaxOrder=%s,newMaxOrder=%s,upOrder=%s' % (historyMaxOrder, newMaxOrder, upOrder)) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HighLadder_HistoryMaxOrder, newMaxOrder, ChConfig.Def_PDictType_Default) # ´¥·¢ÈÎÎñʼþ EventShell.EventRespons_ArenaEvent(curPlayer, "on_join") #¼ÆËã½±Àø HighLadderRewardDict = ReadChConfig.GetEvalChConfig("HighLadderReward") curHighLadderPoint = eval(HighLadderRewardDict["HighLadderPoint"]) curExp = eval(HighLadderRewardDict["Exp"]) curMoney = eval(HighLadderRewardDict["Money"]) curGoldPaper = eval(HighLadderRewardDict["GoldPaper"]) #»ý·Ö PlayerControl.AddHighLadderCurrency(curPlayer, curHighLadderPoint, False, False) #¾­Ñé playerControl = PlayerControl.PlayerControl(curPlayer) playerControl.AddExp(curExp, isSysHint=False) #½ð±Ò addDataDict = {ChConfig.Def_Give_Reason_SonKey:"Challenge"} PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, curMoney, ChConfig.Def_GiveMoney_HighLadder, addDataDict, False) #°ó¶¨×êʯ PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Paper, curGoldPaper, ChConfig.Def_GiveMoney_HighLadder, addDataDict, False) GameWorld.DebugLog('HightLadder### OnGMHighLadderChallengeReuslt out') if awardItemList: for itemID, itemCnt, isBind in awardItemList: ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem, IPY_GameWorld.rptAnyWhere]) SendHighLadderState(curPlayer, tick) return ##»ñÈ¡¾º¼¼³¡ÌôÕ½Àäȴʱ¼ä # @param curPlayer # @return None def GetCDTime(curPlayer): # HighLadderCDTimeDict = ReadChConfig.GetEvalChConfig("HighLadderCDTime") # CDTime = HighLadderCDTimeDict["CDTime"] # AddCDPer = HighLadderCDTimeDict["AddCDPer"] #·þÎñÆ÷µÄtickÊÇ¿ª»úºó´Ó0ËãÆðµÄ£¬ÒªÓÃÏÖʵʱ¼ä´Á£¬½ÚÊ¡×ÖµäµÄ×ö·¨ÎªÉÏÏßµÄʱºò¼õÈ¥CDʱ¼ä tick = int(time.time()) totalCD = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadder_CDTime, 0, ChConfig.Def_PDictType_Default) lastTick = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadder_CDBeginTime, 0, ChConfig.Def_PDictType_Default) totalCD = max(0, totalCD - max((tick - lastTick), 0) * 1000) #¸üÐÂCDʱ¼ä ¸üÐÂCDÆðʼʱ¼ä PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HighLadder_CDTime, totalCD, ChConfig.Def_PDictType_Default) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HighLadder_CDBeginTime, tick, ChConfig.Def_PDictType_Default) if totalCD == 0: #ÖØÖÃCDʱ¼ä ClearCDTime(curPlayer) return totalCD ## ¹Ì¶¨Ôö¼ÓÒ»´ÎCDʱ¼ä # @param curPlayer, tick # @return None def AddCDTimePer(curPlayer, tick): HighLadderCDTimeDict = ReadChConfig.GetEvalChConfig("HighLadderCDTime") CDTime = HighLadderCDTimeDict["CDTime"] AddCDPer = HighLadderCDTimeDict["AddCDPer"] totalCD = GetCDTime(curPlayer) totalCD = totalCD + AddCDPer #·þÎñÆ÷µÄtickÊÇ¿ª»úºó´Ó0ËãÆðµÄ£¬ÒªÓÃÏÖʵʱ¼ä´Á£¬½ÚÊ¡×ÖµäµÄ×ö·¨ÎªÉÏÏßµÄʱºò¼õÈ¥CDʱ¼ä tick = int(time.time()) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HighLadder_CDBeginTime, tick, ChConfig.Def_PDictType_Default) #¸üÐÂCDʱ¼ä PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HighLadder_CDTime, totalCD, ChConfig.Def_PDictType_Default) if totalCD > CDTime:#³¬¹ý¿ÉÀÛ¼ÆCD£¬½øÈëÕæÕýÀäȴ״̬ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HighLadder_IsRelCD, 1, ChConfig.Def_PDictType_Default) return ## Çå³ýCDʱ¼ä # @param curPlayer, tick # @return None def ClearCDTime(curPlayer): #¸üÐÂCDʱ¼ä PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HighLadder_CDTime, 0, ChConfig.Def_PDictType_Default) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HighLadder_CDBeginTime, 0, ChConfig.Def_PDictType_Default) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HighLadder_IsRelCD, 0, ChConfig.Def_PDictType_Default) ## ÊÇ·ñÔÚÕæÊµÀäȴ״̬ # @param curPlayer, tick # @return None def IsRelCDTime(curPlayer, tick): GetCDTime(curPlayer) return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadder_IsRelCD, 0, ChConfig.Def_PDictType_Default) ##//A5 36 ÌìÌÝÇå³ýÌôÕ½CD#tagCMHighLadderClearCD # @param index, clientPack, tick # @return None def OnHighLadderClearCD(index, clientPack, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) HighLadderPriceDict = ReadChConfig.GetEvalChConfig("HighLadderPrice") #УÑéÌôÕ½CD CDTime = GetCDTime(curPlayer) if CDTime > 0: ClearCDPrice = eval(HighLadderPriceDict["ClearCD"]) if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, ClearCDPrice, ChConfig.Def_Cost_HighLadder, {"CDTime":CDTime, ChConfig.Def_Cost_Reason_SonKey:"CD"}): return ClearCDTime(curPlayer) SendHighLadderState(curPlayer, tick) return ##//A5 37 ÌìÌÝÔö¼ÓÌôÕ½´ÎÊý#tagCMHighLadderAddCount # @param index, clientPack, tick # @return None def OnHighLadderAddCount(index, clientPack, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) HighLadderFightCntDict = ReadChConfig.GetEvalChConfig("HighLadderFightCnt") FightCntPerDay = HighLadderFightCntDict["FightCnt"] CanAddCntPerDay = HighLadderFightCntDict["CanAddCnt"] #¹ºÂò´ÎÊý AddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadderAddCnt, 0, ChConfig.Def_PDictType_Default) Count = AddCnt + 1 if Count > CanAddCntPerDay: GameWorld.DebugLog('HightLadder### OnHighLadderAddCount AddCnt %s max %s' % (AddCnt, CanAddCntPerDay)) return HighLadderPriceDict = ReadChConfig.GetEvalChConfig("HighLadderPrice") AddCountPrice = eval(HighLadderPriceDict["AddCount"]) if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, AddCountPrice, ChConfig.Def_Cost_HighLadder, {"Count":Count, ChConfig.Def_Cost_Reason_SonKey:"Count"}): return PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HighLadderAddCnt, AddCnt + 1, ChConfig.Def_PDictType_Default) SendHighLadderState(curPlayer, tick) return ##//A5 34 ²éѯÌìÌݾº¼¼³¡×´Ì¬#tagCMQueryHighLadderState # @param index, clientPack, tick # @return None def OnQueryHighLadderState(index, clientPack, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) SendHighLadderState(curPlayer, tick) ## Ë¢ÐÂÌìÌݾº¼¼³¡×´Ì¬ # @param curPlayer # @return None def SendHighLadderState(curPlayer, tick): hadFightCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadderFightCnt, 0, ChConfig.Def_PDictType_Default) AddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadderAddCnt, 0, ChConfig.Def_PDictType_Default) vipAddNum = PlayerCostVIP.GetArenaNum(curPlayer) HighLadderFightCntDict = ReadChConfig.GetEvalChConfig("HighLadderFightCnt") FightCntPerDay = HighLadderFightCntDict["FightCnt"] + vipAddNum curCurrency = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadder_Currency, 0, ChConfig.Def_PDictType_Default) sendPack = ChPyNetSendPack.tagMCHighLadderState() sendPack.Count = hadFightCnt sendPack.MaxCount = FightCntPerDay + AddCnt sendPack.CDTime = GetCDTime(curPlayer) sendPack.IsRelCD = IsRelCDTime(curPlayer, tick) sendPack.Currency = curCurrency NetPackCommon.SendFakePack(curPlayer, sendPack) return ## ÌìÌÝÿÈÕÂß¼­ # @param curPlayer # @return None def OnDay(curPlayer): #Çå³ýÿÈÕÌôÕ½ÌìÌÝ´ÎÊý¼Ç¼ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HighLadderFightCnt, 0, ChConfig.Def_PDictType_Default) #Çå³ý×òÈÕÒѹºÂò´ÎÊý PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HighLadderAddCnt, 0, ChConfig.Def_PDictType_Default) #Çå³ý×òÈÕÁì½±¼Ç¼ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HighLadder_DayRewardGot, 0, ChConfig.Def_PDictType_Default) #Çå³ýCD ClearCDTime(curPlayer) tick = GameWorld.GetGameWorld().GetTick() #Ë¢ÐÂÌìÌݾº¼¼³¡×´Ì¬ SendHighLadderState(curPlayer, tick) #֪ͨGameServer²éѯһ´Î½±ÀøÇé¿ö sendMsg = '%s' % ([curPlayer.GetID(), 0, 0]) GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, 'HighLadderReward', sendMsg, len(sendMsg)) return ## //A5 35 ²éѯÌìÌݾº¼¼³¡½±Àø#tagCMQueryHighLadderReward # @param index, clientPack, tick # @return None def OnQueryHighLadderReward(index, clientPack, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) hadGot = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadder_DayRewardGot, 0, ChConfig.Def_PDictType_Default) if clientPack.Type == 1 and hadGot: #Áì½±£¬ÒÑÁìÈ¡µÄÖ±½Ó·µ»Ø¿Í»§¶Ë return #֪ͨGameServer²éѯ»òÁìÈ¡½±Àø sendMsg = '%s' % ([curPlayer.GetID(), clientPack.Type, hadGot]) GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, 'HighLadderReward', sendMsg, len(sendMsg)) ## GameServer²éѯÌìÌݾº¼¼³¡½±ÀøÁìÈ¡½á¹û # @param curPlayer,order # @return None def GameServer_GetHighLadderRewardResult(curPlayer, order): hadGot = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadder_DayRewardGot, 0, ChConfig.Def_PDictType_Default) if hadGot: return #¸ù¾Ý½±ÀøÀàÐ͸øÓè½±Àø result = GiveHighLadderReward(curPlayer, order) if result: #¼Ç¼ÒÑÁìÈ¡ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HighLadder_DayRewardGot, 1, ChConfig.Def_PDictType_Default) hadGot = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadder_DayRewardGot, 0, ChConfig.Def_PDictType_Default) #֪ͨ¿Í»§¶Ë¸üн±ÀøÁìȡ״̬ sendPack = ChPyNetSendPack.tagGCHighLadderRewardInfo() sendPack.hadGot = hadGot sendPack.Order = order NetPackCommon.SendFakePack(curPlayer, sendPack) return ## ¸ù¾Ý½±ÀøÀàÐ͸øÓè½±Àø # @param curPlayer,order # @return None def GiveHighLadderReward(curPlayer, order): HighLadderDayRewardDict = ReadChConfig.GetEvalChConfig("HighLadderDayReward") playerJob = curPlayer.GetJob() curJobReward = None for key in HighLadderDayRewardDict.keys(): minOrder, maxOrder = key if order >= minOrder and order <= maxOrder: curRewardDict = HighLadderDayRewardDict.get(key, {}) if curRewardDict == {}: GameWorld.DebugLog('HightLadder### GiveHighLadderReward order=%s no Reward' % order) return False curJobReward = curRewardDict.get(playerJob, None) if curJobReward == None: GameWorld.DebugLog('HightLadder### GiveHighLadderReward order=%s job = %s no Reward' % (\ order, playerJob)) return False break if curJobReward == None: return False #»ý·Ö,½ð±Ò,¾­Ñé,ħ»ê,½±ÀøÕ¼±³°ü¸ñ×ÓÊý,[[ÊÇ·ñ¶¨ÖƱí,ID, ÊýÁ¿, ÊÇ·ñ°ó¶¨],[ÏÂÒ»¸ö½±Àø,...,...,...],...] rewardCurrency, rewardMoney, rewardExp, rewardMohun, needSpace, rewardList = curJobReward packSpaceCnt = max((ItemControler.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)), \ ItemControler.GetItemPackSpace(curPlayer, IPY_GameWorld.rptAnyWhere)) if needSpace > packSpaceCnt: #±³°ü¿Õ¼äÒÑÂú PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371") return False #»ý·Ö PlayerControl.AddHighLadderCurrency(curPlayer, rewardCurrency) #¾­Ñé playerControl = PlayerControl.PlayerControl(curPlayer) playerControl.AddExp(rewardExp, isSysHint=True) #½ð±Ò addDataDict = {ChConfig.Def_Give_Reason_SonKey:"Reward"} PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, rewardMoney, ChConfig.Def_GiveMoney_HighLadder, addDataDict) #ħ»ê PlayerControl.PlayerAddZhenQi(curPlayer, rewardMohun, True, True, "HighLadder") for index in xrange(len(rewardList)): itemType, itemID, itemCount, isBind = rewardList[index] #¸øÓèÎïÆ· # Ò»°ãÎïÆ· if itemType == Def_ItemType_CommonItem: if not ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, \ [IPY_GameWorld.rptItem, IPY_GameWorld.rptAnyWhere], True): continue #PlayerControl.NotifyCode(curPlayer, "ObtainRes01", [itemID, itemCount]) # ÌØÊâ¶¨ÖÆÎïÆ· elif itemType == Def_ItemType_AppointItem: itemData = PyMapTable.GetPyMapTable("AppointItemList").GetRecord("ItemIndex", str(itemID)) if not itemData: GameWorld.ErrLog("GiveHighLadderReward()itemType=%s,ItemIndex=%s not data" % (itemType, itemID)) continue if len(itemData) != 1: GameWorld.ErrLog("GiveHighLadderReward()itemType=%s,ItemIndex=%s,recordCount=%s !=1 error" % \ (itemType, itemID, len(itemData))) continue itemDictData = itemData[0] itemDictData['IsBind'] = str(isBind) ItemControler.GivePlayerEquip(curPlayer, itemDictData, True) #PlayerControl.NotifyCode(curPlayer, "ObtainRes01", [int(itemDictData['ItemID']), itemCount]) return True ## Íæ¼ÒµÇ¼֪ͨ # @param curPlayer # @return None def OnLogin(curPlayer): tick = GameWorld.GetGameWorld().GetTick() SendHighLadderState(curPlayer, tick) return