[JX] Hướng dẫn cơ bản về source jx
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 15
  1. #1
    Vi phạm quy định
    Ngày tham gia
    Jun 2011
    Bài viết
    102
    Thanks
    0
    Thanked 156 Times in 30 Posts

    Hướng dẫn cơ bản về source jx

    minhf thấy nhiều người phàn nàn việc có source jx rồi àm cũng không biết phát triển ra sao .hôm nay mình xin hướng dẫn sơ qua về cách vọc source mà mình biết các bạn có thể tham khảo

    1.quy trình vận hành
    +có 5 file chạy liên quan:paysys,,godess,bishop,s3relay,gameserver
    +nó được khỏi động theo thứ tự trên
    +khi 1 clietn kết nối đến sv nó sẽ kết nối đến port của paysys để ping sv và đăng nhập tk
    +nếu đăng nhập đúng,thì paysys gửi 1 gói tin đến bishop để lấy thông tin về tài khoản:thông tin các nhân vật
    +khi bạn chon 1 nv nó sẽ gửi về sv,và bishop dựa vào đó để truy nhập tới godess(datbase player) lấy dữ liệu và sau đó gửi dwux liệu player đến gamesv
    +gamesv kiểm tra xem có thê tạo được player đó ko,nếu được thì sau đó player có thể vào game
    +trong quá trình chơi game client và server trao đổi ở 3 dạng:1 là ping kết nối,2 là các packet chat,tong và 3 là các packet tương tác

    2.dev source
    +trong dev source ta chủ yếu quan tâm đến 2 phần đó là core và s3client.
    +core ở đây là lõi game,điều khiển toàn bộ quá trình hoạt động của game,và clietn là tương tác giao diện đồ họa

    +trong core được chia làm 2 loại là coreserrver và coreclient.khác nhau bởi đinh nghĩa _SERVER
    #ifdef _SERVER là server
    #ifndef _SERVER ko pahri sv là client

    a.viết 1 packet game
    +ví dụ viết 1 packet send 1 task của player từ sv đến client
    -vào trong KProtocolProcess.h trong class KProtocolProcess tìm phần client,viết 1 hàm: void SV_SendTask(BYTE*nPacket);
    -vào trong KProtocolDef.h tìm phần enum s2c_PROTOCOL và kếo đến cuối enum đó và trên đoạn s2c_extend = 250, khái báo 1 giao thức
    s2c_sendtask,
    -vào trong kprotocol.h viết 1 struct
    typedef struct
    {
    BYTE nProtocolType;//giao thức
    BYTE ntaskid;//idtask,với bản gốc thì max task là 256=1 byte
    int ntaskvalue;//giá trị của task
    }SVSENDTASK;
    -vào trong kprotocol trogn phần protocolsize bạn tìm phần client kéo suống tìm 1 cái giao thức mà nó ở trên cái giao thức s2c_sendtask(xem trong kprotocoldef.h )và viết thêm vào 1 dòng :sizeof(SVSENDTASK),
    ở đây có thêm 1 kiều giá trị nữa là -1(phần này để sau)


    -vào trong KProtocolProcess.cpp tìm method KProtocolProcess::KProtocolProcess() tìm phần client và thêm đoạn này:
    ProcessFunc[ s2c_sendtask] = &KProtocolProcess::SV_SendTask;//gán 1 con trỏ hàm

    -tiếp tục giờ là đến công đoạn viết hàm
    vì là truyền từ sv đến clietn nên hàm này sẽ được gọi từ client

    #ifndef _SERVER
    void KProtocolProcess::SV_SendTask(BYTE*nPacket)
    {
    SVSENDTASK *temp=(SVSENDTASK*)nPacket;
    Player[CLIENT_PLAYER_INDEX].m_ctask.SetSaveVal(temp->ntaskid,temp->ntaskvalue);
    }
    #endif

    -để truyền packet kia ta làm như sau;ở sv tại 1 hàm bất kì
    void hambatky(idx,taskid,taskvalue)
    {
    SVSENDTASK temp;
    temp.nProtocolType=s2c_sendtask;//giao thức là send task
    temp.ntaskid=100;
    temp.ntaskvalue=1000;

    g_pServer.PackDataToClient(&temp,sizeof(SVSENDTASK ));//packet đến client

    }

    +mình đã nói sơ qua về cách viết 1 packet cho game,phần sv thì các bạn làm ngược lại
    -các bạn có thể tìm hiểu thêm để hiểu kỹ cách viết


    b.cấu trúc item
    +các thành phần liên quan:
    -kitem chứa toàn bộ dữ liệu cảu item được tạo ra
    -kitemgengerator:tạo ra 1 item
    -còn 1 file load và chứa thông tin của item ở setting thì minh quên rồi,để lúc nào tìm lại
    -kitemlist quản lý item của player
    -itemset là class quản lý item chung
    -KInventory là quản lý ô chưa như hànht rang....
    -kbuysell là quản lý shop bán item
    -kobj,kobjset là quản lý các item rơi dưới đất

    +ở đây mình không hướng dẫn sâu về item mà chỉ đưa ra những cái cần thiết,còn lại các bạn cso thể tự tìm hiểu,vì hướng dẫn rất mất thời gian

    +cách tạo trang bị hoàng kim,hay trang bị với 6 opmagic được quy định bởi setting
    -vào trong cái file loaditem gì đó tìm hiểu cấu trúc load item ,và bạn tìm phần của itemequipment cho load thêm 20 cột(typeitem,groupitem,6 op(id,vamin,vamax))
    -typeitem,biến này dùng để phân loại các loại đồ,bạn cso thể cho=1 là item hk
    -group là phân loại các bộ item như ab,dq......
    -đối với item hoàng kim cso op môn phái,do sv ko có những opid môn phái nên ta có thể làm mẹo dùng 1 mức phân định
    trong server có khoảng 200 op,vạy ta sẽ lấy 500 là mốc,tính từ 501 trở đi là id của op skill
    ví dụ skill baovulehoa có id=112,vậy nếu đồ hk môn phái dm muốn có skill này tâ khai bao 1 id là:500+112=612

    -trong 2 method tạo item của class itemgengerator: gen_equipment và gen_exitsequipment kéo suống dứoi cùng dưới phần tạo op ta kt nếu là op hk thi gọi đến hàm createophk(),và trong hàm này bạn có thể randomop đơn giản với các tham số min max

    -trong toán từ gán của class kitem bạn gán 6 op đó vào opattribmagic của class kitem

    -cách hiển thị thông tin:
    trong kitem::GetDesc: trong phần hiện tên item và op item bạn kiêm tra nếu là itemtrangbi và là item hk thì chỉnh màu hiện thị,muốn thếm màu mới cso thể vào file text.cpp trong engine

    ****kích hoạt item hoàng kim:
    khi player trang bị item vào người tại hàm kitemlist::Equip
    dưới cùng hàm đó bạn thêm 1 hàm mới là checkitemhk(idxitem)

    có nhiều cách để check xem có đủ 1 bộ tiem để kích hoạt không
    mìnnh xin nới sơ qua về 1 cách:

    +tạo 1 mảng biến đếm số item cso trogn 1 nhóm,và 1 biến đếm số nhóm
    +duyệt tất cả item được trang bị trên người,kiêm tra vị trí cso item và là item hk,co nhóm>0
    +nếu item[i] thảo ãm điều kiện trên thì tiếp tục duyệt tất cả số nhóm đã có xem nó có trong nhóm nào,nếu cso thì tăng thêm số lượng item cho nhóm +đó,ngược lại thì ta cho nó vào 1 nhóm mới

    +sau hki duyệt song,ta sẽ duỵet mảng nhóm đã có kiểm tra xem nhóm nào có tổng số item >=số item max của nhóm đó
    +nếu có đủ 1 bộ thì thwucs hiện kích hoạt lại toàn bộ op ẩn của các item đăng trang bị trên người
    +để có thế lấy được thông tin so tiem và loai tiem của mỗi nhóm bạn có thể làm trogn phần load item ở setting


    ****cách phục hồi trang bị bị mất do mất đồ,rollbackdata
    +bạn có thể xem cách load item từ dữ liệu của nhận vật trong phần laod player trogn kplayerdbfuncs.cpp
    +2 tham số cần để phục hồi là randomseed và luck


    **** dài vãi,nói mãi không hết,nhảy qua vậy,để sau viết tiếp.

    ***cách khác phục hack mất nhân vật:
    -chủ yếu là do dùng phần mềm nào đó để đổi tên của player lưa chọn để vào game,chống ở client là gần như vô dụng
    -cách khả dĩ nhất là chống ở sv,cụ thể là ở bishop,bạn có thể tạo 1 danh sách các palyer xếp theo thứ tự giam dần theo level và phân theo kí tự tên để cho dễ truy suất,sau đó mã hóa tên thành 1 số bằng hàm băm thông qua cái g_filename2id
    -khi client truyền dwux liệu paleyr đến bạn lọc lấy tên và mã hóa thành số rồi so sán với cái danh sách đã có.chỉ nên duyệt giới hạn ,vì duyệt nhiều quá làm nghẽn sv.
    -cách kt nhanh hay chậm còn tùy thuộc vào trình độ code của bạn
    -cách cảu mình cũng ko phải là tốt lắm


    ***vào liền lúc 1 nhân vật 2 lần.thường dựa vào lỗi này để bug dupe đồ
    -cái này chủ yếu do máy chủ kém,nên xử lý hơi chậm,làm cho nó bug
    -mình chưa nghĩ ra cách nào tốt tạm thời chỉ dùng cách duyệt lại toàn bộ mảng player có trong server,sau khi tìm thấy tk này rồit hì khóa nó lại
    và dump đến vị trí cần làm tiếp,khi 1 cleitn gửi dữ liệu cùng lúc nó cũng duyệt đến đoạn này và lcus này nó sẽ kt tk này bị kháo chưa nếu khóa rồi thì return.vì bishop nó làm việc tuần tự




    tạm thời đến đây,hơi oải tí đọc song đừng chém,có gì thì góp ý thôi
    Khách viếng thăm hãy cùng LeHuyetVoHon xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. The Following 25 Users Say Thank You to LeHuyetVoHon For This Useful Post:

    assaa (28-02-12), banynavy (25-02-12), continental (16-11-12), debaf9 (12-09-12), DirectX (27-02-12), Faker (28-02-12), greentears (26-02-12), heocon246 (25-02-12), heybaby2707 (25-02-12), ICarus (25-02-12), jerryvn (12-04-12), jxonline94 (25-02-12), jxvietnam (25-02-12), kakalot1 (22-05-12), kenthp (13-08-12), keraotinh (07-07-12), KingMax (27-02-12), LBLN2N (05-09-12), Learning (25-02-12), thaihoa91 (25-02-12), thecong (25-02-12), tieudieuphong (29-02-12), tuan20083000 (26-02-12), vipprolc (07-03-12), yukite26 (26-03-13)

  3. #2
    Thành Viên
    Ngày tham gia
    Jun 2010
    Bài viết
    85
    Thanks
    3
    Thanked 62 Times in 9 Posts

    Ðề: hướng dẫn cơ bản về source jx

    rất là vip Xin cảm ơn . Phát huy tiếp nhé bạn
    Lần sửa cuối bởi thaihoa91, ngày 27-02-12 lúc 07:36 AM.
    Khách viếng thăm hãy cùng caothiengthien xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  4. #3
    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

    Ðề: hướng dẫn cơ bản về source jx

    Good nhưng có vẻ rất khó hiểu vì không có kiến thức nền vì lập trình
    Khách viếng thăm hãy cùng assaa xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  5. #4
    Thành Viên
    Ngày tham gia
    Aug 2010
    Bài viết
    18
    Thanks
    2
    Thanked 3 Times in 2 Posts

    Ðề: hướng dẫn cơ bản về source jx

    xin lỗi nhưng mình không hiểu gì hết. bạn có thể nói tổng quan về source được không, thư mục nào chứa project làm nhiệm vụ gì. ví dụ như bây giờ mình muốn xem xem source nó load nhân vật rồi vẽ lên màn hình ntn, thì mình phải mở project nào lên. chẳng hạn thế.
    Khách viếng thăm hãy cùng ngọa hổ xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  6. #5
    Vi phạm quy định
    Ngày tham gia
    Jun 2011
    Bài viết
    102
    Thanks
    0
    Thanked 156 Times in 30 Posts

    Ðề: hướng dẫn cơ bản về source jx

    bạn ngọa hổ này,hình như gặp ở đâu,rồi có phải bên rpgmaker
    add nick tôi đi,có việc cần pm:lehuyetvohon
    Khách viếng thăm hãy cùng LeHuyetVoHon xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  7. #6
    Thành Viên
    Ngày tham gia
    Jan 2012
    Bài viết
    142
    Thanks
    18
    Thanked 470 Times in 43 Posts

    Ðề: hướng dẫn cơ bản về source jx

    Hic, chưa build được cái source thì chưa ứng dụng được mấy cái này. Có ai hướng dẫn build được 1 cái source không error không ?
    Khách viếng thăm hãy cùng invalidpw xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  8. #7
    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

    Ðề: hướng dẫn cơ bản về source jx

    Trích dẫn Gửi bởi invalidpw [Only registered and activated users can see links. ]
    Hic, chưa build được cái source thì chưa ứng dụng được mấy cái này. Có ai hướng dẫn build được 1 cái source không error không ?
    Trong source có mấy cái sdk và lib của nó, bác wăng vào đường dẫn chứa lib của VC++ 6.0 để có đủ lib là ko errors !
    Khách viếng thăm hãy cùng thaihoa91 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  9. #8
    Thành Viên
    Ngày tham gia
    Jan 2012
    Bài viết
    142
    Thanks
    18
    Thanked 470 Times in 43 Posts

    Ðề: hướng dẫn cơ bản về source jx

    Vấn đề là có 1 đống file, không biết cái nào cần quăng vào.
    Khách viếng thăm hãy cùng invalidpw xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  10. #9
    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

    Ðề: hướng dẫn cơ bản về source jx

    Trích dẫn Gửi bởi invalidpw [Only registered and activated users can see links. ]
    Vấn đề là có 1 đống file, không biết cái nào cần quăng vào.
    Lúc trước tui vọc, toàn wăng sạch sẽ vào vì cái nào cũng cần cả
    Khách viếng thăm hãy cùng thaihoa91 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  11. #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

    Ðề: Hướng dẫn cơ bản về source jx

    Bạn nào có thể làm 1 cái video hướng dẫn build source mà không bị error được không. để mọi người cũng có thể tự làm cho riêng mình 1 server mà không phải phụ thuộc vào ai cả
    Khách viếng thăm hãy cùng assaa xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

 

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

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

  1. Bình Chọn: source V75 tốt nhất
    Bởi wonlee trong diễn đàn Maple Story
    Trả lời: 10
    Bài viết cuối: 06-02-13, 06:26 PM
  2. [JX] Hot - Source Jx3
    Bởi evilbaby1 trong diễn đàn Releases
    Trả lời: 25
    Bài viết cuối: 21-05-12, 04:57 PM
  3. [MU] Xin source FIX NON PVP ở GS
    Bởi vietpro8x trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 1
    Bài viết cuối: 10-02-12, 10:44 AM

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à 02:01 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ệ.