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

cho mình hỏi trong chuỗi combo, nếu đánh miss thì làm sao :9cool_too_sad:

đá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 :5cool_big_smile: nói rõ tý mới trả lời dc
 
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 :6cool_smile:
 
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 :6cool_smile:
VH thì khi cast skill miss nó sẽ cast lại.
VD: Cast Lan Thôi Ngọc Chiết miss ko có hiệu ứng rút độc thì nó sẽ cast lại vì skill này cd = 0 còn những skill nào mà có cd thì nó chờ hết cd mới 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 :6cool_smile:

Kiểm tra trên target có đủ 3 cái buff TDC, LTNC, PDTD thì mới đánh NTCP được mà :4cool_beauty:

- - - Updated - - -

local function CheckBuff(buffID) đoạn này mình thiếu khai báo p :5cool_big_smile: sử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

Hàm mà ko gọi thì nó check thế nào :5cool_sweat:
 
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 :2cool_burn_joss_sti
 
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 :2cool_burn_joss_sti

Lạy hồn :2cool_burn_joss_sti 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.
Bạn ko thích có người góp ý thì thôi :5cool_big_smile: mún tìm vài người đam mê marco tham khảo tý mà khó vật
 
bạn ơi cho hỏi code prepare nghĩa là gì
 
Lạy hồn :2cool_burn_joss_sti 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.
Bạn ko thích có người góp ý thì thôi :5cool_big_smile: mún tìm vài người đam mê marco tham khảo tý mà khó vật

Mình cũng ko hiểu lắm bởi với kiến thức lập trình của mình thì hàm Checkbuff và hàm CheckCDs đều là hàm người dùng định nghĩa thông qua việc khai báo. Bản thân hàm khi đc khai báo sẽ ko tự chạy mà phải có đoạn code gọi nó ra. Bạn có thể test bằng cách viết thêm một điều kiện sau cái điều kiện gọi TVVN mà ko có CheckCDs(TVVN) xem trong lúc đang cooldown nó có thực hiện lệnh tiếp theo ko? Mình nghĩ là ko:5cool_big_smile:
Ở đây đang là tranh luận vì mình thấy cách giải thích của bạn chưa thuyết phục. Mình cũng rất hoan nghênh những người cùng tham gia nghiên cứu macro chứ ko bảo thủ gì đâu :4cool_beauty:
 
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
Đâ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 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 code mình đang dùng tham khảo từ TQ viết ra
 
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
Đâ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ả

Bạ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ý :5cool_big_smile:
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 :4cool_beauty:
 
Chỉnh sửa cuối:
Đọ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 :2cool_burn_joss_sti
 
Bạ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ý :5cool_big_smile:
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 :4cool_beauty:
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
 
Đọ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 :2cool_burn_joss_sti
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à :5cool_big_smile:
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ã:
/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
Đâ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ả

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ứ :4cool_beauty:. 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 - - -

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

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 :4cool_beauty:
 
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à :5cool_big_smile:
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ả.

Cho mình hỏi một câu hơi tế nhị là bạn có học chuyên ngành về lập trình không? Nếu bạn học về lập trình thì mình stop tranh luận với bạn ở đây vì công sức đào tạo của thầy cô bạn đi xuống sông xuống bể hết còn nếu bạn tự mày mò để viết thì mình sẽ nói tiếp với bạn là kiểu viết của Superkhung là viết ra một hàm CheckCDs(skillID) để check cooldown của một skill bất kỳ. Bạn ấy có một list skill cần đánh lần lượt theo thứ tự ưu tiên nên khai một mảng constant rồi dùng vòng for duyệt qua mang đó, trước khi đánh đều check qua cooldown. Thằng tàu nó viết code ko như thế mà nó làm một hàm use(id) để gọi một skill nó cần đánh, trong hàm đấy nó có điều kiện check cooldown rồi đánh. Viết kiểu gì thì kiểu khi muốn gọi một skill có cooldown bao giờ người ta cũng phải check qua cooldown của nó :2cool_burn_joss_sti
 
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ứ :4cool_beauty:. 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 :4cool_beauty:
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) :2cool_burn_joss_sti
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ả :5cool_big_smile:
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 :5cool_big_smile:
 
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) :2cool_burn_joss_sti
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ả :5cool_big_smile:
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 :5cool_big_smile:

Há há, bây h mình đã hiểu ý bạn :9cool_haha: 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à
Local function U(x) OnAddOnUseSkill(x) end
Sau đó thay toàn bộ OnAddOnUseSkill bằn U là đc :4cool_beauty:
Đoạn đánh Kiếm phi kinh thiên nên cho lên đầu tiên hoặc bỏ đi chứ lúc target vận công mà lại bình tĩnh cast tọa vọng với cắm khí trường thì nó vận công xong rồi :6cool_beat_shot::6cool_beat_shot:
 
Back
Top