Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

D2GS_Build_20150103 does not work #11

Open
Rong-Yao opened this issue Jan 22, 2015 · 16 comments
Open

D2GS_Build_20150103 does not work #11

Rong-Yao opened this issue Jan 22, 2015 · 16 comments

Comments

@Rong-Yao
Copy link

Hello tesseract2048, i've tried the compiled binary of https://raw.githubusercontent.com/tesseract2048/d2gs/master/Binaries/D2GS_Build_20150103.zip which you posted, still it does not work.
Normal D2GS from pvpgn.pl works, when i update it to Build_20150103 it stops.
And i've tried to do this, i started my working d2gs which is the old one from pvpgn.pl, then when i saw it working fine, i've turned it off and extracted any file from Build_20150103 into it, trying to start it again, D2GS.exe just closes without error or log shown.
I'm using windows 7 x64 sp2 as an os.

@tesseract2048
Copy link
Owner

Checklist:

  • Turn on logging option in registry (EnableGSLog), otherwise there will be no output.
  • Make sure vcredist for VS2010 installed.

@Rong-Yao
Copy link
Author

I have it installed, also dependency walker shows that files are there also msvc is up to date, just should i have msvc2010 (Microsoft Visual C++ 2010 Redistributable) or VS2010, because i have msvcr100.dll installed for both x86 and x64 versions there.

EnableGSLog is 1 and still do not save any logs, D2GS.exe closes before it writes logs.

@Naki
Copy link

Naki commented Jan 30, 2015

If there is no log at all, it can be Patch_D2.mpq file size check: main.c, Line: 73
You can disable it & compile D2GS or check is Yours mpq file have same size.

@tesseract2048
Copy link
Owner

Thanks, @Naki.
That could be the solution.

@HarpyWar
Copy link

There is no d2server.ini in archive with binaries. It's no longer needed?
BTW, binaries can be uploaded into Release section of the github project's page.

d2gs.reg should be saved in ASCII/UTF8 encoding and regedit path should be replaced to [HKEY_LOCAL_MACHINE\SOFTWARE\D2Server\D2GS], there are x86 still exist,

About previous issue, there is should be log line added before return -1. Sometimes users try run mods with different Patch_D2.mpq size.

@tesseract2048
Copy link
Owner

Thanks @HarpyWar .

d2server.ini is fetched from D2CS during initialization.

I am having difficulty debugging this project since I no longer work with Windows.
Could you fix the other issues and send a pull request please, thanks?

@HarpyWar
Copy link

HarpyWar commented Feb 1, 2015

Where can I get file Patch_D2.mpq with size = 4153804 ?
The original file from v1.13c has different size = 6755058.

All the original files of clean Diablo 2 versions (en): http://cdn.pvpgn.pro/diablo2/

@tesseract2048
Copy link
Owner

Okay.
I believe we can make this verification optional (namely let user specific the size, or disable it).
How about that?

@HarpyWar
Copy link

@tesseract2048 I think Patch_D2.mpq verification can be disabled, because it doesn't affect on anything on a server side. But this file should be equal on a server and a client side, otherwise client can not create/join games or it may cause a client crash.

Also, what is profit from the changing registry path from D2Server/D2GS to D2Server/D2GS113? As I see, there are only 4 optional parameters were added (GEThread, GSShutdownInterval, ListenPort, SYNProtect) that are replaced by default if no exist, and all other parameters are the same.
Users will be happy if the registry path will be the same that are described in docs over the internet for all the previous D2GS versions, otherwise it adds a confusion.

Next issue. I can't run this D2GS, because it can't connect to D2CS.
Does it work with original D2CS, or only with modified D2CS from https://github.com/tesseract2048/pvpgn?

Your D2GS

02/10 19:05:19.037 D2GSConnectToD2xS: Connected to D2DBS Successfully
02/10 19:05:19.037 D2GSSendClassToD2DBS: Send connection class packet to D2DBS
02/10 19:05:19.146 D2GSConnectToD2xS: Connected to D2CS Successfully
02/10 19:05:19.146 D2GSSendClassToD2CS: Send connection class packet to D2CS
02/10 19:05:19.256 CloseConnectionToD2CS: Close Connection to D2CS
02/10 19:05:19.256 CloseConnectionToD2CS: Connection lost, restart D2GS

Original D2CS

Feb 10 19:04:53 [info ] pvpgn::d2cs::server_accept: accept connection from 95.213.159.36
Feb 10 19:04:53 [info ] pvpgn::d2cs::d2cs_conn_create: created session=20 socket=468 (3 current connections)
Feb 10 19:04:53 [error] pvpgn::d2cs::d2cs_handle_init_packet: got bad connection class 145
Feb 10 19:04:53 [info ] pvpgn::d2cs::d2cs_conn_destroy: [468] closed connection 20 (2 left)

@tesseract2048
Copy link
Owner

Patch_D2.mpq verification was used for hacking prevention (as it is possible for attackers to replace Patch_D2.mpq and therefore be able to create dupe). And it is okay to disable it.

The registry path modification allows both version of D2GS run on the same server (namely, 1.13c and 1.11b), therefore they should have separated configurations.

�This version of D2GS works only with modified D2CS (https://github.com/tesseract2048/pvpgn), for this D2CS_D2GS protocol are incompatible with previous one.

@HarpyWar
Copy link

Do I understand correctly that two different D2GS versions can be run at the same time on one machine (IP address)? If yes, could you explain more about it?
AFAIK, Diablo 2 uses port 4000 to connect to a server, and it can not be changed.

@tesseract2048
Copy link
Owner

The way I was doing this was building a reverse proxy listen at port 4000, in front of two D2GS instances (these two, of course, listen different ports, say 4013 & 4011).

The proxy is implemented by receiving and parsing 0x68 packet from client, then detect game version, and afterward back up communication between client and backend D2GS instance (by switching packets in rest lifetime of the connection).

This has proven to be efficient & effective, and handled up to 2000+ connections.

@wujiabo
Copy link

wujiabo commented Feb 13, 2015

@tesseract2048

Hello, could you upload the original d2gs and d2gssvc code for 1.11b version?
I came across many sites,but can't find the code for d2gs.exe and d2gssvc.exe.

the d2gs.exe has a icon"d2gs1.10", but can used in 1.11b.
d2gssvc.exe has a green character icon.

do you have the original code?

Many Many thanks.

@Rong-Yao
Copy link
Author

Rong-Yao commented Mar 8, 2015

I cannot find Patch_D2.mpq with size 4153804

@b1nn
Copy link

b1nn commented Aug 1, 2016

My original 1.13c patch has 2.108.703 bytes

@HarpyWar
Copy link

HarpyWar commented Jun 8, 2017

Patch_D2.mpq can be of different size, even for original version. It depends on what initial Diablo 2 game version did you have before applying a new version patch from Blizzard, and "full" or "partial" patch. Possible it also may depends on a game locale.
For example, 1.11b -> 1.13c and 1.12a -> 1.13c will be different size.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants