AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Help with jetpack ! (https://forums.alliedmods.net/showthread.php?t=312408)

Ali0mer 12-02-2018 03:21

Help with jetpack !
 
Hello guys,
Can you prevent zombies from using jetpack in this code?!
Code:

#include < amxmodx >

#include < engine >

#include < fakemeta >

#include < hamsandwich >

#include < xs >

#include < zombieplague>

// ColorChat

new TeamName[][] = {

        "",

        "TERRORIST",

        "CT",

        "SPECTATOR"

};

enum Color { NORMAL = 1, GREEN, TEAM_COLOR, GREY, RED, BLUE};

ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...) {

        if(!get_playersnum())

                return;

       

        new message[256];



        switch(type) {

                case NORMAL:

                {

                        message[0] = 0x01;

                }

                case GREEN:

                {

                        message[0] = 0x04;

                }

                default:

                {

                        message[0] = 0x03;

                }

        }



        vformat(message[1], 251, msg, 4);



        // Make sure message is not longer than 192 character. Will crash the server.

        message[192] = '^0';



        new team, ColorChange, index, MSG_Type;

       

        if(id) {

                MSG_Type = MSG_ONE;

                index = id;

        }

        else {

                index = FindPlayer();

                MSG_Type = MSG_ALL;

        }

       

        team = get_user_team(index);

        ColorChange = ColorSelection(index, MSG_Type, type);



        ShowColorMessage(index, MSG_Type, message);

               

        if(ColorChange)

                Team_Info(index, MSG_Type, TeamName[team]);

}



ShowColorMessage(id, type, message[]) {

        static bool:saytext_used;

        static get_user_msgid_saytext;

       

        if(!saytext_used) {

                get_user_msgid_saytext = get_user_msgid("SayText");

                saytext_used = true;

        }

       

        message_begin(type, get_user_msgid_saytext, _, id);

        write_byte(id);

        write_string(message);

        message_end();       

}

Team_Info(id, type, team[]) {

        static bool:teaminfo_used;

        static get_user_msgid_teaminfo;

       

        if(!teaminfo_used) {

                get_user_msgid_teaminfo = get_user_msgid("TeamInfo");

                teaminfo_used = true;

        }

       

        message_begin(type, get_user_msgid_teaminfo, _, id);

        write_byte(id);

        write_string(team);

        message_end();



        return 1;

}





ColorSelection(index, type, Color:Type) {

        switch(Type) {

                case RED:

                {

                        return Team_Info(index, type, TeamName[1]);

                }

                case BLUE:

                {

                        return Team_Info(index, type, TeamName[2]);

                }

                case GREY:

                {

                        return Team_Info(index, type, TeamName[0]);

                }

        }



        return 0;

}



FindPlayer() {

        new i = -1;



        while(i <= get_maxplayers()) {

                if(is_user_connected(++i))

                        return i;

        }



        return -1;

}

native get_user_jetpack( iPlayer );

native user_drop_jetpack( iPlayer );

native set_user_fuel( iPlayer, Float: fFuel );

native set_user_rocket_time( iPlayer, Float: fTime );

native set_user_jetpack( iPlayer, iJetpack );



new g_iJetpack, bool: g_bConnected[ 33 ], g_cName[ 33 ][ 32 ];





public zp_user_infect_attempt( iPlayer )

    if( get_user_jetpack( iPlayer ) )

        user_drop_jetpack( iPlayer );



public zp_user_infected_pre( iPlayer )

    if( get_user_jetpack( iPlayer ) )

        user_drop_jetpack( iPlayer );



public zp_user_infected_post( iPlayer )

    if( get_user_jetpack( iPlayer ) )

        user_drop_jetpack( iPlayer );



public client_putinserver( iPlayer )

{

    g_bConnected[ iPlayer ] = true;



    get_user_name( iPlayer, g_cName[ iPlayer ], 31 );

}



public client_disconnect( iPlayer )

    g_bConnected[ iPlayer ] = false;



public client_infochanged( iPlayer )

{

    static cInfo[ 32 ];

    get_user_info( iPlayer, "name", cInfo, 31 );



    if( !equali( g_cName[ iPlayer ], cInfo ) )

        copy( g_cName[ iPlayer ], 31, cInfo );

}

new g_msgHUD

public plugin_init( )

{

    g_iJetpack = zp_register_extra_item( "Jetpack + Bazooka", 30, ZP_TEAM_HUMAN );

    g_msgHUD = CreateHudSyncObj()

    register_logevent( "RoundStart", 2, "1=Round_Start" );

   

}



public zp_extra_item_selected( iPlayer, iItem )

{

    if( iItem == g_iJetpack )

    {

            if( get_user_jetpack( iPlayer ) )

        {

                ColorChat( iPlayer,GREY, "^x04[ZP]^x01 You already have a^x03 Jetpack!" );

                zp_set_user_ammo_packs( iPlayer, zp_get_user_ammo_packs( iPlayer ) + 30 );

        }

        else

        {

                set_user_jetpack( iPlayer, 1 );

                set_user_fuel( iPlayer, 250.0 );

                new szName[32]

                get_user_name(iPlayer, szName, charsmax(szName))

                set_hudmessage(255, 170, 42, 0.31, 0.84, 1, 0.0, 7.0, 1.0, 1.0, -1)

                ShowSyncHudMsg(0 ,g_msgHUD,"%s has bought a Jetpack!!", szName )

                ColorChat( iPlayer,GREY, "^x04[ZP]^x01 Press^x03 CTRL+SPACE^x01 to fly!" );

                ColorChat( iPlayer,GREY, "^x04[ZP]^x01 Press^x03 RIGHT CLICK^x01 to shoot!" );

        }

    }

}



public Rocket_Touch( iOwner, iRocket )

{

    if( g_bConnected[ iOwner ] )

    {

        static iPlayers[ 32 ], iNum, i;

        get_players( iPlayers, iNum, "a" );



        for( i = 0; i < iNum; i++ )

        {

            if( zp_get_user_zombie( iPlayers[ i ] ) )

            {

                static Float: fDistance, Float: fDamage;

                fDistance = entity_range( iPlayers[ i ], iRocket );



                if( fDistance < 320.0 )

                {

                    fDamage = 1050.0 - fDistance;

               

                    static Float: fVelocity[ 3 ];

                    pev( iPlayers[ i ], pev_velocity, fVelocity );

                    xs_vec_mul_scalar( fVelocity, 2.75, fVelocity );

                    fVelocity[ 2 ] *= 1.75;

                    set_pev( iPlayers[ i ], pev_velocity, fVelocity );

                   

                    if( float( get_user_health( iPlayers[ i ] ) ) - fDamage > 0.0 )

                        ExecuteHamB( Ham_TakeDamage, iPlayers[ i ], iRocket, iOwner, fDamage, DMG_BLAST );

                       

                    else ExecuteHamB( Ham_Killed, iPlayers[ i ], iOwner, 2 );

                    ColorChat( iOwner,GREY, "^x04[ZP]^x01 Damage to^x04 %s^x01 ::^x04 %0.0f^x01 damage", g_cName[ iPlayers[ i ] ], fDamage );

                }

            }

        }

    }

}



public Jetpack_Touch( iPlayer )

    return zp_get_user_zombie( iPlayer ) ? PLUGIN_HANDLED : PLUGIN_CONTINUE;



public RoundStart( )

{

    static iPlayers[ 32 ], iNum, i;

    get_players( iPlayers, iNum, "a" );



    for( i = 0; i < iNum; i++ )

        if( get_user_jetpack( iPlayers[ i ] ) )

        set_user_rocket_time( iPlayers[ i ], 0.0 );

}



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

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