|  |  | 
 |  |  | # @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
 | 
 |  |  | 
 |  |  |     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
 | 
 |  |  |     
 | 
 |  |  |     #---初始化装备显隐 第1套*10+没有套装
 | 
 |  |  |     curPlayer.SetEquipShowSwitch(10)
 | 
 |  |  | 
 |  |  |     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_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", "on_activatepet", Def_RunQuestType_Normal)
 | 
 |  |  |     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, "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, "storedonate", "storedonate", Def_RunQuestType_Normal)
 | 
 |  |  |     return
 | 
 |  |  | 
 | 
 |  |  | def EventRespons_EquipPlus(curPlayer):
 | 
 |  |  | 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_EquipStar(curPlayer):
 | 
 |  |  |     #装备总星级变化
 | 
 |  |  |     RunQuestEvent(curPlayer, "equipstar", "equipstar", Def_RunQuestType_Normal)
 | 
 |  |  |     return
 | 
 |  |  | 
 | 
 |  |  | def EventRespons_Talk(curPlayer, eventName):
 | 
 |  |  |     #频道发言
 | 
 |  |  |     RunQuestEvent(curPlayer, "talk", eventName, Def_RunQuestType_Normal)
 | 
 |  |  |     return
 | 
 |  |  | 
 | 
 |  |  | def EventRespons_FairyDomain(curPlayer):
 | 
 |  |  |     #完成缥缈仙域事件
 | 
 |  |  |     RunQuestEvent(curPlayer, "fairydomain", 'fairydomain', Def_RunQuestType_Normal)
 | 
 |  |  |     return
 | 
 |  |  | #---------------------------------------------------------------------
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |     ExitCreateFamily(curPlayer)
 | 
 |  |  |     ExitBillboard(curPlayer)
 | 
 |  |  |     #ExitEventLock(curPlayer)
 | 
 |  |  |     #ExitShopItem(curPlayer) # 奇迹只在切地图及下线时关闭摆摊
 | 
 |  |  |     #ExitWatchShopItem(curPlayer)
 | 
 |  |  |     #npc商店退出
 | 
 |  |  |     ExitNPCShop(curPlayer)
 | 
 |  |  |     
 | 
 |  |  | 
 |  |  |     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 玩家实例
 | 
 |  |  | 
 |  |  | # @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
 | 
 |  |  |     
 | 
 |  |  |     
 | 
 |  |  | 
 |  |  |             PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
 | 
 |  |  |             return
 | 
 |  |  |         for itemID, itemCount, isBind in itemList:
 | 
 |  |  |             ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem])
 | 
 |  |  |             ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
 | 
 |  |  |     
 | 
 |  |  |     #给经验
 | 
 |  |  |     giveExp = 0
 |