23 KiB
LosaDev changes to the 2014 source
This snapshot is a copy of the 2014 source (178 heroes). Every change against the original tree is listed here. All edits were made byte-safe (the sources are CP949): only the listed text was replaced, line endings were kept, and every other file is byte-identical to the original (checked by SHA-256 on 2026-11-07: 19 671 identical, 530 changed (including the host-name pass below), 0 added apart from the LosaDev files at the root).
1. What was left out of the copy
- Build output:
Debug\,Release\,x64\,Shipping*\,Ship_*\,ipch\, and*.obj,*.pch,*.ipch,*.sdf,*.opensdf,*.suo,*.user,*.ncb,*.aps,*.tlog,*.pdb,*.ilk,*.idb,*.sbr,*.bsc,*.cod,*.lastbuildstate,*.unsuccessfulbuild,*.dmp. - The top-level
build\folder (prebuilt executables,.mapand.pdbfiles). Release builds recreatebuild\Server\...andbuild\Client\.... - IDE and VCS folders:
.vs\,.svn\,.git\. - Personal files:
src\src\LSClient\Save\(saved player settings of two accounts),info\pp*.logandLSAutoUpgrade\info\app.log(runtime logs), and the duplicateextra\LS_NXSoap\*\bin - Copy\folders. - The
LSClient\Debug\folder held a full game client (.ioppacks, GameGuard). The client is shared as a separate download, not in Git.
Third-party libraries (src\lib\, src\extra\lib\, src\extra\include\, wxWidgets, Bullet, gperftools, ziparchive, OggVorbis, the anti-cheat SDKs) are kept as they were. Exception: the vendor SDK binaries listed under "Vendor SDK binaries removed" below.
2. Build fixes
| File | Change | Why |
|---|---|---|
src\src\LSClient\Main.cpp |
#ifdef SHIPPING before the command-line variables (iPortOncmd, szKeyOnCmd, szOptionsOnCmd, szIPOnCmd) became #if !defined( LOCAL_DBG ) |
The Release configuration defines neither SHIPPING nor LOCAL_DBG, so the variables were never declared (C2065). Now they are declared whenever LOCAL_DBG has not declared them already. Debug and the Ship configurations behave as before. |
src\win\projects\ls_loginsvr.vcxproj |
Release: added /Zm300; Debug: -Zm150 became -Zm300 |
C1076/C3859 (precompiled header heap limit). |
src\win\projects\LogDLL.vcxproj, src\win\projects\FrameTimerDLL.vcxproj |
Each post-build copy ... ..\..\build\zone_office\<server>\ line now starts with if exist "<that folder>\" |
The copy failed when the zone_office folders did not exist, which failed the whole build. The DLL itself was always fine. |
src\win\projects\ls_gamesvr.vcxproj, ls_mainsvr.vcxproj, ls_relaysvr.vcxproj |
D:\Development\Library\boost_1_50_0 / boost_1_47_0 became C:\Program Files (x86)\boost\boost_1_50 / boost_1_47 |
A personal local path; now the same default paths as the other projects (see the wiki's Boost section). |
src\src\ioPac\BigPac.cpp |
Removed the debug line ::MessageBoxA(NULL, szPassword, "CBigPac::OpenBigPac Password", MB_OK); at the start of CBigPac::OpenBigPac (byte patch, file is UTF-8 with BOM, CRLF kept) |
It showed the pack password in a message box every time the client opened rs.iop/map.iop. |
src\extra\lib\LS_NXSoap.lib |
The SOAP endpoint string 13.250.105.220 (33 times) was replaced with 127.0.0.1:8080 (same length, so the library stays valid) |
Address of a private server. Matches the source change below. |
3. Secrets and personal data replaced
Placeholders: 127.0.0.1 for addresses the code connects to, 192.0.2.1 (a reserved documentation address that never matches a real host) where the code compares the server's own IP against a fixed list, and CHANGE_ME for keys, passwords, tokens and account names. Private network addresses (10.x, 172.16-31.x, 192.168.x) were left as they are: they reveal nothing and some code compares against them.
| File | Replaced |
|---|---|
src/extra/LS_NXSoap/** (129 files: NXSoap.h, soapNexonCashSoapProxy.cpp, gsoap stubs, wsdl samples, Nexoncash.xml) |
SOAP endpoint 13.250.105.220 -> 127.0.0.1 |
src/extra/LS_Monitor/LS_Monitor/config.ini |
10 public IP(s) |
src/extra/LS_Service/bin/server.txt |
1 public IP(s) |
src/extra/testNXShop/testCode/cTestThread.cpp |
1 public IP(s) |
src/extra/testNXShop/testCode/testCode.cpp |
1 public IP(s) |
src/sql/20120504/lostsaga_sp.sql |
1 public IP(s) |
src/src/BillingRelayServer/billingrelayserverinfo.ini |
1 public IP(s) |
src/src/BillingRelayServer/Channeling/ioChannelingNodeDaum.cpp |
1 public IP(s) |
src/src/BillingRelayServer/Channeling/ioChannelingNodeWemadeBuy.cpp |
1 public IP(s), billing session value |
src/src/BillingRelayServer/ipg/sample/asp/ipg_cli_input.asp |
e-mail address |
src/src/BillingRelayServer/Local/ioLocalIndonesia.cpp |
2 public IP(s) |
src/src/BillingRelayServer/Local/ioLocalTaiwan.cpp |
player account id |
src/src/BillingRelayServer/Local/ioLocalThailand.cpp |
10 public IP(s) |
src/src/ErrorDlg/ErrorDlg/ErrorDlg.vcxproj |
developer user folder (post-build now copies $(TargetPath)) |
src/src/ErrorDlg/ErrorDlg/HackShield/ioHackShield.cpp |
1 public IP(s) |
src/src/ls_billingsvr/Channeling/ioChannelingNodeDaum.cpp |
1 public IP(s) |
src/src/ls_billingsvr/Channeling/ioChannelingNodeWemadeBuy.cpp |
1 public IP(s), billing session value |
src/src/ls_billingsvr/Channeling/ioChannelingNodeWemadeCashLink.cpp |
1 public IP(s), billing session value |
src/src/ls_billingsvr/Local/ioLocalEU.cpp |
1 public IP(s) |
src/src/ls_billingsvr/Local/ioLocalIndonesia.cpp |
2 public IP(s) |
src/src/ls_billingsvr/Local/ioLocalLatin.cpp |
2 public IP(s) |
src/src/ls_billingsvr/Local/ioLocalSA.cpp |
6 public IP(s) |
src/src/ls_billingsvr/Local/ioLocalTaiwan.cpp |
player account id |
src/src/ls_billingsvr/Local/ioLocalThailand.cpp |
10 public IP(s) |
src/src/ls_billingsvr/Local/ioLocalUS.cpp |
publisher app id, test account + password |
src/src/ls_gamesvr/MainProcess.cpp |
2 public IP(s) (2 in address comparisons -> 192.0.2.1) |
src/src/ls_gamesvr/NodeInfo/LicenseManager.h |
1 public IP(s) |
src/src/ls_gamesvr/NodeInfo/User.cpp |
5 public IP(s) (4 in address comparisons -> 192.0.2.1) |
src/src/ls_gamesvr/Xtrap/XTrap4Server.cpp |
3 public IP(s) (1 in address comparisons -> 192.0.2.1) |
src/src/ls_mainsvr/MainProcess.cpp |
2 public IP(s) (2 in address comparisons -> 192.0.2.1) |
src/src/LSAutoUpgrade/_참고/ls.asp |
SQL connection string (host, login, password) |
src/src/LSAutoUpgrade/AutoUpgradeDlg.cpp |
login token |
src/src/LSAutoUpgrade/ioLoginDlg.cpp |
1 public IP(s) |
src/src/LSAutoUpgrade/Xtrap/ioXtrap.cpp |
XTrap license id(s) |
src/src/LSClient/HackShield/ioHackShield.cpp |
3 public IP(s) |
src/src/LSClient/ioSteamClient.cpp |
publisher hash key |
src/src/LSClient/Login.cpp |
login token |
src/src/LSClient/XignCode/ioXignCode.cpp |
XignCode license key |
src/src/LSClient/Xtrap/ioXtrap.cpp |
XTrap license id(s) |
src/src/LSClientMT/config/debug_connect.ini |
login token |
src/src/LSClientMT/Login.cpp |
login token |
src/src/LSClientMT/XignCode/ioXignCode.cpp |
XignCode license key |
src/src/LSClientMT/Xtrap/ioXtrap.cpp |
XTrap license id(s) |
src/src/LSMonitor/LSMonitorDlg.cpp |
LSMonitor login password |
src/src/LSWebBroker/_CMD.txt |
login token |
src/src/LSWebBroker/ioLoginDlg.cpp |
web API key |
src/src/LSWebBroker/Local/ioLocalEU.cpp |
login token |
src/src/LSWebBroker/Local/ioLocalLatin.cpp |
login token |
src/src/LSWebBroker/Local/ioLocalUS.cpp |
login token |
src/src/LSWebBrokerOriginal/_CMD.txt |
login token |
src/src/LSWebBrokerOriginal/Local/ioLocalEU.cpp |
login token |
src/src/LSWebBrokerOriginal/Local/ioLocalLatin.cpp |
login token |
src/src/LSWebBrokerOriginal/Local/ioLocalUS.cpp |
login token |
src/src/MainServer/Window.cpp |
2 public IP(s) (2 in address comparisons -> 192.0.2.1) |
src/src/PatchManager/PatchManager.cpp |
1 public IP(s) |
src/src/SP2LostSagaGameServer/NodeInfo/LicenseManager.h |
1 public IP(s) |
src/src/SP2LostSagaGameServer/Window.cpp |
1 public IP(s) (1 in address comparisons -> 192.0.2.1) |
The anti-cheat license strings (XTrap, XignCode) are only used by the Shipping configurations with those SDKs; Debug and Release do not use them.
4. Left in place on purpose
These are part of the game itself and are needed to read its data or talk to the client:
- Pack (
.iop) passwords per country insrc\src\io3DEngine\ioLocalManagerParent.cpp(stored encoded, with the plain text in comments), repeated in thePatchManager,PatchManagerOld,LSAutoUpgradeandErrorDlgcopies of the local managers. WEB_UDP_KEY_VALUEinls_gamesvr\NodeInfo\UserNodeManager.hand the check keyEDEW3940FVDP4950in the launcher command-line notes.- Packet and DB password encoding in
iocpSocketDLLandls_dbagent(ls_dbagent.exe -x). - Copyright and author e-mail addresses in third-party code and
.rcversion blocks.
5. Build test
Copied to a scratch folder and built on 2026-11-07 in Release|Win32 with the v100 toolset (VS2010, via VS2022 MSBuild), the TortoiseSVN pre-build step disabled and static-runtime Boost:
| Solution | Result |
|---|---|
ioINILoader, Log, LogDLL, FrameTimerDLL, iocpSocketDLL, LSLog, SharedContainer, PerfMon, TownPortal, ioFreeType |
Build |
io3DEngine |
Builds |
ls_dbagent, ls_mainsvr, ls_billingsvr, ls_gamesvr, ls_relaysvr, ls_loginsvr, ls_filewritesvr |
Build |
LSClient |
Builds LostSaga.exe (Release) |
ioPac |
The solution was re-saved in VS2022 and only has x86 platforms: build it with /p:Platform=x86 (builds) or retarget it |
Publisher and operator host names (added 2026-11-07)
Owner decision: no real publisher, operator or game-service host names in the repository. Every such host was replaced in text files (same byte-safe method as above, CP949 as Latin-1, UTF-16 .sql only when lossless, line endings kept):
- a URL
scheme://host[:port]/pathbecamehttp://127.0.0.1/path(the path is kept, the port dropped); - a bare host name became
example.invalid; - e-mail addresses at the developer's and publisher's own domains (
@ioenter.com,@nexon.co.kr) became@example.invalid(the part before@is kept). Files:src/src/BillingRelayServer/Local/ioLocalTaiwan.cpp(10),src/src/BillingRelayServer/Local/ioLocalUS.cpp(10),src/src/ls_billingsvr/Local/ioLocalEU.cpp(9),src/src/ls_billingsvr/Local/ioLocalTaiwan.cpp(10),src/src/ls_billingsvr/Local/ioLocalUS.cpp(9).
2891 replacements in 352 files, 61 hosts. Hosts (number of replacements): nxsoap.nexon.com (2058), testsoap.nexon.com (638), billingws.gamon.net (24), www.lostsaga.com (13), lostsaga.com (12), forum.gemscool.com (11), lostsaga.ogplanet.com (9), www.gamon.net (8), www.gemscool.com (6), www.lostsaga.jp (6), billlosatest.wemade.com (6), lostsaga.gamon.net (5), secure3.asiasoft.co.th (5), nxpay.nexon.com (5), profile.playcybergames.com (4), cdn.lostsaga.z8games.com (4), www.lostsaga.in.th (4), download.lostsaga.com (4), support.z8games.com (4), ls.garena.in.th (4), lostsaga.z8games.com (3), images.z8games.com (3), lostsaga.gemscool.com (3), platform.garena.tw (2), en.lostsaga.nexoneu.com (2), passport.nexoneu.com (2), www.z8games.com (2), cabinet.ogplanet.com (2), patch.lostsaga.com.tw (2), test.bill.daum.net (2), search.daum.net (2), authen.playpark.net (2), games.playpark.com (2), www.nxcreative.co.kr (2), lostsaga.nefficient.co.kr (2), na-qa.launcher.z8games.com (2), www.daum.net (2), aspdll.xonda.net (1), api.z8games.com (1), lostsaga.garena.tw (1), app.z8games.com (1), network.adsmarket.com (1), billing.ogplanet.com (1), apis-test.nexon.com (1), apps.garena.in.th (1), www.playpark.com (1), game.playpark.com (1), api.ogplanet.com (1), my.playpark.com (1), lostsaga.wemadeusa.com (1), alpha.api.bill.naver.com (1), start.tiara.daum.net (1), cdn.lostsaga.com (1), tr.lostsaga.nexoneu.com (1), pl.lostsaga.nexoneu.com (1), service.garena.tw (1), www.softnyx.com (1), de.lostsaga.nexoneu.com (1), support.lostsaga.nexoneu.com (1), it.lostsaga.nexoneu.com (1), fr.lostsaga.nexoneu.com (1).
| Folder | Files | Replacements | Hosts |
|---|---|---|---|
src/extra/LS_NXSoap/LS_NXSoap/ |
66 | 657 | nxsoap.nexon.com |
src/extra/LS_NXSoap/NEXON_live/ |
136 | 1401 | nxsoap.nexon.com |
src/extra/LS_NXSoap/NEXON_testnx/ |
65 | 638 | testsoap.nexon.com |
src/extra/testHTTP/testCode/ |
1 | 1 | apis-test.nexon.com |
src/src/BillingRelayServer/ |
1 | 3 | alpha.api.bill.naver.com, api.ogplanet.com, billing.ogplanet.com |
src/src/BillingRelayServer/Channeling/ |
2 | 3 | billlosatest.wemade.com, test.bill.daum.net |
src/src/BillingRelayServer/Local/ |
1 | 16 | billingws.gamon.net, www.gamon.net |
src/src/ErrorDlg/ErrorDlg/ |
7 | 8 | forum.gemscool.com, games.playpark.com, lostsaga.gamon.net, lostsaga.wemadeusa.com, www.lostsaga.com, www.lostsaga.in.th, www.lostsaga.jp |
src/src/ls_billingsvr/Channeling/ |
3 | 5 | billlosatest.wemade.com, test.bill.daum.net |
src/src/ls_billingsvr/Local/ |
3 | 19 | api.z8games.com, app.z8games.com, billingws.gamon.net, network.adsmarket.com, www.gamon.net |
src/src/ls_gamesvr/Channeling/ |
1 | 1 | nxpay.nexon.com |
src/src/LSAutoUpgrade/ |
4 | 23 | authen.playpark.net, cdn.lostsaga.com, cdn.lostsaga.z8games.com, game.playpark.com, my.playpark.com, profile.playcybergames.com, search.daum.net, secure3.asiasoft.co.th, start.tiara.daum.net, www.daum.net, www.nxcreative.co.kr, www.playpark.com |
src/src/LSAutoUpgrade/_참고/ |
2 | 4 | cabinet.ogplanet.com, patch.lostsaga.com.tw |
src/src/LSAutoUpgrade/Local/ |
10 | 42 | cdn.lostsaga.z8games.com, de.lostsaga.nexoneu.com, en.lostsaga.nexoneu.com, forum.gemscool.com, fr.lostsaga.nexoneu.com, images.z8games.com, it.lostsaga.nexoneu.com, lostsaga.garena.tw, lostsaga.gemscool.com, lostsaga.z8games.com, ls.garena.in.th, passport.nexoneu.com, pl.lostsaga.nexoneu.com, platform.garena.tw, service.garena.tw, support.lostsaga.nexoneu.com, support.z8games.com, tr.lostsaga.nexoneu.com, www.gemscool.com, www.lostsaga.com, www.lostsaga.jp, www.softnyx.com, www.z8games.com |
src/src/LSClient/ |
4 | 14 | lostsaga.com, lostsaga.z8games.com, nxpay.nexon.com |
src/src/LSClient/Local/ |
10 | 10 | apps.garena.in.th, forum.gemscool.com, lostsaga.gamon.net, support.z8games.com, www.lostsaga.com, www.lostsaga.jp |
src/src/LSClientMT/ |
2 | 2 | nxpay.nexon.com |
src/src/LSClientMT/Local/ |
7 | 8 | forum.gemscool.com, games.playpark.com, lostsaga.gamon.net, lostsaga.ogplanet.com, www.lostsaga.com, www.lostsaga.in.th, www.lostsaga.jp |
src/src/LSMonitor/Sms/ |
2 | 2 | aspdll.xonda.net, lostsaga.com |
src/src/LSWebBroker/ |
2 | 3 | download.lostsaga.com, lostsaga.nefficient.co.kr |
src/src/LSWebBroker/Local/ |
10 | 12 | cdn.lostsaga.z8games.com, forum.gemscool.com, lostsaga.gamon.net, lostsaga.ogplanet.com, na-qa.launcher.z8games.com, www.lostsaga.com, www.lostsaga.in.th, www.lostsaga.jp |
src/src/LSWebBrokerOriginal/ |
3 | 7 | download.lostsaga.com, lostsaga.nefficient.co.kr, www.lostsaga.com |
src/src/LSWebBrokerOriginal/Local/ |
10 | 12 | cdn.lostsaga.z8games.com, forum.gemscool.com, lostsaga.gamon.net, lostsaga.ogplanet.com, na-qa.launcher.z8games.com, www.lostsaga.com, www.lostsaga.in.th, www.lostsaga.jp |
Binary files, patched only with same-length replacements (nxsoap.nexon.com -> xexample.invalid, testsoap.nexon.com -> xxxexample.invalid, and so on, so sizes and offsets do not change):
src\extra\lib\:LS_NXSoapD.lib,LS_NXSoapTEST.lib,LS_NXSoapTESTD.lib(LS_NXSoap.libhad no publisher host left after the earlier IP patch). The SOAP namespace and endpoint strings inside the libraries now use the padded.invalidnames.- Vendor documents
src\src\BillingRelayServer\OGPDocument\1. IOEntertainment.doc,4. installer package components.doc(OGPlanet hosts) andsrc\src\LSMonitor\Sms\Xonda_net_SMSWS_v1.0.doc(SMS service host).
The config set next to this repository (server-config\) was changed the same way: 1 584 URLs in six files of ls_gamesvr\config\ (config.ini, sp2_guild.ini, sp2_custom_texture.ini, sp2_channeling_wemade.ini, sp2_shop_item_chr_info.ini, sp2_shop_item_extra1_info.ini; hosts lostsaga-image.cdn.lostsaga.com, lostsaga.id, www.lostsaga.com). Every other config file is byte-identical to before.
Left on purpose (not publisher or game-service hosts): standards and XML namespaces (www.w3.org, schemas.microsoft.com, schemas.xmlsoap.org), homepages and documentation links of third-party libraries and their authors (Bullet, ZipArchive, OPCODE, Lua, TinyXML, Ogg Vorbis, wxWidgets, gperftools, OpenSSL, libcurl and others), copyright lines that name a company without a host (Wellbia, INCA, Bandisoft), api.ipify.org (public IP lookup used by the launcher), www.google-analytics.com (the analytics collector; the tracking id comes from config), the Steam SDK headers (store.steampowered.com, www.steamgames.com), and the vendor addresses inside third-party binaries listed above in section "Left in place on purpose".
Local run fixes (added 2026-11-07)
Found while running this source on one local PC. Byte patches, line endings kept.
| File | Change | Why |
|---|---|---|
src\src\ls_gamesvr\Local\ioLocalParent.cpp, src\src\LSClient\Local\ioLocalParent.cpp |
IsRightLicense() no longer compares the date (if( iDate >= GetLicenseDate() ) return false; replaced by (void)iDate;) |
The Indonesia license date (2016-08-06) has passed: the client showed "Your license has com up for renewal." and exited, the game server exited in Indonesia mode with "This program has expired". |
src\src\ls_mainsvr\MainProcess.cpp |
The MessageBox "Local IP Error." became a log line |
A server started without a window would wait on the dialog for ever. |
Bug fixes (added 2026-11-07)
| File | Change | Why |
|---|---|---|
src\src\LSClient\GUI\TradeMainWnd.cpp |
TradeItemBtn::SetExtraItemInfo(): removed the first of two SetIcon() calls |
Market crash as soon as a listed item is shown. InventoryIconBtn::SetIcon() frees the old icon first, and both calls passed the same image, so the button kept a freed pointer. The 2019 and 2021 sources make one call. |
src\src\LSClient\GUI\TradeMainWnd.cpp |
TradeItemBtn::OnRender(): the empty slot draws its icon once (scale 0.6) |
Empty Market slots showed two overlapping "none" icons. Same code as 2019 and 2021. |
src\src\LSClient\Setting.cpp |
LOW_SPEC and MINIMUM_SPEC presets set m_bUse16bitFrameBuffer = false |
Spec=3 (minimum) asked for a 16-bit full screen device; current Windows refuses it (CreateDevice 8876086c) and the client exited without a window. A failed start also saved Spec=3, so it failed every time. |
Database and config fixes (added 2026-11-07)
| Files | What it fixes |
|---|---|
db\losadev\losadev-fixes-and-accounts.sql |
2014 servers on the May 2012 scripts: server connection procedure, encode key, test account procedure. |
db\losadev\losadev-features-from-2021.sql, losadev-core-procs-from-2021.sql |
Pets, costumes, missions and other features ran on empty stub procedures: real tables, columns and procedures from the 2021 release (only where the parameters match ls_query.ini). |
db\losadev\losadev-first-tournament.sql |
Faction War / LS Cup showed no dates: nothing creates the first userLeagueListDB row. |
server-config\ls_gamesvr\config\sp2_mode_select.ini |
Plaza with a random map loaded a black screen: entries for maps the client lacks are removed. |
Shop, gacha, gear and medal configs in server-config\ls_gamesvr\config |
Server configs came from another version than the client; the client's files are used where both have the same keys. |
Vendor SDK binaries removed (added 2026-11-07)
No vendor SDK binaries are shared in any LosaDev tier. The source code that uses them stays.
Deleted XTrap libraries/DLLs (13): src\src\LSAutoUpgrade\Xtrap\XTrap4Launcher_mt.lib, src\src\LSClient\Xtrap\XTrap4ClientExt1_mtdll.lib, src\src\LSClient\Xtrap\XTrap4Client_ClientPart_mtDll.lib, src\src\LSClient\Xtrap\XTrap4Client_ServerPart_mtDll.lib, src\src\LSClient\Xtrap\XTrap4Client_mtDll.lib, src\src\LSClient\Xtrap\XTrap_Unipher_mtDll.lib, src\src\LSClientMT\Xtrap\XTrap4ClientExt1_mtdll.lib, src\src\LSClientMT\Xtrap\XTrap4Client_ClientPart_mtDll.lib, src\src\LSClientMT\Xtrap\XTrap4Client_ServerPart_mtDll.lib, src\src\LSClientMT\Xtrap\XTrap4Client_mtDll.lib, src\src\LSClientMT\Xtrap\XTrap_Unipher_mtDll.lib, src\src\SP2LostSagaGameServer\Xtrap\XTrap4Server.dll, src\src\ls_gamesvr\Xtrap\XTrap4Server.dll.
Deleted bxIPGClient.dll copies (6): src\lib\bxIPGClient.dll, src\src\BillingRelayServer\JapanDLL\bxIPGClient.dll, src\src\BillingRelayServer\bxIPGClient.dll, src\src\BillingRelayServer\ipg\bin\bxIPGClient.dll, src\src\ls_billingsvr\JapanDLL\bxIPGClient.dll, src\src\ls_billingsvr\ipg\bin\bxIPGClient.dll.
#import "...bxIPGClient.dll" no_namespace needs the DLL at compile time, so it was replaced by #include "...bxIPGClient_stub.h" in:
src\src\BillingRelayServer\Local\ioLocalJapan.cppsrc\src\ls_billingsvr\Local\ioLocalJapan.cpp
New stand-in headers: src\src\BillingRelayServer\JapanDLL\bxIPGClient_stub.h, src\src\ls_billingsvr\JapanDLL\bxIPGClient_stub.h. They declare only what the code calls (IIPGClient with GetCash, Output, OutputCancel, OutputIPG, and the IIPGClientPtr smart pointer). The COM class is never registered, so CreateInstance fails, the pointer stays empty and the existing catch( _com_error ) paths run: the Japan IPG and Adbill billing calls report an error, nothing else changes.
Verified 2026-11-07: ls_billingsvr Release|Win32 builds with 0 errors with no bxIPGClient.dll present. BillingRelayServer gets the same header but was not build-tested.
The XTrap code is only compiled in Shipping configurations with XTRAP defined. Those configurations no longer link without the vendor SDK; build Debug or Release.
Script: vendor-strip.js (latin1 byte-safe, CRLF kept).
Database setup and one-PC server config (added 2026-11-07)
- New
database\: createsLosaGame,LosaGame_log,LosaLogDataand an emptyBackup(game_region_backup_*create their own tables in it), the SQL loginlstggame,LosaGame_logfrom the 2021 release (no 2014 script exists), thesrc\sql\20120504scripts as UTF-8, the stub procedures, parameter fixes, 2021 features/core procedures and first tournament of the tested local setup, test accounts,backup.sql/restore.sqlwith.batwrappers, andsetup-db.bat. The encode key is asked for instead of a fixed test value. Tested on SQL Server 2022 Express: only the known messages of the 2012 scripts (22 old procedures, one old view); backup + restore OK. server-config\is now the tested one-PC set (PW=CHANGE_ME,192.168.1.10= your LAN address). The previous content (a modified private server's set) moved toserver-config\_original-release\.