client/UserInterface/PythonCharacterManagerModul...

845 lines
28 KiB
C++

#include "StdAfx.h"
#include "PythonCharacterManager.h"
#include "PythonBackground.h"
#include "InstanceBase.h"
#include "../gamelib/RaceManager.h"
//////////////////////////////////////////////////////////////////////////
// RaceData °ü·Ã ½ÃÀÛ
//////////////////////////////////////////////////////////////////////////
PyObject * chrmgrSetEmpireNameMode(PyObject* poSelf, PyObject* poArgs)
{
int iEnable;
if (!PyTuple_GetInteger(poArgs, 0, &iEnable))
return Py_BadArgument();
CInstanceBase::SetEmpireNameMode(iEnable ? true : false);
CPythonCharacterManager::Instance().RefreshAllPCTextTail();
return Py_BuildNone();
}
PyObject * chrmgrRegisterTitleName(PyObject* poSelf, PyObject* poArgs)
{
int iIndex;
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
return Py_BadArgument();
char * szTitleName;
if (!PyTuple_GetString(poArgs, 1, &szTitleName))
return Py_BadArgument();
CInstanceBase::RegisterTitleName(iIndex, szTitleName);
return Py_BuildNone();
}
PyObject * chrmgrRegisterNameColor(PyObject* poSelf, PyObject* poArgs)
{
int index;
if (!PyTuple_GetInteger(poArgs, 0, &index))
return Py_BadArgument();
int ir;
if (!PyTuple_GetInteger(poArgs, 1, &ir))
return Py_BadArgument();
int ig;
if (!PyTuple_GetInteger(poArgs, 2, &ig))
return Py_BadArgument();
int ib;
if (!PyTuple_GetInteger(poArgs, 3, &ib))
return Py_BadArgument();
CInstanceBase::RegisterNameColor(index, ir, ig, ib);
return Py_BuildNone();
}
PyObject * chrmgrRegisterTitleColor(PyObject* poSelf, PyObject* poArgs)
{
int iIndex;
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
return Py_BadArgument();
int ir;
if (!PyTuple_GetInteger(poArgs, 1, &ir))
return Py_BadArgument();
int ig;
if (!PyTuple_GetInteger(poArgs, 2, &ig))
return Py_BadArgument();
int ib;
if (!PyTuple_GetInteger(poArgs, 3, &ib))
return Py_BadArgument();
CInstanceBase::RegisterTitleColor(iIndex, ir, ig, ib);
return Py_BuildNone();
}
PyObject * chrmgrGetPickedVID(PyObject* poSelf, PyObject* poArgs)
{
CPythonCharacterManager& rkChrMgr=CPythonCharacterManager::Instance();
DWORD dwPickedActorID;
if (rkChrMgr.OLD_GetPickedInstanceVID(&dwPickedActorID))
return Py_BuildValue("i", dwPickedActorID);
else
return Py_BuildValue("i", -1);
}
PyObject * chrmgrGetVIDInfo(PyObject* poSelf, PyObject* poArgs)
{
int nVID;
if (!PyTuple_GetInteger(poArgs, 0, &nVID))
return Py_BadArgument();
CPythonCharacterManager& rkChrMgr=CPythonCharacterManager::Instance();
char szDetail[256]="";
CInstanceBase* pkInstBase=rkChrMgr.GetInstancePtr(nVID);
if (pkInstBase)
{
TPixelPosition kPPosInst;
pkInstBase->NEW_GetPixelPosition(&kPPosInst);
LONG xInst=kPPosInst.x;
LONG yInst=kPPosInst.y;
CPythonBackground& rkBG=CPythonBackground::Instance();
rkBG.LocalPositionToGlobalPosition(xInst, yInst);
sprintf(szDetail, "pos=(%d, %d)", xInst, yInst);
}
char szInfo[1024];
sprintf(szInfo, "VID %d (isRegistered=%d, isAlive=%d, isDead=%d) %s",
nVID,
rkChrMgr.IsRegisteredVID(nVID),
rkChrMgr.IsAliveVID(nVID),
rkChrMgr.IsDeadVID(nVID),
szDetail
);
return Py_BuildValue("s", szInfo);
}
PyObject * chrmgrSetPathName(PyObject* poSelf, PyObject* poArgs)
{
char * szPathName;
if (!PyTuple_GetString(poArgs, 0, &szPathName))
return Py_BadArgument();
CRaceManager::Instance().SetPathName(szPathName);
return Py_BuildNone();
}
PyObject * chrmgrCreateRace(PyObject * poSelf, PyObject * poArgs)
{
int iRace;
if (!PyTuple_GetInteger(poArgs, 0, &iRace))
return Py_BadArgument();
CRaceManager::Instance().CreateRace(iRace);
return Py_BuildNone();
}
PyObject * chrmgrSelectRace(PyObject * poSelf, PyObject * poArgs)
{
int iRace;
if (!PyTuple_GetInteger(poArgs, 0, &iRace))
return Py_BadArgument();
CRaceManager::Instance().SelectRace(iRace);
return Py_BuildNone();
}
PyObject * chrmgrRegisterAttachingBoneName(PyObject * poSelf, PyObject * poArgs)
{
int iPartIndex;
if (!PyTuple_GetInteger(poArgs, 0, &iPartIndex))
return Py_BadArgument();
char * szBoneName;
if (!PyTuple_GetString(poArgs, 1, &szBoneName))
return Py_BadArgument();
CRaceData * pRaceData = CRaceManager::Instance().GetSelectedRaceDataPointer();
if (!pRaceData)
return Py_BuildException("RaceData has not selected!");
pRaceData->RegisterAttachingBoneName(iPartIndex, szBoneName);
return Py_BuildNone();
}
PyObject * chrmgrRegisterMotionMode(PyObject* poSelf, PyObject* poArgs)
{
int iMotionIndex;
if (!PyTuple_GetInteger(poArgs, 0, &iMotionIndex))
return Py_BadArgument();
CRaceData * pRaceData = CRaceManager::Instance().GetSelectedRaceDataPointer();
if (!pRaceData)
return Py_BuildException("RaceData has not selected!");
pRaceData->RegisterMotionMode(iMotionIndex);
return Py_BuildNone();
}
PyObject * chrmgrSetMotionRandomWeight(PyObject* poSelf, PyObject* poArgs)
{
int iMode;
if (!PyTuple_GetInteger(poArgs, 0, &iMode))
return Py_BadArgument();
int iMotion;
if (!PyTuple_GetInteger(poArgs, 1, &iMotion))
return Py_BadArgument();
int iSubMotion;
if (!PyTuple_GetInteger(poArgs, 2, &iSubMotion))
return Py_BadArgument();
int iPercentage;
if (!PyTuple_GetInteger(poArgs, 3, &iPercentage))
return Py_BadArgument();
CRaceData * pRaceData = CRaceManager::Instance().GetSelectedRaceDataPointer();
if (!pRaceData)
return Py_BuildException("RaceData has not selected!");
if (!pRaceData->SetMotionRandomWeight(iMode, iMotion, iSubMotion, iPercentage))
Py_BuildException("Failed to SetMotionRandomWeight");
return Py_BuildNone();
}
PyObject * chrmgrRegisterNormalAttack(PyObject* poSelf, PyObject* poArgs)
{
int iMode;
if (!PyTuple_GetInteger(poArgs, 0, &iMode))
return Py_BadArgument();
int iMotion;
if (!PyTuple_GetInteger(poArgs, 1, &iMotion))
return Py_BadArgument();
CRaceData * pRaceData = CRaceManager::Instance().GetSelectedRaceDataPointer();
if (!pRaceData)
return Py_BuildException("RaceData has not selected!");
pRaceData->RegisterNormalAttack(iMode, iMotion);
return Py_BuildNone();
}
///////////////////////////////////////////////////////////////////////////////////////////////////
// ¾ø¾îÁú ÇÔ¼öµé
PyObject * chrmgrReserveComboAttack(PyObject* poSelf, PyObject* poArgs)
{
int iMode;
if (!PyTuple_GetInteger(poArgs, 0, &iMode))
return Py_BadArgument();
int iCount;
if (!PyTuple_GetInteger(poArgs, 1, &iCount))
return Py_BadArgument();
CRaceData * pRaceData = CRaceManager::Instance().GetSelectedRaceDataPointer();
if (!pRaceData)
return Py_BuildException("RaceData has not selected!");
pRaceData->ReserveComboAttack(iMode, 0, iCount);
return Py_BuildNone();
}
PyObject * chrmgrRegisterComboAttack(PyObject* poSelf, PyObject* poArgs)
{
int iMode;
if (!PyTuple_GetInteger(poArgs, 0, &iMode))
return Py_BadArgument();
int iComboIndex;
if (!PyTuple_GetInteger(poArgs, 1, &iComboIndex))
return Py_BadArgument();
int iMotionIndex;
if (!PyTuple_GetInteger(poArgs, 2, &iMotionIndex))
return Py_BadArgument();
CRaceData * pRaceData = CRaceManager::Instance().GetSelectedRaceDataPointer();
if (!pRaceData)
return Py_BuildException("RaceData has not selected!");
pRaceData->RegisterComboAttack(iMode, 0, iComboIndex, iMotionIndex);
return Py_BuildNone();
}
// ¾ø¾îÁú ÇÔ¼öµé
///////////////////////////////////////////////////////////////////////////////////////////////////
PyObject * chrmgrReserveComboAttackNew(PyObject* poSelf, PyObject* poArgs)
{
int iMotionMode;
if (!PyTuple_GetInteger(poArgs, 0, &iMotionMode))
return Py_BadArgument();
int iComboType;
if (!PyTuple_GetInteger(poArgs, 1, &iComboType))
return Py_BadArgument();
int iCount;
if (!PyTuple_GetInteger(poArgs, 2, &iCount))
return Py_BadArgument();
CRaceData * pRaceData = CRaceManager::Instance().GetSelectedRaceDataPointer();
if (!pRaceData)
return Py_BuildException("RaceData has not selected!");
pRaceData->ReserveComboAttack(iMotionMode, iComboType, iCount);
return Py_BuildNone();
}
PyObject * chrmgrRegisterComboAttackNew(PyObject* poSelf, PyObject* poArgs)
{
int iMotionMode;
if (!PyTuple_GetInteger(poArgs, 0, &iMotionMode))
return Py_BadArgument();
int iComboType;
if (!PyTuple_GetInteger(poArgs, 1, &iComboType))
return Py_BadArgument();
int iComboIndex;
if (!PyTuple_GetInteger(poArgs, 2, &iComboIndex))
return Py_BadArgument();
int iMotionIndex;
if (!PyTuple_GetInteger(poArgs, 3, &iMotionIndex))
return Py_BadArgument();
CRaceData * pRaceData = CRaceManager::Instance().GetSelectedRaceDataPointer();
if (!pRaceData)
return Py_BuildException("RaceData has not selected!");
pRaceData->RegisterComboAttack(iMotionMode, iComboType, iComboIndex, iMotionIndex);
return Py_BuildNone();
}
PyObject * chrmgrLoadRaceData(PyObject* poSelf, PyObject* poArgs)
{
char* szFileName;
if (!PyTuple_GetString(poArgs, 0, &szFileName))
return Py_BadArgument();
CRaceData * pRaceData = CRaceManager::Instance().GetSelectedRaceDataPointer();
if (!pRaceData)
return Py_BuildException("RaceData has not selected!");
const char * c_szFullFileName = CRaceManager::Instance().GetFullPathFileName(szFileName);
if (!pRaceData->LoadRaceData(c_szFullFileName))
{
TraceError("Failed to load race data : %s\n", c_szFullFileName);
}
return Py_BuildNone();
}
PyObject * chrmgrLoadLocalRaceData(PyObject* poSelf, PyObject* poArgs)
{
char* szFileName;
if (!PyTuple_GetString(poArgs, 0, &szFileName))
return Py_BadArgument();
CRaceData * pRaceData = CRaceManager::Instance().GetSelectedRaceDataPointer();
if (!pRaceData)
return Py_BuildException("RaceData has not selected!");
if (!pRaceData->LoadRaceData(szFileName))
{
TraceError("Failed to load race data : %s\n", szFileName);
}
return Py_BuildNone();
}
/*
PyObject * chrmgrRegisterMotion(PyObject* poSelf, PyObject* poArgs)
{
int iMode;
if (!PyTuple_GetInteger(poArgs, 0, &iMode))
return Py_BadArgument();
int iMotion;
if (!PyTuple_GetInteger(poArgs, 1, &iMotion))
return Py_BadArgument();
char* szFileName;
if (!PyTuple_GetString(poArgs, 2, &szFileName))
return Py_BadArgument();
int iWeight = 0;
PyTuple_GetInteger(poArgs, 3, &iWeight);
iWeight = MIN(100, iWeight);
CRaceData * pRaceData = CRaceManager::Instance().GetSelectedRaceDataPointer();
if (!pRaceData)
return Py_BuildException("RaceData has not selected!");
pRaceData->NEW_RegisterMotion(iMode, iMotion, CRaceManager::Instance().GetFullPathFileName(szFileName), iWeight);
return Py_BuildNone();
}
*/
PyObject * chrmgrRegisterCacheMotionData(PyObject* poSelf, PyObject* poArgs)
{
int iMode;
if (!PyTuple_GetInteger(poArgs, 0, &iMode))
return Py_BadArgument();
int iMotion;
if (!PyTuple_GetInteger(poArgs, 1, &iMotion))
return Py_BadArgument();
char * szFileName;
if (!PyTuple_GetString(poArgs, 2, &szFileName))
return Py_BadArgument();
int iWeight = 0;
PyTuple_GetInteger(poArgs, 3, &iWeight);
iWeight = MIN(100, iWeight);
CRaceData * pRaceData = CRaceManager::Instance().GetSelectedRaceDataPointer();
if (!pRaceData)
return Py_BuildException("RaceData has not selected!");
const char * c_szFullFileName = CRaceManager::Instance().GetFullPathFileName(szFileName);
CGraphicThing* pkMotionThing=pRaceData->RegisterMotionData(iMode, iMotion, c_szFullFileName, iWeight);
if (pkMotionThing)
CResourceManager::Instance().LoadStaticCache(pkMotionThing->GetFileName());
return Py_BuildNone();
}
PyObject * chrmgrRegisterMotionData(PyObject* poSelf, PyObject* poArgs)
{
int iMode;
if (!PyTuple_GetInteger(poArgs, 0, &iMode))
return Py_BadArgument();
int iMotion;
if (!PyTuple_GetInteger(poArgs, 1, &iMotion))
return Py_BadArgument();
char * szFileName;
if (!PyTuple_GetString(poArgs, 2, &szFileName))
return Py_BadArgument();
int iWeight = 0;
PyTuple_GetInteger(poArgs, 3, &iWeight);
iWeight = MIN(100, iWeight);
CRaceData * pRaceData = CRaceManager::Instance().GetSelectedRaceDataPointer();
if (!pRaceData)
return Py_BuildException("RaceData has not selected!");
const char * c_szFullFileName = CRaceManager::Instance().GetFullPathFileName(szFileName);
pRaceData->RegisterMotionData(iMode, iMotion, c_szFullFileName, iWeight);
return Py_BuildNone();
}
PyObject * chrmgrRegisterRaceSrcName(PyObject* poSelf, PyObject* poArgs)
{
char * szName;
if (!PyTuple_GetString(poArgs, 0, &szName))
return Py_BadArgument();
char * szSrcName;
if (!PyTuple_GetString(poArgs, 1, &szSrcName))
return Py_BadArgument();
CRaceManager::Instance().RegisterRaceSrcName(szName, szSrcName);
return Py_BuildNone();
}
PyObject * chrmgrRegisterRaceName(PyObject* poSelf, PyObject* poArgs)
{
int iRaceIndex;
if (!PyTuple_GetInteger(poArgs, 0, &iRaceIndex))
return Py_BadArgument();
char * szName;
if (!PyTuple_GetString(poArgs, 1, &szName))
return Py_BadArgument();
CRaceManager::Instance().RegisterRaceName(iRaceIndex, szName);
return Py_BuildNone();
}
PyObject * chrmgrSetShapeModel(PyObject* poSelf, PyObject* poArgs)
{
int eShape;
if (!PyTuple_GetInteger(poArgs, 0, &eShape))
return Py_BadArgument();
char * szFileName;
if (!PyTuple_GetString(poArgs, 1, &szFileName))
return Py_BadArgument();
CRaceData * pRaceData = CRaceManager::Instance().GetSelectedRaceDataPointer();
if (!pRaceData)
return Py_BuildException("RaceData has not selected!");
pRaceData->SetShapeModel(eShape, szFileName);
return Py_BuildNone();
}
PyObject * chrmgrAppendShapeSkin(PyObject* poSelf, PyObject* poArgs)
{
int eShape;
if (!PyTuple_GetInteger(poArgs, 0, &eShape))
return Py_BadArgument();
int ePart;
if (!PyTuple_GetInteger(poArgs, 1, &ePart))
return Py_BadArgument();
char * szSrcFileName;
if (!PyTuple_GetString(poArgs, 2, &szSrcFileName))
return Py_BadArgument();
char * szDstFileName;
if (!PyTuple_GetString(poArgs, 3, &szDstFileName))
return Py_BadArgument();
CRaceData * pRaceData = CRaceManager::Instance().GetSelectedRaceDataPointer();
if (!pRaceData)
return Py_BuildException("RaceData has not selected!");
pRaceData->AppendShapeSkin(eShape, ePart, szSrcFileName, szDstFileName);
return Py_BuildNone();
}
//////////////////////////////////////////////////////////////////////////
// RaceData °ü·Ã ³¡
//////////////////////////////////////////////////////////////////////////
PyObject * chrmgrSetMovingSpeed(PyObject* poSelf, PyObject* poArgs)
{
#ifndef _DISTRIBUTE
int nMovSpd;
if (!PyTuple_GetInteger(poArgs, 0, &nMovSpd))
return Py_BadArgument();
if (nMovSpd<0)
return Py_BuildException("MovingSpeed < 0");
CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
if (!pkInst)
return Py_BuildException("MainCharacter has not selected!");
pkInst->SetMoveSpeed(nMovSpd);
#endif
return Py_BuildNone();
}
PyObject * chrmgrRegisterEffect(PyObject* poSelf, PyObject* poArgs)
{
int eEftType;
if (!PyTuple_GetInteger(poArgs, 0, &eEftType))
return Py_BadArgument();
char * szBoneName;
if (!PyTuple_GetString(poArgs, 1, &szBoneName))
return Py_BadArgument();
char * szPathName;
if (!PyTuple_GetString(poArgs, 2, &szPathName))
return Py_BadArgument();
CInstanceBase::RegisterEffect(eEftType, szBoneName, szPathName, false);
return Py_BuildNone();
}
PyObject * chrmgrRegisterCacheEffect(PyObject* poSelf, PyObject* poArgs)
{
int eEftType;
if (!PyTuple_GetInteger(poArgs, 0, &eEftType))
return Py_BadArgument();
char * szBoneName;
if (!PyTuple_GetString(poArgs, 1, &szBoneName))
return Py_BadArgument();
char * szPathName;
if (!PyTuple_GetString(poArgs, 2, &szPathName))
return Py_BadArgument();
CInstanceBase::RegisterEffect(eEftType, szBoneName, szPathName, true);
return Py_BuildNone();
}
PyObject * chrmgrSetDustGap(PyObject* poSelf, PyObject* poArgs)
{
int nGap;
if (!PyTuple_GetInteger(poArgs, 0, &nGap))
return Py_BadArgument();
CInstanceBase::SetDustGap(nGap);
return Py_BuildNone();
}
PyObject * chrmgrSetHorseDustGap(PyObject* poSelf, PyObject* poArgs)
{
int nGap;
if (!PyTuple_GetInteger(poArgs, 0, &nGap))
return Py_BadArgument();
CInstanceBase::SetHorseDustGap(nGap);
return Py_BuildNone();
}
PyObject * chrmgrToggleDirectionLine(PyObject* poSelf, PyObject* poArgs)
{
static bool s_isVisible=true;
CActorInstance::ShowDirectionLine(s_isVisible);
s_isVisible=!s_isVisible;
return Py_BuildNone();
}
PyObject * chrmgrRegisterPointEffect(PyObject* poSelf, PyObject* poArgs)
{
int iEft;
if (!PyTuple_GetInteger(poArgs, 0, &iEft))
return Py_BadArgument();
char * szFileName;
if (!PyTuple_GetString(poArgs, 1, &szFileName))
return Py_BadArgument();
CPythonCharacterManager& rkChrMgr=CPythonCharacterManager::Instance();
rkChrMgr.RegisterPointEffect(iEft, szFileName);
return Py_BuildNone();
}
PyObject * chrmgrShowPointEffect(PyObject* poSelf, PyObject* poArgs)
{
int nVID;
if (!PyTuple_GetInteger(poArgs, 0, &nVID))
return Py_BadArgument();
int nEft;
if (!PyTuple_GetInteger(poArgs, 1, &nEft))
return Py_BadArgument();
CPythonCharacterManager & rkChrMgr = CPythonCharacterManager::Instance();
rkChrMgr.ShowPointEffect(nEft, nVID >= 0 ? nVID : 0xffffffff);
return Py_BuildNone();
}
void CPythonCharacterManager::SCRIPT_SetAffect(DWORD dwVID, DWORD eState, BOOL isVisible)
{
CInstanceBase * pkInstSel = (dwVID == 0xffffffff) ? GetSelectedInstancePtr() : GetInstancePtr(dwVID);
if (!pkInstSel)
return;
pkInstSel->SCRIPT_SetAffect(eState, isVisible ? true : false);
}
PyObject * chrmgrSetAffect(PyObject* poSelf, PyObject* poArgs)
{
int nVID;
if (!PyTuple_GetInteger(poArgs, 0, &nVID))
return Py_BadArgument();
int nEft;
if (!PyTuple_GetInteger(poArgs, 1, &nEft))
return Py_BadArgument();
int nVisible;
if (!PyTuple_GetInteger(poArgs, 2, &nVisible))
return Py_BadArgument();
CPythonCharacterManager & rkChrMgr = CPythonCharacterManager::Instance();
rkChrMgr.SCRIPT_SetAffect(nVID >= 0 ? nVID : 0xffffffff, nEft, nVisible);
return Py_BuildNone();
}
void CPythonCharacterManager::SetEmoticon(DWORD dwVID, DWORD eState)
{
CInstanceBase * pkInstSel = (dwVID == 0xffffffff) ? GetSelectedInstancePtr() : GetInstancePtr(dwVID);
if (!pkInstSel)
return;
pkInstSel->SetEmoticon(eState);
}
bool CPythonCharacterManager::IsPossibleEmoticon(DWORD dwVID)
{
CInstanceBase * pkInstSel = (dwVID == 0xffffffff) ? GetSelectedInstancePtr() : GetInstancePtr(dwVID);
if (!pkInstSel)
return false;
return pkInstSel->IsPossibleEmoticon();
}
PyObject * chrmgrSetEmoticon(PyObject* poSelf, PyObject* poArgs)
{
int nVID;
if (!PyTuple_GetInteger(poArgs, 0, &nVID))
return Py_BadArgument();
int nEft;
if (!PyTuple_GetInteger(poArgs, 1, &nEft))
return Py_BadArgument();
CPythonCharacterManager & rkChrMgr = CPythonCharacterManager::Instance();
rkChrMgr.SetEmoticon(nVID >= 0 ? nVID : 0xffffffff, nEft);
return Py_BuildNone();
}
PyObject * chrmgrIsPossibleEmoticon(PyObject* poSelf, PyObject* poArgs)
{
int nVID;
if (!PyTuple_GetInteger(poArgs, 0, &nVID))
return Py_BadArgument();
CPythonCharacterManager & rkChrMgr = CPythonCharacterManager::Instance();
int result = rkChrMgr.IsPossibleEmoticon(nVID >= 0 ? nVID : 0xffffffff);
return Py_BuildValue("i", result);
}
void initchrmgr()
{
static PyMethodDef s_methods[] =
{
// RaceData °ü·Ã
{ "SetEmpireNameMode", chrmgrSetEmpireNameMode, METH_VARARGS },
{ "GetVIDInfo", chrmgrGetVIDInfo, METH_VARARGS },
{ "GetPickedVID", chrmgrGetPickedVID, METH_VARARGS },
{ "SetShapeModel", chrmgrSetShapeModel, METH_VARARGS },
{ "AppendShapeSkin", chrmgrAppendShapeSkin, METH_VARARGS },
{ "SetPathName", chrmgrSetPathName, METH_VARARGS },
{ "LoadRaceData", chrmgrLoadRaceData, METH_VARARGS },
{ "LoadLocalRaceData", chrmgrLoadLocalRaceData, METH_VARARGS },
{ "CreateRace", chrmgrCreateRace, METH_VARARGS },
{ "SelectRace", chrmgrSelectRace, METH_VARARGS },
{ "RegisterAttachingBoneName", chrmgrRegisterAttachingBoneName, METH_VARARGS },
{ "RegisterMotionMode", chrmgrRegisterMotionMode, METH_VARARGS },
//{ "RegisterMotion", chrmgrRegisterMotion, METH_VARARGS },
{ "SetMotionRandomWeight", chrmgrSetMotionRandomWeight, METH_VARARGS },
{ "RegisterNormalAttack", chrmgrRegisterNormalAttack, METH_VARARGS },
{ "ReserveComboAttack", chrmgrReserveComboAttack, METH_VARARGS },
{ "RegisterComboAttack", chrmgrRegisterComboAttack, METH_VARARGS },
{ "ReserveComboAttackNew", chrmgrReserveComboAttackNew, METH_VARARGS },
{ "RegisterComboAttackNew", chrmgrRegisterComboAttackNew, METH_VARARGS },
{ "RegisterMotionData", chrmgrRegisterMotionData, METH_VARARGS },
{ "RegisterRaceName", chrmgrRegisterRaceName, METH_VARARGS },
{ "RegisterRaceSrcName", chrmgrRegisterRaceSrcName, METH_VARARGS },
{ "RegisterCacheMotionData", chrmgrRegisterCacheMotionData, METH_VARARGS },
// ETC
{ "SetAffect", chrmgrSetAffect, METH_VARARGS },
{ "SetEmoticon", chrmgrSetEmoticon, METH_VARARGS },
{ "IsPossibleEmoticon", chrmgrIsPossibleEmoticon, METH_VARARGS },
{ "RegisterEffect", chrmgrRegisterEffect, METH_VARARGS },
{ "RegisterCacheEffect", chrmgrRegisterCacheEffect, METH_VARARGS },
{ "RegisterPointEffect", chrmgrRegisterPointEffect, METH_VARARGS },
{ "ShowPointEffect", chrmgrShowPointEffect, METH_VARARGS },
{ "ToggleDirectionLine", chrmgrToggleDirectionLine, METH_VARARGS },
{ "SetMovingSpeed", chrmgrSetMovingSpeed, METH_VARARGS },
{ "SetDustGap", chrmgrSetDustGap, METH_VARARGS },
{ "SetHorseDustGap", chrmgrSetHorseDustGap, METH_VARARGS },
{ "RegisterTitleName", chrmgrRegisterTitleName, METH_VARARGS },
{ "RegisterNameColor", chrmgrRegisterNameColor, METH_VARARGS },
{ "RegisterTitleColor", chrmgrRegisterTitleColor, METH_VARARGS },
{ NULL, NULL, NULL },
};
PyObject * poModule = Py_InitModule("chrmgr", s_methods);
PyModule_AddIntConstant(poModule, "NAMECOLOR_MOB", CInstanceBase::NAMECOLOR_NORMAL_MOB);
PyModule_AddIntConstant(poModule, "NAMECOLOR_NPC", CInstanceBase::NAMECOLOR_NORMAL_NPC);
PyModule_AddIntConstant(poModule, "NAMECOLOR_PC", CInstanceBase::NAMECOLOR_NORMAL_PC);
PyModule_AddIntConstant(poModule, "NAMECOLOR_EMPIRE_MOB", CInstanceBase::NAMECOLOR_EMPIRE_MOB);
PyModule_AddIntConstant(poModule, "NAMECOLOR_EMPIRE_NPC", CInstanceBase::NAMECOLOR_EMPIRE_NPC);
PyModule_AddIntConstant(poModule, "NAMECOLOR_EMPIRE_PC", CInstanceBase::NAMECOLOR_EMPIRE_PC);
PyModule_AddIntConstant(poModule, "NAMECOLOR_FUNC", CInstanceBase::NAMECOLOR_FUNC);
PyModule_AddIntConstant(poModule, "NAMECOLOR_PK", CInstanceBase::NAMECOLOR_PK);
PyModule_AddIntConstant(poModule, "NAMECOLOR_PVP", CInstanceBase::NAMECOLOR_PVP);
PyModule_AddIntConstant(poModule, "NAMECOLOR_PARTY", CInstanceBase::NAMECOLOR_PARTY);
PyModule_AddIntConstant(poModule, "NAMECOLOR_WARP", CInstanceBase::NAMECOLOR_WARP);
PyModule_AddIntConstant(poModule, "NAMECOLOR_WAYPOINT", CInstanceBase::NAMECOLOR_WAYPOINT);
PyModule_AddIntConstant(poModule, "NAMECOLOR_EXTRA", CInstanceBase::NAMECOLOR_EXTRA);
PyModule_AddIntConstant(poModule, "EFFECT_SPAWN_DISAPPEAR", CInstanceBase::EFFECT_SPAWN_DISAPPEAR);
PyModule_AddIntConstant(poModule, "EFFECT_SPAWN_APPEAR", CInstanceBase::EFFECT_SPAWN_APPEAR);
PyModule_AddIntConstant(poModule, "EFFECT_DUST", CInstanceBase::EFFECT_DUST);
PyModule_AddIntConstant(poModule, "EFFECT_HORSE_DUST", CInstanceBase::EFFECT_HORSE_DUST);
PyModule_AddIntConstant(poModule, "EFFECT_STUN", CInstanceBase::EFFECT_STUN);
PyModule_AddIntConstant(poModule, "EFFECT_HIT", CInstanceBase::EFFECT_HIT);
PyModule_AddIntConstant(poModule, "EFFECT_FLAME_ATTACK", CInstanceBase::EFFECT_FLAME_ATTACK);
PyModule_AddIntConstant(poModule, "EFFECT_FLAME_HIT", CInstanceBase::EFFECT_FLAME_HIT);
PyModule_AddIntConstant(poModule, "EFFECT_FLAME_ATTACH", CInstanceBase::EFFECT_FLAME_ATTACH);
PyModule_AddIntConstant(poModule, "EFFECT_ELECTRIC_ATTACK", CInstanceBase::EFFECT_ELECTRIC_ATTACK);
PyModule_AddIntConstant(poModule, "EFFECT_ELECTRIC_HIT", CInstanceBase::EFFECT_ELECTRIC_HIT);
PyModule_AddIntConstant(poModule, "EFFECT_ELECTRIC_ATTACH", CInstanceBase::EFFECT_ELECTRIC_ATTACH);
PyModule_AddIntConstant(poModule, "EFFECT_SELECT", CInstanceBase::EFFECT_SELECT);
PyModule_AddIntConstant(poModule, "EFFECT_TARGET", CInstanceBase::EFFECT_TARGET);
PyModule_AddIntConstant(poModule, "EFFECT_CRITICAL", CInstanceBase::EFFECT_CRITICAL);
PyModule_AddIntConstant(poModule, "EFFECT_DAMAGE_TARGET", CInstanceBase::EFFECT_DAMAGE_TARGET);
PyModule_AddIntConstant(poModule, "EFFECT_DAMAGE_NOT_TARGET", CInstanceBase::EFFECT_DAMAGE_NOT_TARGET);
PyModule_AddIntConstant(poModule, "EFFECT_DAMAGE_SELFDAMAGE", CInstanceBase::EFFECT_DAMAGE_SELFDAMAGE);
PyModule_AddIntConstant(poModule, "EFFECT_DAMAGE_SELFDAMAGE2", CInstanceBase::EFFECT_DAMAGE_SELFDAMAGE2);
PyModule_AddIntConstant(poModule, "EFFECT_DAMAGE_POISON", CInstanceBase::EFFECT_DAMAGE_POISON);
PyModule_AddIntConstant(poModule, "EFFECT_DAMAGE_MISS", CInstanceBase::EFFECT_DAMAGE_MISS);
PyModule_AddIntConstant(poModule, "EFFECT_DAMAGE_TARGETMISS", CInstanceBase::EFFECT_DAMAGE_TARGETMISS);
PyModule_AddIntConstant(poModule, "EFFECT_DAMAGE_CRITICAL", CInstanceBase::EFFECT_DAMAGE_CRITICAL);
PyModule_AddIntConstant(poModule, "EFFECT_LEVELUP", CInstanceBase::EFFECT_LEVELUP);
PyModule_AddIntConstant(poModule, "EFFECT_SKILLUP", CInstanceBase::EFFECT_SKILLUP);
PyModule_AddIntConstant(poModule, "EFFECT_HPUP_RED", CInstanceBase::EFFECT_HPUP_RED);
PyModule_AddIntConstant(poModule, "EFFECT_SPUP_BLUE", CInstanceBase::EFFECT_SPUP_BLUE);
PyModule_AddIntConstant(poModule, "EFFECT_SPEEDUP_GREEN", CInstanceBase::EFFECT_SPEEDUP_GREEN);
PyModule_AddIntConstant(poModule, "EFFECT_DXUP_PURPLE", CInstanceBase::EFFECT_DXUP_PURPLE);
PyModule_AddIntConstant(poModule, "EFFECT_PENETRATE", CInstanceBase::EFFECT_PENETRATE);
PyModule_AddIntConstant(poModule, "EFFECT_BLOCK", CInstanceBase::EFFECT_BLOCK);
PyModule_AddIntConstant(poModule, "EFFECT_DODGE", CInstanceBase::EFFECT_DODGE);
PyModule_AddIntConstant(poModule, "EFFECT_FIRECRACKER", CInstanceBase::EFFECT_FIRECRACKER);
PyModule_AddIntConstant(poModule, "EFFECT_SPIN_TOP", CInstanceBase::EFFECT_SPIN_TOP);
PyModule_AddIntConstant(poModule, "EFFECT_WEAPON", CInstanceBase::EFFECT_WEAPON);
PyModule_AddIntConstant(poModule, "EFFECT_AFFECT", CInstanceBase::EFFECT_AFFECT);
PyModule_AddIntConstant(poModule, "EFFECT_EMOTICON", CInstanceBase::EFFECT_EMOTICON);
PyModule_AddIntConstant(poModule, "EFFECT_EMPIRE", CInstanceBase::EFFECT_EMPIRE);
PyModule_AddIntConstant(poModule, "EFFECT_REFINED", CInstanceBase::EFFECT_REFINED);
PyModule_AddIntConstant(poModule, "EFFECT_SUCCESS", CInstanceBase::EFFECT_SUCCESS) ;
PyModule_AddIntConstant(poModule, "EFFECT_FAIL", CInstanceBase::EFFECT_FAIL) ;
PyModule_AddIntConstant(poModule, "EFFECT_FR_SUCCESS", CInstanceBase::EFFECT_FR_SUCCESS) ;
PyModule_AddIntConstant(poModule, "EFFECT_LEVELUP_ON_14_FOR_GERMANY", CInstanceBase::EFFECT_LEVELUP_ON_14_FOR_GERMANY ); //·¹º§¾÷ 14À϶§ ( µ¶ÀÏÀü¿ë )
PyModule_AddIntConstant(poModule, "EFFECT_LEVELUP_UNDER_15_FOR_GERMANY", CInstanceBase::EFFECT_LEVELUP_UNDER_15_FOR_GERMANY );//·¹º§¾÷ 15À϶§ ( µ¶ÀÏÀü¿ë )
PyModule_AddIntConstant(poModule, "EFFECT_PERCENT_DAMAGE1", CInstanceBase::EFFECT_PERCENT_DAMAGE1);
PyModule_AddIntConstant(poModule, "EFFECT_PERCENT_DAMAGE2", CInstanceBase::EFFECT_PERCENT_DAMAGE2);
PyModule_AddIntConstant(poModule, "EFFECT_PERCENT_DAMAGE3", CInstanceBase::EFFECT_PERCENT_DAMAGE3);
// ÀÚµ¿¹°¾à HP, SP
PyModule_AddIntConstant(poModule, "EFFECT_AUTO_HPUP", CInstanceBase::EFFECT_AUTO_HPUP);
PyModule_AddIntConstant(poModule, "EFFECT_AUTO_SPUP", CInstanceBase::EFFECT_AUTO_SPUP);
PyModule_AddIntConstant(poModule, "EFFECT_RAMADAN_RING_EQUIP", CInstanceBase::EFFECT_RAMADAN_RING_EQUIP);
PyModule_AddIntConstant(poModule, "EFFECT_HALLOWEEN_CANDY_EQUIP", CInstanceBase::EFFECT_HALLOWEEN_CANDY_EQUIP);
PyModule_AddIntConstant(poModule, "EFFECT_HAPPINESS_RING_EQUIP", CInstanceBase::EFFECT_HAPPINESS_RING_EQUIP);
PyModule_AddIntConstant(poModule, "EFFECT_LOVE_PENDANT_EQUIP", CInstanceBase::EFFECT_LOVE_PENDANT_EQUIP);
}