Idea que salio por un usuario en un foro de una comunidad mexicana
Dejo mi codigo aqui a la rapidita
Son records, al final del mapa hay una meta y guardara el tiempo que tardaste en pasar el mapa, y ademas viene con un top de los mejores 5 records por cada mapa
Este plugin les puede servir para: Deathrun, Zombie Escape, KZ
Codigo
Nota: Para este plugin necesitaras modificar adv_vault ya que por cada mapa que agreges es un nuevo sort (top) asi que iras a
Dejo mi codigo aqui a la rapidita
Son records, al final del mapa hay una meta y guardara el tiempo que tardaste en pasar el mapa, y ademas viene con un top de los mejores 5 records por cada mapa
Este plugin les puede servir para: Deathrun, Zombie Escape, KZ
Codigo
Código PHP:
#include <amxmodx>
#include <adv_vault>
#include <fakemeta>
#include <engine>
#define PLUGIN "Codigo de records"
#define VERSION "1.0"
#define AUTHOR "Metrikcz"
#define MODEL_meta "models/meta.mdl"
new const g_maps[][] = {
"ze_area51_lg",
"ze_5tazona_lg"
}
new const Float:g_map_origin[][3] = {
{-384.30, 617.40, 86.03}, //{"ze_area51_lg"},
{-898.74, 1530.76, 810.03} //{"ze_5tazona_lg"},
}
new Float:g_record[33][30], g_touched[33], Float:g_tiempo[33], g_sort_map[30], g_menu_map[30], g_vault_map, Float:g_gametime, g_mapa, g_vdatamap[30]
new g_user[33][32]
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_forward(FM_Touch, "fw_Touch")
register_logevent("logevent_round_start", 2, "1=Round_Start")
register_logevent("logevent_round_end", 2, "1=Round_End")
register_clcmd("say /records", "show_menu_records")
new mapname[32]; get_mapname(mapname, 31)
for(new i = 0; i < sizeof g_maps; i++) {
if(equal(mapname, g_maps[i])) {
g_mapa = i
break;
}
}
load_adv_vault()
create_meta()
}
public plugin_precache()
precache_model(MODEL_meta)
public logevent_round_start() {
g_gametime = get_gametime()
for(new id = 1; id <= 32; id++) g_tiempo[id] = 1.00 // con arrayset me da waring :P
arrayset(g_touched, 0, 33)
}
public logevent_round_end() {
adv_vault_sort_update(g_vault_map, g_sort_map[g_mapa])
set_task(3.0, "load_top_records")
}
public fw_Touch(ent, victim) {
if (!pev_valid(ent))
return FMRES_IGNORED;
new EntClassName[32]
entity_get_string(ent, EV_SZ_classname, EntClassName, charsmax(EntClassName))
if(equal(EntClassName, "meta") && is_user_alive(victim) && !g_touched[victim])
load_record(victim)
return FMRES_IGNORED;
}
load_record(id) {
g_touched[id] = true
g_tiempo[id] = get_gametime() - g_gametime
if(g_tiempo[id] < g_record[id][g_mapa]) {
g_record[id][g_mapa] = g_tiempo[id]
client_print(id, print_chat, "Tienes un nuevo record: %.2f", g_tiempo[id])
adv_vault_set_start(g_vault_map)
adv_vault_set_field(g_vault_map, g_vdatamap[g_mapa], _:g_tiempo[id])
adv_vault_set_end(g_vault_map, _, g_user[id])
}
else
client_print(id, print_chat, "Hiciste un tiempo de %.2f pero no fue suficiente", g_tiempo[id])
}
create_meta()
{
log_amx("mapa %s (%d)", g_maps[g_mapa], g_mapa)
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(!ent) return;
engfunc(EngFunc_SetModel, ent, MODEL_meta)
set_pev(ent, pev_solid, SOLID_TRIGGER)
set_pev(ent, pev_classname, "meta")
engfunc(EngFunc_SetSize, ent, Float:{-150.0, -1.0, -150.0}, Float:{150.0, 1.0, 150.0})
set_pev(ent, pev_mins, Float:{-150.0, -1.0, -150.0})
set_pev(ent, pev_maxs, Float:{150.0, 1.0, 150.0})
engfunc(EngFunc_SetOrigin, ent, g_map_origin[g_mapa])
}
load_adv_vault() {
g_vault_map = adv_vault_open("Record", true)
for(new i = 0; i < sizeof g_maps; i++)
g_vdatamap[i] = adv_vault_register_field(g_vault_map, g_maps[i])
adv_vault_init(g_vault_map)
for(new i = 0; i < sizeof g_maps; i++) {
g_sort_map[i] = adv_vault_sort_create(g_vault_map, ORDER_ASC, 0, 5000, g_vdatamap[i])
adv_vault_sort_update(g_vault_map, g_sort_map[i])
}
set_task(3.0, "create_tops")
}
public create_tops() {
new key, keyname[32], len[150]
for(new map = 0; map < sizeof g_maps; map++) {
formatex(len, charsmax(len), "^n\wTop Records^nMapa: \y%s^n", g_maps[map])
g_menu_map[map] = menu_create(len, "handler_map")
for(new i = 1; i <= 5; i++) {
key = adv_vault_sort_position(g_vault_map, g_sort_map[map], i)
adv_vault_get_keyname(g_vault_map, key, keyname, charsmax(keyname))
if(!adv_vault_get_prepare(g_vault_map, key))
continue;
formatex(len, charsmax(len), "%s:\y %.2f", keyname, Float:adv_vault_get_field(g_vault_map, g_vdatamap[map]))
menu_additem(g_menu_map[map], len, "")
}
}
}
public load_top_records() {
new key, keyname[32], len[150], map
map = g_mapa
menu_destroy(g_menu_map[map])
formatex(len, charsmax(len), "^n \wTop Records^nMapa: \y%s^n", g_maps[map])
g_menu_map[map] = menu_create(len, "handler_map")
for(new i = 1; i <= 5; i++) {
key = adv_vault_sort_position(g_vault_map, g_sort_map[map], i)
adv_vault_get_keyname(g_vault_map, key, keyname, charsmax(keyname))
if(!adv_vault_get_prepare(g_vault_map, key))
continue;
formatex(len, charsmax(len), "%s:\y %.2f", keyname, Float:adv_vault_get_field(g_vault_map, g_vdatamap[map]))
menu_additem(g_menu_map[map], len, "")
}
}
public show_menu_records(id) {
new len[70], menu = menu_create("^n \yTop Records", "handler_records")
for(new x = 0; x < sizeof g_maps; x++) {
formatex(len, charsmax(len), "%s \y(\rTu Record: \y%.2f)", g_maps[x], g_record[id][x])
menu_additem(menu, len, "")
}
menu_display(id, menu)
}
public handler_records(id, menu, item) {
if(item != MENU_EXIT)
menu_display(id, g_menu_map[item])
}
public handler_map(id, menu, item) {
}
Nota: Para este plugin necesitaras modificar adv_vault ya que por cada mapa que agreges es un nuevo sort (top) asi que iras a
Código PHP:
const MAX_SORT = 30 // Maximo numero de mapas que pondras
Todos los MODS VHL totalmente gratuitos Descarga Aqui
Mis plugins:
STEAM: https://steamcommunity.com/id/Metrikcz/
FB: fb.com/rwoong
Venta plugins a pedido en México mándame MP
Mis plugins:
Granada Rayo. *Aprobado*
Suicidio Explosivo. *Aprobado*
Duelo Deagle. *Aprobado*
Automatic Give Weapons In Respawn.
[ZP] Extra Item: Zombie NPC Deimos.
Suicidio Explosivo. *Aprobado*
Duelo Deagle. *Aprobado*
Automatic Give Weapons In Respawn.
[ZP] Extra Item: Zombie NPC Deimos.
STEAM: https://steamcommunity.com/id/Metrikcz/
FB: fb.com/rwoong
Venta plugins a pedido en México mándame MP