small fixes regarding throwing pts around to python and back

This commit is contained in:
d1str4ught
2025-08-22 19:58:14 +02:00
parent 66bcca77c2
commit 5b71a1e352
20 changed files with 86 additions and 56 deletions

View File

@@ -17,10 +17,10 @@ PyObject* grpCreateTextBar(PyObject* poSelf, PyObject* poArgs)
if (!pTextBar->Create(NULL, iWidth, iHeight))
{
delete pTextBar;
return Py_BuildValue("i", NULL);
return Py_BuildValue("K", NULL);
}
return Py_BuildValue("i", pTextBar);
return Py_BuildValue("K", pTextBar);
}
PyObject* grpCreateBigTextBar(PyObject* poSelf, PyObject* poArgs)
@@ -40,16 +40,16 @@ PyObject* grpCreateBigTextBar(PyObject* poSelf, PyObject* poArgs)
if (!pTextBar->Create(NULL, iWidth, iHeight))
{
delete pTextBar;
return Py_BuildValue("i", NULL);
return Py_BuildValue("K", NULL);
}
return Py_BuildValue("i", pTextBar);
return Py_BuildValue("K", pTextBar);
}
PyObject* grpDestroyTextBar(PyObject* poSelf, PyObject* poArgs)
{
int iHandle;
if (!PyTuple_GetInteger(poArgs, 0, &iHandle))
unsigned long long iHandle;
if (!PyTuple_GetUnsignedLongLong(poArgs, 0, &iHandle))
return Py_BuildException();
CTextBar * pTextBar = (CTextBar *)iHandle;
@@ -60,8 +60,8 @@ PyObject* grpDestroyTextBar(PyObject* poSelf, PyObject* poArgs)
PyObject* grpRenderTextBar(PyObject* poSelf, PyObject* poArgs)
{
int iHandle;
if (!PyTuple_GetInteger(poArgs, 0, &iHandle))
unsigned long long iHandle;
if (!PyTuple_GetUnsignedLongLong(poArgs, 0, &iHandle))
return Py_BuildException();
int ix;
if (!PyTuple_GetInteger(poArgs, 1, &ix))
@@ -79,8 +79,8 @@ PyObject* grpRenderTextBar(PyObject* poSelf, PyObject* poArgs)
PyObject* grpTextBarSetTextColor(PyObject* poSelf, PyObject* poArgs)
{
int iHandle;
if (!PyTuple_GetInteger(poArgs, 0, &iHandle))
unsigned long long iHandle;
if (!PyTuple_GetUnsignedLongLong(poArgs, 0, &iHandle))
return Py_BuildException();
int r;
if (!PyTuple_GetInteger(poArgs, 1, &r))
@@ -101,8 +101,8 @@ PyObject* grpTextBarSetTextColor(PyObject* poSelf, PyObject* poArgs)
PyObject* grpTextBarGetTextExtent(PyObject* poSelf, PyObject* poArgs)
{
int iHandle;
if (!PyTuple_GetInteger(poArgs, 0, &iHandle))
unsigned long long iHandle;
if (!PyTuple_GetUnsignedLongLong(poArgs, 0, &iHandle))
return Py_BuildException();
char * szText;
if (!PyTuple_GetString(poArgs, 1, &szText))
@@ -118,8 +118,8 @@ PyObject* grpTextBarGetTextExtent(PyObject* poSelf, PyObject* poArgs)
PyObject* grpTextBarTextOut(PyObject* poSelf, PyObject* poArgs)
{
int iHandle;
if (!PyTuple_GetInteger(poArgs, 0, &iHandle))
unsigned long long iHandle;
if (!PyTuple_GetUnsignedLongLong(poArgs, 0, &iHandle))
return Py_BuildException();
int ix;
if (!PyTuple_GetInteger(poArgs, 1, &ix))
@@ -140,8 +140,8 @@ PyObject* grpTextBarTextOut(PyObject* poSelf, PyObject* poArgs)
PyObject* grpClearTextBar(PyObject* poSelf, PyObject* poArgs)
{
int iHandle;
if (!PyTuple_GetInteger(poArgs, 0, &iHandle))
unsigned long long iHandle;
if (!PyTuple_GetUnsignedLongLong(poArgs, 0, &iHandle))
return Py_BuildException();
CTextBar * pTextBar = (CTextBar *)iHandle;
@@ -153,8 +153,8 @@ PyObject* grpClearTextBar(PyObject* poSelf, PyObject* poArgs)
PyObject* grpSetTextBarClipRect(PyObject* poSelf, PyObject* poArgs)
{
int iHandle;
if (!PyTuple_GetInteger(poArgs, 0, &iHandle))
unsigned long long iHandle;
if (!PyTuple_GetUnsignedLongLong(poArgs, 0, &iHandle))
return Py_BuildException();
int isx;
if (!PyTuple_GetInteger(poArgs, 1, &isx))

View File

@@ -1147,8 +1147,8 @@ PyObject * wndMgrSetSlot(PyObject * poSelf, PyObject * poArgs)
if (!PyTuple_GetInteger(poArgs, 4, &iHeight))
return Py_BuildException();
int iImageHandle;
if (!PyTuple_GetInteger(poArgs, 5, &iImageHandle))
unsigned long long iImageHandle;
if (!PyTuple_GetUnsignedLongLong(poArgs, 5, &iImageHandle))
return Py_BuildException();
D3DXCOLOR diffuseColor;

View File

@@ -221,7 +221,7 @@ void CGuildMarkImage::GetDiffBlocks(const DWORD * crcList, std::map<uint8_t, con
}
}
void CGuildMarkImage::GetBlockCRCList(DWORD * crcList)
void CGuildMarkImage::GetBlockCRCList(uint32_t* crcList)
{
for (DWORD row = 0; row < BLOCK_ROW_COUNT; ++row)
for (DWORD col = 0; col < BLOCK_COL_COUNT; ++col)

View File

@@ -88,7 +88,7 @@ class CGuildMarkImage
DWORD GetEmptyPosition(); // 빈 마크 위치를 얻는다.
void GetBlockCRCList(DWORD * crcList);
void GetBlockCRCList(uint32_t* crcList);
void GetDiffBlocks(const DWORD * crcList, std::map<uint8_t, const SGuildMarkBlock *> & mapDiffBlocks);
private:

View File

@@ -296,7 +296,7 @@ bool CGuildMarkManager::SaveBlockFromCompressedData(DWORD imgIdx, DWORD posBlock
}
// CLIENT
bool CGuildMarkManager::GetBlockCRCList(DWORD imgIdx, DWORD * crcList)
bool CGuildMarkManager::GetBlockCRCList(DWORD imgIdx, uint32_t* crcList)
{
// 클라이언트에서 서버에 없는 이미지를 요청할 수는 없다.
if (m_mapIdx_Image.end() == m_mapIdx_Image.find(imgIdx))

View File

@@ -52,7 +52,7 @@ class CGuildMarkManager : public singleton<CGuildMarkManager>
// CLIENT
bool SaveBlockFromCompressedData(DWORD imgIdx, DWORD idBlock, const uint8_t * pbBlock, DWORD dwSize);
bool GetBlockCRCList(DWORD imgIdx, DWORD * crcList);
bool GetBlockCRCList(DWORD imgIdx, uint32_t * crcList);
private:
//

View File

@@ -1228,7 +1228,7 @@ typedef struct command_player_create
uint16_t job;
uint8_t shape;
uint8_t CON;
uint8_t int32_t;
uint8_t INT;
uint8_t STR;
uint8_t DEX;
} TPacketCGCreateCharacter;

View File

@@ -1281,7 +1281,7 @@ bool CPythonApplication::Create(PyObject * poSelf, const char * c_szName, int wi
return true;
}
void CPythonApplication::SetGlobalCenterPosition(LONG x, LONG y)
void CPythonApplication::SetGlobalCenterPosition(int32_t x, int32_t y)
{
CPythonBackground& rkBG=CPythonBackground::Instance();
rkBG.GlobalPositionToLocalPosition(x, y);

View File

@@ -184,7 +184,7 @@ class CPythonApplication : public CMSApplication, public CInputKeyboard, public
int GetWidth();
int GetHeight();
void SetGlobalCenterPosition(LONG x, LONG y);
void SetGlobalCenterPosition(int32_t x, int32_t y);
void SetCenterPosition(float fx, float fy, float fz);
void GetCenterPosition(TPixelPosition * pPixelPosition);
void SetCamera(float Distance, float Pitch, float Rotation, float fDestinationHeight);

View File

@@ -1062,13 +1062,13 @@ PyObject * appOpenTextFile(PyObject * poSelf, PyObject * poArgs)
CTextLineLoader * pTextLineLoader = new CTextLineLoader(szFileName);
return Py_BuildValue("i", (int)pTextLineLoader);
return Py_BuildValue("K", pTextLineLoader);
}
PyObject * appCloseTextFile(PyObject * poSelf, PyObject * poArgs)
{
int iHandle;
if (!PyTuple_GetInteger(poArgs, 0, &iHandle))
unsigned long long iHandle;
if (!PyTuple_GetUnsignedLongLong(poArgs, 0, &iHandle))
return Py_BuildException();
CTextLineLoader * pTextFileLoader = (CTextLineLoader *)iHandle;
@@ -1079,8 +1079,8 @@ PyObject * appCloseTextFile(PyObject * poSelf, PyObject * poArgs)
PyObject * appGetTextFileLineCount(PyObject * poSelf, PyObject * poArgs)
{
int iHandle;
if (!PyTuple_GetInteger(poArgs, 0, &iHandle))
unsigned long long iHandle;
if (!PyTuple_GetUnsignedLongLong(poArgs, 0, &iHandle))
return Py_BuildException();
CTextLineLoader * pTextFileLoader = (CTextLineLoader *)iHandle;
@@ -1089,8 +1089,8 @@ PyObject * appGetTextFileLineCount(PyObject * poSelf, PyObject * poArgs)
PyObject * appGetTextFileLine(PyObject * poSelf, PyObject * poArgs)
{
int iHandle;
if (!PyTuple_GetInteger(poArgs, 0, &iHandle))
unsigned long long iHandle;
if (!PyTuple_GetUnsignedLongLong(poArgs, 0, &iHandle))
return Py_BuildException();
int iLineIndex;
if (!PyTuple_GetInteger(poArgs, 1, &iLineIndex))

View File

@@ -702,18 +702,30 @@ void CPythonBackground::SetBackgroundDirLight()
STATEMANAGER.SetLight(0, &mc_pcurEnvironmentData->DirLights[ENV_DIRLIGHT_BACKGROUND]);
}
void CPythonBackground::GlobalPositionToLocalPosition(LONG& rGlobalX, LONG& rGlobalY)
void CPythonBackground::GlobalPositionToLocalPosition(int32_t& rGlobalX, int32_t& rGlobalY)
{
rGlobalX-=m_dwBaseX;
rGlobalY-=m_dwBaseY;
}
void CPythonBackground::LocalPositionToGlobalPosition(LONG& rLocalX, LONG& rLocalY)
void CPythonBackground::LocalPositionToGlobalPosition(int32_t& rLocalX, int32_t& rLocalY)
{
rLocalX+=m_dwBaseX;
rLocalY+=m_dwBaseY;
}
void CPythonBackground::GlobalPositionToLocalPosition(uint32_t& rGlobalX, uint32_t& rGlobalY)
{
rGlobalX -= m_dwBaseX;
rGlobalY -= m_dwBaseY;
}
void CPythonBackground::LocalPositionToGlobalPosition(uint32_t& rLocalX, uint32_t& rLocalY)
{
rLocalX += m_dwBaseX;
rLocalY += m_dwBaseY;
}
void CPythonBackground::RegisterDungeonMapName(const char * c_szMapName)
{
m_kSet_strDungeonMapName.insert(c_szMapName);

View File

@@ -61,8 +61,11 @@ public:
void Destroy();
void Create();
void GlobalPositionToLocalPosition(LONG& rGlobalX, LONG& rGlobalY);
void LocalPositionToGlobalPosition(LONG& rLocalX, LONG& rLocalY);
void GlobalPositionToLocalPosition(int32_t& rGlobalX, int32_t& rGlobalY);
void LocalPositionToGlobalPosition(int32_t& rLocalX, int32_t& rLocalY);
void GlobalPositionToLocalPosition(uint32_t& rGlobalX, uint32_t& rGlobalY);
void LocalPositionToGlobalPosition(uint32_t& rLocalX, uint32_t& rLocalY);
void EnableTerrainOnlyForHeight();
bool SetSplatLimit(int iSplatNum);

View File

@@ -449,8 +449,8 @@ PyObject * backgroundGlobalPositionToLocalPosition(PyObject * poSelf, PyObject *
if (!PyTuple_GetInteger(poArgs, 1, &iY))
return Py_BadArgument();
LONG lX=iX;
LONG lY=iY;
int32_t lX=iX;
int32_t lY=iY;
CPythonBackground& rkBG=CPythonBackground::Instance();
rkBG.GlobalPositionToLocalPosition(lX, lY);

View File

@@ -98,8 +98,8 @@ PyObject * chrmgrGetVIDInfo(PyObject* poSelf, PyObject* poArgs)
TPixelPosition kPPosInst;
pkInstBase->NEW_GetPixelPosition(&kPPosInst);
LONG xInst=kPPosInst.x;
LONG yInst=kPPosInst.y;
int32_t xInst=kPPosInst.x;
int32_t yInst=kPPosInst.y;
CPythonBackground& rkBG=CPythonBackground::Instance();
rkBG.LocalPositionToGlobalPosition(xInst, yInst);

View File

@@ -92,7 +92,7 @@ PyObject * itemGetIconImage(PyObject * poSelf, PyObject * poArgs)
// CGraphicImage * pImage = (CGraphicImage *)CResourceManager::Instance().GetResourcePointer(szItemName);
// }
return Py_BuildValue("i", pItemData->GetIconImage());
return Py_BuildValue("K", pItemData->GetIconImage());
}
PyObject * itemGetIconImageFileName(PyObject * poSelf, PyObject * poArgs)

View File

@@ -583,8 +583,11 @@ class CPythonNetworkStream : public CNetworkStream, public CSingleton<CPythonNet
void __InitializeGamePhase();
void __InitializeMarkAuth();
void __GlobalPositionToLocalPosition(LONG& rGlobalX, LONG& rGlobalY);
void __LocalPositionToGlobalPosition(LONG& rLocalX, LONG& rLocalY);
void __GlobalPositionToLocalPosition(int32_t& rGlobalX, int32_t& rGlobalY);
void __LocalPositionToGlobalPosition(int32_t& rLocalX, int32_t& rLocalY);
void __GlobalPositionToLocalPosition(uint32_t& rGlobalX, uint32_t& rGlobalY);
void __LocalPositionToGlobalPosition(uint32_t& rLocalX, uint32_t& rLocalY);
bool __IsPlayerAttacking();
bool __IsEquipItemInSlot(TItemPos Cell);

View File

@@ -823,8 +823,8 @@ void CPythonNetworkStream::Warp(LONG lGlobalX, LONG lGlobalY)
// NOTE : Warp 했을때 CenterPosition의 Height가 0이기 때문에 카메라가 땅바닥에 박혀있게 됨
// 움직일때마다 Height가 갱신 되기 때문이므로 맵을 이동하면 Position을 강제로 한번
// 셋팅해준다 - [levites]
LONG lLocalX = lGlobalX;
LONG lLocalY = lGlobalY;
int32_t lLocalX = lGlobalX;
int32_t lLocalY = lGlobalY;
__GlobalPositionToLocalPosition(lLocalX, lLocalY);
float fHeight = CPythonBackground::Instance().GetHeight(float(lLocalX), float(lLocalY));

View File

@@ -11,18 +11,30 @@
void CPythonNetworkStream::__GlobalPositionToLocalPosition(LONG& rGlobalX, LONG& rGlobalY)
void CPythonNetworkStream::__GlobalPositionToLocalPosition(int32_t& rGlobalX, int32_t& rGlobalY)
{
CPythonBackground&rkBgMgr=CPythonBackground::Instance();
rkBgMgr.GlobalPositionToLocalPosition(rGlobalX, rGlobalY);
}
void CPythonNetworkStream::__LocalPositionToGlobalPosition(LONG& rLocalX, LONG& rLocalY)
void CPythonNetworkStream::__LocalPositionToGlobalPosition(int32_t& rLocalX, int32_t& rLocalY)
{
CPythonBackground&rkBgMgr=CPythonBackground::Instance();
rkBgMgr.LocalPositionToGlobalPosition(rLocalX, rLocalY);
}
void CPythonNetworkStream::__GlobalPositionToLocalPosition(uint32_t& rGlobalX, uint32_t& rGlobalY)
{
CPythonBackground& rkBgMgr = CPythonBackground::Instance();
rkBgMgr.GlobalPositionToLocalPosition(rGlobalX, rGlobalY);
}
void CPythonNetworkStream::__LocalPositionToGlobalPosition(uint32_t& rLocalX, uint32_t& rLocalY)
{
CPythonBackground& rkBgMgr = CPythonBackground::Instance();
rkBgMgr.LocalPositionToGlobalPosition(rLocalX, rLocalY);
}
bool CPythonNetworkStream::__CanActMainInstance()
{
CPythonCharacterManager& rkChrMgr=CPythonCharacterManager::Instance();

View File

@@ -1926,9 +1926,9 @@ PyObject * playerGetEmotionIconImage(PyObject* poSelf, PyObject* poArgs)
return Py_BuildException();
if (m_kMap_iEmotionIndex_pkIconImage.end() == m_kMap_iEmotionIndex_pkIconImage.find(iIndex))
return Py_BuildValue("i", 0);
return Py_BuildValue("K", 0);
return Py_BuildValue("i", m_kMap_iEmotionIndex_pkIconImage[iIndex]);
return Py_BuildValue("K", m_kMap_iEmotionIndex_pkIconImage[iIndex]);
}
PyObject * playerSetItemData(PyObject* poSelf, PyObject* poArgs)

View File

@@ -2016,9 +2016,9 @@ PyObject * skillGetIconImage(PyObject * poSelf, PyObject * poArgs)
CPythonSkill::SSkillData * c_pSkillData;
if (!CPythonSkill::Instance().GetSkillData(iSkillIndex, &c_pSkillData))
return Py_BuildValue("i", 0); // 익셉션을 내는 대신 0을 리턴한다.
return Py_BuildValue("K", 0); // 익셉션을 내는 대신 0을 리턴한다.
return Py_BuildValue("i", c_pSkillData->pImage);
return Py_BuildValue("K", c_pSkillData->pImage);
}
@@ -2036,7 +2036,7 @@ PyObject * skillGetIconInstance(PyObject * poSelf, PyObject * poArgs)
CGraphicImageInstance * pImageInstance = CGraphicImageInstance::New();
pImageInstance->SetImagePointer(c_pSkillData->pImage);
return Py_BuildValue("i", pImageInstance);
return Py_BuildValue("K", pImageInstance);
}
PyObject * skillGetIconImageNew(PyObject * poSelf, PyObject * poArgs)
@@ -2059,7 +2059,7 @@ PyObject * skillGetIconImageNew(PyObject * poSelf, PyObject * poArgs)
if (iGradeIndex >= CPythonSkill::SKILL_GRADE_COUNT)
iGradeIndex = CPythonSkill::SKILL_GRADE_COUNT-1;
return Py_BuildValue("i", c_pSkillData->GradeData[iGradeIndex].pImage);
return Py_BuildValue("K", c_pSkillData->GradeData[iGradeIndex].pImage);
}
PyObject * skillGetIconInstanceNew(PyObject * poSelf, PyObject * poArgs)
@@ -2087,7 +2087,7 @@ PyObject * skillGetIconInstanceNew(PyObject * poSelf, PyObject * poArgs)
CGraphicImageInstance * pImageInstance = CGraphicImageInstance::New();
pImageInstance->SetImagePointer(c_pSkillData->GradeData[iGradeIndex].pImage);
return Py_BuildValue("i", pImageInstance);
return Py_BuildValue("K", pImageInstance);
}
PyObject * skillDeleteIconInstance(PyObject * poSelf, PyObject * poArgs)