and that would spin in the air only a bomb
Код за потвърждение: Избери целия код
// Copyright © 2017 Vaqtincha
/**■■■■■■■■■■■■■■■■■■■■■■■■■■■■ CONFIG START ■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/
#define RANDOM_GLOW_SHELL
#define ROTATE_SPEED 10
#define FLY_UP 4
#define UPDATE_DELAY 2.0
#define ADD_Z_POS 30
/**■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ CONFIG END ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/
enum coord_e { Float:X, Float:Y, Float:Z }
new const Float:g_vecColors[][3] =
{
{0.0, 127.0, 255.0}, // blue
{0.0, 255.0, 127.0}, // green
{255.0, 0.0, 0.0}, // red
{255.0, 127.0, 0.0}, // orange
{127.0, 0.0, 255.0}, // purple
{255.0, 100.0, 150.0}, // pink
{255.0, 255.0, 255.0}, // white
{255.0, 155.0, 55.0}, //
{0.0, 255.0, 255.0}, //
{0.0, 255.0, 0.0}, //
{0.0, 0.0, 100.0} //
}
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#if ROTATE_SPEED < 1
#error the minimum value of "ROTATE_SPEED" shall not be less than 1
#endif
#if ROTATE_SPEED > 100
#error the maximum value of the "ROTATE_SPEED" can not be more than 100
#endif
#define SET_ORIGIN(%1,%2) engfunc(EngFunc_SetOrigin, %1, %2)
public plugin_init()
{
register_plugin("Flying Armourys", "0.0.2", "Vaqtincha")
RegisterHam(Ham_CS_Restart, "armoury_entity", "CArmoury_Restart", .Post = true)
RegisterHam(Ham_Think, "armoury_entity", "CArmoury_Think", .Post = true)
new pArmoury = FM_NULLENT
while((pArmoury = engfunc(EngFunc_FindEntityByString, pArmoury, "classname", "armoury_entity")))
{
set_pev(pArmoury, pev_movetype, MOVETYPE_NOCLIP)
ExecuteHamB(Ham_CS_Restart, pArmoury)
}
}
public CArmoury_Think(const pArmoury)
{
if(pArmoury <= 0)
return
if(pev(pArmoury, pev_effects) & EF_NODRAW)
return
// from https://github.com/s1lentq/ReGameDLL_CS/blob/major-patch/regamedll/dlls/addons/item_airbox.cpp
static Float:vecVelocity[coord_e], Float:fFlyUp
pev(pArmoury, pev_maxspeed, fFlyUp)
vecVelocity[Z] = fFlyUp
set_pev(pArmoury, pev_velocity, vecVelocity)
set_pev(pArmoury, pev_maxspeed, -fFlyUp)
set_pev(pArmoury, pev_nextthink, get_gametime() + UPDATE_DELAY)
}
public CArmoury_Restart(const pArmoury)
{
if(pArmoury <= 0)
return
new Float:vecOrigin[coord_e], Float:vecAngles[coord_e], Float:vecAvelocity[coord_e]
pev(pArmoury, pev_origin, vecOrigin)
vecOrigin[Z] += ADD_Z_POS.0
SET_ORIGIN(pArmoury, vecOrigin)
vecAngles[X] -= 90.0
vecAngles[Y] += random_float(-180.0, 180.0)
set_pev(pArmoury, pev_angles, vecAngles)
vecAvelocity[Z] = ROTATE_SPEED.0 * 10.0
set_pev(pArmoury, pev_avelocity, vecAvelocity)
set_pev(pArmoury, pev_maxspeed, FLY_UP.0)
#if defined RANDOM_GLOW_SHELL
// new Float:vecColor[3]
// vecColor[0] = random_float(10.0, 200.0) + 55.0
// vecColor[1] = random_float(10.0, 200.0) + 55.0
// vecColor[2] = random_float(10.0, 200.0) + 55.0
// set_rendering(pArmoury, kRenderFxGlowShell, vecColor, 20.0)
set_rendering(pArmoury, kRenderFxGlowShell, g_vecColors[random(sizeof(g_vecColors))], 15.0)
#endif
set_pev(pArmoury, pev_nextthink, get_gametime() + UPDATE_DELAY)
}
stock set_rendering(index, fx = kRenderFxNone, Float:color[3] = {255.0, 255.0, 255.0}, Float:amount = 16.0)
{
set_pev(index, pev_renderfx, fx)
set_pev(index, pev_rendercolor, color)
set_pev(index, pev_renderamt, amount)
}