Jump to content

Mdrst

Moderators
  • Content Count

    81
  • Joined

  • Last visited

  • Days Won

    9

Everything posted by Mdrst

  1. Were there any errors when running the Guild/GameDB sql scripts? I do not recall having this problem, but make sure to check GameServer logs.
  2. @Skinner Awesome find!!! I never had hope to find the Game Trailer theme, which is sad considering it is my favorite track out of the OST. Here is some hope that we will find Shaitan City theme in the future!
  3. This is supposed to be completely separated from CO - you can use the stability/security improvements from Yatops along with the new features from CO. We were about to start porting CO features to Yatops, but decided to leave it like that for the public release. Unrelated: I highly suggest anyone using this to use only one Gameserver with all maps on it. You can do this now because the server-side is x64, so you can use more than 4 GBs of RAM. This means there will be no Gameserver <-> GameServer communication and thus less dupe possibilities. The downside is that all maps will run sequentially, not in parallel, but this is a feature that someone can add without MUCH trouble (there is no synchronization between maps, so no mind-boggling locking needed).
  4. @V3ct0r Hi! Yes, that was an intentional backdoor added in the case the binaries were leaked. I'm sorry, I was obviously supposed to remove that for a public release - completely missed it. I apologize to all and will reupload a backdoor-free version. Edit: removed backdoors from the download link. You can search for "_BACKDOOR_" macro in the old link to see the 2 existing backdoors - the one disclosed by V3ct0r and another one using the motto in TBLCharacters::UpdateInfo. Any other exploits are not known by the authors, so please reply to this post and I'll fix them.
  5. @RafaelaMartins Check the translation folder (en_US.txt/.res), the name used by the client must match the name in your .cfg (Argent City/Shaitan City/etc)
  6. @RafaelaMartins Sorry, this is a known bug. You are mixing x86 and x64 libraries. Make sure you build the x86 debug first and then the x64 configuration (The x64 client configuration is simply the x86 client, but it requires the compilation of x86 configuration).
  7. @RafaelaMartins Make sure the Utility and AudioSDL are being compiled before the Engine/Client.
  8. YATOPS - Yet Another Tales of Pirates Server/Source As we're leaving ToP development, me and @Snre3n decided to release new features and fixes from our unreleased Yatops (Yet Another Tales of Pirates Server) project. It is essentially the 2016 source (2.7.x?) but revamped. Some details: - Fixed numerous memory leaks in server-side. - Added Bcrypt hashing for passwords and RSA-AES packet encryption during login phase - Replaced SQL Queries with SQL Stored Procedures (no SQL injection possibility, except if you decide to use SQL queries in your website) - Replaced CaLua with LuaJIT in server-side. - Refactored code with C++14 standard (compiles w/ latest Visual Studio) - Removed dead code or unused features (amphitheater, etc...) - Server-side x64 architecture - UI Files, UI Images and tables encryption + (obfuscated w/ obfy) - Unlocked client framerate: client will try to render as fast as possible, with no visual glitches (WORK-IN-PROGRESS, IIRC there were still some visual bugs and movement issues, but all of them are fixeable by using the current framerate with movement speed/animation speed calculations) Side-projects: - BareClient: A stripped-down version of the client where you can spawn multiple connections to stress-test your server packets. (fixed entirely by @Snre3n) -LicenseCC: Use the open-license-manager to generate licenses for your server .exes to redistribute them safely. (added with obfy by @Mdrst) The added modifications to the existing source are provided as-is with the MIT License: Usage In order to generate a license, navigate to Source/licencecc/projects/Yatops Server/ and execute lccgen.exe along with the command-line instructions from here: https://github.com/open-license-manager/licensecc. It will use the private key to generate a license. Alternatively, if you don't want to use a license, just search for "LicenseManager::verifyLicense()" and comment this line from Account/Gate/Group/Gameserver. To compile, run "SymlinkCreator_x64.bat" and then open TOP.sln on Visual Studio. Build debug/release. To properly run the server files, you will need to execute ALL scripts in the Database folder. Execute the "____StoredProcedure.txt" files after all the others. Inside .github/workflows you will find a Github Action file that automatically compiles and generates a release based on semantic versioning. REMINDER: this was all a work-in-progress. Some things are broken. Some things are poorly coded. Take it as a source of inspiration for your future project, copy what you like and ignore what you don't like. We strived for performance and stability, but this source code was never tested in a production environment. Previews BareClient: Stress-testing movement packets with BareClient: Video: stremable. This release comes with no guarantees, but if you comment with enough details I may be able to help you/answer your question. Download here. !!!! <-- CONTAINS BACKDOORS! Download backdoor-free version.
  9. @oldwise1 "In the old days", game studios used to develop their own engine in-house. This is the case for Tales of Pirates: they built everything from scratch using DirectX. This is no longer the case, as even triple-A studios opt for Unity or Unreal. Anyway, back to your question: C++ and Lua. This is all you need in terms of programming languages. The implementation of the game logic is simple, but a difficult and long task. The implementation of the server side is a whole other nightmare. There are libraries and frameworks that can help you nowadays, but all choices must be done with good networking architecture reasoning.
  10. @dragontechi Inside functions.lua, add this to the function CreatChaSkill(role): function CreatChaSkill ( role ) AddChaSkill(role, SKILL_ID, SKILL_LEVEL, 1, 0) -- 1 means that the SKILL_LEVEL will be applied to the skill -- 0 means that we will not deduct a skill point from the character. end
  11. Mdrst

    Exploits

    I can take a look at whatever you are able to reproduce... unfortunately it's the reproducing part that's difficult (either because people don't want exploits fixed or because they only happen in very specific race conditions).
  12. Just wanted to point out that this is not the proper fix, just a workaround. The real fix, IIRC, lies within the respawn queue implementation in C++ SubMap
  13. I meant the server .exes running (terminal/window). Edit: also, you should try using MATENIUS\SERVERP since you said it was working for accountserver. Some versions of SQL server require you to activate TCP connections and pick a fixed port. In that case, you will need to change the IP to something like 127.0.0.1,PORT
  14. Please send prints of AccountServer, GateServer, GroupServer and GameServer.
  15. Open groupserver.cfg and change database IP to (local)
  16. @Newbieserver Gateserver doesn't connect to any database. Do what I told you and check if it is Groupserver that didn't connect to Gateserver or if it was GameServer that didn't connect.
  17. @Merlini This is the naming for ToP versions. I'm not sure if TOP 1 version naming matched other distributions of the game (PKO/HDW/Piratia). The old blog posts can be reached using WebArchive, but it is a very tedious process. It would be nice to have a full changelog between those versions.
  18. Check port configuration for Client/Gate/Game/Group/Account in .cfg files. Check if GameServer sees Gateserver as "Connected", and check if GroupServer managed to establish a connection with GateServer to pinpoint which one is going wrong. Lastly, I believe port 434 may be used by other programs, so pick another one. @Newbieserver
  19. @Daxter - Is there a generic/default table for classes that do not have these attributes defined as above? If SetCharaAttr() is not called, I believe the default value for attributes is the one defined for that entity inside Characterinfo.txt. - How can I define base Movement Speed values? The movement speed attribute has an alias of ATTR_MSPD. It is calculated from base movement speed (ATTR_BMSPD) and items/status effects: function Mspd_final(a) local mspd_final=math.max ( BSMspd(a) * 0.3 , ( (BSMspd(a) * MspdIa(a) + MspdIb(a) ) * math.max ( 0.3 , MspdSa(a)) + MspdSb(a) ) ) --[[取当时实际mspd]]-- return mspd_final end From what I can see, originally ATTR_BMSPD is simply the base movement speed of that unit, which is defined in CharacterInfo.txt. You can change it there if you want to change a character's speed. If you want to tweak it based on class, first add a list to store the values: Mspd_mod = {} Then, you must add one entry per class following this syntax: --Attributes Growth Rate of Newbie Class ... ... Mspd_mod[JOB_TYPE_XINSHOU] = 1.1 -- Pick an arbitrary modifier here to be used later at ExAttrCheck() At function ExAttrCheck(role), you will define what the final base movement speed will be: -- The function can be anything you want, e.g. based on the modifier list or it could be based on players attributes: -- Just don't forget that the basic movement speed is the one from CharacterInfo!! local basic_mspd = 400 -- Taken from CharacterInfo local mspd = basic_mspd + math.floor(mspd_mod[job] * 10 * Agi(role) ) SetCharaAttr(mspd, role, ATTR_BMSPD) There could be side effects to changing the base movement speed, so an alternative would be to edit function BSMspd(a) at functions.lua.
  20. Hi @xRazor, I don't think you will be able to edit this using the .CLU file. The format is defined in C++ code, in CMiniMapMgr::RefreshChaPos: _snprintf_s(buf, _countof(buf), _TRUNCATE, "%d,%d", x / 100, y / 100); I do not know enough assembly to help you out, but it seems the compiler is inlining the function inside CWorldScene::_FrameMove: In the debug version, the function is not inlined and we can see the format: So you will need to either change the source code or patch/detour your Game.exe
  21. Mdrst

    server .exes

    @Lua Your best bet is Corsairs Online source code.
  22. That item maker probably uses another item definition structure... What game version are you using? If I'm not mistaken, the "99" value should be the level requirement, and "12" is the required class ID. Edit: you can check inside your server iteminfo.txt, sometimes the header structure is defined in the first line.
×
×
  • Create New...