06/03/2019, 01:07 PM
(Última modificación: 07/03/2019, 01:21 PM por Reverant. Edited 1 time in total.)
Código PHP:
#include <amxmodx>
#include <fakemeta> // detectar el evento, y manipulacion de offsets
#include <engine> // obtener el index de la ak-47
#include <xs> // uso de vectores.
// Con esta variable obtendremos el index de la forward FM_PrecacheEvent para despues en el init
// deje de ser llamada, ya que sera llamada en el Precache (antes del init, cuando empiesa el server
// despues de un cambio de mapa).
new g_iForwardIndex
// En esta variable se guardaran los maxPlayers del Server
new g_iMaxPlayers
// Aqui se guardara el index del evento en el cual la AK-47 es disparada
new g_iGunFireEventBitsum_Ak47
// Este es el nombre del evento cuando el arma dispara, el cual esta guardado en la carpeta events
new const g_szGunEvent_AK47[] = "events/ak47.sc"
// Estos son los offsets que se usaran con fakemeta para manipularlos.
const m_flNextPrimaryAttack = 46 // siguente valor para el ataque primario
const m_flNextSecondaryAttack = 47 // siguiente valor para el ataque segundario (sea zoom, o burst-fire, whatever)
const m_flTimeWeaponIdle = 48 // delay del arma, actualmente al uso de la animacion idle, y cuando un arma termina de recargar.
// Precache
public plugin_precache()
{
// Guardamos el ID y registramos la forward en el cual los eventos son pre-cacheados.
g_iForwardIndex = register_forward(FM_PrecacheEvent, "fw_PrecacheEvent_Post", 1)
// PrecacheEvent Post.
}
// Cuando los eventos son pre-cacheados.
public fw_PrecacheEvent_Post(type, const szName[])
{
// El nombre del evento equivale al del ataque de la ak-47?
if (equal(szName, g_szGunEvent_AK47))
{
// Guardamos el id del ataque en un bitsum. Por ende necesitamos obtener
// el valor original del evento, para eso se usa "get_orig_retval" que solamente
// funciona en forwards que son llamadas despues de lo real, osea, Post
g_iGunFireEventBitsum_Ak47 |= (1<<get_orig_retval())
// Devolviendo el valor con FMRES_HANDLED estamos diciendole al modulo
// que "hicimos algo".
return FMRES_HANDLED
}
return FMRES_IGNORED
}
// Despues del init, cuando el mapa empiesa a ponerse de pie
public plugin_init()
{
// info del plugin
register_plugin("Custom Fire-Rate for AK-47", "1.0", "meTaLiCroSS")
// Desactivamos la forward para que deje de ser llamada.
unregister_forward(FM_PrecacheEvent, g_iForwardIndex, 1)
// Registramos la forward en el cual "un evento" es llamado.
register_forward(FM_PlaybackEvent, "fw_PlaybackEvent")
g_iMaxPlayers = get_maxplayers()
}
// Vean atras :P
// flags = los flags del evento, si supiera se los diria
// invoker = la entidad que iso llamar el evento
// eventid = el index del evento
public fw_PlaybackEvent(flags, invoker, eventid)
{
// No es el evento del cual dispara la AK-47? (mediante bitsums)
if (!(g_iGunFireEventBitsum_Ak47 & (1<<eventid)))
return FMRES_IGNORED
// El invocador no esta en el rango "1-32(by default)", osea, es un player?
if(!(1 <= invoker <= g_iMaxPlayers))
return FMRES_IGNORED
// Aqui esta el evento en el cual es el arma disparada por un player, en este caso
// la AK-47. Este evento es llamado "despues", osea, "post" al original, asi que
// perfectamente podremos obtener los datos actuales del player.
// Obtenemos el index de la AK el cual el user esta obteniendo, para eso usamos find_ent_by_owner
// el cual busca una entidad en otra entidad con el classname indicado. en este caso es "weapon_ak47".
static iAK47_WeaponIndex
iAK47_WeaponIndex = find_ent_by_owner(-1, "weapon_ak47", invoker)
// Ahora podemos perfectamente manipular el tiempo en el cual sea disparado.
set_pdata_float(iAK47_WeaponIndex, m_flNextPrimaryAttack, 1.0, 4)
set_pdata_float(iAK47_WeaponIndex, m_flNextSecondaryAttack, 1.0, 4)
set_pdata_float(iAK47_WeaponIndex, m_flTimeWeaponIdle, 1.0, 4)
// iAK47_WeaponIndex = el index de la entidad al cual modificaremos sus offsets
// m_fl* = el nombre del offset o integer del offset, whatever
// 1.0 = el valor en el cual sera el proximo ataque, en este caso la ak atacaria cada 1 segundo, perfectamente puede ser modificado.
// 4 = es el "linuxdiff" de las "armas", lo por casos obvio y que para mi son desconosidos son exclusivamente para armas. (5 = players)
// Como este evento es llamado "despues" que un arma ataque, no habria problemas con
// otros valores.
// Devolviendo el valor con FMRES_HANDLED estamos diciendole al modulo
// que "hicimos algo".
return FMRES_HANDLED
}
Es posible utilizar este tut de aumentar la velocidad de disparo, como si fuera un enum con varias ak-47?
Es posible implementarlo en este plugin de sambuseti?
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <safemenu>
#define PLUGIN "Mejorame :D"
#define VERSION "1.0"
#define AUTHOR "Sambuseti"
#define porcentaje(%1,%2,%3) (%1 * %3) / %2 // Porcentaje de cuanto tiene
enum {
FM_CS_TEAM_UNASSIGNED = 0,
FM_CS_TEAM_T,
FM_CS_TEAM_CT,
FM_CS_TEAM_SPECTATOR
};
enum
{
_KNIFE = 0,
_M3,
_XM1014,
_TMP,
_MAC10,
_MP5NAVY,
_UMP45,
_P90,
_GALIL,
_FAMAS,
_AK47,
_SCOUT,
_M4A1,
_SG552,
_AUG,
_SG550,
_AWP,
_G3SG1,
_M249,
_GLOCK18,
_USP,
_P228,
_DEAGLE,
_FIVESEVEN,
_ELITE,
TOTAL_ITENMENU
}
new const menu_Armas[][] =
{
// ---Cuchillo--
"Cuchillo",
// ---Armas Primarias--
// *Escopetas*
"Benelli M3 Super 90",
"Benelli XM1014",
// *Subfusiles*
"Steyr TMP",
"Ingram MAC-10",
"Heckler & Koch MP5",
"Heckler & Koch UMP",
"FN P90",
// *Fusiles y rifles*
"IMI Galil",
"FAMAS",
"AK-47",
"Steyr Scout",
"Colt M4A1 Carbine",
"SIG SG-552",
"Steyr AUG A1",
"SIG SG-550",
"AWP",
"Heckler & Koch G3",
"Ametralladora FN M249",
// ---Pistolas---
"Glock 18C",
"Heckler & Koch USP .45 Tactical",
"SIG-Sauer P228",
"IMI Desert Eagle Mark XIX .50 AE",
"FN Five-seven",
"Beretta 92"
}
new const Info_Submenu[][] =
{
// ---Cuchillo--
"Knife",
// ---Armas Primarias--
// *Escopetas*
"\rOrigen: \yItalia^n\rCapacidad del cargador: \y8 Municiónes^n\rMunición máxima de reserva:\y 32",
"\rOrigen: \yItalia^nCapacidad del cargador: \y7 Municiónes^nMunición máxima de reserva: \y32",
// *Subfusiles*
"\rOrigen: \yAustria^n\rCapacidad del cargador: \y30 Municiónes^n\rCalibre: \y9mm Parabellum",
"\rOrigen: \yEstados Unidos^n\rCapacidad del cargador: \y30 Municiónes^n\rCalibre: \y.45 ACP",
"\rOrigen: \yAlemania^n\rCapacidad del cargador: \y30 Municiónes^n\rCalibre: \y9mm",
"\rOrigen: \yAlemania^n\rCapacidad del cargador: \y25 Municiónes^n\rCalibre: \y.45 ACP ",
"\rOrigen: \yBélgica^n\rCapacidad del cargador: \y50 Municiónes^n\rCalibre: \y.338 Lapua magnum",
// *Fusiles y rifles*
"\rOrigen: \yIsrael^n\rCapacidad del cargador: \y35 Municiónes^n\rCalibre: \y5,56 mm OTAN ",
"\rOrigen: \yFrancia^n\rCapacidad del cargador: \y25 Municiónes^n\rCalibre: \y5.56 mm OTAN",
"\rOrigen: \yUnión Soviética^n\rCapacidad del cargador: \y30 Municiónes^n\rCalibre: \y7,62 mm OTAN",
"\rOrigen: \yAustria^n\rCapacidad del cargador: \y10 Municiónes^n\rCalibre: \y7,62 mm OTAN",
"\rOrigen: \yEstados Unidos^n\rCapacidad del cargador: \y30 Municiónes^n\rCalibre: \y5,56 mm OTAN^n\rFunción Especial: \ySilenciador opcional",
"\rOrigen: \ySuiza^n\rCapacidad del cargador: \y30 Municiónes^n\rCalibre: \y5,56 mm OTAN",
"\rOrigen: \yAustria^n\rCapacidad del cargador: \y30 Municiónes^n\rCalibre: \y5,56 mm",
"\rOrigen: \ySuiza^n\rCapacidad del cargador: \y30 Municiónes^n\rCalibre: \y5,56 mm OTAN",
"\rOrigen: \yReino Unido^n\rCapacidad del cargador: \y10 Municiónes^n\rCalibre: \y.338 Lapua Magnum",
"\rOrigen: \yAlemania^n\rCapacidad del cargador: \y20 Municiónes^n\rCalibre: \y7,62 mm OTAN",
"\rOrigen: \yBélgica^n\rCapacidad del cargador: \y100 Municiónes^n\rCalibre: \y5,56 mm OTAN",
// ---Pistolas---
"\rOrigen: \yAustria^n\rFabricante: \yGlock^n\rCapacidad del cargador: \y20 balas^n\rCalibre: \y9 mm^n\rFunción especial: \yModo de disparo selectivo: semiautomático o ráfagas",
"\rOrigen: \yAlemania^n\rFabricante: \yHeckler & Koch^n\rCapacidad del cargador: \y12 balas^n\rCalibre: \y.45 ACP^n\rFunción especial: \ySilenciador opcional",
"\rOrigen: \ySuiza- Alemania^n\rCapacidad del cargador: \y13 balas^n\rPeso: \y1,03 Kg^n\rCalibre: \y.357 SIG",
"\rOrigen: \yIsrael^n\rCapacidad del cargador: \y7 balas^n\rPeso: \y1,8 Kg^n\rCalibre: \y.50 Action Express",
"\rOrigen: \yBélgica^n\rCapacidad del cargador: \y20^n\rCalibre: \y5.7 ",
"\rOrigen: \yItalia^n\rCapacidad del cargador: \y15 balas en cada una^n\rCalibre: \y19mm"
}
enum _:APDATOS
{
ANAME[32],
AITEMS[32],
AMODEL[100],
APMODEL[32],
MENU,
MUERTES,
Float:ADAMAGE
}
new const g_primary_items[64][APDATOS] =
{
// LISTADO DE KNIFE
// NAME ID VMODEL PMODEL Menu Muertes Daño Recoil 1 - 7
{"Cuchi - Default", "weapon_knife", "default", "default", _KNIFE, 0, 1.0},
{"Karambit - Doppler Phase 2", "weapon_knife", "v_knife_karambit_doppler2.mdl", "default", _KNIFE, 10, 1.0},
{"Bayonet - Tiger Tooth", "weapon_knife", "v_knife_bayonet_tiger.mdl", "default", _KNIFE, 50, 1.0},
{"Bayonet - Marble Fade", "weapon_knife", "v_knife_bayonet_marble.mdl", "default", _KNIFE, 125, 1.0},
{"Karambit - Tiger Tooth", "weapon_knife", "v_knife_karambit_tiger.mdl", "default", _KNIFE, 175, 1.0},
{"Bayonet - Slaughter", "weapon_knife", "v_knife_bayonet_slaughter.mdl", "default", _KNIFE, 250, 1.0},
{"Falchion Doppler Phase 4", "weapon_knife", "v_knife_falchion_doppler4.mdl", "default", _KNIFE, 370, 1.0},
//----------------------------------------------------------------------------------------------------------------------------------------------------------------// 7 - 14
{"Butterfly - Fade", "weapon_knife", "v_knife_butterfly_fade.mdl", "default", _KNIFE, 500, 1.0},
{"Bayonet - Crimson Web", "weapon_knife", "v_bayonet_crimson.mdl", "default", _KNIFE, 630, 1.0},
{"Falchion Fade", "weapon_knife", "v_knife_falchion_fade.mdl", "default", _KNIFE, 780, 1.0},
{"Karambit - Doppler Phase 1", "weapon_knife", "v_knife_karambit_doppler1.mdl", "default", _KNIFE, 877, 1.0},
{"Karambit - Slaughter", "weapon_knife", "v_knife_karambit_slaughter.mdl", "default", _KNIFE, 969, 1.0},
{"Huntsman - Crimson Web", "weapon_knife", "v_knife_huntsman_crimson.mdl", "default", _KNIFE, 1112, 1.0},
//----------------------------------------------------------------------------------------------------------------------------------------------------------------// 14 - 21
{"M9 - Doppler Phase 4", "weapon_knife", "v_knife_m9_doppler4.mdl", "default", _KNIFE, 1245, 1.0},
{"Daggers - Crimson Web", "weapon_knife", "v_knife_daggers_crimson.mdl", "default", _KNIFE, 1382, 1.0},
{"Butterfly - Marble Fade", "weapon_knife", "v_knife_butterfly_marblefade.mdl", "default", _KNIFE, 1437, 1.0},
{"Huntsman - Crimson Web", "weapon_knife", "v_knife_huntsman_crimson.mdl", "default", _KNIFE, 1583, 1.0},
{"Bowie - Crimson Web", "weapon_knife", "v_knife_bowie_crimson.mdl", "default", _KNIFE, 1700, 1.0},
{"Bowie - Tiger Tooth", "weapon_knife", "v_knife_bowie_tiger.mdl", "default", _KNIFE, 1869, 1.0},
{"Bayonet - Lore", "weapon_knife", "v_knife_bayonet_lore.mdl", "default", _KNIFE, 1975, 1.0},
{"Bayonet - Doppler Phase 1", "weapon_knife", "v_bayonet_doppler1.mdl", "default", _KNIFE, 2166, 1.0},
//----------------------------------------------------------------------------------------------------------------------------------------------------------------// 21 - 23
{"Karambit - Crimson Web", "weapon_knife", "v_knife_karambit_crimson.mdl", "default", _KNIFE, 2300, 1.0},
{"Bayonet - Esmerald", "weapon_knife", "v_bayoneta_esmeralda.mdl", "default", _KNIFE, 2500, 1.0},
// LISTADO DE AK47
// NAME ID VMODEL PMODEL Menu Muertes Daño Recoil 1 - 7
{"Ak-47 - Default", "weapon_ak47", "default", "default", _AK47, 0, 1.0},
{"Case Hardened", "weapon_ak47", "v_ak47_casehardened.mdl", "default", _AK47, 500, 1.0},
{"Redline", "weapon_ak47", "v_ak47_redline2.mdl", "default", _AK47, 1000, 1.0},
{"Jaguar", "weapon_ak47", "v_ak47_jaguar.mdl", "default", _AK47, 1500, 1.0},
{"Wasteland Rebel", "weapon_ak47", "v_ak47_rebel.mdl", "default", _AK47, 2000, 1.0},
{"Front Side", "weapon_ak47", "v_ak47_frontside.mdl", "default", _AK47, 3000, 1.0},
{"Vulcan", "weapon_ak47", "v_ak47_vulcan.mdl", "default", _AK47, 4000, 1.0},
//--------------------------------------------------------------------------------------------------------------------------------------------- // 7 - 11
{"Fuel Injector", "weapon_ak47", "v_ak47_finjector.mdl", "default", _AK47, 5000, 1.0},
{"Fire Serpent", "weapon_ak47", "v_ak47_fireserpent.mdl", "default", _AK47, 6000, 1.0},
{"Neon Revolution", "weapon_ak47", "v_ak47_neonr.mdl", "default", _AK47, 50000, 1.0},
{"Aquamarine", "weapon_ak47", "v_ak47_aquamarine.mdl", "default", _AK47, 50000, 1.0},
// LISTADO DE AWP
// NAME ID VMODEL PMODEL Menu Muertes Daño Recoil 1 - 7
{"Awp - Default", "weapon_awp", "default", "default", _AWP, 0, 1.0},
{"Boom", "weapon_awp", "v_awp_boom.mdl", "default", _AWP, 500, 1.0},
{"Lighting", "weapon_awp", "v_awp_lightningstrike.mdl", "default", _AWP, 750, 1.0},
{"Asiimov", "weapon_awp", "v_awp_boom.mdl", "default", _AWP, 1000, 1.0},
{"Dragon Lore", "weapon_awp", "v_awp_dragonlore.mdl", "default", _AWP, 2500, 1.0},
{"Tiger Tooth", "weapon_awp", "v_awp_tigertooth.mdl", "default", _AWP, 1500, 1.0},
// LISTADO DE M4A1
// NAME ID VMODEL PMODEL Menu Muertes Daño Recoil 1 - 7
{"M4a1 - Default", "weapon_m4a1", "default", "default", _M4A1, 0, 1.0},
{"Red Tape", "weapon_m4a1", "v_m4a1_redtape.mdl", "default", _M4A1, 500, 1.0},
{"Guardian", "weapon_m4a1", "v_m4a1_guardian2.mdl", "default", _M4A1, 1000, 1.0},
{"Cyrex", "weapon_m4a1", "v_m4a1_cyrex.mdl", "default", _M4A1, 1500, 1.0},
{"Condor", "weapon_m4a1", "v_m4a1_condor.mdl", "default", _M4A1, 2000, 1.0},
{"Icarus", "weapon_m4a1", "v_m4a1_icarus1.mdl", "default", _M4A1, 3000, 1.0},
{"Masterpiece", "weapon_m4a1", "v_m4a1_masterpiece2.mdl", "default", _M4A1, 4000, 1.0},
//--------------------------------------------------------------------------------------------------------------------------------------------- // 7 - 8
{"Howl", "weapon_m4a1", "v_m4a1_howl.mdl", "default", _M4A1, 50000, 1.0},
//LISTADO DE GLOCK
// NAME ID VMODEL PMODEL Menu && CSW Muertes Daño Recoil 1 - 7
{"Glock - Default", "weapon_glock18", "default", "default", _GLOCK18, 0, 1.0},
{"Candy Apple", "weapon_glock18", "v_glock18_candyapple.mdl", "default", _GLOCK18, 500, 1.0},
{"Vulcan", "weapon_glock18", "v_glock18_vulcan.mdl", "default", _GLOCK18, 1000, 1.0},
{"Water Element", "weapon_glock18", "v_glock18_element.mdl", "default", _GLOCK18, 1500, 1.0},
{"Fade", "weapon_glock18", "v_glock18_fade.mdl", "default", _GLOCK18, 2000, 1.0},
//LISTADO DE USP
// NAME ID VMODEL PMODEL Menu Muertes Daño Recoil 1 - 7
{"USP - Default", "weapon_usp", "default", "default", _USP, 0, 1.0},
{"Guardian", "weapon_usp", "v_usp_guardian.mdl", "default", _USP, 500, 1.0},
{"Caiman", "weapon_usp", "v_usp_caiman.mdl", "default", _USP, 1000, 1.0},
{"Condor", "weapon_usp", "v_usp_condor.mdl", "default", _USP, 1500, 1.0},
{"Orion", "weapon_usp", "v_usp_orion.mdl", "default", _USP, 2000, 1.0},
//LISTADO DE DEAGLE
// NAME ID VMODEL PMODEL Menu Muertes Daño Recoil 1 - 7
{"Deagle - Default", "weapon_deagle", "default", "default", _DEAGLE, 0, 1.0},
{"Conspiracy", "weapon_deagle", "v_deagle_conspiracy.mdl", "default", _DEAGLE, 500, 1.0},
{"Black & Red", "weapon_deagle", "v_deagle_blackred.mdl", "default", _DEAGLE, 1000, 1.0},
{"Blaze", "weapon_deagle", "v_deagle_blaze.mdl", "default", _DEAGLE, 1500, 1.0},
{"Fire Elemental", "weapon_deagle", "v_deagle_alexandria.mdl", "default", _DEAGLE, 2000, 1.0},
{"Alexandria", "weapon_deagle", "v_deagle_alexandria.mdl", "default", _DEAGLE, 50000, 1.0}
}
new g_menuitem[ 33 ], g_armas[ 33 ][ sizeof g_primary_items ], g_armaselec[ 33 ][ TOTAL_ITENMENU ];
// contemos juntos
new finis_weapon_tipe[33][ TOTAL_ITENMENU ], g_total_weapon_tipe[33][ TOTAL_ITENMENU ], num_defaul_weapon[33][ TOTAL_ITENMENU ]
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("chooseteam", "clcmd__ChangeTeam");
register_clcmd("jointeam", "clcmd__ChangeTeam");
}
public client_putinserver(id) {
for(new i = 0; i < sizeof(g_primary_items); ++i){
g_armas[id][i] = 0;
for(new j = 0; j < TOTAL_ITENMENU; j++){
if(g_primary_items[i][MENU] == j){
g_total_weapon_tipe[id][j]++
finis_weapon_tipe[id][j] = i
if(equal(g_primary_items[i][AMODEL], "default"))
g_armaselec[id][j] = i;
}
if(equal(g_primary_items[i][AMODEL], "default"))
num_defaul_weapon[id][j] = i
}
}
g_armaselec[id][_KNIFE] = 7;
g_armaselec[id][_AK47] = g_armaselec[id][_AK47]+5;
}
public clcmd__ChangeTeam(const id) {
if(!is_user_connected(id)) {
return PLUGIN_HANDLED;
}
new iTeam;
iTeam = fm_cs_get_user_team(id);
if(iTeam == FM_CS_TEAM_SPECTATOR || iTeam == FM_CS_TEAM_UNASSIGNED) {
return PLUGIN_CONTINUE;
}
mostar_menu_principal( id );
return PLUGIN_HANDLED;
}
// Game Menu
public mostar_menu_principal( id ){
if(!is_user_connected(id)) {
return;
}
new i
new menuid, text[ 100 ], num[ sizeof menu_Armas ];
menuid = menu_create("\r[ZP:SOLDIER]\yMejora de Armas^n^n\yEliminar enemigos^ncon el arma que deseas mejorar^n", "menu_principal");
for(i = 0; i < TOTAL_ITENMENU; i++) {
num_to_str(i, num, charsmax(num));
if(g_total_weapon_tipe[id][i] == 0){
client_print(id, print_chat, "Se Contaron %d armas en el menu de %s, por lo tanto no aparece", g_total_weapon_tipe[id][i], menu_Armas[i]);
continue;
}
formatex(text, charsmax(text), "%s \y| \wMejorado:\r %i%\y%", menu_Armas[i], porcentaje((g_armaselec[id][i]-num_defaul_weapon[id][i]), (finis_weapon_tipe[id][i]-num_defaul_weapon[id][i]), g_total_weapon_tipe[id][i]));
menu_additem(menuid,text, num);
client_print(id, print_chat, "Se Contaron %d armas en el menu de %s", g_total_weapon_tipe[id][i], menu_Armas[i]);
}
menu_setprop(menuid, MPROP_EXITNAME, "Volver");
if(pev_valid(id) == 2) {
set_pdata_int(id, 205, 0, 5);
}
ShowLocalMenu(id, menuid);
}
public menu_principal(id, menuid, item) {
if(!is_user_connected(id)) {
DestroyLocalMenu(id, menuid);
return PLUGIN_HANDLED;
}
if(item == MENU_EXIT) {
DestroyLocalMenu(id, menuid);
return PLUGIN_HANDLED;
}
new buffer[4], dummy
menu_item_getinfo(menuid, item, dummy, buffer, charsmax(buffer), _, _, dummy)
if (str_to_num(buffer) == 6) return PLUGIN_HANDLED;
g_menuitem[ id ] = str_to_num(buffer)
DestroyLocalMenu(id, menuid);
show_menu_armas( id )
return PLUGIN_HANDLED;
}
public show_menu_armas( id ) {
if(!is_user_connected(id)) {
return;
}
new menuid, text[ 200 ];
for (new i = 0; i < sizeof g_primary_items; i++){
if(g_primary_items[i][MENU] == g_menuitem[ id ]){
if(g_armaselec[id][g_menuitem[ id ]] == i){
formatex(text, charsmax(text), "\r[ZP:SOLDIER]\yMejorar \d%s^n^nProxima mejora: \w%s^n\yMuertes necesarias: \w%d", menu_Armas[g_menuitem[ id ]], g_primary_items[g_armaselec[id][g_menuitem[ id ]]+1][ANAME], g_primary_items[g_armaselec[id][g_menuitem[ id ]]+1][MUERTES])
menuid = menu_create(text, "menu_armas");
formatex(text, charsmax(text), "Mejora Actual: %s", g_primary_items[g_armaselec[id][g_menuitem[ id ]]][ANAME])
menu_additem(menuid, text, "1");
}
}
}
formatex(text, charsmax(text), "^n%s", Info_Submenu[g_menuitem[ id ]])
Acentos(text, charsmax(text))
menu_addtext(menuid, text, 1);
menu_setprop( menuid, MPROP_EXITNAME , "Volver");
if(pev_valid(id) == 2) {
set_pdata_int(id, 205, 0, 5);
}
ShowLocalMenu(id, menuid);
}
public menu_armas(id, menuid, item) {
if(!is_user_connected(id)) {
DestroyLocalMenu(id, menuid);
return PLUGIN_HANDLED;
}
if(item == MENU_EXIT) {
DestroyLocalMenu(id, menuid);
mostar_menu_principal( id )
return PLUGIN_HANDLED;
}
new buffer[4], dummy
menu_item_getinfo(menuid, item, dummy, buffer, charsmax(buffer), _, _, dummy)
DestroyLocalMenu(id, menuid);
return PLUGIN_HANDLED;
}
stock fm_cs_get_user_team(id) {
if (pev_valid(id) != 2) {
return FM_CS_TEAM_UNASSIGNED;
}
return get_pdata_int(id, 114, 5);
}
stock Acentos(szText[]= "", len = 0) {
replace_all(szText, len, "á", "á")
replace_all(szText, len, "Á", "Ã")
replace_all(szText, len, "é", "é")
replace_all(szText, len, "É", "É")
replace_all(szText, len, "í", "Ã*")
replace_all(szText, len, "Í", "Ã")
replace_all(szText, len, "ó", "ó")
replace_all(szText, len, "Ó", "Ó")
replace_all(szText, len, "ú", "ú")
replace_all(szText, len, "Ú", "Ú")
replace_all(szText, len, "ñ", "ñ")
replace_all(szText, len, "Ñ", "Ñ")
static szReturn[1024];
formatex(szReturn, charsmax(szReturn), szText);
return szReturn;
}