Kod: Tümünü seç
#include <amxmodx>
#include <fakemeta>
#include <reapi>
#pragma semicolon 1
#define TIME_POSITION_CHECK 5.0
#define TIME_POSITION_TASK 3.0
#define INDEX_POSITION_TASK 129910
#define MAX_SPRITES 32
public plugin_init()
{
register_plugin("[JBE] Addons: Trail", "1.2", "OverGame & Hellmith");
register_menucmd(register_menuid("Show_TrailMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_TrailMenu");
register_concmd("say /trail", "Show_TrailMenu");
}
new g_iDataSprites[][][] =
{
{"sprites/trails_h/hook_aa.spr", "1"},
{"sprites/trails_h/hook_a.spr", "2"},
{"sprites/trails_h/hook_ab.spr", "3"},
{"sprites/trails_h/hook_ac.spr", "4"},
{"sprites/trails_h/hook_am.spr", "5"},
{"sprites/trails_h/hook_an.spr", "6"},
{"sprites/trails_h/hook_av.spr", "7"},
{"sprites/trails_h/hook_b.spr", "8"},
{"sprites/trails_h/hook_c.spr", "9"},
{"sprites/trails_h/hook_n.spr", "10"},
{"sprites/trails_h/hook_v.spr", "11"}
};
new g_iDataColors[][][] =
{
{"Beyaz", "255", "255", "255"},
{"Kırmızı", "255", "0", "0"},
{"Portakal", "255", "165", "0"},
{"Sarı", "255", "255", "0"},
{"Yeşil", "0", "255", "0"},
{"Mavi", "0", "255", "255"},
{"Turkuaz", "0", "0", "255"},
{"Menekşe", "128", "0", "128"}
};
new g_iDataSize[][][] =
{
{"Orta", "6"},
{"Büyük", "12"},
{"Küçük", "3"}
};
new g_iDataBright[][][] =
{
{"100%", "255"},
{"65%", "90"},
{"20%", "50"}
};
new g_iUserStatus[33], g_iSprites[MAX_SPRITES + 1], g_iUserType[33], g_iUserColor[33], g_iUserSize[33], g_iUserBright[33];
public plugin_precache()
{
for(new i; i < sizeof(g_iDataSprites); i++)
{
if(i <= MAX_SPRITES) g_iSprites[i] = engfunc(EngFunc_PrecacheModel, g_iDataSprites[i][0]);
}
}
public client_putinserver(id)
{
g_iUserColor[id] = 0;
g_iUserType[id] = 0;
g_iUserSize[id] = 0;
g_iUserBright[id] = 0;
}
public client_disconnected(id) g_iUserStatus[id] = false;
public Show_TrailMenu(id)
{
new szMenu[512], iKeys = (1<<0|1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\yTrail Menu^n^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \wDurum: %s^n", g_iUserStatus[id] ? "\y[ACIK]" : "\r[KAPALI]");
if(g_iUserStatus[id])
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \wTrail: \r[%s]^n", g_iDataSprites[g_iUserType[id]][1]);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \wRenk: \r[%s]^n", g_iDataColors[g_iUserColor[id]][0]);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \wBoyut: \r[%s]^n", g_iDataSize[g_iUserSize[id]][0]);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \wParlaklik: \r[%s]^n", g_iDataBright[g_iUserBright[id]][0]);
iKeys |= (1<<1|1<<2|1<<3|1<<4);
}
else
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \dTrail: [%s]^n", g_iDataSprites[g_iUserType[id]][1]);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \dRenk: [%s]^n", g_iDataColors[g_iUserColor[id]][0]);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \dBoyut: [%s]^n", g_iDataSize[g_iUserSize[id]][0]);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \dParlaklik: [%s]^n", g_iDataBright[g_iUserBright[id]][0]);
}
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \wCikis");
return show_menu(id, iKeys, szMenu, -1, "Show_TrailMenu");
}
public Handle_TrailMenu(id, iKey)
{
switch(iKey)
{
case 0: g_iUserStatus[id] = !g_iUserStatus[id];
case 1:
{
if((sizeof(g_iDataSprites) - 1) <= g_iUserType[id]) g_iUserType[id] = 0;
else g_iUserType[id]++;
}
case 2:
{
if((sizeof(g_iDataColors) - 1) <= g_iUserColor[id]) g_iUserColor[id] = 0;
else g_iUserColor[id]++;
}
case 3:
{
if((sizeof(g_iDataSize) - 1) <= g_iUserSize[id]) g_iUserSize[id] = 0;
else g_iUserSize[id]++;
}
case 4:
{
if((sizeof(g_iDataBright) - 1) <= g_iUserBright[id]) g_iUserBright[id] = 0;
else g_iUserBright[id]++;
}
case 9: return PLUGIN_HANDLED;
}
remove_task(INDEX_POSITION_TASK + id);
remove_trail(id);
set_task(TIME_POSITION_TASK, "check_potision", INDEX_POSITION_TASK + id, _, _, "b");
create_trail(id);
return Show_TrailMenu(id);
}
public create_trail(id)
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(22);
write_short(id); // id
write_short(g_iSprites[g_iUserType[id]]); // sprite
write_byte(2 * 10); // life
write_byte(str_to_num(g_iDataSize[g_iUserSize[id]][1])); // Размер
write_byte(str_to_num(g_iDataColors[g_iUserColor[id]][1])); // r
write_byte(str_to_num(g_iDataColors[g_iUserColor[id]][2])); // g
write_byte(str_to_num(g_iDataColors[g_iUserColor[id]][3])); // b
write_byte(str_to_num(g_iDataBright[g_iUserBright[id]][1])); // Яркость
message_end();
return true;
}
public check_potision(id)
{
id = id - INDEX_POSITION_TASK;
static Float:fTime[33], Float:fOrigin[33][3];
if(fTime[id] + TIME_POSITION_CHECK < get_gametime())
{
pev(id, pev_origin, fOrigin[id]);
fTime[id] = get_gametime();
}
new Float:fOriginTwo[3];
pev(id, pev_origin, fOriginTwo);
if(fOrigin[id][0] == fOriginTwo[0] && fOrigin[id][1] == fOriginTwo[1] && fOrigin[id][2] == fOriginTwo[2])
{
remove_trail(id);
create_trail(id);
}
}
public remove_trail(id)
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(99);
write_short(id);
message_end();
}