1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package GM.Commands.SetWingJL
#
# @todo:ÉèÖóá°ò¾«Á¶
# @author hxp
# @date 2018-04-03
# @version 1.0
#
# ÏêϸÃèÊö: ÉèÖóá°ò¾«Á¶
#
#-------------------------------------------------------------------------------
#"""Version = 2018-04-03 20:00"""
#-------------------------------------------------------------------------------
 
import GameWorld
import ShareDefine
import IPY_GameWorld
import ItemCommon
import IpyGameDataPY
import PlayerWing
#---------------------------------------------------------------------
#È«¾Ö±äÁ¿
#---------------------------------------------------------------------
 
#---------------------------------------------------------------------
#Âß¼­ÊµÏÖ
## ÉèÖü¼Äܵȼ¶
#  @param curPlayer µ±Ç°Íæ¼Ò
#  @param dataList ²ÎÊýÁбí
#  @return None
#  @remarks º¯ÊýÏêϸ˵Ã÷.
def OnExec(curPlayer, dataList):
    if not dataList:
        GameWorld.DebugAnswer(curPlayer, "SetWingJL ¾«Á¶Öµ ¿ÉÑ¡[ÌØÊâ²ÄÁÏID ¸öÊý ÌØÊâ²ÄÁÏID ¸öÊý]")
        return
    
    equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
    curWing = equipPack.GetAt(ShareDefine.retWing)
    if not ItemCommon.CheckItemCanUse(curWing):
        GameWorld.DebugAnswer(curPlayer, "ûÓд©´÷³á°ò!ÎÞ·¨ÉèÖÃ!")
        return
    
    wingClassLV = curWing.GetLV()
    exp = dataList[0]
    materialDict = {}
    paramLen = len(dataList)
    if paramLen > 1:
        curWing.ClearUserAttr(ShareDefine.Def_IudetWingMaterialItemID)
        curWing.ClearUserAttr(ShareDefine.Def_IudetWingMaterialItemCount)
        for i in range(1, paramLen, 2):
            if i + 1 >= paramLen:
                break
            
            materialItemID = dataList[i]
            materialCount = dataList[i + 1]
            materialDict[materialItemID] = materialCount
            materialExp = GetWingMaterialItemExp(materialItemID, wingClassLV) * materialCount
            exp += materialExp
            
            curWing.AddUserAttr(ShareDefine.Def_IudetWingMaterialItemID, materialItemID)
            curWing.AddUserAttr(ShareDefine.Def_IudetWingMaterialItemCount, materialCount)
            
    curWing.SetUserAttr(ShareDefine.Def_IudetWingProgressValue, exp)
    PlayerWing.UpdWingColor(curPlayer, curWing, 0, exp)
    GameWorld.DebugAnswer(curPlayer, "¾«Á¶:%s,%s" % (exp, materialDict))
    return
 
def GetWingMaterialItemExp(materialItemID, wingClassLV):
    wingAttrIpyData = IpyGameDataPY.GetIpyGameData("WingRefineExp", materialItemID)
    if wingAttrIpyData == None:
        return 0
    expDict = wingAttrIpyData.GetExpMaterial()
    if not expDict:
        return 0
    if wingClassLV not in expDict:
        return 0
    return expDict[wingClassLV]