Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Silkroad Online > SRO Coding Corner
You last visited: Today at 23:17

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[R\E] Accessing Outer Interface's Messages & Doing Mini-Sounds

Discussion on [R\E] Accessing Outer Interface's Messages & Doing Mini-Sounds within the SRO Coding Corner forum part of the Silkroad Online category.

Reply
 
Old   #1
 
#HB's Avatar
 
elite*gold: 100
Join Date: Sep 2017
Posts: 1,110
Received Thanks: 907
[R\E] Accessing Outer Interface's Messages & Doing Mini-Sounds

Hey folks,

I've started doing reverse engineering stuff a while ago, I've done some things that I can share with you.




A video if you want to hear the sound:

(sorry for that weird noise, also the sh** quality)


Let's start with the outer interface side.

CPSOuterInterface, Functions To Use:
Code:
class CPSOuterInterface
{
public:
	static CPSOuterInterface* GetOuterInterface();
	void WriteMessage(CPSOuterInterface* obj, const wchar_t* message, unsigned int color);
};
A single function does show the messages, with the 2 arguments that most of us only need, the message and the color.


CPSOuterInterface, Functions, Inner Code:

We can find these by tracing anything in-game messages that might represent to this function. I used the normal login message, "Requesting User Confirmation". After we find the function, we can see 2 arguments pushed which are the message and the color and "ECX" touched right before the call.

Since "this" memory address is dynamic, we have to find a pointer/function to get to it. There's already a pointer for it. And here comes the Cheat Engine. We found it, it's "0xEECEA4".

Now we can write a clean code:
Code:
CPSOuterInterface* CPSOuterInterface::GetOuterInterface()
{
	return *reinterpret_cast<CPSOuterInterface**>(0xEECEA4);
}

void CPSOuterInterface::WriteMessage(const wchar_t* message, unsigned int color)
{
	reinterpret_cast<void(__thiscall*)(CPSOuterInterface*, const wchar_t*, unsigned int)>(0x008613B0)(this, message, color);
}
That we can implement easily just like:
Code:
CPSOuterInterface::GetOuterInterface()->WriteMessage(L"Hello World!", D3DCOLOR_ARGB(255, 76, 255, 0));


Let's finish with the sound body.

CGEffSoundBody, Functions To Use:
Code:
class CGEffSoundBody
{
public:
	CGEffSoundBody* GetSoundBody();
	void DoSound(CGEffSoundBody* obj, const wchar_t* code);
};
A single function too does sounds, with the only 1 argument.

CGEffSoundBody, Functions, Inner Code:

Same thing as I said above since both functions are quite easy to find. Tracing, Debugging, Analyzing, Coding. "this" is dynamic, Cheat Engine, pointer found, coding time.
Code:
CGEffSoundBody* CGEffSoundBody::GetSoundBody()
{
	CGEffSoundBody* body = *reinterpret_cast<CGEffSoundBody**>(0x0110AAD8);
	return body;
}

void CGEffSoundBody::DoSound(const wchar_t* code)
{
	reinterpret_cast<void(__thiscall*)(CGEffSoundBody*, const wchar_t*)>(0x00A72D40)(this, code);
}
The function requires a sound code, you can see a bunch of codes with a debugger by tracing this function's calls. For example, "snd_quest" is the one that you hear when select your character. So, we can do this:
Code:
CGEffSoundBody::GetSoundBody()->DoSound(L"snd_quest");

License:
We're hacking and talking about license?!


Thanks:
  • florian0 (unfortunately there's no love emojis here)

Finalization:
Hope you won't just copy paste this into your project files, try to understand how things go. Good luck.
#HB is offline  
Thanks
4 Users
Old 01/20/2019, 06:46   #2
 
elite*gold: 0
Join Date: Jan 2019
Posts: 8
Received Thanks: 9
good work
Zyeno is offline  
Old 01/20/2019, 11:17   #3
 
elite*gold: 0
Join Date: Jan 2011
Posts: 146
Received Thanks: 85
Why ?

paradise1992 is offline  
Old 01/20/2019, 14:00   #4
 
#HB's Avatar
 
elite*gold: 100
Join Date: Sep 2017
Posts: 1,110
Received Thanks: 907
Quote:
Originally Posted by paradise1992 View Post
Why ?

Your image isn't working BTW.
#HB is offline  
Old 10/24/2019, 00:11   #5
 
#HB's Avatar
 
elite*gold: 100
Join Date: Sep 2017
Posts: 1,110
Received Thanks: 907
Quote:
Originally Posted by Frukio92 View Post
@



how i can fix it?

incomplete shared
Yeah, add this func in CPSOuterInterface, I forgot to add in the topic:
Code:
static CPSOuterInterface* GetOuterInterface();
#HB is offline  
Old 10/24/2019, 11:24   #6
 
#HB's Avatar
 
elite*gold: 100
Join Date: Sep 2017
Posts: 1,110
Received Thanks: 907
Quote:
Originally Posted by Frukio92 View Post
@ Which trigger packet should it work for?

i was try this packet A106 but i dont see any green message

mini sound function = working

interface msg = not working

First, you don't have to mention me each time you reply ;D

And about your topic, you can trigger it on login packet sending, just look for this string "UIO_MSG_ERROR_CITATION" and hook the beginning of the func that this string is existing at. You can also hook a couple of places in CPSTitle, like after creation.
#HB is offline  
Old 11/09/2019, 00:05   #7
 
elite*gold: 0
Join Date: Mar 2010
Posts: 568
Received Thanks: 228
Hello #HB

You can add Functions change color to version and change messages

Laag#82 is offline  
Old 11/09/2019, 01:41   #8
 
#HB's Avatar
 
elite*gold: 100
Join Date: Sep 2017
Posts: 1,110
Received Thanks: 907
Quote:
Originally Posted by khaleed2010 View Post
Hello #HB

You can add Functions change color to version and change messages
Well, honestly I don't have much time lately, I'll see if I had some free time.

Afair, contains that though.
#HB is offline  
Reply


Similar Threads Similar Threads
have problem in outer
10/02/2014 - SRO Guides & Templates - 2 Replies
hello i make a full design on photoshop for outer but when going to ( server change_window) to convert to dds can't a change it !! http://www.elitepvpers.com/forum/attachment.php?at tachmentid=220661 http://www.elitepvpers.com/forum/attachment.php?at tachmentid=220662 any one can help me ? or give me new outer !! :)
Outer Galaxies
11/23/2012 - Browsergames - 0 Replies
Anyone have a mining bot that they would be willing to share with me for Outer galaxies? All i need it for is to fly to a system, mine up some resource and ferry it back to the nearest station and repeat :3 Much thanks <3
3 outer
02/14/2010 - Off Topic - 11 Replies
***** Hand History for Game 38977399225 ***** (Poker Stars) $2.00 USD NL Texas Hold'em - Saturday, January 30, 10:43:09 ET 2010 Table Bussolini III (Real Money) Seat 4 is the button Seat 1: PAVI74 ( $5.09 USD ) Seat 2: ICH ( $2.00 USD ) Seat 3: xan23tus ( $4.92 USD ) Seat 4: leoavila ( $1.06 USD ) Seat 5: mrnicebird ( $0.96 USD ) Seat 6: chuy1609188 ( $1.51 USD )



All times are GMT +1. The time now is 23:18.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.