Kết quả 1 đến 10 của 10
-
10-06-19, 08:12 PM #1
- Ngày tham gia
- Jun 2006
- Đang ở
- Funabashi, Chiba, Japan
- Bài viết
- 544
- Thanks
- 410
- Thanked 300 Times in 82 Posts
LINUX - Tạo 1 hệ thống Lưu điểm kinh nghiệm, giao dịch điểm KN - Off tự sướng
- Vẫn câu quen thuộc : Phục vụ chơi off tự sung sướng nhé.
- Vì chơi off nên có khá nhiều vấn đề sung sứong. Đơn cử như việc sẽ setup để làm sao điểm kinh nghiệm đạt được nhiều nhiều. Mà cắm chuột nó lên kịch 200 rồi nó phí hê hê. Cho nên mình nghĩ tới việc lưu lại điểm kinh nghiệm ra 1 file nào đó để xài dần.
- Điểm kinh nghiệm được lưu theo dạng tạo bảng lưu vào 1 file LUA chứ không dùng TASK hay PARAM cho nên bạn lưu vài trăm triệu ngàn tỷ điểm cũng được.
- Vì điểm kinh nghiệm được lưu nên bạn hoàn toàn có thể TRADE giao dịch với các nhân vật khác. Vui hầy.
Bước 1: Tạo 1 "Thư Viện" hàm.
- Tạo 1 file mới đặt tên funclib.lua (Để ở đâu trong thư mục script của bạn thì tuỳ)
- Mình sẽ viết các câu lệnh ví dụ như SaveExp, GetSaveExp, NewSaveExp.......Để các file khác sẽ Include đến file funclib.lua này mà sử dụng.
- Tại sao nên tạo funclib.lua.
- Chắc các bạn quen với những câu hàm như GetLevel(), GetCash(), GetName() rồi đúng không, các câu lệnh này thường xuyên được sử dụng. Nó có sẵn trong thư viện hàm của server rồi.
- Nếu bạn không tạo 1 "thư viện" thì mỗi lần muốn sử dụng hàm GetSaveExp() (Kiểm tra số điểm kinh nghiệm đã lưu lại) bạn lại phải viết lại (Định nghĩa lại) cả hàm thì nó mới hiểu. Và như vậy thì cực kỳ dài dòng rối rắm
- Vậy hãy định nghĩa nó 1 lần vào funclib.lua xong mỗi lần muốn dùng hàm ở 1 file LUA khác hãy Include đến funclib.lua và dùng hàm gọn gàng đơn giản khỏi viết lại cả 1 đoạn dài.
- Các hàm cần tạo mới
Hàm Kiểm Tra
- CheckSaveExp() : Kiểm tra xem nhân vật đang sử dụng đã từng lưu điểm kinh nghiệm chưa, nếu chưa từng lưu thì hàm trả về NIL
- GetSaveExp() : Kiểm tra xem nhân vật đã lưu bao nhiêu điểm kinh nghiệm
Hàm Lưu Kinh Nghiệm Vào
- PlayerSaveExp() : Hàm này sẽ rút hết điểm kinh nghiệm trên người nhân vật lưu vào dữ liệu. Mình không viết code đoạn nếu điểm kinh nghiệm trên người đang ÂM vì mình chơi 1 mình chả đánh nhau với ai, còn nếu bạn có nhu cầu thì bạn tự xử nhé
- NewSaveExp() : Hàm sẽ tạo 1 data mới dành cho những nhân vật chưa từng lưu điểm kinh nghiệm bao giờ
- AddSaveExp(nCount) : Lưu nCount điểm kinh nghiệm vào dữ liệu. Hàm này có thể dùng khi bạn ăn event chẳng hạn. Không muốn điểm ngấm vào nhân vật mà lưu luôn vào data thì sử dụng hàm này. Ví dụ ăn cái bánh event được 5.000.000 KN thì dùng AddSaveExp(5000000)
Hàm Lấy Kinh Nghiệm Ra
- PaySaveExp(nCount) : Trừ đi nCount điểm kinh nghiệm có trong dữ liệu. Khi rút ra 5.000.000 ăn vào nhân vật thì phải trừ đi 5.000.000 trong dữ liệu (hay dễ hiểu là trong TÀI KHOẢN). Thực ra bạn có thể sử dụng chính hàm AddSaveExp với số điểm cần add là số âm cũng được. Nhưng tính mình thích rành rot rõ ràng nên tạo luôn 1 hàm trừ.
- EarnSaveExp(nCount) : Lấy nCount điểm kinh nghiệm trong TÀI KHOẢN cộng vào nhân vật và trừ đi nCount điểm trong TÀI KHOẢN
- Các bạn có thể thắc mắc bản thân game có hàm AddOwnExp tại sao phải cho thêm cái hàm EarnSaveExp để cộng điểm kinh nghiệm vào nhân vật.
- Mình tạo hàm Pay để trừ điểm có trong TÀI KHOẢN. Và muốn kết hợp với hàm EARN trong trường hợp muốn cộng điểm vào chính nhân vật. Tức là khi sử dụng EARN nó sẽ tự động trừ đi thông qua hàm PAY
- Vậy trường hợp GIAO DỊCH điểm kinh nghiệm? Lúc này chỉ trừ điểm có trong TÀI KHOẢN (Chỉ dùng hàm PAY) mà lại không cộng nó vào nhân vật. Nó chuyển số điểm đó sang TÀI KHOẢN của nhân vật khác.
Hàm đọc số có nhiều chữ số
- ShowBigNumber : Bạn lưu 1 tỷ điểm kinh nghiệm vào và nếu không tạo 1 cái hàm đọc con số 1 tỷ này cho rành rọt thì toặc máu mắt ngồi đếm SỐ CHỮ SỐ.
- Ví dụ bạn lưu 1.945.200.100 điểm thì khi sử dụng hàm này nó sẽ đọc thành dạng 1 Tỷ 945 Triệu 200 Nghìn 100 Điểm Kinh Nghiệm. Tiện hơn cho bạn dùng với Msg2Player hiện thông báo cho người chơi thấy
Bước 2 : Tạo 1 file lưu TÀI KHOẢN
- Tạo 1 file expdata.lua để ở đâu là tùy bạn (Lát trong code chỉ đường dẫn đúng tới nó là OK)
Nội dung file
Code:ExpData={ }
- Trước hết nó cần Include file Include("\\script\\00ff\\data\\expdata.lua")
- Hàm CheckSaveExp()
Code:function CheckSaveExp() ---Hµm nµy sÏ kiÓm tra xem nh©n vËt ®· tơng că d÷ liÖu luu KN hay cha for i=1,getn(ExpData) do if GetUUID() == ExpData[i][2] then return i end end --NƠu cha tơng lu th× gi¸ tr̃ tr¶ v̉ lµ NIL cßn ®· tơng lu th× gi¸ tr̃ tr¶ v̉ chƯnh lµ ṽ trƯ ®· lu trong b¶ng ExpData end
Code:function GetSaveExp() return ExpData[CheckSaveExp()][3] end
Code:function PlayerSaveExp() --Hµm lu toµn bé Exp trªn ngêi. local ExpPlayer = GetExp() --Exp ®ang co trªn ngêi local TongExpNew = ExpPlayer + ExpData[CheckSaveExp()][3] ExpData[CheckSaveExp()][3] = TongExpNew local Data = TaoBang(ExpData,"ExpData","") SaveData("script/00ff/data/expdata.lua",Data) Msg2Player("Thªm "..ShowBigNumber(ExpPlayer,2).." vµo.") Msg2Player("HiÖn că "..ShowBigNumber(ExpData[CheckSaveExp()][3],2).." ®iÓm kinh nghiÖm.") ReduceOwnExp(ExpPlayer) --Xo¸ hªt exp trªn ngêi end
Code:function NewSaveExp() --T¹o data míi cho nh©n vËt cha CS bao giê if CheckSaveExp() == nil then --Nh©n vËt cha tơng lu local Vitri = getn(ExpData)+1 ExpData[Vitri] = {} ExpData[Vitri][1] = GetName() ExpData[Vitri][2] = GetUUID() ExpData[Vitri][3] = 0 local Data = TaoBang(ExpData,"ExpData","") SaveData("script/00ff/data/expdata.lua",Data) end end
Code:function AddSaveExp(nCount) if nCount == nil then return Msg2Player("Hµm AddSaveExp kh«ng x¸c ®̃nh") end local TongExpNew = nCount + GetSaveExp() ExpData[CheckSaveExp()][3] = TongExpNew local Data = TaoBang(ExpData,"ExpData","") SaveData("script/00ff/data/expdata.lua",Data) Msg2Player("Thªm "..ShowBigNumber(nCount,2).." vµo.") Msg2Player("HiÖn că "..ShowBigNumber(GetSaveExp(),2)..".") end
Code:function PaySaveExp(nCount) if nCount == nil then return Msg2Player("Hµm PaySaveExp kh«ng x¸c ®̃nh") end if nCount > GetSaveExp() then return Msg2Player("§iÓm kinh nghiÖm ®· lu kh«ng ®ñ.") end local TongExpNew = GetSaveExp() - nCount ExpData[CheckSaveExp()][3] = TongExpNew local Data = TaoBang(ExpData,"ExpData","") SaveData("script/00ff/data/expdata.lua",Data) Msg2Player("Rót ra "..ShowBigNumber(nCount,2)..".") Msg2Player("Cßn l¹i "..ShowBigNumber(GetSaveExp(),2)..".") end
Code:function EarnSaveExp(nCount) if nCount == nil then return Msg2Player("Hµm EarnSaveExp kh«ng x¸c ®̃nh") end if nCount > GetSaveExp() then return Msg2Player("§iÓm kinh nghiÖm ®· lu kh«ng ®ñ.") end AddOwnExp(nCount) PaySaveExp(nCount) Msg2Player("Céng "..ShowBigNumber(nCount,2).." vµo nh©n vËt.") end
Hàm này mình viết cũng lâu rồi, nó đọc cả số TIỀN và ĐIỂM KN. Mình lười xóa cái đoạn đọc tiền đi nên để nguyên nhé
Cách dùng
ShowBigNumber(10000,1) --Nó sẽ đọc là 1 Vạn
ShowBigNumber(10000,2) --Nó sẽ đọc là 10 nghìn
Code:function ShowBigNumber(Value,Type) local NumberString = tostring(Value) local DoDai = strlen(NumberString) if Type == 0 or Type == nil then return "Kh«ng x¸c ®̃nh" end if Type == 1 then --§äc sè tỉn if DoDai <= 4 then return "<color=yellow>"..NumberString.."<color> lîng" elseif DoDai > 4 and DoDai <= 8 then--Tơ 1.0000 ®Ơn 9999.9999 v¹n local nX = strsub(tostring(Value),1,DoDai - 4) local nY = strsub(tostring(Value),DoDai - 3,DoDai) return "<color=yellow>"..nX.."<color> v¹n <color=yellow>"..nY.."<color> lîng" elseif DoDai > 8 and DoDai <=10 then --Tơ 10.000.0000 ®Ơn 999.999.9999 v¹n local nX = strsub(tostring(Value),1,DoDai - 7) local nY = strsub(tostring(Value),DoDai - 6,DoDai - 4) local nZ = strsub(tostring(Value),DoDai - 3,DoDai) return "<color=yellow>"..nX.."<color> ngh×n <color=yellow>"..nY.."<color> v¹n <color=yellow>"..nZ.."<color> lîng" elseif DoDai > 10 and DoDai <= 13 then--Tơ 1.000.000.0000 v¹n 999.999.999.9999 v¹n local nX = strsub(tostring(Value),1,DoDai - 10) local nY = strsub(tostring(Value),DoDai - 9,DoDai - 7) local nZ = strsub(tostring(Value),DoDai - 6,DoDai - 4) local nJ = strsub(tostring(Value),DoDai - 3,DoDai) return "<color=yellow>"..nX.."<color> triÖu <color=yellow>"..nY.."<color> ngh×n <color=yellow>"..nZ.."<color> v¹n <color=yellow>"..nJ.."<color> lîng" elseif DoDai > 13 then local nX = strsub(tostring(Value),1,DoDai - 13) local nY = strsub(tostring(Value),DoDai - 12,DoDai - 10) local nZ = strsub(tostring(Value),DoDai - 9,DoDai - 7) local nI = strsub(tostring(Value),DoDai - 6,DoDai-4) local nJ = strsub(tostring(Value),DoDai - 3,DoDai) return "<color=yellow>"..nX.."<color> tû <color=yellow>"..nY.."<color> triÖu <color=yellow>"..nZ.."<color> ngh×n <color=yellow>"..nI.."<color> v¹n <color=yellow>"..nJ.."<color> lîng" end elseif Type == 2 then --§äc sè ®iÓm kinh nghiÖm if DoDai <= 3 then return "<color=yellow>"..NumberString.."<color> kinh nghiÖm" elseif DoDai > 3 and DoDai <= 6 then--Tơ 1000 ®Ơn 999.999 local nX = strsub(tostring(Value),1,DoDai - 3) local nY = strsub(tostring(Value),DoDai - 2,DoDai) return "<color=yellow>"..nX.."<color> ngh×n <color=yellow>"..nY.."<color> kinh nghiÖm" elseif DoDai > 6 and DoDai <=9 then --Tơ 1.000.000 ®Ơn 999.999.999 local nX = strsub(tostring(Value),1,DoDai - 6) local nY = strsub(tostring(Value),DoDai - 5,DoDai - 3) local nZ = strsub(tostring(Value),DoDai - 2,DoDai) return "<color=yellow>"..nX.."<color> triÖu <color=yellow>"..nY.."<color> ngh×n <color=yellow>"..nZ.."<color> kinh nghiÖm" --elseif DoDai > 9 and DoDai <= 12 then--Tơ 1.000.000.000 ®Ơn 999.999.999.999 1 tû ®Ơn 999 tû elseif DoDai > 9 then--Tơ 1.000.000.000 local nX = strsub(tostring(Value),1,DoDai - 9) local nY = strsub(tostring(Value),DoDai - 8,DoDai - 6) local nZ = strsub(tostring(Value),DoDai - 5,DoDai - 3) local nJ = strsub(tostring(Value),DoDai - 2,DoDai) return "<color=yellow>"..nX.."<color> tû <color=yellow>"..nY.."<color> triÖu <color=yellow>"..nZ.."<color> ngh×n <color=yellow>"..nJ.."<color> kinh nghiÖm" end end end
- Mở \jxser\server1\script\global\login_head.lua
- Thêm đoạn này vào AddLoginFileFunction("\\script\\00ff\\funclib.lua" ,"NewSaveExp") cuối cùng của file
- Vậy là nhân vật mới tạo mới, hoặc login vào game là nó sẽ auto chạy cái hàm NewSaveExp() mình viết ở trên.
- Vì đã làm bước 4 này thì tất cả các nhân vật của bạn từ lúc tạo mới login vào game là lập tức được tạo TÀI KHOẢN, cho nên các hàm trong THƯ VIỆN bên trên mình không hề cho CHECK xem đã có tài khoản hay chưa. Vì chắc chắn đã có
Toàn bộ file funclib.lua
CHÚ Ý
- Tất cả Code ở trên nếu bạn thấy có nào có đường dẫn thì phải thay lại thành đường dẫn của bạn cho phù hợp.
- Mình không nói kỹ về vấn đề TRADE điểm KN vì các hàm cơ bản đã có. Bạn có thể dùng hàm GetUUID() Có sẵn của server để tìm ra chính xác vị trí lưu điểm kinh nghiệm của nhân vật rồi TRADE với nhau.
- Tương tự các bạn có thể viết hàm LƯU TIỀN, LƯU ITEM. Cũng là 2 vấn đề của anh em chơi tự sướng. Tiền rớt quá nhiều mà mỗi nhân vật được cất hòm có 200k vạn thì phải là max. Vậy thì SAVE nó lại.
- Lưu ITEM thì khó khăn hơn vì nó có nhiều thông số.
- Hệ thống mới coi như hình thành. Khi các bạn cần sử dụng các hàm mới thì nhớ Include file funclib.lua vào là được
- Chúc các bạn quay tay sung sướng những ngày hè oi ả
Video demo : [Only registered and activated users can see links. ]
Pic : Cắm 4 con trên map Bãi Luyện Công (Được tạo thêm) 2 hay 3 ngày hôm nay rồi. Với hệ thống save item, save money, save exp, và sửa đồ
[Only registered and activated users can see links. ]Lần sửa cuối bởi f-fantasy, ngày 11-06-19 lúc 08:12 PM.
Khách viếng thăm hãy cùng f-fantasy xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
The Following 17 Users Say Thank You to f-fantasy For This Useful Post:
Anh2SiTinh (10-06-19), Bull_Shit (11-06-19), caunho1x9x (04-11-19), duynguyenjx (04-11-19), ehwgagc987 (10-06-19), hoang958 (10-06-19), keo_ngot1418 (28-08-19), KhongGianOL (10-06-19), qd3097 (02-11-19), thinhba (11-06-19), thtrungtinh (13-06-19), tranvanlong789 (19-06-19), trilap2004 (10-06-19), vlxx1 (27-11-20), vta10306 (09-10-20), vuduymanh (10-06-19), __Jie__ (11-06-19)
-
03-11-19, 08:22 AM #2
- Ngày tham gia
- Aug 2015
- Bài viết
- 6
- Thanks
- 4
- Thanked 2 Times in 1 Post
Ðề: LINUX - Tạo 1 hệ thống Lưu điểm kinh nghiệm, giao dịch điểm KN - Off tự sướn
Khách viếng thăm hãy cùng qd3097 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
The Following 2 Users Say Thank You to qd3097 For This Useful Post:
duynguyenjx (04-11-19), hungvoi94 (04-11-19)
-
09-11-19, 11:59 PM #3
- Ngày tham gia
- Jun 2006
- Đang ở
- Funabashi, Chiba, Japan
- Bài viết
- 544
- Thanks
- 410
- Thanked 300 Times in 82 Posts
Ðề: LINUX - Tạo 1 hệ thống Lưu điểm kinh nghiệm, giao dịch điểm KN - Off tự sướn
Code:function TaoBang(tTable, sTableName, sTab) sTab = sTab or ""; sTmp = "" sTmp = sTmp..sTab..sTableName.."={" local tStart = 0 for key, value in tTable do if tStart == 1 then sTmp = sTmp..",\r\n" else sTmp = sTmp.."\r\n" tStart = 1 end local sKey = (type(key) == "string") and format("[%q]",key) or format("[%d]",key); if(type(value) == "table") then sTmp = sTmp..TaoBang(value, sKey, sTab.."\t"); else local sValue = (type(value) == "string") and format("%q",value) or tostring(value); sTmp = sTmp..sTab.."\t"..sKey.." = "..sValue end end sTmp = sTmp.."\r\n"..sTab.."}" --Msg2Player(sTmp) return sTmp end function SaveData(file, string) local f,e = openfile( file, "w+" ) if f then write(f,string) closefile(f) return 1 else local _,_,path = strfind(file, "(.+[/_\\]).+$") if path ~= nil then execute("mkdir ".."\""..gsub(path, "/", "\\").."\"") end f,e = openfile( file, "w+" ) if f then write(f,string) closefile(f) return 2 else return 0 end end end
Khách viếng thăm hãy cùng f-fantasy xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
Các thành viên gởi lời cảm ơn đến f-fantasy vì bài viết này !
qd3097 (10-11-19)
-
10-11-19, 09:51 PM #4
- Ngày tham gia
- Feb 2016
- Bài viết
- 225
- Thanks
- 24
- Thanked 4 Times in 4 Posts
Ðề: LINUX - Tạo 1 hệ thống Lưu điểm kinh nghiệm, giao dịch điểm KN - Off tự sướn
BÁC CÓ BỘ NÀO BẢNG XẾP HẠNG TOÀN SEVER THEO DẠNG SÉT TINH LỰC HOẶC SETTASK KHÔNG ? SHARE CHO EM XIN VỚI BÁC.
BỘ NÀO MÀ NÓ CHẠY ĐƯỢC TOÀN BỘ SEVER ẤY. ĐỪNG TÍNH THEO GS. CHỨ NHƯ CÁI SCRIPT vng_top nó tính theo GS.Khách viếng thăm hãy cùng tranvanlong789 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
10-11-19, 11:16 PM #5
- Ngày tham gia
- Aug 2015
- Bài viết
- 6
- Thanks
- 4
- Thanked 2 Times in 1 Post
Ðề: LINUX - Tạo 1 hệ thống Lưu điểm kinh nghiệm, giao dịch điểm KN - Off tự sướn
Khách viếng thăm hãy cùng qd3097 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
11-11-19, 06:25 PM #6
- Ngày tham gia
- Jun 2006
- Đang ở
- Funabashi, Chiba, Japan
- Bài viết
- 544
- Thanks
- 410
- Thanked 300 Times in 82 Posts
Ðề: LINUX - Tạo 1 hệ thống Lưu điểm kinh nghiệm, giao dịch điểm KN - Off tự sướn
Khách viếng thăm hãy cùng f-fantasy xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
24-02-20, 03:03 PM #7
- Ngày tham gia
- Aug 2015
- Đang ở
- Thiếu Lâm Phái
- Bài viết
- 589
- Thanks
- 72
- Thanked 453 Times in 183 Posts
Ðề: LINUX - Tạo 1 hệ thống Lưu điểm kinh nghiệm, giao dịch điểm KN - Off tự sướn
Khách viếng thăm hãy cùng cuongvh93 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
24-02-20, 04:27 PM #8
- Ngày tham gia
- Feb 2016
- Bài viết
- 152
- Thanks
- 49
- Thanked 14 Times in 10 Posts
Ðề: LINUX - Tạo 1 hệ thống Lưu điểm kinh nghiệm, giao dịch điểm KN - Off tự sướn
cho mình ké 1 tí, ai còn giữ ui thu phí cho xin với
Khách viếng thăm hãy cùng laptrinhjx xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
09-10-20, 10:10 PM #9
- Ngày tham gia
- Dec 2008
- Bài viết
- 11
- Thanks
- 5
- Thanked 0 Times in 0 Posts
Ðề: LINUX - Tạo 1 hệ thống Lưu điểm kinh nghiệm, giao dịch điểm KN - Off tự sướn
xin đào chủ đề này, sau khi chép toàn bộ vào file, gán cript cho vật phẩm mới, nhấp vào vật phẩm không được, ffantasy cho hỏi là lỗi gì? cái code toàn bộ cript phải viết thêm , chèn thêm cái gì? ( mình là người mới, chỉ biết copy paste thôi
Khách viếng thăm hãy cùng vta10306 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
19-11-20, 08:12 PM #10
- Ngày tham gia
- Jun 2006
- Đang ở
- Funabashi, Chiba, Japan
- Bài viết
- 544
- Thanks
- 410
- Thanked 300 Times in 82 Posts
Ðề: LINUX - Tạo 1 hệ thống Lưu điểm kinh nghiệm, giao dịch điểm KN - Off tự sướn
Khách viếng thăm hãy cùng f-fantasy xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
Các Chủ đề tương tự
-
[KT] Xin file setting kinh nghiệm lên cấp và kinh nghiệm đánh quái như VNG
Bởi helpme85 trong diễn đàn Hỏi Đáp/ Yêu CầuTrả lời: 3Bài viết cuối: 17-11-16, 07:22 PM -
[KT] Lỗi không cho sách kinh nghiệm đồng hành vào để tăng kinh nghiệm chân nguyên
Bởi Kyo Công Tử trong diễn đàn Hỏi Đáp/ Yêu CầuTrả lời: 2Bài viết cuối: 20-09-14, 06:41 AM -
Chỉnh nhân kinh nghiệm và chỉnh kinh nghiệm phụ bản
Bởi Nike3692 trong diễn đàn Hỏi Đáp/ Yêu CầuTrả lời: 1Bài viết cuối: 27-05-14, 03:48 AM -
Sever sro-teenviet nơi các mem giao lưu, trao đổi kinh nghiệm, GM nhiet tinh
Bởi trungkientk89 trong diễn đàn CÁC SERVER GAME PRIVATE ONLINETrả lời: 1Bài viết cuối: 20-03-14, 01:48 PM