AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Ham_TakeDamage, SetHamParamFloat (https://forums.alliedmods.net/showthread.php?t=92129)

xbatista 05-10-2009 13:40

Ham_TakeDamage, SetHamParamFloat
 
Wtf why the damage won't multiplier?

PHP Code:

public Fw_PlayerDamaged(idinflictorattackerdamagedamagebits)
{
    if ( !(
<= attacker <= g_iMaxPlayers) )
        return 
HAM_IGNORED;
    
    if ( 
get_user_weapon(attacker) == CSW_KNIFE && PlayerClassCT[attacker] == LUKE && get_user_team(attacker) == )
    {
        
SetHamParamFloat(4damage get_pcvar_float(luke_damage))
        return 
HAM_HANDLED;
    }
    if ( 
get_user_weapon(attacker) == CSW_KNIFE && PlayerClassCT[id] == OBI_VAN && get_user_team(attacker) == )
    {
        
set_pdata_float(id1081.0)
        return 
HAM_HANDLED;
    }
    if ( 
random_num(099) < 50 && get_user_weapon(attacker) == CSW_KNIFE )
    {
        
client_print(idprint_chat"Damage!");
        
SetHamParamFloat(4damage 5.0)
        return 
HAM_HANDLED;
    }
    
    return 
HAM_IGNORED;



Arkshine 05-10-2009 14:02

Re: Ham_TakeDamage, SetHamParamFloat
 
I see nothing wrong. So the problem is probably not here.

xPaw 05-10-2009 14:09

Re: Ham_TakeDamage, SetHamParamFloat
 
does Damage! prints?

xbatista 05-10-2009 14:12

Re: Ham_TakeDamage, SetHamParamFloat
 
Yes
P.S. no errors in log, good compiling.
I've set also multiplier to 10.0 to test it better, but won't multiplier only prints message.

Okey here you code :
PHP Code:

#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <fun>

#define PLUGIN    "Star Wars"
#define AUTHOR    "xbatista"
#define VERSION    "1.0"

#define JABBA_SPEED 175.0
#define DARTH_MAUL_SPEED 390.0
#define OBIVAN_SPEED 360.0

#define m_flNextSecondaryAttack 47
#define fm_cs_set_user_nobuy(%1)    set_pdata_int(%1, 235, get_pdata_int(%1, 235) & ~(1<<0) ) // no weapon buy

new PlayerClassT[33];
new 
PlayerClassCT[33];

const 
m_pClientActiveItem 374;

enum // Dark side class numbers
{
    
JABBA 0,
    
DARTH_VADER,
    
SITH_LORD,
    
DARTH_MAUL
};
enum // Light side class numbers
{
    
YODA 0,
    
OBI_VAN,
    
LUKE,
    
SKY_TROOPER
};
new const 
DARK_V_SABER[] = "models/starwars/red_saber2.mdl";    
new const 
LIGHT_V_SABER[] = "models/starwars/blue_saber2.mdl";

new const 
g_saber_hit[][] = 

    
"starwars/hit1.wav"
    
"starwars/hit2.wav",
    
"starwars/hit3.wav" 
}    
new const 
g_saber_miss[][] = 

    
"starwars/miss1.wav"
    
"starwars/miss2.wav"
}    

new 
jabba_hp,darth_vader_hpsith_hpdarth_vader_visiblesith_gravity,
darth_maul_gravity// Dark side abbilities

new yoda_regenluke_hpluke_damageyoda_gravity// Light side abbilities

new g_freezetimeg_iMaxPlayers;
new 
g_iCurWeapon[33];

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
// Dark side class abbility
    
jabba_hp register_cvar("sw_jabba_hp""255")
    
    
darth_vader_hp register_cvar("sw_vader_hp""140")
    
darth_vader_visible register_cvar("sw_vader_visible""4.0")
    
    
sith_hp register_cvar("sw_sith_hp""130")
    
sith_gravity register_cvar"sw_sith_gv""300" );
    
    
darth_maul_gravity register_cvar"sw_maul_gv""500" );
    
// Light side class abbility
    
yoda_regen register_cvar("sw_yoda_regen""1")
    
yoda_gravity register_cvar"sw_yoda_gv""300" );
    
    
luke_hp register_cvar("sw_luke_hp""150")
    
luke_damage register_cvar("sw_luke_damage""1.7")
    
    
register_logevent("Logevent_Round_Start"2"1=Round_Start");
    
register_event("HLTV""Event_New_Round""a""1=0""2=0");
    
register_event("CurWeapon",    "Ev_CurWeapon",    "be""1=1");
    
    
RegisterHam(Ham_Spawn"player""Fw_PlayerSpawn"1);
    
RegisterHam(Ham_TakeDamage"player""Fw_PlayerDamaged"1)
//    RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "Knife_SecondaryAttack")
    
    
register_forward(FM_CmdStart"Forward_CmdStart" );
    
register_forward(FM_EmitSound"Fw_EmitSound")
    
    
register_message(get_user_msgid("StatusIcon"),    "Message_StatusIcon")
    
    
g_iMaxPlayers get_maxplayers();
}
public 
plugin_precache()  
{
    new 
iNum;
    for (
iNum 0iNum sizeof g_saber_missiNum++)
        
engfunc(EngFunc_PrecacheSoundg_saber_miss[iNum])
    for (
iNum 0iNum sizeof g_saber_hitiNum++)
        
engfunc(EngFunc_PrecacheSoundg_saber_hit[iNum])
    
    
engfunc(EngFunc_PrecacheModelDARK_V_SABER);
    
engfunc(EngFunc_PrecacheModelLIGHT_V_SABER);
}
public 
Message_StatusIcon(iMsgIdMSG_DESTid

    static 
szIcon[5
    
get_msg_arg_string(2szIcon4
    if( 
szIcon[0] == 'b' && szIcon[2] == 'y' && szIcon[3] == 'z' 
    { 
        if( 
get_msg_arg_int(1)) 
        { 
            
fm_cs_set_user_nobuy(id
            return 
PLUGIN_HANDLED;
        } 
    }  
    
    return 
PLUGIN_CONTINUE;
}
public 
Fw_EmitSound(idchannelsample[], Float:volumeFloat:attnflagpitch)
{
    if(!
is_user_connected(id))
        return 
FMRES_IGNORED
    
    
if (sample[0] == 'w' && sample[1] == 'e' && sample[8] == 'k' && sample[9] == 'n')
    {
        switch(
sample[17])
        {
            case 
'l'
                return 
FMRES_SUPERCEDE
                
            
case 's''w':
            {
                
emit_sound(idCHAN_WEAPONg_saber_miss[random(sizeof g_saber_miss)], volumeattnflagpitch)
                return 
FMRES_SUPERCEDE;
            }
            case 
'b''1''2''3''4':
            {
                
emit_sound(idCHAN_WEAPONg_saber_hit[random(sizeof g_saber_hit)], volumeattnflagpitch)
                return 
FMRES_SUPERCEDE;
            }
        }
    }
    
    return 
FMRES_IGNORED;
}
/*public Knife_SecondaryAttack( iEnt ) 

    set_pdata_float(iEnt, m_flNextSecondaryAttack, 20.0, 4) 
    return HAM_SUPERCEDE 
} */
public Forward_CmdStartiduc_handleseed )
{
    static 
Buttons Buttons get_ucuc_handleUC_Buttons );
    
    if( ( 
Buttons IN_ATTACK2 ) && get_user_weaponid ) == CSW_KNIFE 
    {
        
set_ucuc_handleUC_ButtonsButtons & ~IN_ATTACK2 )
        return 
FMRES_HANDLED
    
}
    return 
FMRES_IGNORED

public 
Fw_PlayerSpawn(id)
{
    if ( !
is_user_alive(id) )
        return;
    
    
set_user_rendering(id); // Set rendering None.
    
strip_user_weapons(id); // Strip user weapons.
    
give_item(id"weapon_knife"); // And give him knife.
    
    // Dark side class random
    
PlayerClassT[id] = random_num(03)
    
// Light side class random
    
PlayerClassCT[id] = random_num(03)
    
    if ( 
get_user_team(id) == // User team Dark
    
{
        if ( 
PlayerClassT[id] == JABBA // Set Jabba health
        
{
            
set_user_health(idget_pcvar_num(jabba_hp));
        }
        else if ( 
PlayerClassT[id] == DARTH_VADER // Set Darth vader health and invisibility
        
{
            
set_user_health(idget_pcvar_num(darth_vader_hp));
            
            
dar_vader_visible(id)
        }
        else if ( 
PlayerClassT[id] == SITH_LORD // Set Sith Lord health,gravity
        
{
            
set_user_health(idget_pcvar_num(sith_hp));
            
            
set_pevidpev_gravityget_pcvar_floatsith_gravity ) / 800.0 ); 
        }
        else if ( 
PlayerClassT[id] == DARTH_MAUL // Set Darth Maul gravity
        
{
            
set_pevidpev_gravityget_pcvar_floatdarth_maul_gravity ) / 800.0 ); 
        }
        
    }
    else if ( 
get_user_team(id) == // User team Light
    
{
        if ( 
PlayerClassCT[id] == YODA // Set Yoda gravity and regen
        
{
            
yoda_regeneration(id)
            
            
set_pevidpev_gravityget_pcvar_floatyoda_gravity ) / 800.0 ); 
        }
        else if ( 
PlayerClassCT[id] == LUKE // Set Darth vader health and invisibility
        
{
            
set_user_health(idget_pcvar_num(luke_hp));
        }
    }
//    client_print(id, print_chat, "xxx");
}
public 
Fw_PlayerDamaged(idinflictorattackerdamagedamagebits)
{
    if ( !(
<= attacker <= g_iMaxPlayers) )
        return 
HAM_IGNORED;
    
    if ( 
get_user_weapon(attacker) == CSW_KNIFE && PlayerClassCT[attacker] == LUKE && get_user_team(attacker) == )
    {
        
SetHamParamFloat(4damage get_pcvar_float(luke_damage))
        return 
HAM_HANDLED;
    }
    if ( 
get_user_weapon(attacker) == CSW_KNIFE && PlayerClassCT[id] == OBI_VAN && get_user_team(attacker) == )
    {
        
set_pdata_float(id1081.0)
        return 
HAM_HANDLED;
    }
    if ( 
random_num(099) < 50 && get_user_weapon(attacker) == CSW_KNIFE )
    {
        
client_print(idprint_chat"Damage!");
        
SetHamParamFloat(4damage 10.0)
        return 
HAM_HANDLED;
    }
    
    return 
HAM_IGNORED;
}
public 
Ev_CurWeapon(id)
{
    if(!
is_user_alive(id))
        return;
    
    new 
weapon read_data(2)
        
    if( 
g_iCurWeapon[id] == weapon )
    {
        
// player hasn't changed his weapon
        // he has just fired or reloaded or zoomed
        // don't add speed to him
        
return;
    }
    
    
g_iCurWeapon[id] = weapon
    
    
if ( get_user_team(id) == // User team Dark
    
{
        if ( 
weapon == CSW_KNIFE )
        {
            
set_pev(idpev_viewmodel2DARK_V_SABER)
        }
        
        if ( !
g_freezetime )
        {
            if ( 
PlayerClassT[id] == JABBA // Set Jabba speed
            
{
                
set_pev(idpev_maxspeedJABBA_SPEED)
            }
            else if ( 
PlayerClassT[id] == DARTH_MAUL // Set Darth maul speed
            
{
                
set_pev(idpev_maxspeedDARTH_MAUL_SPEED)
            }
        }
    }
    else if ( 
get_user_team(id) == )
    {
        if ( 
weapon == CSW_KNIFE )
        {
            
set_pev(idpev_viewmodel2LIGHT_V_SABER)
        }
        
        if ( !
g_freezetime )
        {
            if ( 
PlayerClassCT[id] == OBI_VAN // Set Obi van speed
            
{
                
set_pev(idpev_maxspeedOBIVAN_SPEED)
            }
        }
    }
}
public 
Event_New_Round()
{
    
g_freezetime true;
}
public 
Logevent_Round_Start()
{
    
g_freezetime false;
    
    for(new 
id 1id <= g_iMaxPlayersid++)
    {
        if( 
is_user_alive(id) )
        {
            
g_iCurWeapon[id] = 0
            
// This should trigger a CurWeapon event
            
set_pdata_cbase(idm_pClientActiveItem, -15)
        }
    }
}
public 
dar_vader_invisible(id)
{
    if( 
PlayerClassT[id] == DARTH_VADER && get_user_team(id) == )
    {
        
set_user_rendering(idkRenderFxGlowShell000kRenderTransAlpha0)
        
set_task(get_pcvar_float(darth_vader_visible), "dar_vader_visible"id)
    }
}
public 
dar_vader_visible(id)
{
    if( 
PlayerClassT[id] == DARTH_VADER && get_user_team(id) == )
    {
        
set_user_rendering(idkRenderFxGlowShellrandom_num(100,255), random_num(100,255), random_num(100,255), kRenderTransAlpha70)
        
set_taskget_pcvar_float(darth_vader_visible), "dar_vader_invisible"id)
    }
}
public 
yoda_regeneration(id)
{
    if( 
PlayerClassCT[id] == YODA && get_user_team(id) == && get_user_health(id) < 255)
    {
        
set_user_health(id,get_user_health(id) + get_pcvar_num(yoda_regen))
        
set_task(1.0"yoda_regeneration"id)
    }



xbatista 05-11-2009 09:36

Re: Ham_TakeDamage, SetHamParamFloat
 
I've added a code, may someone check it please? ;)
Maybe I mess something :\

Hunter-Digital 05-11-2009 11:03

Re: Ham_TakeDamage, SetHamParamFloat
 
Quote:

Originally Posted by xbatista (Post 825034)
PHP Code:

RegisterHam(Ham_TakeDamage"player""Fw_PlayerDamaged"1


It's registered in POST, as in AFTER the damage was dealt, you can not modify something after it was done, remove the , 1 or set it to 0 and it should work

if not, do that and use HAM_OVERRIDE instead of HAM_HANDLED

xbatista 05-11-2009 12:01

Re: Ham_TakeDamage, SetHamParamFloat
 
Thanks that works ;)


All times are GMT -4. The time now is 01:31.

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