Quản lý chỉ lệnh-Hướng dẫn và chia sẻ

Thảo luận trong 'Võ Lâm Truyền Kỳ phiên bản 3D' bắt đầu bởi KatherineHaAnh, 6/1/14.

  1. AnndyW

    AnndyW Youtube Master Race

    Tham gia ngày:
    29/1/12
    Bài viết:
    53
    Bác cho e hỏi các khai báo biến đối tượng p và T có thể khai báo thành biến toàn cục hay kiểu gì đó để trong mỗi hàm của từng phái khỏi phải khai báo lại ko :2cool_burn_joss_sti
    vd như 3 cái biến p T và MP, HP...
    [​IMG]
     
  2. uglydauhu

    uglydauhu Youtube Master Race

    Tham gia ngày:
    7/1/14
    Bài viết:
    35
    bạn đặt 2 functions khác nhau đuơng nhiên là phải khai báo lại rồi :5cool_big_smile:
     
  3. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    Cái này bắt buộc phải khai trong hàm nhé vì mỗi lần mình gọi hàm là nó gán biến mới để lấy được trạng thái mới nhất của biến. Ví dụ nếu để MP ra ngoài thì khi nội lực của nhân vật thay đổi nó sẽ không cập nhật :4cool_beauty:
     
  4. AnndyW

    AnndyW Youtube Master Race

    Tham gia ngày:
    29/1/12
    Bài viết:
    53
    À, còn 1 vấn đề nữa bác à, mình thường dùng đoạn này để nó buff các skill có thời gian cooldown nhỏ hơn thời gian duy trì buff ( ví dụ như PTK : cooldown 10s, duy trì 24s )
    Và mình có 1 thắc mắc là câu lệnh trên có gì khác biệt hay tối ưu hơn đoạn
    này không, theo mình hiểu thì đoạn phía trên sẽ buff PTK chỉ skill PTK không bị cooldown, còn đoạn dưới thì dù icon có xoay hay vẫn còn thời gian cooldown nó vẫn cast ra liên tục. Nhưng sao lúc chạy 2 đoạn code trên thì hệ thống vẫn báo : "Đang điều tức..." hoặc "Bạn đang bận..." nhĩ, có cách nào để khi đánh 1 đoạn macro hệ thống ko báo 2 câu như trên ko nhĩ? :6cool_smile:

    - - - Updated - - -

    mình nhầm đoạn code đầu tiên là : if not checkbuff...
     
  5. uglydauhu

    uglydauhu Youtube Master Race

    Tham gia ngày:
    7/1/14
    Bài viết:
    35
    Do hàm thứ 2 của bạn ko checkcd nên nó báo như thế bạn có thể kết hợp hàm hàm checkcd voi hàm use, thì lúc rea skill tự động nó check xem skill đó có cooldown hay ko sau đó mới ra skill :9cool_haha:
     
  6. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    Hệ thống thông báo "đang điều tức" thì là skill đang cooldown mà bạn vẫn gọi, còn nếu báo "đang bận" là bạn đang thi triển một skill khác, để giải quyết được vấn đề này thì bạn thêm hai hàm GetSkillCDProgress và GetSkillPrepareState và để kiểm tra xem chiêu bạn định cast có cooldown ko và bạn có đang chuẩn bị cast skill gì ko thì nó sẽ hết kêu ngay ấy mà :5cool_big_smile:
     
  7. AnndyW

    AnndyW Youtube Master Race

    Tham gia ngày:
    29/1/12
    Bài viết:
    53
    Cái GetSkillCDProgress thì ok rồi .
    Không hiểu sao mình dùng GetSkillPrepareState gắn vào khai báo hàm CheckSP() và đặt nó vào đầu mỗi câu điều kiện thì nó lại bị lỗi ko buff các skill buf lên, chỉ đánh các skill tấn công thôi, coi lại thì thấy cái này được dùng trong hàm ngắt skll boss, hay là nó chỉ có tác dụng với Skill tấn công nhĩ ? :2cool_burn_joss_sti
    Và sau đó mình tìm trong cái link của ông ở trang 1 có cái hàm GetOTActionState, khai báo như sau :
    và nhét vào thì lại sài đc :4cool_beauty:
    Và đây là kết quả, khá là hài lòng :5cool_big_smile:
    [​IMG]
     
  8. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    Đối với các anh hùng phó bản thì việc đối phó với boss cần tối đa sự tập trung để tìm cắt ngắt các skill nguy hiểm mà boss sắp đánh, nếu không ngắt được thì đôi khi công sức của các dps đổ sông đổ bể hết. Anh Kingsoft cũng rất tốt bụng khi public cho chúng ta một hàm để phát hiện ra lúc nào boss đang vận công. Trong cẩm nang bí kíp mình đã giới thiệu ở đầu tiên chúng ta có thể tìm thấy hàm GetSkillPrepareState() để thực hiện việc này :4cool_beauty:
    Hàm này là hàm gắn với đối tượng và không có tham số truyền vào. Kết quả hàm trả ra là 4 biến
    bIsPrepare: cho biết đối tượng có đang vận công hay không
    dwSkillID: nếu đối tượng đang vận công thì skill đang được sử dụng có id là gì
    dwSkillLevel: level của skill đang được vận công
    fProgress: trạng thái vận công hoàn thành được bao nhiêu %, giá trị chạy từ 0 đến 1.
    Nếu lấy được các thông số này rồi thì việc biết boss đang vận công skill gì và đánh ra skill thích hợp là dễ như trở bàn tay :5cool_big_smile:
    Công việc của chúng ta bây giờ là phải viết một hàm để kiểm tra xem boss đang vận công skill gì, nếu đúng skill mà ta thấy là nguy hiểm và cần phải ngắt ngay lập tức thì chúng ta sẽ lập tức sử dụng ngay skill có khả năng ngắt vận công của chúng ta để ngắt. Ví dụ Thuần Dương sẽ đánh ngay Bát Quái Động Huyền, Vạn Hoa sẽ bắn ngay Quyết Âm Chỉ. Hàm chúng ta cần viết sẽ lấy tham số vào là skill cần bị ngắt dwTerminatedID và skill sử dụng để ngắt dwTerminatingID, đặt tên hàm là TerminateSkill chẳng hạn.
    PHP:
    function TerminateSkill(dwTerminatedID,dwTerminatingID)
    me=GetClientPlayer()
    target=GetTargetHandle(me.GetTarget())
    bIsPrepare,dwSkillID,dwSkillLevel,fProgress=target.GetSkillPrepareState()
    if 
    bIsPrepare then
    if dwSkillID=dwTerminatedID then
    me
    .StopCurrentAction()
    use(
    TerminatingID)
    end
    end
    end
    Trong hàm này mình có dùng me.StopCurrentAction() chính là hàm để ngưng thao tác đang thực hiện ngay lập tức :5cool_big_smile:
    Sau khi có skill này rồi chúng ta có thể sử dụng như sau, giả sử mình chơi char Vạn Bông và muốn cắt skill Phệ Huyết Ảnh chẳng hạn sẽ dùng hàm này như sau:
    TerminateSkill(4269,183)
    Đọc đến đây thì nhiều bạn cũng sẽ tự hỏi là thế có 5-6 skill muốn ngắt thì phải viết tới 5-6 dòng TerminateSkill trong chỉ lệnh à :4cool_doubt: Câu trả lời là không, nếu có nhiều skill muốn ngắt thì tốt nhất là cho nó vào một cái mảng rồi dùng vòng for để duyệt, nếu nó nằm trong list thì lập tức ngắt skill ngay. Ví dụ bạn có 2 skill cần ngắt là Phệ Huyết Ảnh (4268) và Tịnh Dữ Vô Tịnh (4199), bạn sẽ cho vào một mảng có tên là TerminatedList.
    PHP:
    function TerminateSkill(dwTerminatingID)
    TerminatedList={4268,4199}
    me=GetClientPlayer()
    target=GetTargetHandle(me.GetTarget())
    bIsPrepare,dwSkillID,dwSkillLevel,fProgress=target.GetSkillPrepareState()
    if 
    bIsPrepare then
    for z,x in pairs(TerminatedList) do
    if 
    dwSkillID=x then
    me
    .StopCurrentAction()
    use(
    TerminatingID)
    end
    end
    end
    end
    Có hàm này rồi thì công việc đơn giản hơn là chỉ việc gọi
    TerminateSkill(183)
    Nếu boss mà vận công một trong các skill ở trong list ta đã khai Vạn Hoa sẽ sử dụng ngay Quyết Âm Chỉ để ngắt :5cool_big_smile:
     
  9. bizarre.dreams

    bizarre.dreams Youtube Master Race

    Tham gia ngày:
    27/11/11
    Bài viết:
    55
    Nơi ở:
    Hanoi City
    Ha Anh có thể giúp mình hàm check xem ID của pet 5 độc đang gọi là gì được k. Mình có dùng hàm bạn liệt kê ở trên nhưng không được. Liệu ID pet có trùng với ID Skill gọi pet k.
     
  10. boylove67

    boylove67 Youtube Master Race

    Tham gia ngày:
    5/5/05
    Bài viết:
    82
    Mỗi con pet dc gọi ra đều có ID khác nhau chả bít check thế nào lun :5cool_big_smile:
    Bạn thử làm 1 hàm gộp: nếu bản thân đang có pet và cd skill gọi rắn >30s thì => đang có pet rắn...tương tự vậy với mấy con còn lại xem
     
  11. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    dwPetID mà gắn với mình nó chỉ là ID của con pet lúc mình summon lên thôi, giống như lúc mình đăng nhập vào game là mình cũng có id trong biến dwID của mình đấy. Còn để check con Pet đấy nó thuộc loại gì thì phức tạp lắm, phải dùng hàm Station.Lookup("Normal/PetActionBar") để check cơ :5cool_sweat:
     
  12. bizarre.dreams

    bizarre.dreams Youtube Master Race

    Tham gia ngày:
    27/11/11
    Bài viết:
    55
    Nơi ở:
    Hanoi City
    Mình cũng thay phương án khác bằng khi bản thân vừa gọi rắn mà hết buff hiệu ứng gọi pet (10s giảm 100% ch, 20% dame), thì mới gọi bọ cạp + khi delay của rắn >30s mới xài hiến tế nhưng đoạn code k chạy. Thiết nghĩ nếu biết đc ID pet summon thì vẫn là dễ ra điều kiện nhất ~.~
     
  13. uglydauhu

    uglydauhu Youtube Master Race

    Tham gia ngày:
    7/1/14
    Bài viết:
    35
    Mình thì toàn xài tay, ứng biến nhiều trường hợp, nếu xài macro để gọi pet lúc cần thiết ko gọi được con khác ra thì an hành, giống như lúc đánh boss5 HCNC vd như TS ko lấy được cừu hận (Định Quân miss) thì có thể gọi Cóc ra để lấy cừu hận :2cool_burn_joss_sti. thiết nghĩ chắc cũng ko cần thiết để làm cái auto gọi pet đâu, nếu bạn theo cái compo Kho tàn cổ trước để lấy debuff 100pp 6%dame, sau đó mới xài Đoạt Mệnh Cổ để lấy dame, tiếp đó Hiến tế Linh xà rồi HạtTam thì bạn vẫn đủ thời gian để gọi thêm con rắn nữa sau đó lập lại compo. Trong bảng Kinh Mạch Trấn phái mỗi lần gọi pet đều có giảm cừu hận bản thân. thế nên 5doc cũng ko cần thiết gọi Thánh Hạt để giảm cừu hận lắm. Trừ một vài trường hợp như tanker bị ngã mất cừu hận thì lúc đó mới cần gọi Thánh Hạt sau đó hiến tế để giảm cừu hận. Việc gọi pet là ứng dụng nhiều trường hợp để gọi không nên để 1 compo cố định nào đó. Cái hay của 5doc là pet để ứng biến, nhưng mà cũng gặp nhiều khó khăn ở chỗ vừa đk Client vừa dk pet rất vất vả :5cool_sweat:
     
  14. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    Cho mình mượn một acc Ngũ Độc mình giải quyết vụ này cho :5cool_big_smile:
     
  15. boylove67

    boylove67 Youtube Master Race

    Tham gia ngày:
    5/5/05
    Bài viết:
    82
    Trường hợp của bạn bị trùng 2 lần hiệu ứng "Trùng Thú": khi gọi chưa có pet -> gọi pet -> hiến tế -> gọi pet nên bị trùng.
    Bạn tạo 1 list: GoiPet={2223,2221,2226} rồi dùng điều kiện: Nếu ko có buff "Trùng Thú" thì dùng list GoiPet thử xem.
    :5cool_big_smile:
     
  16. bizarre.dreams

    bizarre.dreams Youtube Master Race

    Tham gia ngày:
    27/11/11
    Bài viết:
    55
    Nơi ở:
    Hanoi City
    Kiếm đâu được acc nào cho bạn test nhỉ. Mình chơi Thuần Dương và đang viết cái combo 5 độc cho đứa em thôi.

    - - - Updated - - -

    Cám ơn bạn rất nhiều vì gợi ý này :4cool_beauty: Mình đã chỉnh lại điều kiện như sau: Với bản thân không có buff trùng thú thì gọi pet, rồi hiến tế cho hợp lý tránh trùng thú chưa hết mà đã gọi con nữa ra :3cool_angry:
     
  17. boylove67

    boylove67 Youtube Master Race

    Tham gia ngày:
    5/5/05
    Bài viết:
    82
    hôm nay vừa log acc TK đi pb mới phát hiện ra cái hàm Trấn phái ấy dùng với TK sida lắm :8cool_amazed: TK dùng 2 kiếm nên dùng hàm đó thì lúc đang cầm kiếm nhẹ thì nó lấy trấn phái là Vấn THủy cho dù là mình tăng kinh mạch sơn cư và ngược lại.
    Trấn phái TK chắc phải bỏ ra khỏi hàm này á :6cool_what:
     
  18. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    Nó lấy nội công mình sử dụng mà :5cool_big_smile: không lẽ rút kiếm bé mà vẫn dùng nội công Sơn Cư được :5cool_sweat:
    Ý của Uns là muốn sử dụng Sơn Cư thì cả một cái hàm Sơn Cư vẫn viết sử dụng chiêu thức của Vấn Thủy hả :5cool_big_smile:
     
  19. boylove67

    boylove67 Youtube Master Race

    Tham gia ngày:
    5/5/05
    Bài viết:
    82
    Là như thế này. Bảng trấn phái Vấn Thủy thì có skill Đạp TUyết Tầm Mai là dame chính của kiếm nhẹ. Đánh skill này thì lên hiệu ứng "Hàn Mai - sát thương Tịch Chiếu Lôi Phong + Vân Phi Ngọc Hoàng +30%/1stack" thường thì lên 9 stack mới đổi sang kiếm nặng chém 9 phát thì hết kiếm khí lại đổi về kiếm nhẹ
    => Nếu bảng Trấn phái là SƠn Cư thì ko có hiệu ứng này -> đánh kiếm nhẹ suốt luôn ko đổi kiếm :))Mà nếu đang dùng trấn phái sơn cư thì dùng Cửu Khê Di Yên thay cho Đạp Tuyết Tầm Mai để bơm kiếm khí cho lẹ.
    Phân tích thì thấy dài dòng chứ nói 1 cách đơn giản là marco TK viết dựa vào Trấn phái chứ ko như các phái khác dựa vào nội công cũng viết dc :5cool_big_smile: dở dở ương ương khó chiều a TK này lắm
     
  20. uglydauhu

    uglydauhu Youtube Master Race

    Tham gia ngày:
    7/1/14
    Bài viết:
    35
    MOVE_STATE.ON_STAND là đứng yên, MOVE_STATE.ON_DEATH là đang nằm ngủ , còn đang di chuyển thì sao bạn :5cool_sweat:
     

Chia sẻ trang này