Merge pull request #346 from Arkshine/featire/entindex-cleanup
Engine: Replace ENTINDEX with TypeConversion
This commit is contained in:
commit
1d5fb4b9d1
|
@ -164,7 +164,7 @@ qboolean Voice_SetClientListening(int iReceiver, int iSender, qboolean bListen)
|
|||
|
||||
int AddToFullPack_Post(struct entity_state_s *state, int e, edict_t *ent, edict_t *host, int hostflags, int player, unsigned char *pSet)
|
||||
{
|
||||
if( player && ent == host && plinfo[ENTINDEX(ent)].iViewType != CAMERA_NONE )
|
||||
if( player && ent && ent == host && plinfo[TypeConversion.edict_to_id(ent)].iViewType != CAMERA_NONE )
|
||||
{
|
||||
state->rendermode = kRenderTransTexture;
|
||||
state->renderamt = 100;
|
||||
|
@ -175,7 +175,7 @@ int AddToFullPack_Post(struct entity_state_s *state, int e, edict_t *ent, edict_
|
|||
|
||||
void ClientDisconnect(edict_t *pEntity)
|
||||
{
|
||||
int id = ENTINDEX(pEntity);
|
||||
auto id = TypeConversion.edict_to_id(pEntity);
|
||||
|
||||
if (plinfo[id].iViewType != CAMERA_NONE) // Verify that they were originally in a modified view
|
||||
{
|
||||
|
@ -194,7 +194,7 @@ void ClientDisconnect(edict_t *pEntity)
|
|||
|
||||
BOOL ClientConnect(edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[128])
|
||||
{
|
||||
int id = ENTINDEX(pEntity);
|
||||
auto id = TypeConversion.edict_to_id(pEntity);
|
||||
|
||||
plinfo[id].iSpeakFlags = SPEAK_NORMAL;
|
||||
plinfo[id].iViewType = CAMERA_NONE;
|
||||
|
|
|
@ -334,7 +334,7 @@ static cell AMX_NATIVE_CALL trace_line(AMX *amx, cell *params)
|
|||
if (FNullEnt(pHit))
|
||||
return 0;
|
||||
|
||||
return ENTINDEX(pHit);
|
||||
return TypeConversion.edict_to_id(pHit);
|
||||
}
|
||||
|
||||
static cell AMX_NATIVE_CALL set_speak(AMX *amx, cell *params) {
|
||||
|
@ -429,10 +429,10 @@ static cell AMX_NATIVE_CALL set_view(AMX *amx, cell *params) {
|
|||
{
|
||||
case CAMERA_NONE:
|
||||
SET_VIEW(pPlayer, pPlayer);
|
||||
if(plinfo[ENTINDEX(pPlayer)].pViewEnt) {
|
||||
REMOVE_ENTITY(plinfo[ENTINDEX(pPlayer)].pViewEnt);
|
||||
if(plinfo[iIndex].pViewEnt) {
|
||||
REMOVE_ENTITY(plinfo[iIndex].pViewEnt);
|
||||
}
|
||||
if (plinfo[ENTINDEX(pPlayer)].iViewType != CAMERA_NONE) // Verify that they were originally in a modified view
|
||||
if (plinfo[iIndex].iViewType != CAMERA_NONE) // Verify that they were originally in a modified view
|
||||
{
|
||||
g_CameraCount--;
|
||||
if (g_CameraCount < 0)
|
||||
|
@ -441,20 +441,20 @@ static cell AMX_NATIVE_CALL set_view(AMX *amx, cell *params) {
|
|||
g_pFunctionTable->pfnAddToFullPack=NULL;
|
||||
}
|
||||
|
||||
plinfo[ENTINDEX(pPlayer)].iViewType = CAMERA_NONE;
|
||||
plinfo[ENTINDEX(pPlayer)].pViewEnt = NULL;
|
||||
plinfo[iIndex].iViewType = CAMERA_NONE;
|
||||
plinfo[iIndex].pViewEnt = NULL;
|
||||
return 1;
|
||||
break;
|
||||
case CAMERA_3RDPERSON:
|
||||
if(plinfo[ENTINDEX(pPlayer)].iViewType != CAMERA_NONE) {
|
||||
plinfo[ENTINDEX(pPlayer)].iViewType = CAMERA_3RDPERSON;
|
||||
if(plinfo[iIndex].iViewType != CAMERA_NONE) {
|
||||
plinfo[iIndex].iViewType = CAMERA_3RDPERSON;
|
||||
return 1;
|
||||
}
|
||||
g_CameraCount++;
|
||||
g_pFunctionTable_Post->pfnAddToFullPack=AddToFullPack_Post;
|
||||
g_pFunctionTable_Post->pfnPlayerPostThink=PlayerPostThink_Post;
|
||||
|
||||
plinfo[ENTINDEX(pPlayer)].iViewType = CAMERA_3RDPERSON;
|
||||
plinfo[iIndex].iViewType = CAMERA_3RDPERSON;
|
||||
pNewCamera = CREATE_NAMED_ENTITY(MAKE_STRING("info_target"));
|
||||
pNewCamera->v.classname = MAKE_STRING("VexdCam");
|
||||
|
||||
|
@ -472,11 +472,11 @@ static cell AMX_NATIVE_CALL set_view(AMX *amx, cell *params) {
|
|||
|
||||
SET_VIEW(pPlayer, pNewCamera);
|
||||
|
||||
plinfo[ENTINDEX(pPlayer)].pViewEnt = pNewCamera;
|
||||
plinfo[iIndex].pViewEnt = pNewCamera;
|
||||
break;
|
||||
case CAMERA_UPLEFT:
|
||||
if(plinfo[ENTINDEX(pPlayer)].iViewType != CAMERA_NONE) {
|
||||
plinfo[ENTINDEX(pPlayer)].iViewType = CAMERA_UPLEFT;
|
||||
if(plinfo[iIndex].iViewType != CAMERA_NONE) {
|
||||
plinfo[iIndex].iViewType = CAMERA_UPLEFT;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -484,7 +484,7 @@ static cell AMX_NATIVE_CALL set_view(AMX *amx, cell *params) {
|
|||
g_pFunctionTable_Post->pfnAddToFullPack=AddToFullPack_Post;
|
||||
g_pFunctionTable_Post->pfnPlayerPostThink=PlayerPostThink_Post;
|
||||
|
||||
plinfo[ENTINDEX(pPlayer)].iViewType = CAMERA_UPLEFT;
|
||||
plinfo[iIndex].iViewType = CAMERA_UPLEFT;
|
||||
pNewCamera = CREATE_NAMED_ENTITY(MAKE_STRING("info_target"));
|
||||
pNewCamera->v.classname = MAKE_STRING("VexdCam");
|
||||
|
||||
|
@ -502,11 +502,11 @@ static cell AMX_NATIVE_CALL set_view(AMX *amx, cell *params) {
|
|||
|
||||
SET_VIEW(pPlayer, pNewCamera);
|
||||
|
||||
plinfo[ENTINDEX(pPlayer)].pViewEnt = pNewCamera;
|
||||
plinfo[iIndex].pViewEnt = pNewCamera;
|
||||
break;
|
||||
case CAMERA_TOPDOWN:
|
||||
if(plinfo[ENTINDEX(pPlayer)].iViewType != CAMERA_NONE) {
|
||||
plinfo[ENTINDEX(pPlayer)].iViewType = CAMERA_TOPDOWN;
|
||||
if(plinfo[iIndex].iViewType != CAMERA_NONE) {
|
||||
plinfo[iIndex].iViewType = CAMERA_TOPDOWN;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -514,7 +514,7 @@ static cell AMX_NATIVE_CALL set_view(AMX *amx, cell *params) {
|
|||
g_pFunctionTable_Post->pfnAddToFullPack=AddToFullPack_Post;
|
||||
g_pFunctionTable_Post->pfnPlayerPostThink=PlayerPostThink_Post;
|
||||
|
||||
plinfo[ENTINDEX(pPlayer)].iViewType = CAMERA_TOPDOWN;
|
||||
plinfo[iIndex].iViewType = CAMERA_TOPDOWN;
|
||||
pNewCamera = CREATE_NAMED_ENTITY(MAKE_STRING("info_target"));
|
||||
pNewCamera->v.classname = MAKE_STRING("VexdCam");
|
||||
|
||||
|
@ -532,7 +532,7 @@ static cell AMX_NATIVE_CALL set_view(AMX *amx, cell *params) {
|
|||
|
||||
SET_VIEW(pPlayer, pNewCamera);
|
||||
|
||||
plinfo[ENTINDEX(pPlayer)].pViewEnt = pNewCamera;
|
||||
plinfo[iIndex].pViewEnt = pNewCamera;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -915,7 +915,7 @@ static cell AMX_NATIVE_CALL traceresult(AMX *amx, cell *params)
|
|||
return g_tr.iHitgroup;
|
||||
case TR_Hit:
|
||||
if (!FNullEnt(g_tr.pHit))
|
||||
return ENTINDEX(g_tr.pHit);
|
||||
return TypeConversion.edict_to_id(g_tr.pHit);
|
||||
else
|
||||
return -1;
|
||||
case TR_Fraction:
|
||||
|
|
|
@ -112,9 +112,11 @@ static cell AMX_NATIVE_CALL create_entity(AMX *amx, cell *params)
|
|||
edict_t *pEnt = CREATE_NAMED_ENTITY(iszClass);
|
||||
|
||||
if (FNullEnt(pEnt))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ENTINDEX(pEnt);
|
||||
return TypeConversion.edict_to_id(pEnt);
|
||||
}
|
||||
|
||||
static cell AMX_NATIVE_CALL remove_entity(AMX *amx, cell *params)
|
||||
|
@ -125,11 +127,13 @@ static cell AMX_NATIVE_CALL remove_entity(AMX *amx, cell *params)
|
|||
MF_LogError(amx, AMX_ERR_NATIVE, "Entity %d can not be removed", id);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
edict_t *pEnt = TypeConversion.id_to_edict(id);
|
||||
|
||||
if (FNullEnt(pEnt))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
REMOVE_ENTITY(pEnt);
|
||||
|
||||
|
@ -1118,7 +1122,7 @@ static cell AMX_NATIVE_CALL entity_get_edict2(AMX *amx, cell *params)
|
|||
if (FNullEnt(pRet))
|
||||
return -1;
|
||||
|
||||
return ENTINDEX(pRet);
|
||||
return TypeConversion.edict_to_id(pRet);
|
||||
}
|
||||
|
||||
static cell AMX_NATIVE_CALL entity_get_edict(AMX *amx, cell *params)
|
||||
|
@ -1348,12 +1352,12 @@ static cell AMX_NATIVE_CALL find_ent_in_sphere(AMX *amx, cell *params)
|
|||
};
|
||||
REAL radius = amx_ctof(params[3]);
|
||||
|
||||
int returnEnt = ENTINDEX(FIND_ENTITY_IN_SPHERE(pEnt, origin, radius));
|
||||
if (!FNullEnt(pEnt = FIND_ENTITY_IN_SPHERE(pEnt, origin, radius)))
|
||||
{
|
||||
return TypeConversion.cbase_to_id(pEnt);
|
||||
}
|
||||
|
||||
if (FNullEnt(returnEnt))
|
||||
return 0;
|
||||
|
||||
return returnEnt;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static cell AMX_NATIVE_CALL find_ent_by_class(AMX *amx, cell *params) /* 3 param */
|
||||
|
@ -1363,12 +1367,12 @@ static cell AMX_NATIVE_CALL find_ent_by_class(AMX *amx, cell *params) /* 3 param
|
|||
int len;
|
||||
char* sValue = MF_GetAmxString(amx, params[2], 0, &len);
|
||||
|
||||
pEnt = FIND_ENTITY_BY_STRING(pEnt, "classname", sValue);
|
||||
if (!FNullEnt(pEnt = FIND_ENTITY_BY_CLASSNAME(pEnt, sValue)))
|
||||
{
|
||||
return TypeConversion.edict_to_id(pEnt);
|
||||
}
|
||||
|
||||
if (FNullEnt(pEnt))
|
||||
return 0;
|
||||
|
||||
return ENTINDEX(pEnt);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static cell AMX_NATIVE_CALL find_sphere_class(AMX *amx, cell *params) // find_sphere_class(aroundent, _lookforclassname[], Float:radius, entlist[], maxents, Float:origin[3] = {0.0, 0.0, 0.0}); // 6 params
|
||||
|
@ -1405,7 +1409,7 @@ static cell AMX_NATIVE_CALL find_sphere_class(AMX *amx, cell *params) // find_sp
|
|||
else {
|
||||
if (strcmp(STRING(pSearchEnt->v.classname), classToFind) == 0) {
|
||||
// Add to entlist (params[4])
|
||||
entList[entsFound++] = ENTINDEX(pSearchEnt); // raise entsFound
|
||||
entList[entsFound++] = TypeConversion.edict_to_id(pSearchEnt); // raise entsFound
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1419,20 +1423,14 @@ static cell AMX_NATIVE_CALL find_ent_by_target(AMX *amx, cell *params)
|
|||
int iLength;
|
||||
char *szValue = MF_GetAmxString(amx, params[2], 0, &iLength);
|
||||
|
||||
edict_t *pStart;
|
||||
auto pStart = TypeConversion.id_to_edict(iStart);
|
||||
|
||||
if (iStart == -1) {
|
||||
pStart = NULL;
|
||||
} else {
|
||||
if (!is_ent_valid(iStart))
|
||||
pStart = NULL;
|
||||
else
|
||||
pStart = TypeConversion.id_to_edict(iStart);
|
||||
if (!FNullEnt(pStart = FIND_ENTITY_BY_TARGET(pStart, szValue)))
|
||||
{
|
||||
return TypeConversion.edict_to_id(pStart);
|
||||
}
|
||||
|
||||
int iReturnEnt = ENTINDEX(FIND_ENTITY_BY_TARGET(pStart, szValue));
|
||||
|
||||
return iReturnEnt;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static cell AMX_NATIVE_CALL find_ent_by_model(AMX *amx, cell *params) {
|
||||
|
@ -1441,29 +1439,14 @@ static cell AMX_NATIVE_CALL find_ent_by_model(AMX *amx, cell *params) {
|
|||
char *szClass = MF_GetAmxString(amx, params[2], 0, &iLength);
|
||||
char *szModel = MF_GetAmxString(amx, params[3], 1, &iLength2);
|
||||
|
||||
edict_t *pStart;
|
||||
auto pEdict = TypeConversion.id_to_edict(iStart);
|
||||
|
||||
if (iStart == -1)
|
||||
while (!FNullEnt(pEdict = FIND_ENTITY_BY_CLASSNAME(pEdict, szClass)))
|
||||
{
|
||||
pStart = NULL;
|
||||
} else {
|
||||
if (!is_ent_valid(iStart))
|
||||
pStart = NULL;
|
||||
else
|
||||
pStart = TypeConversion.id_to_edict(iStart);
|
||||
}
|
||||
|
||||
edict_t *pEdict = FIND_ENTITY_BY_STRING(pStart, "classname", szClass);
|
||||
|
||||
const char *check;
|
||||
|
||||
while (pEdict && !FNullEnt(pEdict))
|
||||
{
|
||||
check = STRING(pEdict->v.model);
|
||||
if (!check || strcmp(check, szModel))
|
||||
pEdict = FIND_ENTITY_BY_STRING(pEdict, "classname", szClass);
|
||||
else
|
||||
return ENTINDEX(pEdict);
|
||||
if (pEdict->v.model > 0 && !strcmp(STRING(pEdict->v.model), szModel))
|
||||
{
|
||||
return TypeConversion.edict_to_id(pEdict);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -1474,20 +1457,14 @@ static cell AMX_NATIVE_CALL find_ent_by_tname(AMX *amx, cell *params) {
|
|||
int iLength;
|
||||
char *szValue = MF_GetAmxString(amx, params[2], 0, &iLength);
|
||||
|
||||
edict_t *pStart;
|
||||
auto pStart = TypeConversion.id_to_edict(iStart);
|
||||
|
||||
if (iStart == -1) {
|
||||
pStart = NULL;
|
||||
} else {
|
||||
if (!is_ent_valid(iStart))
|
||||
pStart = NULL;
|
||||
else
|
||||
pStart = TypeConversion.id_to_edict(iStart);
|
||||
if (!FNullEnt(pStart = FIND_ENTITY_BY_TARGETNAME(pStart, szValue)))
|
||||
{
|
||||
return TypeConversion.edict_to_id(pStart);
|
||||
}
|
||||
|
||||
int iReturnEnt = ENTINDEX(FIND_ENTITY_BY_TARGETNAME(pStart, szValue));
|
||||
|
||||
return iReturnEnt;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static cell AMX_NATIVE_CALL find_ent_by_owner(AMX *amx, cell *params) // native find_ent_by_owner(start_from_ent, classname[], owner_index); = 3 params
|
||||
|
@ -1512,15 +1489,14 @@ static cell AMX_NATIVE_CALL find_ent_by_owner(AMX *amx, cell *params) // native
|
|||
int len;
|
||||
char* classname = MF_GetAmxString(amx, params[2], 0, &len);
|
||||
|
||||
while (true) {
|
||||
pEnt = FIND_ENTITY_BY_STRING(pEnt, sCategory, classname);
|
||||
if (FNullEnt(pEnt)) // break and return 0 if bad
|
||||
break;
|
||||
else if (pEnt->v.owner == entOwner) // compare pointers
|
||||
return ENTINDEX(pEnt);
|
||||
while (!FNullEnt(pEnt = FIND_ENTITY_BY_STRING(pEnt, sCategory, classname)))
|
||||
{
|
||||
if (pEnt->v.owner == entOwner)
|
||||
{
|
||||
return TypeConversion.edict_to_id(pEnt);
|
||||
}
|
||||
}
|
||||
|
||||
// If it comes here, the while loop ended because an ent failed (FNullEnt() == true)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1544,7 +1520,7 @@ static cell AMX_NATIVE_CALL get_grenade_id(AMX *amx, cell *params) /* 4 param *
|
|||
if (params[3]>0) {
|
||||
szModel = (char*)STRING(pentFind->v.model);
|
||||
MF_SetAmxString(amx, params[2], szModel, params[3]);
|
||||
return ENTINDEX(pentFind);
|
||||
return TypeConversion.edict_to_id(pentFind);
|
||||
}
|
||||
}
|
||||
pentFind = FIND_ENTITY_BY_CLASSNAME( pentFind, "grenade" );
|
||||
|
|
|
@ -57,12 +57,14 @@ int Spawn(edict_t *pEntity)
|
|||
PRECACHE_MODEL("models/rpgrocket.mdl");
|
||||
g_precachedStuff = true;
|
||||
}
|
||||
if (SpawnForward != -1) {
|
||||
int retVal = 0;
|
||||
int id = ENTINDEX(pEntity);
|
||||
retVal = MF_ExecuteForward(SpawnForward, (cell)id);
|
||||
if (retVal)
|
||||
if (SpawnForward != -1)
|
||||
{
|
||||
int id = TypeConversion.edict_to_id(pEntity);
|
||||
|
||||
if (MF_ExecuteForward(SpawnForward, (cell)id))
|
||||
{
|
||||
RETURN_META_VALUE(MRES_SUPERCEDE, -1);
|
||||
}
|
||||
}
|
||||
RETURN_META_VALUE(MRES_IGNORED, 0);
|
||||
}
|
||||
|
@ -71,6 +73,7 @@ void PlaybackEvent(int flags, const edict_t *pInvoker, unsigned short eventindex
|
|||
{
|
||||
if (PlaybackForward != -1) {
|
||||
edict_t *e = (edict_t *)pInvoker;
|
||||
int invoker = 0;
|
||||
int retVal = 0;
|
||||
static cell cOrigin[3];
|
||||
static cell cAngles[3];
|
||||
|
@ -84,7 +87,9 @@ void PlaybackEvent(int flags, const edict_t *pInvoker, unsigned short eventindex
|
|||
cAngles[2] = amx_ftoc(vAngles.z);
|
||||
cell CellOrigin = MF_PrepareCellArray(cOrigin, 3);
|
||||
cell CellAngles = MF_PrepareCellArray(cAngles, 3);
|
||||
retVal = MF_ExecuteForward(PlaybackForward, (cell)flags, (cell)ENTINDEX(e), (cell)eventindex, delay, CellOrigin, CellAngles, fparam1, fparam2, (cell)iparam1, (cell)iparam2, (cell)bparam1, (cell)bparam2);
|
||||
if (!FNullEnt(e))
|
||||
invoker = TypeConversion.edict_to_id(e);
|
||||
retVal = MF_ExecuteForward(PlaybackForward, (cell)flags, (cell)invoker, (cell)eventindex, delay, CellOrigin, CellAngles, fparam1, fparam2, (cell)iparam1, (cell)iparam2, (cell)bparam1, (cell)bparam2);
|
||||
if (retVal)
|
||||
RETURN_META(MRES_SUPERCEDE);
|
||||
}
|
||||
|
@ -97,9 +102,8 @@ void KeyValue(edict_t *pEntity, KeyValueData *pkvd)
|
|||
int retVal = 0;
|
||||
g_inKeyValue=true;
|
||||
g_pkvd=pkvd;
|
||||
int index = ENTINDEX(pEntity);
|
||||
if (DispatchKeyForward != -1) {
|
||||
retVal = MF_ExecuteForward(DispatchKeyForward, (cell)index);
|
||||
retVal = MF_ExecuteForward(DispatchKeyForward, (cell)TypeConversion.edict_to_id(pEntity));
|
||||
g_inKeyValue=false;
|
||||
if (retVal)
|
||||
RETURN_META(MRES_SUPERCEDE);
|
||||
|
@ -125,11 +129,14 @@ void CmdStart(const edict_t *player, const struct usercmd_s *_cmd, unsigned int
|
|||
edict_t *pEntity = (edict_t *)player;
|
||||
g_cmd = (struct usercmd_s *)_cmd;
|
||||
int origImpulse = g_cmd->impulse; // incase a plugin alters it
|
||||
|
||||
auto index = TypeConversion.edict_to_id(pEntity);
|
||||
|
||||
for (i=0; i<Impulses.length(); i++)
|
||||
{
|
||||
if (Impulses[i]->Check == g_cmd->impulse)
|
||||
{
|
||||
retVal = MF_ExecuteForward(Impulses[i]->Forward, (cell)ENTINDEX(pEntity), (cell)origImpulse);
|
||||
retVal = MF_ExecuteForward(Impulses[i]->Forward, (cell)index, (cell)origImpulse);
|
||||
|
||||
// don't return SUPERCEDE in any way here,
|
||||
// we don't want to break client_impulse forward and access to cmd with [g/s]et_usercmd
|
||||
|
@ -141,7 +148,7 @@ void CmdStart(const edict_t *player, const struct usercmd_s *_cmd, unsigned int
|
|||
// client_impulse
|
||||
if (ClientImpulseForward != -1 && origImpulse != 0)
|
||||
{
|
||||
retVal = MF_ExecuteForward(ClientImpulseForward, (cell)ENTINDEX(pEntity), (cell)origImpulse);
|
||||
retVal = MF_ExecuteForward(ClientImpulseForward, (cell)index, (cell)origImpulse);
|
||||
|
||||
if (retVal)
|
||||
g_cmd->impulse = 0;
|
||||
|
@ -151,7 +158,7 @@ void CmdStart(const edict_t *player, const struct usercmd_s *_cmd, unsigned int
|
|||
if (CmdStartForward != -1)
|
||||
{
|
||||
incmd = true;
|
||||
retVal = MF_ExecuteForward(CmdStartForward, (cell)ENTINDEX(pEntity));
|
||||
retVal = MF_ExecuteForward(CmdStartForward, (cell)index);
|
||||
incmd = false;
|
||||
|
||||
if (retVal)
|
||||
|
@ -163,12 +170,12 @@ void CmdStart(const edict_t *player, const struct usercmd_s *_cmd, unsigned int
|
|||
|
||||
void ClientKill(edict_t *pEntity)
|
||||
{
|
||||
int retVal = 0;
|
||||
|
||||
if (ClientKillForward != -1) {
|
||||
retVal = MF_ExecuteForward(ClientKillForward, (cell)ENTINDEX(pEntity));
|
||||
if (retVal)
|
||||
if (ClientKillForward != -1)
|
||||
{
|
||||
if (MF_ExecuteForward(ClientKillForward, (cell)TypeConversion.edict_to_id(pEntity)))
|
||||
{
|
||||
RETURN_META(MRES_SUPERCEDE);
|
||||
}
|
||||
}
|
||||
|
||||
RETURN_META(MRES_IGNORED);
|
||||
|
@ -176,21 +183,27 @@ void ClientKill(edict_t *pEntity)
|
|||
|
||||
void PlayerPreThink(edict_t *pEntity)
|
||||
{
|
||||
MF_ExecuteForward(PlayerPreThinkForward, (cell)ENTINDEX(pEntity));
|
||||
if (PlayerPreThinkForward != -1)
|
||||
{
|
||||
MF_ExecuteForward(PlayerPreThinkForward, (cell)TypeConversion.edict_to_id(pEntity));
|
||||
}
|
||||
|
||||
RETURN_META(MRES_IGNORED);
|
||||
}
|
||||
|
||||
void PlayerPostThink_Post(edict_t *pEntity)
|
||||
{
|
||||
if(plinfo[ENTINDEX(pEntity)].pViewEnt) {
|
||||
edict_t *pCamEnt = plinfo[ENTINDEX(pEntity)].pViewEnt;
|
||||
auto index = TypeConversion.edict_to_id(pEntity);
|
||||
|
||||
if(plinfo[index].pViewEnt) {
|
||||
edict_t *pCamEnt = plinfo[index].pViewEnt;
|
||||
|
||||
MAKE_VECTORS(pEntity->v.v_angle + pEntity->v.punchangle);
|
||||
Vector vecSrc = pEntity->v.origin + pEntity->v.view_ofs;
|
||||
Vector vecAiming = gpGlobals->v_forward;
|
||||
TraceResult tr;
|
||||
|
||||
switch(plinfo[ENTINDEX(pEntity)].iViewType) {
|
||||
switch(plinfo[index].iViewType) {
|
||||
case CAMERA_3RDPERSON:
|
||||
TRACE_LINE(vecSrc, vecSrc - (vecAiming * 128), ignore_monsters, ENT(pEntity), &tr);
|
||||
SET_VIEW(pEntity, pCamEnt);
|
||||
|
@ -212,16 +225,16 @@ void PlayerPostThink_Post(edict_t *pEntity)
|
|||
break;
|
||||
default:
|
||||
SET_VIEW(pEntity, pEntity);
|
||||
REMOVE_ENTITY(plinfo[ENTINDEX(pEntity)].pViewEnt);
|
||||
plinfo[ENTINDEX(pEntity)].iViewType = CAMERA_NONE;
|
||||
plinfo[ENTINDEX(pEntity)].pViewEnt = NULL;
|
||||
REMOVE_ENTITY(plinfo[index].pViewEnt);
|
||||
plinfo[index].iViewType = CAMERA_NONE;
|
||||
plinfo[index].pViewEnt = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (PlayerPostThinkForward != -1)
|
||||
{
|
||||
if (MF_ExecuteForward(PlayerPostThinkForward, (cell)ENTINDEX(pEntity)))
|
||||
if (MF_ExecuteForward(PlayerPostThinkForward, (cell)index))
|
||||
RETURN_META(MRES_SUPERCEDE);
|
||||
}
|
||||
|
||||
|
@ -234,8 +247,8 @@ void pfnTouch(edict_t *pToucher, edict_t *pTouched)
|
|||
int retVal = 0;
|
||||
const char *ptrClass = STRING(pToucher->v.classname);
|
||||
const char *ptdClass = STRING(pTouched->v.classname);
|
||||
int ptrIndex = ENTINDEX(pToucher);
|
||||
int ptdIndex = ENTINDEX(pTouched);
|
||||
int ptrIndex = TypeConversion.edict_to_id(pToucher);
|
||||
int ptdIndex = TypeConversion.edict_to_id(pTouched);
|
||||
META_RES res=MRES_IGNORED;
|
||||
for (i=0; i<Touches.length(); i++)
|
||||
{
|
||||
|
@ -297,14 +310,14 @@ void Think(edict_t *pent)
|
|||
{
|
||||
if (Thinks[i]->Class.compare(cls)==0)
|
||||
{
|
||||
retVal=MF_ExecuteForward(Thinks[i]->Forward, (cell)ENTINDEX(pent));
|
||||
retVal=MF_ExecuteForward(Thinks[i]->Forward, (cell)TypeConversion.edict_to_id(pent));
|
||||
if (retVal & 2/*PLUGIN_HANDLED_MAIN*/)
|
||||
RETURN_META(MRES_SUPERCEDE);
|
||||
else if (retVal)
|
||||
res=MRES_SUPERCEDE;
|
||||
}
|
||||
}
|
||||
retVal=MF_ExecuteForward(pfnThinkForward, (cell)ENTINDEX(pent));
|
||||
retVal=MF_ExecuteForward(pfnThinkForward, (cell)TypeConversion.edict_to_id(pent));
|
||||
if (retVal)
|
||||
res=MRES_SUPERCEDE;
|
||||
|
||||
|
|
|
@ -170,9 +170,10 @@ static cell AMX_NATIVE_CALL get_global_edict2(AMX *amx, cell *params)
|
|||
return -1;
|
||||
}
|
||||
|
||||
// Will crash if ENTINDEX() is called on bad pointer?
|
||||
if(!FNullEnt(pReturnEntity))
|
||||
return ENTINDEX(pReturnEntity);
|
||||
if (!FNullEnt(pReturnEntity))
|
||||
{
|
||||
return TypeConversion.edict_to_id(pReturnEntity);
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user