Raised This Month: $183 Target: $400
 45% 

[EXTENSION] Left 4 Downtown 2 (0.5.4.2) - L4D2 Only, Updated Left4Downtown


Post New Thread Reply   
 
Thread Tools Display Modes
Rick Grimes
Junior Member
Join Date: Jun 2013
Old 07-13-2013 , 06:28   Re: [EXTENSION] Left 4 Downtown 2 (0.5.4.2) - L4D2 Only, Updated Left4Downtown
Reply With Quote #521

wow 3 weeks and still no fix for this? I can't even start my damn server without removing downtown completely
Rick Grimes is offline
Sev
Veteran Member
Join Date: May 2010
Old 07-13-2013 , 09:01   Re: [EXTENSION] Left 4 Downtown 2 (0.5.4.2) - L4D2 Only, Updated Left4Downtown
Reply With Quote #522

There are (were) at least 2 members working on getting the windows left 4 downtown 2 working without crashes and all of the signatures/gamedata back working properly.

However most of the focus is on linux, and most of whats left of the Left 4 Dead 2 community operate with linux exclusively. So windows is going to take a lot longer because its not a priority.

Unless your willing to throw around some money, I wouldn't expect the process to be any quicker.

Last edited by Sev; 07-13-2013 at 09:01.
Sev is offline
crasx
Member
Join Date: May 2011
Location: Lakewood, CO
Old 07-14-2013 , 01:33   Re: [EXTENSION] Left 4 Downtown 2 (0.5.4.2) - L4D2 Only, Updated Left4Downtown
Reply With Quote #523

I'm working with windows, any fixes i find I will post, I also keep a more detailed log on my clans site- http://bit.ly/15sBOXR

i'm about to compile latest l4dt and hope it fixes some stuff
crasx is offline
ProdigySim
SourceMod Plugin Approver
Join Date: Feb 2010
Old 07-14-2013 , 09:22   Re: [EXTENSION] Left 4 Downtown 2 (0.5.4.2) - L4D2 Only, Updated Left4Downtown
Reply With Quote #524

I believe I have fixed everything in L4DT2 that was broken. You can compile from source from our goooglecode project now. I'll try producing some working builds soon.
ProdigySim is offline
Martijn79
Member
Join Date: Jan 2013
Old 07-14-2013 , 12:53   Re: [EXTENSION] Left 4 Downtown 2 (0.5.4.2) - L4D2 Only, Updated Left4Downtown
Reply With Quote #525

Quote:
Originally Posted by ProdigySim View Post
I believe I have fixed everything in L4DT2 that was broken. You can compile from source from our goooglecode project now. I'll try producing some working builds soon.
Awesome job!

I already compiled the Linux versions (SM 1.5, MM 1.9).

Don't forget to rename of course.
Attached Files
File Type: so left4downtown.ext.2.l4d2.playerslots.so (342.7 KB, 423 views)
File Type: so left4downtown.ext.2.l4d2.noslots.so (331.3 KB, 352 views)
Martijn79 is offline
ProdigySim
SourceMod Plugin Approver
Join Date: Feb 2010
Old 07-14-2013 , 20:49   Re: [EXTENSION] Left 4 Downtown 2 (0.5.4.2) - L4D2 Only, Updated Left4Downtown
Reply With Quote #526

I'm not sure if the playerslots signatures are fixed, so I can only really vouch for the noslots version atm...
ProdigySim is offline
disawar1
AlliedModders Donor
Join Date: Aug 2011
Location: Russian
Old 07-15-2013 , 16:47   Re: [EXTENSION] Left 4 Downtown 2 (0.5.4.2) - L4D2 Only, Updated Left4Downtown
Reply With Quote #527

Quote:
Originally Posted by ProdigySim View Post
I believe I have fixed everything in L4DT2 that was broken. You can compile from source from our goooglecode project now. I'll try producing some working builds soon.
Glad to hear it.

-------------------------------------------
EDIT:

Some feedbacks here.

1. I've updated 'OnMobRushStart' signature, because it still broken.

PHP Code:
            "OnMobRushStart"
            
{
                
"library"  "server"
                "linux"    "@_ZN9CDirector14OnMobRushStartEv"
                "windows"  "\x55\x8B\xEC\x83\xEC\x08\xA1\x74\x2A\x2A\x2A"
                
/* 55 8B EC 83 EC 08 A1 74 ? ? ? */
            

2. Could not find 'GetMasterServerPlayerCounts' signature. I'll try to find this 'playslots' signature tomorrow.

EDIT 2:
PHP Code:
            /* Offset from ConnectClientLobbyCheck to cmp with max players check

               string #Valve_Reject_Server_Full
             */
            
"ValveRejectServerFullFirst"
            
{
                
"windows"    "30"  /* cmp eax, [esi+180h] -> cmp eax, imm32 */
                
"linux"        "32"  /* cmp edi, [esi+17ch] -> cmp edi, imm32 */
            
}
/*********************************************************************
****************** PLAYER SLOTS PATCHING *****************************
*********************************************************************/

            /*
            * We just override the return value to our own
            *
            * This method is called for max players when viewing server info
            * Overriding this on Linux changes the server browser maxplayers
            *
            * On Windows overriding it doesn't fix the server browser,
            * but it does break scavenge mode (like the map doesn't support scavenge)
            */
            
"GetMaxHumanPlayers"
            
{
                
"library"    "server"
                "linux"        "@_ZNK16CTerrorGameRules18GetMaxHumanPlayersEv"
            
}

            
/*
            * int CBaseServer::GetMasterServerPlayerCounts(int &, int &, int &)
            *
            * Used to override server browser maxplayers reporting (Windows)
            *
            * Search for string: "increased_maxplayers" then jump to second call
            */
            
"GetMasterServerPlayerCounts"
            
{
                
"library"    "engine"
                "linux"        "@_ZN11CBaseServer27GetMasterServerPlayerCountsERiS0_S0_"
                "windows"    "\x55\x8B\xEC\x56\x8B\xF1\xE8\x2A\x2A\x2A\x2A\x8B\x4D\x2A\x89\x01\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74"
                
/* windows: 55 8B EC 56 8B F1 E8 ? ? ? ? 8B 4D ? 89 01 8B 0D ? ? ? ? 85 C9 74 */
            
}

            
/* Not an actual function,
               this is inside CBaseServer::ConnectClient (a jz instruction)

               use it to remove skippable code when sv_allow_lobby_connect 0
            */
            
"ConnectClientLobbyCheck"
            
{
                
/* look for "#Valve_Reject_Server_Full" */
                
"library"    "engine"
                "linux"        "\x8B\x2A\x2A\x8B\x03\x8B\x2A\x2A\x89\x2A\x2A\x89\x2A\x2A\xFF\x2A\x2A\x89\xC6\x8B\x03\x89\x2A\x2A\xFF\x2A\x2A\x29\xC6"
                
/* linux: 8B ? ? 8B 03 8B ? ? 89 ? ? 89 ? ? FF ? ? 89 C6 8B 03 89 ? ? FF ? ? 29 C6 */

                
"windows"    "\x74\x2A\x8B\x55\x2A\x8B\x06\x8B\x7A\x2A\x8B\x50"
                
/* windows: 74 ? 8B 55 ? 8B 06 8B 7A ? 8B 50 */
            
}

            
/* Not an actual function,
               This rejects players when there are all full human players

               string "Human player limit reached (%d/%d)"

               deprecated on linux: This function checks GetMaxHumanPlayers
                    on linux, so patching this to an unconditional jump
                    removes a check on maxplayers.
             */
            
"HumanPlayerLimitReached"
            
{
                
"library"    "server"
                "windows" "\x7C\x2A\x8B\x2A\x2A\x8B\x2A\x2A\x50\x57\x68\x2A\x2A\x2A\x2A\x51\x52\xE8\x2A\x2A\x2A\x2A\x83\xC4\x2A\x5F\x5E\x32\xC0\x5B"
                
/* windows: 7C ? 8B ? ? 8B ? ? 50 57 68 ? ? ? ? 51 52 E8 ? ? ? ? 83 C4 ? 5F 5E 32 C0 5B */
            

3. I got a crash Click image for larger version

Name:	blah.jpg
Views:	253
Size:	30.9 KB
ID:	122705 (Win/Vanilla server) seems like it happend when 'CDirector::GetScriptValue(%s,%d) has been called' (left4downtown2 debug log below/I know it will help).

EDIT 3:

Forwards that causes a crash:
PHP Code:
forward Action:L4D_OnGetScriptValueInt(const String:key[], &retVal);
forward Action:L4D_OnGetScriptValueFloat(const String:key[], &Float:retVal);
forward Action:L4D_OnGetScriptValueString(const String:key[], const String:defaultVal[], String:retVal[128]); 
I have temporary solution (Win) which excludes 3 forwards above, until ProdigySim fixes it. Not sure about "ValveRejectServerFullFirst" offset I hope I fixed playslots gamedata.
Attached Files
File Type: log console.log (18.8 KB, 227 views)
File Type: zip left4downtown2-win.zip (146.2 KB, 270 views)
__________________
> Contact me in Steam for private works.
Sourcemod, GitHub, Bitbucket, DeviantArt

Last edited by disawar1; 07-21-2013 at 18:30. Reason: update signatures
disawar1 is offline
Sev
Veteran Member
Join Date: May 2010
Old 07-15-2013 , 17:50   Re: [EXTENSION] Left 4 Downtown 2 (0.5.4.2) - L4D2 Only, Updated Left4Downtown
Reply With Quote #528

Quote:
Originally Posted by disawar1 View Post
Glad to hear it.

Windows verison below. Don't forget to update gamedata too.
This is missing the onmobrushstart signature in its gamedata.

It can be manually put in a few pages back, or you can upload a version with that as well.

EDIT 2:

This unfortunately is also causing random crashes. Not sure where there coming from since I have no errors in my logs related to downtown. If its other plugins tied to downtown or downtown itself.

May have to continue to wait until Prodigysim or assorted others come along with some non crashing, stable builds for windows along with complete gamedata.

Until then, I'll try to see if its a particular plugin causing it, though it seems unlikely.

Last edited by Sev; 07-15-2013 at 18:25.
Sev is offline
dcx2
Senior Member
Join Date: Sep 2011
Old 07-16-2013 , 19:55   Re: [EXTENSION] Left 4 Downtown 2 (0.5.4.2) - L4D2 Only, Updated Left4Downtown
Reply With Quote #529

I have the exact same problem disawar1 has. I need to remove L4D_OnGetScriptValueInt from my game data by commenting out the windows signature, and then everything runs fine. For safety I also commented out L4D_OnGetScriptValueString and L4D_OnGetScriptValueFloat.

Once I did that to the latest gamedata, I have no problems.

EDIT:

a-ha, I think I have figured out the problem. The Linux function is significantly longer than the Windows function that supposedly matches that sig. But when building Windows binary, the compiler must have separated the Linux function into a nested call. The Windows sigs match the "inner" of the calls.

I think these sigs work. At least, I'm not crashing anymore. Don't laugh, I really needed this many bytes to get something unique...GetScriptInt and GetScriptFloat are almost identical except for the function call offsets (which need wild cards), and one lone byte just before the end of the function. Update these parts of your gamedata

PHP Code:
            /*
             * CDirector::GetScriptValue(const char*, int)
             */
            
"CDirector_GetScriptValueInt"
            
{
                
"library"  "server"
                "linux"    "@_ZN9CDirector14GetScriptValueEPKci"
                "windows"  "\x55\x8B\xEC\x8B\x81\x2A\x2A\x2A\x2A\x83\xEC\x10\x83\xF8\xFF\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x45\x2A\x8B"
                
/* 55 8B EC 8B 81 ? ? ? ? 83 EC 10 83 F8 FF ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 8B 45 ? 8B */
            
}
            
            
/*
             * CDirector::GetScriptValue(const char*, float)
             */
            
"CDirector_GetScriptValueFloat"
            
{
                
"library"  "server"
                "linux"    "@_ZN9CDirector14GetScriptValueEPKcf"
                "windows"  "\x55\x8B\xEC\x8B\x81\x2A\x2A\x2A\x2A\x83\xEC\x10\x83\xF8\xFF\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\xD9"
                
/* 55 8B EC 8B 81 ? ? ? ? 83 EC 10 83 F8 FF ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? D9 */
            

__________________

Last edited by dcx2; 07-17-2013 at 00:01.
dcx2 is offline
Sev
Veteran Member
Join Date: May 2010
Old 07-17-2013 , 00:05   Re: [EXTENSION] Left 4 Downtown 2 (0.5.4.2) - L4D2 Only, Updated Left4Downtown
Reply With Quote #530

It seems those new sigs have eradicated the random crashing problem, good work finding the problem/solution.

Last edited by Sev; 07-17-2013 at 00:06.
Sev is offline
Reply


Thread Tools
Display Modes

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 14:16.


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