Jump to content
View in the app

A better way to browse. Learn more.

Shaiya.gg

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

An effort to improve episode 6 support for private servers

Please read everything before you use anything in the repository. The library is designed to be reference material for people that back-engineer the game. You can view the source code here.

 

Thanks:

 

[mention=2]Cups[/mention] for being my inspiration and helping me to improve. I doubt this would exist without your contributions to this community.

[mention=25]joins.dj[/mention] for being a good friend and letting me pick your brain whenever I want.

[mention=26]Garret[/mention] for the Shaiya Essentials project.

[mention=5]cwifo[/mention], [mention=1]Shaco[/mention] and [mention=10]ItsBeno[/mention] for helping me test most of the features.

[mention=39]gualoki[/mention], [mention=17]melihxrist[/mention] and [mention=11]razor[/mention] for reporting critical bugs.

[mention=1]Shaco[/mention] for unpacking the 6.4 PT client.

[mention=35]rn4444[/mention] for testing the libraries and providing excellent feedback.

[mention=51]xarel[/mention] for several helpful bug reports.

 

Update:

 

I'll continue to update the project occasionally, but I'm not interested in adding new features. The issues tab will be disabled. I have a few reliable people who will let me know when something is wrong.

Edited by Bowie

  • Replies 95
  • Views 12.6k
  • Created
  • Last Reply

Top Posters In This Topic

Featured Replies

Thank you much for sharing your knowledge with us! A mere 'thank you' doesn't do justice to how we appreciate it. Your work is truly incredible my friend. Please continue doing the job! (y)
  • 2 weeks later...
  • Author
I just added support for 6 quest rewards. See the wiki for more information.
  • 4 weeks later...

The client and server sections are equally important, so please read everything before you use anything in the repository. The library is designed to be reference material for people that back-engineer the game. It could also be used by servers that advertise earlier episodes, but use an episode 6 client.

 

You can view the source code on GitHub. The primary purpose of the project is to be a replacement for the pet library. I guess we'll see whether or not people decide to make the switch. For all I care, you can use it or lose it. I plan to support the libraries, even if I stop working on the project. If you need help, open a new issue and I will respond as soon as I see your message.

 

Features:

  • Everything pet.dll supports, and more
  • Item durations for pets and costumes
  • Synergies (thanks, Cups)
  • Item mall purchases and sending presents
  • Toggleable skills (e.g. Frenzied Force)
  • Episode 6 quest rewards
  • Supports 6.3 and 6.4 packet structures

Testers:

[mention=5]cwifo[/mention]

[mention=1]Shaco[/mention]

[mention=10]ItsBeno[/mention]

 

Special thanks:

[mention=2]Cups[/mention] for being my inspiration and helping me to improve. I doubt this would exist without your contributions to this community.

[mention=25]joins.dj[/mention] for being a good friend and letting me pick your brain whenever I want.

Hello, sir. How can I support SQL Server 2008 R2

  • Author

Hello, sir. How can I support SQL Server 2008 R2

i don't understand the question. sql server version doesn't matter as far as i know.

  • 1 month later...
Hi, is there posibilities that you guys will work on the mailbox? I have here an EP6.4 client that has a mailbox on it.
  • Author
no. i logged into two servers to sniff the packets, but it was a waste of time. i removed the dummy handler the other day and added a note to the wiki that says mailbox will not be implemented.

Would you mind sharing the sniffers so I will just share the packets with you?

 

PS: My sniffers works, and here is the packet but empty data.

 

SEND>>01 2A 00 00 00 00

RECV>>01 2A 80 03 00 00 00 00 00 00 00

 

I will update this reply with data once I have one. But I really understand that you're not planning to implement it but I will just share it anyway.

Edited by Zhein

  • Author

Would you mind sharing the sniffers so I will just share the packets with you?

 

PS: My sniffers works, and here is the packet but empty data.

 

SEND>>01 2A 00 00 00 00

RECV>>01 2A 80 03 00 00 00 00 00 00 00

 

I will update this reply with data once I have one. But I really understand that you're not planning to implement it but I will just share it anyway.

i appreciate the offer, but if it's all the same to you, i would really like to leave this alone. i'll leave the handler here for anyone that cares to get into this, but i won't accept pull requests for this feature.

 

// packet_mailbox.cpp
#include <util/util.h>
#include "include/main.h"
#include "include/shaiya/include/CUser.h"
#include "include/shaiya/include/SConnection.h"
using namespace shaiya;

namespace packet_mailbox
{
   void handler(CUser* user, uint8_t* packet)
   {
       auto opcode = util::deserialize<uint16_t>(packet, 0);
       
       switch (opcode)
       {
       case 0x2A01:
       {
           break;
       }
       case 0x2A03:
       {
           break;
       }
       case 0x2A04:
       {
           break;
       }
       case 0x2A06:
       {
           break;
       }
       default:
           SConnection::Close(&user->connection.connection, 9, 0);
           break;
       }
   }
}

unsigned u0x474FA5 = 0x474FA5;
unsigned u0x474FFE = 0x474FFE;
void __declspec(naked) naked_0x474FA0()
{
   __asm
   {
       cmp eax,0x2A00
       je case_0x2A00
       // original
       cmp eax,0x3100
       jmp u0x474FA5

       case_0x2A00:
       pushad

       push edi // packet
       push ebx // user
       call packet_mailbox::handler
       add esp,0x8

       popad

       jmp u0x474FFE
   }
}

void hook::packet_mailbox()
{
   // CUser::PacketProcessing
   util::detour((void*)0x474FA0, naked_0x474FA0, 5);
}

Edited by Bowie

  • Author

i plan to end support as of 01/01/2024. the issues tab will be disabled and i'll probably stop responding. until then, i'm gonna update the models and try to tidy things up a bit.

 

edit: i just committed what i hope will be the last version (1.1.5.9). just minor revisions that shouldn't compile much differently than the previous code. see the actions tab to download release builds. the only notable change since v1.1.3.6 is the item duration loop.

 

i have no idea how many people are using this library. if you are or have been, thanks for your support. i hope it's an improvement. i'm gonna disable the issues tab and archive the repository. post in this thread if something is wrong and i'll try to help.

i plan to end support as of 01/01/2024. the issues tab will be disabled and i'll probably stop responding. until then, i'm gonna update the models and try to tidy things up a bit.

 

edit: i just committed what i hope will be the last version (1.1.5.9). just minor revisions that shouldn't compile much differently than the previous code. see the actions tab to download release builds. the only notable change since v1.1.3.6 is the item duration loop.

 

i have no idea how many people are using this library. if you are or have been, thanks for your support. i hope it's an improvement. i'm gonna disable the issues tab and archive the repository. post in this thread if something is wrong and i'll try to help.

Hey, first of all thank you for your project and time. Even if few people use it, it was a great effort and it's highly appreciated.

The files are definitely an improvement but see few use for various reasons:

- Most EP6 CT scripts (for server side) are uncompatible, losing certain features and making the switch less desirable.

This forces people to buy specific systems for EP5, systems that are free and released on the ep6 standard files.

- Minor client issues, like the hp bar bug, or more specifically the problems using the custom game dll.

- And the most important one, most people already have settled on other files (EP7, EP6 shen, EP6 custom and even EP4 custom). This doesn't mean the files are worse or better than them, it's just people usually don't want to make the switch.

With the release of my project (Essentials) i tried to standardize your files for everyone, with partial success since a big portion of the users are using shen1 files instead.

 

It's definitely a brilliant project and i hope it gets more use on the future ☺️

A little help for newbies could be leaving everything already compiled on the repository, since the project it's coming to an end it's better to just offering the files ready for use and avoid compiling issues.

 

I think the only big issue left to solve it's the problem with the custom game and HP bug bar, but even without that the project it's very solid and useful; thank you.

  • Author
i appreciate the feedback. i don't know what else to say at this point.

It's definitely a brilliant project and i hope it gets more use on the future ☺️

A little help for newbies could be leaving everything already compiled on the repository, since the project it's coming to an end it's better to just offering the files ready for use and avoid compiling issues.

 

I think the only big issue left to solve it's the problem with the custom game and HP bug bar, but even without that the project it's very solid and useful; thank you.

Update on this: The issue have been resolved, more context on this post https://forum.shaiya.gg/threads/gm-rerolls-custom-game-dll-help.18/#post-101

Essentials v6, the latest and final version of the project, it's gonna also include the fixed custom game on the default client folder.

  • Author

A little help for newbies could be leaving everything already compiled on the repository, since the project it's coming to an end it's better to just offering the files ready for use and avoid compiling issues.

i added a build action that should run the first day of every month.

  • Author
i just pushed two selection screen packet fixes. i also added a change log. i recommend updating to the latest version.
  • 2 weeks later...

I just added chaotic square support.

Woah, this is great! Thank you [mention=7]Bowie[/mention], you really contributed a lot to this community. Please keep it up

  • Author
i found a modification in dbAgent at address 00407942 that was causing the bugs i tried to fix in v1.2.2.17. the file has been replaced. v1.3.2.20 should resolve all issues with the item mall and filesystem issues with dll import.

Hey, if it's not a big problem, maybe you can also include the client side compiled libraries on the workflows page? For the same reasons as the server side ones.

Since more people are consistently using the files, this can make things a lot easier for them.

  • Author

Hey, if it's not a big problem, maybe you can also include the client side compiled libraries on the workflows page? For the same reasons as the server side ones.

Since more people are consistently using the files, this can make things a lot easier for them.

i'm still hunting a ghost in the client (nothing to worry about), so maybe after that.

  • 1 month later...

[mention=7]Bowie[/mention] [mention=26]Garret[/mention]

 

After some time here I am again. I hope this message find you well.

 

In this opportunity, my question is about a more superficial issue.

 

A few days ago one of the players asked me why when equipping a skin the face of the character was changed by the default face, to which to tell the truth I did not know how to answer so I did the test and indeed it is a "problem" that happens.

 

I'm using the last version of both dlls compiled for an EP6.4 server+client.

 

Is this a known behavior?

 

Regards!

Edited by Nash

Create an account or sign in to comment

Account

Navigation

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.