PDA

View Full Version : [JX] Cách làm Xếp hạng trên bảng hiển thị chính xác ( không phải hạng ? dâu nha )



bthhhz
07-11-15, 11:23 PM
Như tiêu đề thì mấy bạn đã biết rằng hiện có cái bảng Update của anh cGalaxy đa số các bạn dùng rất nhiều : Nhưng hạn chế của cái update này là nó chỉ SET hạng lên bảng khi người chơi đăng nhập vào game .
Nếu chúng ta giả sử người chơi đăng nhập vào game và trong quá trình chơi cày lên đc n cấp và out ra thì trên bảng hạng vẫn hiển thị cấp khi mà người chơi đăng nhập vào
Nghĩa là số cấp n không được cộng thêm vào
Vì vậy mình cũng nghĩ ra 1 phương pháp là thay vì chúng ta load bảng hạng theo kiểu người chơi phải login thì ta nên làm theo kiểu người chơi phải out game mới có thể load hạng
Ưu điểm : Những người out trước khi chúng ta bảo trì vẫn được cập nhật xếp hạng lên bảng xếp hạng . Và những người chơi còn lại khi chúng ta cập nhật xếp hạng thì sẽ bảo trì để lưu nhân vật lại và như vậy chúng ta sẽ có 1 bảng thứ hạng chính xác 100% mà không bị sai lệch
Mình đã trình bày ở trên và giờ mình sẽ hướng dẫn các bạn làm
1. Tạo 1 file .lua chứa các thông tin như bên dưới

<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
---------------------------------------------thap dai cao thu the gioi -------------------------------------
function tdcttg()
local szName = GetName();
local nValue = GetLevel();
local nLadderId = 10097;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
end
---------------------------------------------thap dai hoang da cao thu the gioi -------------------------------------
function hdcttg()
if GetCamp() == 0 then
local szName = GetName();
local nValue = GetLevel();
local nLadderId = 10098;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
else
end
end
---------------------------------------------mon phai cao thu the gioi -------------------------------------
function mpcttg()
mp = GetFaction()
if mp == "shaolin" then
local szName = GetName();
local nValue = GetLevel();
local nLadderId = 10100;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
elseif mp == "tianwang" then
local szName = GetName();
local nValue = GetLevel();
local nLadderId = 10101;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
elseif mp == "tangmen" then
local szName = GetName();
local nValue = GetLevel();
local nLadderId = 10102;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
elseif mp == "wudu" then
local szName = GetName();
local nValue = GetLevel();
local nLadderId = 10103;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
elseif mp == "emei" then
local szName = GetName();
local nValue = GetLevel();
local nLadderId = 10104;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
elseif mp == "cuiyan" then
local szName = GetName();
local nValue = GetLevel();
local nLadderId = 10105;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
elseif mp == "gaibang" then
local szName = GetName();
local nValue = GetLevel();
local nLadderId = 10106;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
elseif mp == "tianren" then
local szName = GetName();
local nValue = GetLevel();
local nLadderId = 10107;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
elseif mp == "wudang" then
local szName = GetName();
local nValue = GetLevel();
local nLadderId = 10108;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
elseif mp == "kunlun" then
local szName = GetName();
local nValue = GetLevel();
local nLadderId = 10109;
Ladder_NewLadder(nLadderId , szName, nValue, 0);

else
end
end
---------------------------------------------thap dai phu ho -------------------------------------
function tdph()
local szName = GetName();
local nValue = GetCash();
local nLadderId = 10111;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
end
---------------------------------------------hoang da phu ho -------------------------------------
function hdph()
if GetCamp() == 0 then
local szName = GetName();
local nValue = GetCash();
local nLadderId = 10112;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
else

end
end

---------------------------------------------mon phai phu ho -------------------------------------
function mpph()
mp = GetFaction()
if mp == "shaolin" then
local szName = GetName();
local nValue = GetCash();
local nLadderId = 10114;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
elseif mp == "tianwang" then
local szName = GetName();
local nValue = GetCash();
local nLadderId = 10115;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
elseif mp == "tangmen" then
local szName = GetName();
local nValue = GetCash();
local nLadderId = 10116;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
elseif mp == "wudu" then
local szName = GetName();
local nValue = GetCash();
local nLadderId = 10117;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
elseif mp == "emei" then
local szName = GetName();
local nValue = GetCash();
local nLadderId = 10118;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
elseif mp == "cuiyan" then
local szName = GetName();
local nValue = GetCash();
local nLadderId = 10119;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
elseif mp == "gaibang" then
local szName = GetName();
local nValue = GetCash();
local nLadderId = 10120;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
elseif mp == "tianren" then
local szName = GetName();
local nValue = GetCash();
local nLadderId = 10121;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
elseif mp == "wudang" then
local szName = GetName();
local nValue = GetCash();
local nLadderId = 10122;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
elseif mp == "kunlun" then
local szName = GetName();
local nValue = GetCash();
local nLadderId = 10123;
Ladder_NewLadder(nLadderId , szName, nValue, 0);
else

end
end

---------------------------------------------thoat -------------------------------------

Bước 2 : thêm Include File .lua vừa tạo vào file logout.lua trong global
Bước 3 : vào trong function main của file logout.lua và thêm các funciton như sau
ví dụ

function main()
..........................
(mấy cái .... là thông tin cũ của nó và giờ ta thêm 1 số cái mới vào )
--------------xep hang-----------------------

tdcttg()
hdcttg()
mpcttg()
tdph()
hdph()
mpph()

end
rồi như vậy là ta đã xong
Và có nghĩa là khi người chơi Thoát game sẽ thực hiện các lệnh update xếp hạng . không cần phải login lại để dc cập nhật hạng
Hy vọng rằng cái này cũng sẽ giảm được niềm khát khao có 1 bảng xếp hạng chuẩn xác như cái ? . mặc dù chỉ là cái có sẵn nhưng ít ra mình cũng rất có hứng thú với cái xếp hạng này

P/s: Có bạn nào tìm được cách load biến dấu ? xin chỉ giáo cho mọi người cùng biết với nhé. Mình cùng thấy ở con Vạn Sự Thông có cái nWorldRank là quy định xếp hạng theo thứ tự nhưng ko biết gọi biến ntn .Mọi người cùng ngâm nhé

bil4i3n
08-11-15, 03:55 AM
Như này là hông ổn anh ơi, em có làm rồi, nếu muốn xếp hạng chuẩn khi tiến hành bảo trì phải link toàn bộ qua bên S3Relay nhé, nếu không khi bảo trì toàn bộ người chơi bị kick out sẽ không lưu lại bảng xếp hạng vì khi đó GameServer đã tắt, và chỉ có S3RL là còn chạy, vây nên toàn bộ thông tin không đc lưu lại, nếu muốn lưu lại chỉ có thể kíck bằng script mà như vậy thì không chuẩn vì PlayerIndex không phải theo thứ tự của toàn bộ người chơi :)

bthhhz
08-11-15, 06:28 AM
Như này là hông ổn anh ơi, em có làm rồi, nếu muốn xếp hạng chuẩn khi tiến hành bảo trì phải link toàn bộ qua bên S3Relay nhé, nếu không khi bảo trì toàn bộ người chơi bị kick out sẽ không lưu lại bảng xếp hạng vì khi đó GameServer đã tắt, và chỉ có S3RL là còn chạy, vây nên toàn bộ thông tin không đc lưu lại, nếu muốn lưu lại chỉ có thể kíck bằng script mà như vậy thì không chuẩn vì PlayerIndex không phải theo thứ tự của toàn bộ người chơi :)

hồi giờ có ai tắt sv như em . đi tắt gameserver trước không

bil4i3n
08-11-15, 07:01 AM
hồi giờ có ai tắt sv như em . đi tắt gameserver trước không

Em cũng chả biết, trước nay toàn chơi off, nghỉ game là đè đầu cái GameServer ra phang đâu tiên :)), vậy là phải viết lại cái Script xếp hạng của mình rồi :D

likejx
08-11-15, 07:15 AM
Cách này chỉ tính cấp độ không tính kinh nghiệm. Như vậy sẽ không 9 xác đâu
VD . VD01 cấp 190 10% cập nhật trước sẽ top 1, VD02 cấp 190 80% cập nhật sau sẽ top 2

bthhhz
08-11-15, 07:35 AM
Cách này chỉ tính cấp độ không tính kinh nghiệm. Như vậy sẽ không 9 xác đâu
VD . VD01 cấp 190 10% cập nhật trước sẽ top 1, VD02 cấp 190 80% cập nhật sau sẽ top 2

uk bạn à .
có cái xêp hạng ? nó mới tính đầy đủ exp
chứ cái này nó get level mà

mình thấy có hàm GetExp() không biết có phải nó kiểm tra kinh nghiệm ko nhỉ

bil4i3n
08-11-15, 09:41 AM
Cách này chỉ tính cấp độ không tính kinh nghiệm. Như vậy sẽ không 9 xác đâu
VD . VD01 cấp 190 10% cập nhật trước sẽ top 1, VD02 cấp 190 80% cập nhật sau sẽ top 2

Có cách mà Ladder_NewLadder(nLadderId , szName, GetLevel + "Lượng Kinh nghiệm hiện có", 0);
cách này mình thấy là tối ưu nhất :D

nhaodzo
09-11-15, 04:50 PM
Có cách mà Ladder_NewLadder(nLadderId , szName, GetLevel + "Lượng Kinh nghiệm hiện có", 0);
cách này mình thấy là tối ưu nhất :D
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

OsinLove
27-11-15, 01:51 AM
P/s: Có bạn nào tìm được cách load biến dấu ? xin chỉ giáo cho mọi người cùng biết với nhé. Mình cùng thấy ở con Vạn Sự Thông có cái nWorldRank là quy định xếp hạng theo thứ tự nhưng ko biết gọi biến ntn .Mọi người cùng ngâm nhé

Xếp ranks linux: <b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

Load chuẩn 100% xếp được vào cái rank của bác hướng dẫn ở trên luôn :D

bthhhz
27-11-15, 07:06 AM
Xếp ranks linux: <b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

Load chuẩn 100% xếp được vào cái rank của bác hướng dẫn ở trên luôn :D

Không hiểu gì cho lắm !
30 charrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

bil4i3n
27-11-15, 07:27 PM
Xếp ranks linux: <b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

Load chuẩn 100% xếp được vào cái rank của bác hướng dẫn ở trên luôn :D

Ôi, WorldRank, Anh có thể mách nước cho bọn em được không ạ, cảm ơn anh nhiều :x

OsinLove
27-11-15, 07:52 PM
Ôi, WorldRank, Anh có thể mách nước cho bọn em được không ạ, cảm ơn anh nhiều :x

<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

vuduymanh
27-11-15, 08:11 PM
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
bác ơi em ko thấy bác hướng dẫn đâu bác chỉ em mới

btt204
27-11-15, 08:19 PM
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>


Bạn ơi khai thông cho mình với , cảm ơn bạn trước

tranminhdo
27-11-15, 08:48 PM
Có rất nhiều cách để làm xếp hạng như vầy( quan trọng là cách nào chính xác nhất có thể ) ! nhưng mấu chốt để hiển thị được thì các bạn phải biết hook !

bil4i3n
27-11-15, 10:52 PM
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

hi, em đăng bài này xong mới quay ngược lại hỏi anh mà :D, để khi nào rảnh em phang lại xem, chứ cái này em cũng nản nản sao ấy, :)

OsinLove
28-11-15, 12:46 AM
hi, em đăng bài này xong mới quay ngược lại hỏi anh mà :D, để khi nào rảnh em phang lại xem, chứ cái này em cũng nản nản sao ấy, em xin trích dẫn cho anh em vọc nè :x

Inbox thôi mà cần gì show lên đây :-L:-L:-L:-L

btt204
28-11-15, 12:30 PM
Hướng dẫn anh em gợi ý của bạn gì đó đã hướng dẫn .

Ở hành trang f4 có cái chỗ hiển thị tinh lực , tìm cách đưa tinh lực đưa lên f3 . Sao đó hook dll đưa cái tinh lực ở f3 lên lên hạng ?. Nhớ mang máng là vậy

congthanhchien
28-11-15, 12:54 PM
Đưa điểm tinh lực hiển thị lên chỗ Xếp hạng ở F3 thì dễ rồi Chỉnh trong Ui là được. Còn cái hook dll vào thì chịu :))

a1oneclick
28-11-15, 04:55 PM
Đưa điểm tinh lực hiển thị lên chỗ Xếp hạng ở F3 thì dễ rồi Chỉnh trong Ui là được. Còn cái hook dll vào thì chịu :))

Đưa ra sao vậy bác ?
Mình đưa bị lỗi luôn cái thanh máu

libuno
28-11-15, 08:32 PM
bác nào rành lên 1 tut về UI đuy :D

rang_sut
27-12-15, 09:53 PM
Chủ thớt cho mình hỏi có cách nào để xóa bảng xếp hạng cũ ko vậy

bil4i3n
28-12-15, 12:02 AM
Chủ thớt cho mình hỏi có cách nào để xóa bảng xếp hạng cũ ko vậy

Ladder_ClearLadder(<ID Của Hạng cần xóa>)
:) .

rang_sut
28-12-15, 08:42 AM
Ladder_ClearLadder(<ID Của Hạng cần xóa>)
:) .

Ok.thank bạn.
để mình thử


Bạn tham gia clbgamesvn để làm gì ? (gợi ý câu trả lời: hoc hoi dev game)

minhduc_aa
23-02-16, 04:32 PM
Ladder_ClearLadder(<ID Của Hạng cần xóa>)
:) .
Bạn ơi hàm này mình tìm và đặt ở đâu vậy ạ?

Anh em ai có kinh nghiệm chỉ em cách reset lại BXH với, em dùng ver3 thì BXH bị đơ, log in hay log out gì nó đều không cập nhật, đã thử tạo file .lua như hướng dẫn của anh chủ topic nhưng không ăn thua. Có ai có thể team giúp em phát với, em cám ơn ạ.
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b> Hình em nó đây ạ, sau khi em nâng đến 190 level rồi chuyển sinh ở NPC Nam cung nhất thiên thì dính lỗi này.
Đó giờ em cũng tắt secureCRT 3-2-1 trước rồi đến Paysys rồi Relaysys, sau khi đọc bài này lại có hướng tắt game kiểu khác. Anh có thể nói rõ hơn là tắt như thế nào thì đúng ạ. Mong anh em giúp để lại yahoo hay email để em liên lạc ạ.

ztviet
26-02-16, 08:48 AM
bác cho em hỏi. cái lệnh để chèn vào main của file logout.lua như thế nào. em chèn theo như hàm mình lấy đồ ở lể quan lại không thấy động tĩnh gì nhỉ

JXDev
19-08-16, 05:46 PM
Like 30 chả cá bò viên để tét tử xem ntn

prtear2721995
28-11-16, 04:23 PM
Bác Bthhh cho em hỏi với. Em đã tạo 1 file plnv.lua vào add vào logout.lua như code



-------------------------------------------------------------------------
-- FileName : logout.lua
-- Author : lailigao
-- CreateTime : 2005-04-06 23:17:18
-- Desc : Íæ¼ÒµÇ³ö½Å±¾(ÔÚÍ˳öÓÎÏ·»ò� �ç·þÇ°µ÷ÓÃ)
-------------------------------------------------------------------------
CP_TASKID_LOGOUT = 1094 --ÎäÁÖ´ó»áԤѡÈü 0: Òѱ£´æÏà¹ØÈÎÎñ±äÁ¿£» 1£ºÎ´±£´æ

Include("\\script\\task\\tollgate\\messenger\\messenger_lie vegame.lua")
Include("\\script\\event\\storm\\logout.lua") --Storm
Include("\\script\\misc\\vngpromotion\\ipbonus\\ipbonus_2_h ead.lua");
Include("\\script\\global\\playerlist.lua")
Include("\\script\\global\\logout_head.lua")
Include("\\script\\global\\resetboss.lua")
Include("\\script\\gm_tool\\quanly.lua")
Include("\\script\\gm_tool\\qlnv.lua")
Include("\\script\\activitysys\\config\\1008\\extend.lua")

function main()
if IsIPBonus() == 1 then
IpBonus_Close()
end;
SetTask(CP_TASKID_LOGOUT, 0)

for i = 1, getn(TB_LOGOUT_FILEFUN) do
local reg = TB_LOGOUT_FILEFUN[i]
DynamicExecute(reg[1], reg[2], PlayerIndex)
end

local MapId = SubWorldIdx2ID( SubWorld )
if ( MapId >= 387 and MapId <= 395) then
messenger_livegame()
end

pActivity:GiveRose()
tbTop10:UpdateTopList()
tbGM:RemoveInfo(GetName())
storm_logout() --Storm
PlayerList:DelPlayer(PlayerIndex)
tdcttg()
hdcttg()
mpcttg()
tdph()
hdph()
mpph()
end


-- ¿ç·þ½Å±¾
function RemoveExchange()
for i = 1, getn(TB_EXCHANGE_FILEFUN) do
local reg = TB_EXCHANGE_FILEFUN[i]
DynamicExecute(reg[1], reg[2], PlayerIndex)
end
PlayerList:DelPlayer(PlayerIndex)
end


bxh vẫn k có gì :D