One person added a code so that the ring would be displayed on a thrown bomb
The fact is that if I throw a bomb, it will immediately disappear along with the ring without touching the ground ....
There is also a smoke option. - but oddly enough - it works fine for me
PHP Code:
#pragma semicolon 1
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <engine>
new g_Backpack_SmokeSprite;
#define BOMB_PACK_ICON "sprites/backpack_smoke/backpack_ring.spr"
#define BRINGHTNEES 255.0
new Float:fColor[][3] = {
{255.0, 0.0, 0.0},
{0.0, 0.0, 255.0},
{0.0, 255.0, 0.0},
{255.0, 255.0, 6.0},
{255.0, 0.0, 255.0}
};
public plugin_init()
{
register_plugin("C4 Smoke", "1.0", "fl0wer");
register_forward(FM_SetModel, "@FM_SetModel_Post", true);
RegisterHam(Ham_Think, "weaponbox", "@CWeaponBox_Think_Pre", false);
register_think("C4_Ring", "@C4_Ring_Think");
}
public plugin_precache()
{
g_Backpack_SmokeSprite = precache_model("sprites/backpack_smoke/backpack_smoke.spr");
precache_model(BOMB_PACK_ICON);
}
@FM_SetModel_Post(ent, model[])
{
if (containi(model, "w_backpack") == -1)
return;
set_pev(ent, pev_iuser1, 1);
set_pev(ent, pev_iuser3, random_num(0, 1));
set_pev(ent, pev_nextthink, get_gametime() + 0.2);
}
@CWeaponBox_Think_Pre(id)
{
new Float:time = get_gametime();
if (!pev(id, pev_iuser1))
return HAM_IGNORED;
set_pev(id, pev_nextthink, time + 0.2);
new Float:vecOrigin[3]; pev(id, pev_origin, vecOrigin);
switch(pev(id, pev_iuser3)) {
case 0: {
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vecOrigin, 0);
write_byte(TE_FIREFIELD);
engfunc(EngFunc_WriteCoord, vecOrigin[0]);
engfunc(EngFunc_WriteCoord, vecOrigin[1]);
engfunc(EngFunc_WriteCoord, vecOrigin[2] += 15.0);
write_short(2);
write_short(g_Backpack_SmokeSprite);
write_byte(1);
write_byte(TEFIRE_FLAG_ALLFLOAT | TEFIRE_FLAG_ALPHA);
write_byte(10);
message_end();
}
case 1: {
if (pev(id, pev_iuser2))
return HAM_IGNORED;
vecOrigin[2] += 30.0;
engfunc(EngFunc_SetOrigin, id, vecOrigin);
new iEnt = create_entity("env_sprite");
set_pev(iEnt, pev_classname, "C4_Ring");
engfunc(EngFunc_SetOrigin, iEnt, vecOrigin);
engfunc(EngFunc_SetModel, iEnt, BOMB_PACK_ICON);
set_pev(iEnt, pev_solid, SOLID_NOT);
set_pev(iEnt, pev_movetype, MOVETYPE_FLY);
set_pev(iEnt, pev_iuser1, id);
set_pev(iEnt, pev_nextthink, time + 0.1);
set_pev(iEnt, pev_renderamt, BRINGHTNEES);
// set_pev(iEnt, pev_rendermode, kRenderTransAdd); // Раскоментируй если нужна прозрачность
set_pev(iEnt, pev_rendercolor, fColor[random_num(0, charsmax(fColor))]);
set_pev(id, pev_iuser2, iEnt);
}
}
return HAM_SUPERCEDE;
}
@C4_Ring_Think(ent) {
if (!pev_valid(ent))
return;
if (!pev_valid(pev(ent, pev_iuser1))) {
remove_entity(ent);
return;
}
set_pev(ent, pev_nextthink, get_gametime() + 0.1);
}