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. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    Giải pháp của bạn cho Tàng kiếm là hay đấy vì nó dựa vào phong cách chơi phổ biến của phái đấy :4cool_baffle: nhưng áp dụng cho ông Vạn hoa biến thái thì lại toi ngay, nhưng VH thì kiểu gì cũng là kinh mạch Hoa gian rồi nên ko phải nghĩ :6cool_boss:
    Còn để lấy threat thì có hàm cập nhật threat là ApplyCharacterThreatRankList(dwCharacterID). Ví dụ mình muốn cập nhật cừu hận với boss đang là target chẳng hạn thì dùng là ApplyCharacterThreatRankList(target.dwID). Tất nhiên là mình ko cần chạy cái hàm này thì game vẫn đều đặn cận nhật cừu hận thôi nhưng lúc cần lấy chạy hàm này thì nó cập nhật cừu hận ngay. Sau khi hàm này được thực thi thì nó sẽ sinh ra một event là "CHARACTER_THREAT_RANKLIST", event này trả ra nhiều arg nhưng mình quan tâm tới 2 cái là arg0 chính là ID của nhân vật đang cập nhật cừu hận và arg1 chưa giá trị cừu hận của tất cả các player đối với nhân vật đó. Có thể truy suất giá trị cừu hận của mình bằng ID của mình thông qua hàm GetClientPlayer().dwID hoặc hàm UI_GetClientPlayerID() kiểu arg1[UI_GetClientPlayerID()], Rank cừu hận mà chúng ta nhìn thấy trong bảng thống kê cừu hận là so sánh giữa cừu hận của mình và cừu hận của target. Lấy cừu hận của target bằng arg1[arg2].
    Nói lằng nhằng nhưng nếu viết thành hàm nó sẽ thế này.
    Mã:
    local dwMyHatred=0
    local dwTargetRank=0
    RegisterEvent("CHARACTER_THREAT_RANKLIST", function()
    	if arg0 == target.dwID then
    		if arg2 and arg1[arg2] then
    			dwTargetRank = arg1[arg2]
    			if dwTargetRank == 0 then
    				dwTargetRank = 65535
    			end
    			nHatred = arg1[UI_GetClientPlayerID()] or 0
    			dwMyHatred = (nHatred / dwTargetRank) * 100
    		end
    	end
    end)
    -------------------------------------
    function GetMyHatred(target)
    ApplyCharacterThreatRankList(target.dwID)
    return dwMyHatred
    end
    
     
  2. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    GetBuffList
    Một vài bài trước mình đã nói về hàm GetBuffList trả ra một bảng và trong đó có một số trường và mọi người đã làm quen với các trường này là dwID, nEndFrame và nStackNum, hôm nay mình giới thiệu nốt 2 trường còn lại là:
    dwID: BuffID
    nLevel: Buff Level
    bCanCancel: có thể hủy bằng cách chuột phải vào buff hoặc dùng hàm CancelBuff
    nEndFrame: Buff End Time
    nIndex: buff index
    nStackNum: số tầng của buff
    dwSkillSrcID: ID của đối tượng tạo ra buff này
    Với chừng này thông tin thì chúng ta có thể dùng để giải quyết thêm một số việc nữa.
    Ví dụ: hủy buff tự động (mình đã từng thấy có bạn MG hỏi làm sao hủy Tham ma thể bằng chỉ lệnh thì phải :D), kiểm tra xem buff hay debuff có phải do mình đánh ko để đánh tiếp.
    Mình sẽ nâng cấp hàm CheckBuff bằng cách thêm vào một tham số nữa để quy định xem có check buff do chính mình đánh ra hay ko?
    Mã:
    function CheckBuff(target,dwBuffID, bSrc)
    me=GetClientPlayer()
    tBuffList=target.GetBuffList()
    for z,x in pairs(tBuffList) do
    	if x.dwID==dwBuffID then
    		if bSrc then
    			if x.dwSkillSrcID=me.dwID then
    				return true
    			else
    				return false
    			end
    		else
    			return true
    		end
    	end
    end
    	return false
    end
    
    Chẳng hạn khi chúng ta muốn check trên người ta hay trên người buff có một buff nào ko mà ko quan tâm tới buff đó từ đâu ra thì để bSrc là false, còn nếu muốn check xem buff đấy có phải là của chúng ta gây ra hay ko thì để nó là true.
    Ví dụ: Thuần dương khi cắm kiếm Phá Thương Khung sẽ nhận được buff Phá Thương Khung, tuy nhiên buff này có dwSkillSrcID là của thanh kiếm chứ ko phải là của người, vì vậy nếu để bSrc là true thì cứ hết cooldown Phá thương khung là nó lại cắm kiếm.
     
    Chỉnh sửa cuối: 24/1/14
  3. uglydauhu

    uglydauhu Youtube Master Race

    Tham gia ngày:
    7/1/14
    Bài viết:
    35

    Sao hàm ko chạy vậy bác, mình đánh thế này có đúng ko???
    if not CheckBuff(me,3881,true) then use(3702) end
     
  4. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    vấn đề là check cái buff 3881 đấy trên đối tượng nào? Nếu check trên người mình thì đúng, còn check trên người đối phương thì là sai :3cool_embarrassed:
     
  5. uglydauhu

    uglydauhu Youtube Master Race

    Tham gia ngày:
    7/1/14
    Bài viết:
    35
    Mình check chiêu Huyền Thuỷ Cổ của bản thân mà, no ko chạy bạn ơi :9cool_pudency:
     
  6. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    Ban căng nhỉ, để mai mượn con Ngũ Độc check xem sao :6cool_boss: toàn ngồi viết nhưng ko test :4cool_baffle:
     
  7. journeyman2005

    journeyman2005 Youtube Master Race

    Tham gia ngày:
    29/3/08
    Bài viết:
    5
    Cái trò check skill TK thì chắc chắn là đúng vì đã nâng đến đạp tuyết tầm mai tức là phải nâng gần 20 điểm vào bảng vấn thủy rồi, ko thể nào nâng đạp tuyết khi theo sơn cư đc =)) Còn bố nào ko thèm nâng đạp tuyết khi đánh vấn thủy thì.. miễn bàn, mình bó tay :)) Tương tự cho bên sơn cư. Thanks về cái tên event nhé, mình register đc rồi :D
     
  8. journeyman2005

    journeyman2005 Youtube Master Race

    Tham gia ngày:
    29/3/08
    Bài viết:
    5
    Mã:
    if x.dwSkillSrcID=me.dwID then
    thay 2 dấu == vào là ok thôi.
     
  9. uglydauhu

    uglydauhu Youtube Master Race

    Tham gia ngày:
    7/1/14
    Bài viết:
    35
    Thank đã chạy, thế mà mình không để ý :3cool_adore:
     
  10. AnndyW

    AnndyW Youtube Master Race

    Tham gia ngày:
    29/1/12
    Bài viết:
    53
    Cái hàm GetMyHatred sử dụng ntn vậy bạn, giá trị trả về của nó là % phải ko nhĩ :7cool_waaaht:
    vậy để check cừu hận của mình vs target để buff Bằng Hư Ngự Phong thì sao nhĩ
    if GetMyHatred(T)>80 then Use(355) end phải ko nhĩ :1cool_dribble:
     
  11. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    Thì đúng là để làm thế đấy ;) 30 char này :))
     
  12. boylove67

    boylove67 Youtube Master Race

    Tham gia ngày:
    5/5/05
    Bài viết:
    82
    Mấy cái buff 30ph tốt nhất ko nên dùng marco xài :3cool_embarrassed: nó phụ thuộc vào tâm pháp trong trấn phái mà sẽ có id khác nhau. Nếu có tăng tâm pháp hổ trợ thì sẽ cho ra 1 id buff khác với khi ko tăng
     
  13. zomadop92

    zomadop92 Youtube Master Race

    Tham gia ngày:
    10/6/11
    Bài viết:
    42
    ai xem giùm e cái này cái e thêm phần not cheackbuff vao thì nó lại không dùng đc :9cool_canny:
     
  14. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    id nó là cái gì thế? :7cool_waaaht:
     
  15. zomadop92

    zomadop92 Youtube Master Race

    Tham gia ngày:
    10/6/11
    Bài viết:
    42
    if HP<20 and not CheckBuff (p,367) then Use(422) end
    đấy có cái này thì lại ko đc and not CheckBuff:9cool_canny:
     
  16. aochoangxanh

    aochoangxanh The Warrior of Light Lão Làng GVN

    Tham gia ngày:
    30/8/04
    Bài viết:
    2,317
    vừa đọc mấy bài trước, có người sử dụng "not" như sau:
    if D>=3 and CheckBuff(p,3890) and H2>30 then U(233) end
    if D>=3 and CheckBuff(p,3890) and H2<30 then U(243) end
    if not(CheckBuff(p,3890)) and D>=3 then U(247) end


    -> if HP<20 and not(CheckBuff(p,367)) then Use(422)

    nhớ chú ý khoảng trắng nhé
     
    Chỉnh sửa cuối: 27/1/14
  17. boylove67

    boylove67 Youtube Master Race

    Tham gia ngày:
    5/5/05
    Bài viết:
    82
    dư 1 space ngay sau chữ CheckBuff kìa :6cool_surrender:
    Phải là ]if HP<20 and not CheckBuff(p,367) then Use(422) end chứ ko phải CheckBuff (p,367)
     
  18. zomadop92

    zomadop92 Youtube Master Race

    Tham gia ngày:
    10/6/11
    Bài viết:
    42
    ra vậy thank các bác :2cool_sexy_girl:
     
  19. BabyStars

    BabyStars T.E.T.Я.I.S

    Tham gia ngày:
    5/7/08
    Bài viết:
    599
    Nơi ở:
    From Haven
    @bác Hà Anh:

    bác cho em hỏi chút: nếu muốn check trên người mình đang có 1 cái buff, nếu có cái buff đấy thì ưu tiên sử dụng 1 số skill trong list định trước thì dùng hàm nào ạ :D Em cảm ơn bác :D
     
  20. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    Bạn làm một hàm uselist như thế này chẳng hạn:
    Mã:
    function uselist(skillIDs)--sử dụng lần lượt skill nằm trong list
    for z,x in pairs(skillIDs) do
    	use(x) 
    end
    end
    
     

Chia sẻ trang này