2
0
mirror of https://github.com/rehlds/reapi.git synced 2025-04-23 06:43:42 +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; break;
case IMessage::ParamType::Angle: case IMessage::ParamType::Angle:
case IMessage::ParamType::Coord: case IMessage::ParamType::Coord:
g_activeMessageContext->setParamFloat(number, *(float *)value); g_activeMessageContext->setParamFloat(number, amx_CellToFloat(*value));
break; break;
case IMessage::ParamType::Byte: case IMessage::ParamType::Byte:
case IMessage::ParamType::Char: case IMessage::ParamType::Char:
@ -266,10 +266,11 @@ cell AMX_NATIVE_CALL GetMessageData(AMX *amx, cell *params)
case IMessage::ParamType::Angle: case IMessage::ParamType::Angle:
case IMessage::ParamType::Coord: case IMessage::ParamType::Coord:
{ {
float flValue = g_activeMessageContext->getParamFloat(number); cell value = amx_FloatToCell(g_activeMessageContext->getParamFloat(number));
if (PARAMS_COUNT > 2) if (PARAMS_COUNT > 2)
*dstAddr = flValue; *dstAddr = value;
return flValue;
return value;
} }
case IMessage::ParamType::Entity: case IMessage::ParamType::Entity:
case IMessage::ParamType::Byte: case IMessage::ParamType::Byte:
@ -346,10 +347,10 @@ cell AMX_NATIVE_CALL GetMessageOrigData(AMX *amx, cell *params)
case IMessage::ParamType::Angle: case IMessage::ParamType::Angle:
case IMessage::ParamType::Coord: case IMessage::ParamType::Coord:
{ {
float flValue = g_activeMessageContext->getOriginalParamFloat(number); cell value = amx_FloatToCell(g_activeMessageContext->getOriginalParamFloat(number));
if (PARAMS_COUNT > 2) if (PARAMS_COUNT > 2)
*dstAddr = flValue; *dstAddr = value;
return flValue; return value;
} }
case IMessage::ParamType::Entity: case IMessage::ParamType::Entity:
case IMessage::ParamType::Byte: case IMessage::ParamType::Byte:

View File

@ -97,6 +97,16 @@ inline size_t indexOfPDataAmx(const T* pdata)
return index; 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) inline cell getAmxVector(Vector& vec)
{ {
return g_amxxapi.PrepareCellArrayA(reinterpret_cast<cell *>(&vec), 3, true); return g_amxxapi.PrepareCellArrayA(reinterpret_cast<cell *>(&vec), 3, true);