#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
#-------------------------------------------------------------------------------
|
#
|
##@package SetMoney
|
#
|
# @todo:ÉèÖÃÍæ¼ÒµÄÇ®
|
# @author hxp
|
# @date 2013-12-10 14:00
|
# @version 1.1
|
#
|
# @change: "2016-07-20 14:30" hxp ͳһº¯Êý
|
#
|
# ÏêϸÃèÊö: ÉèÖÃÍæ¼ÒµÄÇ®
|
#
|
#---------------------------------------------------------------------
|
#"""Version = 2016-07-20 14:30"""
|
#---------------------------------------------------------------------
|
|
import PlayerControl
|
import Lang
|
import ChConfig
|
import ShareDefine
|
import GameWorld
|
|
moneyNameDict = ShareDefine.MoneyNameDict
|
|
## GMÃüÁîÖ´ÐÐÈë¿Ú
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param list ²ÎÊýÁбí [ <Ç®±ÒÀàÐÍ><ÊýÁ¿>]
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def OnExec(curPlayer, List):
|
|
if len(List) == 1:
|
moneyType = List[0]
|
if moneyType == 0:
|
moneyList = moneyNameDict.keys()
|
moneyList.sort()
|
else:
|
moneyList = [moneyType]
|
for moneyType in moneyList:
|
GameWorld.DebugAnswer(curPlayer, "(%s) %s: %s" % (moneyType, moneyNameDict.get(moneyType, moneyType), PlayerControl.GetMoneyReal(curPlayer, moneyType)))
|
return
|
|
if len(List) != 2:
|
#²ÎÊý²»ÕýÈ·
|
GameWorld.DebugAnswer(curPlayer, Lang.GBText("²ÎÊý²»ÕýÈ·"))
|
GameWorld.DebugAnswer(curPlayer, "ÉèÖûõ±Ò: SetMoney »õ±ÒÀàÐÍ ÊýÖµ")
|
GameWorld.DebugAnswer(curPlayer, "ÏÔʾ»õ±Ò: SetMoney »õ±ÒÀàÐÍ")
|
helpStr = ""
|
moneyTypeList = moneyNameDict.keys()
|
for moneyType in moneyTypeList:
|
helpStr += "%s-%s;" % (moneyType, moneyNameDict[moneyType])
|
GameWorld.DebugAnswer(curPlayer, helpStr)
|
return
|
#Ç®±ÒÀàÐÍ
|
moneyType = List[0]
|
#Ç®±ÒÊýÁ¿
|
moneyCount = List[1]
|
#ÊäÈëÀàÐͲ»¶ÔÌáʾǮ±ÒÀàÐÍ´í
|
if type(moneyType) != int or type(moneyCount) not in [int, long]:
|
GameWorld.DebugAnswer(curPlayer, Lang.GBText("²ÎÊý²»ÕýÈ·"))
|
return
|
#Ç®±ÒÀàÐÍ·¶Î§
|
if moneyType not in [1, 2, 3, 4] and moneyType not in ShareDefine.MoneyNameDict:
|
GameWorld.DebugAnswer(curPlayer, Lang.GBText("Ç®±ÒÀàÐͲ»ÕýÈ·"))
|
return
|
#0ÎIJ»´¦Àí
|
if moneyType not in ShareDefine.MoneyMinusRefreshDict and moneyCount < 0:
|
return
|
isOK = False
|
playerMoney = PlayerControl.GetMoneyReal(curPlayer, moneyType)
|
if moneyType == ShareDefine.TYPE_Price_PayCoin:
|
playerMoney = PlayerControl.GetPayCoinTotal(curPlayer)
|
if playerMoney > moneyCount:
|
isOK = PlayerControl.PayMoney(curPlayer, moneyType, playerMoney - moneyCount, ChConfig.Def_Cost_GM, {ChConfig.Def_Cost_Reason_SonKey:"SetMoney"}, isMinus=True)
|
elif playerMoney < moneyCount:
|
isOK = PlayerControl.GiveMoney(curPlayer, moneyType, moneyCount - playerMoney, ChConfig.Def_GiveMoney_GM, {ChConfig.Def_Give_Reason_SonKey:"SetMoney"})
|
else:
|
isOK = True
|
if not isOK:
|
GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÍæ¼Ò»õ±Òʧ°Ü£¬Ïê¼ûÈÕÖ¾»òÁ÷Ïò")
|
else:
|
GameWorld.DebugAnswer(curPlayer, "ÉèÖÃ%s%s=%s" % (moneyType, moneyNameDict.get(moneyType, moneyType), PlayerControl.GetMoneyReal(curPlayer, moneyType)))
|
|
return
|
|
|