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
(    ’gc@sGddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z eddƒZ\ZZZdefd„ƒYZd„Zd„Zd„Zd    „Zd
„Zed „Zed „Zd „Zd„Zd„Z d„Z!dS(iÿÿÿÿNiitDBPyCharmValueRecManagercBs,eZd„Zd„Zd„Zd„ZRS(cCsi|_i|_i|_dS(N(tcharmValueRecDicttcharmTotalDicttcharmSortListDict(tself((sVE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCharm.pyt__init__+s            cCs‚x'|jjƒD]}|j|dƒqWx'|jjƒD]}|j|dƒq:Wx'|jjƒD]}|j|dƒqdWdS(N(RtvaluestpoptNoneRR(RtrecTypet recTypeDict((sVE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCharm.pytClearCharmByType1scCs¥d}d}d}x_|jjƒD]N}xE|jƒD]7}x.|jƒD] }|d7}||jƒ7}qHWq5Wq"Wtjd|t|ƒfƒtj||ƒ|S(Ntiis'Save DBPyCharmValueRec count :%s len=%s(RRt    getBuffert    GameWorldtLogtlentCommFunct
WriteDWORD(RtsavaDatatcntDatatcntR
tofferPlayerDicttrecData((sVE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCharm.pyt GetSaveData=s
c Cs0tj||ƒ\}}tjd|ƒxt|ƒD]ò}tjƒ}|jƒ||j|||ƒ7}|j    }|j
}|j }    ||j kr¥i|j |<n|j |}
||
krËi|
|<n|
|} || |    <||j krþi|j |<n|j |} | j|dƒ|j| |<q6W|S(Ns Load DBPyCharmValueRec count :%si(Rt    ReadDWORDRRtxrangetPyGameDataStructttagDBPyCharmValueRectcleartreadDatatPlayerIDtTypet OfferPlayerIDRRtgett
CharmValue( RtdatastpostdataslenRt_RtplayerIDR    t offerPlayerIDtrecTypeDataDictRtrecTypeValueDict((sVE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCharm.pytLoadPyGameDataLs* 
               
 
 !(t__name__t
__module__RR RR,(((sVE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCharm.pyR(s             cCs…tjtjƒtjƒjtƒtj    ƒ}xOt
|j ƒƒD];}|j |ƒ}| sBt j|ƒrsqBnt|ƒqBWdS(N(tPlayerBillboardtClearBillboardByIndext ShareDefinetDef_BT_CharmWeekt PyDataManagertGetDBPyCharmValueRecManagerR tCharmValueRecType_WeekRtGetPlayerManagerRtGetActivePlayerCounttGetActivePlayerAtt PlayerControltGetIsTJGtSync_PlayerCharmInfo(t playerManagertit    curPlayer((sVE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCharm.pytDoOnWeekhs cCs…tjtjƒtjƒjtƒtj    ƒ}xOt
|j ƒƒD];}|j |ƒ}| sBt j|ƒrsqBnt|ƒqBWdS(N(R/R0R1tDef_BT_CharmDayR3R4R tCharmValueRecType_DayRR6RR7R8R9R:R;(R<R=R>((sVE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCharm.pytDoOnDayss cCst|ƒdS(N(R;(R>((sVE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCharm.pyt OnPlayerLogin~s
cCsâ|jƒ}tjƒ}||jkr+dS|jj|iƒ}|jtdƒ}|jtdƒ}|jtdƒ}tj    d|||f|ƒt
j ||t j |ƒt
j ||t j|ƒt
j ||t j|ƒdS(Nis<ºÏ·þÊ×µÇͬ²½÷ÈÁ¦°ñµ¥: charmTotal=%s,charmWeek=%s,charmDay=%s(t GetPlayerIDR3R4RR"tCharmValueRecType_TotalR5RARRR/tUpdatePlayerBillboardExR1tDef_BT_CharmTotalR2R@(R>R(tcharmValueRecMgrR+t
charmTotalt    charmWeektcharmDay((sVE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCharm.pytOnMixServerFirstLogin‚s  cCsÁtjƒ}||jkrgS|j|}||kr<gS||}||jkrei|j|<n|j|}||kr¹|jƒ}|jdtjddƒdtƒ|||<n||S(NtkeyR#tUpdTimetreverse(    R3R4RRRtsorttoperatort
attrgettertTrue(R(R    RHR*RtrecTypeSortListDictt recDataList((sVE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCharm.pytGetPlayerCharmOfferSortList‘s   
   " cCs¨tjƒ}||jkr+i|j|<n|j|}tjddƒ}tjƒj|ƒ}|rt|j|ƒnd}    |r™|||    gkr™t|kr«i|t<n|t}
d} g} xU|
j    ƒD]G\} }| ||    gkrÎ| |j
7} | j | |j
| gƒqÎqÎW| |krFt j d| || f|ƒdS|| }t jd|||| | f|ƒt||ƒ}t jd||ƒn||jkr¸i|j|<n|j|}tdt jdƒttjƒƒƒ}xìtD]ä}||kri||<n||}||kr<tjƒ||<n||}|j
}||_||_||_|j
|7_
||_|j|dƒ}||||<t jd    ||||||j
||||f    |ƒqôW|jtdƒ}|jtdƒ}|jtdƒ}tj ||t!j"|ƒtj ||t!j#|ƒtj ||t!j$|ƒ|j%j&|dƒ|szdS|s„dSt(j)|d
|gƒt*|ƒdS( sŒ Ìí¼Ó÷ÈÁ¦
    @param curPlayer: Ôö¼Ó÷ÈÁ¦µÄÍæ¼ÒʵÀý£¬¿ÉÄÜΪNone
    @param offerPlayerID: ÷ÈÁ¦¹±Ï×Íæ¼ÒID
    @param addValue: Ôö¼Ó÷ÈÁ¦Öµ
    tCharmCfgiisF½ñÈÕ·Ç×Ô¼º»ò°éÂÂÔùËÍ»ñµÃ÷ÈÁ¦ÖµÒÑ´ïÉÏÏÞ! dayFromOtherTotal=%s >= %s, %sNsAaddValue=%s,canAddToday=%s,dayCharmMax=%s,dayFromOtherTotal=%s,%ssʵ¼ÊÔö¼Ó: addValue=%ss2090-01-01 00:00:00stÔö¼Ó÷ÈÁ¦¼Ç¼: playerID=%s,recType=%s,offerPlayerID=%s,addValue=%s,updValue=(%s-%s),updTime=%s,typeTotalValue=(%s-%s)tAddCharm(+R3R4Rt IpyGameDataPYt
GetFuncCfgtGetDBPyCoupleManagert    GetCouplet GetCoupleIDRAtitemsR#tappendRRtDebugLogtminRtmaxtChangeTimeStrToNumtintttimetCharmValueRecTypeListRRRR R!RNR"RER5R/RFR1RGR2R@RRRR9t
NotifyCodeR;(R>R(R)taddValuetisNotifyRHR*t dayCharmMaxtcoupletcoupleIDtdayOfferPlayerDicttdayFromOtherTotaltdayFromOtherListtoIDRt canAddTodayR+tupdTimeR    RtcurValuettypeTotalValueRIRJRK((sVE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCharm.pyRX§sz    
       
     (   
 
                        1
cCs¦|jƒ}tjƒ}||jkr2| r2dS|jj|iƒ}tjƒ}|jtdƒ|_|jt    dƒ|_
|jt dƒ|_ t j||ƒdS(Ni(RDR3R4RR"tChPyNetSendPackttagGCPlayerCharmValueInfoREtCharmValueTotalR5tCharmValueWeekRAt CharmValueDayt NetPackCommont SendFakePack(R>tisForceR(RHR+t
clientPack((sVE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCharm.pyR;ùs   c Cstjƒj|ƒ}|j}|j}t|jdƒ}t||ƒ}tj    ƒ}||_||_g|_
x‚t || ƒD]p\}    }
tj ƒ} |    | _ |
j| _tj| jƒ| _t| jƒ| _|
j| _|j
j| ƒq€Wt|j
ƒ|_tj||ƒdS(Niÿ(RR6tGetPlayerByIndexRt    QueryTypeRat
QueryCountRVRut tagGCCharmOfferBillboardDataListtOfferBillboardDataListt    enumeratettagGCCharmOfferBillboardDatat
OrderIndexR!t PlayerSocialtGetSocialPlayerNamet
PlayerNameRtNameLenR#R_t    DataCountRzR{( tindext
clientDatattickR>t tagPlayerIDt    queryTypet
queryCounttsortListR}R=Rt billboardData((sVE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCharm.pytOnCharmOfferBillboardQuerys(                            cCs’tjƒj|ƒ}|jƒ}d}tjƒ}||jkrl|jj|iƒ}|jtdƒ}nt    j
|dd|g|j ƒƒdS(NitCharmt    CharmLVUp( RR6R~RDR3R4RR"RER9tMapServer_QueryPlayer_DoLogictGetID(R‹RŒRR>R(t
totalCharmRHR+((sVE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCharm.pyt OnCharmLVUp-s  "cCs©tjdƒtjƒ}i|_i|_i|_tjƒ}xRt|j    ƒƒD]>}|j
|ƒ}| sSt j |ƒr„qSnt |tƒqSWtj|dƒdS(Ns
GMÇå¿Õ÷ÈÁ¦s GMÇå¿Õ÷ÈÁ¦OK(RRR3R4RRRR6RR7R8R9R:R;RSt DebugAnswer(RHR<R=R>((sVE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCharm.pyt GMClearCharm:s               cCsmtjd||||fƒi}tjƒ}xUt|jƒƒD]A}|j|ƒ}| sBtj|ƒrsqBn|||jƒ<qBWt    d|ƒ}t
|ƒ|krã|t
|ƒ}    x(tdd|    ƒD]}
d||
<qÌWnxs|j ƒD]e\} }xCtdd|ƒD].} t j||ƒ} t|| | | tƒqW|rðt|ƒqðqðWtj|dƒdS(NsBGMËæ»úÔö¼Ó÷ÈÁ¦Êý¾Ý: playerCount=%s,offerCount=%s,randA=%s,randB=%sièiÐsGMËæ»úÔö¼Ó÷ÈÁ¦Êý¾ÝOK(RRR6RR7R8R9R:RDRaRRR^trandomtrandintRXtFalseR;Rš(R>t playerCountt
offerCounttrandAtrandBt
playerDictR<R=tplayert    lackCountt testPlayerIDR(R)Rh((sVE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCharm.pyt GMRandCharmJs* i("RR1RYR9RuRR/RzR3R†RRQRœRetrangeRfRER5RAtobjectRR?RBRCRLRVRSRXRžR;R“R™R›R§(((sVE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCharm.pyt<module>s4              @                       R