implemented the bf_read natives
message hooks now receive the bf_read handle --HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%40604
This commit is contained in:
parent
95dcffc972
commit
f64945b2aa
@ -328,7 +328,310 @@ static cell_t smn_BfWriteAngles(IPluginContext *pCtx, const cell_t *params)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
REGISTER_NATIVES(wrbitbufnatives)
|
static cell_t smn_BfReadBool(IPluginContext *pCtx, const cell_t *params)
|
||||||
|
{
|
||||||
|
Handle_t hndl = static_cast<Handle_t>(params[1]);
|
||||||
|
HandleError herr;
|
||||||
|
HandleSecurity sec;
|
||||||
|
bf_read *pBitBuf;
|
||||||
|
|
||||||
|
sec.pOwner = NULL;
|
||||||
|
sec.pIdentity = g_pCoreIdent;
|
||||||
|
|
||||||
|
if ((herr=g_HandleSys.ReadHandle(hndl, g_RdBitBufType, &sec, (void **)&pBitBuf))
|
||||||
|
!= HandleError_None)
|
||||||
|
{
|
||||||
|
return pCtx->ThrowNativeError("Invalid bit buffer handle %x (error %d)", hndl, herr);
|
||||||
|
}
|
||||||
|
|
||||||
|
return pBitBuf->ReadOneBit() ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static cell_t smn_BfReadByte(IPluginContext *pCtx, const cell_t *params)
|
||||||
|
{
|
||||||
|
Handle_t hndl = static_cast<Handle_t>(params[1]);
|
||||||
|
HandleError herr;
|
||||||
|
HandleSecurity sec;
|
||||||
|
bf_read *pBitBuf;
|
||||||
|
|
||||||
|
sec.pOwner = NULL;
|
||||||
|
sec.pIdentity = g_pCoreIdent;
|
||||||
|
|
||||||
|
if ((herr=g_HandleSys.ReadHandle(hndl, g_RdBitBufType, &sec, (void **)&pBitBuf))
|
||||||
|
!= HandleError_None)
|
||||||
|
{
|
||||||
|
return pCtx->ThrowNativeError("Invalid bit buffer handle %x (error %d)", hndl, herr);
|
||||||
|
}
|
||||||
|
|
||||||
|
return pBitBuf->ReadByte();
|
||||||
|
}
|
||||||
|
|
||||||
|
static cell_t smn_BfReadChar(IPluginContext *pCtx, const cell_t *params)
|
||||||
|
{
|
||||||
|
Handle_t hndl = static_cast<Handle_t>(params[1]);
|
||||||
|
HandleError herr;
|
||||||
|
HandleSecurity sec;
|
||||||
|
bf_read *pBitBuf;
|
||||||
|
|
||||||
|
sec.pOwner = NULL;
|
||||||
|
sec.pIdentity = g_pCoreIdent;
|
||||||
|
|
||||||
|
if ((herr=g_HandleSys.ReadHandle(hndl, g_RdBitBufType, &sec, (void **)&pBitBuf))
|
||||||
|
!= HandleError_None)
|
||||||
|
{
|
||||||
|
return pCtx->ThrowNativeError("Invalid bit buffer handle %x (error %d)", hndl, herr);
|
||||||
|
}
|
||||||
|
|
||||||
|
return pBitBuf->ReadChar();
|
||||||
|
}
|
||||||
|
|
||||||
|
static cell_t smn_BfReadShort(IPluginContext *pCtx, const cell_t *params)
|
||||||
|
{
|
||||||
|
Handle_t hndl = static_cast<Handle_t>(params[1]);
|
||||||
|
HandleError herr;
|
||||||
|
HandleSecurity sec;
|
||||||
|
bf_read *pBitBuf;
|
||||||
|
|
||||||
|
sec.pOwner = NULL;
|
||||||
|
sec.pIdentity = g_pCoreIdent;
|
||||||
|
|
||||||
|
if ((herr=g_HandleSys.ReadHandle(hndl, g_RdBitBufType, &sec, (void **)&pBitBuf))
|
||||||
|
!= HandleError_None)
|
||||||
|
{
|
||||||
|
return pCtx->ThrowNativeError("Invalid bit buffer handle %x (error %d)", hndl, herr);
|
||||||
|
}
|
||||||
|
|
||||||
|
return pBitBuf->ReadShort();
|
||||||
|
}
|
||||||
|
|
||||||
|
static cell_t smn_BfReadWord(IPluginContext *pCtx, const cell_t *params)
|
||||||
|
{
|
||||||
|
Handle_t hndl = static_cast<Handle_t>(params[1]);
|
||||||
|
HandleError herr;
|
||||||
|
HandleSecurity sec;
|
||||||
|
bf_read *pBitBuf;
|
||||||
|
|
||||||
|
sec.pOwner = NULL;
|
||||||
|
sec.pIdentity = g_pCoreIdent;
|
||||||
|
|
||||||
|
if ((herr=g_HandleSys.ReadHandle(hndl, g_RdBitBufType, &sec, (void **)&pBitBuf))
|
||||||
|
!= HandleError_None)
|
||||||
|
{
|
||||||
|
return pCtx->ThrowNativeError("Invalid bit buffer handle %x (error %d)", hndl, herr);
|
||||||
|
}
|
||||||
|
|
||||||
|
return pBitBuf->ReadWord();
|
||||||
|
}
|
||||||
|
|
||||||
|
static cell_t smn_BfReadNum(IPluginContext *pCtx, const cell_t *params)
|
||||||
|
{
|
||||||
|
Handle_t hndl = static_cast<Handle_t>(params[1]);
|
||||||
|
HandleError herr;
|
||||||
|
HandleSecurity sec;
|
||||||
|
bf_read *pBitBuf;
|
||||||
|
|
||||||
|
sec.pOwner = NULL;
|
||||||
|
sec.pIdentity = g_pCoreIdent;
|
||||||
|
|
||||||
|
if ((herr=g_HandleSys.ReadHandle(hndl, g_RdBitBufType, &sec, (void **)&pBitBuf))
|
||||||
|
!= HandleError_None)
|
||||||
|
{
|
||||||
|
return pCtx->ThrowNativeError("Invalid bit buffer handle %x (error %d)", hndl, herr);
|
||||||
|
}
|
||||||
|
|
||||||
|
return static_cast<cell_t>(pBitBuf->ReadLong());
|
||||||
|
}
|
||||||
|
|
||||||
|
static cell_t smn_BfReadFloat(IPluginContext *pCtx, const cell_t *params)
|
||||||
|
{
|
||||||
|
Handle_t hndl = static_cast<Handle_t>(params[1]);
|
||||||
|
HandleError herr;
|
||||||
|
HandleSecurity sec;
|
||||||
|
bf_read *pBitBuf;
|
||||||
|
|
||||||
|
sec.pOwner = NULL;
|
||||||
|
sec.pIdentity = g_pCoreIdent;
|
||||||
|
|
||||||
|
if ((herr=g_HandleSys.ReadHandle(hndl, g_RdBitBufType, &sec, (void **)&pBitBuf))
|
||||||
|
!= HandleError_None)
|
||||||
|
{
|
||||||
|
return pCtx->ThrowNativeError("Invalid bit buffer handle %x (error %d)", hndl, herr);
|
||||||
|
}
|
||||||
|
|
||||||
|
return sp_ftoc(pBitBuf->ReadFloat());
|
||||||
|
}
|
||||||
|
|
||||||
|
static cell_t smn_BfReadString(IPluginContext *pCtx, const cell_t *params)
|
||||||
|
{
|
||||||
|
Handle_t hndl = static_cast<Handle_t>(params[1]);
|
||||||
|
HandleError herr;
|
||||||
|
HandleSecurity sec;
|
||||||
|
bf_read *pBitBuf;
|
||||||
|
char *buf;
|
||||||
|
|
||||||
|
sec.pOwner = NULL;
|
||||||
|
sec.pIdentity = g_pCoreIdent;
|
||||||
|
|
||||||
|
if ((herr=g_HandleSys.ReadHandle(hndl, g_RdBitBufType, &sec, (void **)&pBitBuf))
|
||||||
|
!= HandleError_None)
|
||||||
|
{
|
||||||
|
return pCtx->ThrowNativeError("Invalid bit buffer handle %x (error %d)", hndl, herr);
|
||||||
|
}
|
||||||
|
|
||||||
|
pCtx->LocalToPhysAddr(params[2], (cell_t **)&buf);
|
||||||
|
if (!pBitBuf->ReadString(buf, params[3], params[4] ? true : false))
|
||||||
|
{
|
||||||
|
return pCtx->ThrowNativeError("Destination string buffer is too short, try increasing its size");
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static cell_t smn_BfReadEntity(IPluginContext *pCtx, const cell_t *params)
|
||||||
|
{
|
||||||
|
Handle_t hndl = static_cast<Handle_t>(params[1]);
|
||||||
|
HandleError herr;
|
||||||
|
HandleSecurity sec;
|
||||||
|
bf_read *pBitBuf;
|
||||||
|
|
||||||
|
sec.pOwner = NULL;
|
||||||
|
sec.pIdentity = g_pCoreIdent;
|
||||||
|
|
||||||
|
if ((herr=g_HandleSys.ReadHandle(hndl, g_RdBitBufType, &sec, (void **)&pBitBuf))
|
||||||
|
!= HandleError_None)
|
||||||
|
{
|
||||||
|
return pCtx->ThrowNativeError("Invalid bit buffer handle %x (error %d)", hndl, herr);
|
||||||
|
}
|
||||||
|
|
||||||
|
return pBitBuf->ReadShort();
|
||||||
|
}
|
||||||
|
|
||||||
|
static cell_t smn_BfReadAngle(IPluginContext *pCtx, const cell_t *params)
|
||||||
|
{
|
||||||
|
Handle_t hndl = static_cast<Handle_t>(params[1]);
|
||||||
|
HandleError herr;
|
||||||
|
HandleSecurity sec;
|
||||||
|
bf_read *pBitBuf;
|
||||||
|
|
||||||
|
sec.pOwner = NULL;
|
||||||
|
sec.pIdentity = g_pCoreIdent;
|
||||||
|
|
||||||
|
if ((herr=g_HandleSys.ReadHandle(hndl, g_RdBitBufType, &sec, (void **)&pBitBuf))
|
||||||
|
!= HandleError_None)
|
||||||
|
{
|
||||||
|
return pCtx->ThrowNativeError("Invalid bit buffer handle %x (error %d)", hndl, herr);
|
||||||
|
}
|
||||||
|
|
||||||
|
return sp_ftoc(pBitBuf->ReadBitAngle(params[2]));
|
||||||
|
}
|
||||||
|
|
||||||
|
static cell_t smn_BfReadCoord(IPluginContext *pCtx, const cell_t *params)
|
||||||
|
{
|
||||||
|
Handle_t hndl = static_cast<Handle_t>(params[1]);
|
||||||
|
HandleError herr;
|
||||||
|
HandleSecurity sec;
|
||||||
|
bf_read *pBitBuf;
|
||||||
|
|
||||||
|
sec.pOwner = NULL;
|
||||||
|
sec.pIdentity = g_pCoreIdent;
|
||||||
|
|
||||||
|
if ((herr=g_HandleSys.ReadHandle(hndl, g_RdBitBufType, &sec, (void **)&pBitBuf))
|
||||||
|
!= HandleError_None)
|
||||||
|
{
|
||||||
|
return pCtx->ThrowNativeError("Invalid bit buffer handle %x (error %d)", hndl, herr);
|
||||||
|
}
|
||||||
|
|
||||||
|
return sp_ftoc(pBitBuf->ReadBitCoord());
|
||||||
|
}
|
||||||
|
|
||||||
|
static cell_t smn_BfReadVecCoord(IPluginContext *pCtx, const cell_t *params)
|
||||||
|
{
|
||||||
|
Handle_t hndl = static_cast<Handle_t>(params[1]);
|
||||||
|
HandleError herr;
|
||||||
|
HandleSecurity sec;
|
||||||
|
bf_read *pBitBuf;
|
||||||
|
|
||||||
|
sec.pOwner = NULL;
|
||||||
|
sec.pIdentity = g_pCoreIdent;
|
||||||
|
|
||||||
|
if ((herr=g_HandleSys.ReadHandle(hndl, g_RdBitBufType, &sec, (void **)&pBitBuf))
|
||||||
|
!= HandleError_None)
|
||||||
|
{
|
||||||
|
return pCtx->ThrowNativeError("Invalid bit buffer handle %x (error %d)", hndl, herr);
|
||||||
|
}
|
||||||
|
|
||||||
|
cell_t *pVec;
|
||||||
|
pCtx->LocalToPhysAddr(params[2], &pVec);
|
||||||
|
|
||||||
|
Vector vec;
|
||||||
|
pBitBuf->ReadBitVec3Coord(vec);
|
||||||
|
|
||||||
|
pVec[0] = sp_ftoc(vec.x);
|
||||||
|
pVec[1] = sp_ftoc(vec.y);
|
||||||
|
pVec[2] = sp_ftoc(vec.z);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static cell_t smn_BfReadVecNormal(IPluginContext *pCtx, const cell_t *params)
|
||||||
|
{
|
||||||
|
Handle_t hndl = static_cast<Handle_t>(params[1]);
|
||||||
|
HandleError herr;
|
||||||
|
HandleSecurity sec;
|
||||||
|
bf_read *pBitBuf;
|
||||||
|
|
||||||
|
sec.pOwner = NULL;
|
||||||
|
sec.pIdentity = g_pCoreIdent;
|
||||||
|
|
||||||
|
if ((herr=g_HandleSys.ReadHandle(hndl, g_RdBitBufType, &sec, (void **)&pBitBuf))
|
||||||
|
!= HandleError_None)
|
||||||
|
{
|
||||||
|
return pCtx->ThrowNativeError("Invalid bit buffer handle %x (error %d)", hndl, herr);
|
||||||
|
}
|
||||||
|
|
||||||
|
cell_t *pVec;
|
||||||
|
pCtx->LocalToPhysAddr(params[2], &pVec);
|
||||||
|
|
||||||
|
Vector vec;
|
||||||
|
pBitBuf->ReadBitVec3Normal(vec);
|
||||||
|
|
||||||
|
pVec[0] = sp_ftoc(vec.x);
|
||||||
|
pVec[1] = sp_ftoc(vec.y);
|
||||||
|
pVec[2] = sp_ftoc(vec.z);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static cell_t smn_BfReadAngles(IPluginContext *pCtx, const cell_t *params)
|
||||||
|
{
|
||||||
|
Handle_t hndl = static_cast<Handle_t>(params[1]);
|
||||||
|
HandleError herr;
|
||||||
|
HandleSecurity sec;
|
||||||
|
bf_read *pBitBuf;
|
||||||
|
|
||||||
|
sec.pOwner = NULL;
|
||||||
|
sec.pIdentity = g_pCoreIdent;
|
||||||
|
|
||||||
|
if ((herr=g_HandleSys.ReadHandle(hndl, g_RdBitBufType, &sec, (void **)&pBitBuf))
|
||||||
|
!= HandleError_None)
|
||||||
|
{
|
||||||
|
return pCtx->ThrowNativeError("Invalid bit buffer handle %x (error %d)", hndl, herr);
|
||||||
|
}
|
||||||
|
|
||||||
|
cell_t *pAng;
|
||||||
|
pCtx->LocalToPhysAddr(params[2], &pAng);
|
||||||
|
|
||||||
|
QAngle ang;
|
||||||
|
pBitBuf->ReadBitAngles(ang);
|
||||||
|
|
||||||
|
pAng[0] = sp_ftoc(ang.x);
|
||||||
|
pAng[1] = sp_ftoc(ang.y);
|
||||||
|
pAng[2] = sp_ftoc(ang.z);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
REGISTER_NATIVES(bitbufnatives)
|
||||||
{
|
{
|
||||||
{"BfWriteBool", smn_BfWriteBool},
|
{"BfWriteBool", smn_BfWriteBool},
|
||||||
{"BfWriteByte", smn_BfWriteByte},
|
{"BfWriteByte", smn_BfWriteByte},
|
||||||
@ -344,5 +647,19 @@ REGISTER_NATIVES(wrbitbufnatives)
|
|||||||
{"BfWriteVecCoord", smn_BfWriteVecCoord},
|
{"BfWriteVecCoord", smn_BfWriteVecCoord},
|
||||||
{"BfWriteVecNormal", smn_BfWriteVecNormal},
|
{"BfWriteVecNormal", smn_BfWriteVecNormal},
|
||||||
{"BfWriteAngles", smn_BfWriteAngles},
|
{"BfWriteAngles", smn_BfWriteAngles},
|
||||||
|
{"BfReadBool", smn_BfReadBool},
|
||||||
|
{"BfReadByte", smn_BfReadByte},
|
||||||
|
{"BfReadChar", smn_BfReadChar},
|
||||||
|
{"BfReadShort", smn_BfReadShort},
|
||||||
|
{"BfReadWord", smn_BfReadWord},
|
||||||
|
{"BfReadNum", smn_BfReadNum},
|
||||||
|
{"BfReadFloat", smn_BfReadFloat},
|
||||||
|
{"BfReadString", smn_BfReadString},
|
||||||
|
{"BfReadEntity", smn_BfReadEntity},
|
||||||
|
{"BfReadAngle", smn_BfReadAngle},
|
||||||
|
{"BfReadCoord", smn_BfReadCoord},
|
||||||
|
{"BfReadVecCoord", smn_BfReadVecCoord},
|
||||||
|
{"BfReadVecNormal", smn_BfReadVecNormal},
|
||||||
|
{"BfReadAngles", smn_BfReadAngles},
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
@ -18,7 +18,11 @@
|
|||||||
#include "smn_usermsgs.h"
|
#include "smn_usermsgs.h"
|
||||||
|
|
||||||
HandleType_t g_WrBitBufType;
|
HandleType_t g_WrBitBufType;
|
||||||
|
HandleType_t g_RdBitBufType;
|
||||||
Handle_t g_CurMsgHandle;
|
Handle_t g_CurMsgHandle;
|
||||||
|
Handle_t g_ReadBufHandle;
|
||||||
|
bf_read g_ReadBitBuf;
|
||||||
|
|
||||||
int g_MsgPlayers[256];
|
int g_MsgPlayers[256];
|
||||||
bool g_IsMsgInExec = false;
|
bool g_IsMsgInExec = false;
|
||||||
|
|
||||||
@ -45,15 +49,30 @@ private:
|
|||||||
|
|
||||||
void UsrMessageNatives::OnSourceModAllInitialized()
|
void UsrMessageNatives::OnSourceModAllInitialized()
|
||||||
{
|
{
|
||||||
|
HandleAccess sec;
|
||||||
|
sec.access[HandleAccess_Delete] |= HANDLE_RESTRICT_IDENTITY;
|
||||||
|
|
||||||
g_WrBitBufType = g_HandleSys.CreateType("BitBufWriter", this, 0, NULL, NULL, g_pCoreIdent, NULL);
|
g_WrBitBufType = g_HandleSys.CreateType("BitBufWriter", this, 0, NULL, NULL, g_pCoreIdent, NULL);
|
||||||
|
g_RdBitBufType = g_HandleSys.CreateType("BitBufReader", this, 0, NULL, &sec, g_pCoreIdent, NULL);
|
||||||
|
|
||||||
|
g_ReadBufHandle = g_HandleSys.CreateHandle(g_RdBitBufType, &g_ReadBitBuf, NULL, g_pCoreIdent, NULL);
|
||||||
|
|
||||||
g_PluginSys.AddPluginsListener(this);
|
g_PluginSys.AddPluginsListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UsrMessageNatives::OnSourceModShutdown()
|
void UsrMessageNatives::OnSourceModShutdown()
|
||||||
{
|
{
|
||||||
|
HandleSecurity sec;
|
||||||
|
sec.pIdentity = g_pCoreIdent;
|
||||||
|
|
||||||
|
g_HandleSys.FreeHandle(g_ReadBufHandle, &sec);
|
||||||
|
|
||||||
g_HandleSys.RemoveType(g_WrBitBufType, g_pCoreIdent);
|
g_HandleSys.RemoveType(g_WrBitBufType, g_pCoreIdent);
|
||||||
|
g_HandleSys.RemoveType(g_RdBitBufType, g_pCoreIdent);
|
||||||
|
|
||||||
g_PluginSys.RemovePluginsListener(this);
|
g_PluginSys.RemovePluginsListener(this);
|
||||||
g_WrBitBufType = 0;
|
g_WrBitBufType = 0;
|
||||||
|
g_RdBitBufType = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UsrMessageNatives::OnHandleDestroy(HandleType_t type, void *object)
|
void UsrMessageNatives::OnHandleDestroy(HandleType_t type, void *object)
|
||||||
@ -221,8 +240,10 @@ void MsgListenerWrapper::OnUserMessage(int msg_id, bf_write *bf, IRecipientFilte
|
|||||||
cell_t res;
|
cell_t res;
|
||||||
size_t size = _FillInPlayers(g_MsgPlayers, pFilter);
|
size_t size = _FillInPlayers(g_MsgPlayers, pFilter);
|
||||||
|
|
||||||
|
g_ReadBitBuf.StartReading(bf->GetBasePointer(), bf->GetNumBytesWritten());
|
||||||
|
|
||||||
m_Hook->PushCell(msg_id);
|
m_Hook->PushCell(msg_id);
|
||||||
m_Hook->PushCell(0); //:TODO: push handle!
|
m_Hook->PushCell(g_ReadBufHandle);
|
||||||
m_Hook->PushArray(g_MsgPlayers, size);
|
m_Hook->PushArray(g_MsgPlayers, size);
|
||||||
m_Hook->PushCell(size);
|
m_Hook->PushCell(size);
|
||||||
m_Hook->PushCell(pFilter->IsReliable());
|
m_Hook->PushCell(pFilter->IsReliable());
|
||||||
@ -235,8 +256,10 @@ ResultType MsgListenerWrapper::InterceptUserMessage(int msg_id, bf_write *bf, IR
|
|||||||
cell_t res = static_cast<cell_t>(Pl_Continue);
|
cell_t res = static_cast<cell_t>(Pl_Continue);
|
||||||
size_t size = _FillInPlayers(g_MsgPlayers, pFilter);
|
size_t size = _FillInPlayers(g_MsgPlayers, pFilter);
|
||||||
|
|
||||||
|
g_ReadBitBuf.StartReading(bf->GetBasePointer(), bf->GetNumBytesWritten());
|
||||||
|
|
||||||
m_Intercept->PushCell(msg_id);
|
m_Intercept->PushCell(msg_id);
|
||||||
m_Intercept->PushCell(0); //:TODO: push handle!
|
m_Intercept->PushCell(g_ReadBufHandle);
|
||||||
m_Intercept->PushArray(g_MsgPlayers, size);
|
m_Intercept->PushArray(g_MsgPlayers, size);
|
||||||
m_Intercept->PushCell(size);
|
m_Intercept->PushCell(size);
|
||||||
m_Intercept->PushCell(pFilter->IsReliable());
|
m_Intercept->PushCell(pFilter->IsReliable());
|
||||||
|
@ -102,5 +102,6 @@ private:
|
|||||||
|
|
||||||
extern SourceModBase g_SourceMod;
|
extern SourceModBase g_SourceMod;
|
||||||
extern HandleType_t g_WrBitBufType;
|
extern HandleType_t g_WrBitBufType;
|
||||||
|
extern HandleType_t g_RdBitBufType;
|
||||||
|
|
||||||
#endif //_INCLUDE_SOURCEMOD_GLOBALHEADER_H_
|
#endif //_INCLUDE_SOURCEMOD_GLOBALHEADER_H_
|
||||||
|
@ -133,7 +133,7 @@ native BfWriteCoord(Handle:bf, Float:coord);
|
|||||||
/**
|
/**
|
||||||
* Writes a 3D vector of coordinates to a writable bitbuffer (bf_write).
|
* Writes a 3D vector of coordinates to a writable bitbuffer (bf_write).
|
||||||
*
|
*
|
||||||
* @param bif bf_write handle to write to.
|
* @param bf bf_write handle to write to.
|
||||||
* @param coord Coordinate array to write.
|
* @param coord Coordinate array to write.
|
||||||
* @noreturn
|
* @noreturn
|
||||||
* @error Invalid or incorrect Handle.
|
* @error Invalid or incorrect Handle.
|
||||||
@ -143,7 +143,7 @@ native BfWriteVecCoord(Handle:bf, Float:coord[3]);
|
|||||||
/**
|
/**
|
||||||
* Writes a 3D normal vector to a writable bitbuffer (bf_write).
|
* Writes a 3D normal vector to a writable bitbuffer (bf_write).
|
||||||
*
|
*
|
||||||
* @param bif bf_write handle to write to.
|
* @param bf bf_write handle to write to.
|
||||||
* @param vec Vector to write.
|
* @param vec Vector to write.
|
||||||
* @noreturn
|
* @noreturn
|
||||||
* @error Invalid or incorrect Handle.
|
* @error Invalid or incorrect Handle.
|
||||||
@ -153,9 +153,143 @@ native BfWriteVecNormal(Handle:bf, Float:vec[3]);
|
|||||||
/**
|
/**
|
||||||
* Writes a 3D angle vector to a writable bitbuffer (bf_write).
|
* Writes a 3D angle vector to a writable bitbuffer (bf_write).
|
||||||
*
|
*
|
||||||
* @param bif bf_write handle to write to.
|
* @param bf bf_write handle to write to.
|
||||||
* @param angles Angle vector to write.
|
* @param angles Angle vector to write.
|
||||||
* @noreturn
|
* @noreturn
|
||||||
* @error Invalid or incorrect Handle.
|
* @error Invalid or incorrect Handle.
|
||||||
*/
|
*/
|
||||||
native BfWriteAngles(Handle:bf, Float:angles[3]);
|
native BfWriteAngles(Handle:bf, Float:angles[3]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a single bit from a readable bitbuffer (bf_read).
|
||||||
|
*
|
||||||
|
* @param bf bf_read handle to read from.
|
||||||
|
* @return Bit value read.
|
||||||
|
* @error Invalid or incorrect Handle.
|
||||||
|
*/
|
||||||
|
native bool:BfReadBool(Handle:bf);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a byte from a readable bitbuffer (bf_read).
|
||||||
|
*
|
||||||
|
* @param bf bf_read handle to read from.
|
||||||
|
* @return Byte value read (read as 8bit).
|
||||||
|
* @error Invalid or incorrect Handle.
|
||||||
|
*/
|
||||||
|
native BfReadByte(Handle:bf);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a character from a readable bitbuffer (bf_read).
|
||||||
|
*
|
||||||
|
* @param bf bf_read handle to read from.
|
||||||
|
* @return Character value read.
|
||||||
|
* @error Invalid or incorrect Handle.
|
||||||
|
*/
|
||||||
|
native BfReadChar(Handle:bf);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a 16bit integer from a readable bitbuffer (bf_read).
|
||||||
|
*
|
||||||
|
* @param bf bf_read handle to read from.
|
||||||
|
* @return Integer value read (read as 16bit).
|
||||||
|
* @error Invalid or incorrect Handle.
|
||||||
|
*/
|
||||||
|
native BfReadShort(Handle:bf);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a 16bit unsigned integer from a readable bitbuffer (bf_read).
|
||||||
|
*
|
||||||
|
* @param bf bf_read handle to read from.
|
||||||
|
* @return Integer value read (read as 16bit).
|
||||||
|
* @error Invalid or incorrect Handle.
|
||||||
|
*/
|
||||||
|
native BfReadWord(Handle:bf);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a normal integer to a readable bitbuffer (bf_read).
|
||||||
|
*
|
||||||
|
* @param bf bf_read handle to read from.
|
||||||
|
* @return Integer value read (read as 32bit).
|
||||||
|
* @error Invalid or incorrect Handle.
|
||||||
|
*/
|
||||||
|
native BfReadNum(Handle:bf);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a floating point number from a readable bitbuffer (bf_read).
|
||||||
|
*
|
||||||
|
* @param bf bf_read handle to read from.
|
||||||
|
* @return Floating point value read.
|
||||||
|
* @error Invalid or incorrect Handle.
|
||||||
|
*/
|
||||||
|
native Float:BfReadFloat(Handle:bf);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a string from a readable bitbuffer (bf_read).
|
||||||
|
*
|
||||||
|
* @param bf bf_read handle to read from.
|
||||||
|
* @param buffer Destination string buffer.
|
||||||
|
* @param maxlength Maximum length of output string buffer.
|
||||||
|
* @param Line If true the buffer will be copied until it reaches a '\n' or a null terminator.
|
||||||
|
* @noreturn
|
||||||
|
* @error Invalid or incorrect Handle, destination string buffer was too short.
|
||||||
|
*/
|
||||||
|
native BfReadString(Handle:bf, String:buffer[], maxlength, bool:Line=false);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads an entity from a readable bitbuffer (bf_read).
|
||||||
|
* @note This is a wrapper around BfReadShort().
|
||||||
|
*
|
||||||
|
* @param bf bf_read handle to read from.
|
||||||
|
* @return Entity index read.
|
||||||
|
* @error Invalid or incorrect Handle.
|
||||||
|
*/
|
||||||
|
native BfReadEntity(Handle:bf);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a bit angle from a readable bitbuffer (bf_read).
|
||||||
|
*
|
||||||
|
* @param bf bf_read handle to read from.
|
||||||
|
* @param numBits Optional number of bits to use.
|
||||||
|
* @return Angle read.
|
||||||
|
* @error Invalid or incorrect Handle.
|
||||||
|
*/
|
||||||
|
native Float:BfReadAngle(Handle:bf, numBits=8);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a coordinate from a readable bitbuffer (bf_read).
|
||||||
|
*
|
||||||
|
* @param bf bf_read handle to read from.
|
||||||
|
* @return Coordinate read.
|
||||||
|
* @error Invalid or incorrect Handle.
|
||||||
|
*/
|
||||||
|
native Float:BfReadCoord(Handle:bf);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a 3D vector of coordinates from a readable bitbuffer (bf_read).
|
||||||
|
*
|
||||||
|
* @param bf bf_read handle to read from.
|
||||||
|
* @param coord Destination coordinate array.
|
||||||
|
* @noreturn
|
||||||
|
* @error Invalid or incorrect Handle.
|
||||||
|
*/
|
||||||
|
native BfReadVecCoord(Handle:bf, Float:coord[3]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a 3D normal vector from a readable bitbuffer (bf_read).
|
||||||
|
*
|
||||||
|
* @param bf bf_read handle to read from.
|
||||||
|
* @param vec Destination vector array.
|
||||||
|
* @noreturn
|
||||||
|
* @error Invalid or incorrect Handle.
|
||||||
|
*/
|
||||||
|
native BfReadVecNormal(Handle:bf, Float:vec[3]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a 3D angle vector from a readable bitbuffer (bf_read).
|
||||||
|
*
|
||||||
|
* @param bf bf_read handle to read from.
|
||||||
|
* @param angles Destination angle vector.
|
||||||
|
* @noreturn
|
||||||
|
* @error Invalid or incorrect Handle.
|
||||||
|
*/
|
||||||
|
native BfReadAngles(Handle:bf, Float:angles[3]);
|
||||||
|
@ -59,7 +59,7 @@ namespace SourceMod
|
|||||||
* @param msg_id Message Id.
|
* @param msg_id Message Id.
|
||||||
* @param bf bf_write structure containing written bytes.
|
* @param bf bf_write structure containing written bytes.
|
||||||
* @param pFtiler Recipient filter.
|
* @param pFtiler Recipient filter.
|
||||||
* @return True to allow message, false to scrap it.
|
* @return Pl_Continue to allow message, Pl_Stop or Pl_Handled to scrap it.
|
||||||
*/
|
*/
|
||||||
virtual ResultType InterceptUserMessage(int msg_id, bf_write *bf, IRecipientFilter *pFilter)
|
virtual ResultType InterceptUserMessage(int msg_id, bf_write *bf, IRecipientFilter *pFilter)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user