#include <amxmodx>
#include <cstrike>
#include <engine>
#include <zp50_core>
#include <zp50_items>
#include <zp50_class_nemesis>
#include <zp50_class_survivor>
#include <colorchat>
new const PLUGIN[] = "Jetpack Lite";
new const VERSION[] = "1.0";
new const AUTHOR[] = "v3x & Dare & Mercede & H.RED.ZONE";
new const CVAR_JP_ACTIVE[] = "jp_active";
new const CVAR_JP_SPEED[] = "jp_speed";
new const CVAR_JP_TRAIL[] = "jp_trail";
new const CVAR_JP_DOD[] = "jp_dropondeath";
new JP_SOUND [ ] = "jetpack.wav";
new flame , smoke;
new bool:has_jp[33];
new bool:has_started;
new frame[33];
new current_jps;
new g_jetpack;
new cvar_enable_jp
new cvar_allow_survivor_jp
public plugin_init() {
register_plugin(PLUGIN , VERSION , AUTHOR);
g_jetpack = zp_items_register ( "JetPack" , 50 )
register_clcmd ( "say /dropjp" , "drop_jp" );
register_clcmd ( "dropjp" , "drop_jp" );
cvar_enable_jp = register_cvar ( "zp_jp_enable" , "1" )
cvar_allow_survivor_jp = register_cvar ( "zp_jp_survivor" , "1" )
register_cvar ( CVAR_JP_ACTIVE , "1" );
register_cvar ( CVAR_JP_SPEED , "500" );
register_cvar ( CVAR_JP_TRAIL , "1" );
register_cvar ( CVAR_JP_DOD , "1" );
register_event ( "DeathMsg" , "Event_DeathMsg" , "a" );
register_event ( "HLTV" , "did_not_start" , "a" , "1=0" , "2=0" );
register_logevent ( "did_start" , 2 , "1=Round_Start" );
register_touch ( "jetpack" , "player" , "mmm_touchy" ); }
public did_not_start ( ) {
has_started = false;
new ent = -1;
while ( ( ent = find_ent_by_class ( ent , "jetpack" ) ) != 0 ) {
remove_entity ( ent ); }
current_jps = 0;
new aPlayers [ 32 ] , iNum , i;
get_players ( aPlayers , iNum);
for ( i = 1; i <= iNum; i++) {
if ( has_jp[aPlayers [ i ] ] ) {
current_jps++; } } }
public did_start() {
has_started = true; }
public client_connect ( id ) {
has_jp[id] = false; }
public client_disconnect ( id ) {
has_jp[id] = false; }
public plugin_precache ( ) {
smoke = precache_model ( "sprites/smoke.spr" );
flame = precache_model ( "sprites/rjet1.spr" );
precache_model( "models/p_egon.mdl" );
precache_model( "models/w_egon.mdl" );
precache_sound( JP_SOUND ); }
public zp_user_infected_post(id) {
if (is_user_alive(id)) {
if (zp_core_is_zombie(id)) {
has_jp[id] = false; } } }
public client_PreThink(id) {
if(!get_cvar_num(CVAR_JP_ACTIVE)) {
return PLUGIN_CONTINUE; }
if(!is_user_connected(id) || !is_user_alive(id)) {
return PLUGIN_CONTINUE; }
if(!(get_user_button(id) & IN_JUMP)) {
return PLUGIN_CONTINUE; }
if(!has_started || !has_jp[id]) {
return PLUGIN_CONTINUE; }
new Float:fAim[3] , Float:fVelocity[3];
VelocityByAim(id , get_cvar_num(CVAR_JP_SPEED) , fAim);
fVelocity[0] = fAim[0];
fVelocity[1] = fAim[1];
fVelocity[2] = fAim[2];
set_user_velocity(id , fVelocity);
entity_set_int(id , EV_INT_gaitsequence , 6);
emit_sound(id , CHAN_VOICE , JP_SOUND , 1.0 , ATTN_NORM , 0 , PITCH_NORM);
if(frame[id] >= 3) {
frame[id] = 0;
if(get_cvar_num(CVAR_JP_TRAIL)) {
smoke_effect(id); }
entity_set_string(id , EV_SZ_weaponmodel , "models/p_egon.mdl"); }
frame[id]++;
return PLUGIN_CONTINUE; }
public smoke_effect(id) {
new origin[3];
get_user_origin(id, origin, 0);
origin[2] = origin[2] - 10;
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte ( 17);
write_coord ( origin [ 0 ] );
write_coord ( origin [ 1 ] );
write_coord ( origin [ 2 ] );
write_short ( ( get_cvar_num ( CVAR_JP_TRAIL ) == 1 ) ? smoke : flame);
write_byte(10);
write_byte(115);
message_end(); }
public Event_DeathMsg ( ) {
if ( get_cvar_num ( CVAR_JP_DOD ) ) {
drop_jp(read_data ( 2 ) );
} else { has_jp[read_data(2)] = false; } }
public zp_fw_items_select_pre ( id , itemid ) {
if ( itemid == g_jetpack ) {
if (get_pcvar_num( cvar_enable_jp ) == 0)
return ZP_ITEM_DONT_SHOW;
if ( zp_class_nemesis_get ( id ) || zp_core_is_zombie ( id ) )
return ZP_ITEM_DONT_SHOW;
if ( get_pcvar_num ( cvar_allow_survivor_jp ) == 0 && zp_class_survivor_get ( id ) )
return ZP_ITEM_DONT_SHOW;
return ZP_ITEM_AVAILABLE; }
return ZP_ITEM_AVAILABLE; }
public zp_fw_items_select_post ( id , itemid ) {
if( itemid == g_jetpack ) {
ColorChat ( id , GREEN , "^1[^4ZP^1] Mostmar^4 repulhetsz magasra" )
ClCmd_BuyJP ( id ); }
return PLUGIN_CONTINUE; }
public ClCmd_BuyJP(id) {
if(!get_cvar_num(CVAR_JP_ACTIVE)) {
client_print(id , print_chat , "[AMXX] Sajnaljuk, jelenleg tiltva van a jetpack!");
return PLUGIN_HANDLED; }
if(!is_user_alive(id)) {
client_print(id , print_chat , "[AMXX] Halottkent nem lehet Jetpackot venni!!");
return PLUGIN_HANDLED; }
if(has_jp[id]) {
client_print(id , print_chat , "[AMXX] Neked mar van 1 jetpackod!");
return PLUGIN_HANDLED; }
has_jp[id] = true;
client_print(id , print_chat , "[AMXX] Hasznalat : Ctrl+SPACE+W ");
client_print(id , print_chat , "[AMXX] Eldobashoz ird chatbe : /dropjp");
emit_sound(id , CHAN_VOICE , "items/gunpickup2.wav" , 1.0 , ATTN_NORM , 0 , PITCH_NORM);
current_jps++;
return PLUGIN_HANDLED; }
public drop_jp(id) {
if ( !has_jp [ id ] ) return PLUGIN_HANDLED;
new Float:fAim [ 3 ] , Float:fOrigin [ 3 ];
VelocityByAim ( id , 64 , fAim ) ;
entity_get_vector ( id , EV_VEC_origin , fOrigin ) ;
fOrigin[0] += fAim[0];
fOrigin[1] += fAim[1];
new jp = create_entity("info_target");
entity_set_string(jp , EV_SZ_classname , "jetpack");
entity_set_model(jp , "models/w_egon.mdl");
entity_set_size(jp , Float:{-16.0,-16.0,-16.0} , Float:{16.0,16.0,16.0});
entity_set_int(jp , EV_INT_solid , 1);
entity_set_int(jp , EV_INT_movetype , 6);
entity_set_vector(jp , EV_VEC_origin , fOrigin);
has_jp[id] = false;
return PLUGIN_HANDLED; }
public mmm_touchy(jp , id) {
if(!is_user_alive(id)) return PLUGIN_CONTINUE;
if(has_jp[id]) return PLUGIN_CONTINUE;
has_jp[id] = true;
emit_sound(id , CHAN_VOICE , "items/gunpickup2.wav" , 1.0 , ATTN_NORM , 0 , PITCH_NORM);
remove_entity(jp);
return PLUGIN_CONTINUE; }
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/