Code: Select all
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <amxmisc>
new const g_firesprite[] = "sprites/flame.spr";
new const g_firesprite2[] = "sprites/flame2.spr";
new data[512];
new g_szDirectory[512], g_szFilename[512], g_szMap[32];
public plugin_precache()
{
precache_model(g_firesprite2);
precache_model(g_firesprite);
}
public plugin_init()
{
register_touch("info_target", "player", "fwZoneTouch");
register_clcmd("say /fire", "createFire");
register_clcmd("say /fire2", "createFire2");
get_datadir(g_szDirectory, charsmax(g_szDirectory));
get_mapname(g_szMap, charsmax(g_szMap));
strtolower(g_szMap);
get_datadir(g_szDirectory, charsmax(g_szDirectory));
add(g_szDirectory, charsmax(g_szDirectory), "/DRPOINTS");
formatex(g_szFilename, charsmax(g_szFilename), "%s/%s.txt", g_szDirectory, g_szMap);
if(!dir_exists(g_szDirectory))
mkdir(g_szDirectory);
LoadEntity();
}
public saveEntity(Float:origin[3])
{
new file = fopen( g_szFilename, "a+" );
if ( file )
{
formatex(data,sizeof(data), "%f %f %f",origin[0], origin[1], origin[2]);
fprintf(file,"%s",data);
fclose( file );
}
}
public LoadEntity()
{
new file = fopen(g_szFilename, "rt");
if (file)
{
new XOrigin[10], YOrigin[10], ZOrigin[10];
new Float:Origin[3];
new data[256];
while(!feof(file))
{
fgets(file, data, charsmax(data));
trim(data);
if(data[0] == EOS || data[0] == ';')
{
continue;
}
parse(data, "%f %f %f", XOrigin, YOrigin, ZOrigin);
Origin[0] = str_to_float(XOrigin);
Origin[1] = str_to_float(YOrigin);
Origin[2] = str_to_float(ZOrigin);
createFireEntity2(Float:Origin);
}
fclose(file);
}
}
public createFire(clientEntIndex)
{
new Float:origin[3];
pev(clientEntIndex, pev_origin, origin);
createFireEntity(origin);
saveEntity(origin);
}
public createFire2(clientEntIndex)
{
new Float:origin[3];
pev(clientEntIndex, pev_origin, origin);
createFireEntity2(origin);
saveEntity(origin);
}
public fwZoneTouch(entity, player, const szClass[], const szModel[])
{
if (!pev_valid(entity))
return FMRES_IGNORED;
new targetName[32];
entity_get_string(entity, EV_SZ_targetname, targetName, charsmax(targetName));
if (equal(targetName, g_firesprite, charsmax(targetName)))
{
}
else if (equal(targetName, g_firesprite2, charsmax(targetName)))
{
}
return FMRES_IGNORED;
}
public createFireEntity(Float:origin[3])
{
new entity = create_entity("info_target");
DispatchSpawn(entity);
engfunc(EngFunc_SetModel, entity, g_firesprite);
set_pev(entity, pev_solid, SOLID_TRIGGER);
set_pev(entity, pev_rendermode, kRenderTransAdd);
set_pev(entity, pev_renderamt, 255.0);
set_pev(entity, pev_targetname, g_firesprite, 31);
engfunc(EngFunc_SetOrigin, entity, origin);
return entity;
}
public createFireEntity2(Float:origin[3])
{
new entity = create_entity("info_target");
DispatchSpawn(entity);
engfunc(EngFunc_SetModel, entity, g_firesprite2);
set_pev(entity, pev_solid, SOLID_TRIGGER);
set_pev(entity, pev_rendermode, kRenderTransAdd);
set_pev(entity, pev_renderamt, 255.0);
set_pev(entity, pev_targetname, g_firesprite2, 31);
engfunc(EngFunc_SetOrigin, entity, origin);
return entity;
}