Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- To do:
- T = needs testing
- X = done
- - = cancelled
- [ ] fix animation
- [ ] remove animation on spawn if not needed
- [X] fix colors
- [X] fix origin modifier
- [X?] fix not showing when too close to the wall
- [-] make EF_NODRAW(doesn't trigger fwFmAddToFullPack anymore)
- [X] make invisible and out of map
- [-] find better method for default sprite
- [ ] make fwNtInfoGet native
- [T] check iFwNtSet native
- [T] player iID bitsums in natives instead of simple numbers
- [X] bitsum show variable instead of 2d array
- [ ] const parameters where it's the case
- [X] remove alive status
- [X] only calculate sprite origin if g_iBsEntShow is set for specified players
- [X] remake sprite origin calculations
- [X] support map camera origin
- [ ] support any camera origin
- [ ] animate sprite manually
- [T] ability to choose sprite starting frame
- [T] ability to choose sprite end frame
- [T] ability to choose sprite framerate
- [T] ability to choose origin update rate
- [ ] check for valid model id
- [T] check for valid parameters
- [ ] only draw sprite in fwFmCheckVisibilityPre if it's being used by players
- [T] iFwNtSet return values
- [T] ability to not change g_iBsEntShow
- [T] only calculate sprite origin if iID2 is connected
- [T] default values where needed
- [ ] find a way to set them on creation instead of in plugin_init
- [X] set g_iBsEntShow to 0 on client_putinserver for bots
- [X] optimize method of checking for bots
- [ ] fix bot flag clearing on disconnect allowing the native to trigger for that id
- [X] fix wrong camera origin when spectating
- [T] floatclamp for fEntScale
- [X] use FM_ClientDisconnect instead of client_disconnect
- [T] is_in_viewcone or similar check
- [X] add support for camera
- [X] FM_UpdateClientData instead of Ham_Player_UpdateClientData
- [T] add bot check
- [ ] nodraw entities in addtofullpack for players who don't need to see them
- [ ] min/max distance to draw
- [ ] fix wrong colors being shown sometimes
- [ ] don't draw esp of spectated player?
- [ ] fix 32 player not having or drawing the entity
- [ ]
- */
- //#pragma dynamic 16384
- /*================================================================================
- [Plugin Customization]
- =================================================================================*/
- const g_iConstMaxPlayers = 32 + 1 /* Server slots ¬ 32 */
- const g_iConstMaxEntities = 128 /* Is for max 4096 entities (128*32=4096) ¬ 128 */
- /*================================================================================
- Customization ends here! Yes, that's it. Editing anything beyond
- here is not officially supported. Proceed at your own risk...
- =================================================================================*/
- #include <amxmodx>
- #include <fakemeta>
- //#include <orpheu>
- //#include <orpheu_stocks>
- #include <fakemeta_util>
- #include <xs>
- #include <bitsums>
- #include <bitsums_array>
- #include <D7ESP_const>
- #include <D7Debug>
- /*================================================================================
- [Global Variables]
- =================================================================================*/
- /* Server Global */
- new g_iMaxPlayers;
- /* Client Global */
- new Float:g_fVecOrigin[g_iConstMaxPlayers][g_iConstMaxPlayers][3],
- Float:g_fScale[g_iConstMaxPlayers][g_iConstMaxPlayers]
- /* Bitsum client */
- new g_iBsConnected,
- g_iBsBot,
- g_iBsVisible[g_iConstMaxPlayers];
- /* Bitsum entity */
- new g_iBsArEspSprite[g_iConstMaxEntities]
- new g_iBsEntShow[g_iConstMaxPlayers], g_iIDEntModel[g_iConstMaxPlayers][g_iConstMaxPlayers],
- g_iEntFrameStart[g_iConstMaxPlayers][g_iConstMaxPlayers],
- g_iEntFrameEnd[g_iConstMaxPlayers][g_iConstMaxPlayers],
- Float:g_fEntFrameRate[g_iConstMaxPlayers][g_iConstMaxPlayers],
- g_iEntFrame[g_iConstMaxPlayers][g_iConstMaxPlayers],
- Float:g_fEntScale[g_iConstMaxPlayers][g_iConstMaxPlayers]/* = { { 1.0, ... }, ... }*/,
- g_iEntRenderMode[g_iConstMaxPlayers][g_iConstMaxPlayers]/* = { { kRenderNormal, ... }, ... }*/,
- g_iEntRenderFx[g_iConstMaxPlayers][g_iConstMaxPlayers]/* = { { kRenderFxNone, ... }, ... }*/,
- Float:g_fEntRenderAmount[g_iConstMaxPlayers][g_iConstMaxPlayers]/* = { { 255.0, ... }, ... }*/,
- Float:g_fEntOriginUpdateRate[g_iConstMaxPlayers][g_iConstMaxPlayers],
- g_iVecEntRenderColor[g_iConstMaxPlayers][g_iConstMaxPlayers][3]/* = { { { 255, 255, 255 }, ... }, ... }*/,
- Float:g_fVecEntOriginModifier[g_iConstMaxPlayers][g_iConstMaxPlayers][3],
- g_iIDEntCamera[g_iConstMaxPlayers];
- #define is_user_valid(%1) (1 <= (%1) <= g_iMaxPlayers)
- new g_iIDFwFmPrecacheModel, g_szDefaultSprite[64];
- public plugin_precache()
- {
- g_iIDFwFmPrecacheModel = register_forward(FM_PrecacheModel, "fwFmPrecacheModel", 1)
- }
- public fwFmPrecacheModel(const szFile[])
- {
- if (!equali(szFile[strlen(szFile) - 4], ".spr"))
- return;
- new iCountFrames = engfunc(EngFunc_ModelFrames, engfunc(EngFunc_ModelIndex, szFile));
- static iCountFramesMax;
- if (iCountFramesMax < iCountFrames/*!iCountFramesMax || iCountFrames > 1 && (iCountFramesMax < 2 || iCountFramesMax > iCountFrames)*/)
- {
- iCountFramesMax = iCountFrames;
- formatex(g_szDefaultSprite, charsmax(g_szDefaultSprite), szFile)
- }
- //ftD7Log(_, _, "[fwFmPrecacheModel] szFile: ^"%s^". iCountFrames: %d. iCountFramesMax: %d.", szFile, iCountFrames, iCountFramesMax)
- }
- new const g_szPluginVersion[] = "1.3.5";
- public plugin_init()
- {
- register_plugin("[D7] API: ESP", g_szPluginVersion, "DarkGL, schmurgel1983, D i 5 7 i n c T")
- register_forward(FM_AddToFullPack, "fwFmAddToFullPack", 1)
- register_forward(FM_CheckVisibility, "fwFmCheckVisibilityPre")
- //register_forward(FM_ClientConnect, "fwFmClientConnect", 1)
- register_forward(FM_ClientDisconnect, "fwFmClientDisconnectPre")
- register_forward(FM_ClientDisconnect, "fwFmClientDisconnect", 1)
- register_forward(FM_SetView, "fwFmSetView", true)
- register_forward(FM_UpdateClientData, "fwFmUpdateClientDataPre")
- //OrpheuRegisterHook(OrpheuGetEngineFunction("pfnSetView", "SetView"), "fwOpSetView", OrpheuHookPost);
- g_iMaxPlayers = get_maxplayers();
- new iID2;//, iBsIDs1
- for (new iID = 1; iID <= g_iMaxPlayers; iID++)
- {
- /* bitsum_add(iBsIDs1, iID)
- ftD7Log(_, _, "[plugin_init] iID: %d.^n\
- Power(1 << %d)(d/i/u): %d/%i/%u. ftIsPowerOfTwo: %s.^n\
- Power sum(d/i/u): %d/%i/%u. ftIsPowerOfTwo: %s.",
- iID, iID - 1, (1 << (iID - 1)), (1 << (iID - 1)), (1 << (iID - 1)), ftIsPowerOfTwo(1 << (iID - 1)) ? "YES" : "NO",
- iBsIDs1, iBsIDs1, iBsIDs1, ftIsPowerOfTwo(iBsIDs1) ? "YES" : "NO")
- */
- for (iID2 = 1; iID2 <= g_iMaxPlayers; iID2++)
- {
- g_fEntScale[iID][iID2] = 1.0;
- g_fEntRenderAmount[iID][iID2] = 255.0;
- //g_iVecEntRenderColor[iID][iID2] = { 255, 255, 255 };
- /*
- ftD7Log(_, _, "[plugin_init] iID2: %d.^n\
- (1 << %d) | (1 << %d) = (d/i/u)%d/%i/%u.%s",
- iID2, iID - 1, iID2 - 1,
- (1 << (iID - 1)) | (1 << (iID2 - 1)),
- (1 << (iID - 1)) | (1 << (iID2 - 1)),
- (1 << (iID - 1)) | (1 << (iID2 - 1)),
- (iID2 != g_iMaxPlayers) ? "" : "^n")*/
- }
- }
- }
- /*
- ftIsPowerOfTwo(x)
- {
- return ((x != 0) && ((x & (~x + 1)) == x));
- }*/
- public fwFmSetView(const iID, const iIDEnt)
- {
- g_iIDEntCamera[iID] = iIDEnt;
- //ftD7Log(_, _, "[fwFmSetView] iID: %d. iIDEnt: %d.", iID, iIDEnt)
- }
- /*
- public fwOpSetView(const iID, const iIDEnt)
- {
- g_iIDEntCamera[iID] = iIDEnt;
- //ftD7Log(_, _, "[fwOpSetView] iID: %d. iIDEnt: %d.", iID, iIDEnt)
- }*/
- public plugin_cfg() //plugin_cfg
- {
- unregister_forward(FM_PrecacheModel, g_iIDFwFmPrecacheModel, 1)
- //ftD7Log(_, _, "[ftCreateEntities] g_szDefaultSprite: ^"%s^".", g_szDefaultSprite)
- //g_szDefaultSprite = "sprites/ballsmoke.spr";
- new iIDAllocString = engfunc(EngFunc_AllocString, "env_sprite");
- for (new iID = 1; iID <= g_iMaxPlayers; iID++)
- {
- new iIDEnt = engfunc(EngFunc_CreateNamedEntity, iIDAllocString)
- //ftD7Log(_, _, "[ftCreateEntities] iIDEnt: %d. iIDAllocString: %d.", iIDEnt, iIDAllocString)
- if (!pev_valid(iIDEnt))
- {
- //ftD7Log(_, _, "[ftCreateEntities] iIDEnt: %d. INVALID!", iIDEnt)
- continue;
- }
- //ftD7Log(_, _, "[ftCreateEntities] iIDEnt: %d. VALID!", iIDEnt)
- engfunc(EngFunc_SetModel, iIDEnt, g_szDefaultSprite)
- set_pev(iIDEnt, pev_animtime, get_gametime())
- set_pev(iIDEnt, pev_framerate, random_float(10.0, 15.0))
- set_pev(iIDEnt, pev_spawnflags, SF_SPRITE_STARTON)
- dllfunc(DLLFunc_Spawn, iIDEnt)
- set_pev(iIDEnt, pev_owner, iID)
- set_pev(iIDEnt, pev_solid, SOLID_NOT)
- set_pev(iIDEnt, pev_movetype, MOVETYPE_NONE)
- set_pev(iIDEnt, pev_rendermode, kRenderTransTexture)
- set_pev(iIDEnt, pev_renderamt, 0.0)
- //set_pev(iIDEnt, pev_effects, pev(iIDEnt, pev_effects) | EF_NODRAW)
- engfunc(EngFunc_SetOrigin, iIDEnt, Float:{ 9000.0, 9000.0, 9000.0 })//4096.0
- add_bitsum_array(g_iBsArEspSprite, iIDEnt)
- }
- }
- public plugin_natives()
- {
- register_library("D7ESP")
- register_native("iNtD7ESPGet", "fwNtGet")
- register_native("iNtD7ESPSet", "iFwNtSet")
- set_native_filter("fwFilterNative")
- }
- public fwFilterNative(const szName[], const iID, const iTrap)
- {
- if (!iTrap)
- return PLUGIN_HANDLED;
- return PLUGIN_CONTINUE;
- }
- public fwNtGet(const iIDPlugin, const iCountParams)
- {
- }
- public iFwNtSet(const iIDPlugin, const iCountParams)
- {
- new iBsIDs1 = get_param(g_iIDParamBsIDs1);
- //clamp(iBsIDs1, 0, (1 << 31))
- if (!iBsIDs1)
- return 1;
- iBsIDs1 &= ~g_iBsBot;
- if (!iBsIDs1)
- return 0;
- //ftD7Log("a", _, "[iFwNtSet] iBsIDs1: %d.", iBsIDs1)
- new iBsIDsAdd = get_param(g_iIDParamBsIDsAdd),
- iBsIDsRemove = get_param(g_iIDParamBsIDsRemove),
- iBsIDsChange = get_param(g_iIDParamBsIDsChange),
- iID;
- //if (iBsIDsAdd != g_iParamDontChange)
- //clamp(iBsIDsAdd, 0, (1 << 31))
- //if (iBsIDsRemove != g_iParamDontChange)
- //clamp(iBsIDsRemove, 0, (1 << 31))
- //ftD7Log("a", _, "[iFwNtSet] iBsIDsAdd: %d. iBsIDsRemove: %d. iBsIDsChange: %d.", iBsIDsAdd, iBsIDsRemove, iBsIDsChange)
- for (iID = 1; iID <= g_iMaxPlayers; iID++)
- {
- if (iBsIDsAdd != g_iParamDontChange && iBsIDsRemove != g_iParamDontChange || !iBsIDsAdd && !iBsIDsRemove)
- break;
- else if (!bitsum_get(iBsIDs1, iID))
- continue;
- if (iBsIDsAdd != g_iParamDontChange)
- g_iBsEntShow[iID] |= iBsIDsAdd;
- if (iBsIDsRemove != g_iParamDontChange)
- g_iBsEntShow[iID] &= ~iBsIDsRemove;
- }
- if (iBsIDsChange != g_iParamDontChange)
- {
- //clamp(iBsIDsChange, 0, (1 << 31))
- if (!iBsIDsChange)
- return 0;
- }
- new iIDEntModel = get_param(g_iIDParamIDModel),
- iEntFrameStart = get_param(g_iIDParamFrameStart),
- iEntFrameEnd = get_param(g_iIDParamFrameEnd),
- Float:fEntFrameRate = get_param_f(g_iIDParamFrameRate),
- Float:fEntScale = get_param_f(g_iIDParamScale),
- iEntRenderMode = get_param(g_iIDParamRenderMode),
- iEntRenderFx = get_param(g_iIDParamRenderFx),
- Float:fEntRenderAmount = get_param_f(g_iIDParamRenderAmount),
- Float:fEntOriginUpdateRate = get_param_f(g_iIDParamOriginUpdateRate),
- iReturn, iID2;
- static iVecEntRenderColor[4], Float:fVecEntOriginModifier[4];
- get_array(g_iIDParamRenderColor, iVecEntRenderColor, charsmax(iVecEntRenderColor))
- get_array_f(g_iIDParamOriginModifier, fVecEntOriginModifier, charsmax(fVecEntOriginModifier))
- if (iEntFrameStart != g_iParamDontChange)
- if (iEntFrameStart < 0)
- {
- iEntFrameStart = 0;
- iReturn++;
- }
- if (iEntFrameEnd != g_iParamDontChange)
- if (iEntFrameEnd < 0)
- {
- iEntFrameEnd = 0;
- iReturn++;
- }
- if (iEntFrameStart != g_iParamDontChange
- && iEntFrameEnd != g_iParamDontChange
- && iEntFrameStart < iEntFrameEnd)
- {
- new iTemp = iEntFrameStart;
- iEntFrameStart = iEntFrameEnd;
- iEntFrameEnd = iTemp;
- iReturn++;
- }
- if (fEntFrameRate != g_fParamDontChange
- && fEntFrameRate < 0.0)
- {
- fEntFrameRate = 0.0;
- iReturn++;
- }
- if (fEntScale != g_fParamDontChange)
- floatclamp(fEntScale, 0.000001, 1.0)
- if (iEntRenderMode != g_iParamDontChange)
- clamp(iEntRenderMode, kRenderNormal, kRenderTransAdd)
- if (iEntRenderFx != g_iParamDontChange)
- clamp(iEntRenderFx, kRenderFxNone, kRenderFxClampMinScale)
- if (fEntRenderAmount != g_fParamDontChange)
- floatclamp(fEntRenderAmount, 0.0, 255.0)
- if (fEntOriginUpdateRate != g_fParamDontChange
- && fEntOriginUpdateRate < 0.0)
- {
- fEntOriginUpdateRate = 0.0;
- iReturn++;
- }
- if (iVecEntRenderColor[0] != g_iParamDontChange)
- {
- clamp(iVecEntRenderColor[0], 0, 255);
- clamp(iVecEntRenderColor[1], 0, 255);
- clamp(iVecEntRenderColor[2], 0, 255);
- }
- if (fVecEntOriginModifier[0] != g_fParamDontChange)
- {
- floatclamp(fVecEntOriginModifier[0], -4096.0, 4096.0);
- floatclamp(fVecEntOriginModifier[1], -4096.0, 4096.0);
- floatclamp(fVecEntOriginModifier[2], -4096.0, 4096.0);
- }
- for (iID = 1; iID <= g_iMaxPlayers; iID++)
- {
- if (!bitsum_get(iBsIDs1, iID))
- continue;
- for (iID2 = 1; iID2 <= g_iMaxPlayers; iID2++)
- {
- if (iBsIDsChange != g_iParamDontChange)
- {
- if (!bitsum_get(iBsIDsChange, iID2))
- continue;
- }
- else
- {
- if (!bitsum_get(g_iBsEntShow[iID], iID2))
- continue;
- }
- if (iIDEntModel != g_iParamDontChange)
- g_iIDEntModel[iID][iID2] = iIDEntModel;
- if (iEntFrameStart != g_iParamDontChange)
- g_iEntFrameStart[iID][iID2] = iEntFrameStart;
- if (iEntFrameEnd != g_iParamDontChange)
- g_iEntFrameEnd[iID][iID2] = iEntFrameEnd;
- if (fEntFrameRate != g_fParamDontChange)
- {
- g_fEntFrameRate[iID][iID2] = fEntFrameRate;
- }
- g_iEntFrame[iID][iID2] = !g_fEntFrameRate[iID][iID2] ? random_num(iEntFrameStart, iEntFrameEnd) : iEntFrameStart;
- if (fEntScale != g_fParamDontChange)
- g_fEntScale[iID][iID2] = fEntScale;
- if (iEntRenderMode != g_iParamDontChange)
- g_iEntRenderMode[iID][iID2] = iEntRenderMode;
- if (iEntRenderFx != g_iParamDontChange)
- g_iEntRenderFx[iID][iID2] = iEntRenderFx;
- if (fEntRenderAmount != g_fParamDontChange)
- g_fEntRenderAmount[iID][iID2] = fEntRenderAmount;
- if (fEntOriginUpdateRate != g_fParamDontChange)
- g_fEntOriginUpdateRate[iID][iID2] = fEntOriginUpdateRate;
- if (iVecEntRenderColor[0] != g_iParamDontChange)
- {
- g_iVecEntRenderColor[iID][iID2][0] = iVecEntRenderColor[0];
- g_iVecEntRenderColor[iID][iID2][1] = iVecEntRenderColor[1];
- g_iVecEntRenderColor[iID][iID2][2] = iVecEntRenderColor[2];
- }
- if (fVecEntOriginModifier[0] != g_fParamDontChange)
- {
- g_fVecEntOriginModifier[iID][iID2][0] = fVecEntOriginModifier[0];
- g_fVecEntOriginModifier[iID][iID2][1] = fVecEntOriginModifier[1];
- g_fVecEntOriginModifier[iID][iID2][2] = fVecEntOriginModifier[2];
- }
- }
- }
- /*
- ftD7Log("a", _, "[iFwNtSet] iIDEntModel: %d. fEntScale: %.2f. \
- fVecEntOriginModifier: %.2f, %.2f, %.2f. iEntRenderMode: %d. iEntRenderFx: %d. fEntRenderAmount: %.2f. \
- iVecEntRenderColor: %d, %d, %d.", iIDEntModel, fEntScale,
- fVecEntOriginModifier[0], fVecEntOriginModifier[1], fVecEntOriginModifier[2],
- iEntRenderMode, iEntRenderFx, fEntRenderAmount,
- iVecEntRenderColor[0], iVecEntRenderColor[1], iVecEntRenderColor[2])*/
- //
- //if ( != -1)
- //[iID][iID2] = ;
- return iReturn;
- }
- public client_putinserver(iID)
- {
- add_bitsum(g_iBsConnected, iID)
- }
- //public fwFmClientConnect(const iID)
- public client_authorized(iID)
- {
- if (is_user_bot(iID))
- {
- bitsum_add(g_iBsBot, iID)
- g_iBsEntShow[iID] = 0;
- }
- }
- public fwFmClientDisconnectPre(const iID)
- {
- del_bitsum(g_iBsConnected, iID)
- }
- public fwFmClientDisconnect(const iID)
- {
- bitsum_del(g_iBsBot, iID)
- }
- public fwFmUpdateClientDataPre(const iID)
- //public client_PreThink(iID)
- {
- if (!get_bitsum(g_iBsConnected, iID) || get_bitsum(g_iBsBot, iID))
- return;
- static Float:fVecOrigin[3], Float:fVecOriginCamera[3];
- pev(iID, pev_origin, fVecOrigin)
- pev(g_iIDEntCamera[iID], pev_origin, fVecOriginCamera)
- if (g_iIDEntCamera[iID] == iID)
- {
- new iIDiuser2 = pev(iID, pev_iuser2);
- static Float:fVecViewOffset[3];
- pev(!iIDiuser2 ? iID : iIDiuser2, pev_view_ofs, fVecViewOffset)
- xs_vec_add(fVecOriginCamera, fVecViewOffset, fVecOriginCamera)
- //fVecOriginCamera[0] += fVecViewOffset[0];
- //fVecOriginCamera[1] += fVecViewOffset[1];
- //fVecOriginCamera[2] += fVecViewOffset[2];
- }
- static Float:fVecOrigin2[3];
- new iIDTraceHandle;
- for (new iID2 = 1; iID2 <= g_iMaxPlayers; iID2++)
- {
- if (!get_bitsum(g_iBsEntShow[iID], iID2)
- || !get_bitsum(g_iBsConnected, iID2))
- continue;
- pev(iID2, pev_origin, fVecOrigin2)
- if (g_iIDEntCamera[iID] == iID && !fm_is_in_viewcone(iID, fVecOrigin2))
- {
- bitsum_del(g_iBsVisible[iID], iID2)
- continue;
- }
- else
- add_bitsum(g_iBsVisible[iID], iID2)
- iIDTraceHandle = create_tr2();
- engfunc(EngFunc_TraceLine, fVecOriginCamera, fVecOrigin2, IGNORE_MONSTERS, iID, iIDTraceHandle)
- get_tr2(iIDTraceHandle, TR_vecEndPos, g_fVecOrigin[iID][iID2])
- free_tr2(iIDTraceHandle)
- xs_vec_add(g_fVecOrigin[iID][iID2], g_fVecEntOriginModifier[iID][iID2], g_fVecOrigin[iID][iID2])/*
- if (!task_exists(iID))
- {
- static Float:fVecViewOffset[3];
- pev(iID2, pev_view_ofs, fVecViewOffset)
- xs_vec_add(fVecOrigin2, fVecViewOffset, fVecViewOffset)
- message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, iID)
- write_byte(TE_BEAMPOINTS)
- engfunc(EngFunc_WriteCoord, fVecOriginCamera[0])
- engfunc(EngFunc_WriteCoord, fVecOriginCamera[1])
- engfunc(EngFunc_WriteCoord, fVecOriginCamera[2])
- engfunc(EngFunc_WriteCoord, fVecViewOffset[0])
- engfunc(EngFunc_WriteCoord, fVecViewOffset[1])
- engfunc(EngFunc_WriteCoord, fVecViewOffset[2])
- write_short(g_iIDEntModel[iID][iID2])
- write_byte(0)
- write_byte(1)
- write_byte(1)
- write_byte(1)
- write_byte(0)
- write_byte(g_iVecEntRenderColor[iID][iID2][0]) // r, g, b
- write_byte(g_iVecEntRenderColor[iID][iID2][1]) // r, g, b
- write_byte(g_iVecEntRenderColor[iID][iID2][2]) // r, g, b
- write_byte(255) // brightness
- write_byte(150) // speed
- message_end()
- }*/
- xs_vec_sub(fVecOriginCamera, fVecOrigin2, fVecOrigin)
- xs_vec_sub(g_fVecOrigin[iID][iID2], fVecOriginCamera, fVecOrigin2)
- g_fScale[iID][iID2] = vector_length(fVecOrigin2) / vector_length(fVecOrigin);
- g_fScale[iID][iID2] *= g_fEntScale[iID][iID2];
- if (g_fScale[iID][iID2] <= 0.003905)
- g_fScale[iID][iID2] = 0.003907;/*
- if (!task_exists(iID))
- {
- message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, iID)
- write_byte(TE_BEAMPOINTS)
- engfunc(EngFunc_WriteCoord, fVecOriginCamera[0])
- engfunc(EngFunc_WriteCoord, fVecOriginCamera[1])
- engfunc(EngFunc_WriteCoord, fVecOriginCamera[2])
- engfunc(EngFunc_WriteCoord, g_fVecOrigin[iID][iID2][0])
- engfunc(EngFunc_WriteCoord, g_fVecOrigin[iID][iID2][1])
- engfunc(EngFunc_WriteCoord, g_fVecOrigin[iID][iID2][2])
- write_short(g_iIDEntModel[iID][iID2])
- write_byte(0)
- write_byte(1)
- write_byte(1)
- write_byte(1)
- write_byte(0)
- write_byte(g_iVecEntRenderColor[iID][iID2][0]) // r, g, b
- write_byte(g_iVecEntRenderColor[iID][iID2][1]) // r, g, b
- write_byte(g_iVecEntRenderColor[iID][iID2][2]) // r, g, b
- write_byte(255) // brightness
- write_byte(150) // speed
- message_end()
- }*/
- }/*
- if (!task_exists(iID))
- set_task(0.1, "fwTaskSkipMessages", iID)*/
- }/*
- public fwTaskSkipMessages()
- {
- }*/
- public fwFmAddToFullPack(const iIDESHandle, const e, const iIDEnt, const iIDHost, const iBsFlags, const player, const pSet)
- {
- if (!is_user_valid(iIDHost)
- || !get_bitsum(g_iBsConnected, iIDHost)
- || get_bitsum(g_iBsBot, iIDHost)
- || player
- || !get_bitsum_array(g_iBsArEspSprite, iIDEnt))
- return;
- /* new Float:fGameTime = get_gametime();
- if (fGameTime - pev(iIDHost, pev_fuser4) >= 5.0)
- {
- ftD7Log(_, _, "[fwFmAddToFullPack] iIDHost: %d. %u.", iIDHost, get_bitsum_array(g_iBsArEspSprite, iIDEnt))
- set_pev(iIDHost, pev_fuser4, fGameTime)
- }
- */
- new iIDEntOwner = get_es(iIDESHandle, ES_Owner);
- if (!get_bitsum(g_iBsConnected, iIDEntOwner)
- || !get_bitsum(g_iBsEntShow[iIDHost], iIDEntOwner)
- || !get_bitsum(g_iBsVisible[iIDHost], iIDEntOwner))
- return;
- //set_es(iIDESHandle, ES_Effects, (get_es(iIDESHandle, ES_Effects) & ~EF_NODRAW))
- set_es(iIDESHandle, ES_Origin, g_fVecOrigin[iIDHost][iIDEntOwner])
- set_es(iIDESHandle, ES_ModelIndex, g_iIDEntModel[iIDHost][iIDEntOwner])
- set_es(iIDESHandle, ES_Scale, g_fScale[iIDHost][iIDEntOwner])
- //set_es(iIDESHandle, ES_AnimTime, 1.0)
- //set_es(iIDESHandle, ES_FrameRate, random_float(10.0, 15.0))
- set_es(iIDESHandle, ES_RenderMode, g_iEntRenderMode[iIDHost][iIDEntOwner])
- set_es(iIDESHandle, ES_RenderFx, g_iEntRenderFx[iIDHost][iIDEntOwner])
- set_es(iIDESHandle, ES_RenderAmt, g_fEntRenderAmount[iIDHost][iIDEntOwner])
- set_es(iIDESHandle, ES_RenderColor, g_iVecEntRenderColor[iIDHost][iIDEntOwner])
- }
- public fwFmCheckVisibilityPre(const iIDEnt, const pSet)
- {
- if (!pev_valid(iIDEnt) || !get_bitsum_array(g_iBsArEspSprite, iIDEnt))
- return FMRES_IGNORED;
- forward_return(FMV_CELL, 1)
- return FMRES_SUPERCEDE;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement