View Single Post
khios
Junior Member
Join Date: Mar 2009
Location: Belgium
Old 03-19-2009 , 04:59   Re: DeFRAG [New map coming soon!]
Reply With Quote #22

NEWS!

So here's my own code for the plugin! It has only speed and scout for now but I wanna know if you people think it look better??

Just a hint! Line 178 I wanna change cs_get_weaopn_ammo to use fakemeta or other module so that I don't have to include <cstike> any idea?

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>

/*Hello people and welcome to DeFRAG for CS1.6!
Most of the code here is taken from anothers plugins that already exist. I'm a totally beginner in amxx coding so I need time to understand fully how it works.
If someone better than me want to make it I will be gratefull, I just got the idea nothing more :)

CREDITS GOES TO :
ConnorMcLeod : Bhop script -> http://forums.alliedmods.net/showthr...light=slowdown
skyjur : Semiclip -> http://forums.alliedmods.net/showthr...light=semiclip post #6
arkshine : Sprint plugin code [VERSION 2] -> http://forums.alliedmods.net/showthread.php?t=85767 post #10
Meow meow : Scout conc -> http://forums.alliedmods.net/showthr...highlight=conc [Original idea from Fatalis]

Watch scout conc in action -> http://www.youtube.com/watch?v=g0lBufjXakI

That is DeFRaG on Quake 3 -> http://www.youtube.com/watch?v=fqq9YcmHW1A*/

#define MAX_PLAYERS 20            // Define max_players on DeFRAG server
#define BUNNYJUMP_MAX_SPEED_FACTOR 1.0    // Define speed gained when using Bhop
#define Player_Jump 6
#define OFFSET_CAN_LONGJUMP    356 // VEN 

#define CONC_WEAP CSW_SCOUT        // Define wich weapon to use for having a conc push

#define KNIFE_SPRINT_SPEED 1500.0          // Define the speed when using +sprint cmd
#define KNIFE_DEFAULT_SPEED 500.0         // Define normal move speed with the knife (Default Cs1.6 = 250)

new defrag_scoutpushdefrag_scoutradiusdefrag_scout_iammo;
// new maxplayers
new bool:g_bAlive[MAX_PLAYERS +1]
// new g_pcvarBhop, g_pcvarFallDamage
// new g_pcvarGravity
new lastammo[33]; 
new 
lastweap[33]; 

public 
plugin_init() {
    
register_plugin("DeFRAG""1.0""superNOVA_")
    
register_clcmd "+sprint""ClientCommand_StartSprint" );
    
register_clcmd "-sprint""ClientCommand_StopSprint" );
    
    
// g_pcvarBhop = register_cvar("bhop", "1")      // 0 = Bhop OFF / 1 = Bhop ON // 
    // g_pcvarFallDamage = register_cvar("mp_falldamage", "0.0")    // Amout of the normal damages taken when falling (0 = no damages / 1 = normal damages )

    
RegisterHam(Ham_Player_Jump"player""Player_Jump")
    
register_forward(FM_UpdateClientData"UpdateClientData")
    
register_forward(FM_CmdStart"CmdStart")
    
RegisterHam(Ham_Spawn"player""Check_Alive"1)
    
RegisterHam(Ham_Killed"player""Check_Alive"1)
    
RegisterHam(Ham_TakeDamage"player""Ham_TakeDamage_player")

    
register_concmd("amx_bhop""AdminCmd_Bhop"ADMIN_LEVEL_A"<nick|#userid> <0|1>")

    
// g_pcvarGravity = get_cvar_pointer("sv_gravity")
    
        // DeFRAG Scout Settings
    
    
defrag_scoutpush register_cvar("scout_conc","900.0"); // Force of the push
    
defrag_scoutradius register_cvar("scout_radius","900.0"); // Area covered by the push
    
defrag_scout_iammo register_cvar("scout_iammo","0"); // Infinite ammo for scout <0/1>
    
        // BHOP Settings
    
    // g_pcvarBhop = register_cvar("bhop_on", "1")  // (0 : bhop off, 1 : bhop off) 
    // g_pcvarFallDamage = register_cvar("mp_falldamage", "0.0") // Amount of normal damages taken when falling ( 0 = no damages // 1 = normal damages )
}

public 
Check_Alive(id
    { 
        
g_bAlive[id] = bool:is_user_alive(id
    } 

        
// DeFRAG Knife
    
    
new const g_szKnifeModel[] = "models/v_knife.mdl";  // To set the knife model! Easy if you want to use custom models (will make some soon just for DeFRAG)
    
const KNIFE_DRAW_ANIMATION 3

    public 
ClientCommand_StartSprint ( const PlayerId )
    {
        if ( 
get_user_weapon PlayerId ) == CSW_KNIFE )
        {
            
UTIL_SetPlayerSpeed PlayerId KNIFE_DEFAULT_SPEED );
            
set_pevPlayerIdpev_viewmodel2g_szKnifeModel ); 
            
set_pevPlayerIdpev_weaponanimKNIFE_DRAW_ANIMATION );
            
message_beginMSG_ONE_UNRELIABLESVC_WEAPONANIM_PlayerId ); 
            
write_byteKNIFE_DRAW_ANIMATION ); 
            
write_bytepevPlayerIdpev_body ) ); 
            
message_end();
        }
    
        return 
PLUGIN_HANDLED;
    }
    
     
UTIL_SetPlayerSpeed ( const PlayerId, const Float:Speed )
    { 
        
set_pevPlayerIdpev_maxspeedSpeed ); 
        
engfuncEngFunc_SetClientMaxspeedPlayerIdSpeed ); 
    }
    

        
// DeFRAG bhop 
        
        // DeFRAG scout
        
    
stock get_velocity_from_originentFloat:fOrigin[3], Float:fSpeedFloat:fVelocity[3] ) 
    { 
        new 
Float:fEntOrigin[3]; 
        
peventpev_originfEntOrigin ); 

        
// Velocity = Distance / Time 

        
new Float:fDistance[3]; 
        
fDistance[0] = fEntOrigin[0] - fOrigin[0]; 
        
fDistance[1] = fEntOrigin[1] - fOrigin[1]; 
        
fDistance[2] = fEntOrigin[2] - fOrigin[2]; 

        new 
Float:fTime = ( vector_distancefEntOrigin,fOrigin ) / fSpeed ); 

        
fVelocity[0] = fDistance[0] / fTime
        
fVelocity[1] = fDistance[1] / fTime
        
fVelocity[2] = fDistance[2] / fTime

        return ( 
fVelocity[0] && fVelocity[1] && fVelocity[2] ); 
    } 


    
// Sets velocity of an entity (ent) away from origin with speed (speed) 

    
stock set_velocity_from_originentFloat:fOrigin[3], Float:fSpeed 
    { 
    new 
Float:fVelocity[3]; 
    
get_velocity_from_originentfOriginfSpeedfVelocity 

    
set_peventpev_velocityfVelocity ); 

    return ( 
); 
    } 

public 
make_tracer(id
    { 
    new 
Float:maxboost get_pcvar_float(defrag_scoutpush); 
    if( !
maxboost 
    return; 

    new 
weap read_data(2);        // id of the weapon 
    
new ammo read_data(3);        // ammo left in clip 

    
if( weap == CONC_WEAP && g_bAlive[id] ){ 

        if( 
lastweap[id] == 
        
lastweap[id] = weap

        if( 
lastammo[id] > ammo && lastweap[id] == weap ){ 
        new 
Vec[3], Float:fVec[3], Float:origin[3]; 
        
get_user_origin(idVec3); 

        
IVecFVec(VecfVec); 

        
pev(idpev_originorigin); 
        new 
Float:dist get_distance_foriginfVec ); 
        new 
Float:radius get_pcvar_floatdefrag_scoutradius ); 
        if(
dist <= radius){ 
        new 
Float:boost maxboost - ( ( maxboost dist) / radius ); 
        
set_velocity_from_origin(idfVecboost); 
        } 

        if( 
get_pcvar_numdefrag_scout_iammo ) )
        { 
        new 
wpn[32]; 
        
get_weaponname(weap,wpn,31); 

        if( 
ammo == )
        { 
        new 
iWPNidx = -1
        while( (
iWPNidx fm_find_ent_by_class(iWPNidxwpn)) )
        { 
        if( 
id == pev(iWPNidxpev_owner) )
        { 
        
cs_set_weapon_ammo(iWPNidx11); 
        
ammo 11
        break; 
                        } 
                    } 
                } 
            } 
        }
        
lastammo[id] = ammo
        
lastweap[id] = weap;
        }


Last edited by khios; 03-19-2009 at 05:03.
khios is offline
Send a message via MSN to khios Send a message via Skype™ to khios