mirror of
https://github.com/rehlds/reapi.git
synced 2024-12-28 15:45:31 +03:00
Some fixes
This commit is contained in:
parent
daac725d34
commit
2e4ef61e9e
@ -123,7 +123,14 @@ cell AMX_NATIVE_CALL SetHookChainReturn(AMX *amx, cell *params)
|
|||||||
|
|
||||||
if (unlikely(params[arg_type] != retVal.type))
|
if (unlikely(params[arg_type] != retVal.type))
|
||||||
{
|
{
|
||||||
AMXX_LogError(amx, AMX_ERR_NATIVE, "%s: trying to set return value with incompatible type.", __FUNCTION__);
|
AMXX_LogError(amx, AMX_ERR_NATIVE,
|
||||||
|
"%s: trying to set return value with incompatible type, expected '%s'; got '%s'",
|
||||||
|
__FUNCTION__,
|
||||||
|
getATypeStr(retVal.type),
|
||||||
|
getATypeStr(static_cast<AType>(params[arg_type]))
|
||||||
|
);
|
||||||
|
|
||||||
|
printf("> SetHookChainReturn: called #3\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -136,6 +143,9 @@ cell AMX_NATIVE_CALL SetHookChainReturn(AMX *amx, cell *params)
|
|||||||
case ATYPE_FLOAT:
|
case ATYPE_FLOAT:
|
||||||
retVal._integer = *srcAddr;
|
retVal._integer = *srcAddr;
|
||||||
break;
|
break;
|
||||||
|
case ATYPE_BOOL:
|
||||||
|
retVal._integer = (*srcAddr != 0) ? TRUE : FALSE;
|
||||||
|
break;
|
||||||
|
|
||||||
case ATYPE_STRING:
|
case ATYPE_STRING:
|
||||||
{
|
{
|
||||||
@ -188,7 +198,13 @@ cell AMX_NATIVE_CALL GetHookChainReturn(AMX *amx, cell *params)
|
|||||||
|
|
||||||
if (unlikely(params[arg_type] != retVal.type))
|
if (unlikely(params[arg_type] != retVal.type))
|
||||||
{
|
{
|
||||||
AMXX_LogError(amx, AMX_ERR_NATIVE, "%s: trying to get return value with incompatible type.", __FUNCTION__);
|
AMXX_LogError(amx, AMX_ERR_NATIVE,
|
||||||
|
"%s: trying to get return value with incompatible type, expected '%s'; got '%s'",
|
||||||
|
__FUNCTION__,
|
||||||
|
getATypeStr(retVal.type),
|
||||||
|
getATypeStr(static_cast<AType>(params[arg_type]))
|
||||||
|
);
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,6 +221,8 @@ cell AMX_NATIVE_CALL GetHookChainReturn(AMX *amx, cell *params)
|
|||||||
case ATYPE_INTEGER:
|
case ATYPE_INTEGER:
|
||||||
case ATYPE_FLOAT:
|
case ATYPE_FLOAT:
|
||||||
return retVal._integer;
|
return retVal._integer;
|
||||||
|
case ATYPE_BOOL:
|
||||||
|
return retVal._integer != 0 ? TRUE : FALSE;
|
||||||
case ATYPE_STRING:
|
case ATYPE_STRING:
|
||||||
{
|
{
|
||||||
if (PARAMS_COUNT != 2)
|
if (PARAMS_COUNT != 2)
|
||||||
@ -258,7 +276,13 @@ cell AMX_NATIVE_CALL SetHookChainArg(AMX *amx, cell *params)
|
|||||||
AType type = g_hookCtx->args[number].type;
|
AType type = g_hookCtx->args[number].type;
|
||||||
if (unlikely(params[arg_type] != type))
|
if (unlikely(params[arg_type] != type))
|
||||||
{
|
{
|
||||||
AMXX_LogError(amx, AMX_ERR_NATIVE, "%s: invalid argument type provided.", __FUNCTION__);
|
AMXX_LogError(amx, AMX_ERR_NATIVE,
|
||||||
|
"%s: invalid argument type provided, expected '%s'; got '%s'",
|
||||||
|
__FUNCTION__,
|
||||||
|
getATypeStr(type),
|
||||||
|
getATypeStr(static_cast<AType>(params[arg_type]))
|
||||||
|
);
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -220,3 +220,22 @@ void RemoveOrDropItem(CBasePlayer *pPlayer, CBasePlayerItem *pItem, GiveType typ
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *getATypeStr(AType type)
|
||||||
|
{
|
||||||
|
static constexpr const char *s_ATypes[]
|
||||||
|
{
|
||||||
|
"ATYPE_INTEGER",
|
||||||
|
"ATYPE_FLOAT",
|
||||||
|
"ATYPE_STRING",
|
||||||
|
"ATYPE_CLASSPTR",
|
||||||
|
"ATYPE_EDICT",
|
||||||
|
"ATYPE_EVARS",
|
||||||
|
"ATYPE_BOOL"
|
||||||
|
};
|
||||||
|
|
||||||
|
if (type >= arraysize(s_ATypes))
|
||||||
|
return "";
|
||||||
|
|
||||||
|
return s_ATypes[type];
|
||||||
|
}
|
||||||
|
@ -57,4 +57,6 @@ void GetBonePosition(CBaseEntity *pEntity, int iBone, Vector *vecOrigin, Vector
|
|||||||
void GetAttachment(CBaseEntity *pEntity, int iBone, Vector *pVecOrigin, Vector *pVecAngles);
|
void GetAttachment(CBaseEntity *pEntity, int iBone, Vector *pVecOrigin, Vector *pVecAngles);
|
||||||
void RemoveOrDropItem(CBasePlayer *pPlayer, CBasePlayerItem *pItem, GiveType type);
|
void RemoveOrDropItem(CBasePlayer *pPlayer, CBasePlayerItem *pItem, GiveType type);
|
||||||
|
|
||||||
|
const char *getATypeStr(AType type);
|
||||||
|
|
||||||
extern void NORETURN UTIL_SysError(const char *fmt, ...);
|
extern void NORETURN UTIL_SysError(const char *fmt, ...);
|
||||||
|
Loading…
Reference in New Issue
Block a user