| | |
| | | # @change: "2013-09-18 17:00" Alee 退出锁定退出交易
|
| | | # @change: "2013-09-23 19:30" Alee 红名提示修改
|
| | | # @change: "2013-11-15 20:20" hxp 关闭07 3A购买背包封包功能,增加背包成功系统提示
|
| | | # @change: "2013-11-27 20:30" hxp 修改结束摆摊状态事件单独处理,不在结束事件中处理
|
| | | # @change: "2013-12-10 14:00" hxp 修改查看摆摊状态事件单独处理,不在结束事件中处理
|
| | | # @change: "2013-12-12 14:30" hxp 增加钻石购买背包计费点事件同步
|
| | | # @change: "2013-12-13 12:20" hxp 修改首登物品绑定设置
|
| | | # @change: "2013-12-27 16:00" Alee 删除多余代码
|
| | |
| | | import PlayerControl
|
| | | import FunctionNPCCommon
|
| | | import FBLogic
|
| | | import PlayerShopItem
|
| | | import ItemControler
|
| | | import ItemCommon
|
| | | import QuestCommon
|
| | |
| | | import PlayerExpandPackCfgMgr
|
| | | import EventReport
|
| | | import PlayerCoat
|
| | | import PlayerSuccess
|
| | | import PlayerGatherSoul
|
| | | import PlayerArrestTask
|
| | | import PlayerRune
|
| | | import IpyGameDataPY
|
| | |
| | | EventLogic(curPlayer, sendPack_EventNPCID, tick)
|
| | | return
|
| | |
|
| | | #// C1 06 跨服NPC对话 #tagCMCrossNPCTalk
|
| | | #
|
| | | #struct tagCMCrossNPCTalk
|
| | | #{
|
| | | # tagHead Head;
|
| | | # WORD ObjID;
|
| | | # DWORD NPCID;
|
| | | # WORD PosX;
|
| | | # WORD PosY;
|
| | | #};
|
| | | def OnCrossNPCTalk(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | |
| | | objID = clientData.ObjID
|
| | | npcID = clientData.NPCID
|
| | | #posX = clientData.PosX
|
| | | #posY = clientData.PosY
|
| | | if GameWorld.IsCrossServer():
|
| | | return
|
| | | |
| | | lastTick = curPlayer.GetDictByKey("CrossNPCTalkTick")
|
| | | if tick - lastTick < 2000:
|
| | | return
|
| | | curPlayer.SetDict("CrossNPCTalkTick", tick)
|
| | | |
| | | npcData = GameWorld.GetGameData().FindNPCDataByID(npcID)
|
| | | if not npcData:
|
| | | GameWorld.ErrLog("跨服NPCID不存在! npcID=%s" % npcID)
|
| | | return
|
| | | |
| | | # 目前暂支持跨服采集
|
| | | if npcData.GetType() not in [IPY_GameWorld.ntCollection, IPY_GameWorld.ntMissionCollect]:
|
| | | return
|
| | | |
| | | collectNPCIpyData = IpyGameDataPY.GetIpyGameData("CollectNPC", npcID)
|
| | | if collectNPCIpyData:
|
| | | if not NPCCommon.CheckCanCollectByNPCID(curPlayer, npcID, collectNPCIpyData):
|
| | | return
|
| | | |
| | | msgDict = {"PlayerID":curPlayer.GetPlayerID(), "ObjID":objID, "NPCID":npcID}
|
| | | GameWorld.SendMsgToCrossServer(ShareDefine.ClientServerMsg_CollectNPC, msgDict)
|
| | | |
| | | return
|
| | |
|
| | | def ClientServerMsg_CollectNPC(curPlayer, msgData, serverGroupID, tick):
|
| | | ## 收到子服同步的采集NPC
|
| | | objID = msgData["ObjID"]
|
| | | npcID = msgData["NPCID"]
|
| | | curNPC = GameWorld.FindNPCByID(objID)
|
| | | if not curNPC:
|
| | | return
|
| | | if npcID != curNPC.GetNPCID():
|
| | | GameWorld.ErrLog("采集跨服NPC错误!npcID=%s != curNPCID=%s" % (npcID, curNPC.GetNPCID()))
|
| | | return
|
| | | EventLogic(curPlayer, objID, tick)
|
| | | return
|
| | |
|
| | | ##客户端//08 01封包响应 自定义函数: 事件处理
|
| | | #@param curPlayer 当前玩家
|
| | | #@param eventNPCID 事件NPCID
|
| | |
| | | return
|
| | |
|
| | | curPlayer.SetActionObj(curNPC)
|
| | | PlayerControl.ChangePlayerAction(curPlayer, IPY_GameWorld.paNull)
|
| | | |
| | | if NPCCommon.OnCollectNPCBegin(curPlayer, curNPC, tick):
|
| | | return
|
| | |
|
| | | prepareTime = FBLogic.GetFBPrepareTime(curPlayer, curNPC)
|
| | |
|
| | |
| | | curPlayer.SetMP(curPlayer.GetMaxMP())
|
| | |
|
| | | #---给予玩家新手物品---
|
| | | itemControler = ItemControler.PlayerItemControler(curPlayer)
|
| | |
|
| | | firstLoginGiveItemList = ReadChConfig.GetEvalChConfig("FirstLogin_GiveItem")
|
| | | for itemID, itemCount, itemBind in firstLoginGiveItemList:
|
| | | if itemID == 0:
|
| | | continue
|
| | | giveItem = ItemCommon.CreateSingleItem(itemID)
|
| | | |
| | | if not giveItem:
|
| | | GameWorld.ErrLog('__FirstLoginOnEnter giveItemErr = %s'%(itemID), playerID)
|
| | | continue
|
| | | |
| | | if itemCount > 0:
|
| | | ItemControler.SetItemCount(giveItem, itemCount, curPlayer.GetPlayerID(), curPlayer.GetAccID(), |
| | | curPlayer.GetPlayerName())
|
| | | |
| | | ItemControler.SetItemIsBind(giveItem, itemBind)
|
| | | |
| | | if not itemControler.PutInItem(IPY_GameWorld.rptItem, giveItem):
|
| | | GameWorld.ErrLog('__FirstLoginOnEnter packFull, giveItemErr = %s'%(itemID), playerID)
|
| | | giveItem.Clear()
|
| | | continue
|
| | | |
| | | #---初始化装备显隐---
|
| | | curPlayer.SetEquipShowSwitch(IPY_GameWorld.revClothesCoat|IPY_GameWorld.revWeaponCoat|IPY_GameWorld.revMask)
|
| | | #---初始化装备显隐 第1套*10+没有套装
|
| | | curPlayer.SetEquipShowSwitch(10)
|
| | | PlayerControl.SetFaceEquipIndex(curPlayer, 11012014)
|
| | |
|
| | | #默认触发一次功能开启
|
| | | if curPlayer.GetLV() == 1:
|
| | |
| | | RunQuestEvent(curPlayer, 'on_deactive', missionID, Def_RunQuestType_RunAll)
|
| | | return
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | ##任务触发器_OnCoin 换取金钱事件
|
| | | #@param curPlayer 玩家实例
|
| | | #@return 返回值无意义
|
| | | #@remarks 任务触发器_OnCoin 换取金钱事件
|
| | | def EventResponse_OnCoin(curPlayer):
|
| | | RunQuestEvent(curPlayer, 'on_coin', 'on_coin', Def_RunQuestType_RunAll)
|
| | | curPlayer.DataServer_CheckPrizeItem()
|
| | | return
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | ##任务触发器_OnDig 挖宝进度条结束后触发
|
| | |
| | | RunQuestEvent(curPlayer, "on_trialtowercnt", cnt, Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | ## 通关天星塔第X层
|
| | | # @param curPlayer 玩家实例
|
| | | # @param eventName |
| | | # @return None
|
| | | def EventRespons_SkyTowerCnt(curPlayer, cnt):
|
| | | RunQuestEvent(curPlayer, "skytowerpass", cnt, Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | ##护送X次美女
|
| | | # @param curPlayer 玩家实例
|
| | | # @param eventName 事件名
|
| | |
| | | RunQuestEvent(curPlayer, "on_goldinvest", "on_goldinvest", Def_RunQuestType_Normal)
|
| | | RunQuestEvent(curPlayer, "on_goldinvest", investType, Def_RunQuestType_Normal)
|
| | | return
|
| | | |
| | | def EventRespons_OnBuyTeHuiItem(curPlayer, shopID, itemShopIndex):
|
| | | # 购买特惠商店物品
|
| | | RunQuestEvent(curPlayer, "on_buy_tehuiitem", "on_buy_tehuiitem", Def_RunQuestType_Normal)
|
| | | RunQuestEvent(curPlayer, "on_buy_tehuiitem", shopID, Def_RunQuestType_Normal)
|
| | | RunQuestEvent(curPlayer, "on_buy_tehuiitem", "%s_%s" % (shopID, itemShopIndex), Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_OnActivatePet(curPlayer, petID):
|
| | | # 激活宠物
|
| | |
| | | RunQuestEvent(curPlayer, "on_activatepet", petID, Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_OnActiveMagicWeapon(curPlayer, mwID):
|
| | | # 激活法宝
|
| | | RunQuestEvent(curPlayer, "on_activemagicweapon", mwID, Def_RunQuestType_Normal)
|
| | | RunQuestEvent(curPlayer, "on_activemagicweaponex", mwID, Def_RunQuestType_RunAll)
|
| | | RunQuestEvent(curPlayer, "on_activemagicweaponex", 0, Def_RunQuestType_RunAll)
|
| | | return
|
| | |
|
| | | def EventRespons_MagicWeaponLV(curPlayer, mwID, lv):
|
| | | # 法宝解锁进度
|
| | | RunQuestEvent(curPlayer, "magicweaponlv", '%s_%s'%(mwID, lv), Def_RunQuestType_RunAll)
|
| | | return
|
| | |
|
| | | def EventRespons_MagicWeaponFBPassLV(curPlayer, mwID, lv):
|
| | | # 魔族法宝关卡进度
|
| | | RunQuestEvent(curPlayer, "mwfbpasslv", '%s_%s'%(mwID, lv), Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_SuccessFinish(curPlayer, succID):
|
| | |
| | | RunQuestEvent(curPlayer, "passiveset", "passiveset", Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_PlusGodWeapon(curPlayer):
|
| | | def EventRespons_PlusGodWeapon(curPlayer, weaponType):
|
| | | #神兵锤炼
|
| | | RunQuestEvent(curPlayer, "plusgodweapon", "plusgodweapon", Def_RunQuestType_Normal)
|
| | | RunQuestEvent(curPlayer, "plusgodweapon", weaponType, Def_RunQuestType_Normal)
|
| | | return
|
| | | def EventRespons_GodWeaponUp(curPlayer, weaponType, attrLV):
|
| | | # 神兵升级
|
| | | RunQuestEvent(curPlayer, "godweaponup", "%s_%s"%(weaponType, attrLV), Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_RefineItem(curPlayer, alchemyLV):
|
| | | def EventRespons_RefineItem(curPlayer, alchemyLV, alchemyItemID):
|
| | | #八卦炉炼丹
|
| | | RunQuestEvent(curPlayer, "refineitem", alchemyLV, Def_RunQuestType_Normal)
|
| | | RunQuestEvent(curPlayer, "refineitem", "refineitem", Def_RunQuestType_Normal)
|
| | | #这两个接口策划暂时不用,先注释,使用新的连某个丹药接口
|
| | | #RunQuestEvent(curPlayer, "refineitem", alchemyLV, Def_RunQuestType_Normal)
|
| | | #RunQuestEvent(curPlayer, "refineitem", "refineitem", Def_RunQuestType_Normal)
|
| | | RunQuestEvent(curPlayer, "refineitem", alchemyItemID, Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_RefineStoveUp(curPlayer, alchemyLV):
|
| | |
| | | RunQuestEvent(curPlayer, "realmup", realmlv, Def_RunQuestType_RunAll)
|
| | | return
|
| | |
|
| | | def EventRespons_MWSoulActive(curPlayer, soulid):
|
| | | #法宝之魂激活
|
| | | RunQuestEvent(curPlayer, "mwsoulactive", soulid, Def_RunQuestType_RunAll)
|
| | | return
|
| | |
|
| | | def EventRespons_PassQueenRelecs(curPlayer, lineID, grade):
|
| | | #X级通关X层娲皇遗迹
|
| | |
| | | RunQuestEvent(curPlayer, "trialexange", costItemID, Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_EquipByPlace(curPlayer, equipplace):
|
| | | def EventRespons_EquipByPlace(curPlayer, itemClassLV, equipplace):
|
| | | #穿戴某部位装备(非时效)
|
| | | RunQuestEvent(curPlayer, "equipbyplace", equipplace, Def_RunQuestType_Normal)
|
| | | RunQuestEvent(curPlayer, "equipbyplace", '%s_%s'%(itemClassLV, equipplace), Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_CompoundEquip(curPlayer, itemColor, itemQuality):
|
| | |
| | | def EventRespons_StoreDonate(curPlayer):
|
| | | #捐献仙盟装备
|
| | | RunQuestEvent(curPlayer, "storedonate", "storedonate", Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_EquipPlus(curPlayer, classLV, partPlusLV):
|
| | | #强化等级变化
|
| | | RunQuestEvent(curPlayer, "equipplus", "equipplus", Def_RunQuestType_Normal)
|
| | | RunQuestEvent(curPlayer, "equipplus", '%s_%s'%(classLV, partPlusLV), Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_EquipPlusEvolve(curPlayer, nextEvolveLV):
|
| | | #强化进化
|
| | | RunQuestEvent(curPlayer, "equipplusevolve", "equipplusevolve", Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_Talk(curPlayer, eventName):
|
| | | #频道发言
|
| | | RunQuestEvent(curPlayer, "talk", eventName, Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_FairyDomain(curPlayer, eventType):
|
| | | #完成缥缈仙域事件
|
| | | RunQuestEvent(curPlayer, "fairydomain", 'fairydomain', Def_RunQuestType_Normal)
|
| | | RunQuestEvent(curPlayer, "fairydomain", eventType, Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_AroundMission(curPlayer, missionType):
|
| | | #完成跑环任务
|
| | | RunQuestEvent(curPlayer, "aroundfinish", missionType, Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_Pray(curPlayer, prayType):
|
| | | #完成祈愿
|
| | | RunQuestEvent(curPlayer, "pray", prayType, Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_ThinkMagicWeapon(curPlayer):
|
| | | #感应法宝
|
| | | RunQuestEvent(curPlayer, "thinkfabao", 'thinkfabao', Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_ElementSkill(curPlayer, mainSkillID, skillElementType, updSelectSkillLV):
|
| | | #激活五行专精 主技能ID_专精类型_激活等级.xml
|
| | | RunQuestEvent(curPlayer, "elementskill", '%s_%s_%s'%(mainSkillID, skillElementType, updSelectSkillLV), Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_EquipStarUp(curPlayer):
|
| | | #装备升星
|
| | | RunQuestEvent(curPlayer, "equipstarup", 'equipstarup', Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_InlayStone(curPlayer):
|
| | | #宝石镶嵌
|
| | | RunQuestEvent(curPlayer, "inlaystone", 'inlaystone', Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_StoneChange(curPlayer):
|
| | | # 宝石变更
|
| | | RunQuestEvent(curPlayer, "stonechange", 'stonechange', Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_EquipItem(curPlayer):
|
| | | #穿脱装备
|
| | | RunQuestEvent(curPlayer, "equipitem", 'equipitem', Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_SkillUp(curPlayer, FuncType, skillLV):
|
| | | #升级技能
|
| | | RunQuestEvent(curPlayer, "skillup", FuncType, Def_RunQuestType_Normal)
|
| | | RunQuestEvent(curPlayer, "skillup", '%s_%s' % (FuncType, skillLV), Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_LingGenQualityUP(curPlayer, attrID, qualityLV):
|
| | | #灵根升品
|
| | | RunQuestEvent(curPlayer, "linggenqualityup", '%s_%s' % (attrID, qualityLV), Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_AddPoint(curPlayer):
|
| | | #灵根加点
|
| | | RunQuestEvent(curPlayer, "addpoint", '0', Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_ActivityAward(curPlayer, awardIndex):
|
| | | #活跃领奖
|
| | | RunQuestEvent(curPlayer, "activityaward", awardIndex, Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_HorsePetBoss(curPlayer):
|
| | | #参加骑宠BOSS
|
| | | RunQuestEvent(curPlayer, "horsepetboss", 'horsepetboss', Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_LingGenReset(curPlayer):
|
| | | #灵根重置
|
| | | RunQuestEvent(curPlayer, "linggenreset", 'linggenreset', Def_RunQuestType_Normal)
|
| | | return
|
| | | #---------------------------------------------------------------------
|
| | |
|
| | |
| | | curPlayer.SetForbiddenResetItem(0)
|
| | | ExitCompose(curPlayer)
|
| | | ExitWarehouse(curPlayer)
|
| | | ExitRepair(curPlayer)
|
| | | #ExitRepair(curPlayer)
|
| | | ExitCreateFamily(curPlayer)
|
| | | ExitBillboard(curPlayer)
|
| | | #ExitEventLock(curPlayer)
|
| | | #ExitShopItem(curPlayer) # 奇迹只在切地图及下线时关闭摆摊
|
| | | #ExitWatchShopItem(curPlayer)
|
| | | #npc商店退出
|
| | | ExitNPCShop(curPlayer)
|
| | |
|
| | | PlayerTrade.LeaveTrade(curPlayer, 0)
|
| | | #PlayerTrade.LeaveTrade(curPlayer, 0)
|
| | | # 清除py自定义状态
|
| | | ClearPyPlayerAction(curPlayer)
|
| | | #ClearPyPlayerAction(curPlayer)
|
| | |
|
| | | #调用底层结束事件
|
| | | #避免策划变更,导致其他退出锁定事件使任务1未接取就退出锁定
|
| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_PyPlayerAction, 0)
|
| | | return
|
| | |
|
| | |
|
| | | ##结束摆摊事件
|
| | | #@param curPlayer 玩家实例
|
| | | #@return 返回值无意义
|
| | | #@remarks 自定义函数:结束摆摊事件
|
| | | def ExitShopItem(curPlayer):
|
| | | GameWorld.DebugLog("ExitShopItem", curPlayer.GetPlayerID())
|
| | | playerShop = curPlayer.GetPlayerShop()
|
| | | #在摆摊状态
|
| | | if playerShop.GetIsStartShop():
|
| | | PlayerShopItem.DoExitShop(curPlayer , curPlayer.GetPlayerShop())
|
| | | |
| | | return
|
| | | #---------------------------------------------------------------------
|
| | | ##结束查看摆摊事件
|
| | | #@param curPlayer 玩家实例
|
| | | #@return 返回值无意义
|
| | | #@remarks 自定义函数:结束查看摆摊事件
|
| | | def ExitWatchShopItem(curPlayer):
|
| | | curPlayerShop = curPlayer.GetPlayerShop()
|
| | | |
| | | if not curPlayerShop.GetIsWatchingShop():
|
| | | return
|
| | |
|
| | | openShopPlayer = curPlayer.GetActionPlayer()
|
| | | __DoExitWatchShopItem(curPlayer , openShopPlayer)
|
| | | |
| | | curPlayerShop.SetIsWatchingShop(0) |
| | | return
|
| | | #---------------------------------------------------------------------
|
| | | ##结束查看摆摊事件
|
| | | #@param curPlayer 玩家实例
|
| | | #@return 返回值无意义
|
| | | #@remarks 自定义函数:结束查看摆摊事件
|
| | | def __DoExitWatchShopItem(curPlayer , openShopPlayer):
|
| | | |
| | | if openShopPlayer == None:
|
| | | return
|
| | | |
| | | shop = openShopPlayer.GetPlayerShop()
|
| | | #没有开店
|
| | | if not shop.GetIsStartShop():
|
| | | return
|
| | | |
| | | #商店删除这个玩家
|
| | | shop.DeleteWatchPlayer(curPlayer.GetPlayerID())
|
| | | return
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | ##结束事件锁
|
| | | #@param curPlayer 玩家实例
|
| | | #@return 返回值无意义
|
| | | #@remarks 自定义函数:结束事件锁
|
| | | #===============================================================================
|
| | | # def ExitEventLock(curPlayer):
|
| | | # if not curPlayer.GetHaveSetEventLock() :
|
| | | # return
|
| | | # |
| | | # #在摆摊状态不解锁,奇迹摆摊物品解锁只在切地图/下线/玩家主动结束摆摊情况下解锁
|
| | | # playerShop = curPlayer.GetPlayerShop()
|
| | | # if playerShop.GetIsStartShop():
|
| | | # return
|
| | | # |
| | | # #获得玩家物品管理器
|
| | | # ItemManager = curPlayer.GetItemManager()
|
| | | # #获得背包
|
| | | # curPack = ItemManager.GetPack(IPY_GameWorld.rptItem)
|
| | | # for i in range(curPack.GetCount()):
|
| | | # item = curPack.GetAt(i)
|
| | | # if item == None or item.IsEmpty():
|
| | | # continue
|
| | | # |
| | | # if not item.GetIsEventLocked():
|
| | | # continue
|
| | | # |
| | | # #离开事件锁
|
| | | # item.SetIsEventLocked(False)
|
| | | #===============================================================================
|
| | | |
| | | #---------------------------------------------------------------------
|
| | | ##结束查看排行榜
|
| | | #@param curPlayer 玩家实例
|
| | |
| | | # @remarks 自定义函数, 读数据库任务删除表, 删除任务
|
| | | def __DoLogic_DeleteMission(curPlayer, curMission):
|
| | | missionID = curMission.GetMissionID()
|
| | | |
| | | GameWorld.Log("__DoLogic_DeleteMission---%s"%missionID, curPlayer.GetID())
|
| | | delMissionData = GameWorld.GetGameData().GetMissionDeleteByID(missionID)
|
| | | #任务删除表中无此任务
|
| | | if not delMissionData:
|
| | |
| | | # @return 返回值无意义
|
| | | # @remarks 客户端封包响应 //0D 0C 材料加工#tagCMaterialCompound
|
| | | def StuffMachining(index, tick):
|
| | | # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | # |
| | | # materialCompoundPack = IPY_GameWorld.IPY_CMaterialCompound()
|
| | | # itemIndex = materialCompoundPack.GetItemIndex()
|
| | | # |
| | | # curItemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
| | | # curItem = curItemPack.GetAt(itemIndex)
|
| | | #
|
| | | # #类型不符合
|
| | | # if not ItemCommon.CheckItemByType(curItem, ChConfig.Def_Type_Machining_Stuff):
|
| | | # PlayerControl.NotifyCode(curPlayer, "GeRen_jin_287294")
|
| | | # return
|
| | | # |
| | | # #[金钱,金钱类型]
|
| | | # curEffMoney = curItem.GetEffectByIndex(1)
|
| | | # useMoney = curEffMoney.GetEffectValue(0)
|
| | | # useMoneyType = curEffMoney.GetEffectValue(1)
|
| | | # |
| | | # #判断金钱
|
| | | # if not PlayerControl.HaveMoney(curPlayer, useMoneyType, useMoney):
|
| | | # return
|
| | | #
|
| | | # #[等级,数量]
|
| | | # curEffInfo = curItem.GetEffectByIndex(0)
|
| | | # curEffectID = curEffInfo.GetEffectID()
|
| | | # curItemLv = curEffInfo.GetEffectValue(0)
|
| | | # useCount = curEffInfo.GetEffectValue(1)
|
| | | # |
| | | # #---数量验证---
|
| | | # hasCount = curItem.GetCount()
|
| | | # if useCount > hasCount:
|
| | | # PlayerControl.NotifyCode(curPlayer , "GeRen_jin_293296")
|
| | | # return
|
| | | # |
| | | # #查找更高一级的材料
|
| | | # findItemData = ItemCommon.FindItemFromDataByEffValue(ChConfig.Def_Type_Machining_Stuff, curEffectID, curItemLv+1)
|
| | | # |
| | | # #已经是顶级材料
|
| | | # if findItemData == None:
|
| | | # PlayerControl.NotifyCode(curPlayer, "GeRen_jin_708106")
|
| | | # return
|
| | | # |
| | | # #---创建物品,放入背包,失败则要删除物品---
|
| | | # newItem = ItemCommon.CreateSingleItem(findItemData.GetItemTypeID())
|
| | | # ItemControler.SetItemIsBind(newItem, curItem.GetIsBind())
|
| | | # |
| | | # isBind = newItem.GetIsBind()
|
| | | # |
| | | # newItemTypeID = newItem.GetItemTypeID()
|
| | | # newItemCount = newItem.GetCount()
|
| | | # |
| | | # #是否成功放入背包
|
| | | # itemControl = ItemControler.PlayerItemControler(curPlayer)
|
| | | # if not itemControl.PutInItem(IPY_GameWorld.rptItem, newItem):
|
| | | # PlayerControl.NotifyCode(curPlayer, "GeRen_jin_650657")
|
| | | # newItem.Clear()
|
| | | # return
|
| | | # |
| | | # curItemID = curItem.GetItemTypeID() #合成材料ID
|
| | | # |
| | | # #---扣钱物品并记录---
|
| | | # PlayerControl.PayMoney(curPlayer, useMoneyType, useMoney)
|
| | | # |
| | | # ItemCommon.DelItem(curPlayer, curItem, useCount, True, 'ComposeChip')
|
| | | # |
| | | # #生成物品
|
| | | # PlayerControl.NotifyCode(curPlayer, 'GeRen_jin_557507', [newItemTypeID, newItemCount])
|
| | | # |
| | | # #手续费流向记录
|
| | | # PlayerControl.DataServerMoneyLog(curPlayer, useMoneyType, 650, par = useMoney, msg = "poundage")
|
| | | # |
| | | # |
| | | # DataRecordPack.DR_StuffMachining(curPlayer, newItemTypeID, newItemCount, isBind)
|
| | | return
|
| | |
|
| | |
|
| | |
| | | # 符印交换
|
| | | if PlayerRune.SwitchRune(curPlayer, pack_SrcBackpack, pack_DesBackPack, pack_SrcIndex, pack_DestIndex):
|
| | | return
|
| | | |
| | | # 聚魂交换
|
| | | if PlayerGatherSoul.SwitchGatherSoul(curPlayer, pack_SrcBackpack, pack_DesBackPack, pack_SrcIndex, pack_DestIndex):
|
| | | return
|
| | |
|
| | | #ʱװ
|
| | | if PlayerCoat.SwitchCoat(curPlayer, pack_SrcBackpack, pack_DesBackPack, pack_SrcIndex, pack_DestIndex):
|
| | |
| | | if hasGotAward:
|
| | | GameWorld.DebugLog('领取环任务每轮奖励 已奖励 类型 %s'%taskType)
|
| | | return
|
| | | runTaskAwardDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskAward')
|
| | | if taskType not in runTaskAwardDict:
|
| | | GameWorld.DebugLog('领取环任务每轮奖励 RunTaskAward 没有配置类型的奖励 类型 %s'%taskType)
|
| | | return
|
| | | moneyNum = 0
|
| | | specialAwardDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskAward', 2)
|
| | | if taskType in specialAwardDict:
|
| | | rate, moneyCnt = specialAwardDict[taskType]
|
| | | if GameWorld.CanHappen(rate):
|
| | | moneyNum = moneyCnt
|
| | | if taskType == QuestCommon.Def_Mission_Type_RunDaily:
|
| | | PlayerControl.WorldNotify(0, 'CoinTaskReward', [curPlayer.GetName()])
|
| | | moneyType, minMoney, maxMoney = runTaskAwardDict[taskType]
|
| | | if not moneyNum:
|
| | | moneyNum = random.randint(minMoney, maxMoney)
|
| | | if moneyType == ShareDefine.TYPE_Price_Family_Contribution:
|
| | | PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, moneyNum, True, ShareDefine.Def_AddFAVReason_DoFamilyMisson)
|
| | | else:
|
| | | addDataDict = {ChConfig.Def_Give_Reason_SonKey:"Run"}
|
| | | PlayerControl.GiveMoney(curPlayer, moneyType, moneyNum, ChConfig.Def_GiveMoney_Mission, addDataDict, False)
|
| | | #物品奖励
|
| | | itemList = []
|
| | | itemAwardDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskAward', 3, {})
|
| | | if str(taskType) in itemAwardDict:
|
| | | itemList = itemAwardDict[str(taskType)]
|
| | | # 检查背包
|
| | | needSpace = len(itemList)
|
| | | packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
|
| | | if needSpace > packSpace:
|
| | | PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
|
| | | return
|
| | | for itemID, itemCount, isBind in itemList:
|
| | | ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
|
| | |
|
| | | #给经验
|
| | | giveExp = 0
|
| | | expAwardDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskAward', 4, {})
|
| | | if str(taskType) in expAwardDict:
|
| | | reExp = PlayerControl.GetPlayerReExp(curPlayer)
|
| | | giveExp = eval(expAwardDict[str(taskType)])
|
| | | PlayerControl.PlayerControl(curPlayer).AddExp(giveExp)
|
| | | |
| | | #给钱
|
| | | moneyType = 0
|
| | | moneyNum = 0
|
| | | runTaskMoneyAwardDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskAward')
|
| | | if taskType in runTaskMoneyAwardDict:
|
| | | specialAwardDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskAward', 2, {})
|
| | | if taskType in specialAwardDict:
|
| | | rate, moneyCnt = specialAwardDict[taskType]
|
| | | if GameWorld.CanHappen(rate):
|
| | | moneyNum = moneyCnt
|
| | | if taskType == QuestCommon.Def_Mission_Type_RunDaily:
|
| | | PlayerControl.WorldNotify(0, 'CoinTaskReward', [curPlayer.GetName()])
|
| | | moneyType, minMoney, maxMoney = runTaskMoneyAwardDict[taskType]
|
| | | if not moneyNum:
|
| | | moneyNum = random.randint(minMoney, maxMoney)
|
| | | if moneyType == ShareDefine.TYPE_Price_Family_Contribution:
|
| | | PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, moneyNum, True, ShareDefine.Def_AddFAVReason_DoFamilyMisson)
|
| | | else:
|
| | | addDataDict = {ChConfig.Def_Give_Reason_SonKey:"Run"}
|
| | | PlayerControl.GiveMoney(curPlayer, moneyType, moneyNum, ChConfig.Def_GiveMoney_Mission, addDataDict, False)
|
| | | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskAwardRecord % taskType, moneyNum)
|
| | | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskAwardState % taskType, 1)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskAwardRecord % taskType, moneyNum)
|
| | | GameWorld.DebugLog('领取环任务每轮奖励成功 moneyType=%s, moneyNum=%s'%(moneyType, moneyNum))
|
| | | GameWorld.DebugLog('领取环任务每轮奖励成功 moneyType=%s, moneyNum=%s, itemList=%s, giveExp=%s'%(moneyType, moneyNum, itemList, giveExp))
|
| | |
|
| | | #通知客户端
|
| | | NotifyRunEndAward(curPlayer, taskType)
|