Jump to content
Sign in to follow this  
Abyss

tutorial [Bài 1 - Anti Hack] Cách tạo dựng hệ thống SA-MP Anti Hack [Health/Armour/Money Hack]

Recommended Posts

sa-mp series.png

Hack là vấn đề nan giải đối với SA-MP, do có quá nhiều bản mod có thể can thiệp sâu vào hệ thống của trò chơi khiến cho việc tạo nên 1 hệ thống bắt hack thật sự rất khó khăn. Đặc biệt là với những máy chủ mới với những scripter thiếu kinh nghiệm thì việc xử lý hack/cheat như là điều không tưởng mà phải phụ thuộc vào những hệ thống được tạo lập sẵn trên các diễn đàn SA-MP ở nước ngoài với hàng loạt những thiết lập mà có thể bạn còn không hiểu nổi.

Vì vậy, tôi quyết định viết lên một series bài viết "TẠO DỰNG HỆ THỐNG SA-MP ANTI HACK" để hướng dẫn các bạn cách để tạo nên một hệ thống Anti Cheat có thể xử lý được hack thường thấy ở các máy chủ tại Việt Nam.

I. Cách nhìn nhận vấn đề và xây dựng hệ thống

Khi bạn gặp 1 người chơi sử dụng hack, hãy vận dụng đầu óc và kinh nghiệm của mình để phân tích chúng, các loại hack thường gặp hiện nay ta có thể liệt kê ra như:

  • Health/Armour Hack
  • Rapid fire
  • Invisible Hack
  • Infinite Run Stamina (Chạy không mệt)
  • Teleport Hack
  • Weapon Hack
  • Money Hack
  • v.v.

Chúng ta cần phải có một mindset (tư duy) nhìn nhận vấn đề một cách rõ ràng và tự đặt vấn đề cho bản thân là cái tệp hack này nó hoạt động như thế nào? Tạm bỏ qua việc bạn tìm hiểu nó can thiệp vào sources game ra sao, hãy nhìn nhận vấn đề đúng trọng tâm và đơn giản. Đừng phức tạp hóa vấn đề lên bởi ngay cả chính tôi, người viết bài này cũng chưa thoát được khỏi vòng luẩn quẩn của việc phức tạp hóa vấn đề quá mức cần thiết.

Nếu bạn gặp Health/Armour Hack, hãy đặt vấn đề ra một cách đơn giản:

"À, cheater tăng được máu, tăng được giáp, tiền mà mình không thể phát hiện ra hình như do mình chưa có đồng bộ chúng"

sau khi đã đặt vấn đề xong, chúng ta đã đi được 80% quãng đường rồi, bởi khi đặt được vấn đề, chúng ta bắt đầu sử dụng tư duy logic của mình để thiết lập nên cách khắc phục vấn đề.

II. Giải thích

Hidden Content

    Give reaction to this post to see the hidden content.

III. Xử lý vấn đề

a) Thiết lập Server-side function

Hãy tạo cho mình một giá trị global để lưu trữ Health/Armour, chúng sẽ được thiết lập giá trị mỗi khi hàm thiết lập máu giáp của bạn được gọi trong máy chủ để lưu trữ giá trị Health/Armour của nhân vật.

new Float:Player_Health[MAX_PLAYERS]; // Đặt ở bất kỳ đâu trong gamemode trước khi define stock SV_SetPlayyerHealth

stock SV_SetPlayerHealth(playerrid, Float:health)
{
	Player_Health[playerid] = health;
	SetPlayerHealth(playerid, health);
}

và thay thế toàn bộ hàm SetPlayerHealth thành SV_SetPlayerHealth trong gamemode của bạn để hoàn tất việc thiết lập server-side function.

Sau khi lưu trữ được thông tin Health/Armour, ta sẽ tiến hành đối chiếu chúng nếu như có sự thay đổi về Health/Armour của nhân vật, cách để d đối chiếu thì ta dùng một vòng lặp sự kiện bằng  SetTimer/SetTimerEx hoặc OnPlayerUpdate. Ở đây là Health/Armour, ta nên dùng OnPlayerUpdate thay vì SetTimer/SetTimerEx bởi tốc độ xử lý của chúng, tuy nhiên, không nên đặt các đoạn script xử lý các tác vụ nặng trong OnPlayerUpdate bởi nó gọi 30 lần/1s, điều này sẽ khiến máy chủ của bạn bị chậm đi.

public OnPlayerUpdate(playerid)
{
	new Float:health; // Tạo biến local để lưu trữ thông tin Health sau khi lấy
	GetPlayerHealth(playerid, health); // Lấy thông tin Health

	if(health < Player_Health[playerid]) Player_Health[playerid] = health;
	else SetPlayerHealth(playerid, Player_Health[playerid]);
}

a) Giải thích 1:

if(health < Player_Health[playerid]) Player_Health[playerid] = health;

Hidden Content

    Give reaction to this post to see the hidden content.

b) Giải thích 2:

else SetPlayerHealth(playerid, Player_Health[playerid]);

Hidden Content

    Give reaction to this post to see the hidden content.

Bạn cũng có thể sử dụng script trên để áp dụng với Armour/Money Hack bằng việc thay đổi hàm xử lý bên trong chúng

IV. Kết

Với bài học ngày hôm nay, tôi đã hướng dẫn các bạn những bước cơ bản ban đầu và quan trọng nhất đối với việc xử lý hack/cheat. Các vấn đề này thực tế rất đơn giản, chỉ cần chúng ta chịu khó sử dụng phương pháp "Thử và sai" ta sẽ tìm ra được cách giải quyết tối ưu nhất. Để bài học đạt được hiệu quả tốt nhất, tôi sẽ đưa cho các bạn 1 vấn đề nhỏ:

Tạo ra hệ thống Anti Health Hack nhưng vẫn cho phép sử dụng các bình Sprunk trong game để hồi máu

Các bạn hãy vận dụng những kiến thức tôi đã chia sẻ phía trên để thực hiện và comment chúng ở phía dưới bài viết để cùng thảo luận xem script của bạn đã đúng hay chưa nhé.

  • Like 15
  • Thanks 6

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...