Problema "Hook say" plugins Rangos >NO SOLUCIONADO<
#1
Buenas vengo a pedirles una ayuda, consejos, ideas, para que me ayuden a mejorar el hook say del sistema de rango que estoy usando, les explicare cada problema con detalles de fotos y una especificación para así poder lograr que me entiendan de lo que trato de solucionar, empiezo con la explicación detallada.

1.- Cuando un jugador "TT" escribe por say normal, debería de salir de la siguiente forma.
Ejemplo: [Silver l] Rosario : Hola
pero en la foto que subiré sale en la parte [Silver l] Rosario : Hola (osea con 2 espacios entre el nombre del rango y el nombre del usuario
[Imagen: IAkxyPp.jpg]

2.- Cuando un jugador "TT" o "CT" muere y escribe por say_team
aparece de la siguiente forma
[Silver l] *muerto*
debería de aparecer de la siguiente forma
*muerto* [Silver l] Rosario : probando
[Imagen: R6PkBjE.jpg]

3.- Cuando un jugador "CT" muere y escribe por say_team
aparece de la siguiente forma
[Silver l] *muerto* [CT] Rosario : bug (entre *muerto* y [CT] tiene varios espacios
debería de aparecer de la siguiente forma
*muerto* [Silver l] [CT] Rosario : probando
[Imagen: mskuuxM.jpg]

4.- Cuando un jugador "CT" escribe por say_team
aparece de la siguiente forma
[Silver l] [CT] Rosario : bug (aqui tiene 2 espacios entre rango y [CT])
debería de aparecer de la siguiente forma
[Silver l] [CT] Rosario : probando
[Imagen: qHoQRCC.jpg]

5.- Cuando un admin "TT" escribe por say normal
aparece de la siguiente forma
[FOS] [Silver l] (DUEÑO) Hola : bug (entre rango y dueño hay doble espacio)
debería de aparecer de la siguiente forma
[FOS] [Silver l] (DUEÑO) Hola : probando
[Imagen: zy3PNpf.jpg]

6.- Cuando un admin "TT" muere y escribe por say normal y say_team
aparece de la siguiente forma
[FOS] [Silver l] *muerto* (DUEÑO) Hola : probando
debería de aparecer así
[FOS] *muerto* [Silver l] (DUEÑO) Hola : probando
[Imagen: 2QPVH2r.jpg]

7.- Cuando un admin "CT" muere y escribe por say_team
aparece de la siguiente forma
[FOS] [Silver l] *muerto* [CT] (DUEÑO) Hola : probando (entre muerto y [CT] tiene doble espacio)
debería de ser así
[FOS] *muerto* [Silver l] [CT] (DUEÑO) Hola : probando
[Imagen: 1CTxcnR.jpg]

8.- Cuando un admin "CT" escribe por say_team
aparece de la siguiente forma
[FOS] [Silver l] [CT] (DUEÑO) Hola : probando (entre rango y [CT] doble espacio
debería de ser así
[FOS] [Silver l] [CT] (DUEÑO) Hola : probando
[Imagen: BlFaSTt.jpg]

PD: LA SOLUCIÓN QUE BUSCO ESTA SUBRAYADO DE VERDE

ESPERO QUE ME HAYA DADO ENTENDER, E INTENTADO ACOMODARLO POR MI PROPIA CUENTA PERO ME SALE PEOR, ENTONCES VENGO A PLANTEARLO PARA VER SI ALGUIEN PUEDE ECHARME UNA MANITO


DEJARE EL CÓDIGO SMA EN DESCARGA YA QUE NO LO PUEDO PLANTEAR EN PHP POR FALTA DE ESPACIO


Archivos adjuntos
.sma   Descargar AMXX / Rango_+_adrenaline.sma (Tamaño: 15.05 KB / Descargas: 10)
»» RENTA TU SERVIDOR EN EVOLUTIÓN-HOST ««

Si deseas contactarme para comprar tu servidor de counter-strike puedes enviar un M.P
Responder
#2
Solo debías acomodar bien los caracteres.
PD: Ponle el color tu Mario

Código PHP:
/* ===============================
Version Con Guardado adv_vault
================================*/

/* ====================================
|=* [INCLUDES] *=|
=====================================*/ 
#include <amxmisc>
#include <csstats>
#include <cstrike>
#include <fakemeta>
#include <adv_vault>
#include <jctf>

/* ====================================
|=* [PLUGIN / VERSION / AUTHOR] *=|
=====================================*/ 
new const PLUGIN[] = "RangoS"
new const VERSION[] = "1.1"
new const AUTHOR[] = "kikizon"

/* =============================================
|=* [EMPIEZA SECCION MODIFICABLE] *=|
==============================================*/

/* ====================================
|=* [CONSTANTES] *=|
=====================================*/ 
new const Prefijo[] = "FOS"          // Prefijo en say
new const Sonido[] = "Rango/up.wav"   // Sonido Rango UP

/* ====================================
|=* [CONST NOMBRES DE RANGOS] *=|
=====================================*/
enum _:DATA {

   
NOMBRE[32],
   
FRAGS,
   
ADRENALINA
}

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 },
"Distinguido Master Guardian"1900 },
"Legendary Eagle"2000 },
"Legendary Eagle Master"2100 },
"Supreme Master"2200 },
"The Global Elite"2500 }
}

/* ====================================
|=* [VARIABLES] *=|
=====================================*/
new g_rango[33], g_frags[33], g_playername[33][32], Data[255], Left[25], Right[50], configsdir[200], rangosfile[200]
new 
SyncHUDg_maxplayersg_msgTeamInfog_msgSayTextrangoscvar_Hudcvar_knifex2cvar_hsx2charnum;
new 
g_vault

/* ====================================
|=* [DEFINE] *=|
=====================================*/
#define TASK_HUD 2100
#define ID_HUD (taskid - TASK_HUD)

enum {
    
   
CAMPO_RANGO,
   
CAMPO_FRAG,
   
CAMPO_MAX
}

new 
g_campos[CAMPO_MAX]

/* ====================================
|=* [INIT] *=|
=====================================*/
public plugin_init() {
   
register_plugin(PLUGINVERSIONAUTHOR)

   
register_event("DeathMsg""Event_DeathMsg""a")
   
register_logevent("logevent_round_end"2"1=Round_End")

   
register_clcmd("say""message_saytext"
   
register_clcmd("say_team""message_sayteam")
   
register_clcmd("say /rangos""RangoSv")
   
register_clcmd("dar_frags""cmd_frags"ADMIN_RCON" ^"Nombre^" ^"Cantidad^"")

/* =============================================
|= [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 - NO :v
   
cvar_hsx2 register_cvar("rangos_hsx2""1")        // 1 - x2 frags de HeadShot | 0 - NO :v

/* =============================================
|=* [TERMINA SECCION MODIFICABLE] *=|
==============================================*/
   
SyncHUD CreateHudSyncObj()
   
g_maxplayers get_maxplayers()
   
g_msgTeamInfo get_user_msgid("TeamInfo")
   
g_msgSayText get_user_msgid("SayText")

   
g_vault adv_vault_open("data_rangos"false)
   
g_campos[CAMPO_RANGO] = adv_vault_register_field(g_vault"RANGOS")
   
g_campos[CAMPO_FRAG] = adv_vault_register_field(g_vault"FRAGS")
   
adv_vault_init(g_vault)

   
get_configsdir(configsdircharsmax(configsdir))
   
format(rangosfilecharsmax(rangosfile), "%s/rango.cfg"configsdir)
   
rangos file_size(rangosfile1)
 }

/* ====================================
|=* [PRECACHE] *=|
=====================================*/
public plugin_precache() 
   
precache_sound(Sonido)

/* ===================================
|=* [HUD] *=|
=====================================*/
public HUD(taskid
{
   new 
id ID_HUD
   
new name[33]
   
get_user_name(idnamecharsmax(name))
    
   new 
stats[8], body[8];
   new 
rank get_user_stats(idstatsbody
   new 
rank2 get_statsnum()

   if (!
is_user_alive(id)) {
   
id pev(idpev_iuser2)
   if (!
is_user_alive(id)) return;
 }

   if(
id != ID_HUD) {
       
set_hudmessage(242195430.030.1400.01.00.010.1)
ShowSyncHudMsg(ID_HUDSyncHUD"Nombre: %s^nFrags: %d^nRango: %s^n"nameg_frags[id], Rangos[g_rango[id]][NOMBRE])  
     
     } else {

set_hudmessage(242195430.170.000.01.00.010.1)
ShowSyncHudMsg(ID_HUDSyncHUD"Frags: %d / %d^nRango: %s^nSig Rango: %s^nTop-Ranking: %d de %d^nAdrenalina: (%d/100)"
g_frags[id], Rangos[g_rango[id]][FRAGS] -  g_frags[id], Rangos[g_rango[id]][NOMBRE], Rangos[g_rango[id]+1][NOMBRE], rankrank2jctf_get_adrenaline(id))
   }
}

public 
RangoSv(id)
{
    for(new 
irangosi++) {
        
   
read_file(rangosfileiDatacharsmax(Data), charnum)
   if(
strlen(Data) < || Data[0] == ';' || equali(Data"//"2))
   continue

   
argbreak(DataLeftcharsmax(Left), Rightcharsmax(Right))
   
remove_quotes(Left)
   
remove_quotes(Right)

   
client_print(idprint_console"%s [%s]"RightLeft)
    }
    
PrintText(id"!g[!y%s!g] !yLa lista de !g/rangos !y se muestra en la !tconsola!g."Prefijo)
}

/* ==================================
|=* [PUTINSERVER] *=|
===================================*/
public client_putinserver(id) {
   
get_user_nameidg_playernameid ], charsmaxg_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_disconnected(id) {
   
Guardar(id);

   
remove_task(id+TASK_HUD)
 }

/* ==================================
|=* [ROUND END] *=|
===================================*/
public logevent_round_end() {
   for(new 
id 1id <= g_maxplayersid++)
   
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]++

   if(
get_pcvar_num(cvar_knifex2)) {
   if(
weaponid == CSW_KNIFE
   
g_frags[attacker]++
  }
   if(
get_pcvar_num(cvar_hsx2)) {
   if(
hsg_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) {
   
PrintText(id"!g[!y%s!g] !yFelicidades subiste al rango!t: !g%s"PrefijoRangos[g_rango[id]][NOMBRE])
   
client_cmd(id"spk %s"Sonido)
   
Aumento false
 
}

/*=====================================
|=* [SAY] *=|
=====================================*/
public message_saytext(id) { 
   static 
said[192
   
read_args(saidcharsmax(said)) 
   
remove_quotes(said

   if (
said[0] == '@' || said[0] == '%' || said[0] == '.' || said[0] == '!' || equal (said""))
   return 
PLUGIN_HANDLED;

   if (!
ValidMessage(said1)) 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*"
}

/*=====================================
*[ACTIVAR ADM]*
ADMIN_LEVEL_B = n DUEÑO
ADMIN_LEVEL_C = o DUEÑA
ADMIN_LEVEL_E = q SUB DUEÑO
ADMIN_LEVEL_D = p ADMIN-VIP
=====================================*/

   
if (is_user_admin(id)) {
if (
get_user_flags(id) & ADMIN_LEVEL_B
format(saidcharsmax(said), "[%s] [%s] %s (DUEÑO) %s: %s"PrefijoaliveRangos[g_rango[id]][NOMBRE], namesaid)
if (
get_user_flags(id) & ADMIN_LEVEL_C
format(saidcharsmax(said), "[%s] [%s] %s (DUEÑA) %s: %s"PrefijoaliveRangos[g_rango[id]][NOMBRE], namesaid)
if (
get_user_flags(id) & ADMIN_LEVEL_E)
format(saidcharsmax(said), "^4[^1%s^4] ^4[^1%s^4] %s ^1(^4SUB^1-^4DUEÑO^1) ^3%s ^4: %s"PrefijoRangos[g_rango[id]][NOMBRE], alivenamesaid)
if (
get_user_flags(id) & ADMIN_LEVEL_D
format(saidcharsmax(said), "^4[^1%s^4] ^4[^1%s^4] %s ^1(^4ADMIN^1) ^3%s ^4: %s"PrefijoRangos[g_rango[id]][NOMBRE], alivenamesaid)
   } else {
format(saidcharsmax(said), "^4[^1%s^4] %s^3 %s ^1: %s",aliveRangos[g_rango[id]][NOMBRE], namesaid)
}    
   static 
iteam[11
   for (
1<= g_maxplayersi++) {
   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(iteamcharsmax(team))
   
changeTeamInfo(icolor)
   
writeMessage(isaid)
   
changeTeamInfo(iteam)
  }
}
   return 
PLUGIN_HANDLED_MAIN;
}

public 
message_sayteam(id) {    
    
   static 
said[192
   
read_args(saidcharsmax(said)) 
   
remove_quotes(said

   if (
said[0] == '@' || said[0] == '%' || said[0] == '/' || said[0] == '.' || said[0] == '!' || equal (said""))
   return 
PLUGIN_HANDLED;

   if (!
ValidMessage(said1)) return PLUGIN_CONTINUE

   static 
playerTeamplayerTeamName[19]
   
playerTeam get_user_team(id)

   switch (
playerTeam) {
   case 
1copy (playerTeamName6"^3[TE]")
   case 
2copy (playerTeamName8"^3[CT]"
   default: 
copy (playerTeamName11"^3[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)) {
format(saidcharsmax(said), "[%s] [%s] %s %s (DUEÑO) %s: %s"PrefijoaliveRangos[g_rango[id]][NOMBRE], playerTeamnamesaid)
if (
get_user_flags(id) & ADMIN_LEVEL_C
format(saidcharsmax(said), "[%s] [%s] %s %s (DUEÑA) %s: %s"PrefijoaliveRangos[g_rango[id]][NOMBRE], playerTeamnamesaid)
if (
get_user_flags(id) & ADMIN_LEVEL_E)
format(saidcharsmax(said), "^4[^1%s^4] ^4[^1%s^4] %s%s ^1(^4SUB^1-^4DUEÑO^1) ^3%s ^4: %s"PrefijoRangos[g_rango[id]], aliveplayerTeamnamesaid)
if (
get_user_flags(id) & ADMIN_LEVEL_D)
format(saidcharsmax(said), "^4[^1%s^4] ^4[^1%s^4] %s%s ^1(^4ADMIN^1) ^3%s ^4: %s"PrefijoRangos[g_rango[id]], aliveplayerTeamnamesaid)
   } else {
format(saidcharsmax(said), "%s %s %s %s: %s"aliveRangos[g_rango[id]], playerTeamnamesaid)
 }

   static 
iteam[11
   for (
1<= g_maxplayersi++) {
   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(iteamcharsmax(team))
   
changeTeamInfo(icolor)
   
writeMessage(isaid)
   
changeTeamInfo(iteam)
  }
 }
}
   return 
PLUGIN_HANDLED_MAIN;
}

public 
changeTeamInfo(playerteam[]) {
   
message_begin(MSG_ONEg_msgTeamInfo_player)
   
write_byte(player)
   
write_string(team)
   
message_end()
 }

public 
writeMessage(playermessage[]) {
   
message_begin(MSG_ONEg_msgSayText, {000}, player)
   
write_byte(player)
   
write_string(message)
   
message_end()
 }

/* ===================================
|=* [GUARDADO] *=|
=====================================*/
Guardar(id) {
   
adv_vault_set_start(g_vault)

   
adv_vault_set_field(g_vaultg_campos[CAMPO_RANGO], g_rango[id])
   
adv_vault_set_field(g_vaultg_campos[CAMPO_FRAG], g_frags[id])

   
adv_vault_set_end(g_vault0g_playername[id])
 }

Cargar(id) {
   if(!
adv_vault_get_prepare(g_vault_g_playername[id])) 
   return

   
g_rango[id] = adv_vault_get_field(g_vaultg_campos[CAMPO_RANGO])
   
g_frags[id] = adv_vault_get_field(g_vaultg_campos[CAMPO_FRAG])
 } 
/* ===================================
|=* [STOCKS - CHEMA] *=|
=====================================*/
stock PrintText ( const iIndex, const Text [ ], any:... ) { 
    
    new 
szText 192 ];
    
    
vformat szTextsizeof szText ), Text);
    
    
    
replace_all szTextsizeof szText ), "!y""^1" );
    
replace_all szTextsizeof szText ), "!g""^4" );
    
replace_all szTextsizeof szText ), "!t""^3" );
    
    static 
iLen sizeof szText );
    
    
    
replace_all szTextiLen"á""á" );
    
replace_all szTextiLen"Á""Ã" );
    
replace_all szTextiLen"é""é" );
    
replace_all szTextiLen"É""É" );
    
replace_all szTextiLen"í""Ã*" );
    
replace_all szTextiLen"Í""Ã" );
    
replace_all szTextiLen"ó""ó" );
    
replace_all szTextiLen"Ó""Ó" );
    
replace_all szTextiLen"ú""ú" );
    
replace_all szTextiLen"Ú""Ú" );
    
replace_all szTextiLen"ñ""ñ" );
    
replace_all szTextiLen"Ñ""Ñ" );
    
    
    
message_begin iIndex MSG_ONE_UNRELIABLE MSG_BROADCASTget_user_msgid "SayText" ), .player iIndex );
    
write_byte iIndex iIndex 33 );
    
write_string szText );
    
message_end (  );
}

/* =====================================================
|=* [Stock para Saber Si el mensaje es valido] *=|
======================================================*/
stock ValidMessage(text[], maxcount) {
   static 
lenicount
   len 
strlen(text)
   
count 0

   
if (!len)
   return 
false;

   for (
0leni++) {
   if (
text[i] != ' ') {
   
count++
   if (
count >= maxcount)
   return 
true;
  }
 }
   return 
false;

public 
cmd_frags(idnivelcid) {
    if (!
cmd_access(idnivelcid3))
        return 
PLUGIN_HANDLED;
    
    new 
arg[33], arg2[10]
    new 
name[32]; get_user_name(idnamecharsmax(name))
    
read_argv(1argcharsmax(arg))
    
read_argv(2arg2charsmax(arg2))
    
    new 
Player cmd_target(idarg,CMDTARGET_ONLY_ALIVE)
    
    new 
target[32]; get_user_name(Playertargetcharsmax(target))
    
    if (!
Player)
    {
        
client_print(idprint_console"No se encuentra disponible el jugador")
        return 
PLUGIN_HANDLED;
    }
    
    new 
amount str_to_num(arg2)
    
    
g_frags[Player] += amount
    
// aca sumamos los frags 
    
    
AumentarRango(Player// aca tenes que poner tu checklevel asi cuando le de , checkea si puede subir de level
    
    
PrintText(id"!g[!yAMXX!g] !yEl Admin !g%s !yte dio !g%d !t%s"nameamount, (amount "niveles" "nivel"))
    
PrintText(id"!g[!yAMXX!g] !yLe diste !g%d !t%s !yal jugador !g%s"amount, (amount "niveles" "nivel"), target)
    
    return 
PLUGIN_HANDLED;

Responder
#3
(28/05/2019, 05:37 PM)Reverant escribió: Solo debías acomodar bien los caracteres.
PD: Ponle el color tu Mario

Código PHP:
/* ===============================
Version Con Guardado adv_vault
================================*/

/* ====================================
|=* [INCLUDES] *=|
=====================================*/ 
#include <amxmisc>
#include <csstats>
#include <cstrike>
#include <fakemeta>
#include <adv_vault>
#include <jctf>

/* ====================================
|=* [PLUGIN / VERSION / AUTHOR] *=|
=====================================*/ 
new const PLUGIN[] = "RangoS"
new const VERSION[] = "1.1"
new const AUTHOR[] = "kikizon"

/* =============================================
|=* [EMPIEZA SECCION MODIFICABLE] *=|
==============================================*/

/* ====================================
|=* [CONSTANTES] *=|
=====================================*/ 
new const Prefijo[] = "FOS"          // Prefijo en say
new const Sonido[] = "Rango/up.wav"   // Sonido Rango UP

/* ====================================
|=* [CONST NOMBRES DE RANGOS] *=|
=====================================*/
enum _:DATA {

   
NOMBRE[32],
   
FRAGS,
   
ADRENALINA
}

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 },
"Distinguido Master Guardian"1900 },
"Legendary Eagle"2000 },
"Legendary Eagle Master"2100 },
"Supreme Master"2200 },
"The Global Elite"2500 }
}

/* ====================================
|=* [VARIABLES] *=|
=====================================*/
new g_rango[33], g_frags[33], g_playername[33][32], Data[255], Left[25], Right[50], configsdir[200], rangosfile[200]
new 
SyncHUDg_maxplayersg_msgTeamInfog_msgSayTextrangoscvar_Hudcvar_knifex2cvar_hsx2charnum;
new 
g_vault

/* ====================================
|=* [DEFINE] *=|
=====================================*/
#define TASK_HUD 2100
#define ID_HUD (taskid - TASK_HUD)

enum {
    
   
CAMPO_RANGO,
   
CAMPO_FRAG,
   
CAMPO_MAX
}

new 
g_campos[CAMPO_MAX]

/* ====================================
|=* [INIT] *=|
=====================================*/
public plugin_init() {
   
register_plugin(PLUGINVERSIONAUTHOR)

   
register_event("DeathMsg""Event_DeathMsg""a")
   
register_logevent("logevent_round_end"2"1=Round_End")

   
register_clcmd("say""message_saytext"
   
register_clcmd("say_team""message_sayteam")
   
register_clcmd("say /rangos""RangoSv")
   
register_clcmd("dar_frags""cmd_frags"ADMIN_RCON" ^"Nombre^" ^"Cantidad^"")

/* =============================================
|= [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 - NO :v
   
cvar_hsx2 register_cvar("rangos_hsx2""1")        // 1 - x2 frags de HeadShot | 0 - NO :v

/* =============================================
|=* [TERMINA SECCION MODIFICABLE] *=|
==============================================*/
   
SyncHUD CreateHudSyncObj()
   
g_maxplayers get_maxplayers()
   
g_msgTeamInfo get_user_msgid("TeamInfo")
   
g_msgSayText get_user_msgid("SayText")

   
g_vault adv_vault_open("data_rangos"false)
   
g_campos[CAMPO_RANGO] = adv_vault_register_field(g_vault"RANGOS")
   
g_campos[CAMPO_FRAG] = adv_vault_register_field(g_vault"FRAGS")
   
adv_vault_init(g_vault)

   
get_configsdir(configsdircharsmax(configsdir))
   
format(rangosfilecharsmax(rangosfile), "%s/rango.cfg"configsdir)
   
rangos file_size(rangosfile1)
 }

/* ====================================
|=* [PRECACHE] *=|
=====================================*/
public plugin_precache() 
   
precache_sound(Sonido)

/* ===================================
|=* [HUD] *=|
=====================================*/
public HUD(taskid
{
   new 
id ID_HUD
   
new name[33]
   
get_user_name(idnamecharsmax(name))
    
   new 
stats[8], body[8];
   new 
rank get_user_stats(idstatsbody
   new 
rank2 get_statsnum()

   if (!
is_user_alive(id)) {
   
id pev(idpev_iuser2)
   if (!
is_user_alive(id)) return;
 }

   if(
id != ID_HUD) {
       
set_hudmessage(242195430.030.1400.01.00.010.1)
ShowSyncHudMsg(ID_HUDSyncHUD"Nombre: %s^nFrags: %d^nRango: %s^n"nameg_frags[id], Rangos[g_rango[id]][NOMBRE])  
     
     } else {

set_hudmessage(242195430.170.000.01.00.010.1)
ShowSyncHudMsg(ID_HUDSyncHUD"Frags: %d / %d^nRango: %s^nSig Rango: %s^nTop-Ranking: %d de %d^nAdrenalina: (%d/100)"
g_frags[id], Rangos[g_rango[id]][FRAGS] -  g_frags[id], Rangos[g_rango[id]][NOMBRE], Rangos[g_rango[id]+1][NOMBRE], rankrank2jctf_get_adrenaline(id))
   }
}

public 
RangoSv(id)
{
    for(new 
irangosi++) {
        
   
read_file(rangosfileiDatacharsmax(Data), charnum)
   if(
strlen(Data) < || Data[0] == ';' || equali(Data"//"2))
   continue

   
argbreak(DataLeftcharsmax(Left), Rightcharsmax(Right))
   
remove_quotes(Left)
   
remove_quotes(Right)

   
client_print(idprint_console"%s [%s]"RightLeft)
    }
    
PrintText(id"!g[!y%s!g] !yLa lista de !g/rangos !y se muestra en la !tconsola!g."Prefijo)
}

/* ==================================
|=* [PUTINSERVER] *=|
===================================*/
public client_putinserver(id) {
   
get_user_nameidg_playernameid ], charsmaxg_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_disconnected(id) {
   
Guardar(id);

   
remove_task(id+TASK_HUD)
 }

/* ==================================
|=* [ROUND END] *=|
===================================*/
public logevent_round_end() {
   for(new 
id 1id <= g_maxplayersid++)
   
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]++

   if(
get_pcvar_num(cvar_knifex2)) {
   if(
weaponid == CSW_KNIFE
   
g_frags[attacker]++
  }
   if(
get_pcvar_num(cvar_hsx2)) {
   if(
hsg_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) {
   
PrintText(id"!g[!y%s!g] !yFelicidades subiste al rango!t: !g%s"PrefijoRangos[g_rango[id]][NOMBRE])
   
client_cmd(id"spk %s"Sonido)
   
Aumento false
 
}

/*=====================================
|=* [SAY] *=|
=====================================*/
public message_saytext(id) { 
   static 
said[192
   
read_args(saidcharsmax(said)) 
   
remove_quotes(said

   if (
said[0] == '@' || said[0] == '%' || said[0] == '.' || said[0] == '!' || equal (said""))
   return 
PLUGIN_HANDLED;

   if (!
ValidMessage(said1)) 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*"
}

/*=====================================
*[ACTIVAR ADM]*
ADMIN_LEVEL_B = n DUEÑO
ADMIN_LEVEL_C = o DUEÑA
ADMIN_LEVEL_E = q SUB DUEÑO
ADMIN_LEVEL_D = p ADMIN-VIP
=====================================*/

   
if (is_user_admin(id)) {
if (
get_user_flags(id) & ADMIN_LEVEL_B
format(saidcharsmax(said), "[%s] [%s] %s (DUEÑO) %s: %s"PrefijoaliveRangos[g_rango[id]][NOMBRE], namesaid)
if (
get_user_flags(id) & ADMIN_LEVEL_C
format(saidcharsmax(said), "[%s] [%s] %s (DUEÑA) %s: %s"PrefijoaliveRangos[g_rango[id]][NOMBRE], namesaid)
if (
get_user_flags(id) & ADMIN_LEVEL_E)
format(saidcharsmax(said), "^4[^1%s^4] ^4[^1%s^4] %s ^1(^4SUB^1-^4DUEÑO^1) ^3%s ^4: %s"PrefijoRangos[g_rango[id]][NOMBRE], alivenamesaid)
if (
get_user_flags(id) & ADMIN_LEVEL_D
format(saidcharsmax(said), "^4[^1%s^4] ^4[^1%s^4] %s ^1(^4ADMIN^1) ^3%s ^4: %s"PrefijoRangos[g_rango[id]][NOMBRE], alivenamesaid)
   } else {
format(saidcharsmax(said), "^4[^1%s^4] %s^3 %s ^1: %s",aliveRangos[g_rango[id]][NOMBRE], namesaid)
}    
   static 
iteam[11
   for (
1<= g_maxplayersi++) {
   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(iteamcharsmax(team))
   
changeTeamInfo(icolor)
   
writeMessage(isaid)
   
changeTeamInfo(iteam)
  }
}
   return 
PLUGIN_HANDLED_MAIN;
}

public 
message_sayteam(id) {    
    
   static 
said[192
   
read_args(saidcharsmax(said)) 
   
remove_quotes(said

   if (
said[0] == '@' || said[0] == '%' || said[0] == '/' || said[0] == '.' || said[0] == '!' || equal (said""))
   return 
PLUGIN_HANDLED;

   if (!
ValidMessage(said1)) return PLUGIN_CONTINUE

   static 
playerTeamplayerTeamName[19]
   
playerTeam get_user_team(id)

   switch (
playerTeam) {
   case 
1copy (playerTeamName6"^3[TE]")
   case 
2copy (playerTeamName8"^3[CT]"
   default: 
copy (playerTeamName11"^3[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)) {
format(saidcharsmax(said), "[%s] [%s] %s %s (DUEÑO) %s: %s"PrefijoaliveRangos[g_rango[id]][NOMBRE], playerTeamnamesaid)
if (
get_user_flags(id) & ADMIN_LEVEL_C
format(saidcharsmax(said), "[%s] [%s] %s %s (DUEÑA) %s: %s"PrefijoaliveRangos[g_rango[id]][NOMBRE], playerTeamnamesaid)
if (
get_user_flags(id) & ADMIN_LEVEL_E)
format(saidcharsmax(said), "^4[^1%s^4] ^4[^1%s^4] %s%s ^1(^4SUB^1-^4DUEÑO^1) ^3%s ^4: %s"PrefijoRangos[g_rango[id]], aliveplayerTeamnamesaid)
if (
get_user_flags(id) & ADMIN_LEVEL_D)
format(saidcharsmax(said), "^4[^1%s^4] ^4[^1%s^4] %s%s ^1(^4ADMIN^1) ^3%s ^4: %s"PrefijoRangos[g_rango[id]], aliveplayerTeamnamesaid)
   } else {
format(saidcharsmax(said), "%s %s %s %s: %s"aliveRangos[g_rango[id]], playerTeamnamesaid)
 }

   static 
iteam[11
   for (
1<= g_maxplayersi++) {
   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(iteamcharsmax(team))
   
changeTeamInfo(icolor)
   
writeMessage(isaid)
   
changeTeamInfo(iteam)
  }
 }
}
   return 
PLUGIN_HANDLED_MAIN;
}

public 
changeTeamInfo(playerteam[]) {
   
message_begin(MSG_ONEg_msgTeamInfo_player)
   
write_byte(player)
   
write_string(team)
   
message_end()
 }

public 
writeMessage(playermessage[]) {
   
message_begin(MSG_ONEg_msgSayText, {000}, player)
   
write_byte(player)
   
write_string(message)
   
message_end()
 }

/* ===================================
|=* [GUARDADO] *=|
=====================================*/
Guardar(id) {
   
adv_vault_set_start(g_vault)

   
adv_vault_set_field(g_vaultg_campos[CAMPO_RANGO], g_rango[id])
   
adv_vault_set_field(g_vaultg_campos[CAMPO_FRAG], g_frags[id])

   
adv_vault_set_end(g_vault0g_playername[id])
 }

Cargar(id) {
   if(!
adv_vault_get_prepare(g_vault_g_playername[id])) 
   return

   
g_rango[id] = adv_vault_get_field(g_vaultg_campos[CAMPO_RANGO])
   
g_frags[id] = adv_vault_get_field(g_vaultg_campos[CAMPO_FRAG])
 } 
/* ===================================
|=* [STOCKS - CHEMA] *=|
=====================================*/
stock PrintText ( const iIndex, const Text [ ], any:... ) { 
    
    new 
szText 192 ];
    
    
vformat szTextsizeof szText ), Text);
    
    
    
replace_all szTextsizeof szText ), "!y""^1" );
    
replace_all szTextsizeof szText ), "!g""^4" );
    
replace_all szTextsizeof szText ), "!t""^3" );
    
    static 
iLen sizeof szText );
    
    
    
replace_all szTextiLen"á""á" );
    
replace_all szTextiLen"Á""Ã" );
    
replace_all szTextiLen"é""é" );
    
replace_all szTextiLen"É""É" );
    
replace_all szTextiLen"í""Ã*" );
    
replace_all szTextiLen"Í""Ã" );
    
replace_all szTextiLen"ó""ó" );
    
replace_all szTextiLen"Ó""Ó" );
    
replace_all szTextiLen"ú""ú" );
    
replace_all szTextiLen"Ú""Ú" );
    
replace_all szTextiLen"ñ""ñ" );
    
replace_all szTextiLen"Ñ""Ñ" );
    
    
    
message_begin iIndex MSG_ONE_UNRELIABLE MSG_BROADCASTget_user_msgid "SayText" ), .player iIndex );
    
write_byte iIndex iIndex 33 );
    
write_string szText );
    
message_end (  );
}

/* =====================================================
|=* [Stock para Saber Si el mensaje es valido] *=|
======================================================*/
stock ValidMessage(text[], maxcount) {
   static 
lenicount
   len 
strlen(text)
   
count 0

   
if (!len)
   return 
false;

   for (
0leni++) {
   if (
text[i] != ' ') {
   
count++
   if (
count >= maxcount)
   return 
true;
  }
 }
   return 
false;

public 
cmd_frags(idnivelcid) {
    if (!
cmd_access(idnivelcid3))
        return 
PLUGIN_HANDLED;
    
    new 
arg[33], arg2[10]
    new 
name[32]; get_user_name(idnamecharsmax(name))
    
read_argv(1argcharsmax(arg))
    
read_argv(2arg2charsmax(arg2))
    
    new 
Player cmd_target(idarg,CMDTARGET_ONLY_ALIVE)
    
    new 
target[32]; get_user_name(Playertargetcharsmax(target))
    
    if (!
Player)
    {
        
client_print(idprint_console"No se encuentra disponible el jugador")
        return 
PLUGIN_HANDLED;
    }
    
    new 
amount str_to_num(arg2)
    
    
g_frags[Player] += amount
    
// aca sumamos los frags 
    
    
AumentarRango(Player// aca tenes que poner tu checklevel asi cuando le de , checkea si puede subir de level
    
    
PrintText(id"!g[!yAMXX!g] !yEl Admin !g%s !yte dio !g%d !t%s"nameamount, (amount "niveles" "nivel"))
    
PrintText(id"!g[!yAMXX!g] !yLe diste !g%d !t%s !yal jugador !g%s"amount, (amount "niveles" "nivel"), target)
    
    return 
PLUGIN_HANDLED;

ahora sale peor los caracteres, bueh no importa se queda eso asi gracias por la ayuda
»» RENTA TU SERVIDOR EN EVOLUTIÓN-HOST ««

Si deseas contactarme para comprar tu servidor de counter-strike puedes enviar un M.P
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)