#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
##@package GM.Commands.Horse
|
#
|
# @todo:×øÆï
|
# @author hxp
|
# @date 2019-12-17
|
# @version 1.0
|
#
|
# ÏêϸÃèÊö: ×øÆï
|
#
|
#-------------------------------------------------------------------------------
|
#"""Version = 2019-12-17 18:30"""
|
#-------------------------------------------------------------------------------
|
|
import GameWorld
|
import ChConfig
|
import PlayerControl
|
import PlayerHorse
|
import IpyGameDataPY
|
import time
|
|
#---------------------------------------------------------------------
|
#Â߼ʵÏÖ
|
|
## GMÃüÁîÖ´ÐÐÈë¿Ú
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param msgList ²ÎÊýÁбí
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def OnExec(curPlayer, msgList):
|
|
if not msgList:
|
GameWorld.DebugAnswer(curPlayer, "ÖØÖÃËùÓÐ: Horse 0")
|
GameWorld.DebugAnswer(curPlayer, "ÉèÖýø½×: Horse µÈ½× µ¤Êý")
|
GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÅàÑø: Horse ÅàÑøÀàÐÍ µÈ½× µ¤Êý")
|
GameWorld.DebugAnswer(curPlayer, "È«²¿»Ã»¯: Horse skin 1")
|
GameWorld.DebugAnswer(curPlayer, "ÖØÖûû¯: Horse skin 0")
|
GameWorld.DebugAnswer(curPlayer, "ÉèÖûû¯: Horse skin »Ã»¯ID ״̬")
|
GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÐǼ¶: Horse star ×øÆïID ÐǼ¶")
|
return
|
|
if msgList[0] == "skin":
|
if len(msgList) == 2:
|
skinState = msgList[1]
|
ipyDataMgr = IpyGameDataPY.IPY_Data()
|
for index in xrange(ipyDataMgr.GetHorseSkinPlusCount()):
|
skinPlusIpyData = ipyDataMgr.GetHorseSkinPlusByIndex(index)
|
skinID = skinPlusIpyData.GetID()
|
__GMSetHorseSkinState(curPlayer, skinID, skinState, skinPlusIpyData.GetSkinValidTime())
|
elif len(msgList) == 3:
|
skinID = msgList[1]
|
skinState = msgList[2]
|
skinPlusIpyData = IpyGameDataPY.GetIpyGameData("HorseSkinPlus", skinID)
|
if not skinPlusIpyData:
|
GameWorld.DebugAnswer(curPlayer, "×øÆï»Ã»¯ID²»´æÔÚ! skinID=%s" % skinID)
|
return
|
__GMSetHorseSkinState(curPlayer, skinID, skinState, skinPlusIpyData.GetSkinValidTime())
|
else:
|
return
|
|
elif msgList[0] == "star":
|
horseID = msgList[1] if len(msgList) > 1 else 0
|
horseStar = msgList[2] if len(msgList) > 2 else 0
|
if not horseID or not horseStar:
|
return
|
skinID = 0
|
ipyDataMgr = IpyGameDataPY.IPY_Data()
|
for index in xrange(ipyDataMgr.GetHorseSkinPlusCount()):
|
skinPlusIpyData = ipyDataMgr.GetHorseSkinPlusByIndex(index)
|
if horseID != skinPlusIpyData.GetHorseID():
|
continue
|
if PlayerHorse.CheckHorseSkinState(curPlayer, skinPlusIpyData):
|
skinID = skinPlusIpyData.GetID()
|
break
|
if not skinID:
|
GameWorld.DebugAnswer(curPlayer, "¸Ã×øÆï²»´æÔÚ»òδ¼¤»î:horseID=%s" % horseID)
|
return
|
if not IpyGameDataPY.GetIpyGameData("HorseStarUp", horseID, horseStar):
|
GameWorld.DebugAnswer(curPlayer, "²»´æÔÚ¸Ã×øÆïÐǼ¶:horseID=%s,star=%s" % (horseID, horseStar))
|
return
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserStar % horseID, horseStar)
|
GameWorld.DebugAnswer(curPlayer, "ÉèÖÃ×øÆïÐǼ¶:horseID=%s,star=%s,skinID=%s" % (horseID, horseStar, skinID))
|
|
elif len(msgList) == 1:
|
if msgList[0] == 0:
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserLV, 1)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserEatItemCount, 0)
|
for trainType in xrange(1, PlayerHorse.GetHorseTrainTypes() + 1):
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserTrainLV % trainType, 1)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserTrainItemCount % trainType, 0)
|
|
ipyDataMgr = IpyGameDataPY.IPY_Data()
|
for index in xrange(ipyDataMgr.GetHorseSkinPlusCount()):
|
skinPlusIpyData = ipyDataMgr.GetHorseSkinPlusByIndex(index)
|
skinID = skinPlusIpyData.GetID()
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserSkinEndTime % skinID, 0)
|
GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_HorserSkinPlusState, skinID, 0)
|
|
for index in range(ipyDataMgr.GetHorseCount()):
|
ipyData = ipyDataMgr.GetHorseByIndex(index)
|
horseID = ipyData.GetHorseID()
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserStar % horseID, 0)
|
|
elif len(msgList) == 2:
|
lv, eatItemCount = msgList
|
if lv < 1:
|
GameWorld.DebugAnswer(curPlayer, "µÈ¼¶²»ÄÜСÓÚ1")
|
return
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserLV, lv)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserEatItemCount, eatItemCount)
|
|
elif len(msgList) == 3:
|
trainType, trainLV, eatItemCount = msgList
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserTrainLV % trainType, trainLV)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserTrainItemCount % trainType, eatItemCount)
|
|
else:
|
return
|
|
PlayerHorse.RefreshHorseAttr(curPlayer)
|
PlayerHorse.PlayerHorseLogin(curPlayer)
|
return
|
|
def __GMSetHorseSkinState(curPlayer, skinID, skinState, validTime=0):
|
if not skinState:
|
GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_HorserSkinPlusState, skinID, 0)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserSkinEndTime % skinID, 0)
|
else:
|
GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_HorserSkinPlusState, skinID, 1)
|
if validTime > 0:
|
updSkinEndTime = int(time.time()) + validTime
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserSkinEndTime % skinID, updSkinEndTime)
|
return
|
|