forked from metin2/client
1
0
Fork 0
client/bin/pack/root/consolemodule.py

904 lines
24 KiB
Python
Raw Blame History

import app
import grp
import wndMgr
import ui
import os
import sys
import stat
import chrmgr
import chr
import net
import background
import snd
import net
import player
import localeInfo
import uiScriptLocale
class Console(object):
def __init__(self, output):
self.dirNameList = []
self.fileNameList = []
self.output = output
self.curPathName = "D:\\Ymir Work\\"
self.collision = 0
self.bgPartDict = {
"terrain":background.PART_TERRAIN,
"object":background.PART_OBJECT,
"cloud":background.PART_CLOUD,
"tree":background.PART_TREE,
"water":background.PART_WATER,
"sky":background.PART_SKY,
}
self.bgSortDict = {
"distance":background.DISTANCE_SORT,
"texture":background.TEXTURE_SORT,
}
self.game = 0
def Close(self):
self.output = 0
def BindGameClass(self, game):
self.game = game
def Exit(self):
"Exit Program"
app.Exit()
def EnablePerformanceTime(self, mode, isEnable):
app.EnablePerformanceTime(mode, int(isEnable))
def ReloadLocale(self):
"Reload Locale"
reload(locale)
reload(uiScriptLocale)
self.Print("RELOAD LOCALE")
def ReloadDevel(self):
"ReloadDevel"
import consoleModule
import uiGuild
import uiInventory
reload(uiGuild)
self.Print("ReloadGuild")
reload(uiInventory)
self.Print("ReloadInventory")
def ShowPerformanceInfo(self):
"Shows Performance Info"
self.Print(app.GetInfo(app.INFO_ACTOR))
self.Print(app.GetInfo(app.INFO_ITEM))
self.Print(app.GetInfo(app.INFO_EFFECT))
self.Print(app.GetInfo(app.INFO_TEXTTAIL))
def Disconnect(self):
"Disconnect by sending unknown packet"
net.SendStrangePacket()
def ToggleActorDirectionLine(self):
"Shows character's direction line"
chrmgr.ToggleDirectionLine()
def RegisterCharacterEffect(self, effectType, effectFileName):
"Set character's effect state (state number, bone name, effect filename/number)"
if effectFileName.isdigit():
effectFileName = self.GetFileName(int(effectFileName))
effectFullPathFileName = self.GetFullPathName(effectFileName)
chrmgr.RegisterEffect(chrmgr.EFFECT_STATE+int(effectType), "", effectFullPathFileName)
self.Print("effect state %d: %s" % (int(effectType), effectFullPathFileName))
def SetCharacterAffect(self, affectType, isVisible):
"Set character's affect (number, visiblity 1|0)"
chrmgr.SetAffect(-1, int(affectType), int(isVisible))
self.Print("affect set %d: %d" % (int(affectType), int(isVisible)))
def SetCharacterEmoticon(self, EmoticonNum):
"Show emoticon (number)"
chrmgr.SetEmoticon(-1, int(EmoticonNum))
self.Print("Emoticon %d: %d" % (int(EmoticonNum), int(isVisible)))
def ShowPickedCharacterInfo(self):
"Show information of picked character"
vid=chrmgr.GetPickedVID()
info=chrmgr.GetVIDInfo(vid)
self.Print(info)
def ShowCharacterInfo(self, arg):
"Show information of character (vid)"
if arg.isdigit():
vid=int(arg)
else:
vid=0
info=chrmgr.GetVIDInfo(vid)
self.Print(info)
def SetWeaponTraceTexture(self, arg):
"Sets sword afterimage texture (filename)"
if arg.isdigit():
textureFileName = self.GetFileName(int(arg))
else:
textureFileName = arg
chr.WeaponTraceSetTexture(textureFileName)
def SetAutoCameraRotationSpeed(self, arg):
"Auto camera rotation speed (angle per sec)"
spd=float(arg)
player.SetAutoCameraRotationSpeed(spd)
self.Print("Auto camera rotation speed: %f" % (spd))
def SetWeaponTraceMode(self, *mode):
"Sword afterimage mode (0 = Use alpha, 1 = Use texture)"
if mode and mode[0].isdigit() and int(mode[0]):
chr.WeaponTraceUseTexture()
else:
chr.WeaponTraceUseAlpha()
def SetCollision(self, *mode):
"Show collison objects (0 | 1)"
if mode and mode[0].isdigit():
self.collision = int(mode[0])
else:
self.collision = not self.collision
def SetMovingSpeed(self, arg):
"Set walking speed"
chrmgr.SetMovingSpeed(int(arg))
def SetMusicVolume(self, arg):
"Set BGM volumn (0 ~ 1.0)"
snd.SetMusicVolume(float(arg))
def SetSoundVolume(self, arg):
"Set Effect sound volumn (0 ~ 5)"
snd.SetSoundVolume(int(arg))
def SetSoundScale(self, arg):
"3D Sound scale (default : 200)"
snd.SetSoundScale(int(arg))
def SetAmbienceSoundScale(self, arg):
"3D Ambience sound scale (default : 200)"
snd.SetAmbienceSoundScale(int(arg))
def SetCoolTime(self):
"Cooltime toggle"
flag = player.ToggleCoolTime()
if flag:
self.Print("Cooltime will be applied")
else:
self.Print("Cooltime disabled")
def SetLevelLimit(self):
"Sets Level limit"
flag = player.ToggleLevelLimit()
if flag:
self.Print("Level limit will be applied")
else:
self.Print("Level limit disabled")
def ShowCursor(self):
app.ShowCursor()
def HideCursor(self):
app.HideCursor()
def Print(self, msg):
self.output.Print(msg)
def RefreshPath(self):
self.SetPath(self.curPathName)
def SetPath(self, newPathName):
if '\\'!=newPathName[-1]:
newPathName=newPathName+'\\'
if os.access(newPathName, os.R_OK)==0:
self.Print(newPathName+" Cannot find path")
return
nameList=os.listdir(newPathName)
dirNameList=[]
fileNameList=[]
for sName in nameList:
mode=os.stat(newPathName+sName)[stat.ST_MODE]
if stat.S_ISDIR(mode):
dirNameList.append(sName)
else:
fileNameList.append(sName)
self.curPathName=newPathName
self.dirNameList=dirNameList
self.fileNameList=fileNameList
self.ShowPath()
def GetPath(self):
return self.curPathName
def GetDirName(self, iDir):
if (len(self.dirNameList)>iDir):
return self.dirNameList[iDir]
else:
print len(self.dirNameList)
return ""
def GetFileName(self, iFile):
if (len(self.fileNameList)>iFile):
return self.fileNameList[iFile]
else:
print len(self.fileNameList)
return ""
def MoveParentPath(self):
"Go to Parent directory"
newPathName=self.GetPath()
lastPos=-1
if '\\'==newPathName[-1]:
lastPos=-2
lastPos=newPathName.rfind('\\', 0, lastPos)
if 0>lastPos:
self.Print("Here is root")
return
newPathName=newPathName[0:lastPos]+'\\'
self.SetPath(newPathName)
def GetFullPathName(self, sPathName):
sParentPathName=self.GetPath()
if '\\'!=sParentPathName[-1]:
sParentPathName=sParentPathName+'\\'
return sParentPathName+sPathName
def MoveChildPath(self, directory):
"[Directory name/number] change to child directory"
if ""==directory:
self.Print("You need directory name or number")
return
if directory.isdigit():
directory=self.GetDirName(int(directory))
newPathName=self.GetFullPathName(directory)
self.SetPath(newPathName)
def SetHitEffect(self, arg):
"Sets hit effect"
if arg.isdigit():
effectFileName = self.GetFileName(int(arg))
else:
effectFileName = arg
effectFullPathFileName=self.GetFullPathName(EffectFileName)
chrmgr.RegisterEffect(chrmgr.EFFECT_HIT, "", effectFullPathFileName)
self.Print("Hit effect: "+effectFullPathFileName)
def SetStunEffect(self, arg):
"Sets stun effect"
if arg.isdigit():
effectFileName = self.GetFileName(int(arg))
else:
effectFileName = arg
effectFullPathFileName = self.GetFullPathName(effectFileName)
chrmgr.RegisterEffect(chrmgr.EFFECT_STUN, "Bip01 Head", effectFullPathFileName)
self.Print("Stun effect: "+effectFullPathFileName)
def SetDustEffect(self, arg):
"Sets dirt effect"
if arg.isdigit():
effectFileName = self.GetFileName(int(arg))
else:
effectFileName = arg
effectFullPathFileName = self.GetFullPathName(effectFileName)
chrmgr.RegisterEffect(chrmgr.EFFECT_DUST, "", effectFullPathFileName)
self.Print("Dirt effect: "+effectFullPathFileName)
def SetDustGap(self, arg):
"Sets dirt effect gap"
if arg.isdigit() == 0:
self.Print("Dirt effect gap argument must be a number")
else:
gap = int(arg)
chrmgr.SetDustGap(gap)
self.Print("Dirt effect gap: %d" % (gap))
def ShowBackgroundPart(self, arg):
"Show background part"
try:
background.SetVisiblePart(self.bgPartDict[arg], 1);
except KeyError:
self.Print("Unknown part: ", arg);
except:
raise
def HideBackgroundPart(self, arg):
"Hide background part"
try:
background.SetVisiblePart(self.bgPartDict[arg], 0);
except KeyError:
self.Print("Unknown part: ", arg);
except:
raise
def SetShadowLevel(self, arg):
"Shadow level setting (0~5)"
if arg.isdigit() == 0:
self.Print("Shadow setting must be a number")
else:
level = int(arg)
if level < 0 or level > 5:
self.Print("Shadow level range is 0~5")
else:
background.SetShadowLevel(level)
self.Print("Shadow level: %d" % (level))
def SetSplatLimit(self, arg):
"Splat number limit"
if arg.isdigit() == 0:
self.Print("Splat number limit must be a number")
else:
limit = int(arg)
background.SetSplatLimit(limit)
self.Print("Splat number limit: %d" % (limit))
def SelectViewDistanceNum(self, arg):
"View distance (0~4)"
if arg.isdigit() == 0:
self.Print("Enter between 0 to 4")
else:
settingnum = int(arg)
if settingnum < 0 or settingnum > 4:
self.Print("View distance range is 0 to 4")
else:
background.SelectViewDistanceNum(settingnum)
self.Print("View distance: %d" % (settingnum))
def SetBGLoading(self, bBGLoading):
"Background loading (0, 1)"
bResultBoolean = int(bBGLoading)
if bResultBoolean != 0 and bResultBoolean != 1:
self.Print("Enter 0 or 1")
else:
background.SetBGLoading(bResultBoolean)
self.Print("Background loading: %d" % (bResultBoolean))
def SetTerrainRenderSort(self, arg):
"Terrain rendering type"
try:
background.SetRenderSort(self.bgSortDict[arg]);
except KeyError:
self.Print("Unknown part: ", arg);
except:
raise
def SetTransparentTree(self, arg):
"Tree's leaf transparency"
bTransparent = int(arg)
try:
background.SetTransparentTree(bTransparent);
except KeyError:
self.Print("must be 0 or 1: ", bTransparent);
except:
raise
def WarpTest(self, warpX, warpY):
"WarpTest : warp dwX dwY"
iWarpX = int(warpX)
iWarpY = int(warpY)
try:
background.Destroy()
background.Initialize()
background.WarpTest(iWarpX, iWarpY);
background.RegisterEnvironmentData(0, "d:/ymir work/environment/b3.msenv")
background.SetEnvironmentData(0)
background.SetShadowLevel(background.SHADOW_ALL)
except:
import exception
exception.Abort("consoleModule.Console.WarpTest")
def ToggleDebugInfo(self):
"Show DebugInfo"
net.ToggleGameDebugInfo()
def ShowPath(self):
"Show current path"
self.Print("Current path is "+self.GetPath())
def ShowList(self):
"Show current path's list"
self.ShowDirList()
self.ShowFileList()
def ShowDirList(self):
"Show current path's child directories"
self.Print(self.GetPath()+" directories:")
self.ShowNameList(self.dirNameList)
self.Print("")
def ShowFileList(self, Filter=[]):
"Show current path's files (extension filter)"
self.Print(self.GetPath()+" files:")
self.ShowNameList(self.fileNameList, Filter)
self.Print("")
def ShowEffectList(self):
"Show current path's effect"
self.Print(self.GetPath()+" effects:")
self.ShowNameList(self.fileNameList, ["mse"])
self.Print("")
def ShowWeb(self):
"ShowWeb"
if app.IsWebPageMode():
app.HideWebPage()
else:
app.ShowWebPage("http://wiki.metin.co.kr/metin1help/01.htm", (0, 0, 320, 600))
def ShowUI(self):
"Shows UI"
self.game.CheckGameButton()
self.game.interface.ShowDefaultWindows()
self.game.interface.wndChat.Show()
def HideUI(self):
"Hides UI"
self.game.interface.HideAllWindows()
self.game.interface.wndChat.Hide()
def SetCameraSpeed(self, percentage):
"Sets camera speed (Default = 100)"
app.SetCameraSpeed(int(percentage))
def SaveCameraSetting(self, filename):
"Save current camera attributes (filename)"
app.SaveCameraSetting(filename)
def LoadCameraSetting(self, filename):
"Load camera attributes (filename)"
if not app.LoadCameraSetting(filename):
self.Print("Could not load camera attribute")
def SetDefaultCamera(self):
"Return to default camera attribute"
app.SetDefaultCamera()
def ShowClock(self, second):
self.game.ShowClock(int(second))
def HideClock(self):
self.game.HideClock()
def ShowNotice(self):
app.SetVisibleNotice(TRUE)
self.Print("Show Notice")
def HideNotice(self):
app.SetVisibleNotice(FALSE)
self.Print("Hide Notice")
def SetSight(self, range):
"Set Force Sight Range"
app.SetSightRange(int(range))
def SetComboType(self, type):
chr.testSetComboType(int(type))
def SetSkillGroupFake(self, index):
"""<EFBFBD>׽<EFBFBD>Ʈ <20>ڵ<EFBFBD>"""
net.SetSkillGroupFake(int(index))
self.Print(" SetSkillGroupFake : %d" % int(index))
def SetEmpireLanguageMode(self, mode):
net.SetEmpireLanguageMode(int(mode))
self.Print(" SetEmpireLanguageMode : %d" % int(mode))
def SetCharacterRenderModeTypeAdd(self, color):
vid = player.GetTargetVID()
print " -> SetCharacterRenderModeTypeAdd", vid, color
chr.testSetAddRenderMode(vid, int(color,16))
def SetCharacterRenderModeTypeMod(self, color):
vid = player.GetTargetVID()
print " -> SetCharacterRenderModeTypeMod", vid, color, int(color,16)
chr.testSetModulateRenderMode(vid, int(color,16))
def SetCharacterRenderModeTypeAddRGB(self, r, g, b):
vid = player.GetTargetVID()
print " -> SetCharacterRenderModeTypeAddRGB", vid, r, g, b
chr.testSetAddRenderModeRGB(vid, float(r)/255.0, float(g)/255.0, float(b)/255.0)
def SetCharacterRenderModeTypeModRGB(self, r, g, b):
vid = player.GetTargetVID()
print " -> SetCharacterRenderModeTypeModRGB", vid, r, g, b
chr.testSetModulateRenderModeRGB(vid, float(r)/255.0, float(g)/255.0, float(b)/255.0)
def SetCharacterRenderModeSpecular(self, alpha):
vid = player.GetTargetVID()
print " -> SetCharacterRenderModeSpecular", vid, alpha
chr.testSetSpecularRenderMode(vid, float(alpha))
def RestoreCharacterRenderModeType(self):
vid = player.GetTargetVID()
chr.testRestoreRenderMode(vid)
def ShowNameList(self, lstsName, lstsFilter=None):
if len(lstsName)==0:
self.Print("None")
return
if lstsFilter:
isFilter=1
else:
isFilter=0
sLine=""
iCol=0
iName=0
for sName in lstsName:
if isFilter:
iDotPos=sName.rfind('.', 0, -1)
if iDotPos<0:
iName=iName+1
continue
if (sName[iDotPos+1:] in lstsFilter)==0:
iName=iName+1
continue
sLine=sLine+"%3d %-15s " % (iName, sName)
if iCol>4:
iCol=0
self.Print(sLine)
sLine=""
iCol=iCol+1
iName=iName+1
if ""!=sLine:
self.Print(sLine)
class ConsoleWindow(ui.Window):
BACK_GROUND_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 0.5)
EDIT_LINE_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 1.0)
BUTTON_COLOR = grp.GenerateColor(1.0, 1.0, 1.0, 1.0)
HEIGHT = 200
LINE_STEP = 15
MAX_LINE_COUNT = 50
class ConsoleEditLine(ui.EditLine):
def __init__(self):
ui.EditLine.__init__(self)
self.eventReturn = 0
self.eventEscape = 0
def __del__(self):
ui.EditLine.__del__(self)
def SetReturnEvent(self, event):
self.eventReturn = event
def SetEscapeEvent(self, event):
self.eventEscape = event
def OnIMEReturn(self):
text = self.GetText()
if len(text) > 0:
self.eventReturn(text)
else:
wndMgr.KillFocus()
self.eventEscape()
self.SetText("")
return TRUE
def OnPressEscapeKey(self):
self.SetText("")
wndMgr.KillFocus()
self.eventEscape()
return TRUE
class ResizingButton(ui.DragButton):
BUTTON_NORMAL_COLOR = grp.GenerateColor(0.3320, 0.2929, 0.2578, 1.0)
BUTTON_OVER_COLOR = grp.GenerateColor(0.5320, 0.4929, 0.4578, 1.0)
BUTTON_LIGHT_OUTLINE_COLOR = grp.GenerateColor(0.6666, 0.6509, 0.6313, 1.0)
BUTTON_DARK_OUTLINE_COLOR = grp.GenerateColor(0.1647, 0.1450, 0.1294, 1.0)
def __init__(self):
ui.DragButton.__init__(self)
self.AddFlag("limit")
self.AddFlag("restrict_x")
def __del__(self):
ui.DragButton.__del__(self)
def __init__(self):
ui.Window.__init__(self)
self.TextList = []
self.game = 0
self.Console = Console(self)
self.ResizingButton = self.ResizingButton()
self.ResizingButton.SetParent(self)
self.ResizingButton.SetSize(15, 15)
self.ResizingButton.SetPosition(100, 100)
self.ResizingButton.Show()
self.EditLine = self.ConsoleEditLine()
self.EditLine.SetParent(self)
self.EditLine.SetMax(100)
self.EditLine.SetFontName(localeInfo.UI_DEF_FONT)
self.EditLine.SetText("")
self.EditLine.Show()
from _weakref import ref
self.ResizingButton.SetMoveEvent(lambda s = ref(self): s().UpdatePosition())
self.EditLine.SetReturnEvent(lambda x,s = ref(self): s().ProcessCommand(x))
self.EditLine.SetEscapeEvent(lambda s = ref(self): s().CloseWindow())
self.UpdatePosition()
self.functionDict = {}
self.InitFunction()
def __del__(self):
ui.Window.__del__(self)
def BindGameClass(self, game):
self.Console.BindGameClass(game)
def Close(self):
self.Console.Close()
self.ResizingButton = 0
self.EditLine = 0
def SetConsoleSize(self, width, height):
self.ResizingButton.SetPosition(width-20, height-20)
self.UpdatePosition()
def OnRender(self):
grp.SetColor(self.BACK_GROUND_COLOR)
grp.RenderBar(self.gx, self.gy, self.width, self.height)
grp.SetColor(ConsoleWindow.EDIT_LINE_COLOR)
grp.RenderBar(self.gxEditLine-2, self.gyEditLine-3, self.width - 40, 17)
grp.SetColor(ConsoleWindow.BUTTON_COLOR)
grp.RenderBar(self.gxButton-2, self.gyButton-3, self.widthButton, self.heightButton)
def UpdatePosition(self):
self.width = self.GetWidth()
self.height = self.GetHeight()
self.widthButton = self.ResizingButton.GetWidth()
self.heightButton = self.ResizingButton.GetHeight()
(self.gx, self.gy) = self.GetGlobalPosition()
(self.gxButton, self.gyButton) = self.ResizingButton.GetGlobalPosition()
self.SetSize(self.gxButton - self.gx + 20, self.gyButton - self.gy + 20)
self.EditLine.SetSize(self.width-30, 16)
self.EditLine.SetPosition(7, self.height-20)
(self.gxEditLine, self.gyEditLine) = self.EditLine.GetGlobalPosition()
#####
yPosition = (self.height-20) - self.LINE_STEP
ItemCount = len(self.TextList)
for i in xrange(ItemCount):
TextLine = self.TextList[ItemCount-i-1]
TextLine.SetPosition(10, yPosition)
yPosition -= self.LINE_STEP
if yPosition < 0:
TextLine.Hide()
else:
TextLine.Show()
def OpenWindow(self):
self.EditLine.SetFocus()
self.Show()
self.Console.RefreshPath()
def CloseWindow(self):
self.Hide()
## NOTE : <20>̰<EFBFBD><CCB0><EFBFBD><EFBFBD><EFBFBD> Command<6E><64> ó<><C3B3><EFBFBD>մϴ<D5B4> - [levites]
def ProcessCommand(self, text):
if '/' == text[0]:
net.SendChatPacket(text)
return
Console=self.Console
Console.Print(">> "+text)
lstsArg=text.split()
if len(lstsArg)==0:
return
sCmd=lstsArg[0]
if self.functionDict.has_key(sCmd):
try:
self.functionDict[sCmd](self.Console, *lstsArg[1:])
except Exception, e:
Console.Print(str(e))
#self.Console.Print(e)
#self.Console.Print(self.functionDict[sCmd].__doc__)
else:
if sCmd == 'help' or sCmd == 'h':
try:
k = lstsArg[1]
v = self.functionDict[k]
argcount = v.im_func.func_code.co_argcount - 1 # -1 for self
if v.im_func.func_code.co_flags & 4:
argcount+=1
argnames = v.im_func.func_code.co_varnames[1:argcount+1]
if argcount:
Console.Print("%s(%s) : %s" % (k,argcount, v.__doc__))
Console.Print(" arg : %s" % argnames)
else:
Console.Print("%s : %s" % (k,v.__doc__))
except:
for k,v in self.functionDict.iteritems():
argcount = v.im_func.func_code.co_argcount - 1 # -1 for self
if v.im_func.func_code.co_flags & 4:
argcount+=1
if argcount:
Console.Print("%s(%s) : %s" % (k,argcount, v.__doc__))
else:
Console.Print("%s : %s" % (k,v.__doc__))
Console.Print("? : All commands list")
Console.Print("h : Help for all commands")
Console.Print("h blah : Help for blah")
Console.Print("")
elif sCmd == '?':
list = self.functionDict.keys()
list.sort()
Console.ShowNameList(list)
pass
def InitFunction(self):
#self.AddFunction("help", Console.PrintHelp)
#self.AddFunction("?", Console.PrintHelp)
self.AddFunction("exit", Console.Exit)
self.AddFunction("mvol", Console.SetMusicVolume)
self.AddFunction("svol", Console.SetSoundVolume)
self.AddFunction("snds", Console.SetSoundScale)
self.AddFunction("asnds", Console.SetAmbienceSoundScale)
self.AddFunction("mspd", Console.SetMovingSpeed)
self.AddFunction("pwd", Console.ShowPath)
self.AddFunction("ls", Console.ShowList)
self.AddFunction("shadow", Console.SetShadowLevel)
self.AddFunction("splat", Console.SetSplatLimit)
self.AddFunction("distance", Console.SelectViewDistanceNum)
self.AddFunction("bgloading", Console.SetBGLoading)
self.AddFunction("terrainrender", Console.SetTerrainRenderSort)
self.AddFunction("transtree", Console.SetTransparentTree)
self.AddFunction("stune", Console.SetStunEffect)
self.AddFunction("duste", Console.SetDustEffect)
self.AddFunction("dustt", Console.SetDustGap)
self.AddFunction("hite", Console.SetHitEffect)
self.AddFunction("cd", Console.MoveChildPath)
self.AddFunction("up", Console.MoveParentPath)
self.AddFunction("lsd", Console.ShowDirList)
self.AddFunction("lsf", Console.ShowFileList)
self.AddFunction("lse", Console.ShowEffectList)
self.AddFunction("show", Console.ShowBackgroundPart)
self.AddFunction("hide", Console.HideBackgroundPart)
self.AddFunction("debuginfo", Console.ToggleDebugInfo)
self.AddFunction("collision", Console.SetCollision)
self.AddFunction("colli", Console.SetCollision)
#self.AddFunction("wt", Console.SetWeaponTrace)
self.AddFunction("wtt", Console.SetWeaponTraceTexture)
self.AddFunction("wtm", Console.SetWeaponTraceMode)
self.AddFunction("disconnect", Console.Disconnect)
self.AddFunction("autorot", Console.SetAutoCameraRotationSpeed)
self.AddFunction("dirline", Console.ToggleActorDirectionLine)
self.AddFunction("pickc", Console.ShowPickedCharacterInfo)
self.AddFunction("infoc", Console.ShowCharacterInfo)
self.AddFunction("regchre", Console.RegisterCharacterEffect)
self.AddFunction("setchra", Console.SetCharacterAffect)
self.AddFunction("emoticon", Console.SetCharacterEmoticon)
self.AddFunction("perfinfo", Console.ShowPerformanceInfo)
self.AddFunction("reload_locale", Console.ReloadLocale)
self.AddFunction("re", Console.ReloadDevel)
self.AddFunction("perftime", Console.EnablePerformanceTime)
self.AddFunction("cooltime", Console.SetCoolTime)
self.AddFunction("levellimit", Console.SetLevelLimit)
self.AddFunction("showcursor", Console.ShowCursor)
self.AddFunction("hidecursor", Console.HideCursor)
self.AddFunction("warp", Console.WarpTest)
self.AddFunction("web", Console.ShowWeb)
self.AddFunction("showui", Console.ShowUI)
self.AddFunction("hideui", Console.HideUI)
self.AddFunction("setcspd", Console.SetCameraSpeed)
self.AddFunction("savecmr", Console.SaveCameraSetting)
self.AddFunction("loadcmr", Console.LoadCameraSetting)
self.AddFunction("setdefcmr", Console.SetDefaultCamera)
self.AddFunction("showclock", Console.ShowClock)
self.AddFunction("hideclock", Console.HideClock)
self.AddFunction("setsight", Console.SetSight)
self.AddFunction("setcombotype", Console.SetComboType)
self.AddFunction("setsk_fake", Console.SetSkillGroupFake)
self.AddFunction("trans", Console.SetEmpireLanguageMode)
self.AddFunction("shownotice", Console.ShowNotice)
self.AddFunction("hidenotice", Console.HideNotice)
self.AddFunction("setrmadd", Console.SetCharacterRenderModeTypeAdd)
self.AddFunction("setrmmod", Console.SetCharacterRenderModeTypeMod)
self.AddFunction("setrmaddrgb", Console.SetCharacterRenderModeTypeAddRGB)
self.AddFunction("setrmmodrgb", Console.SetCharacterRenderModeTypeModRGB)
self.AddFunction("setspec", Console.SetCharacterRenderModeSpecular)
self.AddFunction("restorerm", Console.RestoreCharacterRenderModeType)
def AddFunction(self, cmd, func):
self.functionDict[cmd] = func
def Print(self, text):
TextLine = ui.TextLine()
TextLine.SetParent(self)
TextLine.SetFontName(localeInfo.UI_DEF_FONT)
TextLine.Show()
TextLine.SetText(text)
self.TextList.append(TextLine)
count = len(self.TextList)
if count > self.MAX_LINE_COUNT:
for i in xrange(count - self.MAX_LINE_COUNT):
del self.TextList[0]
self.UpdatePosition()