#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
//#include <deathrun_stats>
#include <xs>
#define PLUGIN "[DR Stats] Mniej obciazajaca ramka"
#define VERSION "1.0"
#define AUTHOR "R3X"
new const gszFinish[] = "drfinish2";
new const giColor[][3]= {
{100, 0, 0},
{50, 0, 0},
{10, 0, 0}
}
#define BLIFE 10
new bool:gbFinished[33];
new gent;
new gdraw;
new gsprite;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_touch(gszFinish, "player", "fwTouch");
register_touch("player", gszFinish, "fwTouch2");
register_think(gszFinish, "fwThink");
}
public plugin_precache(){
gsprite = precache_model("sprites/white.spr");
}
public fwFinishCreate(id, Float:fOrigin[3], draw){
gdraw = draw;
gent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "trigger_multiple"));
set_pev(gent, pev_classname, gszFinish);
set_pev(gent, pev_origin, fOrigin);
dllfunc(DLLFunc_Spawn, gent);
engfunc(EngFunc_SetSize, gent, Float:{-100.0, -100.0, -50.0}, Float:{100.0, 100.0, 50.0});
set_pev(gent, pev_solid, SOLID_TRIGGER);
set_pev(gent, pev_movetype, MOVETYPE_NONE);
set_pev(gent, pev_nextthink, get_gametime()+0.1);
if(is_user_alive(id))
gbFinished[id] = true;
return gent;
}
public client_putinserver(id){
gbFinished[id] = true;
}
public fwPlayerStarted(id){
gbFinished[id] = false;
}
public fwThink(ent){
if(gdraw)
Create_Box(ent);
set_pev(ent, pev_nextthink, get_gametime()+BLIFE);
}
public fwTouch(ent, id){
if(!gbFinished[id]){
gbFinished[id] = true;
//playerFinished(id);
}
}
public fwTouch2(id, ent){
fwTouch(ent, id);
}
//Based on m_eel`s code by Miczu
stock Create_Box(ent){
new Float:maxs[3], Float:mins[3];
pev(ent, pev_absmax, maxs);
pev(ent, pev_absmin, mins);
new Float:fOrigin[3];
pev(ent, pev_origin, fOrigin);
new Float:fOff = -5.0;
new Float:z;
for(new i=0;i<3; i++){
z = fOrigin[2]+fOff;
DrawLine(i, maxs[0], maxs[1], z, mins[0], maxs[1], z);
DrawLine(i, maxs[0], maxs[1], z, maxs[0], mins[1], z);
DrawLine(i, maxs[0], mins[1], z, mins[0], mins[1], z);
DrawLine(i, mins[0], mins[1], z, mins[0], maxs[1], z);
fOff += 5.0;
}
}
public DrawLine(i, Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2) {
new Float:start[3], Float:stop[3];
start[0] = x1;
start[1] = y1;
start[2] = z1;
stop[0] = x2;
stop[1] = y2;
stop[2] = z2;
Create_Line(i, start, stop);
}
stock Create_Line(num, const Float:start[], const Float:stop[])
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMPOINTS)
engfunc(EngFunc_WriteCoord, start[0])
engfunc(EngFunc_WriteCoord, start[1])
engfunc(EngFunc_WriteCoord, start[2])
engfunc(EngFunc_WriteCoord, stop[0])
engfunc(EngFunc_WriteCoord, stop[1])
engfunc(EngFunc_WriteCoord, stop[2])
write_short(gsprite)
write_byte(1)
write_byte(5)
write_byte(10*BLIFE)
write_byte(50)
write_byte(0)
write_byte(giColor[num][0]) // RED
write_byte(giColor[num][1]) // GREEN
write_byte(giColor[num][2]) // BLUE
write_byte(250) // brightness
write_byte(5)
message_end()
}