Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified addons/sourcemod/extensions/sourcescramble.ext.dll
Binary file not shown.
Binary file modified addons/sourcemod/extensions/sourcescramble.ext.so
Binary file not shown.
42 changes: 41 additions & 1 deletion addons/sourcemod/gamedata/l4d2_fix_changelevel.txt
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,19 @@
"linux" "944"
"windows" "944"
}

"CDirector::m_szOriginalMap"
{
"linux" "948"
"windows" "948"
}
}

"Addresses"
{
"CDirector::m_isTransitioning"
{
"signature" "CDirector::OnBeginTransition"
"signature" "CDirector::OnBeginTransition"
"linux"
{
"read" "14"
Expand All @@ -53,6 +59,32 @@
"read" "26"
}
}

"s_landmarkName"
{
"signature" "InfoChangelevel::StartChangeLevel"
"linux"
{
"read" "88"
}
"windows"
{
"read" "77"
}
}

"s_landmarkPosition"
{
"signature" "InfoChangelevel::StartChangeLevel"
"linux"
{
"read" "190"
}
"windows"
{
"read" "160"
}
}
}

"Signatures"
Expand Down Expand Up @@ -90,6 +122,14 @@
"windows" "\x55\x8B\x2A\x2A\x2A\x2A\x2A\x2A\x2A\xA1\x2A\x2A\x2A\x2A\x2A\x2A\x89\x2A\x2A\xA1\x2A\x2A\x2A\x2A\x56\x8B\x2A\x2A\x57\x8B"
/* 55 8B ? ? ? ? ? ? ? A1 ? ? ? ? ? ? 89 ? ? A1 ? ? ? ? 56 8B ? ? 57 8B */
}

"InfoChangelevel::StartChangeLevel"
{
"library" "server"
"linux" "@_ZN15InfoChangelevel16StartChangeLevelEPK10Checkpoint"
"windows" "\x55\x8B\xEC\xA1\x2A\x2A\x2A\x2A\x83\x78\x30\x00\x56\x8B\xF1\x74"
// 55 8B EC A1 ? ? ? ? 83 78 30 00 56 8B F1 74
}
}
}
}
Binary file modified addons/sourcemod/plugins/fixes/l4d2_ellis_hunter_bandaid_fix.smx
Binary file not shown.
Binary file modified addons/sourcemod/plugins/fixes/l4d2_fix_changelevel.smx
Binary file not shown.
Binary file modified addons/sourcemod/plugins/optional/l4d2_getup_slide_fix.smx
Binary file not shown.
47 changes: 23 additions & 24 deletions addons/sourcemod/scripting/archive/double_getup.sp
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ enum ePlayerState
eTANK_PUNCH_JOCKEY_FIX
}

stock const int tankFlyAnim[SurvivorCharacter_Size - 1] =
stock const int tankFlyAnim[L4D2Util_SurvivorCharacter_Size - 1] =
{
628, // Nick
636, // Rochelle
Expand All @@ -69,8 +69,7 @@ stock const int tankFlyAnim[SurvivorCharacter_Size - 1] =
536, // Bill
545, // Zoey
539, // Francis
536, // Louis
539 // Francis
536 // Louis
};

ConVar
Expand All @@ -81,19 +80,19 @@ bool
lateLoad;

int
pendingGetups[SurvivorCharacter_Size - 1] = {0, ...}, // This is used to track the number of pending getups. The collective opinion is that you should have at most 1.
interrupt[SurvivorCharacter_Size - 1] = {false, ...}, // If the player was getting up, and that getup is interrupted. This alows us to break out of the GetupTimer loop.
currentSequence[SurvivorCharacter_Size - 1] = {0, ...}; // Kept to track when a player changes sequences, i.e. changes animations.
pendingGetups[L4D2Util_SurvivorCharacter_Size - 1] = {0, ...}, // This is used to track the number of pending getups. The collective opinion is that you should have at most 1.
interrupt[L4D2Util_SurvivorCharacter_Size - 1] = {false, ...}, // If the player was getting up, and that getup is interrupted. This alows us to break out of the GetupTimer loop.
currentSequence[L4D2Util_SurvivorCharacter_Size - 1] = {0, ...}; // Kept to track when a player changes sequences, i.e. changes animations.

ePlayerState
playerState[SurvivorCharacter_Size] = {eUPRIGHT, ...}; // Since there are multiple sequences for each animation, this acts as a simpler way to track a player's state.
playerState[L4D2Util_SurvivorCharacter_Size] = {eUPRIGHT, ...}; // Since there are multiple sequences for each animation, this acts as a simpler way to track a player's state.

public Plugin myinfo =
{
name = "L4D2 Get-Up Fix",
author = "Darkid, Jacob",
description = "Fixes the problem when, after completing a getup animation, you have another one.",
version = "3.8.1",
version = "3.8.2",
url = "https://github.com/SirPlease/L4D2-Competitive-Rework"
}

Expand Down Expand Up @@ -139,7 +138,7 @@ public void OnClientPutInServer(int client)

public void round_start(Event hEvent, const char[] name, bool dontBroadcast)
{
for (int survivor = 0; survivor < SurvivorCharacter_Size; survivor++) {
for (int survivor = 0; survivor < L4D2Util_SurvivorCharacter_Size; survivor++) {
playerState[survivor] = eUPRIGHT;
}
}
Expand All @@ -149,7 +148,7 @@ public void smoker_land(Event hEvent, const char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(hEvent.GetInt("victim"));
int survivor = IdentifySurvivor(client);
if (survivor == SurvivorCharacter_Invalid) {
if (survivor == L4D2Util_SurvivorCharacter_Invalid) {
return;
}

Expand All @@ -162,7 +161,7 @@ public void jockey_land(Event hEvent, const char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(hEvent.GetInt("victim"));
int survivor = IdentifySurvivor(client);
if (survivor == SurvivorCharacter_Invalid) {
if (survivor == L4D2Util_SurvivorCharacter_Invalid) {
return;
}

Expand All @@ -173,7 +172,7 @@ public void jockey_clear(Event hEvent, const char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(hEvent.GetInt("victim"));
int survivor = IdentifySurvivor(client);
if (survivor == SurvivorCharacter_Invalid) {
if (survivor == L4D2Util_SurvivorCharacter_Invalid) {
return;
}

Expand All @@ -187,7 +186,7 @@ public void smoker_clear(Event hEvent, const char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(hEvent.GetInt("victim"));
int survivor = IdentifySurvivor(client);
if (survivor == SurvivorCharacter_Invalid) {
if (survivor == L4D2Util_SurvivorCharacter_Invalid) {
return;
}

Expand All @@ -204,7 +203,7 @@ public void hunter_clear(Event hEvent, const char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(hEvent.GetInt("victim"));
int survivor = IdentifySurvivor(client);
if (survivor == SurvivorCharacter_Invalid) {
if (survivor == L4D2Util_SurvivorCharacter_Invalid) {
return;
}

Expand All @@ -226,7 +225,7 @@ public void hunter_clear(Event hEvent, const char[] name, bool dontBroadcast)
public void multi_charge(Event hEvent, const char[] name, bool dontBroadcast)
{
int survivor = IdentifySurvivor(GetClientOfUserId(hEvent.GetInt("victim")));
if (survivor == SurvivorCharacter_Invalid) {
if (survivor == L4D2Util_SurvivorCharacter_Invalid) {
return;
}

Expand All @@ -241,7 +240,7 @@ public void multi_charge(Event hEvent, const char[] name, bool dontBroadcast)
public void charger_land_instant(Event hEvent, const char[] name, bool dontBroadcast)
{
int survivor = IdentifySurvivor(GetClientOfUserId(hEvent.GetInt("victim")));
if (survivor == SurvivorCharacter_Invalid) {
if (survivor == L4D2Util_SurvivorCharacter_Invalid) {
return;
}

Expand All @@ -257,7 +256,7 @@ public void charger_land_instant(Event hEvent, const char[] name, bool dontBroad
public void charger_land(Event hEvent, const char[] name, bool dontBroadcast)
{
int survivor = IdentifySurvivor(GetClientOfUserId(hEvent.GetInt("victim")));
if (survivor == SurvivorCharacter_Invalid) {
if (survivor == L4D2Util_SurvivorCharacter_Invalid) {
return;
}

Expand All @@ -273,7 +272,7 @@ public void charger_clear(Event hEvent, const char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(hEvent.GetInt("victim"));
int survivor = IdentifySurvivor(client);
if (survivor == SurvivorCharacter_Invalid) {
if (survivor == L4D2Util_SurvivorCharacter_Invalid) {
return;
}

Expand All @@ -289,7 +288,7 @@ public void charger_clear(Event hEvent, const char[] name, bool dontBroadcast)
public void player_incap(Event hEvent, const char[] name, bool dontBroadcast)
{
int survivor = IdentifySurvivor(GetClientOfUserId(hEvent.GetInt("userid")));
if (survivor == SurvivorCharacter_Invalid) {
if (survivor == L4D2Util_SurvivorCharacter_Invalid) {
return;
}

Expand All @@ -306,7 +305,7 @@ public void player_revive(Event hEvent, const char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(hEvent.GetInt("subject"));
int survivor = IdentifySurvivor(client);
if (survivor == SurvivorCharacter_Invalid) {
if (survivor == L4D2Util_SurvivorCharacter_Invalid) {
return;
}

Expand All @@ -318,7 +317,7 @@ public void player_revive(Event hEvent, const char[] name, bool dontBroadcast)
public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype)
{
int survivor = IdentifySurvivor(victim);
if (survivor == SurvivorCharacter_Invalid) {
if (survivor == L4D2Util_SurvivorCharacter_Invalid) {
return Plugin_Continue;
}

Expand Down Expand Up @@ -365,7 +364,7 @@ void _TankLandTimer(int client)
public Action TankLandTimer(Handle hTimer, any client)
{
int survivor = IdentifySurvivor(client);
if (survivor == SurvivorCharacter_Invalid) {
if (survivor == L4D2Util_SurvivorCharacter_Invalid) {
return Plugin_Stop;
}

Expand Down Expand Up @@ -410,7 +409,7 @@ void _GetupTimer(int client)
public Action GetupTimer(Handle hTimer, any client)
{
int survivor = IdentifySurvivor(client);
if (survivor == SurvivorCharacter_Invalid) {
if (survivor == L4D2Util_SurvivorCharacter_Invalid) {
return Plugin_Stop;
}

Expand Down Expand Up @@ -472,7 +471,7 @@ void _CancelGetup(int client)
public Action CancelGetup(Handle hTimer, any client)
{
int survivor = IdentifySurvivor(client);
if (survivor == SurvivorCharacter_Invalid) {
if (survivor == L4D2Util_SurvivorCharacter_Invalid) {
return Plugin_Stop;
}

Expand Down
10 changes: 5 additions & 5 deletions addons/sourcemod/scripting/archive/l4d2_getupfix.sp
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ int
bArClientAlreadyChecked[MAXPLAYERS + 1]; //in the rare event of it being a game with multiple chargers and 2+ getting cleared on slam

static const int
getUpAnimations[SurvivorCharacter_Size][eINDEX_SIZE] =
getUpAnimations[L4D2Util_SurvivorCharacter_Size - 1][eINDEX_SIZE] =
{
// l4d2
// 0: Nick, 1: Rochelle, 2: Coach, 3: Ellis
Expand All @@ -56,7 +56,7 @@ static const int
{528, 759, 763, 764} // Louis
},
//incapped animations: 0 = single-pistol, 1 = dual pistols
incapAnimations[SurvivorCharacter_Size][eINCAP_ANIMATIONS_SIZE] =
incapAnimations[L4D2Util_SurvivorCharacter_Size - 1][eINCAP_ANIMATIONS_SIZE] =
{
// l4d2
// 0: Nick, 1: Rochelle, 2: Coach, 3: Ellis
Expand Down Expand Up @@ -106,7 +106,7 @@ public Action Timer_ProcessClient(Handle hTimer, any client)
void ProcessClient(int client)
{
int charIndex = IdentifySurvivor(client);
if (charIndex == SurvivorCharacter_Invalid) {
if (charIndex == L4D2Util_SurvivorCharacter_Invalid) {
return;
}

Expand Down Expand Up @@ -148,7 +148,7 @@ public Action Timer_CheckClient(Handle hTimer, ArrayStack tempStack)
int client = tempStack.Pop();

int charIndex = IdentifySurvivor(client);
if (charIndex == SurvivorCharacter_Invalid) {
if (charIndex == L4D2Util_SurvivorCharacter_Invalid) {
return Plugin_Stop;
}

Expand Down Expand Up @@ -194,7 +194,7 @@ public Action GetupTimer(Handle hTimer, any attacker)
int seq = GetEntProp(i, Prop_Send, "m_nSequence");
int character = IdentifySurvivor(i);

if (character == SurvivorCharacter_Invalid) {
if (character == L4D2Util_SurvivorCharacter_Invalid) {
return Plugin_Stop;
}

Expand Down
28 changes: 14 additions & 14 deletions addons/sourcemod/scripting/include/l4d2util_constants.inc
Original file line number Diff line number Diff line change
Expand Up @@ -500,20 +500,20 @@ stock const int WeaponSlots[WEPID_SIZE] =
*/
enum /*SurvivorCharacterType*/
{
SurvivorCharacter_Nick = 0,
SurvivorCharacter_Rochelle,
SurvivorCharacter_Coach,
SurvivorCharacter_Ellis,
SurvivorCharacter_Bill,
SurvivorCharacter_Zoey,
SurvivorCharacter_Francis,
SurvivorCharacter_Louis,
SurvivorCharacter_Invalid, // 8

SurvivorCharacter_Size // 9 size
L4D2Util_SurvivorCharacter_Nick = 0,
L4D2Util_SurvivorCharacter_Rochelle,
L4D2Util_SurvivorCharacter_Coach,
L4D2Util_SurvivorCharacter_Ellis,
L4D2Util_SurvivorCharacter_Bill,
L4D2Util_SurvivorCharacter_Zoey,
L4D2Util_SurvivorCharacter_Francis,
L4D2Util_SurvivorCharacter_Louis,
L4D2Util_SurvivorCharacter_Invalid, // 8

L4D2Util_SurvivorCharacter_Size // 9 size
};

stock const char g_sSurvivorDisplayName[SurvivorCharacter_Size][] =
stock const char g_sSurvivorDisplayName[L4D2Util_SurvivorCharacter_Size][] =
{
"Nick",
"Rochelle",
Expand All @@ -526,7 +526,7 @@ stock const char g_sSurvivorDisplayName[SurvivorCharacter_Size][] =
"Invalid"
};

stock const char g_sSurvivorName[SurvivorCharacter_Size][] =
stock const char g_sSurvivorName[L4D2Util_SurvivorCharacter_Size][] =
{
"Gambler",
"Producer",
Expand All @@ -540,7 +540,7 @@ stock const char g_sSurvivorName[SurvivorCharacter_Size][] =
};

// Models for each of the characters
stock const char g_sSurvivorModels[SurvivorCharacter_Size - 1][] =
stock const char g_sSurvivorModels[L4D2Util_SurvivorCharacter_Size - 1][] =
{
"models/survivors/survivor_gambler.mdl", // MODEL_NICK
"models/survivors/survivor_producer.mdl", // MODEL_ROCHELLE
Expand Down
Loading
Loading