210 lines
23 KiB
Markdown
210 lines
23 KiB
Markdown
# 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, `.map` and `.pdb` files). Release builds recreate `build\Server\...` and `build\Client\...`.
|
|
- IDE and VCS folders: `.vs\`, `.svn\`, `.git\`.
|
|
- Personal files: `src\src\LSClient\Save\` (saved player settings of two accounts), `info\pp*.log` and `LSAutoUpgrade\info\app.log` (runtime logs), and the duplicate `extra\LS_NXSoap\*\bin - Copy\` folders.
|
|
- The `LSClient\Debug\` folder held a full game client (`.iop` packs, 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 in `src\src\io3DEngine\ioLocalManagerParent.cpp` (stored encoded, with the plain text in comments), repeated in the `PatchManager`, `PatchManagerOld`, `LSAutoUpgrade` and `ErrorDlg` copies of the local managers.
|
|
- `WEB_UDP_KEY_VALUE` in `ls_gamesvr\NodeInfo\UserNodeManager.h` and the check key `EDEW3940FVDP4950` in the launcher command-line notes.
|
|
- Packet and DB password encoding in `iocpSocketDLL` and `ls_dbagent` (`ls_dbagent.exe -x`).
|
|
- Copyright and author e-mail addresses in third-party code and `.rc` version 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]/path` became `http://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.lib` had no publisher host left after the earlier IP patch). The SOAP namespace and endpoint strings inside the libraries now use the padded `.invalid` names.
|
|
- Vendor documents `src\src\BillingRelayServer\OGPDocument\1. IOEntertainment.doc`, `4. installer package components.doc` (OGPlanet hosts) and `src\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. || `server-config\ls_gamesvr\config\sp2_mode_select.ini` (Shuffle / Factory) | Shuffle Bonus subs 30-32 and Factory subs 2-3 set to `active = 0`, `map_cnt = 0` | The client has no maps for them (black screen). |
|
|
|
|
## 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.cpp`
|
|
- `src\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\`: creates `LosaGame`, `LosaGame_log`, `LosaLogData` and an empty `Backup` (`game_region_backup_*` create their own tables in it), the SQL login `lstggame`, `LosaGame_log` from the 2021 release (no 2014 script exists), the `src\sql\20120504` scripts 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.sql` with `.bat` wrappers, and `setup-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 to `server-config\_original-release\`.
|