algolia search

Tìm thấy x bài viết trong xms.

[JX-WIN] PHIÊN BẢN TỨ TUYẾT - SHARE SCRIPT GIỚI HẠN SỐ ACCOUNT / IP


Trước khi đọc bài của mình bạn nên hiểu giới hạn theo IP là gì.
Giới hạn theo IP là giới hạn theo địa chỉ IP public (có thể vào canyouseeme.org để xem địa chỉ ip public máy tính của bạn).
Có 2 cách để làm, 1 là dùng iptables (cách này cũng tốt nhưng nó thuộc phạm trù quản trị mạng nên mình không nhắc đến), 2 là dùng script như mình share.
Mình tham gia cộng đồng jx chưa được bao lâu, do là người đang đi làm nên thời gian mình dành cho jx cũng không được quá nhiều. Nên kiến thức còn hạn hẹp.
Script này mình tự mày mò và code. Có gì mọi người cùng cho ý kiến.
Lợi ích:

  • Giới hạn được số account / IP.
  • Nếu đăng nhập quá số account sẽ tự động quay trở lại màn hình đăng nhập.
  • Có thể giới hạn theo ý tưởng. VD như mỗi IP không được đăng nhập quá 2 acc thiên nhẫn, ...
  • Có thể mở giờ không giới hạn như công thành, tống kim, ...
  • Nói chung mọi ý tưởng giới hạn đều có thể thực hiện được
    Hạn chế:
    Chỉ giới hạn được theo IP chứ không phải giới hạn theo PC.

Cách làm như sau:

Bước 1: tạo 1 file hancheip.lua có nội dung như sau:
Code:

IncludeLib("SETTING")
IncludeLib("RELAYLADDER")
IncludeLib("TIMER")
IncludeLib("PARTNER")
Include("\\script\\dailogsys\\dailogsay.lua")
Include("\\script\\activitysys\\functionlib.lua")
Include("\\script\\global\\volamht\\config.lua")
MAX_PLAYER_ON_IP = 6
LIST_IP = {
{"113.190.208.192 ",12,2,},
{"113.23.53.21 ",12,2,},
{"118.70.178.121 ",12,2,},
{"14.177.254.170 ",12,2,},
{"14.167.238.90 ",10,2,},
{"14.164.25.194 ",8,2,},
{"14.169.90.17 ",12,2,},
{"14.176.122.185 ",10,2,},
{"123.28.158.92 ",8,2,},
{"1.54.213.213  ",10,2,},
{"113.188.136.104 ",10,2,},
{"117.5.22.230 ",8,2,},
{"42.112.235.4 ",12,2,},
}
function CheckYourIP(YourIPAddress)
local OldPlayerIndex = PlayerIndex
local TotalPlayer = GetPlayerCount()
local count = 0
local tmpPlayerIndex = 1
local success = 0
local tmpIPAddress
local tmp_max_ip = MAX_PLAYER_ON_IP
local YourFaction = GetFaction()
              while (1)
              do 
              PlayerIndex = tmpPlayerIndex
                  if(GetName() ~= "") then 
                          if (GetTask(TASK_TEMP_ONLINE) == 202) then                --Msg2SubWorld(GetName().." So Sanh ".. GetIP())                
                              tmpIPAddress = lib:Split(GetIP(),":")[1]                
                                  if (tmpIPAddress ==YourIPAddress) then
                                      count = count + 1
                                              for i = 1, getn(LIST_IP) do 
                                              --Msg2Player(YourIPAddress.." "..LIST_IP[i][1]) 
                                                  if YourIPAddress == LIST_IP[i][1] then 
                                                      if(YourFaction == "tianren" and count > LIST_IP[i][3]) then
                                                      OfflineLive(PlayerIndex)
                                                      KickOutAccount(GetAccount())
                                                      end                            --Msg2Player(LIST_IP[i][2])
                                                  tmp_max_ip = LIST_IP[i][2] 
                                                  break 
                                                  end
                                              end
                                                  if (count > tmp_max_ip) then 
                                                          PlayerIndex = OldPlayerIndex
                                                          --Msg2Player("IP cña b¹n ®· ®¨ng nhËp "..tmp_max_ip.." Account råi. B¹n sÏ bÞ kick khái server. Vui lßng liªn hÖ Admin ®Ó ®­îc hç trî. Tr©n Träng!")                        --ScriptProtocol:Echo("/ExitGame") 
                                                          OfflineLive(PlayerIndex)
                                                          KickOutAccount(GetAccount())
                                                          --ExitGame()
                                                  break
                                                  end 
                                  end
                          end
                  success = success + 1
                  end 
                  if(success == TotalPlayer) then
                      break 
                  end
                  tmpPlayerIndex = tmpPlayerIndex + 1
              end
              PlayerIndex = OldPlayerIndex
              Msg2Player("<color=green>X¸c thùc IP thµnh c«ng! IP cña b¹n hiÖn ®· ®¨ng nhËp "..count.." Account.<enter>Mçi IP ®­îc phÐp ®¨ng nhËp tèi ®a "..tmp_max_ip.." Account.<color>")
end
function OnTimer()
local YourIPAddress  = lib:Split(GetIP(),":")[1]    
--Msg2Player("<color=green>TiÕn hµnh x¸c thùc IP. IP Cña b¹n lµ <color>"..YourIPAddress)
Msg2Player("<color=green>TiÕn hµnh x¸c thùc IP. <color>")
CheckYourIP(YourIPAddress)
StopTimer()
end  

Bước 2: Khai báo task tại setting - > timertask.txt
VD: 116 \script\global\volamht\hancheip.lua
Bước 3: thêm 2 dòng này vào file script -> global -> login.lua.
PHP Code:
SetTask(TASK_TEMP_ONLINE, 202)SetTimer( 18 * 1, 116)
Bước 4: Thêm dòng sau vào file ủy thác rời mạng:
PHP Code:
SetTask(TASK_TEMP_ONLINE, 0)
trước dòng sauOfflineLive(PlayerIndex)
Bước 5: tạo file config khai báo biến: TASK_TEMP_ONLINE = 3013 (hoặc bạn có thể tìm chỗ nào mình dùng biến này thay bằng số 3013)

Code mình share có sẵn phần các IP trong list được vượt quá 6 acc / IP, nhưng đổi lại không được đăng nhập quá 2 acc thiên nhẫn.

Done!

Đánh giá bài viết

Thích thì like
[JX-WIN] PHIÊN BẢN TỨ TUYẾT - SHARE SCRIPT GIỚI HẠN SỐ ACCOUNT / IP
5/5 2 votes

Bình luận

Hiển thị bình luận Facebook