GM Commands in filters

01/05/2018 05:04 #HB#1
Hey guys,

I can find the notice packet in the filter different from the packet in bots like auto notice, and when I tried the packet of the bots notice in the filter, I get a crash immediately when I send the notice.. so what is the packet of the GM commands in the filters like : totown or smth?!

Notice : I know that the filter isn't a GM to use warp or movetouser or smth like that.. :cool:
01/05/2018 10:07 KingDollar#2
i can't understand what you mean really
but anyway since filter is just handling users in sessions , so users must have gm authorization to use gm command

i have done this already on NaviFilter long time ago
it will require some reverse engineering stuff on game server in order to remove gm command authorization
then you should make anti cheat in filter side
01/05/2018 12:21 #HB#3
O.O

It looks kinda hard, but nvm...
I wanted to ask something else, I was working on disable skills by region, I declared region from teleporting or moving and it worked perfectly but when I use a skill I blocks me and tells me the notice but while the moving I use the skill and when I stop it blocks me...
I think I should stop the movement to declare the region.. I know its looks hard to understand, I will show you a video if you didn't understand
01/05/2018 21:52 KingDollar#4
it depends on the way that you read region with it
you could read character region from db
or just parse b021 packet with the right way
01/06/2018 05:05 #HB#5
Well, I read the region with movement packet : 0x9001

Code:
if (_pck.Opcode == 0xB021 && (FilterMain.CURRENT_REGION))
                                {
                                    try
                                    {
                                        _pck.Lock(); // Lock
                                        UInt32 Target = _pck.ReadUInt32(); // Unique ID from player

                                        // Check if target == this.unique_ID
                                        if (Target == this.Unique_ID)
                                        {
                                            byte unk = _pck.ReadUInt8();
                                            short Region = _pck.ReadInt16();
                                            int RegionL = Region.ToString().Length;

                                            // Make sure region is 5 numbers.
                                            if(RegionL == 5 && _pck.GetBytes().Length == 24) {
                                                // Register good.
                                                this.selfWalkLatestRegion = Region;
                                                this.ReadCurrentRegion = Region;
                                            }
                                            else
                                            {
                                                // Register false.
                                                this.selfWalkLatestRegion = -1;
                                                this.ReadCurrentRegion = -1;
                                            }

                                            /*Console.WriteLine("Current length: " + RegionL);
                                            Console.WriteLine("Current bytes: " + _pck.GetBytes().Length);
                                            Console.WriteLine("Current region: " + Region);
                                            */
                                        }
                                    }
                                    catch { }
                                }
*I added this : ReadCurrentRegion
01/06/2018 18:49 KingDollar#6
Quote:
Originally Posted by #HB View Post
Well, I read the region with movement packet : 0x9001

Code:
if (_pck.Opcode == 0xB021 && (FilterMain.CURRENT_REGION))
                                {
                                    try
                                    {
                                        _pck.Lock(); // Lock
                                        UInt32 Target = _pck.ReadUInt32(); // Unique ID from player

                                        // Check if target == this.unique_ID
                                        if (Target == this.Unique_ID)
                                        {
                                            byte unk = _pck.ReadUInt8();
                                            short Region = _pck.ReadInt16();
                                            int RegionL = Region.ToString().Length;

                                            // Make sure region is 5 numbers.
                                            if(RegionL == 5 && _pck.GetBytes().Length == 24) {
                                                // Register good.
                                                this.selfWalkLatestRegion = Region;
                                                this.ReadCurrentRegion = Region;
                                            }
                                            else
                                            {
                                                // Register false.
                                                this.selfWalkLatestRegion = -1;
                                                this.ReadCurrentRegion = -1;
                                            }

                                            /*Console.WriteLine("Current length: " + RegionL);
                                            Console.WriteLine("Current bytes: " + _pck.GetBytes().Length);
                                            Console.WriteLine("Current region: " + Region);
                                            */
                                        }
                                    }
                                    catch { }
                                }
*I added this : ReadCurrentRegion

this not the right parse
but anyway
byte unk = _pck.ReadUInt8(); // this byte is bool HasDestination - if 0 == sky move else !skymove

so just check if hasdestination read region
else don't
01/06/2018 21:42 #HB#7
You mean like this!?

*Sorry for being stupid :D
Code:
byte unk = _pck.ReadUInt8(); // this byte is bool HasDestination - if 0 == sky move else !skymove
                                                short Region = _pck.ReadInt16();
                                                int RegionL = Region.ToString().Length;

                                                if (unk != 0)
                                                {
                                                    // Make sure region is 5 numbers.
                                                    if (RegionL == 5 && _pck.GetBytes().Length == 24)
                                                    {
                                                        // Register good.
                                                        this.selfWalkLatestRegion = Region;
                                                        this.ReadCurrentRegion = Region;
                                                    }
                                                    else
                                                    {
                                                        // Register false.
                                                        this.selfWalkLatestRegion = -1;
                                                        this.ReadCurrentRegion = -1;
                                                    }
                                                }
01/16/2018 15:16 KingDollar#8
Quote:
Originally Posted by #HB View Post
You mean like this!?

*Sorry for being stupid :D
Code:
byte unk = _pck.ReadUInt8(); // this byte is bool HasDestination - if 0 == sky move else !skymove
                                                short Region = _pck.ReadInt16();
                                                int RegionL = Region.ToString().Length;

                                                if (unk != 0)
                                                {
                                                    // Make sure region is 5 numbers.
                                                    if (RegionL == 5 && _pck.GetBytes().Length == 24)
                                                    {
                                                        // Register good.
                                                        this.selfWalkLatestRegion = Region;
                                                        this.ReadCurrentRegion = Region;
                                                    }
                                                    else
                                                    {
                                                        // Register false.
                                                        this.selfWalkLatestRegion = -1;
                                                        this.ReadCurrentRegion = -1;
                                                    }
                                                }
well ye i think it could work