This site is a testing version, but all data is shared with the live forum.


Raised This Month: $ Target: $400
 0% 

Furien freewallhang


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Alexblood2013
Senior Member
Join Date: Aug 2014
Old 02-23-2015 , 12:59   Furien freewallhang
Reply With Quote #1

Hi.

I need to edit a little of this plugin.

This si called Furien freewallhang , and i want only a little edit , if possible.

The thing is i want that furien can run on walls without cfg bhop , like in freewallhang by Aragon*.

I don't use aragon source because hasn,t ability to jump from wall to other ,only walk.

Also i need that velocity can be set by a cvar or in pawn. like this

new ClimbSpeed = floatround(pev(id, pev_maxspeed) / 8.0);

Thanks!



code of Connors
Code:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>



#define VERSION "0.0.2"

#define XTRA_OFS_PLAYER			5
#define m_Activity				73
#define m_IdealActivity			74
#define m_flNextAttack			83
#define m_afButtonPressed		246

#define FIRST_PLAYER_ID	1
#define MAX_PLAYERS		32

#define PLAYER_JUMP		6

#define ACT_HOP 7

//#define FBitSet(%1,%2)		(%1 & %2)

new g_iMaxPlayers
#define IsPlayer(%1)	( FIRST_PLAYER_ID <= %1 <= g_iMaxPlayers )

#define IsHidden(%1)	IsPlayer(%1)

#define KNIFE_DRAW			3

new g_bHasWallHang
#define SetUserWallHang(%1)		g_bHasWallHang |=	1<<(%1&31)
#define RemoveUserWallHang(%1)	g_bHasWallHang &=	~(1<<(%1&31))
#define HasUserWallHang(%1)		g_bHasWallHang &	1<<(%1&31)

new g_bHanged
#define SetUserHanged(%1)	g_bHanged |=	1<<(%1&31)
#define RemoveUserHanged(%1)	g_bHanged &=	~(1<<(%1&31))
#define IsUserHanged(%1)		g_bHanged &	1<<(%1&31)

new Float:g_fVecMins[MAX_PLAYERS+1][3]
new Float:g_fVecMaxs[MAX_PLAYERS+1][3]
new Float:g_fVecOrigin[MAX_PLAYERS+1][3]

new bool:g_bRoundEnd

public plugin_init()
{
	register_plugin("Furien WallHang", VERSION, "ConnorMcLeod")

	RegisterHam(Ham_Player_Jump, "player", "Player_Jump")

	RegisterHam(  Ham_Spawn,  "player",  "Ham_PlayerSpawnPost",  true  );
	RegisterHam(  Ham_Killed,  "player",  "Ham_PlayerKilledPost", true  );
	RegisterHam(Ham_Touch, "func_wall", "World_Touch")
	RegisterHam(Ham_Touch, "func_breakable", "World_Touch")
	RegisterHam(Ham_Touch, "worldspawn", "World_Touch")

	g_iMaxPlayers = get_maxplayers()	

	register_event("HLTV", "Event_HLTV_New_Round", "a", "1=0", "2=0")
	register_logevent("Logevent_Round_End", 2, "1=Round_End")
}

public Ham_PlayerSpawnPost(  id  )
{
	if( is_user_alive(  id  )  )
	{
		if( get_user_team(  id  )  ==  1  )
		{
			SetUserWallHang(id);
			RemoveUserHanged( id );
		}
		else
		{
			RemoveUserWallHang(id);
			RemoveUserHanged( id );
		}
	}
}

public Ham_PlayerKilledPost(  id  )
{
	
	RemoveUserHanged( id );
	return HAM_IGNORED;
	
}
public Event_HLTV_New_Round()
{
	g_bRoundEnd = false
}

public Logevent_Round_End()
{
	g_bRoundEnd = true
	g_bHanged = 0
}

public client_putinserver( id )
{
	RemoveUserWallHang( id )
	RemoveUserHanged( id )
}

public furien_round_restart()
{
	g_bHasWallHang = 0
	g_bHanged = 0
}

public Player_Jump(id)
{
	if(	g_bRoundEnd
	||	~HasUserWallHang(id)
	||	~IsUserHanged(id)
	||	!is_user_alive(id)	)
	{
		return HAM_IGNORED
	}

	if( (pev(id, pev_flags) & FL_WATERJUMP) || pev(id, pev_waterlevel) >= 2 )
	{
		return HAM_IGNORED
	}

	static afButtonPressed ; afButtonPressed = get_pdata_int(id, m_afButtonPressed)

	if( ~afButtonPressed & IN_JUMP )
	{
		return HAM_IGNORED
	}

	RemoveUserHanged(id)

	new Float:fVecVelocity[3]

	velocity_by_aim(id, 200, fVecVelocity)
	set_pev(id, pev_velocity, fVecVelocity)

	set_pdata_int(id, m_Activity, ACT_HOP)
	set_pdata_int(id, m_IdealActivity, ACT_HOP)
	set_pev(id, pev_gaitsequence, PLAYER_JUMP)
	set_pev(id, pev_frame, 0.0)
	set_pdata_int(id, m_afButtonPressed, afButtonPressed & ~IN_JUMP)

	return HAM_SUPERCEDE
}


public client_PostThink(id)
{
	if( HasUserWallHang(id) && IsUserHanged(id) )
	{
		engfunc(EngFunc_SetSize, id, g_fVecMins[ id ], g_fVecMaxs[ id ])
		engfunc(EngFunc_SetOrigin, id, g_fVecOrigin[ id ])
		set_pev(id, pev_velocity, 0)
		//set_pdata_float(id, m_flNextAttack, 1.0, XTRA_OFS_PLAYER)
	}
}

public World_Touch(iEnt, id)
{
	if(	!g_bRoundEnd
	&&	IsPlayer(id)
	&&	HasUserWallHang(id)
	&&	~IsUserHanged(id)
	&&	is_user_alive(id)
	&&	pev(id, pev_button) & IN_USE
	&&	~pev(id, pev_flags) & FL_ONGROUND	)
	{
		SetUserHanged(id)
		pev(id, pev_mins, g_fVecMins[id])
		pev(id, pev_maxs, g_fVecMaxs[id])
		pev(id, pev_origin, g_fVecOrigin[id])
	}
}
Code of aragon ( support wall run)

Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>

new const PLUGIN[] = "Furien WallHang";
new const VERSION[] = "1.0";

#pragma semicolon 1

// Float
new Float: Wallorigin[33][3];

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, "Aragon*");
	
	// Ham Forwrads
	RegisterHam(Ham_Touch, "player", "fw_PlayerTouch", 1);
	
	// FM Forwards
	register_forward(FM_PlayerPostThink, "fw_PlayerPostThink");
	
	// CVARs
	register_cvar("furien_wallahng", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
}

public fw_PlayerTouch(id, world)
{
	if(is_user_alive(id) && get_user_team(id) == 1)
	{	
		new ClassName[32];
		pev(world, pev_classname, ClassName,(32-1));
		
		if(equal(ClassName, "worldspawn") || equal(ClassName, "func_wall") || equal(ClassName, "func_breakable"))
			pev(id, pev_origin, Wallorigin[id]);
	}
	
	return HAM_SUPERCEDE;
}

public fw_PlayerPostThink(id)
{
	if(is_user_alive(id) && get_user_team(id) == 1)
	{
		static Float:Origin[3];
		pev(id, pev_origin, Origin);
		
		static Button;
		Button = pev(id, pev_button);
		
		if(Button & IN_USE && get_distance_f(Origin, Wallorigin[id]) <= 5.0 && !(pev(id, pev_flags) & FL_ONGROUND))
		{
			new Float:Velocity[3];
			new ClimbSpeed = floatround(pev(id, pev_maxspeed) / 8.0);
			
			if(Button & IN_FORWARD)
			{
				velocity_by_aim(id, ClimbSpeed, Velocity);
				fm_set_user_velocity(id, Velocity);
			}
			
			else if(Button & IN_BACK)
			{
				velocity_by_aim(id, - ClimbSpeed, Velocity);
				fm_set_user_velocity(id, Velocity);
			}
			
			else
			{
				set_pev(id, pev_origin, Wallorigin[id]);
				velocity_by_aim(id, 0, Velocity);
				fm_set_user_velocity(id, Velocity);
			}
		}
	}
}

/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
Alexblood2013 is offline
Alexblood2013
Senior Member
Join Date: Aug 2014
Old 03-14-2015 , 12:51   Re: Furien freewallhang
Reply With Quote #2

BUMP
Alexblood2013 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:15.


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