03/02/2017, 12:07 PM
Introducción
Bueno esta es una modificación de los rangos de kikizon que le agregue el shop de CSAxel, bueno aclaro que no estoy roban autor ni nada
Se que no es la gran cosa pero los que no sepan como hacerlo le va a servir
Características
Guardado nfvault
Las habilidades facil de modificar para el rango especificado
Prefijo para los admins (DUEÑO, STAFF Y ADMINS)
Admins chat colors
Cuando pasas de rango, los frags se resetean, osea, haces 100 frag, subis a 100, se resetea y para el proximo rango vas a necesitar 200 frags
Espero que les guste, si hay que modificar algo me dicen.
Y ya que estamos, alguien me puede decir como hacerle guardado por HID
Bueno esta es una modificación de los rangos de kikizon que le agregue el shop de CSAxel, bueno aclaro que no estoy roban autor ni nada
Se que no es la gran cosa pero los que no sepan como hacerlo le va a servir
Características
Guardado nfvault
Las habilidades facil de modificar para el rango especificado
Prefijo para los admins (DUEÑO, STAFF Y ADMINS)
Admins chat colors
Cuando pasas de rango, los frags se resetean, osea, haces 100 frag, subis a 100, se resetea y para el proximo rango vas a necesitar 200 frags
Código PHP:
/* -----------------------------------------
Creditos: Solo para Raulitop, por el hook say :3
Version Con Guardado NFVAULT
------------------------------- */
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <nfvault>
new const PLUGIN[] = "Rangos CS:GO";
#define VERSION "1.0"
new const AUTHOR[] = "kikizon";
/* =============================================
|= [EMPIEZA SECCION MODIFICABLE] =|
==============================================*/
/* ====================================
*[CONSTANTES]*
=====================================*/
//new const Web[] = "web de tu comunidad" // Se Muestra en HUD (para habilitar sacar las // de atras del new
new const Prefijo[] = "!g[RANGOS]!y";// Prefijo en say
new const Sonido[] = "rango/up.wav"; // Sonido Rango UP
new Flags;
new g_AdminTag[33][10];
enum _:Data2 {
TAG[10],
FLAG
};
new const AdminsTags[][Data2] = {
{ "[DUEÑO]", ADMIN_RCON },
{ "[STAFF]", ADMIN_IMMUNITY },
{ "[ADMIN]", ADMIN_KICK }
};
/* ====================================
*[CONST NOMBRES DE RANGOS]*
=====================================*/
enum _:DATA
{
NOMBRE[30],
FRAGS
};
new const Rangos[][DATA] = {
{ "Novato", 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 },
{ "", 99999 } //fix
};
new const szPrefix[] = "SHOP";
enum _:DATA_SHOP
{
NAME_ITEM[38],
COST_ITEM,
LEVEL_ITEM
};
new const szShop_Items[][DATA_SHOP] = {
{ "Pack de granadas", 10000, 1 }, // el 1 vendría a ser el primer rango (Novato)
{ "+100 Vida \r(1 Ronda)", 7500, 1 },
{ "+250 Vida \r(1 Ronda)", 1100, 1 },
{ "-300 Gravedad \r(Hasta morir)", 12000, 2 }, // el 2 vendría a ser el segundo rango (Silver I)
{ "Pasos silenciosos \r(Hasta morir)", 10000, 2 },
{ "Desert Eagle.50 \r(2 balas)", 13500, 2 },
{ "AWP Magnum Sniper \r(1 bala)", 15000, 2 },
{ "Disfraz de traidor \r(1 ronda)", 13000, 2},
{ "Invisibilidad \r(Hasta morir)", 16000, 3 } // el 3 vendría ser el tercer rango (Silver II) y a si sucesivamente....... es totalmente modificable a su gusto
};
new g_bAlreadyBuy;
new g_MsgID_SayText;
/* =============================================
|= [TERMINA SECCION MODIFICABLE] =|
==============================================*/
/* ====================================
*[VARIABLES]*
=====================================*/
new g_rango[33], g_frags[33];
new SyncHUD, g_maxplayers, g_msgTeamInfo, g_msgSayText, g_playername[33][32];
#define TASK_HUD 2100
#define ID_HUD (taskid - TASK_HUD)
#define XD is_user_connected(id) || !is_user_bot(id) || !is_user_hltv(id)
new VaultRango[128], szRangos[180], szKey[30];
/* ====================================
*[Cvars]*
=====================================*/
new cvar_Hud, cvar_knifex2, cvar_hsx2;
/* ====================================
*[INIT]*
=====================================*/
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_event("DeathMsg", "Event_DeathMsg", "a");
register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0");
register_clcmd("say /shop", "Clcmd_Shop");
register_clcmd("say_team /shop", "Clcmd_Shop");
register_logevent("logevent_round_end", 2, "1=Round_End");
register_clcmd("say", "message_saytext");
register_clcmd("say_team", "message_sayteam");
g_MsgID_SayText = get_user_msgid("SayText");
/* =============================================
|= [EMPIEZA SECCION MODIFICABLE] =|
==============================================*/
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
/* =============================================
|= [TERMINA SECCION MODIFICABLE] =|
==============================================*/
SyncHUD = CreateHudSyncObj();
g_maxplayers = get_maxplayers();
g_msgTeamInfo = get_user_msgid("TeamInfo");
g_msgSayText = get_user_msgid("SayText");
nfv_file("Ranguitos", VaultRango, charsmax(VaultRango));
}
/* ====================================
*[PRECACHE]*
=====================================*/
public plugin_precache()
precache_sound(Sonido);
/* ===================================
*[HUD]*
=====================================*/
public HUD(taskid) {
new id = ID_HUD;
if (!is_user_alive(id)) {
id = pev(id, pev_iuser2);
if (!is_user_alive(id)) return;
}
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(255, 0, 0, 0.0, 0.20, 0, 6.0, 1.0);
ShowSyncHudMsg(ID_HUD, SyncHUD, "Frags: %d^nRango: %s^nSig. Rango: %s^nFrags Restantes: %d", g_frags[id], Rangos[g_rango[id]][NOMBRE], Rangos[g_rango[id]+1][NOMBRE], Rangos[g_rango[id]][FRAGS] - g_frags[id])
}
}
/* ==================================
[PUTINSERVER]
===================================*/
public client_putinserver(id) {
{
g_rango[id] = 1;
g_bAlreadyBuy &= ~(1<<(id-1));
}
get_user_name( id, g_playername[ id ], charsmax( g_playername[ ] ) );
g_rango[id] = 0;
g_frags[id] = 0;
Cargar(id);
if(get_pcvar_num(cvar_Hud))
set_task(1.0, "HUD", id+TASK_HUD, _, _, "b");
if(!is_user_admin(id)) {
copy(g_AdminTag[id], charsmax(g_AdminTag[]), "");
return;
}
Flags = get_user_flags( id );
for(new i; i < sizeof AdminsTags; i++) {
if(Flags & AdminsTags[i][FLAG]) {
copy(g_AdminTag[id], charsmax(g_AdminTag[]), AdminsTags[i][TAG]);
break;
}
}
}
public Event_NewRound()
g_bAlreadyBuy = 0;
public Clcmd_Shop(id)
{
if (!is_user_alive(id))
{
ChatColor(id, "^x04[%s]^x01 Tienes que estar vivo para abrir el shop", szPrefix);
return PLUGIN_HANDLED;
}
ShowMenu_Shop(id);
return PLUGIN_HANDLED;
}
public ShowMenu_Shop(id)
{
if (!is_user_alive(id))
return;
static iMenu, szText[64], szInfoLevel[12], i;
formatex(szText, charsmax(szText), "MENú SHOP%s", g_bAlreadyBuy & (1<<(id-1)) ? "^n\rYa compraste un item. Espera a la próxima ronda.\w" : "\r");
iMenu = menu_create(szText, "HandleMenu_Shop");
for (i = 0; i < sizeof(szShop_Items); i++)
{
if (g_rango[id] >= szShop_Items[i][LEVEL_ITEM])
szInfoLevel[0] = '^0';
else
formatex(szInfoLevel, charsmax(szInfoLevel), " \r(N: %d)", szShop_Items[i][LEVEL_ITEM]);
formatex(szText, charsmax(szText), "%s \w[\y$%d\w]%s", szShop_Items[i][NAME_ITEM], szShop_Items[i][COST_ITEM], szInfoLevel);
menu_additem(iMenu, szText, _, _, menu_makecallback("CallBack_Shop"));
}
menu_setprop(iMenu, MPROP_BACKNAME, "ATRÃS");
menu_setprop(iMenu, MPROP_NEXTNAME, "SIGUIENTE");
menu_setprop(iMenu, MPROP_EXITNAME, "SALIR");
menu_display(id, iMenu);
}
public CallBack_Shop(id, iMenu, iItem)
{
if (g_bAlreadyBuy & (1<<(id-1)))
return ITEM_DISABLED;
if (cs_get_user_money(id) < szShop_Items[iItem][COST_ITEM])
return ITEM_DISABLED;
if (g_rango[id] < szShop_Items[iItem][LEVEL_ITEM])
return ITEM_DISABLED;
return ITEM_ENABLED;
}
public HandleMenu_Shop(id, iMenu, iItem)
{
if (iItem == MENU_EXIT)
return PLUGIN_HANDLED;
if (!is_user_alive(id))
return PLUGIN_HANDLED;
switch (iItem)
{
case 0:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
}
case 1: set_user_health(id, get_user_health(id) + 100);
case 2: set_user_health(id, get_user_health(id) + 250);
case 3: set_user_gravity(id, 0.5);
case 4: set_user_footsteps(id, 1);
case 5: cs_set_weapon_ammo(give_item(id, "weapon_deagle"), 2);
case 6: cs_set_weapon_ammo(give_item(id, "weapon_awp"), 1);
case 7: {
if (get_user_team(id)==1)
{
cs_set_user_model(id, "urban")
}
else
{
cs_set_user_model(id, "guerilla")
}
}
case 8: set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAdd, 10);
}
g_bAlreadyBuy |= (1<<(id-1));
cs_set_user_money(id, cs_get_user_money(id) - szShop_Items[iItem][COST_ITEM]);
ChatColor(id, "^x04[%s]^x01 Compraste: ^x04%s", szPrefix, szShop_Items[iItem][NAME_ITEM]);
return PLUGIN_HANDLED;
}
/* ==================================
[DISCONNECT]
===================================*/
public client_disconnect(id) {
if(XD) Guardar(id);
remove_task(id+TASK_HUD);
}
/* ==================================
[ROUND END]
===================================*/
public logevent_round_end() {
for(new id = 1; id <= g_maxplayers; id++) {
if(XD)
Guardar(id);
}
}
/* ==================================
[DEATHMSG]
===================================*/
public Event_DeathMsg() {
new attacker = read_data(1);
new victim = read_data(2);
new hs = read_data(3);
new weaponid = get_user_weapon(attacker);
if(victim == attacker) return;
if(is_user_alive(attacker)) {
g_frags[attacker]+= is_user_admin(attacker)? 2 : 1;
if(get_pcvar_num(cvar_knifex2)) {
if(weaponid == CSW_KNIFE)
g_frags[attacker]+= is_user_admin(attacker)? 3 : 1;
}
if(get_pcvar_num(cvar_hsx2)) {
if(hs)
g_frags[attacker]+= is_user_admin(attacker)? 3 : 1;
}
AumentarRango(attacker);
}
}
/* ================================
[UPDATE RANGO]
=================================*/
AumentarRango(id) {
new Aumento = false;
while(g_frags[id] >= Rangos[g_rango[id]][FRAGS]) {
Aumento = true;
g_rango[id]++;
}
if(Aumento) {
chatcolor(id, "%s Felicidades subiste al rango: !g[ %s ]", Prefijo, Rangos[g_rango[id]][NOMBRE]);
client_cmd(id, "spk %s", Sonido);
Aumento = false;
}
}
/*=====================================
*[SAY]*
=====================================*/
public message_saytext(id) {
static said[192];
read_args(said, charsmax(said));
remove_quotes(said);
if (said[0] == '%' || said[0] == '.' || said[0] == '!' || equal (said, ""))
return PLUGIN_HANDLED;
if (!ValidMessage(said, 1)) return PLUGIN_CONTINUE;
static color[11], name[32], alive[11];
get_user_team(id,color,charsmax(color));
get_user_name(id,name,charsmax(name));
if (is_user_alive (id)) {
alive = "";
} else {
alive = "(MUERTO)";
}
if (is_user_admin(id)) {
if (get_user_flags(id))
format(said, charsmax(said), "^x01%s (^x04%s^x01)^x04 %s^x01-> ^x03 %s ^x01: ^x04%s", alive, Rangos[g_rango[id]][NOMBRE], g_AdminTag[id], name, said);
} else
{
format(said, charsmax(said), "^x01%s (^x04 %s^x01) ^x03%s ^x01: %s", alive, Rangos[g_rango[id]][NOMBRE], name, said);
}
static i, team[11];
for (i = 1; i <= g_maxplayers; i++) {
if (!is_user_connected(i)) continue;
get_user_name(id,name,charsmax(name));
if (is_user_admin(i) || 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)
{
static said[192];
read_args(said, charsmax(said)) ;
remove_quotes(said);
if ( 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, "TT");
case 2: copy (playerTeamName, 8, "CT");
default: copy (playerTeamName, 11, "**SPEC**");
}
static color[11], name[32], alive[11];
get_user_team(id,color,charsmax(color));
get_user_name(id,name,charsmax(name));
if (is_user_alive (id)) {
alive = "";
} else {
alive = "(MUERTO)";
}
if (is_user_admin(id)) {
if (get_user_flags(id))
format(said, charsmax(said), "^x01%s [^x04%s^x01] (^x04%s^x01)^x04 %s^x01-> ^x03 %s ^x01: %s", alive, playerTeam, Rangos[g_rango[id]], g_AdminTag[id], name, said);
} else {
format(said, charsmax(said), "^x01%s [^x04%s^x01] (^x04%s^x01)^x03 %s ^x01: %s", alive, playerTeam, Rangos[g_rango[id]],name, said);
}
static i, team[11];
for (i = 1; i <= g_maxplayers; i++) {
if (!is_user_connected(i)) continue;
get_user_name(id,name,charsmax(name));
if (get_user_team(i) == playerTeam || is_user_admin(i)) {
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[]) {
message_begin(MSG_ONE, g_msgTeamInfo, _, player);
write_byte(player);
write_string(team);
message_end();
}
public writeMessage(player, message[]) {
message_begin(MSG_ONE, g_msgSayText, {0, 0, 0}, player);
write_byte(player);
write_string(message);
message_end();
}
/* ===================================
*[GUARDADO]*
=====================================*/
Guardar(id) {
formatex(szKey, charsmax(szKey), "data_rangos");
formatex(szRangos, charsmax(szRangos), "%d %d", g_frags[id], g_rango[id]);
nfv_set_data(VaultRango, szKey, g_playername[id], szRangos);
}
Cargar(id) {
new g_load_c1[25], g_load_c2[25];
formatex(szKey, charsmax(szKey), "data_rangos");
if(!nfv_get_data(VaultRango, szKey, g_playername[id], szRangos, sizeof(szRangos) - 1)) return;
parse(szRangos, g_load_c1, charsmax(g_load_c1), g_load_c2, charsmax(g_load_c2));
g_frags[id] = str_to_num(g_load_c1);
g_rango[id] = str_to_num(g_load_c2);
}
/* ===================================
*[STOCKS]*
=====================================*/
// stock de chatcolor
stock chatcolor( id, const input[], any:... )
{
static szMsg[ 191 ], msgSayText;
if( !msgSayText )
msgSayText = get_user_msgid( "SayText" );
vformat( szMsg, 190, input, 3 );
replace_all( szMsg, 190, "!g", "^4" );
replace_all( szMsg, 190, "!y", "^1" );
replace_all( szMsg, 190, "!t", "^3" );
message_begin( id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgSayText, .player = id );
write_byte( id ? id : 33 );
write_string( szMsg );
message_end( );
}
// Stock para Saber Si el mensaje es valido
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;
}
stock ChatColor(id, const input[], any:...)
{
static szMsg[191];
vformat(szMsg, charsmax(szMsg), input, 3);
message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, g_MsgID_SayText, .player = id);
write_byte(id ? id : 33);
write_string(szMsg);
message_end();
}
Espero que les guste, si hay que modificar algo me dicen.
Y ya que estamos, alguien me puede decir como hacerle guardado por HID
Aprendiendo 5%