27/12/2022, 01:11 PM
(Última modificación: 27/12/2022, 03:14 PM por Jesusar1006. Edited 2 times in total.)
Hola otra vez yo , vine para ver si alguien me puede ayudar con mi siguiente error con estos rangos
uso estos rangos que aporto CARNAGE
el plugin copila bien pero al iniciar el servidor no funciona y en los logs muestra esto
failed to load: Plugin uses an unknown function (name "geoip_country_ex") - check your modules.ini.
muchas gracias al que me pueda ayudar.
uso estos rangos que aporto CARNAGE
Código PHP:
#include < adv_vault >
#include < amxmisc >
#include < amxmodx >
#include < cstrike >
#include < fakemeta>
#include < fun>
#include < hamsandwich >
#include < jctf >
#include < geoip >
new const g_iPrefix[] = "^4AMXX|^1"
new const g_hours[] = { 20, 21, 22, 23, 00, 01, 02, 03, 04, 05, 06, 07 }
new g_iPlugin[][] =
{
"Rangos | Happy Hour | DMG ACUMULADO",
"2.3b",
"AMXMODX-ES" // m0skVi4a ;] Admin Prefixes ---
}
#define Sonido "Carpeta/LevelUp.wav"
#define DataBase "Data_Base"
#define FLAG_LOAD ADMIN_CFG
#define MAX_PREFIXES 33
#define MAX_BAD_PREFIXES 100
enum _:DATA
{
NOMBRE[33],
FRAGS
}
new const Rangos[][DATA] =
{
{ "Sin Rangos",1 },
{ "Recluta", 50 },
{ "Principiante",250 },
{ "Cabo", 1000 },
{ "Cabo II", 2500 },
{ "Cabo III", 5000 },
{ "Sargento", 10000 },
{ "Sargento II", 15000 },
{ "Sargento III", 30000 },
{ "Capitan", 50000 },
{ "Teniente", 100000 },
{ "General", 250000 },
{ "General en Jefe", 500000 }
}
new const g_isHUD[][] = {
"say /hud",
"say hud",
"say_team hud",
"say_team /hud"
};
new const say_team_info[2][CsTeams][] =
{
{"^4*^3ESPECTADOR^4* ", "^4*^3MUERTO^4* ", "^4*^3MUERTO^4* ", "^4*^3ESPECTADOR^4* "},
{"", "", "", ""}
}
new const sayteam_team_info[2][CsTeams][] =
{
{"^4(^3Espectador^4)^3 ", "^4*^3Muerto^4* (^3*Rojos*^4) ", "^4*^3MUERTO^4* (^3*Azules*^4) ", "^4(^3*Espectador*^4) "},
{"^4(^3Espectador^4) ", "^4(^3*Rojos*^4) ", "^4(^3*Azules*^4) ", "^4(^3Espectador^4) "}
}
new const forbidden_say_symbols[] = {
"/",
"!",
"%",
"$"
}
new const forbidden_prefixes_symbols[] = {
"/",
"\",
"%",
"$",
".",
":",
"?",
"!",
"@",
"#",
"%"
}
new const separator[] = "============================================="
new const in_prefix[] = "[Prefix]"
new g_bad_prefix, g_listen, g_listen_flag, g_custom, g_custom_flag, g_say_characters, g_prefix_characters;
new pre_ips_count = 0, pre_names_count = 0, pre_steamids_count, pre_flags_count = 0, bad_prefix_count = 0, i, temp_cvar[2];
new configs_dir[64], file_prefixes[128], file_bad_prefixes[128], text[128], prefix[32], type[2], key[32], length, line = 0, error[256];
new g_saytxt, CsTeams:g_team;
new g_typed[192], g_message[192], g_name[32];
new Trie:pre_ips_collect, Trie:pre_names_collect, Trie:pre_steamids_collect, Trie:pre_flags_collect, Trie:bad_prefixes_collect, Trie:client_prefix;
new str_id[16], temp_key[35], temp_prefix[32], temp_value;
new bool:g_toggle[33];
new g_rango[33]
new g_frags[33]
new g_tickes[33]
new g_flag_captured[33]
new g_flag_returned[33]
new g_hud[33]
new g_danio[33]
new bool:g_happyhour
new g_playername[33][32]
new g_maxplayers
new g_iPlayerAuth[33][32]
new g_iPlayerIP[33][32]
new g_iPlayerCountry[33][64]
new motd[1536]
new SyncHUD
new g_iCreateHud
new g_iMsgStatusText
#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_sort1, g_sort2, g_iField_Rank, g_iField_Frags, g_iField_Tickes, g_iField_Flag_Captured, g_iField_Flag_Returned, g_iField_HUD, g_iField_Damage;
new cvar_Hud, cvar_minplayersflag;
public plugin_init() {
register_plugin(g_iPlugin[0], g_iPlugin[1], g_iPlugin[2])
//RegisterHam(Ham_Killed, "player", "ham_PlayerKilledPost", true);
register_event("DeathMsg", "xDeathMsg", "a", "1>0");
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage", true);
register_logevent("logevent_round_end", 2, "1=Round_End");
register_event("StatusValue", "HookShowStatus", "b", "1=2", "2>0");
register_event("StatusValue", "HookHideStatus", "b", "1=1", "2=0");
register_clcmd("say /rangos", "clcmd_rangos");
register_clcmd("say_team /rangos", "clcmd_rangos");
register_clcmd("say /topposrango", "clcmd_top_rangos");
register_clcmd("say /topposbandera", "clcmd_top_flags");
register_clcmd("say_team /topposr", "clcmd_top_rangos");
register_clcmd("say_team /topposb", "clcmd_top_flags");
register_clcmd("say /hf", "clcmd_sayhf") // para ver si es o no la hora furia
set_task(1.0, "happy_hour", .flags="b")
for(new hd = 0; hd < sizeof g_isHUD; hd++) {
register_clcmd(g_isHUD[hd], "hud");
}
register_concmd("ap_reload_prefixes", "LoadPrefixes")
register_concmd("ap_reload_badprefixes", "LoadBadPrefixes")
register_concmd("ap_put", "SetPlayerPrefix")
register_clcmd("say", "HookSay")
register_clcmd("say_team", "HookSayTeam")
cvar_Hud = register_cvar("rangos_hud", "1"); // 1 - Mostrar HUD | 0 - No Mostrar
//cvar_knifex2 = register_cvar("rangos_knifex2", "0"); // 1 - x2 frags con knife | 0 - ÑO :v
//cvar_hsx2 = register_cvar("rangos_hsx2", "0"); // 1 - x2 frags de HeadShot | 0 - ÑO :v
cvar_minplayersflag = register_cvar("rangos_minplayersflag", "4") // players para activar las banderas
SyncHUD = CreateHudSyncObj();
g_maxplayers = get_maxplayers();
g_iCreateHud = CreateHudSyncObj();
g_iMsgStatusText = get_user_msgid("StatusText");
g_bad_prefix = register_cvar("ap_bad_prefixes", "1")
g_listen = register_cvar("ap_listen", "1")
g_listen_flag = register_cvar("ap_listen_flag", "a")
g_custom = register_cvar("ap_custom_current", "1")
g_custom_flag = register_cvar("ap_custom_current_flag", "b")
g_say_characters = register_cvar("ap_say_characters", "1")
g_prefix_characters = register_cvar("ap_prefix_characters", "1")
g_saytxt = get_user_msgid ("SayText")
g_maxplayers = get_maxplayers()
pre_ips_collect = TrieCreate()
pre_names_collect = TrieCreate()
pre_steamids_collect = TrieCreate()
pre_flags_collect = TrieCreate()
bad_prefixes_collect = TrieCreate()
client_prefix = TrieCreate()
register_dictionary("admin_prefixes.txt")
get_configsdir(configs_dir, charsmax(configs_dir))
formatex(file_prefixes, charsmax(file_prefixes), "%s/ap_prefixes.ini", configs_dir)
formatex(file_bad_prefixes, charsmax(file_bad_prefixes), "%s/ap_bad_prefixes.ini", configs_dir)
LoadPrefixes(0)
LoadBadPrefixes(0)
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");
g_iField_Tickes = adv_vault_register_field(g_vault, "TICKES");
g_iField_Flag_Captured = adv_vault_register_field(g_vault, "FLAGCAPTURED");
g_iField_Flag_Returned = adv_vault_register_field(g_vault, "FLAGRETURNED");
g_iField_HUD = adv_vault_register_field(g_vault, "HUD");
g_iField_Damage = adv_vault_register_field(g_vault, "DAMAGE");
adv_vault_init(g_vault);
g_sort1 = adv_vault_sort_create(g_vault, ORDER_DESC, 0, 0, g_iField_Frags)
adv_vault_sort_update(g_vault, g_sort1)
g_sort2 = adv_vault_sort_create(g_vault, ORDER_DESC, 0, 0, g_iField_Flag_Captured)
adv_vault_sort_update(g_vault, g_sort2)
}
public plugin_cfg() {
set_cvar_num("mp_playerid", 0);
}
public HookHideStatus(id) {
ClearSyncHud(id, g_iCreateHud);
}
public plugin_precache() {
precache_sound(Sonido);
}
public HookShowStatus(id) {
if(is_user_alive(id)) {
static pid
pid = read_data(2)
if(!is_user_alive(pid))
return
static team
team = get_user_team(pid)
new is_adm = is_user_admin(pid);
message_begin(MSG_ONE_UNRELIABLE, g_iMsgStatusText, _, id)
write_byte(0)
write_string("")
message_end()
// team TT
if(team == 1) {
if(is_adm) {
set_hudmessage(255, 0, 0, -1.0, 0.56, 1, 0.01, 3.0, 0.01, 0.01, -1)
ShowSyncHudMsg(id, g_iCreateHud, "[Nombre: %s]^n[Vida: %d]^n[Chaleco: %d]^n[Rango: %s]^nADMININISTRADOR(A)", g_playername[pid], pev(pid, pev_health), pev(pid, pev_armorvalue), Rangos[g_rango[pid]][NOMBRE])
} else {
set_hudmessage(255, 0, 0, -1.0, 0.56, 1, 0.01, 3.0, 0.01, 0.01, -1)
ShowSyncHudMsg(id, g_iCreateHud, "[Nombre: %s]^n[Vida: %d]^n[Chaleco: %d]^n[Rango: %s]^nJUGADOR(A)", g_playername[pid], pev(pid, pev_health), pev(pid, pev_armorvalue), Rangos[g_rango[pid]][NOMBRE])
}
// team CT
} else if(team == 2) {
if(is_adm) {
set_hudmessage(0, 255, 255, -1.0, 0.56, 1, 0.01, 3.0, 0.01, 0.01, -1)
ShowSyncHudMsg(id, g_iCreateHud, "[Nombre: %s]^n[Vida: %d]^n[Chaleco: %d]^n[Rango: %s]^nADMININISTRADOR(A)", g_playername[pid], pev(pid, pev_health), pev(pid, pev_armorvalue), Rangos[g_rango[pid]][NOMBRE])
} else {
set_hudmessage(0, 255, 255, -1.0, 0.56, 1, 0.01, 3.0, 0.01, 0.01, -1)
ShowSyncHudMsg(id, g_iCreateHud, "[Nombre: %s]^n[Vida: %d]^n[Chaleco: %d]^n[Rango: %s]^nJUGADOR(A)", g_playername[pid], pev(pid, pev_health), pev(pid, pev_armorvalue), Rangos[g_rango[pid]][NOMBRE])
}
}
}
}
public HUD(taskid) {
new id = ID_HUD;
if(g_hud[id])
return;
if (!is_user_alive(id))
id = pev(id, pev_iuser2);
if(id != ID_HUD) {
set_hudmessage(255, 255, 255, 0.02, 0.20, 0, 6.0, 1.0);
ShowSyncHudMsg(ID_HUD, SyncHUD,
"| Nombre: %s |^n\
• Rango: %s ^n\
• Frags: %s / %s ^n\
• Frag's Restante: %s ^n\
• Ban.Cap: %d • Ban.Re: %d ^n\
• Desde %s •",
g_playername[id],
Rangos[g_rango[id]][NOMBRE],
add_point(g_frags[id]),
add_point(Rangos[g_rango[id]][FRAGS]),
add_point(Rangos[g_rango[id]][FRAGS] - g_frags[id]),
g_flag_captured[id],
g_flag_returned[id],
g_iPlayerCountry[id])
} else {
new prc = (g_frags[ID_HUD] * 100)/Rangos[g_rango[ID_HUD]][FRAGS]
set_hudmessage(255, 255, 255, 0.0, 0.15, 0, 6.0, 1.0)
ShowSyncHudMsg(ID_HUD, SyncHUD,
"| Vida: %d |^n\
| Chaleco: %d |^n\
| Adrenalina: (%d%%) |^n\
| Frag's: %s/%s (%d%%) |^n\
| Dmg.Acumulado: (%i) |^n\
| Rango: %s |^n\
| Sig.Rango: %s |^n\
| Hora Feliz: %s |",
pev(ID_HUD, pev_health),
pev(ID_HUD, pev_armorvalue),
jctf_get_adrenaline(id),
g_danio[ID_HUD],
add_point(g_frags[ID_HUD]),
add_point(Rangos[g_rango[ID_HUD]][FRAGS]),
prc,
Rangos[g_rango[ID_HUD]][NOMBRE],
Rangos[g_rango[ID_HUD]+1][NOMBRE],
g_happyhour ? "ON" : "OFF");
}
}
public clcmd_rangos(id, page) {
static text[ 1024 ], titulo_Menu_Rangos[1024];
format(titulo_Menu_Rangos, charsmax(titulo_Menu_Rangos), "Lista De \rRangos^n\r* \yAMXX \d(\y#1\d)")
new menul = menu_create(titulo_Menu_Rangos, "hand_rangos")
for(new i = 0; i < sizeof(Rangos); i++) {
if(g_rango[id] == i)
formatex(text, charsmax(text), "\w%s \r(\wEXP: \y%s\r) \d(\yACTUAL\d)", Rangos[i][NOMBRE], add_point(Rangos[i][FRAGS]));
else if(g_rango[id] >= i)
formatex(text, charsmax(text), "\w%s \r(\wEXP: \y%s\r)", Rangos[i][NOMBRE], add_point(Rangos[i][FRAGS]));
else
formatex(text, charsmax(text), "\d%s \r(\dEXP: \d%s\r)", Rangos[i][NOMBRE], add_point(Rangos[i][FRAGS]));
menu_additem(menul, text, "");
}
menu_setprop(menul, MPROP_NEXTNAME, "Página Siguiente\r.");
menu_setprop(menul, MPROP_BACKNAME, "Página Atrás\r.");
menu_setprop(menul, MPROP_EXITNAME, "\wSalir de está \rpágina");
menu_display(id, menul, 0);
return PLUGIN_HANDLED;
}
public hand_rangos(id, menul, item) {
if(item == MENU_EXIT) {
menu_destroy(menul)
return PLUGIN_HANDLED;
}
new page, lol
player_menu_info(id, menul, lol, page)
clcmd_rangos(id, page)
return PLUGIN_HANDLED;
}
public client_putinserver(id) {
get_user_name(id, g_playername[id], 31);
get_user_authid(id, g_iPlayerAuth[id], charsmax(g_iPlayerAuth[]))
g_rango[id] = g_frags[id] = g_tickes[id] = g_flag_captured[id] = g_flag_returned[id] = g_hud[id] = g_danio[id] =0;
Cargar(id);
if(get_pcvar_num(cvar_Hud))
set_task(1.0, "HUD", id+TASK_HUD, _, _, "b");
g_toggle[id] = true
num_to_str(id, str_id, charsmax(str_id))
TrieSetString(client_prefix, str_id, "")
PutPrefix(id)
}
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 xDeathMsg()
{
new atacante = read_data(1)
new victima = read_data(2)
if(atacante != victima)
{
g_frags[atacante]++;
if(is_user_admin(atacante))
{
if(g_happyhour)
{
SetFrags(atacante, 4)
}
else
{
SetFrags(atacante, 2)
}
}
else
{
if(g_happyhour)
{
SetFrags(atacante, 2)
}
else
{
SetFrags(atacante, 1)
}
}
}
Guardar(atacante)
}
/*public ham_PlayerKilledPost(victim, attacker) {
if(!is_user_connected(victim) || !is_user_connected(attacker) || !attacker || attacker == victim)
return HAM_IGNORED;
if(is_user_admin(attacker))
{
if(g_happyhour)
{
SetFrags(attacker, 4)
set_pev(attacker, pev_frags, float(pev(attacker, pev_frags)) + 3)
}
else
{
SetFrags(attacker, 2)
}
}
else
{
if(g_happyhour)
{
SetFrags(attacker, 2)
set_pev(attacker, pev_frags, float(pev(attacker, pev_frags)) + 1)
}
else
{
SetFrags(attacker, 1)
}
}
return HAM_IGNORED;
}*/
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
if(victim == attacker || !is_user_connected(attacker))
return HAM_IGNORED;
g_danio[attacker] += floatround(damage)
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 Has Subido De Rango: ^4%s", Prefix, Rangos[g_rango[index]][NOMBRE]);
client_print_color(index, print_team_default, "%s ¡Felicidades! has logrado ascender al ^3rango^1: ^4%s", g_iPrefix, Rangos[g_rango[index]][NOMBRE])
client_print_color(index, print_team_default, "%s ¡Felicidades! has logrado ascender al ^3rango^1: ^4%s", g_iPrefix, Rangos[g_rango[index]][NOMBRE])
client_print_color(index, print_team_default, "%s ¡Felicidades! has logrado ascender al ^3rango^1: ^4%s", g_iPrefix, Rangos[g_rango[index]][NOMBRE])
client_cmd(index, "spk ^"%s^"", Sonido);
}
}
public clcmd_sayhf(id)
{
client_print_color(id, print_team_default, "^4AMXX |^1 La^4 'Hora Feliz'^1 está:^4 %sACTIVADA", g_happyhour ? "" : "DES")
client_print_color(id, print_team_default, "^4AMXX |^1 La^4 'Hora Feliz'^1 %s", g_happyhour ? "termina a las^4 08:00^1 (Hora^4 VEN^1)" : "empieza a las^4 21:00^1 (Hora^4 VEN^1)")
client_print_color(id, print_team_default, "^4AMXX |^1 La^4 'Hora Feliz'^1 sirve para obtener el doble de^4 FRAGS!")
return PLUGIN_HANDLED;
}
public jctf_flag(iEvent, iPlayer, iFlagTeam, bool:bAssist) {
new min_players = get_pcvar_num(cvar_minplayersflag)
if(get_playersnum() < min_players) {
//client_print_color(iPlayer, print_team_default, "%s Se Necesita Un Minimo De ^4%d Players ^1Para Actviar ^4El Contador De Banderas.", Prefix, min_players)
client_print_color(iPlayer, print_team_default, "%s Se necesita un apróximado de '^4%d ^3Players^1' ^1para activar el ^4contador ^1de ^3banderas^1.", g_iPrefix, min_players)
} else {
switch(iEvent) {
case FLAG_CAPTURED: {
if(!bAssist) {
new num = random_num( 1, 5 )
g_flag_captured[iPlayer]++;
SetFrags(iPlayer, num);
//client_print_color(iPlayer, print_team_default, "%s Obtubiste ^3+%d De EXP ^1Por ^4Capturar La Bandera", Prefix, num)
client_print_color(iPlayer, print_team_default, "%s Obtienes ^3'+%d Frags' ^1por capturar la ^4bandera ^3enemiga", g_iPrefix, num)
}
}
case FLAG_RETURNED: {
if(!bAssist) {
new num = random_num( 1, 3 )
g_flag_returned[iPlayer]++;
SetFrags(iPlayer, num);
//client_print_color(iPlayer, print_team_default, "%s Obtubiste ^3+%d De EXP ^1Por ^4Recupeturar La Bandera", Prefix, num)
client_print_color(iPlayer, print_team_default, "%s Obtienes ^3'+%d Frags' ^1por recuperar tú ^3bandera", g_iPrefix, num)
}
}
}
}
}
public clcmd_top_rangos(id)
{
new Tag[32], Rango, Exp, KeyIndex;
static len
len = 0
new toploop = min(adv_vault_sort_numresult(g_vault, g_sort1), 10);
len += formatex(motd[len], sizeof motd-len, "<STYLE>body{background: #000000;background: orange url('https://i.imgur.com/bIbUiKD.jpg') no-repeat fixed;font-family:Tahoma}th{background:rgb(0, 0, 0);color:rgb(255, 255, 255);padding:2px;text-align:left;}td{padding:2px 10px}table{color:rgb(255, 255, 255);background:#000000cc;font-size:13px}h2,h3{color:rgb(255, 255, 255);font-family:Tahoma}#c{background:#323232}img{height:3px;background:rgb(255, 255, 255);margin:0 3px}#r{height:3px;background:rgb(72, 255, 0)}#clr{background:none;color:#FFF;font-size:20px}</STYLE>");
len += formatex(motd[len], sizeof motd-len,"<body><table><thead><tr><th width=5%% > Posicion <th width=22%%> Nombre <th width=20%%> Rango <th width=13%%> Experiencia </tr></thead>");
for( new Posicion = 1; Posicion <= toploop; Posicion++ )
{
KeyIndex = adv_vault_sort_position( g_vault, g_sort1, Posicion );
if( !adv_vault_get_prepare( g_vault, KeyIndex ) ) continue;
Rango = adv_vault_get_field(g_vault, g_iField_Rank);
Exp = adv_vault_get_field(g_vault, g_iField_Frags);
adv_vault_get_keyname( g_vault, KeyIndex, Tag, 31 );
len += formatex(motd[len], sizeof motd-len, "<tr>");
len += formatex(motd[len], sizeof motd-len, "<td> %d. ", Posicion);
len += formatex(motd[len], sizeof motd-len, "<td> %s ", Tag);
len += formatex(motd[len], sizeof motd-len, "<td> %s ", Rangos[Rango][NOMBRE]);
len += formatex(motd[len], sizeof motd-len, "<td> %s ", add_point(Exp));
}
len += formatex(motd[len], sizeof motd-len, "</table></body>");
show_motd( id, motd, "AMXX | TOP-10 RANGOS");
}
public clcmd_top_flags(id)
{
new Tag[32], captured, returned, Index;
static len
len = 0
new toploop = min(adv_vault_sort_numresult(g_vault, g_sort2), 10);
len += formatex(motd[len], sizeof motd-len, "<STYLE>body{background: #000000;background: orange url('https://i.imgur.com/bIbUiKD.jpg') no-repeat fixed;font-family:Tahoma}th{background:rgb(0, 0, 0);color:rgb(255, 255, 255);padding:2px;text-align:left;}td{padding:2px 10px}table{color:rgb(255, 255, 255);background:#000000cc;font-size:13px}h2,h3{color:rgb(255, 255, 255);font-family:Tahoma}#c{background:#323232}img{height:3px;background:rgb(255, 255, 255);margin:0 3px}#r{height:3px;background:rgb(72, 255, 0)}#clr{background:none;color:#FFF;font-size:20px}</STYLE>");
len += formatex(motd[len], sizeof motd-len,"<body><table><thead><tr><th width=5%% > Posicion <th width=22%%> Nombre <th width=20%%> Ban.Capturadas <th width=20%%> Ban.Recuperadas </tr></thead>");
for( new Posicion = 1; Posicion <= toploop; Posicion++ )
{
Index = adv_vault_sort_position(g_vault, g_sort2, Posicion);
if( !adv_vault_get_prepare( g_vault, Index ) ) continue;
captured = adv_vault_get_field(g_vault, g_iField_Flag_Captured);
returned = adv_vault_get_field(g_vault, g_iField_Flag_Returned);
adv_vault_get_keyname( g_vault, Index, Tag, 31 );
len += formatex(motd[len], sizeof motd-len, "<tr>");
len += formatex(motd[len], sizeof motd-len, "<td> %d. ", Posicion);
len += formatex(motd[len], sizeof motd-len, "<td> %s ", Tag);
len += formatex(motd[len], sizeof motd-len, "<td> %d ", captured);
len += formatex(motd[len], sizeof motd-len, "<td> %d ", returned);
}
len += formatex(motd[len], sizeof motd-len, "</table></body>");
show_motd( id, motd, "AMXX | TOP-10 BANDERAS");
}
public client_info(id)
{
get_user_ip(id, g_iPlayerIP[id], charsmax(g_iPlayerIP[]), 1)
geoip_country_ex(g_iPlayerIP[id], g_iPlayerCountry[id], charsmax(g_iPlayerCountry[]), -1)
if (equal(g_iPlayerCountry[id], "error"))
{
if (contain(g_iPlayerIP[id],"192.168.") == 0 || equal(g_iPlayerIP[id],"127.0.0.1") || contain(g_iPlayerIP[id],"10.") == 0 || contain(g_iPlayerIP[id],"172.") == 0)
{
g_iPlayerCountry[id] = "LAN"
}
if (equal(g_iPlayerIP[id],"loopback"))
{
g_iPlayerCountry[id] = "ListenServer User"
}
else
{
g_iPlayerCountry[id] = "Pais desconocido"
}
}
}
public happy_hour()
{
new time_data[12], current_date[4]
get_time("%H", time_data, 12)
get_time("%A", current_date, charsmax(current_date))
new g_time = str_to_num(time_data)
// Time function
for(new i = 0; i <= sizeof(g_hours) - 1; i++)
{
// Hour isn't the same?
if(g_time != g_hours[i]) continue;
// Enable happy time
g_happyhour = true
break;
}
if(equal(current_date, "Fri"))
{
g_happyhour = true
}
}
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_field(g_vault, g_iField_Tickes, g_tickes[id]);
adv_vault_set_field(g_vault, g_iField_Flag_Captured, g_flag_captured[id]);
adv_vault_set_field(g_vault, g_iField_Flag_Returned, g_flag_returned[id]);
adv_vault_set_field(g_vault, g_iField_HUD, g_hud[id]);
adv_vault_set_field(g_vault, g_iField_Damage, g_danio[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);
g_tickes[id] = adv_vault_get_field(g_vault, g_iField_Tickes);
g_flag_captured[id] = adv_vault_get_field(g_vault, g_iField_Flag_Captured);
g_flag_returned[id] = adv_vault_get_field(g_vault, g_iField_Flag_Returned);
g_hud[id] = adv_vault_get_field(g_vault, g_iField_HUD);
g_danio[id] = adv_vault_get_field(g_vault, g_iField_Damage);
}
public hud(id) {
if(g_hud[id]) {
g_hud[id] = 0
client_print_color(id, print_team_default, "%s Has ^3habilitado ^1el ^4hud^3.", g_iPrefix)
}
else {
g_hud[id] = 1
client_print_color(id, print_team_default, "%s Has ^3deshabilitado ^1el ^4hud^3.", g_iPrefix)
}
}
add_point(number)
{
new count, i, str[29], str2[35], len
num_to_str(number, str, charsmax(str))
len = strlen(str)
for (i = 0; i < len; i++)
{
if (i != 0 && ((len - i) %3 == 0))
{
add(str2, charsmax(str2), ".", 1)
count++
add(str2[i+count], 1, str[i], 1)
}
else
add(str2[i+count], 1, str[i], 1)
}
return str2;
}
public HookSay(id)
{
read_args(g_typed, charsmax(g_typed))
remove_quotes(g_typed)
trim(g_typed)
if(equal(g_typed, "") || !is_user_connected(id))
return PLUGIN_HANDLED_MAIN
if(equal(g_typed, "/prefix"))
{
if(g_toggle[id])
{
g_toggle[id] = false
client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_OFF", in_prefix)
}
else
{
g_toggle[id] = true
client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_ON", in_prefix)
}
return PLUGIN_HANDLED_MAIN
}
if(!g_toggle[id])
return PLUGIN_CONTINUE
num_to_str(id, str_id, charsmax(str_id))
if((TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
{
if(check_say_characters(g_typed))
return PLUGIN_HANDLED_MAIN
}
get_user_name(id, g_name, charsmax(g_name))
g_team = cs_get_user_team(id)
if(temp_prefix[0])
{
formatex(g_message, charsmax(g_message), "%s^4[^3%s^4][^3%s^4] ^3%s ^1:^4 %s", say_team_info[is_user_alive(id)][g_team], Rangos[g_rango[id]][NOMBRE], temp_prefix, g_name, g_typed)
}
else
{
formatex(g_message, charsmax(g_message), "%s^4[^3%s^4] ^3%s ^4:^1 %s", say_team_info[is_user_alive(id)][g_team], Rangos[g_rango[id]][NOMBRE], g_name, g_typed)
}
get_pcvar_string(g_listen_flag, temp_cvar, charsmax(temp_cvar))
for(new i = 1; i <= g_maxplayers; i++)
{
if(!is_user_connected(i))
continue
if(is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i) || get_pcvar_num(g_listen) && get_user_flags(i) & read_flags(temp_cvar))
{
send_message(g_message, id, i)
}
}
return PLUGIN_HANDLED_MAIN
}
public HookSayTeam(id)
{
read_args(g_typed, charsmax(g_typed))
remove_quotes(g_typed)
trim(g_typed)
if(equal(g_typed, "") || !is_user_connected(id))
return PLUGIN_HANDLED_MAIN
if(equal(g_typed, "/prefix"))
{
if(g_toggle[id])
{
g_toggle[id] = false
client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_OFF", in_prefix)
}
else
{
g_toggle[id] = true
client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_ON", in_prefix)
}
return PLUGIN_HANDLED_MAIN
}
if(!g_toggle[id])
return PLUGIN_CONTINUE
num_to_str(id, str_id, charsmax(str_id))
if((TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
{
if(check_say_characters(g_typed))
return PLUGIN_HANDLED_MAIN
}
get_user_name(id, g_name, charsmax(g_name))
g_team = cs_get_user_team(id)
if(temp_prefix[0])
{
formatex(g_message, charsmax(g_message), "%s^4[^3%s^4][^3%s^4] ^3%s ^1:^4 %s", sayteam_team_info[is_user_alive(id)][g_team], Rangos[g_rango[id]][NOMBRE], temp_prefix, g_name, g_typed)
}
else
{
formatex(g_message, charsmax(g_message), "%s^4[^3%s^4] ^3%s ^4:^1 %s", sayteam_team_info[is_user_alive(id)][g_team], Rangos[g_rango[id]][NOMBRE], g_name, g_typed)
}
get_pcvar_string(g_listen_flag, temp_cvar, charsmax(temp_cvar))
for(new i = 1; i <= g_maxplayers; i++)
{
if(!is_user_connected(i))
continue
if(get_user_team(id) == get_user_team(i) || get_pcvar_num(g_listen) && get_user_flags(i) & read_flags(temp_cvar))
{
if(is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i) || get_pcvar_num(g_listen) && get_user_flags(i) & read_flags(temp_cvar))
{
send_message(g_message, id, i)
}
}
}
return PLUGIN_HANDLED_MAIN
}
public LoadPrefixes(id)
{
if(!(get_user_flags(id) & FLAG_LOAD))
{
console_print(id, "%L", LANG_SERVER, "PREFIX_PERMISSION", in_prefix)
return PLUGIN_HANDLED
}
TrieClear(pre_ips_collect)
TrieClear(pre_names_collect)
TrieClear(pre_steamids_collect)
TrieClear(pre_flags_collect)
line = 0, length = 0, pre_flags_count = 0, pre_ips_count = 0, pre_names_count = 0;
if(!file_exists(file_prefixes))
{
formatex(error, charsmax(error), "%L", LANG_SERVER, "PREFIX_NOT_FOUND", in_prefix, file_prefixes)
set_fail_state(error)
}
server_print(separator)
while(read_file(file_prefixes, line++ , text, charsmax(text), length) && (pre_ips_count + pre_names_count + pre_steamids_count + pre_flags_count) <= MAX_PREFIXES)
{
if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
continue
parse(text, type, charsmax(type), key, charsmax(key), prefix, charsmax(prefix))
trim(prefix)
if(!type[0] || !prefix[0] || !key[0])
continue
replace_all(prefix, charsmax(prefix), "!g", "^x04")
replace_all(prefix, charsmax(prefix), "!t", "^x03")
replace_all(prefix, charsmax(prefix), "!n", "^x01")
switch(type[0])
{
case 'f':
{
pre_flags_count++
TrieSetString(pre_flags_collect, key, prefix)
server_print("%L", LANG_SERVER, "PREFIX_LOAD_FLAG", in_prefix, prefix, key[0])
}
case 'i':
{
pre_ips_count++
TrieSetString(pre_ips_collect, key, prefix)
server_print("%L", LANG_SERVER, "PREFIX_LOAD_IP", in_prefix, prefix, key)
}
case 's':
{
pre_steamids_count++
TrieSetString(pre_steamids_collect, key, prefix)
server_print("%L", LANG_SERVER, "PREFIX_LOAD_STEAMID", in_prefix, prefix, key)
}
case 'n':
{
pre_names_count++
TrieSetString(pre_names_collect, key, prefix)
server_print("%L", LANG_SERVER, "PREFIX_LOAD_NAME", in_prefix, prefix, key)
}
default:
{
continue
}
}
}
if(pre_flags_count <= 0 && pre_ips_count <= 0 && pre_steamids_count <= 0 && pre_names_count <= 0)
{
server_print("%L", LANG_SERVER, "PREFIX_NO", in_prefix)
}
get_user_name(id, g_name, charsmax(g_name))
server_print("%L", LANG_SERVER, "PREFIX_LOADED_BY", in_prefix, g_name)
console_print(id, "%L", LANG_SERVER, "PREFIX_LOADED", in_prefix)
server_print(separator)
for(new i = 1; i <= g_maxplayers; i++)
{
num_to_str(i, str_id, charsmax(str_id))
TrieDeleteKey(client_prefix, str_id)
PutPrefix(i)
}
return PLUGIN_HANDLED
}
public LoadBadPrefixes(id)
{
if(!get_pcvar_num(g_bad_prefix))
{
console_print(id, "%L", LANG_SERVER, "BADP_OFF", in_prefix)
return PLUGIN_HANDLED
}
if(!(get_user_flags(id) & FLAG_LOAD))
{
console_print(id, "%L", LANG_SERVER, "BADP_PERMISSION", in_prefix)
return PLUGIN_HANDLED
}
TrieClear(bad_prefixes_collect)
line = 0, length = 0, bad_prefix_count = 0;
if(!file_exists(file_bad_prefixes))
{
console_print(id, "%L", LANG_SERVER, "BADP_NOT_FOUND", in_prefix, file_bad_prefixes)
return PLUGIN_HANDLED
}
server_print(separator)
while(read_file(file_bad_prefixes, line++ , text, charsmax(text), length) && bad_prefix_count <= MAX_BAD_PREFIXES)
{
if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
continue
parse(text, prefix, charsmax(prefix))
if(!prefix[0])
continue
bad_prefix_count++
TrieSetCell(bad_prefixes_collect, prefix, 1)
server_print("%L", LANG_SERVER, "BADP_LOAD", in_prefix, prefix)
}
if(bad_prefix_count <= 0)
{
server_print("%L", LANG_SERVER, "BADP_NO", in_prefix)
}
get_user_name(id, g_name, charsmax(g_name))
server_print("%L", LANG_SERVER, "BADP_LOADED_BY", in_prefix, g_name)
console_print(id, "%L", LANG_SERVER, "BADP_LOADED", in_prefix)
server_print(separator)
return PLUGIN_HANDLED
}
public SetPlayerPrefix(id)
{
if(!get_pcvar_num(g_custom) || !get_pcvar_string(g_custom_flag, temp_cvar, charsmax(temp_cvar)))
{
console_print(id, "%L", LANG_SERVER, "CUSTOM_OFF", in_prefix)
return PLUGIN_HANDLED
}
if(!(get_user_flags(id) & read_flags(temp_cvar)))
{
console_print(id, "%L", LANG_SERVER, "CUSTOM_PERMISSION", in_prefix)
return PLUGIN_HANDLED
}
new input[128], target;
new arg_type[2], arg_prefix[32], arg_key[35];
new temp_str[16];
read_args(input, charsmax(input))
remove_quotes(input)
parse(input, arg_type, charsmax(arg_type), arg_key, charsmax(arg_key), arg_prefix, charsmax(arg_prefix))
trim(arg_prefix)
if(get_pcvar_num(g_bad_prefix) && is_bad_prefix(arg_prefix) && !equali(arg_prefix, ""))
{
console_print(id, "%L", LANG_SERVER, "CUSTOM_FORBIDDEN", in_prefix, arg_prefix)
return PLUGIN_HANDLED
}
if(get_pcvar_num(g_prefix_characters) && check_prefix_characters(arg_prefix))
{
console_print(id, "%L", LANG_SERVER, "CUSTOM_SYMBOL", in_prefix, arg_prefix, forbidden_prefixes_symbols[i])
return PLUGIN_HANDLED
}
switch(arg_type[0])
{
case 'f':
{
target = 0
temp_str = "Flag"
}
case 'i':
{
target = find_player("d", arg_key)
temp_str = "IP"
}
case 's':
{
target = find_player("c", arg_key)
temp_str = "SteamID"
}
case 'n':
{
target = find_player("a", arg_key)
temp_str = "Name"
}
default:
{
console_print(id, "%L", LANG_SERVER, "CUSTOM_INVALID", in_prefix, arg_type)
return PLUGIN_HANDLED
}
}
get_user_name(id, g_name, charsmax(g_name))
if(equali(arg_prefix, ""))
{
find_and_delete(arg_type, arg_key)
if(target)
{
PutPrefix(target)
}
console_print(id, "%L", LANG_SERVER, "CUSTOM_REMOVE", in_prefix, temp_str, arg_key)
server_print("%L", LANG_SERVER, "CUSTOM_REMOVE_INFO", in_prefix, g_name, temp_str, arg_key)
return PLUGIN_HANDLED
}
find_and_delete(arg_type, arg_key)
formatex(text, charsmax(text), "^"%s^" ^"%s^" ^"%s^"", arg_type, arg_key, arg_prefix)
write_file(file_prefixes, text, -1)
switch(arg_type[0])
{
case 'f':
{
TrieSetString(pre_flags_collect, arg_key, arg_prefix)
}
case 'i':
{
TrieSetString(pre_ips_collect, arg_key, arg_prefix)
}
case 's':
{
TrieSetString(pre_steamids_collect, arg_key, arg_prefix)
}
case 'n':
{
TrieSetString(pre_names_collect, arg_key, arg_prefix)
}
}
if(target)
{
num_to_str(target, str_id, charsmax(str_id))
TrieSetString(client_prefix, str_id, arg_prefix)
}
console_print(id, "%L", LANG_SERVER, "CUSTOM_CHANGE", in_prefix, temp_str, arg_key, arg_prefix)
server_print("%L", LANG_SERVER, "CUSTOM_CHANGE_INFO", in_prefix, g_name, temp_str, arg_key, arg_prefix)
return PLUGIN_HANDLED
}
public client_infochanged(id)
{
if(!is_user_connected(id))
return PLUGIN_CONTINUE
new g_old_name[32];
get_user_info(id, "name", g_name, charsmax(g_name))
get_user_name(id, g_old_name, charsmax(g_old_name))
if(!equal(g_name, g_old_name))
{
num_to_str(id, str_id, charsmax(str_id))
TrieSetString(client_prefix, str_id, "")
set_task(0.5, "PutPrefix", id)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public PutPrefix(id)
{
num_to_str(id, str_id, charsmax(str_id))
TrieSetString(client_prefix, str_id, "")
new sflags[32], temp_flag[2];
get_flags(get_user_flags(id), sflags, charsmax(sflags))
for(new i = 0; i <= charsmax(sflags); i++)
{
formatex(temp_flag, charsmax(temp_flag), "%c", sflags[i])
if(TrieGetString(pre_flags_collect, temp_flag, temp_prefix, charsmax(temp_prefix)))
{
TrieSetString(client_prefix, str_id, temp_prefix)
}
}
get_user_ip(id, temp_key, charsmax(temp_key), 1)
if(TrieGetString(pre_ips_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
{
TrieSetString(client_prefix, str_id, temp_prefix)
}
get_user_authid(id, temp_key, charsmax(temp_key))
if(TrieGetString(pre_steamids_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
{
TrieSetString(client_prefix, str_id, temp_prefix)
}
get_user_name(id, temp_key, charsmax(temp_key))
if(TrieGetString(pre_names_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
{
TrieSetString(client_prefix, str_id, temp_prefix)
}
return PLUGIN_HANDLED
}
send_message(const message[], const id, const i)
{
message_begin(MSG_ONE, g_saytxt, {248, 22, 152}, i)
write_byte(id)
write_string(message)
message_end()
}
bool:check_say_characters(const check_message[])
{
for(new i = 0; i < charsmax(forbidden_say_symbols); i++)
{
if(check_message[0] == forbidden_say_symbols[i])
{
return true
}
}
return false
}
bool:check_prefix_characters(const check_prefix[])
{
for(i = 0; i < charsmax(forbidden_prefixes_symbols); i++)
{
if(containi(check_prefix, forbidden_prefixes_symbols[i]) != -1)
{
return true
}
}
return false
}
bool:is_bad_prefix(const check_prefix[])
{
if(TrieGetCell(bad_prefixes_collect, check_prefix, temp_value))
{
return true
}
return false
}
find_and_delete(const arg_type[], const arg_key[])
{
line = 0, length = 0;
while(read_file(file_prefixes, line++ , text, charsmax(text), length))
{
if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
continue
parse(text, type, charsmax(type), key, charsmax(key), prefix, charsmax(prefix))
trim(prefix)
if(!type[0] || !prefix[0] || !key[0])
continue
if(!equal(arg_type, type) || !equal(arg_key, key))
continue
write_file(file_prefixes, "", line - 1)
}
switch(arg_type[0])
{
case 'f':
{
TrieDeleteKey(pre_flags_collect, arg_key)
}
case 'i':
{
TrieDeleteKey(pre_ips_collect, arg_key)
}
case 's':
{
TrieDeleteKey(pre_steamids_collect, arg_key)
}
case 'n':
{
TrieDeleteKey(pre_names_collect, arg_key)
}
}
}
el plugin copila bien pero al iniciar el servidor no funciona y en los logs muestra esto
failed to load: Plugin uses an unknown function (name "geoip_country_ex") - check your modules.ini.
muchas gracias al que me pueda ayudar.