#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
#-------------------------------------------------------------------------------
|
#
|
##@package GMT_AddPersonalCompensation.py
|
#
|
# @todo:Ìí¼ÓÈ«·þ²¹³¥
|
# @author xmnathan
|
# @date 2014-09-29 13:00
|
# @version 1.4
|
#
|
# @change: "2014-10-24 17:30" hxp Ôö¼Ó²¹³¥Áìȡʱ¼äÅжϣ¬ÒѹýÆÚ·µ»ØGM¹¤¾ßʱ¼ä´íÎó
|
# @change: "2015-06-19 17:00" hxp ÎÞÎïÆ·¿ÉÌí¼Ó²¹³¥
|
# @change: "2015-11-06 20:30" hxp ÎÞÎïÆ·¿ÉÌí¼Ó²¹³¥
|
# @change: "2017-04-26 16:30" hxp ÓÅ»¯´úÂ룻װ±¸»ù´¡ÊôÐÔ±ÈÀý¡¢Á¶»¯µÈ¼¶Ö§³Ö£»×°±¸UserdataÐÅÏ¢Ö±½Ó¸´ÖÆÖ§³Ö;
|
#
|
# ÏêϸÃèÊö: Ìí¼Ó¸öÈ˲¹³¥
|
#
|
#---------------------------------------------------------------------
|
#"""Version = 2015-11-06 20:30"""
|
#---------------------------------------------------------------------
|
|
#µ¼Èë
|
import DataRecordPack
|
import PlayerCompensation
|
import GameWorld
|
import GMCommon
|
import uuid
|
import ChConfig
|
#---------------------------------------------------------------------
|
|
|
## ÇåÀí×Öµä
|
# @param gmCmdDict µ±Ç°Íæ¼Ò
|
# @return None
|
def ClearEmptyFromDict(gmCmdDict):
|
keysList = gmCmdDict.keys()[::]
|
for key in keysList:
|
if gmCmdDict[key] == '':
|
gmCmdDict.pop(key)
|
continue
|
return gmCmdDict
|
|
## Ö´ÐÐÂß¼
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param gmCmdDict: ÃüÁî×Öµä
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def OnExec(orderId, gmCmdDict):
|
strMsg = ""
|
gmCmdDict = ClearEmptyFromDict(gmCmdDict)
|
GameWorld.DebugLog("GMT_AddPersonalCompensation gmCmdDict:%s" % gmCmdDict)
|
queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '')
|
if queryType == GMCommon.Def_GMKey_FamilyID:
|
sendFamilyIDList = []
|
PlayerIDList = []
|
familyIDList = gmCmdDict.get("playerList", "").split(",")
|
GameWorld.Log("·¢ËÍÏÉÃËÓʼþ: familyIDList=%s" % familyIDList)
|
for familyID in familyIDList:
|
familyID = GameWorld.ToIntDef(familyID)
|
familyInfo = {"familyID":familyID}
|
memberIDList = []
|
family = GameWorld.GetFamilyManager().FindFamily(familyID)
|
if not family:
|
GameWorld.DebugLog(" not family %s" % familyID)
|
continue
|
for index in range(family.GetCount()):
|
curMember = family.GetAt(index)
|
curMemberID = curMember.GetPlayerID()
|
if curMemberID:
|
memberIDList.append(curMemberID)
|
PlayerIDList += memberIDList
|
familyInfo["PlayerIDList"] = memberIDList
|
sendFamilyIDList.append(familyInfo)
|
GameWorld.Log(" send FamilyIDList=%s" % sendFamilyIDList)
|
GameWorld.Log(" send PlayerIDList=%s" % PlayerIDList)
|
strMsg = str(sendFamilyIDList)
|
else:
|
PlayerIDList = eval(gmCmdDict.get('PlayerIDList', '[]'))
|
if PlayerIDList == []:
|
GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr)
|
return
|
|
LimitTime = gmCmdDict.get('EndTime', '2050-12-13 00:00:00')
|
|
curServerTime = GameWorld.GetCurrentDataTimeStr()
|
# µ±Ç°Ê±¼äÒѾ³¬¹ýÁìȡʱ¼ä
|
if not curServerTime or curServerTime >= LimitTime:
|
GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_InvalidTime)
|
return
|
|
MailType = int(gmCmdDict.get('MailType', '0'))
|
Title = gmCmdDict.get('Title', '')
|
Text = gmCmdDict.get('Text', '')
|
GUID = str(uuid.uuid1())
|
|
gold = int(gmCmdDict.get('Gold', '0'))
|
goldPaper = int(gmCmdDict.get('GoldPaper', '0'))
|
silver = int(gmCmdDict.get('Silver', '0'))
|
sender = gmCmdDict.get('Sender', ChConfig.Def_Mail_SenderSys)
|
detail = gmCmdDict.get('Detail', "")
|
|
#¹¤¾ß·¢¹ýÀ´µÄÎïÆ·Ï±êÒÀ¾Ý 'index,index,...' ²»Ò»¶¨ÊÇ´Ó0¿ªÊ¼²¢°´Ë³ÐòÁ¬Ðø =_=#
|
intemIndexStrList = []
|
itemNums = gmCmdDict.get('itemNums', '')
|
if itemNums.strip() != '':
|
intemIndexStrList = itemNums.split(',')
|
#Ìí¼ÓÎïÆ·
|
addItemDictList = []
|
for itemIndexStr in intemIndexStrList:
|
addItemDict = GetGMTCompensationItemDict(gmCmdDict, itemIndexStr)
|
if not addItemDict:
|
continue
|
#Ìí¼Óµ½ÎïÆ·ÐÅÏ¢Áбí
|
addItemDictList.append(addItemDict)
|
|
#if len(addItemDictList) == 0:
|
# GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr)
|
# return
|
PlayerCompensation.AddPersonalItem(GUID, addItemDictList, PlayerIDList,
|
LimitTime, PlayerCompensation.GetMailText(Title, Text, MailType, sender),
|
gold, goldPaper, silver, detail=detail)
|
|
#Ö´Ðгɹ¦
|
GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_Success, strMsg)
|
# Á÷Ïò
|
DataRecordPack.DR_ToolGMOperate(0, '', '', 'GMT_AddPersonalCompensation', str(gmCmdDict))
|
return
|
|
|
def GetGMTCompensationItemDict(gmCmdDict, itemIndexStr):
|
addItemDict = {}
|
addItemDict['ItemID'] = GameWorld.ToIntDef(gmCmdDict.get('ItemID%s'%itemIndexStr, '0'))
|
if addItemDict['ItemID'] == 0:
|
return {}
|
addItemDict['Count'] = GameWorld.ToIntDef(gmCmdDict.get('ItemCnt%s'%itemIndexStr, '0'))
|
if addItemDict['Count'] == 0:
|
return {}
|
addItemDict['IsAuctionItem'] = GameWorld.ToIntDef(gmCmdDict.get('IsBind%s'%itemIndexStr, '0'))
|
#Ìí¼ÓUserDataÐÅÏ¢
|
addItemDict['UserData'] = ''
|
UserDataDict = {}
|
#===========================================================================
|
# #È¡ÏûʹÓõȼ¶ÏÞÖÆ
|
# IsCancelUseLV = GameWorld.ToIntDef(gmCmdDict.get('IsCancelUseLV%s'%itemIndexStr, '0'))
|
# if IsCancelUseLV:
|
# UserDataDict["%s"%ShareDefine.Def_IudetCancelUseLV] = ["%s"%IsCancelUseLV]
|
# #ÎïÆ·À´Ô´,100 Ϊ²»´¦Àí
|
# source = GameWorld.ToIntDef(gmCmdDict.get('ItemSource%s'%itemIndexStr, '100'))
|
# if source != 100:
|
# UserDataDict["%s"%ShareDefine.Def_IudetSource] = ["%s"%source]
|
#
|
# #Ì××°¾«Á¶µÈ¼¶
|
# SuiteLV = GameWorld.ToIntDef(gmCmdDict.get('SuiteLV%s'%itemIndexStr, '0'))
|
# if SuiteLV:
|
# UserDataDict["%s"%ShareDefine.Def_IudetSuiteLV] = ["%s"%SuiteLV]
|
#===========================================================================
|
|
itemUserData = {}
|
#ÆäËûUserdata
|
UserDataEx = eval(gmCmdDict.get('UserDataEx%s'%itemIndexStr, '{}'))
|
if UserDataEx:
|
itemUserData = UserDataEx
|
for key, value in UserDataDict.items():
|
#ÒÔUserDataExÖеÄΪ׼
|
if key in itemUserData:
|
continue
|
itemUserData[key] = value
|
|
if itemUserData:
|
addItemDict['UserData'] = '%s'%itemUserData
|
|
GameWorld.DebugLog("GetGMTCompensationItemDict %s, %s" % (itemIndexStr, addItemDict))
|
return addItemDict
|