AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Spanish (https://forums.alliedmods.net/forumdisplay.php?f=135)
-   -   Duda con HAM (https://forums.alliedmods.net/showthread.php?t=227169)

KuvZz 09-28-2013 08:46

Duda con HAM
 
Buenas. Estoy haciendo un menú con "clases" en las que añado unos cambios de daño a varias armas. El plugin está acabado y compila perfectamente pero el daño de las armas no se cambia. He probado de todo y no sé que puede ser :S Os dejo el código por si alguien me pudiese ayudar:
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]

public 
plugin_init()
{
    
register_plugin(PLUGIN,VERSION,AUTHOR )
    
register_clcmd("say /clase""Clases")
    
register_clcmd("say_team /clase" "Clases")
    
RegisterHam(Ham_TakeDamage"player""Fwd_TakeDamage1"0//Uno por cada arma...
    
RegisterHam(Ham_TakeDamage"player""Fwd_TakeDamage2"0)
    
RegisterHam(Ham_TakeDamage"player""Fwd_TakeDamage3"0)
    
RegisterHam(Ham_TakeDamage"player""Fwd_TakeDamage4"0)
    
RegisterHam(Ham_TakeDamage"player""Fwd_TakeDamage5"0)
    
RegisterHam(Ham_TakeDamage"player""Fwd_TakeDamage6"0)
}
//TENGO DUDAS CON ESTO PERO EL PLUGIN COMPILA :S AÑADO UNO POR CADA ARMA...:
public Fwd_TakeDamage1(victimweaponattackerFloat:damagedamage_bits){ //Registrar el nuevo daño
    
if (DmgKnife[attacker] && weapon == CSW_KNIFE)
    {
        
SetHamParamFloat(4damage*100.0//Multiplicador de daño
        
return HAM_HANDLED
    
} return HAM_HANDLED
}
public 
Fwd_TakeDamage2(victimweaponattackerFloat:damagedamage_bits){ //Registrar el nuevo daño
    
if (DmgM4[attacker] && weapon == CSW_M4A1)
    {
        
SetHamParamFloat(4damage*2.0//Multiplicador de daño
        
return HAM_HANDLED
    
} return HAM_HANDLED
}
public 
Fwd_TakeDamage3(victimweaponattackerFloat:damagedamage_bits){ //Registrar el nuevo daño
    
if (DmgAK[attacker] && weapon == CSW_AK47)
    {
        
SetHamParamFloat(4damage*2.0//Multiplicador de daño
        
return HAM_HANDLED
    
} return HAM_HANDLED
}
public 
Fwd_TakeDamage4(victimweaponattackerFloat:damagedamage_bits){ //Registrar el nuevo daño
    
if (DmgAWP[attacker] && weapon == CSW_AWP)
    {
        
SetHamParamFloat(4damage*100.0//Multiplicador de daño
        
return HAM_HANDLED
    
} return HAM_HANDLED
}
public 
Fwd_TakeDamage5(victimweaponattackerFloat:damagedamage_bits){ //Registrar el nuevo daño
    
if (DmgDeagle[attacker] && weapon == CSW_DEAGLE)
    {
        
SetHamParamFloat(4damage*100.0//Multiplicador de daño
        
return HAM_HANDLED
    
} return HAM_HANDLED
}
public 
Fwd_TakeDamage6(victimweaponattackerFloat:damagedamage_bits){ //Registrar el nuevo daño
    
if (DmgHE[attacker] && weapon == CSW_HEGRENADE)
    {
        
SetHamParamFloat(4damage*100.0//Multiplicador de daño
        
return HAM_HANDLED
    
} return HAM_HANDLED


He añadido al final de cada uno "return HAM_HANDLED" porque si no me tiraba un warning.
Ejemplo de un "case":
PHP Code:

case 1:
 {
    
ChatColor(id"!gClase Asesino")
    
strip_user_weapons(id)
    
give_item(id"weapon_knife")
    
DmgKnife[id] = true //ACTIVAR EL DAÑO
 



YakumoHiratsuhi 09-28-2013 09:45

Re: Duda con HAM
 
Solo una aclaración, con valores multiplicados por 100 lo más probable es que se terminen matando de un tiro.
PHP Code:

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("Classes""v1""SveN'")
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
    
g_maxplayers get_maxplayers()
}

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;



KuvZz 09-28-2013 09:48

Re: Duda con HAM
 
Eso es lo que quiero xD Bueno de todas formas esto es para practicar lo que de verdad me importa es el código. Voy a corregirlo y a probarlo y comento el resultado. Muchas gracias.

KuvZz 09-28-2013 10:49

Re: Duda con HAM
 
Lo puse todo y me saltan errores:
Quote:

//// Clases.sma
// C:\Program Files (x86)\Counter-Strike 1.6\cstrike\addons\amxmodx\scripting\Clases.s ma(50) : error 029: invalid expression, assumed zero
// C:\Program Files (x86)\Counter-Strike 1.6\cstrike\addons\amxmodx\scripting\Clases.s ma(50) : warning 215: expression has no effect
// C:\Program Files (x86)\Counter-Strike 1.6\cstrike\addons\amxmodx\scripting\Clases.s ma(50) : error 001: expected token: ";", but found ")"
// C:\Program Files (x86)\Counter-Strike 1.6\cstrike\addons\amxmodx\scripting\Clases.s ma(50) : error 029: invalid expression, assumed zero
// C:\Program Files (x86)\Counter-Strike 1.6\cstrike\addons\amxmodx\scripting\Clases.s ma(50) : fatal error 107: too many error messages on one line
PHP Code:

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//Esta es la línea 50 en mi código
        
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;



MexPower 09-28-2013 11:18

Re: Duda con HAM
 
if( DmgKnife [attacker ]) && weapon == CSW_KNIFE )
--->
if( DmgKnife [attacker ] && weapon == CSW_KNIFE )

alan_el_more 09-28-2013 11:21

Re: Duda con HAM
 
Llamar is_user_connected en el TakeDamage está bien pero sería mejor si lo comprobas en una variable cuando se conecta y desconecta el jugador

KuvZz 09-28-2013 11:30

Re: Duda con HAM
 
Ahora sí, que tonto -.- no me fijé en eso xD

YakumoHiratsuhi 09-28-2013 11:42

Re: Duda con HAM
 
se me fue un parentesis jajaja :mrgreen:

KuvZz 09-28-2013 11:50

Re: Duda con HAM
 
Cuando algún amigo pueda entrar al server pruebo y posteo a ver que tal. Gracias por la ayuda:D
Por cierto, ¿porqué a los bots no les afecta el daño?

alan_el_more 09-28-2013 12:30

Re: Duda con HAM
 
Porque tenes que registrar el TakeDamage a cada bot que entra al server.

Creo que era algo asi
PHP Code:

public client_putinserver(id)
{
   if(
is_user_bot(id))
      
RegisterHamFromEntity(Ham_TakeDamageid"fw_TakeDamage")


Tendrías que buscar bien para estar seguro


All times are GMT -4. The time now is 06:15.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.