2
0
mirror of https://github.com/rehlds/reapi.git synced 2025-04-23 14:53:44 +03:00

GetMessageData: Fixed Coord/Angle float amx conversion Fixes #332

This commit is contained in:
s1lentq 2025-03-29 03:33:05 +07:00
parent f08c8b7072
commit 94264bd89a
2 changed files with 18 additions and 7 deletions

View File

@ -188,7 +188,7 @@ cell AMX_NATIVE_CALL SetMessageData(AMX *amx, cell *params)
break;
case IMessage::ParamType::Angle:
case IMessage::ParamType::Coord:
g_activeMessageContext->setParamFloat(number, *(float *)value);
g_activeMessageContext->setParamFloat(number, amx_CellToFloat(*value));
break;
case IMessage::ParamType::Byte:
case IMessage::ParamType::Char:
@ -266,10 +266,11 @@ cell AMX_NATIVE_CALL GetMessageData(AMX *amx, cell *params)
case IMessage::ParamType::Angle:
case IMessage::ParamType::Coord:
{
float flValue = g_activeMessageContext->getParamFloat(number);
cell value = amx_FloatToCell(g_activeMessageContext->getParamFloat(number));
if (PARAMS_COUNT > 2)
*dstAddr = flValue;
return flValue;
*dstAddr = value;
return value;
}
case IMessage::ParamType::Entity:
case IMessage::ParamType::Byte:
@ -346,10 +347,10 @@ cell AMX_NATIVE_CALL GetMessageOrigData(AMX *amx, cell *params)
case IMessage::ParamType::Angle:
case IMessage::ParamType::Coord:
{
float flValue = g_activeMessageContext->getOriginalParamFloat(number);
cell value = amx_FloatToCell(g_activeMessageContext->getOriginalParamFloat(number));
if (PARAMS_COUNT > 2)
*dstAddr = flValue;
return flValue;
*dstAddr = value;
return value;
}
case IMessage::ParamType::Entity:
case IMessage::ParamType::Byte:

View File

@ -97,6 +97,16 @@ inline size_t indexOfPDataAmx(const T* pdata)
return index;
}
inline cell amx_FloatToCell(REAL x)
{
return *(cell *)&x;
}
inline float amx_CellToFloat(cell x)
{
return *(REAL *)&x;
}
inline cell getAmxVector(Vector& vec)
{
return g_amxxapi.PrepareCellArrayA(reinterpret_cast<cell *>(&vec), 3, true);