-
Content Count
81 -
Joined
-
Last visited
-
Days Won
9
Posts posted by Mdrst
-
-
On 2/12/2024 at 2:22 AM, Ximboliex said:Have a litle trouble whit guild,
When I create the guild it does not register me as a leader and indicates that the guild has no people and when I change the map or relog or switch character the guild disappears as if it had never been created, any help or suggestions?
I have resolved everything else, such as the items not showing attributes and fairies, the acc and pr registration in the stats window, etc.
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.
-
8 hours ago, YeYeJuice said:Hi bro, were you able to find out the exact steps to have all the client and server files working? I would like to test it with some friends.
Would any DB work with these files?
You must use the SQL files provided.
-
@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!- 2
-
14 hours ago, kyleflow said:Anyone making guide for this? Never work with CO
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).
- 1
-
@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.
-
@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)
-
@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).
-
-
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:
QuoteCopyright 2024, RAT Studio
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
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.- 5
- 5
-
@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.- 1
-
@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
-
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).
-
On 11/20/2023 at 7:53 PM, Andy said:its easy, just fix, edit the ss magma skill, sea thunder voy skill and voy rb skill. the bug happens because you re able to use those skill before their effects gone. and this breaks the respaw cycle
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
-
-
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 -
Please send prints of AccountServer, GateServer, GroupServer and GameServer.
-
2 minutes ago, Newbieserver said:Account server and gamesaver conect very well.
the group server after some minute, he show me a error like this.
and i dont understand why, y made the log in user with permission.
Open groupserver.cfg and change database IP to (local)
-
@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.
-
@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.
- 3
-
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 -
-
@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.
- 1
-
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
- 1
-
PKOdev.NET Mods
in Paid services & Requests
Posted · Report reply
Greetings!
I'll start taking paid requests to develop mods that will run with @V3ct0r's mod loader . If your executable is not supported by his mod but you have a Program Database file (e.g. Game.pdb, GameServer.pdb), please reach out and I can probably patch it for you.
Pricing will be done hourly, with discount rates for the first three mods. The full price includes the source code.
Please reach out at my Discord: mdrst