[JX] Source code - Tạo trap mới cho map
Hello & Welcome to our community. Is this your first visit? Đăng Ký
Follow us on
Follow us on Facebook Follow us on Twitter Linked In Flickr Watch us on YouTube My Space Blogger
 
Trang 1 của 2 1 2 CuốiCuối
Kết quả 1 đến 10 của 19
  1. #1
    Thành Viên thienthanden2's Avatar
    Ngày tham gia
    Jun 2007
    Đang ở
    Thiên đường đã lỡ...
    Bài viết
    217
    Thanks
    14
    Thanked 183 Times in 73 Posts

    Source code - Tạo trap mới cho map

    Xin chào mọi người!
    Có lẽ việc mò ra trap đôi khi làm chúng ta đau đầu, vì có nhiều trap quá khó để tìm ra. Thôi thì chúng ta không cần nhọc công nữa mà code luôn từ source cho nhanh. Hôm nay mình xin hướng dẫn cách tạo 1 trap mới ở bất kỳ nơi đâu.
    Mình xin lấy ví dụ trap từ Cái Bang qua Dương Châu. Đây là cách kiểm tra tọa độ trong game bằng script lua :
    Code:
    function kiemtratoado()
    w,x,y = GetWorldPos();
    Msg2Player("Ban dang o Map "..w.." Toa do "..x..", "..y)
    end;
    Bây giờ bắt đầu thay đổi source:
    1. File \JX\swrod3\SwordOnline\Sources\Core\Src\KNpc.h
    Tìm và khai báo thêm 1 hàm mới
    PHP Code:
    .....................................
     
    int                    m_NpcSettingIdx;        // Npc的设定文件索引
        
    int                    m_CorpseSettingIdx;        // Npc的尸体定义索引
        
    char                ActionScript[80];        // Npc的行为脚本
        
    char                ScriptFile[100];        //dòng thêm để chứa đường dẫn file script .lua tạm thời
        
    DWORD                m_ActionScriptID;        // Npc的行为脚本ID(使用时用这个来检索)
        
        
    DWORD                m_TrapScriptID;            // Npc的当前Trap脚本ID;
    ..............................................
        
    void                OnWalk();
        
    void                DoRun();
        
    void                OnRun();
        
    void                OnTrap(); // dòng thêm
        
    void                DoSkill(int nXint nY);
        
    int                    DoOrdinSkill(KSkill pSkillint nXint nY);
        
    void                OnSkill();
    ............................................ 
    2. File \JX\swrod3\SwordOnline\Sources\Core\Src\KNpc.cpp
    Tìm hàm void KNpc::Init() và thêm
    PHP Code:
    .........................
     
    ZeroMemory(Name32);        // Npc的名称
        
    m_NpcSettingIdx 0;        // Npc的设定文件索引
        
    m_CorpseSettingIdx 0;        // Body的设定文件索引
        
    ZeroMemory(ActionScript,32);
        
    ZeroMemory(ScriptFile,sizeof(ScriptFile)); // chỉ thêm  dòng này để khởi tạo
        
    m_ActionScriptID 0;
        
    m_TrapScriptID 0;
    ........................... 
    Thêm hàm OnTrap() vào 1 số trạng thái có sẵn của nhân vật
    PHP Code:
    void KNpc::OnRun()
    {    
        
    OnTrap(); // dòng thêm
        
    WaitForFrame();
        
    ServeMove(m_CurrentRunSpeed);

    PHP Code:
    void KNpc::OnWalk()

        
    OnTrap(); // dòng thêm
    #ifndef    _SERVER
        // 处理客户端的动画换帧等……
    #endif
        
    WaitForFrame();
        
    ServeMove(m_CurrentWalkSpeed);

    PHP Code:
    BOOL KNpc::OnJump()
    {    
        
    OnTrap(); // dòng thêm
        
    ServeJump(m_CurrentJumpSpeed);
        if (
    WaitForFrame())
        {
            
    DoStand();
            
    m_ProcessAI    1;
            return 
    FALSE;
        }
        return 
    TRUE;

    Thêm và xử lý hàm OnTrap()
    PHP Code:
    void KNpc::OnTrap() // chức năng: tạo trap by thienthanden2
    {
    if (
    IsPlayer())

    switch (
    SubWorld[m_SubWorldIndex].m_SubWorldID)
    {
    case 
    115// ID của map Cái Bang xem trong worldset.ini, muốn tạo trap ở map khác thì thêm 1 case khác
        
    {
        
    int nPosX 0;
            
    int nPosY 0;
            
    GetMpsPos(&nPosX, &nPosY);
        
            if ((
    nPosY/32)>4032)    // Cái Bang to Dương Châu
            
    {
            
    sprintf(ScriptFile,"\\script\\global\\trap\\caibang\\caibang2duongchau.lua"); // Đường dẫn file script lua sẽ chạy khi giẫm lên trap này
            
            #ifdef _SERVER
            
    Player[m_nPlayerIdx].ExecuteScript(ScriptFile"main"0);
            
    #endif
            
    ZeroMemory(ScriptFile,sizeof(ScriptFile));
            }
        }break;    
    default:
            break;    
    }        
    }

    Tọa độ (nPosY/32)>4032) do các bạn sử dụng hàm check tọa độ trong game mà có, vì trường hợp trên là dạng đường đi rộng nên chỉ cần kiểm tra tọa độ Y, nếu đường đi hẹp thì kiểm tra bằng cách sau, ví dụ từ Dương Châu qua Cái Bang:
    PHP Code:
    if ((nPosY/32)<2819 && (nPosX/32)>1945 && (nPosX/32)<1970)    //Từ Duơng Châu qua Cái Bang có 1 đường đi rất hẹp 
    3. Cuối cùng các bạn tạo 1 file CaiBang2DuongChau.lua theo đường dẫn thư mục đã chỉ định phía trên có nội dung như sau, các bạn có thể code thêm cái gì đó tùy ý:
    PHP Code:
    --Script by Ken Nguyen (thienthanden2)
    Include(
    "\\script\\global\\serverlib.lua");
    Include(
    "\\script\\global\\sourcejx49.lua");

    function 
    main()
    NewWorld(16,1955,2823)
    SetFightState(1)
    end
    Thế là tạo xong 1 trap mới Ở trên có thể áp dụng cho trường hợp đường đi có chiều ngang, với chiều dọc thì các bạn tùy chỉnh lại 1 chút xíu thôi, Vấn đề đặt ra là nếu cửa có góc 45 độ xéo thì có check được chính xác ko? Câu trả lời là YES, nhưng đó là phần dành cho các bạn suy nghĩ. Chúc các bạn thành công.
    Lần sửa cuối bởi thienthanden2, ngày 05-02-13 lúc 08:06 PM.
    Khách viếng thăm hãy cùng thienthanden2 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. The Following 15 Users Say Thank You to thienthanden2 For This Useful Post:

    assaa (05-02-13), binhjx (07-02-13), Bi_Dep_Trai (05-02-13), Edward_Newgate (05-02-13), gj4cm0y3u3m (05-02-13), jxvietnam (08-02-13), lkusa1992 (06-02-13), nhoxmap_b7 (05-02-13), phamngochai2 (05-02-13), tagtag15 (05-02-13), thaihoa91 (05-02-13), trananh88vt (05-02-13), vipprolc (08-02-13), Vo Le (13-06-13), yukite26 (26-03-13)

  3. #2
    Thành Viên Tâm Huyết assaa's Avatar
    Ngày tham gia
    Jul 2009
    Bài viết
    915
    Thanks
    271
    Thanked 416 Times in 236 Posts

    Ðề: Source code - Tạo trap mới cho map

    Hay quá bác ơi. thank bác nhiều
    Khách viếng thăm hãy cùng assaa xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  4. #3
    Thành Viên
    Ngày tham gia
    Dec 2012
    Bài viết
    428
    Thanks
    9
    Thanked 123 Times in 84 Posts

    Ðề: Source code - Tạo trap mới cho map

    cái nài có thể chạy qua chạy lại maps giống VNG hả
    Khách viếng thăm hãy cùng Bi_Dep_Trai xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  5. #4
    ♔YONKOU♔ Edward_Newgate's Avatar
    Ngày tham gia
    Nov 2010
    Bài viết
    2,773
    Thanks
    533
    Thanked 1,059 Times in 655 Posts

    Ðề: Source code - Tạo trap mới cho map

    Nhưng mà cái này thì mỗi maps lại phải thêm vào source à
    Nên làm cái nào mà chỉ thêm 1 lần ở source, còn muốn làm trap thì edit script ý, thế có vẻ dễ hơn
    STRONGEST MAN

  6. #5
    Super Moderator thaihoa91's Avatar
    Ngày tham gia
    Apr 2008
    Bài viết
    12,110
    Thanks
    662
    Thanked 3,167 Times in 1,602 Posts

    Ðề: Source code - Tạo trap mới cho map

    Đơn giản thui, cho nó load các thông số toạ độ từ .txt là dc ấy mà
    Khách viếng thăm hãy cùng thaihoa91 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  7. Các thành viên gởi lời cảm ơn đến thaihoa91 vì bài viết này !

    quangken (06-02-13)

  8. #6
    Thành Viên
    Ngày tham gia
    Dec 2012
    Bài viết
    428
    Thanks
    9
    Thanked 123 Times in 84 Posts

    Ðề: Source code - Tạo trap mới cho map

    Trích dẫn Gửi bởi thaihoa91 [Only registered and activated users can see links. ]
    Đơn giản thui, cho nó load các thông số toạ độ từ .txt là dc ấy mà
    chạy qua chạy lại maps hả anh
    Khách viếng thăm hãy cùng Bi_Dep_Trai xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  9. #7
    Super Moderator thaihoa91's Avatar
    Ngày tham gia
    Apr 2008
    Bài viết
    12,110
    Thanks
    662
    Thanked 3,167 Times in 1,602 Posts

    Ðề: Source code - Tạo trap mới cho map

    Trích dẫn Gửi bởi Bi_Dep_Trai [Only registered and activated users can see links. ]
    chạy qua chạy lại maps hả anh
    Thì nó là trap đó @@ 30 charrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
    Khách viếng thăm hãy cùng thaihoa91 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  10. #8
    Thành Viên XiTop's Avatar
    Ngày tham gia
    Feb 2010
    Bài viết
    84
    Thanks
    10
    Thanked 12 Times in 10 Posts

    Ðề: Source code - Tạo trap mới cho map

    Trích dẫn Gửi bởi Bi_Dep_Trai [Only registered and activated users can see links. ]
    chạy qua chạy lại maps hả anh
    chính xác rồi bạn,di chuyển wa lại giữa các map thông với nhau như VNG ấy
    Khách viếng thăm hãy cùng XiTop xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  11. #9
    Super Moderator thaihoa91's Avatar
    Ngày tham gia
    Apr 2008
    Bài viết
    12,110
    Thanks
    662
    Thanked 3,167 Times in 1,602 Posts

    Ðề: Source code - Tạo trap mới cho map

    Thật ra chỉ có 1 số maps đường dẫn trap ko đúng theo tên truyền thống nên khó lấy dc thì có thể dùng code này và chỉnh sửa cho nó load .txt sẽ linh hoạt hơn, còn đa số thì dùng trap .dat vẫn ổn, vì code này sẽ chạy liên tục để check nhân vật, nên sẽ tốn thêm bộ nhớ
    Khách viếng thăm hãy cùng thaihoa91 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  12. #10
    Thành Viên Tâm Huyết assaa's Avatar
    Ngày tham gia
    Jul 2009
    Bài viết
    915
    Thanks
    271
    Thanked 416 Times in 236 Posts

    Ðề: Source code - Tạo trap mới cho map

    Trích dẫn Gửi bởi thaihoa91 [Only registered and activated users can see links. ]
    Thật ra chỉ có 1 số maps đường dẫn trap ko đúng theo tên truyền thống nên khó lấy dc thì có thể dùng code này và chỉnh sửa cho nó load .txt sẽ linh hoạt hơn, còn đa số thì dùng trap .dat vẫn ổn, vì code này sẽ chạy liên tục để check nhân vật, nên sẽ tốn thêm bộ nhớ
    Anh hòa có thể demo cách làm load từ file .txt cho tui em đc mở mang tầm mắt đc ko
    Khách viếng thăm hãy cùng assaa xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  13. Các thành viên gởi lời cảm ơn đến assaa vì bài viết này !

    colauhong (08-11-14)

 

 
Trang 1 của 2 1 2 CuốiCuối

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

  1. [JX] Source code - Hướng dẫn fix tốc độ đánh giữa 2 cửa sổ
    Bởi thienthanden2 trong diễn đàn Guides - Kho Lưu trữ
    Trả lời: 13
    Bài viết cuối: 19-07-13, 07:12 PM
  2. [JX] Source code phân biệt kênh chát
    Bởi radise trong diễn đàn Võ Lâm Truyền Kỳ (Jx Server)
    Trả lời: 9
    Bài viết cuối: 15-05-13, 08:38 PM
  3. [JX] anh em cho mình xin Source code
    Bởi babyturtle.vn7 trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 2
    Bài viết cuối: 29-11-12, 03:55 PM
  4. Source code
    Bởi alisson trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 5
    Bài viết cuối: 11-07-11, 02:17 AM
  5. Bàn về Source Code Jx đầy đủ, ai có hứng thú thì vào.
    Bởi thachlong78 trong diễn đàn Võ Lâm Truyền Kỳ (Jx Server)
    Trả lời: 54
    Bài viết cuối: 14-06-11, 02:07 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à 08:08 AM.
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ệ.