Thread: Duda con HAM
View Single Post
KuvZz
Member
Join Date: Sep 2013
Location: Spain
Old 09-28-2013 , 17:50   Re: Duda con HAM
#12

Sigue sin funcionar :/ No me gusta ser tan pesado pero llevo toda la tarde y no sé que puede ser, lo siento :S
Voy a dejar el plugin entero, quizás el error no esté donde creo que estaba. Lo dejo tanto en PHP como en .sma
Gracias por toda la ayuda.
PHP Code:
/* Mini Clases */

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <hamsandwich>

#define PLUGIN "Mini clases"
#define VERSION "1.0"
#define AUTHOR "KuvZz"

new bool:DmgKnife[33]
new 
bool:DmgM4[33]
new 
bool:DmgAK[33]
new 
bool:DmgAWP[33]
new 
bool:DmgDeagle[33]
new 
bool:DmgHE[33], g_maxplayers

const DMG_CSGRENADE = (1<<24)

public 
plugin_init()
{
    
register_plugin(PLUGIN,VERSION,AUTHOR )
    
register_clcmd("say /clase""Clases")
    
register_clcmd("say_team /clase" "Clases")
    
register_clcmd("say /infoclase""Info")
    
register_clcmd("say_team /infoclase""Info")
    
register_cvar("asesino""845")
    
register_cvar("hibrido""500")
    
register_cvar("juggernaut""200")
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
    
g_maxplayers get_maxplayers()
}

public 
plugin_precache() //Precacheo de sonidos para que los usuarios lo descarguen
{
    
precache_sound("Server/select.wav")
    
precache_sound("Server/fail.wav")
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedmgtype)
{
    if(
victim == attacker || !is_user_connected(attacker))
        return 
HAM_IGNORED;
    
    static 
weapon
    weapon 
get_user_weapon(attacker)
    
    if(
DmgKnife[attacker] && weapon == CSW_KNIFE)
        
damage *= 100.0
    
else if (DmgM4[attacker] && weapon == CSW_M4A1)
        
damage *= 2.0
    
else if (DmgAK[attacker] && weapon == CSW_AK47)
        
damage *= 2.0
    
else if (DmgAWP[attacker] && weapon == CSW_AWP)
        
damage *= 100.0
    
else if (DmgDeagle[attacker] && weapon == CSW_DEAGLE)
        
damage *= 100.0
    
else if (DmgHE[attacker] && (dmgtype DMG_CSGRENADE))
        
damage *= 100.0
    
    
return HAM_HANDLED;
}

public 
Clases(id//OPCIONES DE CLASES
{
    new 
Menu menu_create("\rMenu de Clases por: \wKuvZz""Clase")
    
menu_additem(Menu"\wAsesino" "1"0)
    
menu_additem(Menu"\wCarnicero" "2"0)
    
menu_additem(Menu"\wArtificiero" "3"0)
    
menu_additem(Menu"\wSniper" "4"0)
    
menu_additem(Menu"\wFusiles mejorados" "5"0)
    
menu_additem(Menu"\wFantasma" "6"0)
    
menu_additem(Menu"\wJuggernaut" "7"0)
    
menu_additem(Menu"\wPistolero" "8"0)
    
menu_additem(Menu"\wDefensor" "9"0)
    
menu_additem(Menu"\wADMIN" "10"0)
       
    
menu_setprop(Menu,MPROP_EXITNAME,"Salir")
    
menu_setprop(MenuMPROP_EXITMEXIT_ALL)
    
    
menu_display(idMenu0)
    return 
PLUGIN_CONTINUE
}

public 
Clase(idMenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(Menu)   
        return 
PLUGIN_HANDLED
    
}
    
    new 
iData[6], iAccessiCallbackiName[64];
    
menu_item_getinfo(MenuitemiAccessiData5iName63iCallback)
    
    switch (
str_to_num(iData)) 
    {
       
        case 
1:
    {
        
client_cmd(id"spk ^"Server/select.wav^"")
        
ChatColor(id"!g[Class] !yEres un !teamasesino")
        
strip_user_weapons(id)
        
give_item(id"weapon_tmp")
        
set_user_health(id75)
        
set_user_maxspeed(idfloat(get_cvar_num("asesino")))
        
set_user_gravity(id1.0)
         }
        case 
2:
         {
        
client_cmd(id"spk ^"Server/select.wav^"")
        
ChatColor(id"!g[Class] !yEres un !teamcarnicero")
        
strip_user_weapons(id)
        
give_item(id"weapon_knife")
        
set_user_health(id150)
        
DmgKnife[id] = true //Activar la modificación de daño
        
set_user_maxspeed(idfloat(get_cvar_num("hibrido")))
        
set_user_gravity(id0.4)
          }
    case 
3:
     {
        
client_cmd(id"spk ^"Server/select.wav^"")
        
ChatColor(id"!g[Class] !yEres un !teamartificiero")
        
strip_user_weapons(id)
        
give_item(id"weapon_hegrenade")
        
DmgHE[id] = true //Activar la modificación de daño
        
give_item(id"weapon_knife")
        
DmgKnife[id] = false //Quito el daño del cuchillo por si anteriormente se ha elegido una clase con éste para que no afecte a esta clase.
        
give_item(id"weapon_mp5navy")
        
give_item(id"weapon_p90")
        
give_item(id"weapon_usp")
        
set_user_gravity(id1.0)
        
set_user_health(id100)
          }
    case 
4:
     {
         
client_cmd(id"spk ^"Server/select.wav^"")
        
ChatColor(id"!g[Class] !yEres un !teamSniper")
        
strip_user_weapons(id)
        
give_item(id"weapon_awp")
        
give_item(id"weapon_knife")
        
DmgKnife[id] = false //Quito el daño del cuchillo por si anteriormente se ha elegido una clase con éste para que no afecte a esta clase.
        
DmgAWP[id] = true //Activar la modificación de daño
        
give_item(id"weapon_usp")
        
set_user_gravity(id1.0)
        
set_user_health(id100)
     }
    case 
5:
     {
         
client_cmd(id"spk ^"Server/select.wav^"")
        
ChatColor(id"!g[Class] !yObtuviste !teamdos fusiles mejorados")
        
strip_user_weapons(id)
        
give_item(id"weapon_m4a1")
        
give_item(id"weapon_ak47")
        
give_item(id"weapon_knife")
        
DmgKnife[id] = false //Quito el daño del cuchillo por si anteriormente se ha elegido una clase con éste para que no afecte a esta clase.
        
DmgM4[id] = true //Activar la modificación de daño
        
DmgAK[id] = true //Activar la modificación de daño
        
set_user_health(id100)
        
set_user_gravity(id1.0)
     }
    case 
6:
     {
         
client_cmd(id"spk ^"Server/select.wav^"")
        
ChatColor(id"!g[Class] !yEres un !teamfantasma")
        
strip_user_weapons(id)
        
give_item(id"weapon_mac10")
        
give_item(id"weapon_knife")
        
DmgKnife[id] = false //Quito el daño del cuchillo por si anteriormente se ha elegido una clase con éste para que no afecte a esta clase.
        
set_user_gravity(id1.0)
        
set_user_health(id75)
        
set_user_rendering(idkRenderFxGlowShell,  00016)
        
set_user_footsteps(id1//Testeando...
     
}
    case 
7:
     {
         
client_cmd(id"spk ^"Server/select.wav^"")
        
ChatColor(id"!g[Class] !yEres un !teamjuggernaut")
        
strip_user_weapons(id)
        
give_item(id"weapon_m249")
        
set_user_gravity(id1.5)
        
set_user_health(id200)
        
set_user_armor(id200)
        
set_user_maxspeed(idfloat(get_cvar_num("juggernaut")))
     }
    case 
8:
     {
         
client_cmd(id"spk ^"Server/select.wav^"")
        
ChatColor(id"!g[Class] !yEres un !teampistolero")
        
strip_user_weapons(id)
        
give_item(id"weapon_deagle")
        
DmgDeagle[id] = true
        give_item
(id"weapon_knife")
        
DmgKnife[id] = false //Quito el daño del cuchillo por si anteriormente se ha elegido una clase con éste para que no afecte a esta clase.
        
set_user_gravity(id1.0)
        
set_user_health(id100)
     }
    case 
9:
     {
         
client_cmd(id"spk ^"Server/select.wav^"")
        
ChatColor(id"!g[Class] !yEres un !teamdefensor")
        
strip_user_weapons(id)
        
give_item(id"weapon_shield")
        
give_item(id"weapon_usp")
        
give_item(id"weapon_knife")
        
DmgKnife[id] = false //Quito el daño del cuchillo por si anteriormente se ha elegido una clase con éste para que no afecte a esta clase.
        
give_item(id"weapon_hegrenade")
        
give_item(id"weapon_flashbang")
        
give_item(id"weapon_flashbang")
        
give_item(id"weapon_smokegrenade")
        
set_user_gravity(id1.0)
        
set_user_health(id100)
     }
    case 
10:
     {
         if (
is_user_admin(id))
        {
         
client_cmd(id"spk ^"Server/select.wav^"")
        
ChatColor(id"!g[Class] !yElegiste la clase de !teamADMIN")
        
strip_user_weapons(id)
        
give_item(id"weapon_m4a1")
        
give_item(id"weapon_g3sg1")
        
give_item(id"weapon_ak47")
        
give_item(id"weapon_deagle")
        
give_item(id"weapon_hegrenade")
        
give_item(id"weapon_flashbang")
        
give_item(id"weapon_knife")
        
DmgKnife[id] = false //Quito el daño del cuchillo por si anteriormente se ha elegido una clase con éste para que no afecte a esta clase.
        
set_user_gravity(id0.8)
        
set_user_health(id125)
             }
        else
        {
            
ChatColor(id"!g[INFO] !yNo eres !teamAdmin")
            
client_cmd(id"spk ^"Server/fail.wav^"")
             }
     }
} return 
PLUGIN_HANDLED;
}

public 
Info(id//OPCIONES DE INFORMACIÓN
{
    new 
Menu menu_create("\rInformacion de Clases""Infos")
    
menu_additem(Menu"\wInfo Asesino" "1"0)
    
menu_additem(Menu"\wInfo Hibrido" "2"0)
    
menu_additem(Menu"\wInfo Artificiero" "3"0)
    
menu_additem(Menu"\wInfo Sniper" "4"0)
    
menu_additem(Menu"\wInfo Fusiles mejorados" "5"0)
    
menu_additem(Menu"\wInfo Fantasma" "6"0)
    
menu_additem(Menu"\wInfo Juggernaut" "7"0)
    
menu_additem(Menu"\wInfo Pistolero" "8"0)
    
menu_additem(Menu"\winfo Defensor" "9"0)
    
menu_additem(Menu"\wInfo ADMIN" "10"0)
    
menu_additem(Menu"\rInformacion general" "11"0)
       
    
menu_setprop(Menu,MPROP_EXITNAME,"Salir")
    
menu_setprop(MenuMPROP_EXITMEXIT_ALL)
    
    
menu_display(idMenu0)
    return 
PLUGIN_CONTINUE
}

public 
Infos(idMenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(Menu)   
        return 
PLUGIN_HANDLED
    
}
    
    new 
iData[6], iAccessiCallbackiName[64];
    
menu_item_getinfo(MenuitemiAccessiData5iName63iCallback)
    
    switch (
str_to_num(iData)) 
    {
       
         case 
1:
    {
    
ChatColor(id"!g[InfoClass] !yObtienes velocidad de movimiento y una TMP. Salud reducida")
    
client_cmd(id"spk ^"Server/select.wav^"")
    }
         case 
2:
    {
         
ChatColor(id"!g[InfoClass] !yCuchillo mortal. Velocidad de movimiento aumentada y gravedad reducida")
     
client_cmd(id"spk ^"Server/select.wav^"")
    }
         case 
3:
    {
         
ChatColor(id"!g[InfoClass] !yObtienes una granada de damage aumentado")
     
client_cmd(id"spk ^"Server/select.wav^"")
    }
    case 
4:
    {
         
ChatColor(id"!g[InfoClass] !yObtienes una AWP capaz de matar de una bala")
     
client_cmd(id"spk ^"Server/select.wav^"")
    }
    case 
5:
    {
         
ChatColor(id"!g[InfoClass] !yObtienes dos fusiles con el damage aumentado ligeramente")
     
client_cmd(id"spk ^"Server/select.wav^"")
    }
    case 
6:
    {
         
ChatColor(id"!g[InfoClass] !yObtienes invisibilidad, tus pasos no se oyen y un MAC10. Salud reducida")
     
client_cmd(id"spk ^"Server/select.wav^"")
    }
    case 
7:
    {
         
ChatColor(id"!g[InfoClass] !yObtienes unicamente una M249. Salud, armadura y gravedad aumentada. Velocidad reducida")
     
client_cmd(id"spk ^"Server/select.wav^"")
         }
    case 
8:
    {
         
ChatColor(id"!g[InfoClass] !yObtienes una Desert Eagle mortifera.")
     
client_cmd(id"spk ^"Server/select.wav^"")
    }
    case 
9:
    {
         
ChatColor(id"!g[InfoClass] !yObtienes un escudo y una pistola. (Por retocar)")
     
client_cmd(id"spk ^"Server/select.wav^"")
    }
    case 
10:
    {
         
ChatColor(id"!g[InfoClass] !yPaquete de admin con armas variadas, granadas y un poco mas de salud")
     
client_cmd(id"spk ^"Server/select.wav^"")
    }
    case 
11:
    {
         
ChatColor(id"!g[InfoClass] !teamNo se puede comprar ni recoger armas del suelo. Juega con las clases :D")
     
client_cmd(id"spk ^"Server/select.wav^"")
    }
    }
return 
PLUGIN_HANDLED
}
     
//Stock de ChatColor (para que funcione).
stock ChatColor(const id, const input[], any:...)
{
    new 
count 1players[32]
    static 
msg[191]
    
vformat(msg190input3)
    
    
replace_all(msg190"!g""^4"// Green Color
    
replace_all(msg190"!y""^1"// Default Color
    
replace_all(msg190"!team""^3"// Team Color
    
replace_all(msg190"!team2""^0"// Team2 Color
    
    
if (idplayers[0] = id; else get_players(playerscount"ch")
    {
        for (new 
0counti++)
        {
            if (
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }

__________________

Last edited by KuvZz; 10-03-2013 at 08:14.
KuvZz is offline