Tìm hiểu/ vọc phá plugin kiếm thế ...

Thảo luận trong 'Kiếm Thế' bắt đầu bởi buno, 26/10/10.

  1. buno

    buno Legend of Zelda

    Tham gia ngày:
    13/7/04
    Bài viết:
    996
    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 ..:D
    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++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!
     
    Chỉnh sửa cuối: 28/10/10
    vbthathay, Aniki and final_fantasy_X_ like this.
  2. Zeratul...

    Zeratul... Legend of Zelda

    Tham gia ngày:
    4/3/07
    Bài viết:
    941
    Nơi ở:
    Orgrimmar
    học ngôn ngữ .lua đã T_T X_X
    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ì?
     
    Chỉnh sửa cuối: 27/10/10
  3. LiệtHỏa

    LiệtHỏa Mr & Ms Pac-Man

    Tham gia ngày:
    17/9/10
    Bài viết:
    144
    người ta làm mình xài thôi chứ mình chẳng bit gì về mấy cái này :))
     
  4. final_fantasy_X_

    final_fantasy_X_ Mega Man

    Tham gia ngày:
    20/12/07
    Bài viết:
    3,130
    Cái này chuyên môn quá , mùa về lập trình nhìn vào thì hoa cả mắt nên:(
     
  5. atkd1890

    atkd1890 T.E.T.Я.I.S

    Tham gia ngày:
    19/1/09
    Bài viết:
    692
    Nơi ở:
    Japan
    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 :D.

    btw, thanks chủ 2pic rất nhiều.
     
  6. thaonet

    thaonet Dragon Quest

    Tham gia ngày:
    8/7/05
    Bài viết:
    1,275
    Nơi ở:
    Gò Vấp
    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 :D VD như call mở máu tranh đoạt, thoát khỏi quân doanh ....
     
  7. buno

    buno Legend of Zelda

    Tham gia ngày:
    13/7/04
    Bài viết:
    996
    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...
     
    Chỉnh sửa cuối: 27/10/10
  8. Inferboy

    Inferboy Liu Kang, Champion of Earthrealm Lão Làng GVN

    Tham gia ngày:
    31/12/06
    Bài viết:
    5,146
    Bài viết rất có ích, thx buno rất nhiều.
     
  9. Rocketeer

    Rocketeer T.E.T.Я.I.S Lão Làng GVN

    Tham gia ngày:
    18/10/10
    Bài viết:
    588
    Nơi ở:
    Blue Sky
    Nhìn rối cả mắt@-). Nhưng mà đọc tí đã
     
  10. thaonet

    thaonet Dragon Quest

    Tham gia ngày:
    8/7/05
    Bài viết:
    1,275
    Nơi ở:
    Gò Vấp
    buno edit giải thích trực tiếp vào code đi. Cho dễ nhìn cũng dễ hiểu hơn
     
  11. vitamin123

    vitamin123 Legend of Zelda

    Tham gia ngày:
    16/5/09
    Bài viết:
    1,104
    Nơi ở:
    Từ đâu kệ
    bài viết hay quá :D

    à 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 :D , nếu ko đúng xin bỏ qua , trình lập trình còn gà :)
     
  12. Zeratul...

    Zeratul... Legend of Zelda

    Tham gia ngày:
    4/3/07
    Bài viết:
    941
    Nơi ở:
    Orgrimmar
    ừ, đồng ý kiến != là khác, ~= mới thấy à O_O
     
  13. lucifekit

    lucifekit The Warrior of Light

    Tham gia ngày:
    25/2/06
    Bài viết:
    2,344
    Tùy ngôn ngữ nữa chứ :( ,khác có thể là !=,có thể là <>,chắc ở ngôn ngữ này khác là ~=.
     
  14. buno

    buno Legend of Zelda

    Tham gia ngày:
    13/7/04
    Bài viết:
    996
    đú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...
     
  15. hachip2611

    hachip2611 T.E.T.Я.I.S Lão Làng GVN

    Tham gia ngày:
    21/6/09
    Bài viết:
    584
    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:(
     
  16. Cfants_dang

    Cfants_dang Dragon Quest

    Tham gia ngày:
    4/3/03
    Bài viết:
    1,455
    Nơi ở:
    perfect world
    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ũ .
     
  17. buno

    buno Legend of Zelda

    Tham gia ngày:
    13/7/04
    Bài viết:
    996
    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
     
  18. buno

    buno Legend of Zelda

    Tham gia ngày:
    13/7/04
    Bài viết:
    996
    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) đó...
     
    Chỉnh sửa cuối: 8/11/10
  19. .::DND::.

    .::DND::. C O N T R A

    Tham gia ngày:
    4/2/07
    Bài viết:
    1,958
    Nơi ở:
    Hà Nội
    unpack client ra mà tìm, trong đó nhiều lắm :D
     
  20. Inferboy

    Inferboy Liu Kang, Champion of Earthrealm Lão Làng GVN

    Tham gia ngày:
    31/12/06
    Bài viết:
    5,146
    BUNO hay "khoái lạc song châu NGÂM DẤM" cho boy hỏi cái auto self buff ON/OFF chỉnh thế nào vậy?
     

Chia sẻ trang này