• Chào bạn, hãy đăng ký hoặc đăng nhập để tham gia cùng bọn mình và sử dụng được đầy đủ chức năng của diễn đàn :).
T

Hỏi về code plugin Làm sao để gọi bow charge event ?

Trạng thái
Không mở trả lời sau này.
Cụ thể là khi Player gồng cung bắn(mình k biết gồng bên tiếng anh là gì nên ghi đại charge, cũng không biết dùng từ gồng có hợp lí không nữa :D) thì event sẽ dc call !
Bạn nào có thể giúp mình với
là sao bác
 
Cái này mình cũng ko biết dùng từ sao cho hợp nữa
Tức là khi Player gồng cung (chuẩn bị bắn) thì sẽ tạo nên 1 event, mình muốn gọi cái event đó thì mình phải làm sao ?
Giai đoạn charge chứ không phải giai đoạn bắn cung nhe
 
Việc Bow đc giương lên là cilent side, dùng thử ProjectileLaunchEvent hoặc EntityShootBowEvent đi
 
tức là cầm cung r chuẩn bị thả ra (là bắn í)
theo t thì
player interact event (kèm item đang cầm là cung)
tạo cái bộ đếm tầm 2-3s là xác định dc r
 
tức là cầm cung r chuẩn bị thả ra (là bắn í)
theo t thì
player interact event (kèm item đang cầm là cung)
tạo cái bộ đếm tầm 2-3s là xác định dc r
Interact event thì dùng đc rồi, nhưng mà mình ko biết tạo bộ đếm sao cả
Tại chỉ dùng 1 mình interact ko thì sẽ xảy ra lỗi là player chỉ nhấp 1 cái nhẹ vào cây cung rồi nhả ra chứ không bắn
 
Interact event thì dùng đc rồi, nhưng mà mình ko biết tạo bộ đếm sao cả
Tại chỉ dùng 1 mình interact ko thì sẽ xảy ra lỗi là player chỉ nhấp 1 cái nhẹ vào cây cung rồi nhả ra chứ không bắn
tạo cái biến int, mỗi lần vậy là +1
rùi scheduler, nếu biến đó k đổi thì reset
nếu đồi là nó đã tăng cái int đó r
 
tạo cái biến int, mỗi lần vậy là +1
rùi scheduler, nếu biến đó k đổi thì reset
nếu đồi là nó đã tăng cái int đó r
Vẫn không được bạn ơi, từ lúc gồng cung đến bắn cung thì event này chỉ chạy có 1 lần thôi bạn nên biến đếm của mình chỉ tăng có 1 à
 
Vẫn không được bạn ơi, từ lúc gồng cung đến bắn cung thì event này chỉ chạy có 1 lần thôi bạn nên biến đếm của mình chỉ tăng có 1 à
tạo cái biến int, mỗi lần vậy là +1
rùi scheduler, nếu biến đó k đổi thì reset
nếu đồi là nó đã tăng cái int đó r
T nói rồi, việc căng cung là cilent side
Cách tốt nhất là cancel việc căng cung, tạo 1 bộ đếm, kiểm tra bộ đếm chạy đến đâu thì bắn 1 arrow với độ xa tương ứng
 
T nói rồi, việc căng cung là cilent side
Cách tốt nhất là cancel việc căng cung, tạo 1 bộ đếm, kiểm tra bộ đếm chạy đến đâu thì bắn 1 arrow với độ xa tương ứng
Tạo bộ đếm ở event nào thế bạn ? Projecthit thì chạy khi mà cung tên đã dính vào mục tiêu còn entityshootbow thì nó chạy khi mà đã bắn . nhưng mà mình muốn 1 event chạy khi mà Player gồng cung lên đấy !
 
Tạo bộ đếm ở event nào thế bạn ? Projecthit thì chạy khi mà cung tên đã dính vào mục tiêu còn entityshootbow thì nó chạy khi mà đã bắn . nhưng mà mình muốn 1 event chạy khi mà Player gồng cung lên đấy !
Dùng InteractEvent và lập scheduler
 
Đã thử nhưng mà cũng ko thành công, mình dùng delay + repeat luôn mà cũng không dc, nó chỉ lập lại thôi !
Dùng scheduler để tính toán độ xa của arrow, càng giữ lâu nó càng bay xa đúng ko
 
Dùng scheduler để tính toán độ xa của arrow, càng giữ lâu nó càng bay xa đúng ko
Mình đang tính làm 1 plugin khi mà Player gồng cung lên thì mình sẽ chạy 1 số effect xung quanh player, và khi player bắn thì hiệu ứng đó sẽ kết thúc và sẽ tạo ra 1 beam theo hướng của mũi tên (mũi tên vẫn tồn tại, chỉ thêm effect thôi)
 
Mình đang tính làm 1 plugin khi mà Player gồng cung lên thì mình sẽ chạy 1 số effect xung quanh player, và khi player bắn thì hiệu ứng đó sẽ kết thúc và sẽ tạo ra 1 beam theo hướng của mũi tên (mũi tên vẫn tồn tại, chỉ thêm effect thôi)
Hiểu tại sao mình lại chỉ cách này không? vì việc gồng cung là CILENT SIDE, cái mình đang hướng tới là PHÁ BỎ tính năng bắn cung của vanilla và TÁI TẠO lại nó, làm thế thì bạn thêm cm gì vào nó cũng được.
 
Hiểu tại sao mình lại chỉ cách này không? vì việc gồng cung là CILENT SIDE, cái mình đang hướng tới là PHÁ BỎ tính năng bắn cung của vanilla và TÁI TẠO lại nó, làm thế thì bạn thêm cm gì vào nó cũng được.
Bạn có thể code giùm mình phần đó được không, tại mình đã code theo cách sau :
+ đầu tiên chạy interactevent
+ cancel event (xóa mũi tên)
+ lập delaytask - sau 1 khoảng thời gian ngắn thì task này sẽ kiểm tra điều kiện (event.getAction() == Action.Right_Click_Block && ... ) nếu điều kiện thỏa thì play effect, nếu không thỏa thì return
-> Nhưng vấn đề mình gặp là khi delaytask chạy lại thì event.getAction() vẫn giữ nguyên như cũ tức là chỉ cần bạn nhấn 1 cái thì event nó sẽ thỏa luôn cả delaytask (kể cả repeattask) và thế là sẽ xảy ra lỗi !
 
+ lập delaytask - sau 1 khoảng thời gian ngắn thì task này sẽ kiểm tra điều kiện (event.getAction() == Action.Right_Click_Block && ... ) nếu điều kiện thỏa thì play effect, nếu không thỏa thì return
-> Nhưng vấn đề mình gặp là khi delaytask chạy lại thì event.getAction() vẫn giữ nguyên như cũ tức là chỉ cần bạn nhấn 1 cái thì event nó sẽ thỏa luôn cả delaytask (kể cả repeattask) và thế là sẽ xảy ra lỗi !
No, lập 1 repeat task kiểm tra thời gian (Coi nó như là gồng cung), sau đó khi InteractEvent kết thúc, spawn tên và nhân velocity của nó lên

Mình mới nháp qua thuật toán này @electronicboy (Staff bên SpigotMC) có nói rằng, giữ chuột phải thì cũng sẽ chạy InteractEvent liên tục.

Lần này bạn kiểm soát hoàn toàn việc gồng và bắn cung, spawn particle tự làm nốt
 
Trạng thái
Không mở trả lời sau này.
Similar content Most view Xem thêm
Back
Top Bottom