Một số cái hay về tọa độ bản đồ
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 9 của 9
  1. #1
    Thành Viên hongtu1's Avatar
    Ngày tham gia
    Oct 2008
    Bài viết
    663
    Thanks
    63
    Thanked 173 Times in 62 Posts

    Một số cái hay về tọa độ bản đồ

    Thấy Box jx dạo nào trầm quá nên mình lập topic góp vui.

    Như các bạn đã biết file *.dat quy định Npc, trap, obj, SetFightState. Đối với những map mà server đã có full những file *.dat như Ba Lang Huyện, Nam Nhạc Trấn thì mình không nói rồi vì nó đã có đầy đủ Npc, trap, obj, SetFightState. Nhưng đối với những map mà ta add thêm vào chỉ có file *.wor như Đại Lý, Cái Bang thì làm sao để add được Npc, obj và nhất là trap, SetFightState . Npc, obj thì các ban chắc ai cũng biết (nếu ai chưa biết thì vui lòng tìm xem lại bài của anh Akari), đây mình chỉ đề cập đến cách add trap và SetFightState.
    Ai đã tìm hiểu về file *.dat rồi có nhận thấy rằng file *.dat của trap và SetFightState khác so với file *.dat của Npc và obj (cả về cấu trúc mã hex) là nó có tác dụng tới Player. Tức là khi Player di chuyển tới tọa độ đó thì nó sẽ gọi 1 file *.lua và thực thi nội dung của file này. Đường dẫn tới file *.lua đó được quy định trong đoạn mã hex của file *.dat ( nói thật là giờ mình vẫn chưa biết nó được mã hóa kiểu gì, nếu ai biết rồi thì có thể giải giúp mình được thì thank nhiều). Nhưng đoạn mã đó lại không quy định tọa độ bản đồ. Tức là khi ta thay đổi tên của file *.dat thì tọa độ tác dụng sẽ thay đổi theo. Do vậy mình có thể lợi dụng cái này để add trap và SetFightState cho những map khác. Sau đây mình lấy 1 tọa độ làm gốc và làm mẫu luôn đó là tọa độ cổng ra phí Đông của Ba Lăng Huyện (202/206).
    Ta lấy tọa độ y/2 = 101 vậy tìm đến đường dẫn \Maps\两湖区\巴陵县\v_101 (các pro thông cảm, mình viết vậy để nếu new member có đọc thì cũng có thể hiểu được )
    Ta lấy tọa độ x/2 = 103 vậy trong folder v_101 ta lấy file 103_Region_S.dat
    File này quy định file *.lua có đường dẫn \Script\两湖区\巴陵县\trap\巴陵县东门.lua.

    [Only registered and activated users can see links. ]

    (trong file *.dat này còn có thêm cả cái bảng thông báo nên mình đã đưa tọa độ của nó về 0 tất để tiện khi đưa vào các map khác)
    Nhưng khi ta đem file 103_Region_S.dat để vào các map khác thì lúc di chuyển tới đó nó vẫn thực hiện hàm trong file 巴陵县东门.lua. Ví dụ mình đem file này để add trap đi từ Cái Bang sang Dương Châu chằng hạn, thì nó vẫn thực hiện đúng chức năng cũ là SetFightState. Vậy làm sao để cho nó hiểu tọa độ này là tọa độ trap di chuyển Player từ Cái Bang sang Dương Châu. Đơn giản thôi, mình dùng hàm GetWorldPos().
    Cú pháp: w,x,y = GetWorldPos()
    Trong đó: w = Id map mình đang đứng
    x = tọa độ x *8
    y = tọa đô y*16
    Dùng hàm if..then để kiểm tra, nếu nhân vật đứng ở Ba Lang Huyện thì SetFightState, còn đứng ở Cái Bang thì di chuyển nhân vật sang Dương Châu.


    function main(sel)
    w,x,y = GetWorldPos()
    if (w == 53) then
    if ( GetFightState() == 0 ) then
    SetPos(1654, 3242)
    SetFightState(1)
    else
    SetPos(1652, 3237)
    SetFightState(0)
    end;
    AddStation(10)
    end
    if (w == 115) then
    NewWorld(80,244*8,177*16)
    end
    end;
    Ta thấy rằng tọa độ trap di chuyển từ Cái Bang sang Dương Châu là 192/252.
    Ta lấy 192/2 = 96, 252/2 = 126. Vậy ta copy file 103_Region_S.dat vào \Maps\中原南区\丐帮\丐帮\v_096\ rồi đổi tên thành 126_Region_S.dat. Ok, giờ chạy lại server và xem kết quả.

    Như vậy, với cách làm này ta có thể add full trap một cách dễ dàng hơn và add SetFightState cho nhân vật khi ra vào thành mà chỉ cần quan tâm tới 1 file *.dat và 1 file *.lua. Thậm chí, mở rộng hơn ta có thể dùng nó để SetTask cho nhiệm vụ ( cái này do chơi TGHM thấy có dạng nhiệm vụ này hay hay nên add vào jx cho đa dạng ).
    Ví dụ mình muốn có một nhiệm vụ như sau: Long Ngũ giao nhiệm vụ cho bạn đi về phía Nam Ba Lang Huyện dò xét. Bạn đi tới tọa độ 178/212 rồi phát hiện ra tình hình, quay về báo tin cho Long Ngũ, hoàn thành nhiệm vụ:

    Longngu.lua:
    function main()
    sonhap = 1

    if (GetTask(1) == 0) then
    Say("<color=yellow>Long Ngu<color>: Nguoi muon lam nhiem vu so nhap ha?",2,"Dung vay/yes","Khong muon/no")
    elseif (GetTask(1) == 1) then
    Say("<color=yellow>Long Ngu<color>: Nhiem vu ta giao nguoi van chua lam sao?",1,"Oi chet, Ta quen khuay di mat/no")
    elseif (GetTask(1) == 2) then
    Talk(4,"thuong","<color=yellow>Long Ngu<color>: The nao? Nguoi da biet duoc gi noi ta nghe xem nao.","<color=green>"..GetName().."<color>: Tai ha phat hien O phia Nam moi xuat hien may ten sat thu","<color=yellow>Long Ngu<color>: Hen chi dan lang hay bi mat trom nhu vay. Can phai di trung tri chung moi duoc.","<color=yellow>Long Ngu<color>: Nguoi cung kha lam, da hoan thanh tot nhiem vu ta giao, ta se thuong cho nguoi")
    else
    Say("<color=yellow>Long Ngu<color>: Sao khong lo luyen cong di Dai hiep",1,"Ket thuc doi thoat/no")
    end
    end;

    function yes()
    Say("<color=yellow>Long Ngu<color>: Gan day ta nghe dan lang ke rang ho rat hay bi mat trom, Nguoi hay di ve phi Nam tim hieu xem su that do dau",1,"Ok. Ta di ngay/no")
    SetTask(1,1)
    end;

    function thuong()
    AddRepute(10)
    Msg2Player("Nhan duoc 10 diem Danh Vong")
    end;

    function no()
    end;
    Àh, một vấn đề nữa ở đây là nếu 1 map cần add nhiều trap, SetFightState hoặc SetTask thì kiểm tra ID map vẫn chưa đủ nên ta cần phải kiểm tra thêm cả tọa độ nhân vật đang đứng.
    Dùng hàm floor : chia lấy phần nguyên
    Cú pháp: tdx = floor(x / 8) : lấy x chia cho 8 rồi gán kết quả vào tdx
    Vậy trong file 巴陵县东门.lua của mình sẽ viết như sau:



    function main(sel)
    w,x,y = GetWorldPos()
    tdx = floor(x / 8)
    tdy = floor(y / 16)
    if (w == 53) and (tdx >= 206 ) and (tdx <= 207) and (tdy == 202)then
    if ( GetFightState() == 0 ) then
    SetPos(1654, 3242)
    SetFightState(1)
    else
    SetPos(1652, 3237)
    SetFightState(0)
    end;
    AddStation(10)
    end

    if (w == 115) then
    NewWorld(80,244*8,177*16)
    end

    if (w == 53) and
    (tdx == 178) and
    (tdy == 212) and
    (GetTask(1) == 1 ) then
    Talk(1,"","Thi ra la vay!Tai day moi xuat hien may ten sat thu, Ta phai ve bao tin cho <color=yellow>Long Ngu<color> biet moi duoc")
    SetTask(1,2)
    end
    end;
    Tương tự , ta đổi tên file 103_Region_S.dat thành 089_Region_S.dat và copy file vào \Maps\两湖区\巴陵县\v_106\ . Giờ add file longngu.lua vào npc nào đó rồi thử làm nhiệm vụ xem. Kết quả nè:

    [Only registered and activated users can see links. ]

    Nếu ai chưa hiểu thì có thể download file mấy file của mình về tham khảo:
    [Only registered and activated users can see links. ]
    Topic kết thúc. Mod đọc bài thấy có ích thì cho xin cái ghim nha kẻo để lâu bị đẩy về sau bị mất tích

    Àh nhân tiện share file *.wor map Tương Dương của võ lâm 2 cho mọi người ai đã add thành công map Phong Thần thì về add thử dùm mình vào xem có được không, nếu thành công thì chỉ cho mình với nha. Thank nhiều.
    Link:[Only registered and activated users can see links. ]
    Mình add vào toàn bị đen màn hình vậy nè:
    [Only registered and activated users can see links. ]
    Lần sửa cuối bởi hongtu1, ngày 11-10-09 lúc 02:10 PM.
    Khách viếng thăm hãy cùng hongtu1 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

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

    tieusuquay79 (25-04-13)

  3. #2
    Thành Viên
    Ngày tham gia
    Oct 2009
    Bài viết
    13
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Ðề: Một số cái hay về tọa độ bản đồ

    mở hàng nhaz bài viết rất hay
    Khách viếng thăm hãy cùng luckyboy2000 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  4. #3
    Thành Viên Tâm Huyết giangleloi's Avatar
    Ngày tham gia
    Mar 2008
    Đang ở
    Lâm Đồng
    Bài viết
    1,877
    Thanks
    38
    Thanked 394 Times in 136 Posts

    Ðề: Một số cái hay về tọa độ bản đồ

    xem lại spr và các file dat của client, hoặc khai count của file pak mới cao lên, bài viết cũng thực chất là hd add trap => định hướng move ko cần npc như VNG => Thanks
    Khách viếng thăm hãy cùng giangleloi xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  5. #4
    Vi phạm quy định
    Ngày tham gia
    Apr 2007
    Đang ở
    ☼♥ ®€Žø In Dä Høü§€ ♥☼
    Bài viết
    958
    Thanks
    6
    Thanked 78 Times in 25 Posts

    Ðề: Một số cái hay về tọa độ bản đồ

    Thực sự không hiểu cho lắm vì không rành về maps nhưng dù sao cũng thank 1 phát
    Khách viếng thăm hãy cùng Mr.Rezo™ xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  6. #5
    Thành Viên
    Ngày tham gia
    May 2009
    Bài viết
    67
    Thanks
    3
    Thanked 3 Times in 3 Posts

    Ðề: Một số cái hay về tọa độ bản đồ

    bài viếtt rất hay ! thanks nha bro
    Khách viếng thăm hãy cùng penhung xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

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

    Ðề: Một số cái hay về tọa độ bản đồ

    Hay lắm hongtu1 ! Ngoài việc là làm trap có sẵn thì hongtu1 lại sáng tạo thêm 1 cách add nhiều trap bằng hàm ! Quá hay ! Quá hay ! ^__^
    Khách viếng thăm hãy cùng thaihoa91 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  8. #7
    Thành Viên Tâm Huyết errorxviii's Avatar
    Ngày tham gia
    Dec 2008
    Bài viết
    604
    Thanks
    6
    Thanked 56 Times in 18 Posts

    Ðề: Một số cái hay về tọa độ bản đồ

    Cái maps VL2 mình cũng đã add thử rồi, không được đâu. Này nhé: các file spr ở jx1 thì được bỏ vào thư mục \spr\, nhưng bên bản jx2-kt thì KS để nó vào \images\, mà game jx1 không tài nào load được thư mục này? Muốn thử load không thì cậu thử unpack 1 cái file nào vào thư mục \images\ xem nó có chịu unpack cái đó không->suy ra game jx1 cũng không load được>.<
    [Only registered and activated users can see links. ]
    Visit us: [Only registered and activated users can see links. ]

  9. #8
    Thành Viên Tâm Huyết giangleloi's Avatar
    Ngày tham gia
    Mar 2008
    Đang ở
    Lâm Đồng
    Bài viết
    1,877
    Thanks
    38
    Thanked 394 Times in 136 Posts

    Ðề: Một số cái hay về tọa độ bản đồ

    quy định spr trong dat của client mà error? chứ sao fs lại load dc ! thôi cho topic vào kho lưu trữ nhé!
    Khách viếng thăm hãy cùng giangleloi xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  10. #9
    Thành Viên Tâm Huyết errorxviii's Avatar
    Ngày tham gia
    Dec 2008
    Bài viết
    604
    Thanks
    6
    Thanked 56 Times in 18 Posts

    Ðề: Một số cái hay về tọa độ bản đồ

    Pa gà wa, FS với jx là bản nén file pak kiểu cũ. Bản mới phát triển từ jx2 đến bản kiếm thế đang chơi tui thấy nó nén hình ảnh spr ở thư mục khác. Thì các file .dat load hình ảnh cấu trúc, building thì dạng \spr\..\đường dẫn dến thư mục chứ spr phong cảnh, building\*.spr, còn các file dat của jx2 khác: dạng \images\path\*.spr
    Pa mở data nó ra mà xem, có thấy các file pak của nó có dạng image_*.pak không?
    Muốn add gì từ FS wa jx1 thì có thể khả thi, còn jx2 thì bó tay. Các hình ảnh hiển thị trong game trừ một số spr của ui thì còn lại đều ở chuẩn khác. VD: .mesh,3e
    Không phải chê add tùm lum game khác wa làm hỏng game jx cổ điển sao mà giờ muốn làm làm gì?
    [Only registered and activated users can see links. ]
    Visit us: [Only registered and activated users can see links. ]

 

 

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à 07:28 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ệ.