Son los rangos de kikizone con knifes es algo fácil pero acá lo dejo si alguien busca esto.
no lo probé pero compila si hay algo malo me dicen,
lo aporte con tal de que no se pierda en los pedidos
nFvault
Una mierda que hize sin testear jaja
es esto;
delected
no lo probé pero compila si hay algo malo me dicen,
lo aporte con tal de que no se pierda en los pedidos
nFvault
Código PHP:
#include amxmisc
#include fakemeta
#include nfvault
#include hamsandwich
#include cstrike
#include ColorChat
new const Web[] = "AMXMODX-ES.COM" // Se Muestra en HUD
new const Prefijo[] = "!g[RANGOS]!y" // Prefijo en say
new const Sonido[] = "rango/up.wav" // Sonido Rango UP
new const PLUGIN[][] = { "Rangos CSGO + Knifes", "1.0", "kikizon" }
enum _:DATA_K { K_NOMBRE[ 32 ], VMDL[ 30 ], PMDL[ 30 ], NECESARIO }
enum _:DATA {NOMBRE[30], FRAGS }
new const Knifes[ ][ DATA_K ] = {
{ "Normal", "v_knife", "p_knife", 1 },
{ "Knife feo :v", "v_knife", "p_knife", 2 }
};
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 },
{ "", 99999 } //fix
}
new g_rango[33], g_frags[33], kElegido[ 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[0], PLUGIN[1], PLUGIN[2])
register_event("DeathMsg", "Event_DeathMsg", "a")
register_logevent("logevent_round_end", 2, "1=Round_End")
RegisterHam(Ham_Item_Deploy, "weapon_knife", "ham_KnifeDeployPost", true);
register_clcmd("say", "message_saytext")
register_clcmd("say_team", "message_sayteam")
register_clcmd("asd", "ShowMenuKnifes")
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
SyncHUD = CreateHudSyncObj()
g_maxplayers = get_maxplayers()
g_msgTeamInfo = get_user_msgid("TeamInfo")
g_msgSayText = get_user_msgid("SayText")
nfv_file("Ranguitos", VaultRango, charsmax(VaultRango))
}
public plugin_precache() {
static i, buffer[300];
for(i = 0; i < sizeof Knifes; ++i)
{
formatex( buffer, charsmax(buffer), "models/%s.mdl", Knifes[ i ][ VMDL ] );
precache_model( buffer );
formatex( buffer, charsmax(buffer), "models/%s.mdl", Knifes[ i ][ PMDL ] );
precache_model( buffer );
}
precache_sound(Sonido)
}
public ham_KnifeDeployPost(wpn) {
static id; id = get_weapon_ent_owner(wpn);
if (!pev_valid(id) || !is_user_alive( id )) return;
static WeaponID; WeaponID = cs_get_weapon_id(wpn);
static buffer[128];
if(WeaponID == CSW_KNIFE)
{
formatex( buffer, charsmax( buffer ), "models/%s.mdl", Knifes[kElegido[id]][VMDL]);
set_pev(id, pev_viewmodel2, buffer );
formatex( buffer, charsmax( buffer ), "models/%s.mdl", Knifes[kElegido[id]][PMDL]);
set_pev(id, pev_weaponmodel2, buffer);
}
}
public ShowMenuKnifes( index ) {
static k, menu, string[80]; menu = menu_create( "\rMenu de Cuchillos", "menu_knifes" );
for( k = 0; k < sizeof Knifes; ++k )
{
if(g_rango[ index ] >= Knifes[ k ][ NECESARIO ])
menu_additem( menu, Knifes[ k ][ K_NOMBRE ], "" );
else
{
formatex( string, charsmax( string ), "\d%s \y[ \r%s \y]", Knifes[ k ][ K_NOMBRE ], Rangos[ Knifes[k][NECESARIO]][NOMBRE]);
menu_additem( menu, string, "" );
}
}
menu_display( index, menu );
return PLUGIN_HANDLED;
}
public menu_knifes( index, menu, item ){
if(item == MENU_EXIT){
menu_destroy( menu );
return PLUGIN_HANDLED;
}
if(g_rango[ index ] < Knifes[ item ][ NECESARIO ])
{
ColorChat( index, NORMAL, "Necesitas ser rango: !g^"%s^" !npara usar este knife", Rangos[ Knifes[item][NECESARIO]][NOMBRE]);
ShowMenuKnifes( index );
return PLUGIN_HANDLED;
}
kElegido[ index ] = item;
engclient_cmd( index, "weapon_knife");
menu_destroy( menu );
return PLUGIN_HANDLED;
}
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(0, 255, 0, 0.0, 0.20, 1, 6.0, 1.0)
ShowSyncHudMsg(ID_HUD, SyncHUD, "=======================^nFrags: %d^nRango: %s^n=======================^nSig. Rango: %s^nFrags 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)
}
}
/* ==================================
[PUTINSERVER]
===================================*/
public client_putinserver(id) {
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")
}
/* ==================================
[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)
if(victim == attacker) return;
if(is_user_alive(attacker)) {
g_frags[attacker]++
if(get_pcvar_num(cvar_knifex2)) {
if(get_user_weapon(attacker) == CSW_KNIFE) return;
g_frags[attacker]++
}
if(get_pcvar_num(cvar_hsx2)) {
if(hs) g_frags[attacker]++
}
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) {
ColorChat(id, NORMAL, "%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] == '/' || 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) & ADMIN_KICK)
format(said, charsmax(said), "^x01%s^x04%s ^x03%s ^x04: %s", alive, Rangos[g_rango[id]][NOMBRE], name, said)
} else {
format(said, charsmax(said), "^x01%s^04%s ^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] == '/' || 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], 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) & ADMIN_RCON)
format(said, charsmax(said), "^x01%s [ %s ] ^x04%s ^x03%s ^x04: %s", alive, playerTeam, Rangos[g_rango[id]], name, said)
} else {
format(said, charsmax(said), "^x01%s [ %s ] ^04%s ^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 get_weapon_ent_owner(ent)
{
if (pev_valid(ent) != 2)
return -1;
return get_pdata_cbase(ent, 41, 4);
}
// 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;
}
Una mierda que hize sin testear jaja
es esto;
delected