Добавяне на таймер за Wallhang плъгин

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
bddpld
Извън линия
Потребител
Потребител
Мнения: 4
Регистриран на: 01 Мар 2021, 12:38
Се отблагодари: 1 път
Получена благодарност: 3 пъти

Добавяне на таймер за Wallhang плъгин

Мнение от bddpld » 01 Мар 2021, 12:48

Здравейте,
Ще може ли малко помощ с този плъгин за wallhang

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>

#define VERSION "1.0"
#define XTRA_OFS_PLAYER			5
#define m_Activity				73
#define m_IdealActivity			74
#define m_flNextAttack			83
#define m_afButtonPressed		246
#define MAX_PLAYERS		32
#define PLAYER_JUMP		6
#define ACT_HOP 7

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]

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_Touch, "func_wall", "World_Touch")
	RegisterHam(Ham_Touch, "func_breakable", "World_Touch")
	RegisterHam(Ham_Touch, "worldspawn", "World_Touch")
	
}

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 Player_Jump(id)
{
	if(	~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, 600, 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( 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])
	}
}
Необходима ми е помощ за да направя придвижването по стените да е за определено време (10 секунди) след което играча да няма възможност да се придвижва по стената докато не стъпи на земята. Ако е възможно да се сложи и един таймер - колко секунди остават до премахването на wallhanga за да може играча да знае кога ще му изчезне възможността за предвижване по стените.

Аватар
bddpld
Извън линия
Потребител
Потребител
Мнения: 4
Регистриран на: 01 Мар 2021, 12:38
Се отблагодари: 1 път
Получена благодарност: 3 пъти

Добавяне на таймер за Wallhang плъгин

Мнение от bddpld » 22 Мар 2021, 12:57

Никой ли не може да удари едно рамо за този плъгин?

Аватар
Goddness
Извън линия
Потребител
Потребител
Мнения: 1813
Регистриран на: 20 Май 2017, 11:47
Местоположение: Някъде по света
Се отблагодари: 143 пъти
Получена благодарност: 187 пъти
Обратна връзка:

Добавяне на таймер за Wallhang плъгин

Мнение от Goddness » 22 Мар 2021, 15:37

Никой не е длъжен да ти изпълнява заявката, щот тука екипа не взимат за това заплата.

Аватар
bddpld
Извън линия
Потребител
Потребител
Мнения: 4
Регистриран на: 01 Мар 2021, 12:38
Се отблагодари: 1 път
Получена благодарност: 3 пъти

Добавяне на таймер за Wallhang плъгин

Мнение от bddpld » 22 Мар 2021, 16:09

Къде видя да задължавам някой да изпълни заявката? Това , че доста време след като съм постнал заявка и просто задавам въпрос не означава , че "задължавам" някой , а просто питам дали има как да стане. Не разбирам какъв е смисъла да влизаш и да пишеш безсмислен коментар ....

Аватар
Goddness
Извън линия
Потребител
Потребител
Мнения: 1813
Регистриран на: 20 Май 2017, 11:47
Местоположение: Някъде по света
Се отблагодари: 143 пъти
Получена благодарност: 187 пъти
Обратна връзка:

Добавяне на таймер за Wallhang плъгин

Мнение от Goddness » 22 Мар 2021, 16:21

Точно с този въпрос задължаваш някой да ти изпълни заявката. Няма да влизам в спор.

Аватар
TheRedShoko
Извън линия
Модератор
Модератор
Мнения: 1016
Регистриран на: 06 Окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 5 пъти
Получена благодарност: 84 пъти

Добавяне на таймер за Wallhang плъгин

Мнение от TheRedShoko » 24 Мар 2021, 17:59

Пробвай така

От тук променяш колко време да трае.
#define MAX_HANG_TIME 10

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>

#define VERSION "1.0"
#define XTRA_OFS_PLAYER			5
#define m_Activity				73
#define m_IdealActivity			74
#define m_flNextAttack			83
#define m_afButtonPressed		246
#define MAX_PLAYERS		32
#define PLAYER_JUMP		6
#define ACT_HOP 7

#define MAX_HANG_TIME 10

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 Float:g_fUserHangTime[MAX_PLAYERS+1]

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_Touch, "func_wall", "World_Touch")
	RegisterHam(Ham_Touch, "func_breakable", "World_Touch")
	RegisterHam(Ham_Touch, "worldspawn", "World_Touch")
	
}

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 Player_Jump(id)
{
	if(	~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, 600, 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) )
	{
		static Float:flUserRemainTime;
		flUserRemainTime = MAX_HANG_TIME - (get_gametime() - g_fUserHangTime[id]);

		if (flUserRemainTime < 0)
		{
			RemoveUserHanged(id);
		}

		client_print(id, print_center, "%.0fs Remaining", flUserRemainTime);

		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( 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])
		g_fUserHangTime[id] = get_gametime()
	}
}

Аватар
bddpld
Извън линия
Потребител
Потребител
Мнения: 4
Регистриран на: 01 Мар 2021, 12:38
Се отблагодари: 1 път
Получена благодарност: 3 пъти

Добавяне на таймер за Wallhang плъгин

Мнение от bddpld » 27 Мар 2021, 19:58

По този начин работи махането на wallhanga ,но изписването на съобщението не се получава. Въпреки това много ми помогна да стигна до работещ вариант с добавянето на task за отброяване на оставащото време. Благодаря и може да заключите темата.

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: Bing [Bot] и 10 госта