Cách sử dụng script macro căn bản

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

  1. boylove67

    boylove67 Youtube Master Race

    Tham gia ngày:
    5/5/05
    Bài viết:
    82
    :5cool_big_smile: ohm chạy dc nhưng có cảm giác ko dc ổn định lắm trong bảng dps thấy đánh chay nhiều hơn xài marco kia 10-20% o.o
    Skill Cắt vận công lúc nào cũng đưa lên đầu mà, cái marco kia viết để test thử xem có chạy ko nên nhét vào cho đủ quân số :5cool_big_smile: với cả có 1 dòng lệnh StopActions nữa nên chả sợ. Mà lệnh stopaction này cho vào marco của TK or TDnoi thì hơi mệt vì gặp mấy con boss vận công lâu hay vận công liên tục như Khang Tuyết Chúc trong HCNC thì coi như xác định là nó đứng múa luôn :5cool_sweat: Lúc đó đành phải bấm tay
     
  2. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    Theo mình thì chuẩn nhất cứ làm cái hàm use skill như thằng Tàu này này, trước khi gọi skill luôn check cooldown, không bao giờ sợ cái thông báo điều tức mà cũng gọn nhẹ chương trình.
    Mã:
    function use(id) A,B,C=N.GetSkillCDProgress(id,N.GetSkillLevel(id)) if C==0 then OnAddOnUseSkill(id,N.GetSkillLevel(id)) end end
    
    Còn cắt skill thì nên dùng tay vì thực ra có cài target casting bar nên nhìn rõ lắm rồi :5cool_big_smile:
     
  3. Migikyo

    Migikyo Youtube Master Race

    Tham gia ngày:
    6/2/04
    Bài viết:
    42
    Ko bác nào làm Macro MG à :9cool_too_sad:
    MG là phái đánh mỏi tay nhất thì ko ai nghiên cứu, cái của bác SuperKhung ở trang đầu ko chạy được bùn wa.
     
  4. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    Vì đơn giản là các ông biết viết Macro thì không ai chơi MG :2cool_burn_joss_sti
     
  5. herosf2006

    herosf2006 Mega Man

    Tham gia ngày:
    19/3/08
    Bài viết:
    3,448
    Nơi ở:
    Đà Nẵng
    ai sửa giùm đoạn macro cho ĐM kinh vũ với

    Mã:
     /script local p=GetClientPlayer()
    local x = {3098,3087}
    local function CheckCDs(skillId)
    bOnCD,currentCDTime,totalCDTime = p.GetSkillCDProgress(skillId,p.GetSkillLevel(skillId))
    return currentCDTime/16 == 0
    end 
    
    local function CastSkillIDs(skillIDs)
    for z,x in pairs(skillIDs) do
    if(CheckCDs(x)) then
    OnAddOnUseSkill(x)
    return true
    end
    end
    end 
    
    OnAddOnUseSkill(3360)
    if p.nCurrentEnergy > 30 then CastSkillIDs(x) end
    
    Cast Xuyên Tâm Nỏ (3098) rồi check cooldown của Xuyên Tâm Nỏ (3098) nếu đang Cooldown thì cast Hóa Huyết Tiêu (3087)
     
    Chỉnh sửa cuối: 20/11/13
  6. boylove67

    boylove67 Youtube Master Race

    Tham gia ngày:
    5/5/05
    Bài viết:
    82
    if p.nCurrentEnergy>30 and CheckCDs(3098) then OnAddOnUseSkill(3098) else OnAddOnUseSkill(3087) end
     
  7. xFatal

    xFatal Dragon Quest

    Tham gia ngày:
    3/7/10
    Bài viết:
    1,389
    Nơi ở:
    [Trời sao]
    có cách nào để plugin tự gửi phím hoặc tự cast 1 skill nào đó không các bạn :1cool_look_down:

    kiểu như này này

     
  8. herosf2006

    herosf2006 Mega Man

    Tham gia ngày:
    19/3/08
    Bài viết:
    3,448
    Nơi ở:
    Đà Nẵng
    sài ko đc bạn à :2cool_sad:
     
  9. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    Mình dùng một chương trình khác send key vào game mà nó còn không nhận, tìm các API của game không thấy cái nào đề cập đến vụ này :9cool_too_sad:
     
  10. xFatal

    xFatal Dragon Quest

    Tham gia ngày:
    3/7/10
    Bài viết:
    1,389
    Nơi ở:
    [Trời sao]
    autoit gửi phím tốt, nhưng gửi inactive thì win7 không cho, thấy bọn nó bảo phải bypass được 1 số hàm API check phím của game
    có cách nào để lấy số stack của 1 buff không bạn?

    GetBuffList 获取Buff列表 无 如果函数执行成功,返回1个table,包含: dwID: BuffID nLevel: Buff等级 bCanCancel: 是否能取消 nEndFrame: Buff结束时间 nIndex: buff索引 nStackNum: buff叠加数 dwSkillSrcID: buff所属技能ID

    uỵt copy vào đây mới hiện ra cái nStackNum :8cool_amazed:


    如果函数执行成功,返回1个table,包含: dwID: BuffID nLevel: Buff等级 bCanCancel: 是否能取消 nEndFrame: Buff结束时间 nIndex: buff索引 nStackNum: buff叠加数 dwSkillSrcID: buff所属技能ID

    /script local p = GetClientPlayer()
    BuffList = p.GetBuffList()
    for z,x in pairs(BuffList) do
    if x.dwID == 4120 then
    Output(p.nIndex)
    Output(p.nStackNum)
    end
    end

    phiên bản vn chưa có 2 tham số phía trên thì phải, chẳng ra cái gì cả
     
    Chỉnh sửa cuối: 27/11/13
  11. zThienDinhz

    zThienDinhz Donkey Kong Lão Làng GVN

    Tham gia ngày:
    1/11/13
    Bài viết:
    370
    Nơi ở:
    Ha Noi, Viet Nam
    Đánh dấu phát. Tối về lên đọc. DPS con boss = tay lên đến 13K hết film. Đau cả tay.
     
  12. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    Hehe, người trong bang cần viết macro kiểu gì thì để tôi viết cho :4cool_beauty:

    - - - Updated - - -

    Lấy được, mình vẫn lấy hết các tham số đấy để đánh VH mà
     
  13. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    Mã:
    /script N=GetClientPlayer()
    T=GetTargetHandle(N.GetTarget())
    function buffstack(mb,id,lvl)
    stack=0
    for z,x in pairs(mb.GetBuffList() or {}) do
        if x.dwID==id and (lvl==nil or x.dwLevel==lvl) then
            stack=x.nStackNum
        end
    end
    return stack
    end
    Output(buffstack(N,1696))
    
    Lấy stack buff Tĩnh Minh của Vạn Hoa đây :4cool_beauty:
     
  14. herosf2006

    herosf2006 Mega Man

    Tham gia ngày:
    19/3/08
    Bài viết:
    3,448
    Nơi ở:
    Đà Nẵng
    nhờ mấy bác mà máy mò ra cái combo của ĐM Kinh Vũ :4cool_beauty:
     
  15. xFatal

    xFatal Dragon Quest

    Tham gia ngày:
    3/7/10
    Bài viết:
    1,389
    Nơi ở:
    [Trời sao]
    cao thủ :4cool_beauty: xin các hạ chỉ dạy vài chiêu được không :4cool_beauty:

    - - - Updated - - -

    /script local p = GetClientPlayer()
    for z,x in pairs(p.GetBuffList()) do
    if x.dwID == 4120 then
    Output(x.nStackNum)
    end
    end

    :4cool_beauty:
     
  16. xFatal

    xFatal Dragon Quest

    Tham gia ngày:
    3/7/10
    Bài viết:
    1,389
    Nơi ở:
    [Trời sao]
    có trò vui nè

    1- tạo 1 file functions.lua trong HM\src
    2- cho đoạn code này vào và save lại
    Mã:
    function checkbuff(target, buffID)
    buffed = false
    for z,x in pairs(target.GetBuffList()) do
    	if x.dwID == buffID then
    		buffed = true
    	end
    end
    return buffed
    end
    
    function buffstack(target, buffID)
    stack=0
    	for z,x in pairs(target.GetBuffList()) do
    		if x.dwID == buffID then
    			stack = x.nStackNum
    		end
    	end
    	return stack
    end
    
    function checkcd(target, skillID)
    bOnCD, currentCDTime, totalCDTime = target.GetSkillCDProgress(skillID, target.GetSkillLevel(skillID))
    if currentCDTime/16 == 0 then
    	return true
    else
    	return false
    end
    end
    3- vào config.ini của HM thêm vào
    trong đó xx là số tiếp theo trong dãy

    4- vào game và gọi hàm bét nhè mà không cần khai báo function trong script, tiết kiệm vãi lúa =))


    cái này chắc là giống cái YYL của bọn khựa :6cool_smile:
     
    Chỉnh sửa cuối: 27/11/13
  17. herosf2006

    herosf2006 Mega Man

    Tham gia ngày:
    19/3/08
    Bài viết:
    3,448
    Nơi ở:
    Đà Nẵng
    quá hay, đã rep cho cưng :4cool_beauty:
     
  18. xFatal

    xFatal Dragon Quest

    Tham gia ngày:
    3/7/10
    Bài viết:
    1,389
    Nơi ở:
    [Trời sao]
    bác KatherineHaAnh cho hỏi sao đoạn này không chạy
    mà đoạn này lại chạy
    Mã:
    /script local p = GetClientPlayer()
    local function CheckBuff(p,buffID)
    buffed = false
    for z,x in pairs(p.GetBuffList()) do
    if x.dwID == buffID then
    buffed = true
    end
    end
    return buffed
    end
    if not(CheckBuff(p,375)) then OnAddOnUseSkill(359) end
    :5cool_sweat:

    - - - Updated - - -

    hiểu rồi, đoạn này:


    Mã:
    local function CheckBuff(p,buffID)
    buffed = false
    for z,x in pairs(p.GetBuffList()) do
    Mã:
    local function checkbuff(target,buffID)
    BuffList = target.GetBuffList()
    buffed = false
    for z,x in pairs(BuffList) do
    bác cho hỏi cái đoạn khai báo đó có gì khác nhau, nó chỉ là tách rời ra thôi mà sao lại không chạy
     
    Chỉnh sửa cuối: 27/11/13
  19. zThienDinhz

    zThienDinhz Donkey Kong Lão Làng GVN

    Tham gia ngày:
    1/11/13
    Bài viết:
    370
    Nơi ở:
    Ha Noi, Viet Nam
    Ak. để tự ngâm cứu xem nó ntn. Nếu mà không viết được sẽ nhờ giúp =))
     
  20. KatherineHaAnh

    KatherineHaAnh Legend of Zelda

    Tham gia ngày:
    13/3/03
    Bài viết:
    1,114
    Về cơ bản thì hai đoạn khai báo đó chả khác gì nhau cả.
    Tặng các bác một số function hữu ích khi viết macro nhé
    Function sử dụng skill có ID là id, function sẽ tự check xem có cooldown ko mới dùng skill đó
    Mã:
    function use(target,id)
    A,B,C=N.GetSkillCDProgress(id,target.GetSkillLevel(id))
    if C==0 then
    OnAddOnUseSkill(id,target.GetSkillLevel(id))
    end
    end
    
    Function buff kiêm tra xem trên đối tượng target có buff là id ko, nếu có sẽ trả kết quả là số giây buff đó còn lại, nếu ko sẽ trả kết quả là 0
    Mã:
    function buff(target,id,lvl)
    l=0
    for z,x in pairs(target.GetBuffList() or {}) do
        if x.dwID==id and (lvl==nil or x.dwLevel==lvl) then
            l=x.nEndFrame-GetLogicFrameCount()
        end
    end
    return l/16
    end
    
    Function Cooldowntime trả về số thời gian còn lại của skill có ID là id
    Mã:
    function Cooldowntime(target,id)
    A,B,C=target.GetSkillCDProgress(id,target.GetSkillLevel(id))
    return B/16
    end
    
    Với chừng này hàm là các bạn có thể viết được macro khá như ý để thực hiện một routine maximize damage rồi :4cool_beauty:
     
    Chỉnh sửa cuối: 27/11/13
    xFatal thích bài này.

Chia sẻ trang này