Xin chào quí đồng đạo... Có lẽ hấu hết trong số chúng ta..những người chơi game kiếm thế hiện nay, không ai là không sử dụng cái plugin kiếm thế... Tuy nhiên do nguồn plugin đa dạng trên internet nên chúng ta có rất nhiều option khi lựa chọn plugin cho mình...dẫn đến sự bối rối hay 1 chút không vừa ý khi update sử dụng các plugin.. Có lúc là giao diện....có lúc là các chức năng nhỏ trong plugin... Tui cũng như các bạn gặp phải trường hợp trên....nhất là nhưng khi game nó bị update mình thì phải ngồi bị động chờ các bác IT nhà ta hoàn thiện cái plugin new version...không chơi game được thành ra lấy cái thời gian đó để mà vọc phá cái plugin Nay tui mạn phép share lại 1 chút ít kiến thức vọc phá plugin cho các vị đồng đạo nào quan tâm....hehehe Trước khi bắt đầu, đồng đạo nào chưa có soft Notepad++ thì nên lên google mà download 1 cái về cho mình... nó dùng để viết và chỉnh sửa các plugin... SƠ LƯỢC VỀ PLUGIN KIẾM THẾ: Cơ bản ở folder gốc của game kiếm thế chúng ta chỉ có duy nhất 1 file interfacemanagercfg.ini với nội dung sau: [InterfaceInfo] LoadState=0 [PluginInfo] LoadState=0 Có nghĩa là không có sử dụng 1 plugin nào hết...vậy nếu muốn sử dụng plugin thì phải đổi cái dòng [PluginInfo] LoadState=0 thành [PluginInfo] LoadState=1 --> bật chức năng sử dụng plugin... Sau đó mới bắt đầu tạo các plugin... Theo như tui hiểu thì mỗi 1 cái plugin sẽ được đựng riêng biệt trong 1 folder và folder đó phải nằm bên trong cái folder interface.. Các file bắt buộc phải có trong 1 folder plugin là: -- 1 file plugincfg.ini --> dùng để mô tả chức năng plugin và khai báo tình trạng tắt hay mở plugin này mỗi khi vào game vd: [PluginInfo] PluginName=AutoGuessNum --> tên plugin (muốn đặt sao thì đặt...) PluginDate=2009-12-27 --> ngày (muốn đặt sao thì đặt...) PluginContext=<color=green>Hổ trợ trong Hải Lăng<color> --> nội dung (muốn đặt sao thì đặt...) LoadState=1 --> 0 thì run game nó im re.. 1 thì run game nó hoạt động... -- 1 file .lua --> file lập trinh sử dụng ngôn ngữ LUA để điều khiển plugin vd: AutoChiLing.lua ... (cái file tự động đi hải lăng ấy mà...) Bên cạnh sẽ có thể có thêm các file .ini và .txt nếu plugin đó cần có giao diện và truy xuất dữ liệu có sẵn... (file .ini sẽ là file điều chỉnh giao diện và file .txt sẽ là file điểu chỉnh data...) vd: plugin abc.lua --> sử dung giao diện từ file abc.ini .... abc.ini thay đổi --> giao diện của plugin abc trong game thay đổi tương tự... abc.lua --> sử dụng data trong file abc.txt ... abc.txt thay đổi --> data abc.lua nhận được khi run game thay đổi Biết sơ lược các khái niệm về plugin kiếm thế như thế là đủ rồi...bây giớ nên bắt tay vào thực hành thôi... SAMPLE 1: viết 1 plugin có giao diện... -- Tạo 1 folder mới trong folder interface tên là SAMPLE (nằm chung với các folder plugin khác mình đang xài cũng không sao..không ảnh hưởng gi hết...) -- Mở chương trình Notepad++ lên --> new file --> save với tên plugincfg.ini liền nội dung file thì như sau: Mã: [PluginInfo] PluginName=SAMPLE1 PluginDate=2012-12-12 PluginContext=<color=green>cùi pắp số 1<color> LoadState=1 -- Tiếp tục new file --> save với tên sample1.ini --> nội dung file là: Mã: [Main] WndType=WndShowAnimate Name=Main Left=10 Top=150 Width=120 Height=200 Layer=1 Moveable=1 [nut_close] WndType=WndButton Parent=Main Name=nut_close Left=100 Top=3 Width=14 Height=14 Font=12 DisableFrame=3 UpOver=1 Frame=0 Down=2 Color=yellow LabelYOffset=3 Image=\image\ui\001a\common\button_close.spr [ten_tool_hl] WndType=WndText Parent=Main Name=ten_tool_1 Left=10 Top=2 Width=140 Height=20 Disable=1 Text=HAI LANG TOOLS Color=yellow [nut_hl_1] WndType=WndButton Parent=Main Name=nut_hl_1 Left=5 Top=20 Width=60 Height=19 Font=12 LabelXOffset=7 LabelYOffset=3 Down=2 Image=\image\ui\001a\common\btn_4ch.spr UpOver=1 DownOver=2 Label=Rung Gai Color=0,255,0 Tip=<color=yellow>chay qua rung gai trong Hai Lang<color> [nut_hl_2] WndType=WndButton Parent=Main Name=nut_hl_2 Left=5 Top=40 Width=60 Height=19 Font=12 LabelXOffset=7 LabelYOffset=3 Down=2 Image=\image\ui\001a\common\btn_4ch.spr UpOver=1 DownOver=2 Label= Q A T Color=0,255,0 Tip=<color=yellow>mo Quang Anh Thach trong Hai Lang<color> Giải thích: -- file sample1.ini này sẽ là file giao diện cho plugin sample1 của mình. [Main] --> window giao diện chung WndType=WndShowAnimate Name=Main Left=10 --> nơi xuất hiện trong game Top=150 --> nơi xuất hiện trong game Width=120 --> chiều rộng Height=200 --> chiều cao Layer=1 Moveable=1 --> 1 thì drag window đi cho khác được.. 0 thì miễn drag... [nut_close] --> tên nút tắt cái window (wan trọng..) WndType=WndButton --> gán cho nó là chức năng 1 cái nút Parent=Main Name=nut_close --> tên nút tắt cái window (wan trọng..) Left=100 Top=3 Width=14 Height=14 Font=12 DisableFrame=3 UpOver=1 Frame=0 Down=2 Color=yellow LabelYOffset=3 Image=\image\ui\001a\common\button_close.spr --> chọn file hình đại diện cho cái nút này... [ten_tool_hl] --> tên của dòng text WndType=WndText --> nói cho pc biết tao là text thôi .. Parent=Main Name=ten_tool_1 Left=10 Top=2 Width=140 Height=20 Disable=1 Text=HAI LANG TOOLS --> viết sao thì vô game nó xuất hiện y như vậy.. Color=yellow [nut_hl_1] --> tên cái nút (wan trọng....) WndType=WndButton --> nói cho pc biết em ấy là 1 cái nút... Parent=Main Name=nut_hl_1 --> tên cái nút (wan trọng....) Left=5 Top=20 Width=60 Height=19 Font=12 LabelXOffset=7 LabelYOffset=3 Down=2 Image=\image\ui\001a\common\btn_4ch.spr --> chỉ định file hình đại diện cho em nó UpOver=1 DownOver=2 Label=Rung Gai --> viết gì thì vô game đọc thấy nấy.. Color=0,255,0 Tip=<color=yellow>chay qua rung gai trong Hai Lang<color> -- như vậy là mình đã có file giao diện rồi..giờ cần fải có file điều khiển cái giao diện ni... nói nôm na là ta có cái TV rồi mà chưa có cái remote..phải ra chợ nhật tảo sắm 1 cái remote thôi.... -- Trở lại Notepad++ --> new file --> save với tên sample1.lua (đây sẽ là file script của ta..) --> cho nội dung sau vào: Mã: local uivkl_1 = Ui:GetClass("sample1"); local button_nut_close = "nut_close"; local button_nut_hl_1 = "nut_hl_1"; local button_nut_hl_2 = "nut_hl_2"; function uivkl_1:OnButtonClick(nut_bi_click, nParam) if nut_bi_click == button_nut_close then UiManager:SwitchWindow(Ui.UI_VKL_1); elseif nut_bi_click == button_nut_hl_1 then local nTeamLeader = Ui(Ui.UI_TEAM):IsTeamLeader(); if (nTeamLeader ~= 1) then me.Msg("<color=yellow>TUI KO PHAI LA DOI TRUONG<color>"); SendChannelMsg("Team","TUI KO PHAI LA DOI TRUONG"); else me.Msg("<color=yellow>HOHOHO! MINH` LA` DOI TRUONG NE`!<color>"); end elseif nut_bi_click == button_nut_hl_2 then local nCurMapId, nWorldPosX, nWorldPosY = me.GetWorldPos(); if (not MODULE_GAMESERVER) then nCurMapId = me.nTemplateMapId; end UiManager:SwitchWindow(Ui.UI_WORLDMAP_SUB, nCurMapId); end end Ui:RegisterNewUiWindow("UI_VKL_1", "sample1", {"a", 10, 150}, {"b", 10, 150}, {"c", 10, 150}); local tCmd={ "UiManager:SwitchWindow(Ui.UI_VKL_1)", "UI_VKL_1", "", "B", "B", "chilasamplethoi"}; AddCommand(tCmd[4], tCmd[3], tCmd[2], tCmd[7] or UiShortcutAlias.emKSTATE_INGAME); UiShortcutAlias:AddAlias(tCmd[2], tCmd[1]); LoadUiGroup(Ui.UI_VKL_1, "sample1.ini"); giải thích script đây: -- đầu tiên là cái này: LoadUiGroup(Ui.UI_VKL_1, "sample1.ini"); --> kiu nó load giao diện từ file sample1.ini mình tạo sẵn... Ui:RegisterNewUiWindow("UI_VKL_1", "sample1", {"a", 10, 150}, {"b", 10, 150}, {"c", 10, 150}); --> đăng kí với game 1 cái bảng giao diện đặt tên là UI_VKL_1 với class là sample1 ... đồng thời quy định tọa độ xuất hiện cho từng độ phân giải trong game...vd "a", 10, 150 thì đối với độ phân giải 800 x 600 khi vô game nó sẽ nằm ở vị trí x = 10, y = 150... local tCmd={ "UiManager:SwitchWindow(Ui.UI_VKL_1)", "UI_VKL_1", "", "B", "B", "chilasamplethoi"}; AddCommand(tCmd[4], tCmd[3], tCmd[2], tCmd[7] or UiShortcutAlias.emKSTATE_INGAME); UiShortcutAlias:AddAlias(tCmd[2], tCmd[1]); --> tất cả là chỉ để quy định phím tắt để đóng mở giao diện plugin... ở đây là phím chữ b... (lưu ý nếu phím tắt này đã bị plugin khác xí rồi thì coi như vô game 2 thằng đều im re luôn..vì đụng hàng...) --> khi tui bấm chữ b thì làm ơn bật cái window Ui.UI_VKL_1 lên...mà Ui.UI_VKL_1 đã được load từ sample1.ini... -- kế đến là mấy dòng script ở trên: local uivkl_1 = Ui:GetClass("sample1"); --> tạo class với nội dung lấy từ class sample1... local button_nut_close = "nut_close"; --> tạo biến số lấy tên nút... wan trọng.. tên nút fải i xì như tên nút bên file .ini local button_nut_hl_1 = "nut_hl_1"; --> tương tư..có nhiu nút bên file .ini nếu muốn xài thì phải có biến để thu thập tên nút đó wa bên này... local button_nut_hl_2 = "nut_hl_2"; --> tương tự... -- tiếp theo là nguyên cụm này: --> cái này là function để điều khiển khi cái nút nào đó bị click trong game function uivkl_1:OnButtonClick (--> tên của function do mình đặt...)(nut_bi_click, nParam) if nut_bi_click == button_nut_close then UiManager:SwitchWindow(Ui.UI_VKL_1); --> tắt cái window... elseif nut_bi_click == button_nut_hl_1 then local nTeamLeader = Ui(Ui.UI_TEAM):IsTeamLeader(); --> tạo biến nhận diện char của mình là đội trưởng pt... if (nTeamLeader ~= 1) then me.Msg("<color=yellow>TUI KO PHAI LA DOI TRUONG<color>"); SendChannelMsg("Team","TUI KO PHAI LA DOI TRUONG"); else me.Msg("<color=yellow>HOHOHO! MINH` LA` DOI TRUONG NE`!<color>"); end elseif nut_bi_click == button_nut_hl_2 then local nCurMapId, nWorldPosX, nWorldPosY = me.GetWorldPos(); --> tạo biến lấy map id và tạo độ nơi ta đang đứng... if (not MODULE_GAMESERVER) then nCurMapId = me.nTemplateMapId; end UiManager:SwitchWindow(Ui.UI_WORLDMAP_SUB, nCurMapId); --> bật cái map lên cho ta xem nào...hoho end end -- Vậy là chúng ta đã hoàn chỉnh tạo dựng 1 cái plugin nhỏ cho game rồi ..giờ vô game ma run thử coi... --> run game... bấm phim tắt b coi sao..hohoho.... -- Hy vọng với cái sample này thì đồng đạo có thể hình dung mối liện hệ giữa các file .lua và file giao diện .ini ... thông wa đó đồng đạo có thể chỉnh sửa 1 số giao diện từ plugin mình đang xài theo ý mình.... ------------------------------ Tiếp theo mình xin update kiểu vọc phá plugin #1: sửa câu chào "..xin hãy tạm rời máy nghỉ 1 lúc...".. nếu đang dùng plugin thì có thể sẽ là câu "Plugin http://hoahongnet.info.." --> Ai đang thất tình thì có thể sửa thành " Nga ơi..anh iu em...!!".. ai chủ tiệm net thì sửa thành "tiệm net con gà..chuyên fuc vụ fim xxx...."..hahaha -- Đầu tiên mình mở Notepad++ và unikey lên nha... -- Tìm cho được file healthy.lua và open nó bằng Notepad++ ...(thường thì file này nằm trong \\interface\Tools\...) -- Sau khi open file trong Notepad++... để đánh được tiếng việt thì bạn phải vào menu chính của chương trình Notepad++ --> Format --> chọn Encode in UTF-8 without BOM... -- xuống dưới file healthy.lua tìm đến dòng code sau: Mã: function tbHealthy:OnTimer() -- һˇٶӤ߃݆֮ Ui(Ui.UI_TASKTIPS):Begin("<bclr=red><color=white>ghi câu chào của mình vô đây..<color>"); end Ui(Ui.UI_TASKTIPS):Begin("<bclr=red><color=white>ghi câu chào của mình vô đây..<color>"); --> bạn có thể thay đổi dòng code này để thay đổi câu chào trong game.. <bclr=red><color=white> --> thông số màu cho text... Have fun!
học ngôn ngữ .lua đã T_T http://www.lua.org/ topic gần như ko có ai trả lời, hình như mọi người ko có ai hứng thú cho lắm với ngôn ngữ này, mình cũng tìm hiểu thấy lua là ngôn ngữ khá mạnh và được sử dụng trong game rất nhiều, hơn nữa nó khá đơn giản và nhẹ nữa mình muốn hỏi bunny là giờ muốn tự viết 1 cái addon cho nó tự động mua đồ ở kì trân các và tự trade cho nhau thì làm ra sao?, nếu bunny có thời gian thì để lại YM mình liên hệ hỏi han cho hỏi cái ~= là gì?
Nếu ngồi chỉnh lại những cái có sẵn, thực ra những ae đang phát triển plugins họ cũng đã làm rất tốt rồi, cộng thêm update liên tục. Mình cần hỏi là có chỗ nào để tham khảo danh sách object, event hay function của game k? Như thế vọc nó dễ hơn . btw, thanks chủ 2pic rất nhiều.
buno loc giúp fuction của HHN về remote quân doanh đc hok. Nghiên cứu add thêm 1 vài op nữa cho tiện khi 1 tay chơi 6 acc VD như call mở máu tranh đoạt, thoát khỏi quân doanh ....
ah..cái này là phép so sánh.. trong lập trình thì muốn so sánh giữa 2 đối tượng có các cách sau: == : có nghĩa là bằng ... vd if a == b then --> nếu a bằng b thì ~= : có nghỉa là khác ... vd if a ~= b then --> nếu a khác b thì... lưu ý là a == b sẽ khác với a = b ... a == b dùng để so sánh coi a có bằng b hay không (thường dùng trong if...) còn a = b có nghĩa là mình muốn chỉ định a sẽ giống như b... b = 5 thì a sẽ = 5 hehehe..mình biết là không phải không ai có hứng thú.. nhưng nó sẽ khá rắc rối với những người chưa có căn bản lập trình (mình nhìn cũng chóng mặt luôn...)... nhưng như mình đã nói... cái gì mình chưa biết thì nó như là 1 sự siêu phàm... nhưng khi mình biết rồi thì nó lại trở thành 1+1=2... mình muốn giúp đỡ cho mấy bạn muốn vọc phá plugin (vd điều chỉnh cái giao diện lại theo ý mình..) nhưng vẫn cón gặp bối rối với mớ script từ các plugin có sẵn... ai có thắc mắc gì thì cứ hỏi...đừng ngại...nếu trả lời giúp được thì sẽ giúp liền...dù mình chỉ hiểu sơ sơ về LUA thôi...hehehe.. đủ để loại bỏ 1 số chức năng mình không có dùng tới.. nhiều chức năng wa làm năng máy..chạy 6 acc không nổi..hahaha.... mình sẽ update thêm vài sample nữa wa đó bạn có thể tự viết cho mình...
bài viết hay quá à trong lập trình tớ nhớ khác là : '' != '' mà nhỉ , ''a!=b : a khác b '',còn cái ''~='' mới thấy , nếu ko đúng xin bỏ qua , trình lập trình còn gà :)
đúng đúng...chẳng wa là mấy em ngôn ngữ lập trình sợ đụng hàng nhau nên mỗi em cố gắng tìm cho mình 1 kiểu biểu hiện...chỉ tổ làm khổ người ta...
Em hỏi ké với:) Bác buno có biết cái hàm tình thời gian còn lại của vật phẩm thường nằm ở file nào của plugin ko trước chỉ vào nó hiện lên số ngày còn lại mà bây giờ nó hiện lên ngày tháng năm hết hạn nên ko để ý được:(
cái chỉnh sửa tự sướng vũ khí với ngựa ở phần nào ấy nhỉ .Mình sửa ở cái \setting\item\001\equip\general\horse.txt và \setting\item\001\equip\purple\meleeweapon.txt rồi mà nó chỉ sửa đc cái icon thôi mà ở ngoài vẫn như cũ .
hây dà...thành thật sorry là trong cái plugin của mình ko có mấy cái chức năng này..nên không biết nó nằm ở đâu hết...heheh
hôm nay kiếm thế lại update lên phiên bản mới...treo mấy acc làm bvd rồi đi ngủ.. ai ngờ sáng ra có 1 số con đứng tập trung ở npc Bất Động Tiên Sinh...thì ra mấy em ấy muốn mua đồ chế vật phẩm nv nhưng bị kẹt cái event ngày nhà giáo xen vào....nhân dịp này mình cho các bạn thêm 1 kiểu vọc phá plugin nữa để fix cái bvd này lại.... việc làm sẽ vô cùng đơn giản... các bạn open bằg notepad++ file SuperBao.lua (thường nằm trong folder sprBao....)chu choa cái file gì mà dài ngoẵng thế này...hohoho... thôi thì cố gắng tìm thấy nhưng dòng code sau đi: trong file của mình nó nằm ở khoảng dòng 1668 - 1740 Mã: elseif self.nActionType == 10 then if self.material then local g,d,p,l,n,buyid=unpack(self.material) local nId = tbSuperBao:GetAroundNpcId(3565) if nId then if UiManager:WindowVisible(Ui.UI_SAYPANEL) == 1 then if p==4 then me.AnswerQestion(2) else me.AnswerQestion(6) end local function fnCloseSay3() UiManager:CloseWindow(Ui.UI_SAYPANEL); return 0 end local function fnbuy(id,num1) local pItem = KItem.GetItemObj(id); local bOK, szMsg = me.ShopBuyItem(id, num1); if UiManager:WindowVisible(Ui.UI_SHOP) == 1 then UiManager:CloseWindow(Ui.UI_SHOP); end self.nActionType = 1 return 0 end Ui.tbLogic.tbTimer:Register(15, fnCloseSay3); Ui.tbLogic.tbTimer:Register(40, fnbuy, buyid, n); elseif UiManager:WindowVisible(Ui.UI_SHOP) == 1 then else AutoAi.SetTargetIndex(nId); end else tbSuperBao:fnfindNpc(3565,"Bất động tiên sinh "); end end elseif self.nActionType == 11 then if self.material then local g,d,p,l,n,buyid=unpack(self.material) local nId = tbSuperBao:GetAroundNpcId(3565) if nId then if UiManager:WindowVisible(Ui.UI_SAYPANEL) == 1 then if p>=1 and p<=4 then me.AnswerQestion(2) elseif p>=5 and p<=8 then me.AnswerQestion(3) elseif p>=13 and p<=16 then me.AnswerQestion(5) else me.AnswerQestion(6) end local function fnCloseSay3() UiManager:CloseWindow(Ui.UI_SAYPANEL); return 0 end local function fnbuy(id,num1) local pItem = KItem.GetItemObj(id); local bOK, szMsg = me.ShopBuyItem(id, num1); if UiManager:WindowVisible(Ui.UI_SHOP) == 1 then UiManager:CloseWindow(Ui.UI_SHOP); end self.nActionType = 1 return 0 end Ui.tbLogic.tbTimer:Register(15, fnCloseSay3); Ui.tbLogic.tbTimer:Register(40, fnbuy, buyid, n); elseif UiManager:WindowVisible(Ui.UI_SHOP) == 1 then else AutoAi.SetTargetIndex(nId); end else tbSuperBao:fnfindNpc(3565,"Bất động tiên sinh "); end end trong cái đống code này ta cần thêm ngay 1 dòng code me.AnswerQestion(1); ở 2 chỗ sau: Mã: elseif self.nActionType == 10 then if self.material then local g,d,p,l,n,buyid=unpack(self.material) local nId = tbSuperBao:GetAroundNpcId(3565) if nId then if UiManager:WindowVisible(Ui.UI_SAYPANEL) == 1 then [COLOR="DarkRed"]me.AnswerQestion(1);[/COLOR] if p==4 then me.AnswerQestion(2) else me.AnswerQestion(6) end local function fnCloseSay3() UiManager:CloseWindow(Ui.UI_SAYPANEL); return 0 end local function fnbuy(id,num1) local pItem = KItem.GetItemObj(id); local bOK, szMsg = me.ShopBuyItem(id, num1); if UiManager:WindowVisible(Ui.UI_SHOP) == 1 then UiManager:CloseWindow(Ui.UI_SHOP); end self.nActionType = 1 return 0 end Ui.tbLogic.tbTimer:Register(15, fnCloseSay3); Ui.tbLogic.tbTimer:Register(40, fnbuy, buyid, n); elseif UiManager:WindowVisible(Ui.UI_SHOP) == 1 then else AutoAi.SetTargetIndex(nId); end else tbSuperBao:fnfindNpc(3565,"Bất động tiên sinh "); end end elseif self.nActionType == 11 then if self.material then local g,d,p,l,n,buyid=unpack(self.material) local nId = tbSuperBao:GetAroundNpcId(3565) if nId then if UiManager:WindowVisible(Ui.UI_SAYPANEL) == 1 then [COLOR="DarkRed"]me.AnswerQestion(1);[/COLOR] if p>=1 and p<=4 then me.AnswerQestion(2) elseif p>=5 and p<=8 then me.AnswerQestion(3) elseif p>=13 and p<=16 then me.AnswerQestion(5) else me.AnswerQestion(6) end local function fnCloseSay3() UiManager:CloseWindow(Ui.UI_SAYPANEL); return 0 end local function fnbuy(id,num1) local pItem = KItem.GetItemObj(id); local bOK, szMsg = me.ShopBuyItem(id, num1); if UiManager:WindowVisible(Ui.UI_SHOP) == 1 then UiManager:CloseWindow(Ui.UI_SHOP); end self.nActionType = 1 return 0 end Ui.tbLogic.tbTimer:Register(15, fnCloseSay3); Ui.tbLogic.tbTimer:Register(40, fnbuy, buyid, n); elseif UiManager:WindowVisible(Ui.UI_SHOP) == 1 then else AutoAi.SetTargetIndex(nId); end else tbSuperBao:fnfindNpc(3565,"Bất động tiên sinh "); end end thế là xong... để mình giải thích đơm giản... máy dòng code này là điều khiển nhân vật của mình tùy theo iu cầu của bvd mà sẽ chon mua khoáng ..gỗ..vải...hay da...để chế đồ nv..nhưng giờ bị cái panel ngày nhà giáo hiện lên trước chắn ngang trước khi tới panel chọn mua nl.. cho nên mình phải thêm 1 dòng code me.AnswerQestion(1) vào để nó chọn câu trả lời "ta muốn hỏi chuyện khác..." --> tới panel bán nl và típ tục nv bvd như thường... chúc các bạn vọc phá thành công nha...hehe lưu ý: một số bạn không dùng vô hạn truyền tống phù..mà chỉ mua hồi thành phù thì chịu khó kéo thêm xuống dưới mà thêm vào dòng code tương tự nhá...thêm vào phần function tbSuperBao.CBuyHTPhu(selft) đó...