boylove67
Youtube Master Race
cho mình hỏi trong chuỗi combo, nếu đánh miss thì làm sao![]()
đánh miss là sao ? skill chưa cd kịp hay là dame bị miss
mà combo của phái nào những skill j
nói rõ tý mới trả lời dcFollow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
cho mình hỏi trong chuỗi combo, nếu đánh miss thì làm sao![]()
nói rõ tý mới trả lời dc
VH thì khi cast skill miss nó sẽ cast lại.mình làm 1 chuỗi skill vạn hoa -> chiêu 1 -> chiêu 2 -> chiêu 3 mỗi chiêu tạo trên người mục tiêu 1 cái debuff (nếu trượt thì không có debuff) rồi chiêu cuối kích hoạt cái 3 cái debuff ấy gây dame
miss 1 trong 3 chiêu trên thì khi kich hoạt ko đạt đc dame to nhứt![]()
mình làm 1 chuỗi skill vạn hoa -> chiêu 1 -> chiêu 2 -> chiêu 3 mỗi chiêu tạo trên người mục tiêu 1 cái debuff (nếu trượt thì không có debuff) rồi chiêu cuối kích hoạt cái 3 cái debuff ấy gây dame
miss 1 trong 3 chiêu trên thì khi kich hoạt ko đạt đc dame to nhứt![]()

local function CheckBuff(buffID) đoạn này mình thiếu khai báo psửa lại thành local function CheckBuff(p,buffID) là dc
- - - Updated - - -
if not(CheckBuff(p, buffTVVN)) and CheckCDs(TVVN) then OnAddOnUseSkill(TVVN) end
ý mình nói là đoạn này nếu đã function checkCD skill ở trên r` xuống hàm điều kiện lại check thêm lần nữa làm j o.o

local function CheckCDs(skillID) hàm này đã check tất cả skill r` ko cần phải khai báo local skill ở trên nó cũng checkHàm mà ko gọi thì nó check thế nào![]()
local function CheckCDs(skillID) hàm này đã check tất cả skill r` ko cần phải khai báo local skill ở trên nó cũng check

Trời ạ, đấy là khai báo một hàm, sau đó muốn dùng phải gọi nó ra và đưa tham số vào![]()
mình đang nói là bạn đã khai báo hàm check cd skill thì sao xuống điều kiện bạn lại CheckCDs(TVVN) để làm j thôi.
mún tìm vài người đam mê marco tham khảo tý mà khó vậtbạn ơi cho hỏi code prepare nghĩa là gì
Lạy hồnmình đang nói là bạn đã khai báo hàm check cd skill thì sao xuống điều kiện bạn lại CheckCDs(TVVN) để làm j thôi.
Bạn ko thích có người góp ý thì thôimún tìm vài người đam mê marco tham khảo tý mà khó vật


/script local p=GetClientPlayer()
local T=GetTargetHandle(p.GetTarget())
local MP=p.nCurrentMana*100/p.nMaxMana
local K=p.nAccumulateValue
local THSkills={355,309,364,300}
local A,B,C=p.GetSkillCDProgress (310,p.GetSkillLevel(310))
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
local function CheckCDs(skillId)
bOnCD,currentCDTime,totalCDTime = p.GetSkillCDProgress(skillId,p.GetSkillLevel(skillId)) return currentCDTime/16 == 0 end
local function Use(skillIDs)
for z,x in pairs(skillIDs) do
if(CheckCDs(x)) then OnAddOnUseSkill(x) return true end end end
if MP<80 and K>=8 then OnAddOnUseSkill(316) end
if not(CheckBuff(p,1376)) then OnAddOnUseSkill(312) end
if not(CheckBuff(p,378)) then OnAddOnUseSkill(362) end
if K==10 then OnAddOnUseSkill(365) end
if K<=2 then OnAddOnUseSkill(313) end
OnAddOnUseSkill(2699)
Use(THSkills)
if C==0 and T.GetSkillPrepareState() then use(310) end
/script N=GetClientPlayer()
/script T=GetTargetHandle(N.GetTarget())
/script P=N.nAccumulateValue
/script mn=N.nCurrentMana*100/N.nMaxMana
/script function use(id) A,B,C=N.GetSkillCDProgress(id,N.GetSkillLevel(id)) if C==0 then OnAddOnUseSkill(id,N.GetSkillLevel(id)) end end
/script function buff(mb,id,lvl) for z,x in pairs(mb.GetBuffList() or {}) do if x.dwID==id and (lvl==nil or x.dwLevel==lvl) then return true end end return false end
/script D,E,F=N.GetSkillCDProgress(310,N.GetSkillLevel(310));
/script if T.GetSkillPrepareState() and N.GetSkillPrepareState() then N.StopCurrentAction() end
/script if F==0 and T.GetSkillPrepareState() then use(310) end
/script if mn<80 and P>=9 then use(316) end
/script if not buff(N,378) then use(362) end
/script if not buff(N,561) then use(361) end
/script use(355)
/script use(300)
/script if P==10 then use(365) end
/script use(2699)
/script if P<3 then use(313) end
/script use(58)
/script use(309)
/script use(364)
Đây là đoạn marco của TD Thái Hư mình test theo kiểu dùng lệnh local các skill chạy bt ko gặp vấn đề j cảMã:/script local p=GetClientPlayer() local T=GetTargetHandle(p.GetTarget()) local MP=p.nCurrentMana*100/p.nMaxMana local K=p.nAccumulateValue local THSkills={355,309,364,300} local A,B,C=p.GetSkillCDProgress (310,p.GetSkillLevel(310)) 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 local function CheckCDs(skillId) bOnCD,currentCDTime,totalCDTime = p.GetSkillCDProgress(skillId,p.GetSkillLevel(skillId)) return currentCDTime/16 == 0 end local function Use(skillIDs) for z,x in pairs(skillIDs) do if(CheckCDs(x)) then OnAddOnUseSkill(x) return true end end end if MP<80 and K>=8 then OnAddOnUseSkill(316) end if not(CheckBuff(p,1376)) then OnAddOnUseSkill(312) end if not(CheckBuff(p,378)) then OnAddOnUseSkill(362) end if K==10 then OnAddOnUseSkill(365) end if K<=2 then OnAddOnUseSkill(313) end OnAddOnUseSkill(2699) Use(THSkills) if C==0 and T.GetSkillPrepareState() then use(310) end



Bạn có thể thử test xem khi hết cd thì có buff TVVN hay ko là bít và trong thời gian cd thì nó có báo là Đang trong thời gian điều chỉnh hay ko là bítBạn có thể giải thích cho mình việc dùng lệnh CheckCDs(x) để làm gì ko? Rõ ràng trước khi cast một chiêu thì bạn cần check xem nó có đang bị cooldown ko, ở đây bạn khai báo một list 4 skill trong cái array THskills rồi dùng vòng for để check cooldown trước khi đánh. Đối với TVVN bạn ko làm thế mà chỉ check buff thì mình cũng thấy lạ, nó chạy vì đơn giản là nó gọi skill đang cooldown ko được nó gọi tiếp skill sau thôi còn về mặt logic mà nói thì là ko hợp lý
Có thể để tiết kiệm ký tự thì cách lập trình của bạn là hợp lý nhưng đấy ko phải là thói quen của người lập trình![]()
Code của Tàu nó dùng OnUseSkill() nên copy về 100% ko xài dc phải sửa lại thành OnAddOnUseSkill() thì mới xài dc.Đọc lại code của thằng Tàu thì thấy nó làm chuẩn luôn vì nó viết một hàm use(id) với id là skillID được đưa vào và trong hàm use(id) này nó check cooldown của skill trước khi sử dụng lệnh UseAddOnSkill(id) để gọi skill đấy. Bạn tham khảo nhưng hình như tham khảo chưa đến nơi đến chốn![]()

Đây là đoạn marco của TD Thái Hư mình test theo kiểu dùng lệnh local các skill chạy bt ko gặp vấn đề j cảMã:/script local p=GetClientPlayer() local T=GetTargetHandle(p.GetTarget()) local MP=p.nCurrentMana*100/p.nMaxMana local K=p.nAccumulateValue local THSkills={355,309,364,300} local A,B,C=p.GetSkillCDProgress (310,p.GetSkillLevel(310)) 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 local function CheckCDs(skillId) bOnCD,currentCDTime,totalCDTime = p.GetSkillCDProgress(skillId,p.GetSkillLevel(skillId)) return currentCDTime/16 == 0 end local function Use(skillIDs) for z,x in pairs(skillIDs) do if(CheckCDs(x)) then OnAddOnUseSkill(x) return true end end end if MP<80 and K>=8 then OnAddOnUseSkill(316) end if not(CheckBuff(p,1376)) then OnAddOnUseSkill(312) end if not(CheckBuff(p,378)) then OnAddOnUseSkill(362) end if K==10 then OnAddOnUseSkill(365) end if K<=2 then OnAddOnUseSkill(313) end OnAddOnUseSkill(2699) Use(THSkills) if C==0 and T.GetSkillPrepareState() then use(310) end
. Code của thằng Tàu nó viết là nếu bạn đang vận công, đối phương cũng đang vận công thì bạn dừng ngay vận công và ra chiêu Kiếm phi kinh thiên sau đó mới là một loạt điều kiện kiểm tra mana dưới 80% và số ô khí lớn hơn hoặc bằng 4.5 thì nó cast Bão nguyên thủ khuyết. Tiếp theo nó check buff xem có Lăng Thái Hư và Toái Tinh Thần không thì nó buff, skill nó sẽ đánh lần lượt như sau:Bạn có thể thử test xem khi hết cd thì có buff TVVN hay ko là bít và trong thời gian cd thì nó có báo là Đang trong thời gian điều chỉnh hay ko là bít

Code của Tàu nó dùng OnUseSkill() nên copy về 100% ko xài dc phải sửa lại thành OnAddOnUseSkill() thì mới xài dc.
A,B,C hay bOnCD,currentCD,totalCD cũng chỉ là cách đặt tên thôi quan trọng là sau khi check CD thì theo addon tụi Tàu thì nó dùng lệnh OnAddOnUseSkill() để lập tức cast skill. Còn hàm của supperkhung post thì lấy cdtime hiện tại chia cho 16 nếu = 0 thì tính là skill đã cd xong sau đó trải qua thêm 1 phép tính
"local function Use(skillIDs)
for z,x in pairs(skillIDs) do
if(CheckCDs(x)) then OnAddOnUseSkill(x) return true end end end"
thì skill mới dc sử dụng.
Mình tự tin post marco mình tham khảo từ Tàu lên thì cũng đã qua ngâm cứu r` mới dám post. Còn như bạn nói thì chắc là mình tham khảo nhưng vẫn còn gà
2 loại khai báo hàm này đều có ưu nhược điểm riêng. Mình đã test dps thì loại 2 cho số dps cao hơn ~1-1k5 thế nên mình dùng loại 2 này
Post 2 loại cho mọi người tham khảo ai cảm thấy loại nào thích hợp với mình thì check, tìm hiểu, hỏi để hoàn thiện marco cho bản thân. Chẳng thể nào mà ôm nguyên si 1 marco của người khác về làm của mình dc cả.

Mình ghi rõ ràng là marco cho TD Thái Hư thì lấy đâu ra bát quái động huyền (370)há há, bây giờ mới rảnh ngồi đọc lại code thấy đoạn
if C==0 and T.GetSkillPrepareState() then use(310) end
quả là bá đạo vì bạn chơi Tử Hà thì lấy đâu ra kiếm phi kinh thiên mà ngắt skill vận công của đối phương, chưa kể đấy phải là lệnh đầu tiên trong list lệnh sử dụng thì bạn lại nhồi nó xuống cuối cùng. Chơi Tử Hà thì phải thay vào đó bằng skill Bát quái động huyền chứ. Code của thằng Tàu nó viết là nếu bạn đang vận công, đối phương cũng đang vận công thì bạn dừng ngay vận công và ra chiêu Kiếm phi kinh thiên sau đó mới là một loạt điều kiện kiểm tra mana dưới 80% và số ô khí lớn hơn hoặc bằng 4.5 thì nó cast Bão nguyên thủ khuyết. Tiếp theo nó check buff xem có Lăng Thái Hư và Toái Tinh Thần không thì nó buff, skill nó sẽ đánh lần lượt như sau:
Bằng Hư ngự phong
Ngưng thần tụ khí
Nếu ô khí lên tới 5 ô thì đánh Vô Ngã Vô Kiếm
đánh skill có ID là 2699 thì mình chịu ko biết là skill gì
nếu ô khí nhỏ hơn 1.5 thì gọi Thao Quang Dưỡng Hối
Mãnh hổ hạ sơn
Thiên địa vô cực
Tam Hoàn sáo nguyệt
Tất cả các chiêu nó đánh ra đều qua điều kiện check cooldown rồi nhé, chiêu nào đang cooldown là nó bỏ qua luôn.
- - - Updated - - -
Mình có thể cược bao nhiêu cũng được với bạn là nếu bạn cast TVVN lên rồi hủy buff TVVN đi để hết TVVN trong khi skill còn cooldown và chạy code của bạn sẽ thấy có thông báo là Đang điều tức![]()



Mình ghi rõ ràng là marco cho TD Thái Hư thì lấy đâu ra bát quái động huyền (370)
Marco mình tham khảo từ Tàu nên giống tụi nó ~50% từ khai báo các hàm còn thứ tự ra skill dc sắp xếp trong marco là do mình chơi Thái Hư và muốn xuất skill theo thứ tự đó. Mình có ghi rõ là tham khảo từ Tàu đấy thôi nên chả ngại j chuyện bản quyền cả
Tất nhiên là nó sẽ báo là đang điều tức nhưng cái đó có quan trọng đâu o.o bởi vì marco nó sẽ chạy tiếp skill tiếp theo cho đến khi nó buff dc nên nói chung là hết buff và hết cd nó sẽ buff liền. CÒn nếu có thêm điều kiện check CD thì cũng chỉ hơn dc 1 cái là nó ko báo đang điều tức và cd xong thì nó lập tức xài. Hiệu quả như nhau thì tại sao phải thêm 1 điều kiện vào cho marco nó dài ra. "Ý mình là như thế ko phải muốn tranh luận là marco của bạn sai và mình đúng. OK"
Mình chưa học qua lớp lập trình nào, chỉ tìm hiểu và sửa theo ý mình để có thể thuận tiện hơn và raid hiệu quả hơn. Góp ý với bạn để đơn giản hóa marco và cũng học hỏi thêm. Nếu bạn ko muốn tranh luận nữa thì thôi chả sao. Mình chỉ hiểu marco theo cách của mình và muốn làm nó gọn lại để add thêm điều kiện vậy thôi. Mình cũng chả hiểu nhiều về lý thuyết chỉ thực hành và rút ra những kinh nghiệm của riêng mình vậy thôi![]()
thế bạn bỏ cái hàm checkCD đi chắc macro của bạn vẫn chạy bt đấy, chỗ vòng for của function use ấy, tiết kiệm đc khối ký tự. Ngoài ra bạn sử dụng function OnAddOnUseSkill khá nhiều, nên viết lại một cái function chỉ là

