problemas con los rangos
#1
tengo problema con este plugins que no se como se abre el menu o si sale solo o no es del modo rangos de ttt


nose si se puede dejar con la letra N que les salga el menu si es que hay para que alguien pueda revisar este plugins porfa 

Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <fun>

#include <dhudmessage>

#include <adv_vault>

#include <ttt>

#define MAX_RANGES 48

#define TASK_HUD 5689
#define ID_HUD (taskid - TASK_HUD)

#define CostLvlUp(%1) (%1 * %1 * 40)

#define EXP_POR_KILL 1

new const PluginInfoJD[][] ={ "[TTT] System Rangos","1.0b","Juan' Diego'","!g[!tTTT!g]!n "};

new 
g_vault;
new 
saytex;
new 
teaminfo;
new 
screefade;
new 
maxplayers;

new 
rango[33];
new 
exp[33];
new 
randomkill[33];
new 
puntosA[33];

new 
Ganancias[33];
new 
happyhours;
new 
CommandMenuID;

new 
synchud;

new 
cvar_karma_minimo,cvar_ban_time,cvar_puntos_kill;

enum {
RANGO,
EXP,
RKS,
PUNTOS,
DATA_RANGOS
};


enum _:WPN {
WPN_NAME30 ], 
WPN_ENT20 ],
WPN_CSW
WPN_COST 
}




new 
g_campo[DATA_RANGOS];

new const 
Happy_Hour_Time[][] ={ "12""20""24""06" };

new const 
Rangos[][] = 
"***"
"Recien llegado",
"Civil",
"Civil elite",
"Civil Master",
"Rker",
"Pistolero",
"Comandante",
"Comandante Master",
"Francotirador",
"Cazador de Traidores",
"El Cazador De inocentes",
"Assesino de Detectives",
"Exterminador De Traidores",
"Dectetive I",
"Dectetive II",
"Dectetive II",
"Dectetive Guardian I",
"Inocente  Guardian II"
"Inocente Guardian Elite",
"Inocente Master I"
"Inocente Master  II"
"Traidor Eagle Master",
"Traidor Eagle Master II",
"Traidor De Traidores"
"Rker Inocente",
"Rker Detective",
"Rker Traidor",
"Agente del FBI",
"Arabe Jihad",
"Allhu Akbar",
"Rambo Inocente",
"Rambo Detective",
"Rambo Traidor",
"Scarface Master",
"Scarface Guardian Elite",
"Presidente Obama",
"Osama Bin Laden",
"Traidor Infiltrado",
"Capitan Traidor",
"Genera Inocente",
"Rey De Inocente",
"Esclavo Traidor",
"El Cazador Del Rando Kill",
"The Global Traidor I",
"The Global Traidor II",
"The Global Traidor II",
"Bug Fix :v"
};new const WeaponPri[ ][ WPN ] =
{
///name - weaponid --- weaponCSW -- weapon price

"M3 Super""weapon_m3"CSW_M3},
"Mp5 Navy""weapon_mp5navy"CSW_MP5NAVY5},
"Famas""weapon_famas"CSW_FAMAS5},
"Galil""weapon_galil"CSW_GALIL20 },
"AUG""weapon_aug"CSW_AUG20 },
"SG - 552""weapon_sg552"CSW_SG55220},
"AWP MAGNUM""weapon_awp"CSW_AWP50 },
"M4A1""weapon_m4a1"CSW_M4A155 },
"AK - 47 Kalashnikov""weapon_ak47"CSW_AK47100},
"SG - 550""weapon_sg550"CSW_SG550100 },
"G3SG1""weapon_sg3sg1"CSW_G3SG1100},
"M249 - Machine Gun""weapon_m249"CSW_M249,100 }
};

new const 
WeaponSec[ ][ WPN ] = 
{
"Glock""weapon_glock18"CSW_GLOCK18},  
"USP""weapon_usp"CSW_USP},
"P228""weapon_p228",  CSW_P228},
"Deaglee""weapon_deagle"CSW_DEAGLE10 },
"Fiveseven""weapon_fiveseven"CSW_FIVESEVEN},
"Dual Elite""weapon_elite"CSW_ELITE}
};
public 
plugin_init() 

register_plugin(PluginInfoJD[0], PluginInfoJD[1], PluginInfoJD[2]);

register_logevent("lev_RoundEnd"2"1=Round_End");

RegisterHamHam_Spawn "player" "ham_PlayerSpawnpost" true );
RegisterHam(Ham_Killed"player""ham_PlayerKilledPost"true);

register_clcmd("say" ,"msg_say");

cvar_karma_minimo          my_register_cvar("Karma minimo","350","Karma minimo de ban (-350)");
cvar_ban_time                          my_register_cvar("Tiempo ban","20","tiempo de banamex :v (20)");
cvar_puntos_kill              my_register_cvar("Puntos x kill","5","puntos por kill (5)");


CommandMenuID                            ttt_command_add("Tienda Admin\r(\dArmamento Especial\r)");

saytex                get_user_msgid"SayText" );
teaminfo        get_user_msgid"TeamInfo" );
screefade    get_user_msgid("ScreenFade");

maxplayers    get_maxplayers();
synchud                CreateHudSyncObj();

register_forward(FM_ClientUserInfoChanged"fw_clientinfo_changed");

g_vault adv_vault_open("vaultrangos"false);

g_campo[RANGO]        adv_vault_register_field(g_vault,"RANGO");

g_campo[EXP]                adv_vault_register_field(g_vault,"EXP");

g_campo[RKS]                =adv_vault_register_field(g_vault,"RKS");

g_campo[PUNTOS]    adv_vault_register_field(g_vault,"PUNTOS");
adv_vault_init(g_vault);


public 
ttt_command_selected(idmenuidname[])
{
if(
CommandMenuID == menuid)
cmd_menu(id);
}

public 
client_putinserver(id)
{
rango[id] = 1;
exp[id] = 0;
randomkill[id]=0;
puntosA[id]=0;

Vault(id,1);

if(!
is_user_bot(id))set_task1.0"hud_stats"id TASK_HUD__"b" );

}
public 
client_disconnect(id)
{
Vault(id,2);

remove_task(id);

remove_taskid TASK_HUD );
}

public 
fw_clientinfo_changed(idbuffer
{
if(
is_user_connected(id))
{
static 
OldName[33];

engfunc(EngFunc_InfoKeyValuebuffer"name"OldNamesizeof OldName 1);

if(
equal(OldName,ttt_get_name(id)))
return 
FMRES_IGNORED;

set_user_info(id"name"ttt_get_name(id));

client_cmd(id"setinfo ^"name^" ^"%s^"",ttt_get_name(id));

Color_Print(id,"No te pues Cambiar el Nombre dentro del !gServidor !t:v");
}
return 
FMRES_IGNORED
}
public 
Vault(id,Guardar_Cargar)
{
if(
Guardar_Cargar == 1)
{
///Cargar
if(!adv_vault_get_prepare(g_vault_,ttt_get_name(id)))return;

else
{
rango[id] = adv_vault_get_field(g_vaultg_campo[RANGO]);

exp[id]=  adv_vault_get_field(g_vaultg_campo[EXP]);

randomkill[id] = adv_vault_get_field(g_vault,g_campo[RKS]);

puntosA[id] = adv_vault_get_field(g_vault,g_campo[PUNTOS]);
}
}
else if(
Guardar_Cargar==2)
{
//Guardar
adv_vault_set_start(g_vault);

adv_vault_set_field(g_vaultg_campo[RANGO],rango[id]);

adv_vault_set_field(g_vaultg_campo[EXP],exp[id]);

adv_vault_set_field(g_vault,g_campo[RKS],randomkill[id]);

adv_vault_set_field(g_vault,g_campo[PUNTOS],puntosA[id]);

adv_vault_set_end(g_vault0ttt_get_name(id));
}
}

public 
ham_PlayerKilledPost(VictimAttackerShouldgib
{
if(!
is_user_connectedAttacker ) || Victim == Attacker ||! Attacker )return;

if(
is_user_alive(Attacker)) 
{
new 
state_killer ttt_get_playerstate(Attacker), state_victim ttt_get_playerdata(VictimPD_KILLEDSTATE);

if(
state_killer == PC_TRAITOR && state_victim == PC_TRAITOR || state_killer == PC_DETECTIVE && state_victim == PC_DETECTIVE 
|| state_killer == PC_INNOCENT && state_victim == PC_DETECTIVE || state_killer == PC_INNOCENT && state_victim == PC_INNOCENT
|| state_killer == PC_DETECTIVE && state_victim == PC_INNOCENT )
{
if(
is_user_admin(Victim))
{
if(
puntosA[Attacker] >0)
{
puntosA[Attacker]-=1;
}
}

++
randomkill[Attacker];

Color_Print(Attacker"^4No ganas ^3EXP, ^4por hacer ^3Random kill ^4papu :v." );

set_castigo(Attacker);
return;
}
if(
is_user_admin(Attacker))
{
puntosA[Attacker]+=get_pcvar_numcvar_puntos_kill);
}

set_expAttackerEXP_POR_KILL );
}
}
public 
ham_PlayerSpawnpost(id)
{
if(!
is_user_connected(id) &&!is_user_alive(id))return;

new 
num;
static 
players[32];
get_players(players,num);

if(
num>3)// Si ay mas de 3 player conectados mandamos el TASK
set_task(10.1,"karma_ban",id);
}

public 
hud_statstaskid )
{
static 
indexindex ID_HUD;
    
if (!is_user_aliveindex )) 
{
index pevindexpev_iuser2 );
if (!
is_user_aliveindex )) return;
}
  
if(index != ID_HUD
{
//set_hudmessage(0,255,0, 0.60, 0.67, 1, 6.0, 1.0);

set_hudmessage(255000.00.2016.01.0);
ShowSyncHudMsg(ID_HUD,synchud,"^n^n^nRango: %s^nExp: %d^nRandom Kills: %d"Rangosrango[index] ],expindex],randomkill[index]);

else 
{
set_hudmessage(025500.00.2016.01.0);
ShowSyncHudMsg(ID_HUD,synchud,"[ TTT Rangos System¬¬ ]^n^nRango: %s^nexp: %d | %d^nRandom Kills: %d^nGanancia: x%d"
Rangosrango[index] ], expindex ], CostLvlUp(rango[index]),randomkill[index],Ganancias[index]);
}
if(
is_user_admin(index))
{
set_hudmessage(070200, -1.00.000.52.00.082.0);
ShowSyncHudMsg(ID_HUD,synchud,"^n^nTus Puntos : %d",puntosA[index]);
}

}

set_expidexperience )
{
if( !
is_user_connectedid ) || !experience ) return;

if( (
expid ] + experience) > CostLvlUpMAX_RANGES ))
{
expid ] = CostLvlUpMAX_RANGES );
Color_Printid"^4Ya alcanzaste el maximo de ^3exp papu :v" );
return;
}

expid] += (experience*Ganancias[id]);

static 
lvllvl rangoid ];

while( 
expid ] >= CostLvlUp(rangoid ]) && rangoid] < MAX_RANGES )
++
rangoid];

if(
rangoid] > lvl )
{
Color_Printid"!tFelicidades has Subido al !gRango: !n'%s'"Rangos[rangoid] ] );
}

Vault(id,2);
}
public 
set_castigo(id)

set_dhudmessage(255850, -1.0, -1.006.012.0);
show_dhudmessage(id"[TTT] Random kill, Ten Cuidado!!!");

set_user_health(idget_user_health(id) - 50);

Set_user_screenfade(id255002100);

shake_user_screen(id);

}
public 
karma_ban(id)
{
if(
ttt_get_playerdata(id,PD_KARMA) <= get_pcvar_numcvar_karma_minimo )) // Si El Karma del Cliente es <= menor al que esta definido por Cvar
{
new 
ip[35]; get_user_ip(id,ip,34);

server_cmd("kick #%d ^"Karma Negativo :v BANAMEXX  (%d Mins)^";wait;banip ^"%s^" ^"%s^";wait;writeid"get_user_useridid),get_pcvar_numcvar_ban_time ),ip,get_pcvar_numcvar_ban_time ));

Color_Print(0,"El Usuario !g'%s'!n Fue Baneado !g'%d' Minutos!n RAZON:!g Karma Negativo ",ttt_get_name(id),get_pcvar_numcvar_ban_time ));
}

return 
PLUGIN_HANDLED;
}


/***********************************************************************/
/* MENUS */
/**********************************************************************/
public cmd_menuid )
{
if(!
is_user_admin(id))return;

new 
menu menu_create"\y[ \dTTT \y] \wArmamento""menu_armas" );

menu_additemmenu"Armas Primarias""1" );
menu_additemmenu"Armas Secundarias""2" );

menu_displayidmenu );
}
public 
menu_armasidmenuitem )
{
if(
item == MENU_EXIT )
{
menu_destroymenu );
return 
PLUGIN_HANDLED;
}

switch ( 
item )
{
case 
0PriMenuid );
case 
1SecMenuid );
}

menu_destroymenu );
return 
PLUGIN_HANDLED;
}
public 
PriMenu(id)
{
new 
iwpn[50], menu menu_create"\y[ \dTTT \y] \wArmamento Primario""menu_pri" );

for( 
0sizeof WeaponPri ; ++)
{
if(
  puntosA[id]  >= WeaponPri][ WPN_COST ])
{
formatexwpncharsmax(wpn), "\w%s \y[ \r%d Puntos \y]"WeaponPri][ WPN_NAME ], WeaponPri][ WPN_COST ] );
menu_additemmenuwpn"");
}
else
{
formatexwpncharsmax(wpn), "\d%s \y[ \r%d Puntos \y]"WeaponPri][ WPN_NAME ], WeaponPri][ WPN_COST ] );
menu_additemmenuwpn"" );
}
}

menu_displayidmenu ,0);
}

public 
SecMenu(id )
{
new 
iwpn[50], menu menu_create"\y[ \dTTT \y] \wArmamento Secundario""menu_sec" );

for( 
0sizeof WeaponSec ; ++)
{
if( 
puntosA[id] >= WeaponSec][ WPN_COST ])
{
formatexwpncharsmax(wpn), "\w%s \y[ \r%d Puntos \y]"WeaponSec][ WPN_NAME ], WeaponSec][ WPN_COST ] );
menu_additemmenuwpn"");
}
else
{
formatexwpncharsmax(wpn), "\d%s \y[ \r%d Puntos \y]"WeaponSec][ WPN_NAME ], WeaponSec][ WPN_COST ] );
menu_additemmenuwpn"" );
}
}

menu_displayidmenu,);
}
public 
menu_secidmenuitem )
{
if(
item == MENU_EXIT )
{
menu_destroymenu );
return 
PLUGIN_HANDLED;
}

if( 
puntosA[id]  WeaponSecitem ][ WPN_COST ])
{
Color_Printid"No tienes suficientes puntos");
cmd_menu(id);
return 
PLUGIN_HANDLED;
}

give_itemidWeaponSecitem ][ WPN_ENT ]);
cs_set_user_bpammoidWeaponSecitem ][ WPN_CSW ], 999 );

puntosA[id] -= WeaponSecitem ][ WPN_COST ];

Color_Print(id,"Comprastes !g%s !tArma",WeaponSec[item][WPN_NAME]);

menu_destroymenu );
return 
PLUGIN_HANDLED;
}
public 
menu_priidmenuitem )
{
if(
item == MENU_EXIT )
{
menu_destroymenu );
return 
PLUGIN_HANDLED;
}

if( 
puntosA[id] < WeaponPriitem ][ WPN_COST ])
{
Color_Print(id"No tienes suficientes puntos");
cmd_menu(id);
return 
PLUGIN_HANDLED;
}

give_itemidWeaponPriitem ][ WPN_ENT ]);

cs_set_user_bpammoidWeaponPriitem ][ WPN_CSW ], 999 );

puntosA[id] -= WeaponPriitem ][ WPN_COST ];

Color_Print(id,"Comprastes !g%s !tArma",WeaponPri[item][WPN_NAME]);

menu_destroymenu );
return 
PLUGIN_HANDLED;
}
/**************************************************************************************/
public lev_RoundEnd()
{
get_happytime();

for(new 
1<= maxplayers; ++i)
{
if(!
is_user_connected(i)) continue;

Vault(i,2);
if(
happyhours)hhhours(i);
}
}
Gananciaid )
{
if( 
is_user_admin(id))
{
if(
happyhours)
{
Ganancias[id] = 3;
}
else
{
Ganancias[id] = 2;
}
}
else
{
if(
happyhours)
{
Ganancias[id] = 2;
}
else
{
Ganancias[id] = 1;
}
}
}

get_happytime()
{
happyhours false;

static 
timeh[3], hourid;
get_time("%H"timehcharsmax(timeh));

for(
hour 0hour sizeof Happy_Hour_Time; ++hour
{
if(
equal(timehHappy_Hour_Time[hour])) 
happyhours true;

}

for(
id 1id <= maxplayers; ++id)
{
if(!
is_user_connected(id)) return;

Ganancia(id);
}
}

public 
msg_sayid )
{
static 
said[191];
read_args(saidcharsmax(said)); remove_quotes(said);
replace_all(saidcharsmax(said), "%"""); replace_all(saidcharsmax(said), "#""");
    
if (!ValidMessage(said1)) return PLUGIN_CONTINUE;


static 
color[11], prefix[91];

get_user_team(idcolorcharsmax(color));

formatex(prefixcharsmax(prefix), "%s^x01[^x04%s^x01]^x03 %s"is_user_alive(id)?"^x01":"^x01*MUERTO* ",Rangosrangoid]],  ttt_get_name(id));
    
if (is_user_admin(id)) format(saidcharsmax(said), "^x04%s"said);
    
format
(saidcharsmax(said), "%s^x01 : %s"prefixsaid);
    
static iteam[11];

for (
1<=  maxplayers; ++i)
{
if (!
is_user_connected)) continue;

if (
is_user_aliveid) && is_user_alive) || !is_user_aliveid ) && !is_user_alive))
{
get_user_team(iteamcharsmax(color));
changeTeamInfo(icolor);
writeMessage(isaid);
changeTeamInfo(iteam);
}
}
    
return PLUGIN_HANDLED_MAIN;
}

public 
changeTeamInfo(playerteam[])
{
message_begin(MSG_ONE,teaminfo_player);
write_byte(player);
write_string(team);
message_end();
}

public 
writeMessage(playermessage[])
{
message_begin(MSG_ONEsaytex, {000}, player);
write_byte(player);
write_string(message);
message_end();
}

stock ValidMessage(text[], maxcount
{
static 
lenicount;
len strlen(text);
count 0;
    
if (!len) return false;
    
for (0len; ++i
{
if (
text[i] != ' '
{
++
count;

if (
count >= maxcount)
return 
true;
}
}
    
return false;

public 
hhhours(id)
{
Color_Print(id,"La Happy'Hours Esta:!g %s!t Tu Ganancia: !gx%d !tde !gEXP",happyhours"Activada" "Desactivada",Ganancias[id]);
}

ttt_get_name(id)
{
static 
Name32 ];

get_user_nameidNamecharsmaxName ) );

return 
Name;
}

stock Color_Print(const id, const input[], any:...)

new 
count 1players[32];
static 
msg[191], len;

len formatex(msgcharsmax(msg), "%s "PluginInfoJD[3]);
vformat(msg[len], 190 leninput3);

replace_all(msg190"!g""^4");
replace_all(msg190"!n""^1");
replace_all(msg190"!t""^3");


if(
id
players[0] = id;
else 
get_players(playerscount"ch");
        
for (new 0count; ++i)
if(
is_user_connected(players[i]))
{
{
message_begin(MSG_ONE_UNRELIABLEsaytex_players[i]);  
write_byte
(players[i]);
write_string(msg);
message_end(); 

}

}

public 
Set_user_screenfade(indexrrrgggbbbduracionalpha)
{
message_beginindex MSG_ONE_UNRELIABLE MSG_BROADCASTscreefade_index );
write_shortduracion 4096 );
write_shortduracion 4096 );
write_short0x0000 );
write_byterrr ); 
write_byteggg );
write_bytebbb ); 
write_bytealpha );
message_end( );    
}
stock shake_user_screen(index)
{
message_begin(MSG_ONEget_user_msgid("ScreenShake"), {0,0,0}, index); // Shake Screen
write_short(1<<14);
write_short(1<<14);
write_short(1<<14);
message_end();
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang3082\\ f0\\ fs16 \n\\ par }
*/ 
Responder
#2
No entiendo nada, pero coloca esto
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <fun>

#include <dhudmessage>

#include <adv_vault>

#include <ttt>

#define MAX_RANGES 48

#define TASK_HUD 5689
#define ID_HUD (taskid - TASK_HUD)

#define CostLvlUp(%1) (%1 * %1 * 40)

#define EXP_POR_KILL 1

new const PluginInfoJD[][] ={ "[TTT] System Rangos","1.0b","Juan' Diego'","!g[!tTTT!g]!n "};

new 
g_vault;
new 
saytex;
new 
teaminfo;
new 
screefade;
new 
maxplayers;

new 
rango[33];
new 
exp[33];
new 
randomkill[33];
new 
puntosA[33];

new 
Ganancias[33];
new 
happyhours;
new 
CommandMenuID;

new 
synchud;

new 
cvar_karma_minimo,cvar_ban_time,cvar_puntos_kill;

enum {
RANGO,
EXP,
RKS,
PUNTOS,
DATA_RANGOS
};


enum _:WPN {
WPN_NAME30 ], 
WPN_ENT20 ],
WPN_CSW
WPN_COST 
}




new 
g_campo[DATA_RANGOS];

new const 
Happy_Hour_Time[][] ={ "12""20""24""06" };

new const 
Rangos[][] = 
"***"
"Recien llegado",
"Civil",
"Civil elite",
"Civil Master",
"Rker",
"Pistolero",
"Comandante",
"Comandante Master",
"Francotirador",
"Cazador de Traidores",
"El Cazador De inocentes",
"Assesino de Detectives",
"Exterminador De Traidores",
"Dectetive I",
"Dectetive II",
"Dectetive II",
"Dectetive Guardian I",
"Inocente  Guardian II"
"Inocente Guardian Elite",
"Inocente Master I"
"Inocente Master  II"
"Traidor Eagle Master",
"Traidor Eagle Master II",
"Traidor De Traidores"
"Rker Inocente",
"Rker Detective",
"Rker Traidor",
"Agente del FBI",
"Arabe Jihad",
"Allhu Akbar",
"Rambo Inocente",
"Rambo Detective",
"Rambo Traidor",
"Scarface Master",
"Scarface Guardian Elite",
"Presidente Obama",
"Osama Bin Laden",
"Traidor Infiltrado",
"Capitan Traidor",
"Genera Inocente",
"Rey De Inocente",
"Esclavo Traidor",
"El Cazador Del Rando Kill",
"The Global Traidor I",
"The Global Traidor II",
"The Global Traidor II",
"Bug Fix :v"
};new const WeaponPri[ ][ WPN ] =
{
///name - weaponid --- weaponCSW -- weapon price

"M3 Super""weapon_m3"CSW_M3},
"Mp5 Navy""weapon_mp5navy"CSW_MP5NAVY5},
"Famas""weapon_famas"CSW_FAMAS5},
"Galil""weapon_galil"CSW_GALIL20 },
"AUG""weapon_aug"CSW_AUG20 },
"SG - 552""weapon_sg552"CSW_SG55220},
"AWP MAGNUM""weapon_awp"CSW_AWP50 },
"M4A1""weapon_m4a1"CSW_M4A155 },
"AK - 47 Kalashnikov""weapon_ak47"CSW_AK47100},
"SG - 550""weapon_sg550"CSW_SG550100 },
"G3SG1""weapon_sg3sg1"CSW_G3SG1100},
"M249 - Machine Gun""weapon_m249"CSW_M249,100 }
};

new const 
WeaponSec[ ][ WPN ] = 
{
"Glock""weapon_glock18"CSW_GLOCK18},  
"USP""weapon_usp"CSW_USP},
"P228""weapon_p228",  CSW_P228},
"Deaglee""weapon_deagle"CSW_DEAGLE10 },
"Fiveseven""weapon_fiveseven"CSW_FIVESEVEN},
"Dual Elite""weapon_elite"CSW_ELITE}
};
public 
plugin_init() 

register_plugin(PluginInfoJD[0], PluginInfoJD[1], PluginInfoJD[2]);

register_logevent("lev_RoundEnd"2"1=Round_End");

RegisterHamHam_Spawn "player" "ham_PlayerSpawnpost" true );
RegisterHam(Ham_Killed"player""ham_PlayerKilledPost"true);

register_clcmd("say" ,"msg_say");
register_clcmd("nightvision""cmd_menu");

cvar_karma_minimo          my_register_cvar("Karma minimo","350","Karma minimo de ban (-350)");
cvar_ban_time                          my_register_cvar("Tiempo ban","20","tiempo de banamex :v (20)");
cvar_puntos_kill              my_register_cvar("Puntos x kill","5","puntos por kill (5)");


CommandMenuID                            ttt_command_add("Tienda Admin\r(\dArmamento Especial\r)");

saytex                get_user_msgid"SayText" );
teaminfo        get_user_msgid"TeamInfo" );
screefade    get_user_msgid("ScreenFade");

maxplayers    get_maxplayers();
synchud                CreateHudSyncObj();

register_forward(FM_ClientUserInfoChanged"fw_clientinfo_changed");

g_vault adv_vault_open("vaultrangos"false);

g_campo[RANGO]        = adv_vault_register_field(g_vault,"RANGO");

g_campo[EXP]                = adv_vault_register_field(g_vault,"EXP");

g_campo[RKS]                =adv_vault_register_field(g_vault,"RKS");

g_campo[PUNTOS]    = adv_vault_register_field(g_vault,"PUNTOS");
adv_vault_init(g_vault);


public 
ttt_command_selected(idmenuidname[])
{
if(
CommandMenuID == menuid)
cmd_menu(id);
}

public 
client_putinserver(id)
{
rango[id] = 1;
exp[id] = 0;
randomkill[id]=0;
puntosA[id]=0;

Vault(id,1);

if(!
is_user_bot(id))set_task1.0"hud_stats"id TASK_HUD__"b" );

}
public 
client_disconnect(id)
{
Vault(id,2);

remove_task(id);

remove_taskid TASK_HUD );
}

public 
fw_clientinfo_changed(idbuffer
{
if(
is_user_connected(id))
{
static 
OldName[33];

engfunc(EngFunc_InfoKeyValuebuffer"name"OldNamesizeof OldName 1);

if(
equal(OldName,ttt_get_name(id)))
return 
FMRES_IGNORED;

set_user_info(id"name"ttt_get_name(id));

client_cmd(id"setinfo ^"name^" ^"%s^"",ttt_get_name(id));

Color_Print(id,"No te pues Cambiar el Nombre dentro del !gServidor !t:v");
}
return 
FMRES_IGNORED
}
public 
Vault(id,Guardar_Cargar)
{
if(
Guardar_Cargar == 1)
{
///Cargar
if(!adv_vault_get_prepare(g_vault_,ttt_get_name(id)))return;

else
{
rango[id] = adv_vault_get_field(g_vaultg_campo[RANGO]);

exp[id]=  adv_vault_get_field(g_vaultg_campo[EXP]);

randomkill[id] = adv_vault_get_field(g_vault,g_campo[RKS]);

puntosA[id] = adv_vault_get_field(g_vault,g_campo[PUNTOS]);
}
}
else if(
Guardar_Cargar==2)
{
//Guardar
adv_vault_set_start(g_vault);

adv_vault_set_field(g_vaultg_campo[RANGO],rango[id]);

adv_vault_set_field(g_vaultg_campo[EXP],exp[id]);

adv_vault_set_field(g_vault,g_campo[RKS],randomkill[id]);

adv_vault_set_field(g_vault,g_campo[PUNTOS],puntosA[id]);

adv_vault_set_end(g_vault0ttt_get_name(id));
}
}

public 
ham_PlayerKilledPost(VictimAttackerShouldgib
{
if(!
is_user_connectedAttacker ) || Victim == Attacker ||! Attacker )return;

if(
is_user_alive(Attacker)) 
{
new 
state_killer ttt_get_playerstate(Attacker), state_victim ttt_get_playerdata(VictimPD_KILLEDSTATE);

if(
state_killer == PC_TRAITOR && state_victim == PC_TRAITOR || state_killer == PC_DETECTIVE && state_victim == PC_DETECTIVE 
|| state_killer == PC_INNOCENT && state_victim == PC_DETECTIVE || state_killer == PC_INNOCENT && state_victim == PC_INNOCENT
|| state_killer == PC_DETECTIVE && state_victim == PC_INNOCENT )
{
if(
is_user_admin(Victim))
{
if(
puntosA[Attacker] >0)
{
puntosA[Attacker]-=1;
}
}

++
randomkill[Attacker];

Color_Print(Attacker"^4No ganas ^3EXP, ^4por hacer ^3Random kill ^4papu :v." );

set_castigo(Attacker);
return;
}
if(
is_user_admin(Attacker))
{
puntosA[Attacker]+=get_pcvar_numcvar_puntos_kill);
}

set_expAttackerEXP_POR_KILL );
}
}
public 
ham_PlayerSpawnpost(id)
{
if(!
is_user_connected(id) &&!is_user_alive(id))return;

new 
num;
static 
players[32];
get_players(players,num);

if(
num>3)// Si ay mas de 3 player conectados mandamos el TASK
set_task(10.1,"karma_ban",id);
}

public 
hud_statstaskid )
{
static 
indexindex ID_HUD;
    
if (!
is_user_aliveindex )) 
{
index pevindexpev_iuser2 );
if (!
is_user_aliveindex )) return;
}
  
if(
index != ID_HUD
{
//set_hudmessage(0,255,0, 0.60, 0.67, 1, 6.0, 1.0);

set_hudmessage(255000.00.2016.01.0);
ShowSyncHudMsg(ID_HUD,synchud,"^n^n^nRango: %s^nExp: %d^nRandom Kills: %d"Rangosrango[index] ],expindex],randomkill[index]);

else 
{
set_hudmessage(025500.00.2016.01.0);
ShowSyncHudMsg(ID_HUD,synchud,"[ TTT Rangos System¬¬ ]^n^nRango: %s^nexp: %d | %d^nRandom Kills: %d^nGanancia: x%d"
Rangosrango[index] ], expindex ], CostLvlUp(rango[index]),randomkill[index],Ganancias[index]);
}
if(
is_user_admin(index))
{
set_hudmessage(070200, -1.00.000.52.00.082.0);
ShowSyncHudMsg(ID_HUD,synchud,"^n^nTus Puntos : %d",puntosA[index]);
}

}

set_expidexperience )
{
if( !
is_user_connectedid ) || !experience ) return;

if( (
expid ] + experience) > CostLvlUpMAX_RANGES ))
{
expid ] = CostLvlUpMAX_RANGES );
Color_Printid"^4Ya alcanzaste el maximo de ^3exp papu :v" );
return;
}

expid] += (experience*Ganancias[id]);

static 
lvllvl rangoid ];

while( 
expid ] >= CostLvlUp(rangoid ]) && rangoid] < MAX_RANGES )
++
rangoid];

if(
rangoid] > lvl )
{
Color_Printid"!tFelicidades has Subido al !gRango: !n'%s'"Rangos[rangoid] ] );
}

Vault(id,2);
}
public 
set_castigo(id)

set_dhudmessage(255850, -1.0, -1.006.012.0);
show_dhudmessage(id"[TTT] Random kill, Ten Cuidado!!!");

set_user_health(idget_user_health(id) - 50);

Set_user_screenfade(id255002100);

shake_user_screen(id);

}
public 
karma_ban(id)
{
if(
ttt_get_playerdata(id,PD_KARMA) <= get_pcvar_numcvar_karma_minimo )) // Si El Karma del Cliente es <= menor al que esta definido por Cvar
{
new 
ip[35]; get_user_ip(id,ip,34);

server_cmd("kick #%d ^"Karma Negativo :v BANAMEXX  (%d Mins)^";wait;banip ^"%s^" ^"%s^";wait;writeid"get_user_useridid),get_pcvar_numcvar_ban_time ),ip,get_pcvar_numcvar_ban_time ));

Color_Print(0,"El Usuario !g'%s'!n Fue Baneado !g'%d' Minutos!n RAZON:!g Karma Negativo ",ttt_get_name(id),get_pcvar_numcvar_ban_time ));
}

return 
PLUGIN_HANDLED;
}


/***********************************************************************/
/* MENUS */
/**********************************************************************/
public cmd_menuid )
{
if(!
is_user_admin(id))return;

new 
menu menu_create"\y[ \dTTT \y] \wArmamento""menu_armas" );

menu_additemmenu"Armas Primarias""1" );
menu_additemmenu"Armas Secundarias""2" );

menu_displayidmenu );
}
public 
menu_armasidmenuitem )
{
if(
item == MENU_EXIT )
{
menu_destroymenu );
return 
PLUGIN_HANDLED;
}

switch ( 
item )
{
case 
0PriMenuid );
case 
1SecMenuid );
}

menu_destroymenu );
return 
PLUGIN_HANDLED;
}
public 
PriMenu(id)
{
new 
iwpn[50], menu menu_create"\y[ \dTTT \y] \wArmamento Primario""menu_pri" );

for( 
0sizeof WeaponPri ; ++)
{
if(  
puntosA[id]  >= WeaponPri][ WPN_COST ])
{
formatexwpncharsmax(wpn), "\w%s \y[ \r%d Puntos \y]"WeaponPri][ WPN_NAME ], WeaponPri][ WPN_COST ] );
menu_additemmenuwpn"");
}
else
{
formatexwpncharsmax(wpn), "\d%s \y[ \r%d Puntos \y]"WeaponPri][ WPN_NAME ], WeaponPri][ WPN_COST ] );
menu_additemmenuwpn"" );
}
}

menu_displayidmenu ,0);
}

public 
SecMenu(id )
{
new 
iwpn[50], menu menu_create"\y[ \dTTT \y] \wArmamento Secundario""menu_sec" );

for( 
0sizeof WeaponSec ; ++)
{
if( 
puntosA[id] >= WeaponSec][ WPN_COST ])
{
formatexwpncharsmax(wpn), "\w%s \y[ \r%d Puntos \y]"WeaponSec][ WPN_NAME ], WeaponSec][ WPN_COST ] );
menu_additemmenuwpn"");
}
else
{
formatexwpncharsmax(wpn), "\d%s \y[ \r%d Puntos \y]"WeaponSec][ WPN_NAME ], WeaponSec][ WPN_COST ] );
menu_additemmenuwpn"" );
}
}

menu_displayidmenu,);
}
public 
menu_secidmenuitem )
{
if(
item == MENU_EXIT )
{
menu_destroymenu );
return 
PLUGIN_HANDLED;
}

if( 
puntosA[id]  < WeaponSecitem ][ WPN_COST ])
{
Color_Printid"No tienes suficientes puntos");
cmd_menu(id);
return 
PLUGIN_HANDLED;
}

give_itemidWeaponSecitem ][ WPN_ENT ]);
cs_set_user_bpammoidWeaponSecitem ][ WPN_CSW ], 999 );

puntosA[id] -= WeaponSecitem ][ WPN_COST ];

Color_Print(id,"Comprastes !g%s !tArma",WeaponSec[item][WPN_NAME]);

menu_destroymenu );
return 
PLUGIN_HANDLED;
}
public 
menu_priidmenuitem )
{
if(
item == MENU_EXIT )
{
menu_destroymenu );
return 
PLUGIN_HANDLED;
}

if( 
puntosA[id] < WeaponPriitem ][ WPN_COST ])
{
Color_Print(id"No tienes suficientes puntos");
cmd_menu(id);
return 
PLUGIN_HANDLED;
}

give_itemidWeaponPriitem ][ WPN_ENT ]);

cs_set_user_bpammoidWeaponPriitem ][ WPN_CSW ], 999 );

puntosA[id] -= WeaponPriitem ][ WPN_COST ];

Color_Print(id,"Comprastes !g%s !tArma",WeaponPri[item][WPN_NAME]);

menu_destroymenu );
return 
PLUGIN_HANDLED;
}
/**************************************************************************************/
public lev_RoundEnd()
{
get_happytime();

for(new 
1<= maxplayers; ++i)
{
if(!
is_user_connected(i)) continue;

Vault(i,2);
if(
happyhours)hhhours(i);
}
}
Gananciaid )
{
if( 
is_user_admin(id))
{
if(
happyhours)
{
Ganancias[id] = 3;
}
else
{
Ganancias[id] = 2;
}
}
else
{
if(
happyhours)
{
Ganancias[id] = 2;
}
else
{
Ganancias[id] = 1;
}
}
}

get_happytime()
{
happyhours false;

static 
timeh[3], hourid;
get_time("%H"timehcharsmax(timeh));

for(
hour 0hour sizeof Happy_Hour_Time; ++hour
{
if(
equal(timehHappy_Hour_Time[hour])) 
happyhours true;

}

for(
id 1id <= maxplayers; ++id)
{
if(!
is_user_connected(id)) return;

Ganancia(id);
}
}

public 
msg_sayid )
{
static 
said[191];
read_args(saidcharsmax(said)); remove_quotes(said);
replace_all(saidcharsmax(said), "%"""); replace_all(saidcharsmax(said), "#""");
    
if (!
ValidMessage(said1)) return PLUGIN_CONTINUE;


static 
color[11], prefix[91];

get_user_team(idcolorcharsmax(color));

formatex(prefixcharsmax(prefix), "%s^x01[^x04%s^x01]^x03 %s"is_user_alive(id)?"^x01":"^x01*MUERTO* ",Rangosrangoid]],  ttt_get_name(id));
    
if (
is_user_admin(id)) format(saidcharsmax(said), "^x04%s"said);
    
format(saidcharsmax(said), "%s^x01 : %s"prefixsaid);
    
static 
iteam[11];

for (
1<=  maxplayers; ++i)
{
if (!
is_user_connected)) continue;

if (
is_user_aliveid) && is_user_alive) || !is_user_aliveid ) && !is_user_alive))
{
get_user_team(iteamcharsmax(color));
changeTeamInfo(icolor);
writeMessage(isaid);
changeTeamInfo(iteam);
}
}
    
return 
PLUGIN_HANDLED_MAIN;
}

public 
changeTeamInfo(playerteam[])
{
message_begin(MSG_ONE,teaminfo_player);
write_byte(player);
write_string(team);
message_end();
}

public 
writeMessage(playermessage[])
{
message_begin(MSG_ONEsaytex, {000}, player);
write_byte(player);
write_string(message);
message_end();
}

stock ValidMessage(text[], maxcount
{
static 
lenicount;
len strlen(text);
count 0;
    
if (!
len) return false;
    
for (
0len; ++i
{
if (
text[i] != ' '
{
++
count;

if (
count >= maxcount)
return 
true;
}
}
    
return 
false;

public 
hhhours(id)
{
Color_Print(id,"La Happy'Hours Esta:!g %s!t Tu Ganancia: !gx%d !tde !gEXP",happyhours"Activada" "Desactivada",Ganancias[id]);
}

ttt_get_name(id)
{
static 
Name32 ];

get_user_nameidNamecharsmaxName ) );

return 
Name;
}

stock Color_Print(const id, const input[], any:...)

new 
count 1players[32];
static 
msg[191], len;

len formatex(msgcharsmax(msg), "%s "PluginInfoJD[3]);
vformat(msg[len], 190 leninput3);

replace_all(msg190"!g""^4");
replace_all(msg190"!n""^1");
replace_all(msg190"!t""^3");


if(
id
players[0] = id;
else 
get_players(playerscount"ch");
        
for (new 
0count; ++i)
if(
is_user_connected(players[i]))
{
{
message_begin(MSG_ONE_UNRELIABLEsaytex_players[i]);  
write_byte(players[i]);
write_string(msg);
message_end(); 

}

}

public 
Set_user_screenfade(indexrrrgggbbbduracionalpha)
{
message_beginindex MSG_ONE_UNRELIABLE MSG_BROADCASTscreefade_index );
write_shortduracion 4096 );
write_shortduracion 4096 );
write_short0x0000 );
write_byterrr ); 
write_byteggg );
write_bytebbb ); 
write_bytealpha );
message_end( );    
}
stock shake_user_screen(index)
{
message_begin(MSG_ONEget_user_msgid("ScreenShake"), {0,0,0}, index); // Shake Screen
write_short(1<<14);
write_short(1<<14);
write_short(1<<14);
message_end();


Solo agregué una linea Whatdone Whatdone
Es para que abra con la N
Estoy cansado de este sufrimiento llamado vivir en Venezuela
Okay
Responder
#3
(22/04/2021, 06:05 PM)MalitoMaloso escribió: tengo problema con este plugins que no se como se abre el menu o si sale solo o no es del modo rangos de ttt


nose si se puede dejar con la letra N que les salga el menu si es que hay para que alguien pueda revisar este plugins porfa 

Bueno, como ya arreglamos y te lo envié por privado, también dejo acá esto que edite hace bastante tiempo y quizá a otros les sirva también. Sinceramente es un trabajo viejo y no recuerdo si tiene bugs. Sólo es un aporte y ustedes decidiran que hacer con ello.
Trae todo lo default hecho por Juan pero le había arreglado algunos bugs y también le hice un sistema de Top15 por rangos + estaidisticas.

Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <fun>

#include <adv_vault>

#include <ttt>

#define MAX_RANGES 48

#define TASK_HUD 5689
#define ID_HUD (taskid - TASK_HUD)

#define CostLvlUp(%1) (%1 * %1 * 25)

#define EXP_POR_KILL 1

new const PluginInfoJD[][] ={ "[TTT] System Rangos","6.4","Juan' Diego'","^4[AMXX ES]^1"};

#pragma compress 1

new g_vault;
new 
saytex;
new 
teaminfo;
new 
screefade;
new 
maxplayers;

new 
rango[33];
new 
exp[33];
new 
randomkill[33];
new 
puntosA[33];

new 
Ganancias[33];
new 
happyhours;
new 
CommandMenuIDCommandMenuIDk;

new 
synchud;

new 
keys MENU_KEY_0 MENU_KEY_1 MENU_KEY_3 MENU_KEY_4 MENU_KEY_5 MENU_KEY_6|  MENU_KEY_7 MENU_KEY_8 MENU_KEY_9;


enum {
    
RANGO,
    
EXP,
    
RKS,
    
PUNTOS,
    
DATA_RANGOS
};

enum
{
    
GUARDAR 1,
    
CARGAR
};

enum _:WPN {
    
WPN_NAME30 ], 
    
WPN_ENT20 ],
    
WPN_CSW
    
WPN_COST 
};

new 
g_campo[DATA_RANGOS];

new const 
Happy_Hour_Time[][] ={ "12""20""24""02""03""04""06" };

new const 
Rangos[][] = 
{     
     
"Nuevo"
     
"Frutero",
     
"Novato",
     
"Civil",
     
"Experimentado",
     
"Master",
     
"Pistolero",
     
"Comandante",
     
"Comandante master",
     
"Francotirador",
     
"Cazador de traidores",
     
"Cazador de inocentes",
     
"Asesino de detectives",
     
"Exterminador",
     
"Detective",
     
"Detective nazi",
     
"Inocente master"
     
"Traidor master",
     
"Traidor de traidores",    
     
"Freeshotero",
     
"Freekillero",
     
"Anti sistema",
     
"Agente del FBI",
     
"Arabe Jihad",
     
"Allhu Akbar",
     
"Rambo Inocente",
     
"Rambo Detective",
     
"Rambo Traidor",
     
"Scarface Master",
     
"Scarface Guardian Elite",
     
"Presidente Obama",
     
"Osama Bin Laden",
     
"Traidor infiltrado",
     
"Capitan Traidor",
     
"General Inocente",
     
"Rey de Inocente",
     
"Esclavo Traidor",
     
"Supreme Kill",
     
"Hitler",
     
"The Global Traidor",
     
"Traidor Final",
     
"FAN DE  AMXX ES"     
};

new const 
WeaponPri[ ][ WPN ] =
{
    
///name - weaponid --- weaponCSW -- weapon price    
    
"M3 Super""weapon_m3"CSW_M325 },
    { 
"Mp5 Navy""weapon_mp5navy"CSW_MP5NAVY25},
    { 
"Famas""weapon_famas"CSW_FAMAS25},
    { 
"Galil""weapon_galil"CSW_GALIL25 },
    { 
"AUG""weapon_aug"CSW_AUG50 },
    { 
"SG - 552""weapon_sg552"CSW_SG55220},
    { 
"M4A1""weapon_m4a1"CSW_M4A1100 },
    { 
"AK - 47 Kalashnikov""weapon_ak47"CSW_AK47100},
    { 
"SG - 550""weapon_sg550"CSW_SG550100 },
    
//{ "G3SG1", "weapon_sg3sg1", CSW_G3SG1, 100},
    
"M249 - Machine Gun""weapon_m249"CSW_M249,100 }    
};

new const 
WeaponSec[ ][ WPN ] = 
{
    { 
"Glock""weapon_glock18"CSW_GLOCK18},  
    { 
"P228""weapon_p228",  CSW_P228},
    { 
"Deagle""weapon_deagle"CSW_DEAGLE10 },
    { 
"Fiveseven""weapon_fiveseven"CSW_FIVESEVEN},
    { 
"Dual Elite""weapon_elite"CSW_ELITE}
};


new 
g_sort;
new 
g_playername[33][32];


public 
plugin_init() 
{    
    
register_plugin(PluginInfoJD[0], PluginInfoJD[1], PluginInfoJD[2]);
    
    
register_logevent("lev_RoundEnd"2"1=Round_End");
    
    
RegisterHamHam_Spawn "player" "ham_PlayerSpawnpost" true );
    
RegisterHam(Ham_Killed"player""ham_PlayerKilledPost"true);
    
    
register_clcmd("say" ,"msg_say");
    
register_concmd("amx_estadisticas""amx_estadisticas"ADMIN_RCON"<Nombre> - Muestra las stats del player");
    
register_clcmd("say /vip""cmd_menu"ADMIN_RESERVATION);
    
register_clcmd("say /armas""cmd_menu"ADMIN_RESERVATION);
    
register_clcmd("ttt_armas""cmd_menu"ADMIN_RESERVATION);
    
register_clcmd("say /hh""hhhours");
    
register_clcmd("say /happy""hhhours");
    
    
register_concmd("rango_top""TopRangos");    
    
    
CommandMenuID  ttt_command_add("Tienda de armamento \yVIP");
    
CommandMenuIDk ttt_command_add("Top \y15\w Rangos");

    
    
saytex                 get_user_msgid"SayText" );
    
teaminfo         get_user_msgid"TeamInfo" );
    
screefade     get_user_msgid("ScreenFade");
    
    
maxplayers    get_maxplayers();
    
synchud                CreateHudSyncObj();
    

    
g_vault =         adv_vault_open("vaultrangos"false);
    
    
g_campo[RANGO]        = adv_vault_register_field(g_vault,"RANGO");
    
    
g_campo[EXP]                = adv_vault_register_field(g_vault,"EXP");
    
    
g_campo[RKS]                =adv_vault_register_field(g_vault,"RKS");
    
    
g_campo[PUNTOS]    = adv_vault_register_field(g_vault,"PUNTOS");
    
    
adv_vault_init(g_vault);
    
    
g_sort adv_vault_sort_create(g_vaultORDER_DESC200g_campo[RANGO], g_campo[EXP]);
            
}

   
public 
ttt_command_selected(idmenuidname[])
{
    if(
CommandMenuID == menuid)
    
cmd_menu(id);
    else if(
CommandMenuIDk == menuid)
    
TopRangos(id);
}


public 
amx_estadisticas(idlevelcid) {
    if(!
cmd_access(idlevelcid1))
        return 
PLUGIN_HANDLED;


    new 
Nombre[32];
    
read_argv(1Nombrecharsmax(Nombre));
    
trim(Nombre);
    
remove_quotes(Nombre);

    if(
strlen(Nombre) <= 32) {
        
Estadisticas(idNombre);
    }else 
console_print(id"[RANGOS] Ocurrio un error, exceso de limite de nombre");


    return 
PLUGIN_HANDLED;
}

public 
client_putinserver(id)
 {
    
rango[id] = 1;
    
exp[id] = 0;
    
randomkill[id]=0;
    
puntosA[id]=0;

    
get_user_name(idg_playername[id], charsmax(g_playername[]));
    

    
Vault(idCARGAR);
    
    if(!
is_user_bot(id))set_task1.0"hud_stats"id TASK_HUD__"b" );
    
    
}
public 
client_disconnect(id)
{
    
Vault(idGUARDAR);
    
    
remove_task(id);
    
    
remove_taskidTASK_HUD );
}


public 
Vault(idModo)
{
    if(
Modo == GUARDAR)
    {
        
adv_vault_set_start(g_vault);

        
adv_vault_set_field(g_vaultg_campo[RANGO], rango[id]);
        
adv_vault_set_field(g_vaultg_campo[RKS], randomkill[id]);
        
adv_vault_set_field(g_vaultg_campo[EXP], exp[id]);
        
adv_vault_set_field(g_vaultg_campo[PUNTOS], puntosA[id]);

        
adv_vault_set_end(g_vault0g_playername[id]);

    }
    else if(
Modo == CARGAR)
    {
        if(!
adv_vault_get_prepare(g_vault0g_playername[id]))
            return;

        
rango[id] = adv_vault_get_field(g_vaultg_campo[RANGO]);
        
randomkill[id] = adv_vault_get_field(g_vaultg_campo[RKS]);
        
exp[id] = adv_vault_get_field(g_vaultg_campo[EXP]);
        
puntosA[id] = adv_vault_get_field(g_vaultg_campo[PUNTOS]);
    }
}

public 
ham_PlayerKilledPost(VictimAttackerShouldgib
{
    
    if(
is_user_alive(Attacker)) 
    {
        new 
state_killer ttt_get_playerstate(Attacker), state_victim ttt_get_playerdata(VictimPD_KILLEDSTATE);
        
        if(
state_killer == PC_TRAITOR && state_victim == PC_TRAITOR || state_killer == PC_DETECTIVE && state_victim == PC_DETECTIVE 
        
|| state_killer == PC_INNOCENT && state_victim == PC_DETECTIVE || state_killer == PC_INNOCENT && state_victim == PC_INNOCENT
        
|| state_killer == PC_DETECTIVE && state_victim == PC_INNOCENT )
        {
            if(
is_user_admin(Victim))
            {
                if(
puntosA[Attacker] >0)
                {
                    
puntosA[Attacker]-=1;
                }
            }
            
            ++
randomkill[Attacker];
            
            
Color_Print(Attacker"^1No ganas ^4EXP^1, por hacer ^4Random kill^1." );
            
            
set_castigo(Attacker);
            return;
        }
        if(
is_user_admin(Attacker))
        {
            
puntosA[Attacker]+=3;
        }
            
        
set_expAttackerEXP_POR_KILL );
    }
}


public 
ham_PlayerSpawnpost(id)
{
    if(!
is_user_connected(id) &&!is_user_alive(id))return;
    
    new 
num;
    static 
players[32];
    
get_players(players,num);
    
    if(
num>3)
    
set_task(10.1,"karma_ban",id);
}
    
public 
hud_statstaskid )
{
    new 
random_num(1255);
    new 
random_num(1255);
    new 
random_num(1255);
    static 
indexindex ID_HUD;
    
    if (!
is_user_aliveindex )) 
    {
        
index pevindexpev_iuser2 );
        if (!
is_user_aliveindex )) return;
    }
   
    if(
index != ID_HUD
    {
        
set_hudmessage(RGB, -1.00.0216.01.0);
        
ShowSyncHudMsg(ID_HUD,synchud,"Rango: %s - Próximo: %s^nExp: %d/%d - FreeKills: %d"Rangosrango[index] ], Rangos[rango[index]+1], expindex], CostLvlUp(rango[index]), randomkill[index]);
    } 
    else 
    {
        
set_hudmessage(RGB, -1.00.0216.01.0);
        
ShowSyncHudMsg(ID_HUD,synchud,"Rango: %s - Próximo: %s^nExp: %d/%d - FreeKills: %d"
        
Rangosrango[index] ], Rangos[rango[index]+1], expindex ], CostLvlUp(rango[index]), randomkill[index]);
    }
    if(
is_user_admin(index))
    {
        
set_hudmessage(RGB, -1.00.0216.01.0);

        
ShowSyncHudMsg(ID_HUD,synchud,"Puntos: %d - Rango: %s - Próximo: %s^nExp: %d/%d - FreeKills: %d",
        
puntosA[index],Rangosrango[index] ], Rangos[rango[index]+1], expindex], CostLvlUp(rango[index]), randomkill[index]);
    }
        
 }

set_expidexperience )
{
    if( !
is_user_connectedid ) || !experience ) return;
    
    if( (
expid ] + experience) > CostLvlUpMAX_RANGES ))
    {
        
expid ] = CostLvlUpMAX_RANGES );
        
Color_Printid"^1Ya alcanzaste el maximo de ^4EXP^1. Contactate con un ^4STAFF" );
        return;
    }
    
    
expid] += (experience*Ganancias[id]);
    
    static 
lvllvl rangoid ];
    
    while( 
expid ] >= CostLvlUp(rangoid ]) && rangoid] < MAX_RANGES )
        ++
rangoid];
        
    if(
rangoid] > lvl )
    {
        new 
name[32]; get_user_name(idname31);
        
Color_Printid"^1Felicidades, subistes al Rango: ^4%s"Rangos[rangoid] ] );
        
    }
    
    
Vault(idGUARDAR);
}

public 
set_castigo(id)
{    
    
set_hudmessage(255850, -1.0, -1.016.012.0);
    
show_hudmessage(id"¡Free Kill, Tené Cuidado!");
    
    
set_user_health(idget_user_health(id) - 50);
    
    
Set_user_screenfade(id255002100);
    
    
shake_user_screen(id);
    
}
public 
karma_ban(id)
{
    if(
ttt_get_playerdata(id,PD_KARMA) <= 400)
    {
    new 
szName[32];
    
get_user_name(idszName31);    
    
server_cmd("amx_banip ^"%s^" ^"10^" ^"Karma negavito (-400)^""szName);
    }
    
    return 
PLUGIN_HANDLED;
}


/***********************************************************************/
/* MENUS */
/**********************************************************************/

public cmd_menuid )
{
    if(!
is_user_admin(id)) 
    {
    
Color_Print(id"Para abrir la tienda ^4VIP^1 debes ser ^4Admin^1 o ^4Premium^1"); 
    return;
    }
    
    if( !
is_user_alive(id)) 
        
Color_Print(id"Tenes que estar vivo para comprar armas ^4VIP^1");
        
    new 
menu menu_create"\r[AMXX ES]\w Tienda de Armamento \yVIP""menu_armas" );
    
    
menu_additemmenu"Armas Primarias""1" );
    
menu_additemmenu"Armas Secundarias""2" );
    
    
menu_setprop(menuMPROP_NEXTNAME"Siguiente");
    
menu_setprop(menuMPROP_BACKNAME"Atras");
    
menu_setprop(menuMPROP_EXITNAME"Salir");
    
menu_display(idmenu0)  ;
}
public 
menu_armasidmenuitem )
{
    if(
item == MENU_EXIT )
    {
        
menu_destroymenu );
        return 
PLUGIN_HANDLED;
    }
    
    switch ( 
item )
    {
        case 
0PriMenuid );
        case 
1SecMenuid );
    }
    
    
menu_destroymenu );
    return 
PLUGIN_HANDLED;
}
public 
PriMenu(id)
{
    new 
iwpn[50], menu menu_create"\r[AMXX ES]\w Tienda de Armamento Primario \yVIP""menu_pri" );
    
    for( 
0sizeof WeaponPri ; ++)
    {
        if(  
puntosA[id]  >= WeaponPri][ WPN_COST ])
        {
            
formatexwpncharsmax(wpn), "\w%s [ \y%d Puntos\w ]"WeaponPri][ WPN_NAME ], WeaponPri][ WPN_COST ] );
            
menu_additemmenuwpn"");
        }
        else
        {
            
formatexwpncharsmax(wpn), "\d%s [ \r%d Puntos\d ]"WeaponPri][ WPN_NAME ], WeaponPri][ WPN_COST ] );
            
menu_additemmenuwpn"" );
        }
    }
    
    
menu_setprop(menuMPROP_NEXTNAME"Siguiente");
    
menu_setprop(menuMPROP_BACKNAME"Atras");
    
menu_setprop(menuMPROP_EXITNAME"Salir");
    
menu_display(idmenu0)  ;
}

public 
SecMenu(id )
{
    new 
iwpn[50], menu menu_create"\r[AMXX ES]\w Tienda de Armamento Secundario \yVIP""menu_sec" );
    
    for( 
0sizeof WeaponSec ; ++)
    {
        if( 
puntosA[id] >= WeaponSec][ WPN_COST ])
        {
            
formatexwpncharsmax(wpn), "\w%s [ \y%d Puntos\w ]"WeaponSec][ WPN_NAME ], WeaponSec][ WPN_COST ] );
            
menu_additemmenuwpn"");
        }
        else
        {
            
formatexwpncharsmax(wpn), "\d%s [ \r%d Puntos\d ]"WeaponSec][ WPN_NAME ], WeaponSec][ WPN_COST ] );
            
menu_additemmenuwpn"" );
        }
    }
    
    
menu_setprop(menuMPROP_NEXTNAME"Siguiente");
    
menu_setprop(menuMPROP_BACKNAME"Atras");
    
menu_setprop(menuMPROP_EXITNAME"Salir");
    
menu_display(idmenu0)  ;
    
}
public 
menu_secidmenuitem )
{
    if(
item == MENU_EXIT )
    {
        
menu_destroymenu );
        return 
PLUGIN_HANDLED;
    }
    
    if( 
puntosA[id]  < WeaponSecitem ][ WPN_COST ])
    {
        
Color_Printid"^1No tienes suficientes puntos");
        
cmd_menu(id);
        return 
PLUGIN_HANDLED;
    }
    
    
give_itemidWeaponSecitem ][ WPN_ENT ]);
    
cs_set_user_bpammoidWeaponSecitem ][ WPN_CSW ], 999 );
    
    
puntosA[id] -= WeaponSecitem ][ WPN_COST ];
    
    
Color_Print(id,"^1Comprastes una ^4%s^1 de la tienda de armamento",WeaponSec[item][WPN_NAME]);

    
menu_destroymenu );
    return 
PLUGIN_HANDLED;
}
public 
menu_priidmenuitem )
{
    if(
item == MENU_EXIT )
    {
        
menu_destroymenu );
        return 
PLUGIN_HANDLED;
    }
    
    if( 
puntosA[id] < WeaponPriitem ][ WPN_COST ])
    {
        
Color_Print(id"^1No tienes suficientes puntos");
        
cmd_menu(id);
        return 
PLUGIN_HANDLED;
    }
    
    
give_itemidWeaponPriitem ][ WPN_ENT ]);
    
    
cs_set_user_bpammoidWeaponPriitem ][ WPN_CSW ], 999 );
    
    
puntosA[id] -= WeaponPriitem ][ WPN_COST ];
    
    
Color_Print(id,"^1Comprastes una ^4%s^1 de la tienda de armamento",WeaponPri[item][WPN_NAME]);
    
    
menu_destroymenu );
    return 
PLUGIN_HANDLED;
}

public 
TopRangos(id) {
    new 
Titulo[1026], TopszId[33], Nombre[32], rankNamerankIdrankFkmenui;
    
    
menu menu_create("\r[ AMXX ES]\w Top \y15 \wRangos""HandlerRangosTop");
    
Top min(adv_vault_sort_numresult(g_vaultg_sort), 15);
    
    
    for(
1<= Topi++) {
        
rankId adv_vault_sort_position(g_vaultg_sorti);
        
        if(!
adv_vault_get_prepare(g_vaultrankId""))
            continue;
        
        
adv_vault_get_keyname(g_vaultrankIdNombrecharsmax(Nombre));
        

        
rankFk adv_vault_get_field(g_vaultg_campo[RKS]);
        
rankName adv_vault_get_field(g_vaultg_campo[RANGO]);
        
        
formatex(Titulocharsmax(Titulo), "\y%s \wRango: \y%s \wFks: \r%d"NombreRangos[rankName], rankFk);
        
formatex(szIdcharsmax(szId), "%s",  Nombre);
                
        
menu_additem(menu,  TituloszId0);
    }
    
menu_setprop(menuMPROP_NEXTNAME"Siguiente");
    
menu_setprop(menuMPROP_BACKNAME"Atras");
    
menu_setprop(menuMPROP_EXITNAME"Salir");
    
menu_display(idmenu0)  ;
}

public 
HandlerRangosTop(idmenuitem)
{
    if(
item == MENU_EXIT) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    new 
iAccesscallback;
    new 
szData[64], szName[64];
    
menu_item_getinfo(menuitemiAccessszDatasizeof(szData), szNamesizeof(szName), callback);
    

    
Estadisticas(idszData);
    
    return 
PLUGIN_HANDLED;
}

Estadisticas(idNOMBRE[])
{
    new 
Texto[192], menuposrankNamerankFkrankExp;
    
pos adv_vault_sort_key(g_vaultg_sort0NOMBRE);
    
    if(!
adv_vault_get_prepare(g_vault0NOMBRE))
        return;
    
    
rankName adv_vault_get_field(g_vaultg_campo[RANGO]);
    
rankFk adv_vault_get_field(g_vaultg_campo[RKS]);
    
rankExp adv_vault_get_field(g_vaultg_campo[EXP]);
    
    
formatex(Textocharsmax(Texto), "\r[AMXX ES]\w Estadisticas^n\r•\w Nombre: \y%s^n\r•\w Posición: \y#%d"NOMBREpos);
    
menu menu_create(Texto"HandlerEstadisticas");
    
    
formatex(Textocharsmax(Texto), "\r•\w Free Kills: \r%d"rankFk);
    
menu_additem(menuTexto"1");

    
formatex(Textocharsmax(Texto), "\r•\w Experiencia: \y%d"rankExp);
    
menu_additem(menuTexto"2");

    
formatex(Textocharsmax(Texto), "\r•\w Rango: \y%s"Rangos[rankName]);
    
menu_additem(menuTexto"3");

    
formatex(Textocharsmax(Texto), "\r•\w Siguiente Rango: \d%s"Rangos[rankName+1]);
    
menu_additem(menuTexto"4");

    
menu_setprop(menuMPROP_NEXTNAME"Siguiente");
    
menu_setprop(menuMPROP_BACKNAME"Atras");
    
menu_setprop(menuMPROP_EXITNAME"Salir");
    
menu_display(idmenu0)  ;
}

public 
HandlerEstadisticas(idmenuitem)
    
menu_destroy(menu);

/**************************************************************************************/
public lev_RoundEnd()
{
    
get_happytime();
    
    for(new 
1<= maxplayers; ++i)
    {
        if(!
is_user_connected(i)) continue;
        
        
Vault(iGUARDAR);
    }
}
Gananciaid )
{
    if( 
is_user_admin(id))
    {
        if(
happyhours)
        {
            
Ganancias[id] = 5;
        }
        else
        {
            
Ganancias[id] = 3;
        }
    }
    else
    {
        if(
happyhours)
        {
            
Ganancias[id] = 3;
        }
        else
        {
            
Ganancias[id] = 2;
        }
    }
}

get_happytime()
{
    
happyhours false;
    
    static 
timeh[3], hourid;
    
get_time("%H"timehcharsmax(timeh));
    
    for(
hour 0hour sizeof Happy_Hour_Time; ++hour
    {
        if(
equal(timehHappy_Hour_Time[hour])) 
            
happyhours true;
            
    }
    
    for(
id 1id <= maxplayers; ++id)
    {
        if(!
is_user_connected(id)) return;
        
        
Ganancia(id);
    }
}

public 
hhhours(id)
{
    
Color_Print(id,"La Happy'Hours esta en modo: ^4%s^1, por lo cual la ganancia es ^4x%d^1 de ^4EXP^1!",happyhours"Activado" "Desactivado",Ganancias[id]);
}

public 
msg_sayid )
{
    static 
said[191];
    
read_args(saidcharsmax(said)); remove_quotes(said); trim(said);
    
replace_all(saidcharsmax(said), "%"""); replace_all(saidcharsmax(said), "#""");
    
    if (!
ValidMessage(said1)) return PLUGIN_CONTINUE;
    
    if(
equal(said"/top") || equal(said"/top15") || equal(said"/top10"))
        
TopRangos(id);
        
    if(
equal(said"/stats") || equal(said"/rank") || equal(said"/estadisticas"))    
        
Estadisticas(idg_playername[id]);
        
    
register_concmd("rango_top""TopRangos");
    
    
    static 
color[11], prefix[91];

    
get_user_team(idcolorcharsmax(color));
    
    
formatex(prefixcharsmax(prefix), "%s^1[ ^4%s^1 ]^3 %s"is_user_alive(id)?"":"^1*MUERTO* "Rangosrangoid ]], g_playername[id]);
    
     
    if (
is_user_admin(id)) format(saidcharsmax(said), "^x04%s"said);
    
    
format(saidcharsmax(said), "%s^1 : ^1%s"prefixsaid);
    
    static 
iteam[11];
    
    for (
1<=  maxplayers; ++i)
    {
        if (!
is_user_connected)) continue;

        if (
is_user_aliveid) && is_user_alive) || !is_user_aliveid ) && !is_user_alive))
        {
            
get_user_team(iteamcharsmax(color));
            
changeTeamInfo(icolor);
            
writeMessage(isaid);
            
changeTeamInfo(iteam);
        }
    }
    
log_to_file"Admin_System_Log_Say.txt""[CHAT GENERAL] %s^n-------------------------------------^n"said );
    return 
PLUGIN_HANDLED_MAIN;
}

public 
changeTeamInfo(playerteam[])
{
    
message_begin(MSG_ONE,teaminfo_player);
    
write_byte(player);
    
write_string(team);
    
message_end();
}

public 
writeMessage(playermessage[])
{
    
message_begin(MSG_ONEsaytex, {000}, player);
    
write_byte(player);
    
write_string(message);
    
message_end();
}

stock ValidMessage(text[], maxcount
{
    static 
lenicount;
    
len strlen(text);
    
count 0;
    
    if (!
len) return false;
    
    for (
0len; ++i
    {
        if (
text[i] != ' '
        {
            ++
count;
            
            if (
count >= maxcount)
                return 
true;
        }
    }
    
    return 
false;



stock Color_Print(const id, const input[], any:...)
{    
    new 
count 1players[32];
    static 
msg[191], len;
    
    
len formatex(msgcharsmax(msg), "%s "PluginInfoJD[3]);
    
vformat(msg[len], 190 leninput3);
    
    
replace_all(msg190"!g""^4");
    
replace_all(msg190"!n""^1");
    
replace_all(msg190"!t""^3");
    
    
    if(
id
        
players[0] = id;
    else 
        
get_players(playerscount"ch");
             
    for (new 
0count; ++i)
        if(
is_user_connected(players[i]))
        {
    {
            
message_begin(MSG_ONE_UNRELIABLEsaytex_players[i]);  
            
write_byte(players[i]);
            
write_string(msg);
            
message_end();                
        }        
    }

}

public 
Set_user_screenfade(indexrrrgggbbbduracionalpha)
{
    
message_beginindex MSG_ONE_UNRELIABLE MSG_BROADCASTscreefade_index );
    
write_shortduracion 4096 );
    
write_shortduracion 4096 );
    
write_short0x0000 );
    
write_byterrr ); 
    
write_byteggg );
    
write_bytebbb ); 
    
write_bytealpha );
    
message_end( );    
}
stock shake_user_screen(index)
{
    
message_begin(MSG_ONEget_user_msgid("ScreenShake"), {0,0,0}, index); // Shake Screen
    
write_short(1<<14);
    
write_short(1<<14);
    
write_short(1<<14);
    
message_end();

Whatever
Responder
#4
y si quiero que le salga a todos el menu como lo hago ?


porque se supone que todos tendran el rangos y puntos

lo que me gusto es esto si alguien puede juntar estos cod para hacer un plugins


que salgan todas esas armas en menu sin precio
Código PHP:
new const WeaponPri[ ][ WPN ] =
{
    
///name - weaponid --- weaponCSW -- weapon price    
    
"M3 Super""weapon_m3"CSW_M325 },
    { 
"Mp5 Navy""weapon_mp5navy"CSW_MP5NAVY25},
    { 
"Famas""weapon_famas"CSW_FAMAS25},
    { 
"Galil""weapon_galil"CSW_GALIL25 },
    { 
"AUG""weapon_aug"CSW_AUG50 },
    { 
"SG - 552""weapon_sg552"CSW_SG55220},
    { 
"M4A1""weapon_m4a1"CSW_M4A1100 },
    { 
"AK - 47 Kalashnikov""weapon_ak47"CSW_AK47100},
    { 
"SG - 550""weapon_sg550"CSW_SG550100 },
    
//{ "G3SG1", "weapon_sg3sg1", CSW_G3SG1, 100},
    
"M249 - Machine Gun""weapon_m249"CSW_M249,100 }    
};

new const 
WeaponSec[ ][ WPN ] = 
{
    { 
"Glock""weapon_glock18"CSW_GLOCK18},  
    { 
"P228""weapon_p228",  CSW_P228},
    { 
"Deagle""weapon_deagle"CSW_DEAGLE10 },
    { 
"Fiveseven""weapon_fiveseven"CSW_FIVESEVEN},
    { 
"Dual Elite""weapon_elite"CSW_ELITE}
}; 

que se pueda abrir solo para los admin o vip el menu
Código PHP:
register_clcmd("say /armas""cmd_menu"

que salga esto al abrir menu
[php]
public 
cmd_menuid )
{
    if(!
is_user_admin(id)) 
    {
    
Color_Print(id"Para abrir la tienda ^4VIP^1 debes ser ^4Admin^1 o ^4Premium^1"); 
    return;
    }
    
    if( !
is_user_alive(id)) 
        
Color_Print(id"Tenes que estar vivo para comprar armas ^4VIP^1");
        
    new 
menu menu_create"\r[AMXX ES]\w Tienda de Armamento \yVIP""menu_armas" );
    
    
menu_additemmenu"Armas Primarias""1" );
    
menu_additemmenu"Armas Secundarias""2" );
    
    
menu_setprop(menuMPROP_NEXTNAME"Siguiente");
    
menu_setprop(menuMPROP_BACKNAME"Atras");
    
menu_setprop(menuMPROP_EXITNAME"Salir");
    
menu_display(idmenu0)  ;


si alguien puede hacer un plugins con estos codigos para tener un menu de armas para los admin

para evitar bug solo se pueda elijar 1 armas primeria y una segundaria por ronda
que no se pueda abrir el menu despues de pasar la ronda [solo abra una vez por ronda]
que solo abra para los admin


saludos
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)