Ayuda por favor, necesito que me digan que hacer para que el menu se abra con la letra "m" pero para todos los jugadores del server que al conectarse automaticamente se pueda abri con la letra m.
PHP Code:
#include <amxmodx>
#include <fakemeta>
#pragma semicolon 1
#define PLUGIN "HnS_Shop"
#define VERSION "2.0"
#define AUTHOR "xPaw & Grim"
#define fm_get_user_money(%1) get_pdata_int( %1, 115 )
#define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))
#define MAX_CLIENTS 32
enum Color {
NORMAL = 1, // clients scr_concolor cvar color
GREEN, // Green
TEAM_COLOR, // Red, grey, blue
GREY, // grey
RED, // Red
BLUE, // Blue
};
new TeamName[][] = {
"",
"TERRORIST",
"CT",
"SPECTATOR"
};
// Pcvars
new plugin_on, silentcost, stealthcost, noflashcost, hpcost, armorcost, grenadecost, gravitycost, speedcost, godmodecost;
new allowsilent, allowstealth, allownoflash, allowhp, allowarmor, allowgrenade, allowgravity, allowspeed, allowgodmode;
new usersilent[33], userstealth[33], usernoflash[33], userhp[33], userarmor[33], usergrenade[33], usergravity[33], userspeed[33];
new hpcvar, armorcvar, menu, hasspeed[33], hassilent[33], gotgodmode[33], hasgodmode[33], mess[33], mess2[33];
new g_msgScreenFade, g_msgMoney, grenade[32], last;
new Float:g_gametime, g_owner;
new Float:g_gametime2;
new bool:g_bPlayerNonSpawnEvent[MAX_CLIENTS + 1];
new bool:g_track_enemy;
new bool:g_track[33];
new g_iFwFmClientCommandPost;
new g_sync_check_data;
public plugin_init() {
register_plugin("HnS Shop", VERSION, "xPaw & Grim");
register_cvar("hns_shop_version", VERSION, FCVAR_SERVER);
set_cvar_string("hns_shop_version", VERSION);
// Player Spawn
register_event("ResetHUD", "fwEvResetHUD", "b");
register_event("TextMsg", "fwEvGameWillRestartIn", "a", "2=#Game_will_restart_in");
register_clcmd("fullupdate", "fwCmdClFullupdate");
// Events
register_event("DeathMsg", "eDeath", "a");
register_event("CurWeapon", "speed_on", "be");
register_event("ScreenFade", "eventFlash", "be", "4=255", "5=255", "6=255", "7>199");
register_event("TextMsg", "fire_in_the_hole", "b", "2&#Game_radio", "4&#Fire_in_the_hole");
register_event("TextMsg", "fire_in_the_hole2", "b", "3&#Game_radio", "5&#Fire_in_the_hole");
register_event("99", "grenade_throw", "b");
// Pcvars
plugin_on = register_cvar("hns_shop", "1");
silentcost = register_cvar("hns_shop_silentcost", "1500");
stealthcost = register_cvar("hns_shop_stealthcost", "3000");
noflashcost = register_cvar("hns_shop_noflashcost", "2500");
grenadecost = register_cvar("hns_shop_grenadecost", "2000");
gravitycost = register_cvar("hns_shop_gravitycost", "2500");
speedcost = register_cvar("hns_shop_speedcost", "3500");
hpcost = register_cvar("hns_shop_hpcost", "3500");
armorcost = register_cvar("hns_shop_armorcost", "1500");
godmodecost = register_cvar("hns_shop_godmodecost", "16000");
hpcvar = register_cvar("hns_shop_hpcvar", "200");
armorcvar = register_cvar("hns_shop_armorcvar", "150");
allowsilent = register_cvar("hns_shop_allowsilent", "1");
allowstealth = register_cvar("hns_shop_allowstealth", "1");
allownoflash = register_cvar("hns_shop_allownoflash", "1");
allowgrenade = register_cvar("hns_shop_allowgrenade", "1");
allowgravity = register_cvar("hns_shop_allowgravity", "1");
allowspeed = register_cvar("hns_shop_allowspeed", "1");
allowhp = register_cvar("hns_shop_allowhp", "1");
allowarmor = register_cvar("hns_shop_allowarmor", "1");
allowgodmode = register_cvar("hns_shop_allowgodmode", "1");
// Clcmds
register_clcmd("say /hnsshop", "show_hnsmenu");
register_clcmd("say /shop", "show_hnsmenu");
register_clcmd("say hnsshop", "show_hnsmenu");
register_clcmd("say shop", "show_hnsmenu");
// Menu
menu = register_menuid("SHOP RKZGAMERZ.");
register_menucmd(menu, 1023, "hnsshop");
// Forwards
register_forward(FM_EmitSound,"fw_emitsound");
register_forward(FM_CmdStart, "fwd_FM_CmdStart_pre", 0);
// Tasks
set_task( 2.0, "bad_fix2",_,_,_, "b" );
set_task( 100.0, "advert",_,_,_, "b" );
g_msgScreenFade = get_user_msgid("ScreenFade");
g_msgMoney = get_user_msgid("Money");
}
public client_connect( id ) {
usersilent[id] = 0;
userstealth[id] = 0;
usernoflash[id] = 0;
userhp[id] = 0;
userarmor[id] = 0;
usergrenade[id] = 0;
usergravity[id] = 0;
userspeed[id] = 0;
gotgodmode[id] = 0;
hasgodmode[id] = 0;
hasspeed[id] = 0;
hassilent[id] = 0;
mess[id] = 0;
mess2[id] = 0;
}
public client_disconnect( id ) {
usersilent[id] = 0;
userstealth[id] = 0;
usernoflash[id] = 0;
userhp[id] = 0;
userarmor[id] = 0;
usergrenade[id] = 0;
usergravity[id] = 0;
userspeed[id] = 0;
gotgodmode[id] = 0;
hasgodmode[id] = 0;
hasspeed[id] = 0;
hassilent[id] = 0;
mess[id] = 0;
mess2[id] = 0;
}
public speed_on( id )
if(is_user_alive(id))
if(hasspeed[id])
fm_set_user_maxspeed(id, 320.0);
// Advert
public advert() {
new g_Maxplayers;
g_Maxplayers = get_maxplayers();
for(new i=1; i<=g_Maxplayers; i++)
if(is_user_connected(i))
ColorChat(i, RED, "^x01[SHOP]^x04 Este server usa^x03 Escondidas Shop^x04 escribe^x03 /shop o shop");
}
public fwd_FM_CmdStart_pre( id, uc_handle, random_seed ) {
if(!is_user_alive(id))
return FMRES_IGNORED;
if(hassilent[id] > 0)
set_pev(id, pev_flTimeStepSound, 999);
static button;
button = get_uc(uc_handle, UC_Buttons);
if(button & IN_RELOAD) {
if(get_pcvar_num(allowgodmode) == 1)
return FMRES_IGNORED;
if(!gotgodmode[id]) {
if(!mess[id]) {
ColorChat(id, RED, "^x04[SHOP]^x01 Necesitas comprar un Modo dios!");
mess[id]++;
set_task(3.0, "remove_mess", id);
return FMRES_IGNORED;
}
return FMRES_IGNORED;
}
if(hasgodmode[id] > 0) {
if(!mess[id]) {
ColorChat(id, RED, "^x04[SHOP]^x01 Tu modo dios esta activado!");
mess[id]++;
set_task(3.0, "remove_mess", id);
return FMRES_IGNORED;
}
return FMRES_IGNORED;
}
gotgodmode[id] = 0;
hasgodmode[id]++;
fm_set_user_godmode(id, 1);
if(get_user_team(id) == 1)
fm_set_user_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderTransAlpha, 255);
else if(get_user_team(id) == 2)
fm_set_user_rendering(id, kRenderFxGlowShell, 0, 0, 255, kRenderTransAlpha, 255);
set_task(5.0, "remove_godmode", id);
if(!mess[id]) {
ColorChat(id, RED, "^x04[SHOP]^x01 Tu Modo Dios esta activo!");
mess[id]++;
set_task(3.0, "remove_mess", id);
}
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
// User Spawn event
public fwEvResetHUD( id ) {
if (!is_user_alive(id))
return;
if (g_bPlayerNonSpawnEvent[id]) {
g_bPlayerNonSpawnEvent[id] = false;
return;
}
fwPlayerSpawn(id);
}
public fwEvGameWillRestartIn() {
static iPlayers[32], iPlayersNum, i;
get_players(iPlayers, iPlayersNum, "a");
for (i = 0; i < iPlayersNum; ++i)
g_bPlayerNonSpawnEvent[iPlayers[i]] = true;
}
public fwCmdClFullupdate( id ) {
g_bPlayerNonSpawnEvent[id] = true;
static const szFwFmClientCommandPost[] = "fwFmClientCommandPost";
g_iFwFmClientCommandPost = register_forward(FM_ClientCommand, szFwFmClientCommandPost, 1);
return PLUGIN_CONTINUE;
}
public fwFmClientCommandPost( id ) {
unregister_forward(FM_ClientCommand, g_iFwFmClientCommandPost, 1);
g_bPlayerNonSpawnEvent[id] = false;
return FMRES_HANDLED;
}
public fwPlayerSpawn( id ) {
if(!is_user_alive(id))
return PLUGIN_HANDLED;
if(get_pcvar_num(plugin_on) == 1) {
set_pev(id, pev_flTimeStepSound, 400);
fm_set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255);
fm_set_user_health(id, 100);
fm_set_user_armor(id, 0);
fm_set_user_gravity(id, 1.0);
usersilent[id] = 0;
userstealth[id] = 0;
usernoflash[id] = 0;
userhp[id] = 0;
userarmor[id] = 0;
usergrenade[id] = 0;
usergravity[id] = 0;
userspeed[id] = 0;
hassilent[id] = 0;
}
return PLUGIN_HANDLED;
}
// User Death event
public eDeath( id ) {
new victem = read_data(2);
usersilent[victem] = 0;
userstealth[victem] = 0;
usernoflash[victem] = 0;
userhp[victem] = 0;
userarmor[victem] = 0;
usergrenade[victem] = 0;
usergravity[victem] = 0;
userspeed[victem] = 0;
hasspeed[victem] = 0;
hasgodmode[victem] = 0;
hassilent[victem] = 0;
}
// Showing menu
public show_hnsmenu( id ) {
if(get_pcvar_num(plugin_on) == 1) {
new szBuffer[512], iLen;
iLen = formatex(szBuffer, sizeof szBuffer - 1, "\rOwners SHOP.\w^n^n");
iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "\r1. \wPasos Silenciosos - \y%d$^n", get_pcvar_num(silentcost));
iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "\r2. \wInvisibilidad \r(20 segundos) - \y%d$^n", get_pcvar_num(stealthcost));
iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "\r3. \wAnti Flash - \y%d$^n", get_pcvar_num(noflashcost));
iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "\r4. \w%d de Vida - \y%d$^n", get_pcvar_num(hpcvar), get_pcvar_num(hpcost));
iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "\r5. \w%d de Chaleco - \y%d$^n", get_pcvar_num(armorcvar), get_pcvar_num(armorcost));
iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "\r6. \wGranada HE - \y%d$^n", get_pcvar_num(grenadecost));
iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "\r7. \wGravedad \r(10 segundos) - \y%d$^n", get_pcvar_num(gravitycost));
iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "\r8. \wVelocidad \r(25 segundos) - \y%d$^n", get_pcvar_num(speedcost));
iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "\r9. \wGodmode \d(Desactivado) \y%d$^n^n", get_pcvar_num(godmodecost));
iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "\r0. \wSalir");
new iKeys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 | 1<<7 | 1<< 8 | 1<<9 );
show_menu(id, iKeys, szBuffer, -1, "SHOP RKZGAMERZ.");
} else
ColorChat(id, BLUE, "^x04[SHOP]^x01 Shop esta desactivado.");
return PLUGIN_HANDLED;
}
// Shop actions
public hnsshop( id, key ) {
switch( key ) {
case 0: // Silent Footsteps
{
if(!is_user_alive(id)) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Necesitas estar vivo!!");
return PLUGIN_HANDLED;
}
if(usersilent[id] > 0) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Ya tienes este elemento!");
return PLUGIN_HANDLED;
}
if(get_pcvar_num(allowsilent) == 0) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Este elemento esta desactivado.");
return PLUGIN_HANDLED;
}
new money = fm_get_user_money(id);
new cost = get_pcvar_num(silentcost);
if(money > cost || money == cost) {
set_pev(id, pev_flTimeStepSound, 999);
fm_set_user_money(id, money - cost);
usersilent[id]++;
hassilent[id]++;
ColorChat(id, BLUE, "^x04[SHOP]^x01 Has comprado^x03 Pasos Silenciosos,^x04 tus enemigos no te podran oir.");
} else {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Necesitas mas^x04 dinero^x01 para comprar esto!");
}
}
case 1: // Stealth Suit
{
if(!is_user_alive(id)) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Necesitas estar vivo!");
return PLUGIN_HANDLED;
}
if(userstealth[id] > 0) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Ya tienes este elemento!");
return PLUGIN_HANDLED;
}
if(get_pcvar_num(allowstealth) == 0) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Este elemento esta desactivado.");
return PLUGIN_HANDLED;
}
new money = fm_get_user_money(id);
new cost = get_pcvar_num(stealthcost);
if(money > cost || money == cost) {
fm_set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 15);
fm_set_user_money(id, money - cost);
userstealth[id]++;
set_task(20.0, "remove_stealth", id);
ColorChat(id, BLUE, "^x04[SHOP]^x01 Has comprado^x03 Invisibilidad, ^x04 eres invisible por 20 segundos.") ;
} else {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Necesitas mas^x04 dinero^x01 para comprar esto!");
}
}
case 2: // NoFlash Blinding
{
if(!is_user_alive(id)) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Necesitas estar vivo!");
return PLUGIN_HANDLED;
}
if(usernoflash[id] > 0) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Ya tienes este elemento!");
return PLUGIN_HANDLED;
}
if(get_pcvar_num(allownoflash) == 0) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Este elemento esta desactivado.");
return PLUGIN_HANDLED;
}
new money = fm_get_user_money(id);
new cost = get_pcvar_num(noflashcost);
if(money > cost || money == cost) {
fm_set_user_money(id, money - cost);
usernoflash[id]++;
ColorChat(id, BLUE, "^x04[SHOP]^x01 Has comprado^x03 Anti Flash.");
} else {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Necesitas mas^x04 dinero^x01 para comprar esto!");
}
}
case 3: // HP
{
if(!is_user_alive(id)) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Necesitas estar vivo!");
return PLUGIN_HANDLED;
}
if(userhp[id] > 0) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Ya tienes este elemento!");
return PLUGIN_HANDLED;
}
if(get_pcvar_num(allowhp) == 0) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Este elemento esta desactivado.");
return PLUGIN_HANDLED;
}
new money = fm_get_user_money(id);
new cost = get_pcvar_num(hpcost);
if(money > cost || money == cost) {
new health = get_pcvar_num(hpcvar);
fm_set_user_money(id, money - cost);
fm_set_user_health(id, health);
userhp[id]++;
client_cmd(id, "spk items/medshot4");
ColorChat(id, BLUE, "^x04[SHOP]^x01 Has comrpado^x03 %d Vida.", get_pcvar_num(hpcvar));
} else {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Necesitas mas^x04 dinero^x01 para comprar esto!");
}
}
case 4: // Armor
{
if(!is_user_alive(id)) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Necesitas estar vivo!");
return PLUGIN_HANDLED;
}
if(userarmor[id] > 0) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Ya tienes este elemento!");
return PLUGIN_HANDLED;
}
if(get_pcvar_num(allowarmor) == 0) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Este elemento esta desactivado.");
return PLUGIN_HANDLED;
}
new money = fm_get_user_money(id);
new cost = get_pcvar_num(armorcost);
if(money > cost || money == cost) {
new armor = get_pcvar_num(armorcvar);
fm_set_user_money(id, money - cost);
fm_set_user_armor(id, armor);
userarmor[id]++;
ColorChat(id, BLUE, "^x04[SHOP]^x01 Has comprado^x03 %d Chaleco.", get_pcvar_num(armorcvar));
} else {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Necesitas mas^x04 dinero^x01 para comprar esto!");
}
}
case 5: // HE Grenade
{
if(!is_user_alive(id)) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Necesitas estar vivo!");
return PLUGIN_HANDLED;
}
if(usergrenade[id] > 0) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Ya tienes este elemento!");
return PLUGIN_HANDLED;
}
if(get_pcvar_num(allowgrenade) == 0) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Este elemento esta desactivado.");
return PLUGIN_HANDLED;
}
new money = fm_get_user_money(id);
new cost = get_pcvar_num(grenadecost);
if(money > cost || money == cost) {
fm_set_user_money(id, money - cost);
fm_give_item(id, "weapon_hegrenade");
usergrenade[id]++;
ColorChat(id, BLUE, "^x04[SHOP]^x01 Has comprado^x03 Granada HE.");
} else {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Necesitas mas^x04 dinero^x01 para comprar esto!");
}
}
case 6: // Gravity
{
if(!is_user_alive(id)) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Necesitas estar vivo!");
return PLUGIN_HANDLED;
}
if(usergravity[id] > 0) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Ya tienes este elemento!");
return PLUGIN_HANDLED;
}
if(get_pcvar_num(allowgravity) == 0) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Este elemento esta desactivado.");
return PLUGIN_HANDLED;
}
new money = fm_get_user_money(id);
new cost = get_pcvar_num(gravitycost);
if(money > cost || money == cost) {
fm_set_user_money(id, money - cost);
fm_set_user_gravity(id, 0.63);
usergravity[id]++;
set_task(10.0, "remove_gravity", id);
ColorChat(id, BLUE, "^x04[SHOP]^x01 Has comprado^x03 Gravedad^x04 por 10 segundos.");
} else {
ColorChat(id, BLUE, "^x04[SHOP]^x01 You need more^x04 money^x01 to buy this!");
}
}
case 7: // Faster Speed
{
if(!is_user_alive(id)) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Necesitas estar vivo!");
return PLUGIN_HANDLED;
}
if(userspeed[id] > 0) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Ya tienes este elemento!");
return PLUGIN_HANDLED;
}
if(get_pcvar_num(allowspeed) == 0) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Este elemento esta desactivado.");
return PLUGIN_HANDLED;
}
new money = fm_get_user_money(id);
new cost = get_pcvar_num(speedcost);
if(money > cost || money == cost) {
fm_set_user_money(id, money - cost);
userspeed[id]++;
hasspeed[id]++;
fm_set_user_maxspeed(id, 320.0);
set_task(25.0, "remove_speed", id);
ColorChat(id, BLUE, "^x04[SHOP]^x01 You purchased^x03 Faster speed.");
} else {
ColorChat(id, BLUE, "^x04[SHOP]^x01 You need more^x04 money^x01 to buy this!");
}
}
case 8: // Godmode
{
if(!is_user_alive(id)) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Necesitas estar vivo!");
return PLUGIN_HANDLED;
}
if(gotgodmode[id] > 0) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Ya tienes este elemento!");
return PLUGIN_HANDLED;
}
if(get_pcvar_num(allowgodmode) == 0) {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Has comprado^x03 Godmode.");
return PLUGIN_HANDLED;
}
new money = fm_get_user_money(id);
new cost = get_pcvar_num(godmodecost);
if(money > cost || money == cost) {
gotgodmode[id]++;
fm_set_user_money(id, money - cost);
ColorChat(id, BLUE, "^x04[SHOP]^x01 Has comprado^x03 Granada HE.");
} else {
ColorChat(id, BLUE, "^x04[SHOP]^x01 Necesitas mas^x04 dinero^x01 para comprar esto!");
}
}
case 9: // Exit
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
// Remove Gravity
public remove_gravity( id ) {
fm_set_user_gravity(id, 1.0);
ColorChat(id, BLUE, "^x04[SHOP]^x01 Tu gravedad en normal.");
}
// Remove Stealth
public remove_stealth( id ) {
fm_set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255);
ColorChat(id, BLUE, "^x04[SHOP]^x01 Eres^x03 visible^x01 a otros.");
}
// Remove Speed
public remove_speed( id ) {
fm_set_user_maxspeed(id, 250.0);
hasspeed[id] = 0;
ColorChat(id, BLUE, "^x04[SHOP]^x01 Tu velocidad es normal ahora.");
}
// Remove Godmode
public remove_godmode( id ) {
hasgodmode[id] = 0;
fm_set_user_godmode(id, 0);
if(!mess2[id]) {
ColorChat(id, RED, "^x04[SHOP]^x01 No tienes mas godmode.");
mess2[id]++;
fm_set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255);
set_task(3.0, "remove_mess2", id);
}
}
public remove_mess( id ) mess[id] = 0;
public remove_mess2( id ) mess2[id] = 0;
/// NoFlash Blinding - Start
public bad_fix2() {
new Float:gametime = get_gametime();
if(gametime - g_gametime2 > 2.5)
for(new i = 0; i < 32; i++)
grenade[i] = 0;
}
public eventFlash( id ) {
new Float:gametime = get_gametime();
if(gametime != g_gametime) {
g_owner = get_grenade_owner();
g_gametime = gametime;
for(new i = 0; i < 33; i++)
g_track[i] = false;
g_track_enemy = false;
}
if(is_user_connected(g_owner) && usernoflash[id] > 0) {
g_track_enemy = true;
message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, id);
write_short(1);
write_short(1);
write_short(1);
write_byte(0);
write_byte(0);
write_byte(0);
write_byte(255);
message_end();
}
}
public flash_delay() {
if(g_track_enemy == false) {
for(new i = 0; i < 33; i++) {
if(g_track[i] == true && is_user_connected(i)) {
message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, i) ;
write_short(1);
write_short(1);
write_short(1);
write_byte(0);
write_byte(0);
write_byte(0);
write_byte(255);
message_end();
}
}
}
}
public grenade_throw() {
if(g_sync_check_data == 0)
return PLUGIN_CONTINUE;
g_sync_check_data--;
if(read_datanum() < 2)
return PLUGIN_HANDLED_MAIN;
if(read_data(1) == 11 && (read_data(2) == 0 || read_data(2) == 1))
add_grenade_owner(last);
return PLUGIN_CONTINUE;
}
public fire_in_the_hole() {
new name[32];
read_data(3, name, 31);
new temp_last = get_user_index(name);
new junk;
if((temp_last == 0) || (!is_user_connected(temp_last)))
return PLUGIN_CONTINUE;
if(get_user_weapon(temp_last,junk,junk) == CSW_FLASHBANG) {
last = temp_last;
g_sync_check_data = 2;
}
return PLUGIN_CONTINUE;
}
public fire_in_the_hole2() {
new name[32];
read_data(4, name, 31);
new temp_last = get_user_index(name);
new junk;
if((temp_last == 0) || (!is_user_connected(temp_last)))
return PLUGIN_CONTINUE;
if(get_user_weapon(temp_last,junk,junk) == CSW_FLASHBANG) {
last = temp_last;
g_sync_check_data = 2;
}
return PLUGIN_CONTINUE;
}
add_grenade_owner(owner) {
new Float:gametime = get_gametime();
g_gametime2 = gametime;
for(new i = 0; i < 32; i++) {
if(grenade[i] == 0) {
grenade[i] = owner;
return;
}
}
}
get_grenade_owner() {
new which = grenade[0];
for(new i = 1; i < 32; i++)
grenade[i-1] = grenade[i];
grenade[31] = 0;
return which;
}
// from XxAvalanchexX "Flashbang Dynamic Light"
public fw_emitsound(entity,channel,const sample[],Float:volume,Float:attenuation,fFlags,pitch) {
if(!equali(sample,"weapons/flashbang-1.wav") && !equali(sample,"weapons/flashbang-2.wav"))
return FMRES_IGNORED;
new Float:gametime = get_gametime();
//in case no one got flashed, the sound happens after all the flashes, same game time
if(gametime != g_gametime) {
g_owner = get_grenade_owner();
return FMRES_IGNORED;
}
return FMRES_IGNORED;
}
// NoFlash Blinding - End
// Stocks - Start
public fm_set_user_money ( index, i_Money ) {
set_pdata_int ( index, 115, i_Money );
message_begin ( MSG_ONE, g_msgMoney, _, index );
write_long ( i_Money );
write_byte ( 1 );
message_end ();
}
stock fm_get_user_godmode( index ) {
new Float:val;
pev(index, pev_takedamage, val);
return (val == DAMAGE_NO);
}
stock fm_set_user_godmode( index, godmode = 0 ) {
set_pev(index, pev_takedamage, godmode == 1 ? DAMAGE_NO : DAMAGE_AIM);
return 1;
}
stock fm_set_user_health( index, health ) {
health > 0 ? set_pev(index, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, index);
return 1;
}
stock fm_set_user_rendering(index, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) {
return fm_set_rendering(index, fx, r, g, b, render, amount);
}
stock fm_set_user_maxspeed( index, Float:speed = -1.0 ) {
engfunc(EngFunc_SetClientMaxspeed, index, speed);
set_pev(index, pev_maxspeed, speed);
return 1;
}
stock fm_set_user_armor( index, armor ) {
set_pev(index, pev_armorvalue, float(armor));
return 1;
}
stock fm_set_user_gravity( index, Float:gravity = 1.0 ) {
set_pev(index, pev_gravity, gravity);
return 1;
}
stock fm_give_item( index, const item[] ) {
if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5))
return 0;
new ent = fm_create_entity(item);
if (!pev_valid(ent))
return 0;
new Float:origin[3];
pev(index, pev_origin, origin);
set_pev(ent, pev_origin, origin);
set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
dllfunc(DLLFunc_Spawn, ent);
new save = pev(ent, pev_solid);
dllfunc(DLLFunc_Touch, ent, index);
if (pev(ent, pev_solid) != save)
return ent;
engfunc(EngFunc_RemoveEntity, ent);
return -1;
}
stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) {
new Float:RenderColor[3];
RenderColor[0] = float(r);
RenderColor[1] = float(g);
RenderColor[2] = float(b);
set_pev(entity, pev_renderfx, fx);
set_pev(entity, pev_rendercolor, RenderColor);
set_pev(entity, pev_rendermode, render);
set_pev(entity, pev_renderamt, float(amount));
return 1;
}
// Stocks - End
// ColorChat - Start
ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...) {
new message[256];
switch(type) {
case NORMAL: message[0] = 0x01;
case GREEN: message[0] = 0x04;
default: message[0] = 0x03;
}
vformat(message[1], 251, msg, 4);
// Make sure message is not longer than 192 character. Will crash the server.
message[192] = '^0';
new team, ColorChange, index, MSG_Type;
if(id) {
MSG_Type = MSG_ONE;
index = id;
} else {
index = FindPlayer();
MSG_Type = MSG_ALL;
}
team = get_user_team(index);
ColorChange = ColorSelection(index, MSG_Type, type);
ShowColorMessage(index, MSG_Type, message);
if(ColorChange)
Team_Info(index, MSG_Type, TeamName[team]);
}
ShowColorMessage(id, type, message[]) {
static bool:saytext_used;
static get_user_msgid_saytext;
if(!saytext_used) {
get_user_msgid_saytext = get_user_msgid("SayText");
saytext_used = true;
}
message_begin(type, get_user_msgid_saytext, _, id);
write_byte(id);
write_string(message);
message_end();
}
Team_Info(id, type, team[]) {
static bool:teaminfo_used;
static get_user_msgid_teaminfo;
if(!teaminfo_used) {
get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
teaminfo_used = true;
}
message_begin(type, get_user_msgid_teaminfo, _, id);
write_byte(id);
write_string(team);
message_end();
return 1;
}
ColorSelection(index, type, Color:Type) {
switch(Type) {
case RED: return Team_Info(index, type, TeamName[1]);
case BLUE: return Team_Info(index, type, TeamName[2]);
case GREY: return Team_Info(index, type, TeamName[0]);
}
return 0;
}
FindPlayer(){
new i = -1;
while(i <= get_maxplayers())
if(is_user_connected(++i))
return i;
return -1;
}