Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Mdrst last won the day on August 5

Mdrst had the most liked content!

Community Reputation

25 Neutral

About Mdrst

  • Rank

Recent Profile Visitors

1,260 profile views
  1. @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.
  2. @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
  3. Mdrst


    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).
  4. 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
  5. 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,PORT
  6. Please send prints of AccountServer, GateServer, GroupServer and GameServer.
  7. Open groupserver.cfg and change database IP to (local)
  8. @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.
  9. @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.
  10. 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
  11. @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.
  12. 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
  13. Mdrst

    server .exes

    @Lua Your best bet is Corsairs Online source code.
  • Create New...