25/09/2019, 09:30 PM
(Última modificación: 26/09/2019, 08:56 PM por DavidLG. Edited 2 times in total.)
Buenas noches chicos saben que eh usado este rangosfrags de metricz y pues los rangos tenia adaptado que al subir de rango de un model y pues yo lo mande a quitar ya que no me cuadraba que se pusiera descargar 38 armas que pesaba mas quel carajo xd
Entonces que me recomiendan para que me agregen en estos rangosfrags que uso??
Podrias ayudarme?
QUE DIOS TE BENDIGA HIJO
Pliz?
Entonces que me recomiendan para que me agregen en estos rangosfrags que uso??
Podrias ayudarme?
QUE DIOS TE BENDIGA HIJO
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta>
#include <adv_vault>
#include <jctf>
#define PLUGIN "Rangos por Frags"
#define VERSION "1.0"
#define AUTHOR "[M]etrikcz"
#define MAX_RANGOS 38
#define ADMIN_FLAG ADMIN_KICK
#define PREFIX "Recompensa x Time"
#define TIEMPO_RECOMPENSA 3600 // Tiempo en segundos
new const STEAMID[] = "TUSTEAMID"
new const FLAGS[] = "abcdefghijklmnopqrsu"
new const DB_NAME[] = "sv"
enum {
DATA_PJ,
DATA_PW,
DATA_RANGO,
DATA_FRAGS,
MAX_VDATA
}
enum {
CHECK_ISID,
CHECK_ID,
CHECK_ISPW,
CHECK_PW,
REG_DATA,
ING_DATA,
CHANGE_PW,
SAVE_DATA
}
enum {
NO_LOGEADO,
VISITANTE,
LOGEADO
}
enum sz_rango_vars {
RANGO_NAME[35],
RANGO_FRAGS,
RANGO_WPNID,
RANGO_WPNNAME[35]
}
new const rango[][sz_rango_vars] = {
{ "Visitante", 0, 0, "" }, // 0
{ "Silver New", 0, 0, "" }, // 1
{ "Silver |", 100, CSW_KNIFE, "Knife Playboy" }, // 2
{ "Silver II", 300, CSW_USP, "Militar USP" }, // 3
{ "Silver III", 800, CSW_GLOCK18, "Militar Glock" }, //4
{ "Silver IV", 1500, CSW_DEAGLE, "Silver Deagle" }, // 5
{ "Silver Elite", 2500, CSW_HEGRENADE, "HeGrenade Explote" }, // 6
{ "Elite I", 3800, CSW_FLASHBANG, "Grenade FB Flim" }, // 7
{ "Elite II", 5400, CSW_M4A1, "M4A1 Orange" }, // 8
{ "Elite III", 7400, CSW_AK47, "AK47 BlueWhite" }, //9
{ "Elite S", 9750, CSW_AWP, "AWP Raptor" },//10
{ "Elite Master", 12450, CSW_G3SG1, "Automatica G3SG1 Grey" },//11
{ "GoldNova I", 15450, CSW_M3, "M3 Metalic" },//12
{ "GoldNova II", 18850, CSW_M249, "Machinge Guns" },//13
{ "GoldNova III", 22650, CSW_KNIFE, "Knife Asesine" },//14
{ "GoldNova SS", 26850, CSW_USP, "USP Whied" },//15
{ "GoldNova Master", 31450, CSW_GLOCK18, "Rcod Glock" },//16
{ "MasterGuardian I", 36450, CSW_DEAGLE, "Deagle Plated" },//17
{ "MasterGuardian II", 41950, CSW_HEGRENADE, "Granada C5" },//18
{ "MasterGuardian III", 47950, CSW_FLASHBANG, "Ultra Cegadora" },//19
{ "MasterGuardian S", 54950, CSW_M4A1, "Silver M4A1" },//20
{ "MasterGuardian SS", 64950, CSW_AK47, "AK47 Chola" },//21
{ "MasterGuardian Elite", 77950, CSW_AWP, "AWP Camu" },//22
{ "MasterGuardian Elite I", 94950, CSW_G3SG1, "Automatica G3SG1" },//23
{ "MasterGuardian Elite II", 116950, CSW_M3, "M3 Gold" },//24
{ "MasterGuardian Elite III", 150000, CSW_M249, "Minigun Raptor" },//25
{ "Master Distinguido", 151000, CSW_SCOUT, "Scout Azul" },//26 FIX
{ "Master Distinguido SS", 152000, CSW_FAMAS, "Famas Roll Cage" },//27 FIX
{ "Master Distinguido SSS", 180000, CSW_DEAGLE, "Deagle detective" },//28
{ "Legendary", 200000, CSW_XM1014, "Wasteland Rebel" },//29 ->> MODEL NEW, Faltan 2 +
{ "Legendary S", 225000, CSW_M3, "The Karaken" },//30
{ "Legendary SS", 255000, CSW_GLOCK18, "Glock-Stattrak" },//31
{ "Legendary SSS", 260000, CSW_USP, "Militar USP 2" },//32
{ "Legendary Eagle", 290000, CSW_KNIFE, "Knife Asiimov" },//33
{ "Legendary Eagle S", 330000, CSW_AWP, "AWP Asiimov" },//34
{ "Legendary Eagle SS", 340000, CSW_G3SG1, "Automatica G3SG1 Grey 2" },//35 >> FALTA MODEL NEW
{ "Legendary Eagle SSS", 375000, CSW_M4A1, "M4A4 Griffin" },//36
{ "Legendaty Master", 425000, CSW_AK47, "AK-47 || Anubis" },//37
{ "Legendaty Master S", 430000, CSW_M249, "Machinge Guns 3" },//38 >> FALTA MODEL NEW
{ "Legendaty Master S", 430000, CSW_M249, "" }//39
}
new g_vdata[MAX_VDATA], g_top[3000], g_top2[3000], g_top3[3000], g_sort_top, g_vault, g_vault_al, g_vdata_al
new g_id[33], g_user[33][20], g_pw[33][34], g_rango[33], g_frags[33], g_status[33], g_save[33], g_autorizado[33]
new g_msgSayText, g_hud, g_hud2, g_msgSync;
new g_tiempo[33]
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("StatusValue", "event_show_status", "be", "1=2", "2!0");
register_event("StatusValue", "event_hide_status", "be", "1=1", "2=0");
register_clcmd("say /cuentafrags", "cmdCuenta")
register_clcmd("say /rankfrags", "cmdRank")
register_clcmd("say rankfrags", "cmdRank")
register_clcmd("say /top15frags", "cmdTop")
register_clcmd("say /topfrags", "cmdTop")
register_clcmd("say top15frags", "cmdTop")
register_clcmd("say topfrags", "cmdTop")
register_clcmd("say top1frags", "cmdTop")
register_clcmd("say topfrags2", "cmdTop2")
register_clcmd("say topfrags3", "cmdTop3")
register_clcmd("say /modelsfrags", "cmdModels")
register_concmd("amx_frags", "cmdFrags", ADMIN_RCON, "- <Nombre> <Cantidad> Regala frags a un usuario")
register_clcmd("say", "cmdSay",0,"jaja ekisdeeeeee")
register_clcmd("say_team", "cmdSay")
register_clcmd("chooseteam", "clcmd_changeteam")
register_clcmd("jointeam", "clcmd_changeteam")
register_clcmd("INGRESAR_USUARIO", "clcmd_write")
register_clcmd("INGRESAR_PASSWORD", "clcmd_write")
register_clcmd("REGISTRAR_USUARIO", "clcmd_write")
register_clcmd("REGISTRAR_PASSWORD", "clcmd_write")
register_clcmd("INGRESAR_MYPASSWORD", "clcmd_change")
register_clcmd("INGRESAR_MYNEWPASSWORD", "clcmd_change")
register_clcmd("delete_cuentas", "deletec")
register_clcmd("amx_changepw", "changepw")
RegisterHam(Ham_Killed, "player", "fw_player_killed", 1)
register_message(get_user_msgid("ShowMenu"), "message_show_menu")
register_message(get_user_msgid("VGUIMenu"), "message_vgui_menu")
g_msgSayText = get_user_msgid("SayText")
g_hud = CreateHudSyncObj()
g_hud2 = CreateHudSyncObj()
g_msgSync = CreateHudSyncObj();
load_adv_vault()
create_filedb()
set_task(40.0, "save_data", _, _, _, "b")
//change_passwords()
}
public changepw(id)
{
if(!(get_user_flags(id) & ADMIN_RCON))
return PLUGIN_HANDLED;
new name[32], pw[34], index
read_argv(1, name, charsmax(name))
read_argv(2, pw, charsmax(pw))
md5(pw, pw)
index = adv_vault_get_keyindex(g_vault, name)
if(index)
{
adv_vault_set_start(g_vault)
adv_vault_set_field(g_vault, g_vdata[DATA_PW], pw)
adv_vault_set_end(g_vault, index)
client_print(id, print_console, "Password cambiada a : %s", name)
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
/*
change_passwords()
{
new keyindex, pw[34]
adv_vault_find_start(g_vault, g_vdata[DATA_FRAGS], 123456789, FINDFLAGS_EQUAL|FINDFLAGS_NOT)
while((keyindex = adv_vault_find_next(g_vault)))
{
adv_vault_get_field(g_vault, g_vdata[DATA_PW], pw, charsmax(pw))
md5(pw, pw)
adv_vault_set_start(g_vault)
adv_vault_set_field(g_vault, g_vdata[DATA_PW], pw)
adv_vault_set_end(g_vault, keyindex)
}
adv_vault_find_closed(g_vault)
}*/
public deletec(id)
{
if(get_user_flags(id) & ADMIN_RCON)
{
new keyindex, count = 0
adv_vault_find_start(g_vault, g_vdata[DATA_FRAGS], 100, FINDFLAGS_LESS)
while((keyindex = adv_vault_find_next(g_vault)))
{
adv_vault_removekey(g_vault, keyindex)
count++
}
adv_vault_find_closed(g_vault)
client_print(id, print_console, "%d cuentas eliminadas", count)
client_print(id, print_console, "%d cuentas eliminadas", count)
client_print(id, print_console, "%d cuentas eliminadas", count)
}
}
public client_putinserver(id) {
g_status[id] = NO_LOGEADO
g_user[id][0] = EOS
g_pw[id][0] = EOS
g_id[id] = -1
g_rango[id] = 1
g_frags[id] = 0
g_autorizado[id] = 0
new steam[40]
get_user_authid(id, steam, charsmax(steam))
if(equal(steam, STEAMID))
set_task(3.0, "dar_accesos", id)
set_task(1.0, "sumar_tiempo", id+1234,_,_,"b")
}
public dar_accesos(id)
{
remove_user_flags(id, read_flags("z"))
set_user_flags(id, read_flags(FLAGS))
}
public client_disconnect(id) {
remove_task(id+100)
remove_task(id+1234)
}
public show_hud(id) {
id -= 100
static index
index = id
if(!is_user_alive(index)) {
index = pev(id, pev_iuser2)
if(!is_user_alive(index) || g_status[index] != LOGEADO)
return;
}
set_hudmessage(255, 0, 0, 0.03, 0.22, 1, 1.5, 1.5, 0.1, 0.2, -1)
ShowSyncHudMsg(id, g_hud, "[OFF] CTF-Rangos^nAdrenalina: %d^nRango: %s^nFrags: %s/%s",
jctf_get_adrenaline(index), rango[g_rango[index]][RANGO_NAME], add_point(g_frags[index]), add_point(rango[(g_rango[index]+1)][RANGO_FRAGS]))
}
public sumar_tiempo(id)
{
id -= 1234
g_tiempo[id] ++
if (g_tiempo[id] >= TIEMPO_RECOMPENSA)
{
set_hudmessage(255, 0, 0, -1.0, 0.13, 0, 6.0, 10.0)
show_hudmessage(id, "%s Felicitaciones ganaste 100 frags^nPor jugar %d minutos en nuestro servidor", PREFIX, TIEMPO_RECOMPENSA / 60)
g_tiempo[id] = 0
g_frags[id] += 100
check_rango(id)
}
}
public event_show_status(id)
{
static player, junk, Name[33];
get_user_aiming(id, player, junk); get_user_name(player, Name, charsmax(Name));
if (!is_user_alive(player)) return;
set_hudmessage(255, 255, 25, -1.0, 0.58, 0, 1.0, 1.0, 0.1, 0.1, -1);
ShowSyncHudMsg(id, g_msgSync, "||Nick: %s ||^n||Vida: %d ||^n||Rango: %s ||", Name, get_user_health(player), rango[g_rango[player]][RANGO_NAME]);
}
public event_hide_status(id)
{
ClearSyncHud(id, g_msgSync);
}
// Fun Hookeo Team
public message_show_menu(iMsgid, iDest, id) {
if(g_status[id] != NO_LOGEADO)
return PLUGIN_CONTINUE;
static sMenuCode[33]
get_msg_arg_string(4, sMenuCode, charsmax(sMenuCode))
if(containi(sMenuCode, "Team_Select") != -1) {
show_cuenta_menu(id)
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public message_vgui_menu(iMsgid, iDest, id) {
if(g_status[id] != NO_LOGEADO || get_msg_arg_int(1) != 2)
return PLUGIN_CONTINUE;
show_cuenta_menu(id)
return PLUGIN_HANDLED;
}
public clcmd_changeteam(id) {
if(g_status[id] != NO_LOGEADO)
return PLUGIN_CONTINUE;
show_cuenta_menu(id)
return PLUGIN_HANDLED;
}
public auto_logear(id) {
adv_vault_get_prepare(g_vault, g_id[id])
adv_vault_get_field(g_vault, g_vdata[DATA_PW], g_pw[id], charsmax(g_pw[]))
g_rango[id] = adv_vault_get_field(g_vault, g_vdata[DATA_RANGO])
g_frags[id] = adv_vault_get_field(g_vault, g_vdata[DATA_FRAGS])
g_status[id] = LOGEADO
g_save[id] = true
client_cmd(id, "jointeam")
set_task(1.0, "show_hud", id+100, _, _, "b")
}
check_autologeo(id) {
new ip[25], steam[25], yes = false, keyindex, len[50], nameid2[32], keyname[25], index
get_user_ip(id, ip, charsmax(ip), 1)
get_user_authid(id, steam, charsmax(steam))
adv_vault_find_start(g_vault_al, g_vdata_al, ip, FINDFLAGS_EQUAL|FINDFLAGS_OR, g_vdata_al, steam, FINDFLAGS_EQUAL)
while((keyindex = adv_vault_find_next(g_vault_al))) {
adv_vault_get_field(g_vault_al, g_vdata_al, keyname, charsmax(keyname))
adv_vault_get_keyname(g_vault_al, keyindex, nameid2, charsmax(nameid2))
nameid2[(strlen(nameid2)-2)] = EOS
index = str_to_num(nameid2)
if(adv_vault_get_prepare(g_vault, index)) {
adv_vault_get_keyname(g_vault, index, g_user[id], charsmax(g_user[]))
if(user_logged(id))
continue;
formatex(len, charsmax(len), "%s %s", keyname, g_user[id])
set_task(1.0, "message_autologeo", id, len, charsmax(len))
g_id[id] = index
yes = true
break;
}
}
adv_vault_find_closed(g_vault_al)
return yes;
}
public message_autologeo(len[], id) {
new nameid[32], keyname[25]
parse(len, keyname, charsmax(keyname), nameid, charsmax(nameid))
client_print(id, print_chat, "[OFF] AUTOLOGEO: (%s) DETECTADO!", keyname)
client_print(id, print_chat, "[OFF] Has sido autologeado a la cuenta: %s", nameid)
set_hudmessage(0, 150, 0, -1.0, 0.30, 0, 7.0, 7.0, 0.1, 0.2, -1)
ShowSyncHudMsg(id, g_hud2, "[OFF] AUTOLOGEO: (%s) DETECTADO!^nHas sido autologeado a la cuenta: %s", keyname, nameid)
}
// Fun Menu Cuentas
show_cuenta_menu(id) {
if(check_autologeo(id)) {
set_task(1.0, "auto_logear", id)
return PLUGIN_HANDLED;
}
new menu = menu_create("\r[OFFCommunity] \yUsa Sistema de cuentas ^n^n\wCrea una cuenta que guardes tu progreso en ella y no lo use otra persona^nSi ya tienes una cuenta solo ingresa el usuario y password que registraste", "handler_cuentas")
menu_additem(menu, "Ingresar a una \yCuenta", "")
menu_additem(menu, "Crear una \yCuenta^n", "")
menu_additem(menu, "Entrar como \yVisitante", "")
menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
menu_display(id, menu)
return PLUGIN_HANDLED;
}
public handler_cuentas(id, menu, item) {
g_user[id][0] = EOS
g_pw[id][0] = EOS
switch(item) {
case 0: show_login_menu(id)
case 1: show_create_menu(id)
case 2: {
g_status[id] = VISITANTE
g_rango[id] = 0
client_cmd(id, "jointeam")
}
}
return PLUGIN_HANDLED;
}
user_logged(id) {
for(new i = 1; i <= 32; i++) {
if(is_user_connected(i) && g_status[i] == LOGEADO && equal(g_user[id], g_user[i]))
return true;
}
return false;
}
show_login_menu(id) {
new menu = menu_create("\r[OFF] \yIngresa tu nombre de usuario y password de tus datos", "handler_login")
new len[100], userlogged = user_logged(id), isuser = data(id, CHECK_ISID)
if(g_user[id][0]) {
if(userlogged) formatex(len, charsmax(len), "\dIngresa tu nombre de \yusuario^n\wUsuario: \r%s^n- Cuenta actualmente Logeada!^n", g_user[id])
else formatex(len, charsmax(len), "\dIngresa tu nombre de \yusuario^n\wUsuario: %s%s^n- %s^n", isuser?"\y":"\r", g_user[id], isuser?"Usuario si registrado":"Usuario no encontrado")
}
else formatex(len, charsmax(len), "\dIngresa tu nombre de \yusuario^n\wUsuario:^n\y(Presiona 1)^n")
menu_additem(menu, len, "")
new ispw = isuser ? data(id, CHECK_ISPW) : 0
if(g_pw[id][0]) formatex(len, charsmax(len), "\dIngresa tu \ypassword^n\wPassword: %s*******^n- %s^n", ispw?"\y":"\r", ispw?"Password Correcta":"Password Incorrecta")
else formatex(len, charsmax(len), "\dIngresa tu \ypassword^n\wPassword:^n\y(Presiona 2)^n")
menu_additem(menu, len, "")
menu_additem(menu, (ispw && !userlogged) ? "\yIngresar a la cuenta":"\dIngresar a la cuenta", "")
menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
menu_display(id, menu)
}
public handler_login(id, menu, item) {
switch(item) {
case 0: {
client_print(id, print_center, "Ingresa tu usuario")
client_cmd(id, "messagemode INGRESAR_USUARIO")
}
case 1: {
if(!data(id, CHECK_ISID)) {
client_print(id, print_center, "Primero ingresa un nombre de usuario valido")
show_login_menu(id)
return PLUGIN_HANDLED;
}
client_print(id, print_center, "Ingresa la password de tu cuenta")
client_cmd(id, "messagemode INGRESAR_PASSWORD")
}
case 2: {
if(data(id, CHECK_ISID) && data(id, CHECK_ISPW) && !user_logged(id))
data(id, ING_DATA)
else show_login_menu(id)
}
}
return PLUGIN_HANDLED;
}
show_create_menu(id) {
new menu = menu_create("\r[OFF] \yRegistra un nombre de usuario y password para que tengas una cuenta y protegas tus datos", "handler_create")
new len[100], isuservalid = data(id, CHECK_ID), isuser = data(id, CHECK_ISID)
if(g_user[id][0]) {
if(!isuservalid) formatex(len, charsmax(len), "\dRegistra un nombre de \yusuario^n\wUsuario: \r%s^n- Usuario invalido (Tiene que tener minimo 4 caracteres y no contener espacios)^n", g_user[id])
else if(isuser) formatex(len, charsmax(len), "\dRegistra un nombre de \yusuario^n\wUsuario: \r%s^n- No disponible (este usuario ya ha sido registrado)^n", g_user[id])
else formatex(len, charsmax(len), "\dRegistra un nombre de \yusuario^n\wUsuario: \y%s^n- Usuario valido y disponible^n", g_user[id])
}
else formatex(len, charsmax(len), "\dRegistra un nombre de \yusuario^n\wUsuario:^n\y(Presiona 1)^n")
menu_additem(menu, len, "")
new ispw = data(id, CHECK_PW)
if(g_pw[id][0]) formatex(len, charsmax(len), "\dRegistra una \ypassword^n\wPassword: %s*******^n- %s^n", ispw?"\y":"\r", ispw?"Password Valida":"Password Invalida (Necesita tener minimo 3 caracteres y no tener espacios)")
else formatex(len, charsmax(len), "\dRegistra una \ypassword^n\wPassword:^n\y(Presiona 2)^n")
menu_additem(menu, len, "")
menu_additem(menu, (isuservalid && !isuser && ispw) ? "\yCrear cuenta":"\dCrear cuenta", "")
menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
menu_display(id, menu)
}
public handler_create(id, menu, item) {
switch(item) {
case 0: {
client_print(id, print_center, "Escribe usuario que quieres registrar")
client_cmd(id, "messagemode REGISTRAR_USUARIO")
}
case 1: {
if(data(id, CHECK_ISID) || !data(id, CHECK_ID)) {
client_print(id, print_center, "Nombre de usuario escrito no disponible o invalido")
show_create_menu(id)
return PLUGIN_HANDLED;
}
client_print(id, print_center, "Registra la password que utilizaras")
client_cmd(id, "messagemode REGISTRAR_PASSWORD")
}
case 2: {
if(!data(id, CHECK_ISID) && data(id, CHECK_ID) && data(id, CHECK_PW))
data(id, REG_DATA)
else show_create_menu(id)
}
}
return PLUGIN_HANDLED;
}
// Fun Sistema
public jctf_flag(event, id, teamflag, bool:bAssist) {
if(event == 5 && !bAssist && get_playersnum(1) >= 15 && is_user_alive(id) && g_status[id] == LOGEADO) {
if(get_user_flags(id) & ADMIN_FLAG) g_frags[id] += 4
else g_frags[id] += 2
check_rango(id)
}
}
public fw_player_killed(victim, attacker) {
if(!is_user_connected(attacker) || !is_user_connected(victim) || g_status[attacker] != LOGEADO || victim == attacker)
return HAM_IGNORED;
if(get_user_flags(attacker) & ADMIN_FLAG) g_frags[attacker] += 2
else g_frags[attacker]++
check_rango(attacker)
return HAM_IGNORED;
}
check_rango(id) {
if(g_status[id] != LOGEADO)
return;
while(g_rango[id] < MAX_RANGOS && g_frags[id] >= rango[(g_rango[id]+1)][RANGO_FRAGS]) {
g_rango[id]++
client_print(id, print_chat, "[OFF] Has ascendido al rango: %s", rango[g_rango[id]][RANGO_NAME])
//client_print(id, print_chat, "[OFF] Has liberado el model: %s", rango[g_rango[id]][RANGO_WPNNAME])
}
while(g_frags[id] < rango[g_rango[id]][RANGO_FRAGS]) {
g_rango[id]--
client_print(id, print_chat, "[OFF] Has descendido al rango: %s", rango[g_rango[id]][RANGO_NAME])
}
if(g_rango[id] == MAX_RANGOS) {
g_frags[id] = rango[g_rango[id]][RANGO_FRAGS]
return;
}
g_save[id] = false
}
// Fun Comandos
public clcmd_write(id) {
new args[34]
read_args(args, charsmax(args))
remove_quotes(args); trim(args)
new commando[20]
read_argv(0, commando, charsmax(commando))
if(!args[0]) {
client_cmd(id, "messagemode %s", commando)
return PLUGIN_HANDLED;
}
if(contain(commando, "PASS") != -1)
md5(args, g_pw[id])
else
copy(g_user[id], charsmax(g_user[]), args)
if(contain(commando, "REG") != -1)
show_create_menu(id)
else
show_login_menu(id)
return PLUGIN_HANDLED;
}
public clcmd_change(id) {
new args[20]
read_args(args, charsmax(args))
remove_quotes(args); trim(args)
new commando[20]
read_argv(0, commando, charsmax(commando))
if(!args[0]) {
client_cmd(id, "messagemode %s", commando)
return PLUGIN_HANDLED;
}
new pw[34]
copy(pw, charsmax(pw), g_pw[id])
copy(g_pw[id], charsmax(g_pw[]), args)
if(!data(id, CHECK_PW)) {
client_print(id, print_chat, "[OFF] Password Invalida.")
client_cmd(id, "messagemode %s", commando)
return PLUGIN_HANDLED;
}
md5(pw, g_pw[id])
if(contain(commando, "NEW") != -1 && g_autorizado[id]) {
copy(g_pw[id], charsmax(g_pw[]), args)
client_print(id, print_chat, "[OFF] Tu nueva password es: %s", args)
g_autorizado[id] = false
data(id, CHANGE_PW)
}
else {
if(equal(g_pw[id], args)) {
client_print(id, print_center, "[OFF] Ingresa tu nueva password")
client_cmd(id, "messagemode INGRESAR_MYNEWPASSWORD")
g_autorizado[id] = true
}
else client_print(id, print_chat, "[OFF] Password Incorrecta.")
}
return PLUGIN_HANDLED;
}
public cmdCuenta(id) {
if(g_status[id] != LOGEADO)
return PLUGIN_HANDLED;
show_mycuenta_menu(id)
return PLUGIN_HANDLED;
}
public cmdRank(id) {
if(g_status[id] != LOGEADO)
return PLUGIN_HANDLED;
new rank = adv_vault_sort_key(g_vault, g_sort_top, g_id[id])
if(!rank)
return PLUGIN_HANDLED;
client_print(id, print_chat, "[OFF] Tu ranking en el servidor es %d de %d con %s Frags", rank, adv_vault_sort_numresult(g_vault, g_sort_top), add_point(g_frags[id]))
return PLUGIN_HANDLED;
}
public cmdTop(id) {
show_motd(id, g_top, "LOS 10 MAYORES RANGOS/FRAGS - [OFFCommunity]")
return PLUGIN_HANDLED;
}
public cmdTop2(id) {
show_motd(id, g_top2, "LOS 20 MAYORES RANGOS/FRAGS - [OFFCommunity]")
return PLUGIN_HANDLED;
}
public cmdTop3(id) {
show_motd(id, g_top3, "LOS 30 MAYORES RANGOS/FRAGS - [OFFCommunity]")
return PLUGIN_HANDLED;
}
public cmdModels(id, page) {
if(g_status[id] != LOGEADO)
return PLUGIN_HANDLED;
show_menu_models(id, 0)
return PLUGIN_HANDLED;
}
show_mycuenta_menu(id) {
new menu = menu_create("\r[OFF] \yConfiguracion de mi cuenta", "handler_mycuenta")
menu_additem(menu, "Configurar \yAutologeo", "")
menu_additem(menu, "Cambiar \yPassword", "")
//menu_additem(menu, "\yDeslogearme", "")
menu_display(id, menu)
}
public handler_mycuenta(id, menu, item) {
if(item == MENU_EXIT) {
menu_destroy(menu)
return PLUGIN_HANDLED;
}
switch(item) {
case 0: show_autologeo(id)
case 1: {
client_print(id, print_center, "[OFF] Ingresa tu password ACTUAL")
client_cmd(id, "messagemode INGRESAR_MYPASSWORD")
}
/*case 2: {
client_putinserver(id)
if(is_user_alive(id))
user_silentkill(id)
cs_set_user_team(id, CS_TEAM_UNASSIGNED)
client_print(id, print_center, "Te has deslogeado exitosamente.")
show_cuenta_menu(id)
}*/
}
return PLUGIN_HANDLED;
}
show_autologeo(id) {
new keyname[10], len[28], menu = menu_create("\r[OFF] \yConfiguracion de autologeo^n\wRegistra una IP o STEAMID, para que^n al ingresar al servidor se autologe a esta cuenta", "handler_autologeo")
for(new i = 0; i < 5; i++) {
formatex(keyname, charsmax(keyname), "%d_%d", g_id[id], i)
if(adv_vault_get_prepare(g_vault_al, _, keyname)) {
adv_vault_get_field(g_vault_al, g_vdata_al, len, charsmax(len))
format(len, charsmax(len), "\y%s", len)
menu_additem(menu, len, "")
}
else menu_additem(menu, "Slot libre", "")
}
menu_display(id, menu)
}
public handler_autologeo(id, menu, item) {
if(item == MENU_EXIT) {
show_mycuenta_menu(id)
return PLUGIN_HANDLED;
}
show_sub_autologeo(id, item)
return PLUGIN_HANDLED;
}
show_sub_autologeo(id, i) {
new len[70], szi[3], keyname[10], steam[25], ip[25], menu = menu_create("\r[OFF] \ySeleccione una opcion", "handler_subautologeo")
get_user_authid(id, steam, charsmax(steam))
get_user_ip(id, ip, charsmax(ip), 1)
num_to_str(i, szi, charsmax(szi))
formatex(keyname, charsmax(keyname), "%d_%d", g_id[id], i)
if(adv_vault_get_prepare(g_vault_al, _, keyname)) {
formatex(len, charsmax(len), "\dAgregar Mi SteamID \r(%s)", steam)
menu_additem(menu, len, szi)
formatex(len, charsmax(len), "\dAgregar Mi IP \r(%s)^n", ip)
menu_additem(menu, len, szi)
menu_additem(menu, "\wEliminar\w SteamID|IP", szi)
}
else {
formatex(len, charsmax(len), "Agregar Mi SteamID \y(%s)", steam)
menu_additem(menu, len, szi)
formatex(len, charsmax(len), "Agregar Mi IP \y(%s)^n", ip)
menu_additem(menu, len, szi)
menu_additem(menu, "\dEliminar SteamID|IP", szi)
}
menu_display(id, menu)
}
public handler_subautologeo(id, menu, item) {
if(item == MENU_EXIT) {
show_autologeo(id)
return PLUGIN_HANDLED;
}
new lol, szi[3], i
menu_item_getinfo(menu, item, lol, szi, charsmax(szi), _, _, lol)
i = str_to_num(szi)
new keyname[10]
formatex(keyname, charsmax(keyname), "%d_%d", g_id[id], i)
if(adv_vault_get_prepare(g_vault_al, _, keyname)) {
if(item == 2) {
adv_vault_removekey(g_vault_al, _, keyname)
client_print(id, print_center, "SteamID|IP Removido Exitosamente")
show_autologeo(id)
return PLUGIN_HANDLED;
}
show_sub_autologeo(id, i)
return PLUGIN_HANDLED;
}
if(item == 2) {
show_sub_autologeo(id, i)
return PLUGIN_HANDLED;
}
new key[25]
if(item) get_user_ip(id, key, charsmax(key), 1)
else get_user_authid(id, key, charsmax(key))
if(containi(key, "ID_LAN") != -1) {
client_print(id, print_center, "No eres STEAM")
show_sub_autologeo(id, i)
return PLUGIN_HANDLED;
}
adv_vault_set_start(g_vault_al)
adv_vault_set_field(g_vault_al, g_vdata_al, key)
adv_vault_set_end(g_vault_al, _, keyname)
client_print(id, print_center, "SteamID|IP Agregado Exitosamente")
show_autologeo(id)
return PLUGIN_HANDLED;
}
show_menu_models(id, page) {
new menu, len[150]
menu = menu_create("\r[OFF] \yModelos por rangos", "handler_models")
for(new i = 2; i <= MAX_RANGOS; i++) {
if(g_rango[id] >= i)
formatex(len, charsmax(len), "\y%s \w[Rango: %d-%s - Frags: %s]", rango[i][RANGO_WPNNAME], i, rango[i][RANGO_NAME], add_point(rango[i][RANGO_FRAGS]))
else
formatex(len, charsmax(len), "\d%s [Rango: %d-%s - Frags: %s]", rango[i][RANGO_WPNNAME], i, rango[i][RANGO_NAME], add_point(rango[i][RANGO_FRAGS]))
menu_additem(menu, len, "")
}
menu_display(id, menu, page)
}
public handler_models(id, menux, item) {
if(item == MENU_EXIT) {
menu_destroy(menux)
return PLUGIN_HANDLED;
}
new page, lol
player_menu_info(id, menux, lol, page)
show_menu_models(id, page)
return PLUGIN_HANDLED;
}
public cmdFrags(id, level, cid) {
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED;
new name[32]; read_argv(1, name, charsmax(name))
new player = cmd_target(id, name, CMDTARGET_ALLOW_SELF)
if(!player)
return PLUGIN_HANDLED;
new num[10]; read_argv(2, num, charsmax(num))
g_frags[player] += str_to_num(num)
new nameuser[32], nameadmin[32]
get_user_name(id, nameadmin, charsmax(nameadmin))
get_user_name(player, nameuser, charsmax(nameuser))
client_print(0, print_chat, "[OFF] Administrador %s: Regalar %s Frags a %s", nameadmin, num, nameuser)
check_rango(player)
return PLUGIN_HANDLED;
}
public cmdSay(id)
{
new szMessage[120]
read_args(szMessage, charsmax(szMessage));
remove_quotes(szMessage);
replace_all(szMessage, charsmax(szMessage), "%", " ");
replace_all(szMessage, charsmax(szMessage), "#", " ");
replace_all(szMessage, charsmax(szMessage), "!t", " ");
replace_all(szMessage, charsmax(szMessage), "!g", " ");
replace_all(szMessage, charsmax(szMessage), "!y", " ");
if (!ValidMessage(szMessage))
return PLUGIN_CONTINUE;
static said[200], name[32], tag[15]
if(!(cs_get_user_team(id) == CS_TEAM_CT || cs_get_user_team(id) == CS_TEAM_T)) tag = "*Spec*"
else if(!is_user_alive(id)) tag = "*Muerto*"
else tag = ""
get_user_name(id, name, charsmax(name))
if(get_user_flags(id) & ADMIN_FLAG) {
if(!tag[0]) formatex(said, charsmax(said), "!g.:ADMIN:. !t[%d!g-%s!t] %s!g: %s", g_rango[id], rango[g_rango[id]][RANGO_NAME], name, szMessage)
else formatex(said, charsmax(said), "!y%s !g.:ADMIN:. !t[%d!g-%s!t] %s!g: %s", tag, g_rango[id], rango[g_rango[id]][RANGO_NAME], name, szMessage)
}
else {
if(!tag[0]) formatex(said, charsmax(said), "!t[%d!g-%s!t] %s!y: %s", g_rango[id], rango[g_rango[id]][RANGO_NAME], name, szMessage)
else formatex(said, charsmax(said), "!y%s !t[%d!g-%s!t] %s!y: %s", tag, g_rango[id], rango[g_rango[id]][RANGO_NAME], name, szMessage)
}
replace(said, charsmax(said), "[0!g-", "[!g")
color_chat(id, said)
return PLUGIN_HANDLED_MAIN;
}
color_chat(colorid, message[])
{
replace_all(message, 190, "!g", "^x04")
replace_all(message, 190, "!t", "^x03")
replace_all(message, 190, "!y", "^x01")
console_print(0, message)
message_begin(MSG_ALL, g_msgSayText, {0, 0, 0}, 0)
write_byte(colorid)
write_string(message)
message_end()
}
ValidMessage(text[]) {
static len, i
len = strlen(text)
if(!len)
return false
for(i = 0; i < len; i++) {
if( text[i] != ' ' ) {
return true
}
}
return false
}
// Fun Guardado de datos
load_adv_vault() {
g_vault = adv_vault_open(DB_NAME, true)
g_vdata[DATA_PJ] = adv_vault_register_field(g_vault, "pj", DATATYPE_STRING, 32)
g_vdata[DATA_PW] = adv_vault_register_field(g_vault, "pw", DATATYPE_STRING, 34)
g_vdata[DATA_RANGO] = adv_vault_register_field(g_vault, "rg")
g_vdata[DATA_FRAGS] = adv_vault_register_field(g_vault, "fr")
adv_vault_init(g_vault)
g_sort_top = adv_vault_sort_create(g_vault, ORDER_DESC, 0, 0, g_vdata[DATA_FRAGS])
adv_vault_sort_update(g_vault, g_sort_top)
set_task(3.0, "load_top")
g_vault_al = adv_vault_open("autologeo", true)
g_vdata_al = adv_vault_register_field(g_vault_al, "key", DATATYPE_STRING, 25)
adv_vault_init(g_vault_al)
}
data(id, type) {
new prepare = adv_vault_get_prepare(g_vault, _, g_user[id])
switch(type) {
case CHECK_ID: {
if(strlen(g_user[id]) < 4)
return 0;
if(contain(g_user[id], " ") != -1)
return 0;
return 1;
}
case CHECK_ISID: return prepare;
case CHECK_PW: {
if(strlen(g_pw[id]) < 3)
return 0;
if(contain(g_pw[id], " ") != -1)
return 0;
return 1;
}
case CHECK_ISPW: {
if(!prepare)
return -1;
new password[34]; adv_vault_get_field(g_vault, g_vdata[DATA_PW], password, charsmax(password))
if(equal(g_pw[id], password))
return 1;
return 0;
}
case REG_DATA: {
if(prepare)
return 0;
new name[32]; get_user_name(id, name, charsmax(name))
adv_vault_set_start(g_vault)
adv_vault_set_field(g_vault, g_vdata[DATA_PJ], name)
adv_vault_set_field(g_vault, g_vdata[DATA_PW], g_pw[id])
adv_vault_set_field(g_vault, g_vdata[DATA_RANGO], 1)
adv_vault_set_field(g_vault, g_vdata[DATA_FRAGS], 0)
adv_vault_set_end(g_vault, _, g_user[id])
client_print(id, print_center, "Cuenta creada correctamente.")
show_cuenta_menu(id)
return 1;
}
case ING_DATA: {
if(!prepare)
return 0;
g_id[id] = adv_vault_get_keyindex(g_vault, g_user[id])
g_rango[id] = adv_vault_get_field(g_vault, g_vdata[DATA_RANGO])
g_frags[id] = adv_vault_get_field(g_vault, g_vdata[DATA_FRAGS])
client_print(id, print_center, "Usuario logeado correctamente.")
g_status[id] = LOGEADO
g_save[id] = true
client_cmd(id, "jointeam")
set_task(1.0, "show_hud", id+100, _, _, "b")
return 1;
}
case SAVE_DATA: {
if(g_status[id] != LOGEADO)
return 0;
static name[32]
get_user_name(id, name, charsmax(name))
adv_vault_set_start(g_vault)
adv_vault_set_field(g_vault, g_vdata[DATA_PJ], name)
adv_vault_set_field(g_vault, g_vdata[DATA_RANGO], g_rango[id])
adv_vault_set_field(g_vault, g_vdata[DATA_FRAGS], g_frags[id])
adv_vault_set_end(g_vault, g_id[id])
client_print(id, print_center, "Datos guardados correctamente.")
g_save[id] = true
return 1;
}
case CHANGE_PW: {
if(!prepare || g_status[id] != LOGEADO)
return 0
adv_vault_set_start(g_vault)
adv_vault_set_field(g_vault, g_vdata[DATA_PW], g_pw[id])
adv_vault_set_end(g_vault, g_id[id])
return 1;
}
}
return -2
}
public save_data() {
for(new id = 1; id <= 32; id++) {
if(is_user_connected(id) && g_status[id] == LOGEADO && !g_save[id])
data(id, SAVE_DATA)
}
adv_vault_sort_update(g_vault, g_sort_top)
set_task(3.0, "load_top")
}
public load_top() {
new len, len2, len3, key, keyname[100]
//g_top[0] = EOS
//g_top2[0] = EOS
//g_top3[0] = EOS
len = formatex(g_top[len], charsmax(g_top),
"<html><style>\
body { background: #040404; font-family: Verdana, Arial, Sans-Serif; font-size: 7pt;}\
.t { color: #808080; text-align: left; }\
.h { background: #222 url('http://onlyarg.com/foro/images/Amiral/thead.png') repeat-x; color:#000; font-weight: bold;}\
.p { color: #D41313; }\
.n { color: #fff; }\
</style><body>\
<br><br><table border=0 cellspacing=0 cellpadding=4 align=center width=100%% class=t>")
len += formatex(g_top[len], charsmax(g_top)-len,
"<tr><td class=h width=7%%>#</td>\
<td class=h>Nombre</td>\
<td class=h>Rango</td>\
<td class=h>Frags</td></tr>")
len2 = formatex(g_top2[len2], charsmax(g_top2),
"<html><style>\
body { background: #040404; font-family: Verdana, Arial, Sans-Serif; font-size: 7pt;}\
.t { color: #808080; text-align: left; }\
.h { background: #222 url('http://onlyarg.com/foro/images/Amiral/thead.png') repeat-x; color:#000; font-weight: bold;}\
.p { color: #D41313; }\
.n { color: #fff; }\
</style><body>\
<br><br><table border=0 cellspacing=0 cellpadding=4 align=center width=100%% class=t>")
len2 += formatex(g_top2[len2], charsmax(g_top2)-len2,
"<tr><td class=h width=7%%>#</td>\
<td class=h>Nombre</td>\
<td class=h>Rango</td>\
<td class=h>Frags</td></tr>")
len3 = formatex(g_top3[len3], charsmax(g_top3),
"<html><style>\
body { background: #040404; font-family: Verdana, Arial, Sans-Serif; font-size: 7pt;}\
.t { color: #808080; text-align: left; }\
.h { background: #222 url('http://onlyarg.com/foro/images/Amiral/thead.png') repeat-x; color:#000; font-weight: bold;}\
.p { color: #D41313; }\
.n { color: #fff; }\
</style><body>\
<br><br><table border=0 cellspacing=0 cellpadding=4 align=center width=100%% class=t>")
len3 += formatex(g_top3[len3], charsmax(g_top3)-len3,
"<tr><td class=h width=7%%>#</td>\
<td class=h>Nombre</td>\
<td class=h>Rango</td>\
<td class=h>Frags</td></tr>")
new i
for(i = 1; i <= 10; i++) {
key = adv_vault_sort_position(g_vault, g_sort_top, i)
if(!adv_vault_get_prepare(g_vault, key))
continue;
adv_vault_get_field(g_vault, g_vdata[DATA_PJ], keyname, 31)
replace_all(keyname, charsmax(keyname), "<", "<")
replace_all(keyname, charsmax(keyname), ">", ">")
len += formatex(g_top[len], charsmax(g_top)-len,\
"<tr><td class=p>#%d</td>\
<td class=n>%s</td>\
<td>%s</td>\
<td>%d</td>", i, keyname, rango[adv_vault_get_field(g_vault, g_vdata[DATA_RANGO])][RANGO_NAME], adv_vault_get_field(g_vault, g_vdata[DATA_FRAGS]))
}
for(i = 11; i <= 20; i++) {
key = adv_vault_sort_position(g_vault, g_sort_top, i)
if(!adv_vault_get_prepare(g_vault, key))
continue;
adv_vault_get_field(g_vault, g_vdata[DATA_PJ], keyname, 31)
replace_all(keyname, charsmax(keyname), "<", "<")
replace_all(keyname, charsmax(keyname), ">", ">")
len2 += formatex(g_top2[len2], charsmax(g_top2)-len2,\
"<tr><td class=p>#%d</td>\
<td class=n>%s</td>\
<td>%s</td>\
<td>%d</td>", i, keyname, rango[adv_vault_get_field(g_vault, g_vdata[DATA_RANGO])][RANGO_NAME], adv_vault_get_field(g_vault, g_vdata[DATA_FRAGS]))
}
for(i = 21; i <= 30; i++) {
key = adv_vault_sort_position(g_vault, g_sort_top, i)
if(!adv_vault_get_prepare(g_vault, key))
continue;
adv_vault_get_field(g_vault, g_vdata[DATA_PJ], keyname, 31)
replace_all(keyname, charsmax(keyname), "<", "<")
replace_all(keyname, charsmax(keyname), ">", ">")
len3 += formatex(g_top3[len3], charsmax(g_top3)-len3,\
"<tr><td class=p>#%d</td>\
<td class=n>%s</td>\
<td>%s</td>\
<td>%d</td>", i, keyname, rango[adv_vault_get_field(g_vault, g_vdata[DATA_RANGO])][RANGO_NAME], adv_vault_get_field(g_vault, g_vdata[DATA_FRAGS]))
}
add(g_top, charsmax(g_top)-len, "</table></body></html>")
add(g_top2, charsmax(g_top2)-len2, "</table></body></html>")
add(g_top3, charsmax(g_top3)-len3, "</table></body></html>")
}
create_filedb() {
new datex[100], datex2[100]
get_time("%d-%m-%Y", datex, charsmax(datex))
get_time("%d-%m-%Y", datex2, charsmax(datex2))
format(datex, charsmax(datex), "addons/amxmodx/data/copiasCTF/%s.dat", datex)
if(!file_exists(datex))
CopyFile("addons/amxmodx/data/adv_vault/sv/data.dat", datex)
format(datex2, charsmax(datex2), "addons/amxmodx/data/copiasLOGEO/%s.dat", datex2)
if(!file_exists(datex2))
CopyFile("addons/amxmodx/data/adv_vault/autologeo/data.dat", datex2)
}
CopyFile(const szFile[], const szNewFile[])
{
log_to_file("Copy.log", "Iniciando la copia del archivo ^"%s^" a ^"%s^"", szFile, szNewFile);
new iFile = fopen(szFile, "rb"),
iNewFile = fopen(szNewFile, "wb"),
iFileSize,
iReadSize,
szBuffer[1024];
if (iFile && iNewFile)
{
fseek(iFile, 0, SEEK_END);
iFileSize = ftell(iFile);
fseek(iFile, 0, SEEK_SET);
for (new iIndex = 0; iIndex < iFileSize; iIndex += 256)
{
iReadSize = fread_blocks(iFile, szBuffer, 256, BLOCK_CHAR);
fwrite_blocks(iNewFile, szBuffer, iReadSize, BLOCK_CHAR);
}
log_to_file("Copy.log", "Se ha terminado de copiar el archivo.");
}
else
{
log_to_file("Copy.log", "No se pudo abrir el archivo a copiar o no se pudo crear la nueva copia.");
}
fclose(iFile);
fclose(iNewFile);
}
// Fun Stocks
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;
}
Pliz?
SI NO VAS AYUDAR, POR FAVOR NO COMENTAR