[JX] LINUX - Tạo 1 hệ thống Lưu điểm kinh nghiệm, giao dịch điểm KN - Off tự sướng
Follow us on
Follow us on Facebook Follow us on Twitter Linked In Flickr Watch us on YouTube My Space Blogger
 
Kết quả 1 đến 1 của 1
  1. #1
    Thành Viên
    Ngày tham gia
    Jun 2006
    Đang ở
    Funabashi, Chiba, Japan
    Bài viết
    417
    Thanks
    321
    Thanked 174 Times in 49 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={
    	
    }
    Bước 3: Các code trong Funclib.lua
    - 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 ch­a
    	for i=1,getn(ExpData) do
    		if GetUUID() == ExpData[i][2] then
    			return i
    		end
    	end
    	--NƠu ch­a tơng l­u th× gi¸ tr̃ tr¶ v̉ lµ NIL cßn ®· tơng l­u th× gi¸ tr̃ tr¶ v̉ chƯnh lµ ṽ trƯ ®· l­u trong b¶ng ExpData
    end
    - Hàm GetSaveExp()
    Code:
    function GetSaveExp()
    	return ExpData[CheckSaveExp()][3]
    end
    - Hàm PlayerSaveExp
    Code:
    function PlayerSaveExp()
    --Hµm l­u 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
    -Hàm NewSaveExp
    Code:
    function NewSaveExp() --T¹o data míi cho nh©n vËt ch­a CS bao giê
    	if CheckSaveExp() == nil then --Nh©n vËt ch­a tơng l­u
    		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
    - Hàm AddSaveExp
    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
    - Hàm PaySaveExp(nCount)
    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 ®· l­u 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
    - Hàm EarnSaveExp(nCount)
    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 ®· l­u kh«ng ®ñ.")
    	end
    	AddOwnExp(nCount)
    	PaySaveExp(nCount)
    	Msg2Player("Céng "..ShowBigNumber(nCount,2).." vµo nh©n vËt.")
    end
    - Hàm ShowBigNumber
    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
    Bước 4 : Thiết lập mỗi khi đăng nhập sẽ check xem nhân vật có TÀI KHOẢN chưa, chưa có thì add TÀI KHOẢN tự động
    - 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
    Code:
    Include("\\script\\00ff\\data\\expdata.lua")
    function CheckSaveExp()
    ---Hµm nµy sÏ kiÓm tra xem nh©n vËt ®· tơng că d÷ liÖu luu KN hay ch­a
    	for i=1,getn(ExpData) do
    		if GetUUID() == ExpData[i][2] then
    			return i
    		end
    	end
    	--NƠu ch­a tơng l­u th× gi¸ tr̃ tr¶ v̉ lµ NIL cßn ®· tơng l­u th× gi¸ tr̃ tr¶ v̉ chƯnh lµ ṽ trƯ ®· l­u trong b¶ng ExpData
    end
    function GetSaveExp()
    	return ExpData[CheckSaveExp()][3]
    end
    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
    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 ®· l­u 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
    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 ®· l­u kh«ng ®ñ.")
    	end
    	AddOwnExp(nCount)
    	PaySaveExp(nCount)
    	Msg2Player("Céng "..ShowBigNumber(nCount,2).." vµo nh©n vËt.")
    end
    function SaveExpPlayer()
    --Hµm l­u 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
    function NewSaveExp() --T¹o data míi cho nh©n vËt ch­a CS bao giê
    	if CheckSaveExp() == nil then --Nh©n vËt ch­a tơng l­u
    		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
    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

    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 đồ
    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é!

  2. The Following 10 Users Say Thank You to f-fantasy For This Useful Post:

    Anh2SiTinh (10-06-19), Bull_Shit (11-06-19), ehwgagc987 (10-06-19), hoang958 (10-06-19), KhongGianOL (10-06-19), thinhba (11-06-19), thtrungtinh (13-06-19), trilap2004 (10-06-19), vuduymanh (10-06-19), __Jie__ (11-06-19)

 

 

Các Chủ đề tương tự

  1. Không giao dịch đc item - Xin hỏi cách chỉnh để giao dịch đc item linux
    Bởi bachvanphi trong diễn đàn Recycle Bin - Thùng Rác
    Trả lời: 0
    Bài viết cuối: 29-12-16, 05:47 PM
  2. [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ầu
    Trả lời: 3
    Bài viết cuối: 17-11-16, 07:22 PM
  3. [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ầu
    Trả lời: 2
    Bài viết cuối: 20-09-14, 06:41 AM
  4. 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ầu
    Trả lời: 1
    Bài viết cuối: 27-05-14, 03:48 AM
  5. 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 ONLINE
    Trả lời: 1
    Bài viết cuối: 20-03-14, 01:48 PM

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 10:48 PM.
vBulletin®, Copyright ©2000-2011, Jelsoft Enterprises Ltd.
CLBGamesVN không chịu trách nhiệm về Luật Bản Quyền của các tài liệu, bài viết v.v...được đăng tải trên diễn đàn này.
Diễn đàn phát triển dưới sự đóng góp của tất cả thành viên. BQT chỉ là những người thành lập ra sân chơi, quản lý và duy trì về mặt kỹ thuật, nội dung khi hợp lệ.