Raised This Month: $32 Target: $400
 8% 

Duda con HAM


  
 
 
Thread Tools Display Modes
Author Message
KuvZz
Member
Join Date: Sep 2013
Location: Spain
Old 09-28-2013 , 08:46   Duda con HAM
#1

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
 

__________________

Last edited by KuvZz; 09-28-2013 at 08:49.
KuvZz is offline
YakumoHiratsuhi
Veteran Member
Join Date: Dec 2010
Location: Dreαmlαnd.
Old 09-28-2013 , 09:45   Re: Duda con HAM
#2

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;

__________________
"Podra parecer ridiculo o imposible, pero este es el camino que seguimos los verdaderos hombres, si hay un muro en el camino, lo derribamos, si no hay camino, haremos uno, con nuestras propias manos, porque el magma de nuestro corazón arde en llamas."

Last edited by YakumoHiratsuhi; 09-28-2013 at 09:46.
YakumoHiratsuhi is offline
Send a message via MSN to YakumoHiratsuhi
KuvZz
Member
Join Date: Sep 2013
Location: Spain
Old 09-28-2013 , 09:48   Re: Duda con HAM
#3

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 is offline
KuvZz
Member
Join Date: Sep 2013
Location: Spain
Old 09-28-2013 , 10:49   Re: Duda con HAM
#4

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;

__________________

Last edited by KuvZz; 09-28-2013 at 10:51.
KuvZz is offline
MexPower
Veteran Member
Join Date: Nov 2012
Old 09-28-2013 , 11:18   Re: Duda con HAM
#5

if( DmgKnife [attacker ]) && weapon == CSW_KNIFE )
--->
if( DmgKnife [attacker ] && weapon == CSW_KNIFE )
__________________
Allied Modders En Español
MexPower is offline
alan_el_more
Veteran Member
Join Date: Jul 2008
Location: amxmodx-es.com
Old 09-28-2013 , 11:21   Re: Duda con HAM
#6

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
__________________

Last edited by alan_el_more; 09-28-2013 at 11:21.
alan_el_more is offline
KuvZz
Member
Join Date: Sep 2013
Location: Spain
Old 09-28-2013 , 11:30   Re: Duda con HAM
#7

Ahora sí, que tonto -.- no me fijé en eso xD
__________________
KuvZz is offline
YakumoHiratsuhi
Veteran Member
Join Date: Dec 2010
Location: Dreαmlαnd.
Old 09-28-2013 , 11:42   Re: Duda con HAM
#8

se me fue un parentesis jajaja
__________________
"Podra parecer ridiculo o imposible, pero este es el camino que seguimos los verdaderos hombres, si hay un muro en el camino, lo derribamos, si no hay camino, haremos uno, con nuestras propias manos, porque el magma de nuestro corazón arde en llamas."
YakumoHiratsuhi is offline
Send a message via MSN to YakumoHiratsuhi
KuvZz
Member
Join Date: Sep 2013
Location: Spain
Old 09-28-2013 , 11:50   Re: Duda con HAM
#9

Cuando algún amigo pueda entrar al server pruebo y posteo a ver que tal. Gracias por la ayuda
Por cierto, ¿porqué a los bots no les afecta el daño?
__________________
KuvZz is offline
alan_el_more
Veteran Member
Join Date: Jul 2008
Location: amxmodx-es.com
Old 09-28-2013 , 12:30   Re: Duda con HAM
#10

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
__________________
alan_el_more is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 22:42.


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