Raised This Month: $32 Target: $400
 8% 

Subplugin Submission [ZP 5.0] ZCLASS: Power tank


Post New Thread Reply   
 
Thread Tools Display Modes
Isaac999
Senior Member
Join Date: Nov 2011
Location: Home
Old 12-30-2011 , 22:49   Re: [ZP] ZCLASS: Power tank (new)
Reply With Quote #21

Owh i forgot thanks man,...
__________________
Isaac999 is offline
H.RED.ZONE
Veteran Member
Join Date: Sep 2011
Location: Serbia, Belgrade
Old 12-30-2011 , 23:44   Re: [ZP 5.0] ZCLASS: Power tank (new)
Reply With Quote #22

Np Ill add it on the list of zp 5.0 plugins (:
__________________
H.RED.ZONE is offline
Bee4
Junior Member
Join Date: Mar 2012
Old 02-03-2013 , 03:14   Re: [ZP 5.0] ZCLASS: Power tank
Reply With Quote #23

Tried to add the 5x punch code & the rock code to the nemesis class in Zp 5.0.8
but it didn't work :\
help?
Bee4 is offline
KaNNabyS
Junior Member
Join Date: Mar 2017
Location: Romania
Old 02-21-2019 , 12:03   Re: [ZP 5.0] ZCLASS: Power tank
Reply With Quote #24

how I can change the button bind .
I have bind on button E
I want to make bind g +???
what is the command for launch rock ?
__________________

Ƭяαιм ιи Яσмαиια !!! .. Ƨι αƨтα иɛ σcʋρα тσт Ƭιмρʋ' !!! ϰ !! ..
˙˙ กก x-: กกก ,ndɯı⊥ ʇoʇ ɐdnɔo ǝu ɐʇsɐ ıS ˙˙ กกก ɐıuɐɯoᴚ uı ɯıɐɹ⊥
KaNNabyS is offline
Send a message via Yahoo to KaNNabyS Send a message via Skype™ to KaNNabyS
DeMNiX
Veteran Member
Join Date: Nov 2011
Location: Russia
Old 02-24-2019 , 01:05   Re: [ZP 5.0] ZCLASS: Power tank
Reply With Quote #25

you can test it
Code:
#include <amxmodx>
#include <zombieplague>
#include <fakemeta>
#include <engine>
#include <fun>
#include <xs>
#include <hamsandwich>
#include <cs_ham_bots_api>
/*                      L4D Tank Zombie
				by x[L]eoNNN
	
	#Description :
	
		this is a Zombie Class of Famous Game, "L4d" with the ability to throw rocks at enemies,
		either killing him, infecting taking life, etc. (controlled by a cvar)
	
	#Cvars :
	
		zp_tank_rockspeed 700 // Rock Speed Launched by Tank
		zp_tank_rockdamage 70 // damage done by the rock
		zp_tank_rockreward 1 // Ammo Pack's Reward by touching the enemy with the rock
		zp_tank_rockmode 1 // Rock Mode :
					1 = Take Damage
					2 = Killing
					3 = Infect
					4 = Bad Aim
		zp_tank_rock_energynesesary 20 // energy nesesary to launch a rock

	#Changelog :
	
		v1.0: public release
		v1.1: print messages changed to hudmessages (for spam), fix time reload bug,add effect touching rock
		v1.2: fix a survivor bugs', To break an entity "func_breakable" when the rock touches the entity, 
		      fix a problem with logs : native error : get_user_origin.
*/

#define PA_LOW  25.0 // min screen shake
#define PA_HIGH 50.0 // max screen shake

new const zclass_name[] = { "L4D Tank Zombie" } 
new const zclass_info[] = { "Launch Rocks" } 
new const zclass_model[] = { "l4d_tank" } 
new const zclass_clawmodel[] = { "v_tank.mdl" } 
const zclass_health = 4800 
const zclass_speed = 440
const Float:zclass_gravity = 0.6 
const Float:zclass_knockback = 0.4  

new g_L4dTank, g_is_tanker[33]

new g_trailSprite, rockmodel
new g_trail[] = "sprites/xbeam3.spr"
new rock_model[] = "models/rockgibs.mdl"
new rock_model2[] = "models/rockgibs.mdl"
new tank_rocklaunch[] = "zombie_plague/tank_rocklaunch.wav"


new g_power[33]

new cvar_rock_damage, cvar_rock_reward, cvar_rockmode, cvar_rockEnergyNesesary, cvar_rock_speed, cvar_reloadpower

public plugin_init()
{
	register_plugin("[ZP] Zombie Class: L4D Tank Zombie", "1.2", "x[L]eoNNN") 
 
	RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
	RegisterHamBots(Ham_TakeDamage, "fw_TakeDamage") 

	cvar_rock_speed = register_cvar("zp_tank_rockspeed", "700")
	cvar_rock_damage = register_cvar("zp_tank_rockdamage", "70")
	cvar_rock_reward = register_cvar("zp_tank_rockreward", "1")
	cvar_rockmode = register_cvar("zp_tank_rockmode", "1")
	cvar_rockEnergyNesesary = register_cvar("zp_tank_rock_energynesesary", "20")
	cvar_reloadpower = register_cvar("zp_tank_reload_power", "1")
	register_touch("rock_ent","*","RockTouch")
	register_clcmd("drop", "clcmd_ability");
} 

public plugin_precache()
{
	g_L4dTank = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback) 
	g_trailSprite = precache_model(g_trail)
	rockmodel = precache_model(rock_model)
	precache_sound(tank_rocklaunch)
}
	
public zp_user_infected_post ( id, infector )
{
             if (zp_get_user_zombie_class(id) == g_L4dTank)
             {
	     	g_is_tanker[id] = true
		print_chatColor(id, "\g[ZP]\n You Are A \gL4D Tank\n, You Cant Launch Rock With \tIN_USE [+E]") 
		g_power[id] = get_pcvar_num(cvar_rockEnergyNesesary)
		set_task(get_pcvar_float(cvar_reloadpower), "power1", id, _, _, "b")
             }
}  

public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
	if ( is_user_alive( attacker ) && get_user_weapon(attacker) == CSW_KNIFE && g_is_tanker[attacker] && zp_get_user_zombie_class(attacker) == g_L4dTank && zp_get_user_zombie(attacker))
	{			
		SetHamParamFloat(4, damage * 2.0 )
		toco(victim, attacker)
	}
}

public toco(iVictim, id)
{
	if(!is_user_alive(id) || !is_user_connected(id) || !zp_get_user_zombie(id) || zp_get_user_nemesis(id) || zp_get_user_zombie_class(id) != g_L4dTank)
		return PLUGIN_HANDLED
	
	if(!is_user_alive(iVictim) || !is_user_connected(iVictim) || zp_get_user_zombie(iVictim) || zp_get_user_nemesis(iVictim))
		return PLUGIN_HANDLED
		
	new Float:start_origin[3], Float:end_origin[3]
	pev(id, pev_origin, start_origin)
	pev(iVictim, pev_origin, end_origin)
	
	start_origin[0] = end_origin[0] - start_origin[0]
	start_origin[1] = end_origin[1] - start_origin[1]
	start_origin[2] = 0.0
	
	xs_vec_normalize(start_origin, end_origin)
	
	end_origin[0] *= 1500.0
	end_origin[1] *= 1000.0
	end_origin[2] = 500.0
	
	set_pev(iVictim, pev_velocity, end_origin)
	
	new hp = get_user_health(iVictim)
	new damage = 10
	
	if(hp > damage)
	{		
		new origin[3]
		get_user_origin(iVictim, origin)
		
		message_begin(MSG_ONE, get_user_msgid("Damage"), _, iVictim)			
		write_byte(21)
		write_byte(20)
		write_long(0)
		write_coord(origin[0])
		write_coord(origin[1])
		write_coord(origin[2])
		message_end()
		
		message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, iVictim)
		write_short(255<<14) // ammount
		write_short(1<<12) // lasts this long
		write_short(255<<14) // frequency
		message_end()
		
		new Float:fVec[3]
		fVec[0] = random_float(PA_LOW, PA_HIGH)
		fVec[1] = 0.0
		fVec[2] = random_float(PA_LOW, PA_HIGH)
		
		set_pev(iVictim, pev_punchangle, fVec)
		
		set_user_health(iVictim, get_user_health(iVictim)-damage)
	}
	else
	{
		user_kill(iVictim, id)
	}
	
	emit_sound(id, CHAN_STREAM, tank_rocklaunch, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	return PLUGIN_HANDLED;
}

public clcmd_ability(id)
{
	if (!is_user_alive(id)) {

		return PLUGIN_CONTINUE;
	}

	if (!zp_get_user_zombie(id) || zp_get_user_nemesis(id)) {

		return PLUGIN_CONTINUE;
	}

	if (zp_get_user_zombie_class(id) != g_L4dTank) {

		return PLUGIN_CONTINUE;
	}

	if(g_power[id] >= get_pcvar_num(cvar_rockEnergyNesesary))
	{
		MakeRock(id)
		emit_sound(id, CHAN_STREAM, tank_rocklaunch, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
		g_power[id] = 0
	}
	else
	{
		set_hudmessage(255, 0, 0, 0.0, 0.6, 0, 6.0, 3.0)
		show_hudmessage(id, "[ZP] Energy Nesesary To Launch Rock [%d] || You Energy [%d]", get_pcvar_num(cvar_rockEnergyNesesary), g_power[id])
	}
	return PLUGIN_HANDLED;
}
public power1(id)
{
	g_power[id] += 1
	
	if( g_power[id] > get_pcvar_num(cvar_rockEnergyNesesary) )
	{
		g_power[id] = get_pcvar_num(cvar_rockEnergyNesesary)
	}
}

public RockTouch( RockEnt, Touched )
{
	if ( !pev_valid ( RockEnt ) )
		return
		
	static Class[ 32 ]
	entity_get_string( Touched, EV_SZ_classname, Class, charsmax( Class ) )
	new Float:origin[3]
		
	pev(Touched,pev_origin,origin)
	
	if( equal( Class, "player" ) )
		if (is_user_alive(Touched))
		{
			if(!zp_get_user_zombie(Touched))
			{
				new TankKiller = entity_get_edict( RockEnt, EV_ENT_owner )
				
				switch(get_pcvar_num(cvar_rockmode))
				{
					case 1: // Health
					{
						new iHealth = get_user_health(Touched)

						if( iHealth >= 1 && iHealth <= get_pcvar_num(cvar_rock_damage))
						{
							ExecuteHamB( Ham_Killed, Touched, TankKiller, 0 )
							print_chatColor(TankKiller, "\g[ZP]\n You Receive \t%d\n Ammo Packs To Reach a Rock a Enemy", get_pcvar_num(cvar_rock_reward))
							zp_set_user_ammo_packs(TankKiller, zp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
						}
						else
						{
							set_user_health(Touched, get_user_health(Touched) - get_pcvar_num(cvar_rock_damage))
							print_chatColor(TankKiller, "\g[ZP]\n You Receive \t%d\n Ammo Packs To Reach a Rock a Enemy", get_pcvar_num(cvar_rock_reward))
							zp_set_user_ammo_packs(TankKiller, zp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
						}
					}
					case 2: // Kill
					{
						if(zp_get_user_survivor(Touched))
							return
								
						ExecuteHamB( Ham_Killed, Touched, TankKiller, 0 )
						zp_set_user_ammo_packs(TankKiller, zp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
						print_chatColor(TankKiller, "\g[ZP]\n You Receive \t%d\n Ammo Packs To Reach a Rock a Enemy", get_pcvar_num(cvar_rock_reward))
					}
					case 3: //infect
					{
						if(zp_get_user_survivor(Touched))
							return
							
						zp_infect_user(Touched, TankKiller, 1, 1)
						print_chatColor(TankKiller, "\g[ZP]\n You Receive \t%d\n Ammo Packs To Reach a Rock a Enemy", get_pcvar_num(cvar_rock_reward))
						zp_set_user_ammo_packs(TankKiller, zp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))

					}
					case 4: //BadAim
					{
						new Float:vec[3] = {100.0,100.0,100.0}
						
						entity_set_vector(Touched,EV_VEC_punchangle,vec)  
						entity_set_vector(Touched,EV_VEC_punchangle,vec)
						entity_set_vector(Touched,EV_VEC_punchangle,vec) 
						
						print_chatColor(TankKiller, "\g[ZP]\n You Receive \t%d\n Ammo Packs To Reach a Rock a Enemy", get_pcvar_num(cvar_rock_reward))
						zp_set_user_ammo_packs(TankKiller, zp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
						set_task(1.50, "EndVictimAim", Touched)
					}
				}
			}
		}
		
	if(equal(Class, "func_breakable") && entity_get_int(Touched, EV_INT_solid) != SOLID_NOT)
		force_use(RockEnt, Touched)
		
	remove_entity(RockEnt)
	
	if(!is_user_alive(Touched))
		return
		
	static origin1[3]
	get_user_origin(Touched, origin1)
	
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY, origin1);
	write_byte(TE_BREAKMODEL); 
	write_coord(origin1[0]);  
	write_coord(origin1[1]);
	write_coord(origin1[2] + 24); 
	write_coord(16); 
	write_coord(16); 
	write_coord(16); 
	write_coord(random_num(-50,50)); 
	write_coord(random_num(-50,50)); 
	write_coord(25);
	write_byte(10); 
	write_short(rockmodel); 
	write_byte(10); 
	write_byte(25);
	write_byte(0x01); 
	message_end();
}

public EndVictimAim(Touched)
{
	new Float:vec[3] = {-100.0,-100.0,-100.0}
	entity_set_vector(Touched,EV_VEC_punchangle,vec)  
	entity_set_vector(Touched,EV_VEC_punchangle,vec)
	entity_set_vector(Touched,EV_VEC_punchangle,vec)
}

public MakeRock(id)
{
			
	new Float:Origin[3]
	new Float:Velocity[3]
	new Float:vAngle[3]

	new RockSpeed = get_pcvar_num(cvar_rock_speed)

	entity_get_vector(id, EV_VEC_origin , Origin)
	entity_get_vector(id, EV_VEC_v_angle, vAngle)

	new NewEnt = create_entity("info_target")

	entity_set_string(NewEnt, EV_SZ_classname, "rock_ent")

	entity_set_model(NewEnt, rock_model2)

	entity_set_size(NewEnt, Float:{-1.5, -1.5, -1.5}, Float:{1.5, 1.5, 1.5})

	entity_set_origin(NewEnt, Origin)
	entity_set_vector(NewEnt, EV_VEC_angles, vAngle)
	entity_set_int(NewEnt, EV_INT_solid, 2)

	entity_set_int(NewEnt, EV_INT_rendermode, 5)
	entity_set_float(NewEnt, EV_FL_renderamt, 200.0)
	entity_set_float(NewEnt, EV_FL_scale, 1.00)

	entity_set_int(NewEnt, EV_INT_movetype, 5)
	entity_set_edict(NewEnt, EV_ENT_owner, id)

	velocity_by_aim(id, RockSpeed  , Velocity)
	entity_set_vector(NewEnt, EV_VEC_velocity ,Velocity)

	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(TE_BEAMFOLLOW) 
	write_short(NewEnt) 
	write_short(g_trailSprite) 
	write_byte(10) 
	write_byte(10) 
	write_byte(255) 
	write_byte(0) 
	write_byte(0) 
	write_byte(200) 
	message_end()
	
	return PLUGIN_HANDLED
}

stock print_chatColor(const id,const input[], any:...)
{
	new msg[191], players[32], count = 1;
	vformat(msg,190,input,3);
	replace_all(msg,190,"\g","^4");// green
	replace_all(msg,190,"\n","^1");// normal
	replace_all(msg,190,"\t","^3");// team
	
	if (id) players[0] = id; else get_players(players,count,"ch");
	for (new i=0;i<count;i++)
	if (is_user_connected(players[i]))
	{
		message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("SayText"),_,players[i]);
		write_byte(players[i]);
		write_string(msg);
		message_end();
	}
} 
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
__________________
My channel with test codes
https://www.youtube.com/user/demnix03

Zombie Riot [Scenario & bots-zombie 11.11.2023]
https://youtu.be/8ZZan-aq2sc

Last edited by DeMNiX; 02-24-2019 at 01:06.
DeMNiX 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 15:52.


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