Jump to content

Mdrst

Moderators
  • Content Count

    81
  • Joined

  • Last visited

  • Days Won

    9

Posts posted by Mdrst


  1. 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

     


  2. 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.

     

    @Mdrst

     

    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.


  3. 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).
     

     

    • Thanks 1

  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. @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.

    • Thanks 1

  6. 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).


  7. 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


  8. @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.







     

    • Like 1

  9. 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:


    image.png.1231c89cf1344868231112c3290731ba.png

    In the debug version, the function is not inlined and we can see the format:

    image.png.ad72fb78bc5c8bec5d30e175b003d45f.png


    So you will need to either change the source code or patch/detour your Game.exe







     

    • Like 1
×
×
  • Create New...