Open Rong-Yao opened 9 years ago
Checklist:
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.
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.
Thanks, @Naki. That could be the solution.
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.
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?
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/
Okay. I believe we can make this verification optional (namely let user specific the size, or disable it). How about that?
@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)
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.
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.
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.
@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.
I cannot find Patch_D2.mpq with size 4153804
My original 1.13c patch has 2.108.703 bytes
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.
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.