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

SSJ gohan


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
cstrike37
Member
Join Date: Jan 2012
Old 06-27-2012 , 00:21   SSJ gohan
Reply With Quote #1

how can I make the player move when the power is created?
Code:
	if ( !is_user_alive(id) || !sh_is_inround() ) return
	if ( !gHasssjgohan[id] || !gUsingPower[id] ) return

	//new wpnid = read_data(2)
	if ( read_data(2) != CSW_KNIFE ) {
		// Knife only when using power
		engclient_cmd(id, "weapon_knife")

		// Make them freeze in place if power created
		if ( gPowerID[id] > 1 ) set_user_maxspeed(id, 1.0)

I tried removing
Code:
if ( gPowerID[id] > 1 ) set_user_maxspeed(id, 1.0)
but nothing happens


Heres the full code:
Code:
// SUPER SAIYAN GOHAN! - from Dragon Ball, Z, GT series. Gohan is Goku and Chi-Chi's first son.

/* CVARS - copy and paste to shconfig.cfg

//Super Saiyan Gohan
ssjgohan_level 9
ssjgohan_damage 125		//Damage spread over radius of blast (Default 125)
ssjgohan_radius 300		//Radius of the damage (Default 300)
ssjgohan_cooldown 30		//Seconds til next available use from power explode (Default 30)
ssjgohan_powerspeed 1000	//Speed of Kamehameha, min-500 max-(server's sv_maxvelocity) (Default 1000)
ssjgohan_blast_decals 1		//Show the burn decals from blast (Default 1)

*/

/*
* v1.1 - vittu - 10/4/08
*      - Updated to be SH 1.2.0 compliant, removed amx compatibility.
*      - Burn decals have been corrected for czero.
*
* v1.0 - vittu - 12/2/05
*      - Fixed to ssjgohan_blast_decals cvar named incorrectly in code.
*          Thanks to Om3g[A] for pointing it out.
*
* v1.0 - vittu - 9/17/05
*
*   Entity creation partially based on Bazooka, which is based on Missiles Launcher 3.8.2 by Eric Lidman & jtp10181.
*   Extra sprites and sounds used from Earth's Special Forces a HL mod - http://www.esforces.com/
*/

#include <superheromod>

// GLOBAL VARIBLES
new gHeroID
new bool:gHasSSJGohan[SH_MAXSLOTS+1]
new bool:gUsingPower[SH_MAXSLOTS+1]
new bool:gChargeOver[SH_MAXSLOTS+1]
new bool:gPowerKeyUsed[SH_MAXSLOTS+1]
new gPowerID[SH_MAXSLOTS+1]
new gLastWeapon[SH_MAXSLOTS+1]
new gMsgBarTime, gMaxPlayers
new gSpriteSmoke, gSpriteTrail, gSpriteExplosion

//First 3 are mid size burn decals, second 3 are larger grenade size
new gBurnDecal[6] = {28, 29, 30, 46, 47, 48}
new gPcvarMaxDamage, gPcvarRadius, gPcvarCooldown, gPcvarSpeed, gPcvarDecals
new const gPowerClass[] = "ssjgohan_kamehameha"
new const gSoundCharge[] = "shmod/ssjgohan_kamehame.wav"
new const gSoundRelease[] = "shmod/ssjgohan_ha.wav"
new const gSoundBeam[] = "shmod/esf_beamhead.wav"
new const gModelKamehameha[] = "sprites/shmod/esf_kamehameha_blue.spr"
//----------------------------------------------------------------------------------------------
public plugin_init()
{
	// Plugin Info
	register_plugin("SUPERHERO Super Saiyan Gohan", "1.1", "vittu")

	// DO NOT EDIT THIS FILE TO CHANGE CVARS, USE THE SHCONFIG.CFG
	new pcvarLevel = register_cvar("ssjgohan_level", "9")
	gPcvarMaxDamage = register_cvar("ssjgohan_damage", "125")
	gPcvarRadius = register_cvar("ssjgohan_radius", "300")
	gPcvarCooldown = register_cvar("ssjgohan_cooldown", "30")
	gPcvarSpeed = register_cvar("ssjgohan_powerspeed", "1000")
	gPcvarDecals = register_cvar("ssjgohan_blast_decals", "1")

	// FIRE THE EVENT TO CREATE THIS SUPERHERO!
	gHeroID = sh_create_hero("Super Saiyan Gohan", pcvarLevel)
	sh_set_hero_info(gHeroID, "Guided Kamehameha", "Hold +power key down to charge, and release to fire your Kamehameha.")
	sh_set_hero_bind(gHeroID)

	// EVENTS
	register_event("CurWeapon", "curweapon", "be", "1=1")
	register_forward(FM_Think, "fm_Think")
	register_forward(FM_Touch, "fm_Touch")

	gMsgBarTime = get_user_msgid("BarTime")
	gMaxPlayers = get_maxplayers()

	// Set to correct burn decals if mod is CZ
	new mod_name[9]
	get_modname(mod_name, 8)
	if ( equal(mod_name, "czero") ) {
		gBurnDecal = {40, 41, 42, 58, 59, 60}
	}
}
//----------------------------------------------------------------------------------------------
public plugin_precache()
{
	precache_sound(gSoundCharge)
	precache_sound(gSoundRelease)
	precache_sound(gSoundBeam)
	precache_model(gModelKamehameha)
	gSpriteTrail = precache_model("sprites/shmod/esf_trail_blue.spr")
	gSpriteExplosion = precache_model("sprites/shmod/esf_exp_blue.spr")
	gSpriteSmoke = precache_model("sprites/wall_puff4.spr")
}
//----------------------------------------------------------------------------------------------
public sh_hero_init(id, heroID, mode)
{
	if ( gHeroID != heroID ) return

	gHasSSJGohan[id] = mode ? true : false

	if ( gPowerID[id] > 0 ) {
		remove_power(id, gPowerID[id])
	}
}
//----------------------------------------------------------------------------------------------
public sh_client_spawn(id)
{
	gPlayerInCooldown[id] = false
	gUsingPower[id] = false
	gPowerKeyUsed[id] = false
}
//----------------------------------------------------------------------------------------------
public sh_hero_key(id, heroID, key)
{
	if ( gHeroID != heroID || sh_is_freezetime() ) return
	if ( !is_user_alive(id) || !gHasSSJGohan[id] ) return

	if ( key == SH_KEYDOWN ) {
		if ( gPlayerInCooldown[id] ) {
			sh_sound_deny(id)
			sh_chat_message(id, gHeroID, "Not enough KI, you must wait longer")
			return
		}

		// Prevent too many entities, which would cause server problems
		if ( gPowerID[id] ) {
			sh_sound_deny(id)
			sh_chat_message(id, gHeroID, "Already using Kamehameha Attack")
			return
		}

		// Remember this weapon...
		gLastWeapon[id] = get_user_weapon(id)

		// Switch to knife
		engclient_cmd(id, "weapon_knife")

		// Set some variables
		gUsingPower[id] = true
		gPowerKeyUsed[id] = true
		gChargeOver[id] = false

		emit_sound(id, CHAN_STATIC, gSoundCharge, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

		// Show a progress bar for time til charge is full
		progressBar(id, 4)

		// Must wait for full bar time/sound til power can be used, this task will set it ok
		set_task(4.0, "powerCharged", id)
	}
	if ( key == SH_KEYUP ) {
		if ( !gChargeOver[id] ) {

			remove_task(id)

			// Stop the sound
			emit_sound(id, CHAN_STATIC, gSoundCharge, VOL_NORM, ATTN_NORM, SND_STOP, PITCH_NORM)

			// Remove progress bar
			progressBar(id, 0)

			// Switch back to previous weapon...
			if ( gLastWeapon[id] != CSW_KNIFE ) sh_switch_weapon(id, gLastWeapon[id])

			gUsingPower[id] = false
			gPowerKeyUsed[id] = false

			return
		}

		if ( !is_user_alive(id) || !gHasSSJGohan[id] || !gPowerKeyUsed[id] ) return

		// Stop the sound
		emit_sound(id, CHAN_STATIC, gSoundCharge, VOL_NORM, ATTN_NORM, SND_STOP, PITCH_NORM)

		emit_sound(id, CHAN_STATIC, gSoundRelease, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

		// Remove progress bar
		progressBar(id, 0)

		set_user_maxspeed(id, 1.0)

		create_power(id)

		gPowerKeyUsed[id] = false
	}
}
//----------------------------------------------------------------------------------------------
public powerCharged(id)
{
	gChargeOver[id] = true
}
//----------------------------------------------------------------------------------------------
progressBar(id, seconds)
{
	message_begin(MSG_ONE_UNRELIABLE, gMsgBarTime, _, id)
	write_byte(seconds)
	write_byte(0)
	message_end()
}
//----------------------------------------------------------------------------------------------
create_power(id)
{
	new newEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
	if ( !newEnt ) {
		sh_chat_message(id, gHeroID, "Power Creation Failure")
		return
	}

	gPowerID[id] = newEnt

	set_pev(newEnt, pev_classname, gPowerClass)
	engfunc(EngFunc_SetModel, newEnt, gModelKamehameha)

	// Vec Mins/Maxes must be below +/- 5.0 to make a burndecal correctly
	engfunc(EngFunc_SetSize, newEnt, {-2.0, -2.0, -2.0}, {2.0, 2.0, 2.0})

	new Float:fl_Origin[3], Float:fl_Angles[3], Float:fl_vAngle[3]
	// Get users postion and angles (angles are probably not needed in this case)
	pev(id, pev_origin, fl_Origin)
	pev(id, pev_angles, fl_Angles)
	pev(id, pev_v_angle, fl_vAngle)

	// Change height of entity origin to hands
	fl_Origin[2] += 6.0

	// Set entity postion and angles
	engfunc(EngFunc_SetOrigin, newEnt, fl_Origin)
	set_pev(newEnt, pev_angles, fl_Angles)
	set_pev(newEnt, pev_v_angle, fl_vAngle)

	// Set properties of the entity
	set_pev(newEnt, pev_solid, SOLID_BBOX)
	set_pev(newEnt, pev_movetype, MOVETYPE_FLY)
	set_pev(newEnt, pev_rendermode, kRenderTransAdd)
	set_pev(newEnt, pev_renderamt, 255.0)
	set_pev(newEnt, pev_scale, 1.20)
	set_pev(newEnt, pev_owner, id)

	new Float:fl_Velocity[3], AimVec[3], Float:fl_EndOrigin[3]

	get_user_origin(id, AimVec, 3)
	IVecFVec(AimVec, fl_EndOrigin)

	// Seting entSpeed higher then 2000.0 will require server to set sv_maxvelocity higher as well
	// sh_get_velocity verifies sv_maxvelocity is set high enough if not it will lower the speed
	sh_get_velocity(fl_Origin, fl_EndOrigin, get_pcvar_float(gPcvarSpeed), fl_Velocity)

	set_pev(newEnt, pev_velocity, fl_Velocity)

	emit_sound(newEnt, CHAN_STATIC, gSoundBeam, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

	// Trail on enity. It's flawed by not being removable, so make it last long.
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(TE_BEAMFOLLOW)
	write_short(newEnt)		// entity:attachment to follow
	write_short(gSpriteTrail)	// sprite index
	write_byte(100)			// life in 0.1's
	write_byte(8)			// line width in 0.1's
	write_byte(255)			// r,g,b
	write_byte(255)
	write_byte(255)
	write_byte(255)			// brightness
	message_end()

	new Float:gametime
	global_get(glb_time, gametime)
	set_pev(newEnt, pev_nextthink, gametime + 0.1)
}
//----------------------------------------------------------------------------------------------
public fm_Think(ent)
{
	if ( !pev_valid(ent) ) return FMRES_IGNORED

	static classname[32]
	classname[0] = '^0'
	pev(ent, pev_classname, classname, 31)

	if ( !equal(classname, gPowerClass) ) return FMRES_IGNORED

	new id = pev(ent, pev_owner)

	if ( !is_user_connected(id) ) {
		fm_Touch(ent, 0)
		return FMRES_IGNORED
	}

	new Float:fl_Origin[3], AimVec[3], Float:fl_EndOrigin[3], Float:fl_Velocity[3], Float:fl_OldVelocity[3]
	new avgFactor
	new Float:speed = get_pcvar_float(gPcvarSpeed)

	get_user_origin(id, AimVec, 3)
	IVecFVec(AimVec, fl_EndOrigin)
	pev(ent, pev_origin, fl_Origin)

	if ( speed < 1000.0 )
		avgFactor = 6
	else if ( speed < 1500.0 )
		avgFactor = 4
	else
		avgFactor = 2

	sh_get_velocity(fl_Origin, fl_EndOrigin, speed, fl_Velocity)

	pev(ent, pev_velocity, fl_OldVelocity)

	// Make it lag a bit, helps keep movement smooth else would be too erratic
	new oneless = avgFactor-1
	fl_Velocity[0] += fl_OldVelocity[0] * oneless
	fl_Velocity[1] += fl_OldVelocity[1] * oneless
	fl_Velocity[2] += fl_OldVelocity[2] * oneless

	fl_Velocity[0] /= avgFactor
	fl_Velocity[1] /= avgFactor
	fl_Velocity[2] /= avgFactor

	set_pev(ent, pev_velocity, fl_Velocity)

	new Float:gametime
	global_get(glb_time, gametime)
	set_pev(ent, pev_nextthink, gametime + 0.1)

	return FMRES_IGNORED
}
//----------------------------------------------------------------------------------------------
public fm_Touch(ptr, ptd)
{
	if ( !sh_is_active() ) return FMRES_IGNORED
	if ( !pev_valid(ptr) ) return FMRES_IGNORED

	static classname[32]
	classname[0] = '^0'
	pev(ptr, pev_classname, classname, 31)

	// Lets block the picking up of a shield
	if ( equal(classname, gPowerClass) ) {
		new id = pev(ptr, pev_owner)

		new Float:dRatio, Float:distanceBetween, damage
		new Float:dmgRadius = get_pcvar_float(gPcvarRadius)
		new maxDamage = get_pcvar_num(gPcvarMaxDamage)
		new CsTeams:idTeam = cs_get_user_team(id)
		new FFOn = sh_friendlyfire_on()
		new Float:vicOrigin[3]
		new Float:fl_vExplodeAt[3]

		pev(ptr, pev_origin, fl_vExplodeAt)

		for ( new victim = 1; victim <= gMaxPlayers; victim++ )
		{
			if ( !is_user_alive(victim) ) continue
			if ( idTeam == cs_get_user_team(victim) && !FFOn && id != victim ) continue

			pev(victim, pev_origin, vicOrigin)
			distanceBetween = vector_distance(fl_vExplodeAt, vicOrigin)

			if ( distanceBetween <= dmgRadius )
			{
				dRatio = distanceBetween / dmgRadius
				damage = maxDamage - floatround(maxDamage * dRatio)

				// Lessen damage taken by self
				if (victim == id) damage = floatround(damage / 2.0)

				if ( !damage ) damage = 1	// Incase damage cvar is really low cause something if within the radius 
				sh_extra_damage(victim, id, damage, "Kamehameha", _, SH_DMG_NORM, true, _, fl_vExplodeAt)

				// Make them feel it
				new Float:fl_vicVelocity[3]
				fl_vicVelocity[0] = ((vicOrigin[0] - fl_vExplodeAt[0]) / distanceBetween) * 300.0
				fl_vicVelocity[1] = ((vicOrigin[1] - fl_vExplodeAt[1]) / distanceBetween) * 300.0
				fl_vicVelocity[2] = 150.0

				set_pev(victim, pev_velocity, fl_vicVelocity)
				sh_screen_shake(victim, 1.2, 1.2, 1.2)
			}
		}


		// Make some Effects
		new blastSize = floatround(dmgRadius / 12.0)

		// Explosion Sprite
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_GLOWSPRITE)	//23
		engfunc(EngFunc_WriteCoord, fl_vExplodeAt[0])
		engfunc(EngFunc_WriteCoord, fl_vExplodeAt[1])
		engfunc(EngFunc_WriteCoord, fl_vExplodeAt[2])
		write_short(gSpriteExplosion)	// model
		write_byte(01)			// life 0.x sec
		write_byte(blastSize)		// size
		write_byte(255)			// brightness
		message_end()

		// Explosion (smoke, sound/effects)
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
		write_byte(TE_EXPLOSION)	//3
		engfunc(EngFunc_WriteCoord, fl_vExplodeAt[0])
		engfunc(EngFunc_WriteCoord, fl_vExplodeAt[1])
		engfunc(EngFunc_WriteCoord, fl_vExplodeAt[2])
		write_short(gSpriteSmoke)	// model
		write_byte(blastSize+5)		// scale in 0.1's
		write_byte(20)			// framerate
		write_byte(10)			// flags
		message_end()

		// Create Burn Decals, if they are used
		if ( get_pcvar_num(gPcvarDecals) ) {
			// Change burn decal according to blast size
			new decal = random_num(0,2)
			if (blastSize > 18) {
				//If radius >~ 216 use larger decals
				decal += 3
			}

			message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
			write_byte(TE_GUNSHOTDECAL)	//109
			engfunc(EngFunc_WriteCoord, fl_vExplodeAt[0])
			engfunc(EngFunc_WriteCoord, fl_vExplodeAt[1])
			engfunc(EngFunc_WriteCoord, fl_vExplodeAt[2])
			write_short(0)			//?
			write_byte(gBurnDecal[decal])		//decal
			message_end()
		}

		// Stop the sounds
		emit_sound(ptr, CHAN_STATIC, gSoundBeam, VOL_NORM, ATTN_NORM, SND_STOP, PITCH_NORM)
		emit_sound(id, CHAN_STATIC, gSoundRelease, VOL_NORM, ATTN_NORM, SND_STOP, PITCH_NORM)

		engfunc(EngFunc_RemoveEntity, ptr)

		new Float:cooldown = get_pcvar_float(gPcvarCooldown)
		if ( cooldown > 0.0 ) sh_set_cooldown(id, cooldown)

		// Reset the Varible
		gPowerID[id] = 0
		gUsingPower[id] = false

		// Switch back to previous weapon and reset speed...
		if ( gLastWeapon[id] != CSW_KNIFE ) sh_switch_weapon(id, gLastWeapon[id])
		else sh_reset_max_speed(id)
	}

	return FMRES_IGNORED
}
//----------------------------------------------------------------------------------------------
public remove_power(id, powerID)
{
	new Float:fl_vOrigin[3]

	pev(powerID, pev_origin, fl_vOrigin)

	// Create an effect of kamehameha being removed
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(TE_IMPLOSION)	//14
	engfunc(EngFunc_WriteCoord, fl_vOrigin[0])
	engfunc(EngFunc_WriteCoord, fl_vOrigin[1])
	engfunc(EngFunc_WriteCoord, fl_vOrigin[2])
	write_byte(120)			// radius
	write_byte(40)			// count
	write_byte(45)			// life in 0.1's
	message_end()

	// Reset Variables
	gPowerID[id] = 0
	gUsingPower[id] = false

	// Stop the sounds
	emit_sound(powerID, CHAN_STATIC, gSoundBeam, VOL_NORM, ATTN_NORM, SND_STOP, PITCH_NORM)
	emit_sound(id, CHAN_STATIC, gSoundRelease, VOL_NORM, ATTN_NORM, SND_STOP, PITCH_NORM)

	engfunc(EngFunc_RemoveEntity, powerID)

	if ( is_user_connected(id) ) {
		// Switch back to previous weapon and reset speed...
		if ( gLastWeapon[id] != CSW_KNIFE ) sh_switch_weapon(id, gLastWeapon[id])
		else sh_reset_max_speed(id)
	}
}
//----------------------------------------------------------------------------------------------
public curweapon(id)
{
	if ( !is_user_alive(id) || !sh_is_inround() ) return
	if ( !gHasSSJGohan[id] || !gUsingPower[id] ) return

	//new wpnid = read_data(2)
	if ( read_data(2) != CSW_KNIFE ) {
		// Knife only when using power
		engclient_cmd(id, "weapon_knife")

		// Make them freeze in place if power created
		if ( gPowerID[id] > 0 ) set_user_maxspeed(id, 1.0)
	}
}
//----------------------------------------------------------------------------------------------
public sh_round_end()
{
	for ( new id = 1; id <= gMaxPlayers; id++ ) {
		if ( gHasSSJGohan[id] && gPowerID[id] > 0 ) {
			remove_power(id, gPowerID[id])
		}
	}
}
//----------------------------------------------------------------------------------------------
public client_disconnect(id)
{
	if( gHasSSJGohan[id] && gPowerID[id] > 0) {
		remove_power(id, gPowerID[id])
	}
}
//----------------------------------------------------------------------------------------------

Last edited by cstrike37; 06-27-2012 at 00:25.
cstrike37 is offline
Jelle
[b]MOAR CANDY[/b]
Join Date: Aug 2009
Location: Denmark
Old 06-27-2012 , 07:23   Re: SSJ gohan
Reply With Quote #2

change

Code:
if ( gPowerID[id] > 1 ) set_user_maxspeed(id, 1.0)
to

Code:
if ( gPowerID[id] > 1 ) set_user_maxspeed(id, 500.0)
__________________
No idea what to write here...
Jelle is offline
Send a message via MSN to Jelle
cstrike37
Member
Join Date: Jan 2012
Old 06-27-2012 , 15:13   Re: SSJ gohan
Reply With Quote #3

It didn't work.. theres no error when compiling but the player is still not able to move.

Last edited by cstrike37; 06-27-2012 at 15:15.
cstrike37 is offline
Jelle
[b]MOAR CANDY[/b]
Join Date: Aug 2009
Location: Denmark
Old 06-27-2012 , 15:45   Re: SSJ gohan
Reply With Quote #4

Then I don't know. I do not want to read the whole code to find out how it is working.
__________________
No idea what to write here...
Jelle is offline
Send a message via MSN to Jelle
G-Dog
Senior Member
Join Date: Dec 2005
Location: Thunderstorm Central
Old 06-27-2012 , 22:18   Re: SSJ gohan
Reply With Quote #5

also remove the
PHP Code:
set_user_maxspeed(id1.0
from the sh_hero_key function
__________________
If at first you don't succeed, then skydiving isn't for you.
G-Dog is offline
Send a message via AIM to G-Dog
cstrike37
Member
Join Date: Jan 2012
Old 06-28-2012 , 09:19   Re: SSJ gohan
Reply With Quote #6

it worked ^_^
thnx G-Dog
cstrike37 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 09:17.


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