Raised This Month: $51 Target: $400
 12% 

Flash Bang Cluster nade for CS 1.6


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
pikachudisney
Member
Join Date: Mar 2005
Location: L.A.
Old 04-25-2006 , 05:48   Flash Bang Cluster nade for CS 1.6
Reply With Quote #1

Hello,

I am in need of someone to create a plugin that when you toss one flash bang once it is about to explode it pops out 5 or however many more you identify; around it with a spread of about 2 feet appart from eachother in a circular fashion. Below is another amx called cluster nades. This person is unavailable to make the changes i need to his old plugin to reflect the flashbangs and no damage. I am offering 20.00 bucks to anyone that comes up with a VIABLE WORKING plugin for flashbang cluster. Must contain the functionality of the plugin below.

Code:
#include < amxmodx > #include < amxmisc > #include < engine > #include < fun > #define TE_EXPLOSION 3 #define TE_WORLDDECAL 116 #define CLUSTERS 5 #define MAX_CLUSTER_DAMAGE 20 #define CLUSTER_DAMAGE_RADIUS 300 #define MIN_FLY_DISTANCE 200 #define MAX_FLY_DISTANCE 400 #define UPWARD_ARC 200 #define SCORCH 47 new explosion1, explosion2, grenade[32], last new bool:enabled = true new bool:catchdeath = false public death_msg() {     if ( catchdeath ) {         catchdeath = false         return PLUGIN_HANDLED     }     return PLUGIN_CONTINUE } public grenade_throw() {     if ( get_msg_args() < 2 ) return PLUGIN_HANDLED_MAIN     if ( get_msg_arg_int( 1 ) == 12 && get_msg_arg_int( 2 ) == 0 )         add_grenade_owner( last )     return PLUGIN_CONTINUE } public fire_in_the_hole( id, dest, ent ) {     if ( get_msg_args() != 5 ) return PLUGIN_CONTINUE     new temp[17]     get_msg_arg_string( 5, temp, 17 )     if ( equali( temp, "#Fire_in_the_hole" ) ) {         new name[32]         entity_get_string( ent, EV_SZ_netname, name, 32 )         last = find_player( "a", name )     }     return PLUGIN_CONTINUE } public pfn_touch( ptr, ptd ) {     //Gets the indentifying strings of each entity     new identify[15], compare[15], Float:origin[3]     if ( ptr == 0 ) identify = "world"     else entity_get_string( ptr, EV_SZ_classname, identify, 15 )     if ( ptd == 0 ) compare = "world"     else if ( is_valid_ent( ptd ) ) entity_get_string( ptd, EV_SZ_classname, compare, 15 )     //Ensures that the grenade cluster argument is always the 'ptr'     if ( ptr == 0 || equali( compare, "grenade_cluster" ) ) return PLUGIN_HANDLED     //Checks to see if it is a grenade cluster hitting another object. If it is it explodes and deals damage     if ( equali( identify, "grenade_cluster" ) ) {         entity_get_vector( ptr, EV_VEC_origin, origin )         //Deals radius damage to the spot of collision         new player[32], players, location[3], origin2[3], distance, Float:multiplier, owner         origin2[0] = floatround( origin[0] )         origin2[1] = floatround( origin[1] )         origin2[2] = floatround( origin[2] )         owner = entity_get_edict( ptr, EV_ENT_owner )         get_players( player, players, "a" )         for ( new i = 0; i < players; i++ ) {             get_user_origin( player[i], location )             distance = get_distance( origin2, location )             if ( distance < CLUSTER_DAMAGE_RADIUS ) {                 multiplier = floatdiv( float( CLUSTER_DAMAGE_RADIUS - distance ), float( CLUSTER_DAMAGE_RADIUS ) )                 deal_grenade_damage( player[i], owner, floatmul( multiplier, float( MAX_CLUSTER_DAMAGE ) ) )             }         }         //Paints the explosion         message_begin( MSG_BROADCAST, SVC_TEMPENTITY )         write_byte( TE_EXPLOSION )         write_coord( floatround( origin[0] ) )         write_coord( floatround( origin[1] ) )         write_coord( floatround( origin[2] ) )         write_short( explosion1 )         write_byte( 50 )         write_byte( 15 )         write_byte( 0 )         message_end()         message_begin( MSG_BROADCAST, SVC_TEMPENTITY )         write_byte( TE_EXPLOSION )         write_coord( floatround( origin[0] ) )         write_coord( floatround( origin[1] ) )         write_coord( floatround( origin[2] ) )         write_short( explosion2 )         write_byte( 50 )         write_byte( 15 )         write_byte( 0 )         message_end()         //If the grenade hit the ground or a wall then this draws a land scar         if ( ptd == 0 ) {             message_begin( MSG_BROADCAST, SVC_TEMPENTITY )             write_byte( TE_WORLDDECAL )             write_coord( floatround( origin[0] ) )             write_coord( floatround( origin[1] ) )             write_coord( floatround( origin[2] ) )             write_byte( SCORCH )             message_end()         }         remove_entity( ptr ) //Removes the grenade cluster so that it does not enter an infinite loop         return PLUGIN_HANDLED     }     return PLUGIN_CONTINUE } public grenade_explosion() {     if (get_msg_arg_int( 1 ) == 3 && get_msg_arg_int ( 6 ) == 25 && get_msg_arg_int ( 7 ) == 30 && enabled) {         new pos[3]         pos[0] = floatround( get_msg_arg_float( 2 ) )         pos[1] = floatround( get_msg_arg_float( 3 ) )         pos[2] = floatround( get_msg_arg_float( 4 ) )         new cluster, Float:vAngle[3], Float:angles[3], Float:velocity[3], Rvelocity[3], Float:distance, Float:actualDistance, Float:multiplier         new Float:origin[3]         origin[0] = float( pos[0] )         origin[1] = float( pos[1] )         origin[2] = float( pos[2] )         new Float:minBox[3] = { -1.0, ... }         new Float:maxBox[3] = { 1.0, ... }                 //This will launch the above specified number of clusters         for (new i = 0; i < CLUSTERS; i++) {             //Create a random direction for the cluster to fly             velocity[0] = random_float( float( MIN_FLY_DISTANCE ), float( MAX_FLY_DISTANCE ) )             if ( random_num( 0, 1 ) == 1 ) velocity[0] = floatmul( velocity[0], -1.0 )             velocity[1] = random_float( float( MIN_FLY_DISTANCE ), float( MAX_FLY_DISTANCE ) )             if ( random_num( 0, 1 ) == 1 ) velocity[1] = floatmul( velocity[1], -1.0 )             velocity[2] = float( UPWARD_ARC )             Rvelocity[0] = pos[0] + floatround( velocity[0] )             Rvelocity[1] = pos[1] + floatround( velocity[1] )             Rvelocity[2] = pos[2] + floatround( velocity[2] )             //Create the distance the cluster will fly             distance = random_float( float( MIN_FLY_DISTANCE ), float( MAX_FLY_DISTANCE ) )             actualDistance = float( get_distance( pos, Rvelocity ) )             multiplier = floatdiv( distance, actualDistance )                         velocity[0] = floatmul( velocity[0], multiplier )             velocity[1] = floatmul( velocity[1], multiplier )             velocity[2] = floatmul( velocity[2], multiplier )             //Create the angles for the facing of the cluster. PS: I have no idea how to do the angle thing really. This is a blind attempt.             vector_to_angle( velocity, angles )             vector_to_angle( velocity, vAngle )             //Create the entity of the cluster             cluster = create_entity( "info_target" )             //Set the identifying string of the cluster's entity             entity_set_string( cluster, EV_SZ_classname, "grenade_cluster")             //Set the model for the cluster's entity             entity_set_model( cluster, "models/grenade.mdl" )               //Set the bounds for the cluster's entity                entity_set_vector( cluster, EV_VEC_mins, minBox)             entity_set_vector( cluster, EV_VEC_maxs, maxBox)             //Set the origin for the cluster's entity (NOTE: The clusters will spawn in the same spot, but they will be set to ignore eachother             entity_set_origin( cluster, origin )             //Set the angles of the cluster's entity                entity_set_vector( cluster, EV_VEC_angles, angles )             entity_set_vector( cluster, EV_VEC_v_angle, vAngle )             //Set the behavior specific variables for the cluster's entity             entity_set_int( cluster, EV_INT_movetype, 6 ) //Has gravity and registers collisions             entity_set_int( cluster, EV_INT_solid, 1 ) //Collisions do not block             //Record who the owner of this nade is             entity_set_edict( cluster, EV_ENT_owner, get_grenade_owner() )             //Make the cluster fly!             entity_set_vector( cluster, EV_VEC_velocity, velocity )         }     }     return PLUGIN_CONTINUE } public enable_cluster_grenade( id ) {     new argument[1], number     read_argv( 1, argument, 1 )     number = str_to_num( argument )     if ( number == 0 ) {         enabled = false     }     if ( number == 1 ) {         enabled =true     }     return PLUGIN_HANDLED } public plugin_init() {     register_plugin( "Cluster Grenades", "1.0beta", "doomy" )     register_concmd( "amx_cluster_grenade_enable", "enable_cluster_grenade", ADMIN_KICK, "Enable or disable cluster grenades (1 = enable, 0 = false)" )     register_message( 23, "grenade_explosion" )     register_message( 77, "fire_in_the_hole" )     register_message( 83, "death_msg" )     register_message( 99,"grenade_throw" )     return PLUGIN_CONTINUE  } public plugin_precachce() {     precache_sound( "sound/weapons/explode3.wav" )     explosion1 = precache_model( "sprites/zerogxplode.spr" )     explosion2 = precache_model( "sprites/explode1.spr" ) } //MISCELLANEOUS FUNCTIONS deal_grenade_damage( attacked, attacker, Float:damage ) {     //DeathMsg 85 -1 BYTE : killer index BYTE : victim index STRING : weapon     if ( get_user_health( attacked ) - floatround( damage ) <= 0 ) {         //Stops the default death message from being displayed         catchdeath = true         user_kill( attacked )                 //Displays who killed who         message_begin( 2, 83 )         write_byte( attacker )         write_byte( attacked )         write_byte( 0 ) //No idea what this does         write_string( "grenade" )         message_end()         //Adds a frag to the killer         set_user_frags( attacker, get_user_frags( attacker ) + 1 )     }     else         set_user_health( attacked, get_user_health( attacked ) - floatround( damage ) ) } add_grenade_owner( owner ) {     for ( new i = 0; i < 32; i++ ) {         if ( grenade[i] == 0 ) {             grenade[i] = owner             return         }     } } stock get_grenade_owner() {     new which = grenade[0]     for ( new i = 1; i < 32; i++ ) {         grenade[i - 1] = grenade[i]     }     grenade[31] = 0     return which }
__________________
pikachudisney is offline
pikachudisney
Member
Join Date: Mar 2005
Location: L.A.
Old 04-27-2006 , 05:05  
Reply With Quote #2

Ok so seeing as how i have not gotten any reponces yet. I am upping the request to $50.00
__________________
pikachudisney is offline
pikachudisney
Member
Join Date: Mar 2005
Location: L.A.
Old 05-19-2006 , 01:53  
Reply With Quote #3

I have a programer create the plugin i was looking for thanks to all of you who did not take the challenge...
__________________
pikachudisney is offline
Reply



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 10:16.


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