09/09/2019, 02:51 AM
(Última modificación: 09/09/2019, 07:03 PM por Forever123. Edited 1 time in total.)
buenas alguien me podria ayudar a como le puedo sacar la native a esto
para poder llamar el rango en otro plugin
Código PHP:
Rangos[g_rango[id]][NOMBRE]
Código PHP:
/*
ChangeLog:
1.0 = Version inicial
2.0 =
* Correccion de errores
* Cambio deathmsg por ham killed
* Reescritura parcial de codigo
* Soporte AMX 1.8.2 hasta 1.9.0
* Cvar para activar/desactivar la modificacion del chat
*/
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <adv_vault>
#if AMXX_VERSION_NUM < 183
#define client_disconnected client_disconnect
#define print_team_default 0
stock client_print_color(index, fakevar, const input[], any:...)
{
#pragma unused fakevar
static szMsg[191], g_iMsgSayText;
if(!g_iMsgSayText) g_iMsgSayText = get_user_msgid("SayText");
vformat(szMsg, 190, input, 3);
message_begin(index ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, g_iMsgSayText, .player = index);
write_byte(index ? index : 33);
write_string(szMsg);
message_end();
}
#endif
#define VERSION "2.0"
new const Web[] = "HTTPS://KIKIZON.XYZ/"; // Se Muestra en HUD
new const Prefijo[] = "^4[CS:GO] ^1"; // Prefijo en say
new const Sonido[] = "rango/up.wav"; // Sonido Rango UP
new const DataBase[] = "csgoranks"; // Nombre de la base de datos
new const CHAT_FLAG = ADMIN_KICK; // Acceso requerido para el chat de admins
enum _:DATA
{
NOMBRE[30],
FRAGS
}
new const Rangos[][DATA] =
{
{ "Sin Rango", 100 },
{ "Silver I", 200 },
{ "Silver II", 300 },
{ "Silver III", 500 },
{ "Silver IV", 700 },
{ "Silver Elite", 800 },
{ "Silver Elite Master", 900 },
{ "Gold Nova I", 1000 },
{ "Gold Nova II", 1200 },
{ "Gold Nova III", 1300 },
{ "Gold Nova Master", 1400 },
{ "Master Guardian I",1500 },
{ "Master Guardian II", 1700 },
{ "Master Guardian Elite", 1800 },
{ "Distinguished Master Guardian", 1900 },
{ "Legendary Eagle", 2000 },
{ "Legendary Eagle Master", 2100 },
{ "Supreme Master First Class", 2200 },
{ "The Global Elite", 2500 }
}
new g_rango[33], g_frags[33];
new SyncHUD, g_maxplayers, g_playername[33][32];
#define TASK_HUD 67521
#define ID_HUD (taskid - TASK_HUD)
#define is_valid_player(%0) is_user_connected(%0) || !is_user_bot(%0) || !is_user_hltv(%0)
new g_vault, g_iField_Rank, g_iField_Frags;
new cvar_Hud, cvar_knifex2, cvar_hsx2, cvar_hooksay;
public plugin_init()
{
register_plugin("Rangos CS:GO", VERSION, "kikizon / HTTPS://KIKIZON.XYZ/");
RegisterHam(Ham_Killed, "player", "ham_PlayerKilledPost", true);
register_logevent("logevent_round_end", 2, "1=Round_End");
register_clcmd("say", "message_saytext");
register_clcmd("say_team", "message_sayteam");
cvar_Hud = register_cvar("rangos_hud", "1"); // 1 - Mostrar HUD | 0 - No Mostrar
cvar_knifex2 = register_cvar("rangos_knifex2", "1"); // 1 - x2 frags con knife | 0 - ÑO :v
cvar_hsx2 = register_cvar("rangos_hsx2", "1"); // 1 - x2 frags de HeadShot | 0 - ÑO :v
cvar_hooksay = register_cvar("rangos_hooksay", "1"); // 1 - Modifica el say | 0 ÑO :v
SyncHUD = CreateHudSyncObj();
g_maxplayers = get_maxplayers();
g_vault = adv_vault_open(DataBase, false);
g_iField_Rank = adv_vault_register_field(g_vault, "RANGOS");
g_iField_Frags = adv_vault_register_field(g_vault, "FRAGS");
adv_vault_init(g_vault);
}
public plugin_precache()
{
precache_sound(Sonido);
}
public HUD(taskid)
{
new id = ID_HUD;
if (!is_user_alive(id))
id = pev(id, pev_iuser2);
if(id != ID_HUD)
{
set_hudmessage(255, 255, 255, 0.60, 0.67, 1, 6.0, 1.0);
ShowSyncHudMsg(ID_HUD, SyncHUD, "Frags: %d || Rango: %s", g_frags[id], Rangos[g_rango[id]][NOMBRE])
}
else
{
set_hudmessage(0, 255, 0, 0.0, 0.20, 1, 6.0, 1.0);
if(g_rango[id] == charsmax(Rangos))
{
ShowSyncHudMsg(
ID_HUD,
SyncHUD,
"=======================^n\
Frags: %d^n\
Rango: %s^n\
=======================^n\
TIENES EL RANGO MAXIMO!!!^n\
=======================^n\
%s",
g_frags[id],
Rangos[g_rango[id]][NOMBRE],
Web
);
}
else
{
ShowSyncHudMsg(
ID_HUD,
SyncHUD,
"=======================^n\
Frags: %d^n\
Rango: %s^n\
=======================^n\
Sig. Rango: %s^n\
Frags Restantes: %d^n\
=======================^n\
%s",
g_frags[id],
Rangos[g_rango[id]][NOMBRE],
Rangos[g_rango[id]+1][NOMBRE],
Rangos[g_rango[id]][FRAGS] - g_frags[id],
Web
);
}
}
}
public client_putinserver(id)
{
get_user_name(id, g_playername[id], 31);
g_rango[id] = g_frags[id] = 0;
Cargar(id);
if(get_pcvar_num(cvar_Hud))
set_task(1.0, "HUD", id+TASK_HUD, _, _, "b");
}
public client_disconnected(id)
{
if(is_valid_player(id))
Guardar(id);
remove_task(id+TASK_HUD)
}
public logevent_round_end()
{
static id;
for(id = 1; id <= g_maxplayers; ++id)
{
if(is_valid_player(id))
Guardar(id);
}
}
public ham_PlayerKilledPost(victim, attacker, sg)
{
if(!is_user_connected(victim) || !is_user_connected(attacker) || !attacker || attacker == victim)
return HAM_IGNORED;
SetFrags(attacker, 1);
if(get_pcvar_num(cvar_knifex2) == 1 && get_user_weapon(attacker) == CSW_KNIFE)
SetFrags(attacker, 1);
if(get_pcvar_num(cvar_hsx2) == 1 && get_pdata_int(victim, 75, 5) == HIT_HEAD)
SetFrags(attacker, 1);
return HAM_IGNORED;
}
SetFrags(index, frags)
{
g_frags[index] += frags;
static iRank; iRank = g_rango[index];
while( g_frags[index] >= Rangos[g_rango[index]][FRAGS] && g_rango[index] < charsmax(Rangos))
++g_rango[index];
if(iRank < g_rango[index])
{
client_print_color(index, print_team_default, "%s Felicidades subiste al rango: ^4%s", Prefijo, Rangos[g_rango[index]][NOMBRE]);
client_cmd(index, "spk ^"%s^"", Sonido);
}
}
public message_saytext(id)
{
if(!get_pcvar_num(cvar_hooksay))
return PLUGIN_CONTINUE;
static said[192]; read_args(said, charsmax(said)); remove_quotes(said);
if (said[0] == '@' || said[0] == '%' || said[0] == '/' || said[0] == '.' || said[0] == '!' || equal (said, ""))
return PLUGIN_HANDLED;
if (!ValidMessage(said, 1)) return PLUGIN_CONTINUE;
static color[11], i, team[11];
get_user_team(id,color,charsmax(color));
if(get_user_flags(id) & CHAT_FLAG)
{
format(said, charsmax(said), "^x01%s^x04%s ^x03%s ^x01: ^x04%s",
is_user_alive(id) ? "" : "[MUERTO]",
Rangos[g_rango[id]][NOMBRE],
g_playername[id],
said);
}
else
{
format(said, charsmax(said), "^x01%s^04%s ^x03%s ^x01: %s",
is_user_alive(id) ? "" : "[MUERTO]",
Rangos[g_rango[id]][NOMBRE],
g_playername[id],
said);
}
for (i = 1; i <= g_maxplayers; i++)
{
if (!is_user_connected(i)) continue;
if(get_user_flags(i) & CHAT_FLAG || is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i))
{
get_user_team(i, team, charsmax(team));
changeTeamInfo(i, color);
writeMessage(i, said);
changeTeamInfo(i, team);
}
}
return PLUGIN_HANDLED_MAIN;
}
public message_sayteam(id)
{
if(!get_pcvar_num(cvar_hooksay))
return PLUGIN_CONTINUE;
static said[192]; read_args(said, charsmax(said)); remove_quotes(said);
if (said[0] == '@' || said[0] == '%' || said[0] == '/' || said[0] == '.' || said[0] == '!' || equal (said, ""))
return PLUGIN_HANDLED;
if (!ValidMessage(said, 1)) return PLUGIN_CONTINUE;
static playerTeam, playerTeamName[19]; playerTeam = get_user_team(id);
switch (playerTeam)
{
case 1: copy (playerTeamName, 6, "TE")
case 2: copy (playerTeamName, 8, "CT")
default: copy (playerTeamName, 11, "SPEC")
}
static color[11], i, team[11];
get_user_team(id,color,charsmax(color));
if (get_user_flags(id) & CHAT_FLAG)
{
format(said, charsmax(said), "^x01%s [ %s ] ^x04%s ^x03%s ^x01: ^x04%s",
is_user_alive(id) ? "" : "[MUERTO]",
playerTeam,
Rangos[g_rango[id]],
g_playername[id],
said);
}
else
{
format(said, charsmax(said), "^x01%s [ %s ] ^04%s ^x03%s ^x01: %s",
is_user_alive(id) ? "" : "[MUERTO]",
playerTeam,
Rangos[g_rango[id]],
g_playername[id],
said);
}
for (i = 1; i <= g_maxplayers; i++)
{
if (!is_user_connected(i)) continue;
if (get_user_team(i) == playerTeam || get_user_flags(i) & CHAT_FLAG)
{
if (is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i))
{
get_user_team(i, team, charsmax(team));
changeTeamInfo(i, color);
writeMessage(i, said);
changeTeamInfo(i, team);
}
}
}
return PLUGIN_HANDLED_MAIN;
}
public changeTeamInfo(player, team[])
{
static g_msgTeamInfo;
if(!g_msgTeamInfo) g_msgTeamInfo = get_user_msgid("TeamInfo");
message_begin(MSG_ONE, g_msgTeamInfo, _, player);
write_byte(player);
write_string(team);
message_end();
}
public writeMessage(player, message[])
{
static g_msgSayText;
if(!g_msgSayText) g_msgSayText = get_user_msgid("SayText");
message_begin(MSG_ONE, g_msgSayText, {0, 0, 0}, player);
write_byte(player);
write_string(message);
message_end();
}
Guardar(id)
{
adv_vault_set_start(g_vault);
adv_vault_set_field(g_vault, g_iField_Rank, g_rango[id]);
adv_vault_set_field(g_vault, g_iField_Frags, g_frags[id]);
adv_vault_set_end(g_vault, 0, g_playername[id]);
}
Cargar(id)
{
if(!adv_vault_get_prepare(g_vault, _, g_playername[id]))
return;
g_rango[id] = adv_vault_get_field(g_vault, g_iField_Rank);
g_frags[id] = adv_vault_get_field(g_vault, g_iField_Frags);
}
stock ValidMessage(text[], maxcount)
{
static len, i, count; len = strlen(text);count = 0;
if (!len) return false;
for (i = 0; i < len; i++)
{
if (text[i] != ' ')
{
count++;
if (count >= maxcount) return true;
}
}
return false;
}