|
You last visited: Today at 18:29
Advertisement
Changing Grant name
Discussion on Changing Grant name within the SRO Coding Corner forum part of the Silkroad Online category.
08/07/2020, 22:47
|
#1
|
elite*gold: 0
Join Date: Apr 2012
Posts: 263
Received Thanks: 271
|
Changing Grant name
Hello
Can someone help me how grant name changing Through Filter
i want to send this packet via the guild master's
I tried many ways, but the filter still only sends by char guild member
PHP Code:
public void ChangeGrant()
{
Packet name = new Packet(0x7256); //C->S
name.WriteUInt32(12591); // id char Guild member
name.WriteAscii("AnhE101"); // grant name
m_RemoteSecurity.Send(name);
Send(false);
}
|
|
|
08/07/2020, 22:57
|
#2
|
elite*gold: 0
Join Date: Apr 2015
Posts: 116
Received Thanks: 106
|
u need bypass GS for instant update
|
|
|
08/08/2020, 00:39
|
#3
|
elite*gold: 0
Join Date: Aug 2020
Posts: 32
Received Thanks: 21
|
Quote:
Originally Posted by ownkhan
u need bypass GS for instant update
|
Do you mean this?
PHP Code:
void CGObjPC::UpdateGrantName(uint32_t player, char *grantname)
|
|
|
08/08/2020, 10:09
|
#4
|
elite*gold: 100
Join Date: Sep 2017
Posts: 1,109
Received Thanks: 903
|
Quote:
Originally Posted by Chigako
Do you mean this?
PHP Code:
void CGObjPC::UpdateGrantName(uint32_t player, char *grantname)
|
Stop acting like...
If you're not gonna give him a proper answer, then you better not answer.
-
In topic, there you go: (GameServer code)
Code:
push charid; //charid as dword
mov ebx, strptr; //vc80's std::string ptr
mov esi, pcptr; //CGObjPC ptr
call 0x005C7560; //returns short as result code
This is the main function, but it checks if you're the master of the guild, so you don't need that, you need to get deeper.
Code:
push stringptr; //vc80's std::string ptr
push 0x25; //just a constant value, its actually update type since the function we're calling now is guild update
push pcptr; //CGObjPC ptr
mov ecx, charid; //charid as dword
xor edx, edx; //edx is a ptr to something, but u set it null so u're fine
call 0x005C80A0; //guild update
This one is guild update function, doesn't do any checks to get your grant name change rejected. So that should be what we need.
You can turn this little assemblies into an actual member function, like:
Code:
void CGObjPC::SetGrantName(std::string* grantname)
{
if (m_instance)
{
unsigned int charid = m_instance->CharID;
__asm
{
push grantname;
push 0x25;
push this;
mov ecx, charid;
xor edx, edx;
mov eax, 0x005C80A0;
call eax;
}
}
}
Or you can just disable the master member class check here:
Code:
005CFF9A | 3848 3C | cmp byte ptr ds:[eax+3C],cl |
005CFF9D | 0F94C1 | sete cl |
005CFFA0 | 8BC1 | mov eax,ecx |
And then just use original packets  (but that will allow anyone to change the grant name of anyone in his guild to anything he wants)
|
|
|
08/08/2020, 16:43
|
#5
|
elite*gold: 0
Join Date: Apr 2012
Posts: 263
Received Thanks: 271
|
Quote:
Originally Posted by #HB
Stop acting like...
If you're not gonna give him a proper answer, then you better not answer.
-
In topic, there you go: (GameServer code)
Code:
push charid; //charid as dword
mov ebx, strptr; //vc80's std::string ptr
mov esi, pcptr; //CGObjPC ptr
call 0x005C7560; //returns short as result code
This is the main function, but it checks if you're the master of the guild, so you don't need that, you need to get deeper.
Code:
push stringptr; //vc80's std::string ptr
push 0x25; //just a constant value, its actually update type since the function we're calling now is guild update
push pcptr; //CGObjPC ptr
mov ecx, charid; //charid as dword
xor edx, edx; //edx is a ptr to something, but u set it null so u're fine
call 0x005C80A0; //guild update
This one is guild update function, doesn't do any checks to get your grant name change rejected. So that should be what we need.
You can turn this little assemblies into an actual member function, like:
Code:
void CGObjPC::SetGrantName(string05* grantname)
{
if (m_instance)
{
unsigned int charid = m_instance->CharID;
__asm
{
push grantname;
push 0x25;
push this;
mov ecx, charid;
xor edx, edx;
mov eax, 0x005C80A0;
call eax;
}
}
}
Or you can just disable the master member class check here:
Code:
005CFF9A | 3848 3C | cmp byte ptr ds:[eax+3C],cl |
005CFF9D | 0F94C1 | sete cl |
005CFFA0 | 8BC1 | mov eax,ecx |
And then just use original packets  (but that will allow anyone to change the grant name of anyone in his guild to anything he wants)
|
thanks idol , work perfect
|
|
|
08/08/2020, 19:17
|
#6
|
elite*gold: 0
Join Date: Aug 2020
Posts: 32
Received Thanks: 21
|
Quote:
Originally Posted by #HB
Stop acting like...
If you're not gonna give him a proper answer, then you better not answer.
-
In topic, there you go: (GameServer code)
Code:
push charid; //charid as dword
mov ebx, strptr; //vc80's std::string ptr
mov esi, pcptr; //CGObjPC ptr
call 0x005C7560; //returns short as result code
This is the main function, but it checks if you're the master of the guild, so you don't need that, you need to get deeper.
Code:
push stringptr; //vc80's std::string ptr
push 0x25; //just a constant value, its actually update type since the function we're calling now is guild update
push pcptr; //CGObjPC ptr
mov ecx, charid; //charid as dword
xor edx, edx; //edx is a ptr to something, but u set it null so u're fine
call 0x005C80A0; //guild update
This one is guild update function, doesn't do any checks to get your grant name change rejected. So that should be what we need.
You can turn this little assemblies into an actual member function, like:
Code:
void CGObjPC::SetGrantName(string05* grantname)
{
if (m_instance)
{
unsigned int charid = m_instance->CharID;
__asm
{
push grantname;
push 0x25;
push this;
mov ecx, charid;
xor edx, edx;
mov eax, 0x005C80A0;
call eax;
}
}
}
Or you can just disable the master member class check here:
Code:
005CFF9A | 3848 3C | cmp byte ptr ds:[eax+3C],cl |
005CFF9D | 0F94C1 | sete cl |
005CFFA0 | 8BC1 | mov eax,ecx |
And then just use original packets  (but that will allow anyone to change the grant name of anyone in his guild to anything he wants)
|
You have to stop pretending to be smart.  Because you got caught in my trap
|
|
|
08/08/2020, 20:50
|
#7
|
elite*gold: 100
Join Date: Sep 2017
Posts: 1,109
Received Thanks: 903
|
Quote:
Originally Posted by Chigako
You have to stop pretending to be smart.  Because you got caught in my trap 
|
Looks like you've decided to turn to blablabla talk, after feeling embarrassed.
I won't reply anymore, since there's no point of doing so.
|
|
|
Similar Threads
|
Changing Grant name
07/24/2020 - SRO Coding Corner - 3 Replies
Hello
Can someone help me how grant name changing Through Filter
which packets and how it works please :)
|
[Help] Grant Name Block
04/29/2012 - SRO Private Server - 3 Replies
Anyone knows, which .txt I have to edit to unblock swear words / special letters like _:;^ etc. for Grant names?
Would help me a lot.
|
>> Admin Please need Grant Name <<
01/30/2012 - Main - 3 Replies
i want to change my grant name to ‡°•._ĚϚłipśę_.•°‡
please admin!!
and thanks
|
how can i use special characters in grant name?
02/10/2009 - SRO Private Server - 6 Replies
im playing on fembria,
and i saw ppl with "*,^,>,_" those characters,
but when im trying to use them, it says "this name cant be used
because it contains special characters
what to do?
|
All times are GMT +1. The time now is 18:30.
|
|