- Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
#pragma semicolon 1
//#define DEBUG
#define MAX_HOSTAGES 4
new g_iFakeMetaFwd_Spawn;
public plugin_init() {
register_plugin("Replacement hostage ent", "1.1", ".cpCTRL");
unregister_forward(FM_Spawn, g_iFakeMetaFwd_Spawn, true);
}
public plugin_precache() {
g_iFakeMetaFwd_Spawn = register_forward(FM_Spawn, "FakeMetaHook_Spawn_Post", true);
}
public FakeMetaHook_Spawn_Post(const iEntity) {
if(!pev_valid(iEntity))
{
return FMRES_IGNORED;
}
new szClassName[32];
pev(iEntity, pev_classname, szClassName, charsmax(szClassName));
if(strcmp(szClassName, "func_buyzone") == 0 || strcmp(szClassName, "monster_scientist") == 0)
{
static iHostagesOrigin, Float: fHostagesOrigin[MAX_HOSTAGES + 1][3];
pev(iEntity, pev_origin, fHostagesOrigin[iHostagesOrigin++]);
engfunc(EngFunc_RemoveEntity, iEntity);
#if defined DEBUG
log_amx("Hostage has been removed (%d)", iHostagesOrigin);
#endif
if(iHostagesOrigin > 0)
{
for(new iXs; iXs < iHostagesOrigin; iXs++)
{
#if defined DEBUG
log_amx("Origin num: %d (%.2f | %.2f | %.2f)", iXs, fHostagesOrigin[iXs][0], fHostagesOrigin[iXs][1], fHostagesOrigin[iXs][2]);
#endif
new pEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
if(!pev_valid(pEntity))
{
#if defined DEBUG
log_amx("Create entity is not valid.");
#endif
return PLUGIN_HANDLED;
}
set_pev(pEntity, pev_origin, fHostagesOrigin[iXs]);
set_pev(pEntity, pev_classname, "func_friction");
set_pev(pEntity, pev_movetype, MOVETYPE_NONE);
#if defined DEBUG
log_amx("func_friction. Origins: (%.2f | %.2f | %.2f)", fHostagesOrigin[iXs][0], fHostagesOrigin[iXs][1], fHostagesOrigin[iXs][2]);
#endif
}
}
}
return FMRES_IGNORED;
}