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

[L4D2] Sinister Jockey


Post New Thread Reply   
 
Thread Tools Display Modes
phoenix0001
Senior Member
Join Date: Apr 2010
Location: China
Old 02-27-2017 , 13:19   Re: [L4D2] Sinister Jockey
Reply With Quote #11

1.Enables the Marionette ability, Can be used for any infected person
2.Jockey ride up the survivors. Faster movement speed of the survivors.
__________________
I like this BBS sharing of spirit

I come from China, my English is poor
phoenix0001 is offline
Psyk0tik
Veteran Member
Join Date: May 2012
Location: Homeless
Old 05-23-2018 , 00:13   Re: [L4D2] Sinister Jockey
Reply With Quote #12

Converted to new syntax and optimized code a bit.
Attached Files
File Type: sp Get Plugin or Get Source (L4D2 Sinister Jockey.sp - 873 views - 20.8 KB)
__________________
Psyk0tik is offline
Slaven555
Member
Join Date: Jul 2018
Old 09-01-2019 , 12:05   Re: [L4D2] Sinister Jockey
Reply With Quote #13

With l4d_sjm_bacterialfeetride turned on, "1" after the jockey knocks the survivor, an error occurs. If you raise the survivor, he starts walking with accelerated movement.
Slaven555 is offline
BloodyBlade
Senior Member
Join Date: Feb 2018
Old 03-13-2020 , 17:53   Re: [L4D2] Sinister Jockey
Reply With Quote #14

Quote:
Originally Posted by Slaven555 View Post
With l4d_sjm_bacterialfeetride turned on, "1" after the jockey knocks the survivor, an error occurs. If you raise the survivor, he starts walking with accelerated movement.
You need change:
Code:
public Action Event_JockeyRideEnd(Event event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(GetEventInt(event, "userid"));
	int victim = GetClientOfUserId(GetEventInt(event, "victim"));
	if (IsValidClient(client))
	{
		isRiding[client] = false;
	}
	if (isBacterialFeetRide && IsValidClient(victim))
	{
		SetEntDataFloat(victim, laggedMovementOffset, 1.0 * GetConVarFloat(cvarBacterialFeetRideSpeed), true);
	}
}
To:
Code:
public Action Event_JockeyRideEnd(Event event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(GetEventInt(event, "userid"));
	int victim = GetClientOfUserId(GetEventInt(event, "victim"));
	if (IsValidClient(client))
	{
		isRiding[client] = false;
	}
	if (isBacterialFeetRide && IsValidClient(victim))
	{
		SetEntDataFloat(victim, laggedMovementOffset, 1.0, true);
	}
}
BloodyBlade is online now
rtokuda
Senior Member
Join Date: Dec 2019
Old 04-07-2021 , 15:21   Re: [L4D2] Sinister Jockey
Reply With Quote #15

The jockey when riding on a survivor, leaves the player very fast. Is there a way to fix this?
rtokuda is offline
arclightarchery
Junior Member
Join Date: May 2022
Old 05-10-2022 , 12:34   Re: [L4D2] Sinister Jockey
Reply With Quote #16

Quote:
Originally Posted by BloodyBlade View Post
You need change:
Code:
public Action Event_JockeyRideEnd(Event event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(GetEventInt(event, "userid"));
	int victim = GetClientOfUserId(GetEventInt(event, "victim"));
	if (IsValidClient(client))
	{
		isRiding[client] = false;
	}
	if (isBacterialFeetRide && IsValidClient(victim))
	{
		SetEntDataFloat(victim, laggedMovementOffset, 1.0 * GetConVarFloat(cvarBacterialFeetRideSpeed), true);
	}
}
To:
Code:
public Action Event_JockeyRideEnd(Event event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(GetEventInt(event, "userid"));
	int victim = GetClientOfUserId(GetEventInt(event, "victim"));
	if (IsValidClient(client))
	{
		isRiding[client] = false;
	}
	if (isBacterialFeetRide && IsValidClient(victim))
	{
		SetEntDataFloat(victim, laggedMovementOffset, 1.0, true);
	}
}
This would make the Jockey ride speed stopped working

Last edited by arclightarchery; 05-11-2022 at 06:19. Reason: Mistake
arclightarchery is offline
arclightarchery
Junior Member
Join Date: May 2022
Old 05-11-2022 , 08:45   Re: [L4D2] Sinister Jockey
Reply With Quote #17

I fix the bug, move
Code:
if(isBacterialFeetRide)
above
Code:
if(isGravityPounce)
Old
Code:
public Action Event_JockeyRideStart(Event event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(GetEventInt(event, "userid"));
	int victim = GetClientOfUserId(GetEventInt(event, "victim"));
	if (IsValidClient(client) && IsValidClient(victim))
	{
		isRiding[client] = true;
		if (isGravityPounce)
		{
			GetClientAbsOrigin(client, endPosition[client]);
			int distance = RoundFloat(startPosition[client][2] - endPosition[client][2]);
			int damage = RoundFloat(distance * 0.4);
			int maxdamage = GetConVarInt(cvarGravityPounceCap);
			float multiplier = GetConVarFloat(cvarGravityPounceMultiplier);
			damage = RoundFloat(damage * multiplier);
			if (damage < 0.0){return;}
			if (damage > maxdamage)
			{
				damage = maxdamage;
			}
			float victimPos[3];
			char strDamage[16];
			char strDamageTarget[16];
			GetClientEyePosition(victim, victimPos);
			IntToString(damage, strDamage, sizeof(strDamage));
			Format(strDamageTarget, sizeof(strDamageTarget), "hurtme%d", victim);
			int entPointHurt = CreateEntityByName("point_hurt");
			if (!IsValidEntity(entPointHurt) || !IsValidEdict(entPointHurt))
			{
				return;
			}
			DispatchKeyValue(victim, "targetname", strDamageTarget);
			DispatchKeyValue(entPointHurt, "DamageTarget", strDamageTarget);
			DispatchKeyValue(entPointHurt, "Damage", strDamage);
			DispatchKeyValue(entPointHurt, "DamageType", "0"); // DMG_GENERIC
			DispatchSpawn(entPointHurt);
			TeleportEntity(entPointHurt, victimPos, NULL_VECTOR, NULL_VECTOR);
			AcceptEntityInput(entPointHurt, "Hurt", (client && client < MaxClients && IsClientInGame(client)) ? client : -1);
			DispatchKeyValue(entPointHurt, "classname", "point_hurt");
			DispatchKeyValue(victim, "targetname", "null");
			AcceptEntityInput(entPointHurt, "kill");
			if (isAnnounce) 
			{
				PrintHintText(client, "You dropped %i distance on a Survivor, causing %i damage.", distance, damage);
				PrintHintText(victim, "A Jockey dropped %i distance on you, causing %i damage.", distance, damage);
			}
		}
//any code from this line won't run, I don't know why
		if (isBacterialFeetRide)
		{
			SetEntDataFloat(victim, laggedMovementOffset, 1.0*GetConVarFloat(cvarBacterialFeetRideSpeed), true);
		}
	}
}
New
Code:
public Action Event_JockeyRideStart(Event event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(GetEventInt(event, "userid"));
	int victim = GetClientOfUserId(GetEventInt(event, "victim"));
	if (IsValidClient(client) && IsValidClient(victim))
	{
		isRiding[client] = true;
		if (isBacterialFeetRide)
		{
			SetEntDataFloat(victim, laggedMovementOffset, 1.0*GetConVarFloat(cvarBacterialFeetRideSpeed), true);
		}
		if (isGravityPounce)
		{
			GetClientAbsOrigin(client, endPosition[client]);
			int distance = RoundFloat(startPosition[client][2] - endPosition[client][2]);
			int damage = RoundFloat(distance * 0.4);
			int maxdamage = GetConVarInt(cvarGravityPounceCap);
			float multiplier = GetConVarFloat(cvarGravityPounceMultiplier);
			damage = RoundFloat(damage * multiplier);
			if (damage < 0.0){return;}
			if (damage > maxdamage)
			{
				damage = maxdamage;
			}
			float victimPos[3];
			char strDamage[16];
			char strDamageTarget[16];
			GetClientEyePosition(victim, victimPos);
			IntToString(damage, strDamage, sizeof(strDamage));
			Format(strDamageTarget, sizeof(strDamageTarget), "hurtme%d", victim);
			int entPointHurt = CreateEntityByName("point_hurt");
			if (!IsValidEntity(entPointHurt) || !IsValidEdict(entPointHurt))
			{
				return;
			}
			DispatchKeyValue(victim, "targetname", strDamageTarget);
			DispatchKeyValue(entPointHurt, "DamageTarget", strDamageTarget);
			DispatchKeyValue(entPointHurt, "Damage", strDamage);
			DispatchKeyValue(entPointHurt, "DamageType", "0"); // DMG_GENERIC
			DispatchSpawn(entPointHurt);
			TeleportEntity(entPointHurt, victimPos, NULL_VECTOR, NULL_VECTOR);
			AcceptEntityInput(entPointHurt, "Hurt", (client && client < MaxClients && IsClientInGame(client)) ? client : -1);
			DispatchKeyValue(entPointHurt, "classname", "point_hurt");
			DispatchKeyValue(victim, "targetname", "null");
			AcceptEntityInput(entPointHurt, "kill");
			if (isAnnounce) 
			{
				PrintHintText(client, "You dropped %i distance on a Survivor, causing %i damage.", distance, damage);
				PrintHintText(victim, "A Jockey dropped %i distance on you, causing %i damage.", distance, damage);
			}
		}
	}
}
Attached Files
File Type: smx L4D2 Sinister Jockey.smx (14.0 KB, 98 views)
File Type: sp Get Plugin or Get Source (L4D2 Sinister Jockey.sp - 170 views - 20.7 KB)

Last edited by arclightarchery; 05-11-2022 at 08:46. Reason: Add code block
arclightarchery is offline
swofleswof
New Member
Join Date: May 2023
Old 05-27-2023 , 16:27   Re: [L4D2] Sinister Jockey
Reply With Quote #18

When I get pounced by a Hunter the game seems to think it's a Jockey instead and the hint message tells me it was a Jockey for some reason.
swofleswof is offline
BenLH
Junior Member
Join Date: Aug 2019
Old 06-10-2023 , 23:07   Re: [L4D2] Sinister Jockey
Reply With Quote #19

//// L4D2 Sinister Jockey.sp
//
// D:\Program\Steam\steamapps\common\Left 4 Dead 2\left4dead2\addons\sourcemod\scripting\L4D2 Sinister Jockey.sp(33 : error 017: undefined symbol "victim"
//
// 1 Error.

I use Psyk0tik's version, but it can't be compiled.The sourcemod version is 1.11 - build 6934. Could anyone help me to clear the error? Thanks a lot and sorry for my poor English
BenLH is offline
eyal282
Veteran Member
Join Date: Aug 2011
Old 06-13-2023 , 13:12   Re: [L4D2] Sinister Jockey
Reply With Quote #20

Can you support these exact two global forward names so if anybody uses your plugin with my karma plugin, it'll work?

https://forums.alliedmods.net/showthread.php?p=2773134
__________________
I am available to make plugins for pay.

Discord: Eyal282#1334
eyal282 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 23:20.


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