Game


You are not connected. Please login or register

[Hướng dẫn + share] tool DDTANK - GM HELPER Chat version

Go down  Message [Page 1 of 1]

Fenix

Fenix
Game Master
Game Master
Link Tải: [You must be registered and logged in to see this link.]
Pass giải nén: (&*^UGIHOJPI&^UE

Đây là tool giúp cho các admin có thể chat với người chơi, thông báo, kích user , banned user, vì nó mình mất hết 1 ngày [Hướng dẫn + share] tool DDTANK - GM HELPER Chat version 2

Đây là link hướng dẫn + demo cái tool này
[You must be registered and logged in to see this link.]
 
nội dung file txt trong clip


Code:
Xin chào, mình là Trung, hôm wa mình có lên clbgamesvn xem thì thấy box gunny có 1 bạn pro nào đấy bảo sắp share cái tool banned, thấy chức năng thì cũng hay nhưng đến thứ 5 tuần sau mới share nên mình định bắt chước làm 1 cái cho nó oách :))

Tool của mình chuẩn bị làm đây nó không chạy trên web mà tác động trực tiếp vào Server nên các bạn cần có source để sửa, phiên bản trong clip này mình dùng là 3.0, nhưng mình nghĩ chắc gunny II cũng thế

Thôi giờ chúng ta chiến nào

À nói trước 1 cái là bác nào muốn xem thành quả trước để lấy tinh thần thì tua clip về cuối để xem nhé :))

Để tránh mất time của mọi người mình sẽ paste cái code mình đã viết sẵn vào đây cho các bạn


Đầu tiên mở solution lên, tìm project Game.Servive\Action\ConsoleStart.cs

Chính là file này đây

Các bạn tìm từ khóa case "nickname":

bên dưới có chữ break đấy, paste đoạn code này sau chữ break đấy

case "guitin":                           
                            Console.WriteLine("Plese enter the nickname");                           
                            string _nickname = Console.ReadLine();
                            Console.WriteLine("Please enter your Messenger");
                            string mes = ReadInputLineAsUTF8();
                            WorldMgr.SendMessenger(_nickname,mes);
                            break;
                        case "thongbao":
                            Console.WriteLine("Please enter your notice");
                            string notice = ReadInputLineAsUTF8();
                            WorldMgr.SendNotice(notice);
                            break;
                        case "kickuser":
                            Console.WriteLine("Please enter kick Nickname");
                            string kicknickname = Console.ReadLine();
                            Console.WriteLine("Do you want to banned user?");
                            string kick = Console.ReadLine();
                            Console.WriteLine("Messenger to user");
                            string meskick = ReadInputLineAsUTF8();
                            WorldMgr.Kickuser(kicknickname, kick, meskick);
                            break;


Đoạn code trên là để thêm những tính năng gửi tin, banned, thông báo

Sau khi đã xử lý xong file này, các bạn tìm tiếp file cần sửa bằng cách làm như mình nhé, nó sẽ dẫn các bạn đến file WorldMrg.cs.

Tìm từ khóa: public static string DisconnectPlayerByName(string nickName)

Sau đó các bạn paste đoạn code sau đây vào bên dưới hàm DisconnectPlayerByName nhé

public static string SendMessenger(string nickName, string mes)
        {
            foreach (GamePlayer client in GetAllPlayers())
            {
                if (client.PlayerCharacter.NickName == nickName)
                {
                    client.SendMessage("Admin: "+ mes);
                    return "OK";
                }
            }
            return (nickName + " is not online!");
        }

        public static string SendNotice(string mes)
        {
            foreach (GamePlayer client in GetAllPlayers())
            {
                client.SendMessage("Thông báo: " + mes);
               
            }
            return ("OK, Notce sended");
        }
        public static string Kickuser(string nickname, string kick, string  mes)
        {
            string thongbao = null;
            foreach (GamePlayer client in GetAllPlayers())
            {
                if (client.PlayerCharacter.NickName == nickname)
                {
                    [You must be registered and logged in to see this link.] báo: " + mes);
                    if (kick == "Dung")
                    {
                        PlayerBussiness db = new PlayerBussiness();
                        db.banned(nickname);
                        thongbao = "Bạn đã bị khóa tài khoản với lý do: " + mes + " ,tự động thoát sau 10 giây nữa";
                    }
                    else
                    {
                        thongbao = "Bạn đã bị kích bởi Admin với lý do: " + mes + " ,tự động thoát sau 10 giây nữa";
                    }
                    client.SendMessage(thongbao);
                    Thread.Sleep(10000);
                    client.Disconnect();
                    return ("OK, Notce sended");
                }
            }
            return (nickname + " is not online!");
        }


Vậy là xong 2 file, đến file cuối cùng, các bạn tìm trong Bussiness\PlayerBussiness.cs, thêm hàm banned sau vào cuối cùng, nhìn theo clip nhé


        public bool banned(string nickname)
        {
            SqlParameter[] para = new SqlParameter[1];
            para[0] = new SqlParameter("@Nickname", nickname);
            db.RunProcedure("SP_Banned", para);
            return true;
        }

Vậy là xong phần source
Đến SQL, các bạn tạo 1 store mới với tên SP_Banned với nội dung như sau

CREATE PROCEDURE [dbo].[SP_Banned]
@Nickname nvarchar(50)

AS

UPDATE Sys_Users_Detail SET IsExist = 'False' where NickName = @NickName

Nhớ là Db_Tank nhé, sau đó các bạn chạy lệnh này, tất cả đã hoàn tất.

Giờ thử tool thôi nào :))


Đây chính là giao diện tool. Có 3 chức năng chính thôi, mình test thử nhé

sr nãy mình test cái banned chưa mở acc đó ra @@

Đầu tiên xem cái gửi tin nhắn riêng nhé, các bạn gửi theo tên nhân vât
Qua rồi nè :))

Eo sao máy lag thế @@..

Tiếp theo là chức năng thông báo toàn foum, thường thì các admin nhà ta thông báo = Loa lớn đúng không, như thế mem nó pm riêng trả lời mệt thất mợ @@

Hoạt động bình thường nhé :))


Cuối cùng là cái lụm tiền đây, giúp admin kích ngay User mình ghét ra ngoài

sau khi thực hiện thì người chơi sẽ nhận dc thông báo
Bạn đã bị kích bởi Admin với lý do: xem phim xxx làm lag Server ,tự động thoát sau 10 giây nữa
với lý do là cái mà bạn gõ vào
thế là dis ra ngoài


Nếu acc này vi phạm cái gì đó nghiêm trọng mà các bạn muốn cho ra đi vĩnh viễn thì tick vào ô Khóa acc?

Bạn đã bị khóa tài khoản với lý do: Banned vinh vien, chuc ra di vui ve ,tự động thoát sau 10 giây nữa

Vậy là acc này ra đi rồi đấy

Như vậy là xong nhé, à sẵn các bạn rảnh vào Server mình chơi theo địa chỉ http://localhost/Flash3 =]], MOD đừng chém mình vì quảng cáo Server nhé.


Chống chỉ định: không khuyến khích dùng mở Server online, sao lưu tất cả những thứ cần thiết trước khi thực hiện, mọi lỗi phát sinh mình không chịu trách nhiệm

Nick liên hệ: mariaozawa_td :))
Chúc các bạn thành công.



Cái này trong file ConsoleStart.cs mình wên đoạn code phía trên

Các bạn mở file ConsoleStart.cs lên tìm



Code:
public class ConsoleStart : IAction
    {



Thêm bên dưới


Code:
[DllImport("kernel32.dll", SetLastError = true)]
        static extern IntPtr GetStdHandle(int nStdHandle);

        [DllImport("kernel32.dll")]
        static extern bool ReadConsoleW(IntPtr hConsoleInput, [Out] byte[]
            lpBuffer, uint nNumberOfCharsToRead, out uint lpNumberOfCharsRead,
            IntPtr lpReserved);

        public static IntPtr GetWin32InputHandle()
        {
            const int STD_INPUT_HANDLE = -10;
            IntPtr inHandle = GetStdHandle(STD_INPUT_HANDLE);
            return inHandle;
        }

        public static string ReadInputLineAsUTF8()
        {
            //I can't seem to find a way not to hardcode the size here???
            const int bufferSize = 1024 * 2;
            byte[] buffer = new byte[bufferSize];

            uint charsRead = 0;
            ReadConsoleW(GetWin32InputHandle(), buffer, bufferSize, out charsRead, (IntPtr)0);

            //Make new array of data read
            byte[] buffer2 = new byte[charsRead * 2];
            for (int i = 0; i < charsRead * 2; i++)
            {
                buffer2[i] = buffer[i];
            }

            //Convert string to UTF-8
            return Encoding.UTF8.GetString(Encoding.Convert(Encoding.  Unicode, Encoding.UTF8, buffer2)).Trim();
        }



Tool có thể sẽ không hoạt động ở 1 số máy [Hướng dẫn + share] tool DDTANK - GM HELPER Chat version 2

http://www.devgame.ga

Back to top  Message [Page 1 of 1]

Permissions in this forum:
You cannot reply to topics in this forum