[System] TexttagUtils

vuongkkk

T.E.T.Я.I.S
VTexttag ver 2.3
Giới thiệu
Bạn nào thích texttag trong map làm được sinh động hơn ngoài việc chỉ bay lên và biến mất thì dùng system của mình
Giờ thì system tên là Dynamic Texttag tên rút gọn là DTT
VTexttag chỉ là 1 thời để nhớ thôi ^^

Cách để import vào map và cách dùng
Có nhiều demo lắm rồi ( như Jump style texttag) . Còn hướng dẫn dùng thì đọc trong các trigger.
TexttagController là chỉ còn là để compability với các ver trước
Gộp hết lại thành 1 cho tiện
  • DynamicTextTag

Ưu điểm(Advantages):
  • Chỉnh màu dễ dàng vì theo hệ màu RGB thì có thể dùng mspaint của window để chọn màu cho texttag
  • Dễ dùng vì nó có API khá tương đồng với texttag sẵn có của Blizzard native function
  • Dễ dàng implement các phương thức để thay đổi texttag theo thời gian
  • Nhẹ nhàng(dung lượng), hiệu quả (nuột, ko lag ;;))
  • Quan trọng nhất là có thể tái sử dụng 1 cách đơn giản = cách sử dụng các phương thức để tính toán sự thay đổi đã có và có thể kết hợp các cách tính khác nhau sẽ tạo các style texttag cho riêng mình
  • Có sẵn 11 style texttag do mình viết (Thay normal texttag = Attach texttag)

Hạn chế (Disadvantages):
Khó để control nếu bạn ko có chút kiến thức toán học
Hãy cẩn thận trong việc xử lý nhé, nó không bung ra lỗi hay gì đâu nhưng mà sẽ làm texttag xấu đi hoặc ko hiển thị theo ý muốn. Đấy là lỗi hiển thị, hậu quả của việc cho các bạn full control :p​

Chú ý (Note):
- Giữa map là hiện liên tục VTexttag để test FPS. Nếu thấy FPS tụt thì mình cam đoan máy nhà bạn cạc màn hình lởm vì lag đấy là do xử lý hình ảnh chứ ko phải do code =)).
Đương nhiên đã test trên máy có cạc xịn mới nói
- Dùng bản mới nhất là 2.2 để cải thiện độ nuột so với các bản cũ cũng như có cách destruction texttag hợp lý hơn cách của blizzard


Special thanks to:
Tom_Kazansky . . . . . . . My dear technical supporter :x Always that \:D/
WaterKnight . . . . . . . . . With texttag knowlegde
KuKulKan . . . . . . . . . . . Help me with usage. Thanks man ;)
wewe_1312 . . . . . . . . . He request me :))
Nestharus . . . . . . . . . . Good destruction behavior

Đây là map demo
Link MF:
VTexttag Ver 2.1c Demo map
VTexttag Ver 2.3 Demo map
 

Attachments

Chỉnh sửa cuối:
Mã:
    real fp
    method operator fadepoint= takes real time returns nothing
        set .fp = time
    endmethod
    
    real life
    method operator lifetime= takes real time returns nothing
        set .life = time
    endmethod
    
    player p    
    method operator owner= takes player whichPlayer returns nothing
        set .p = whichPlayer
    endmethod
    
    string mes
    real size
    method setText takes string str, real s returns nothing
        set .mes = str
        set .size = s
    endmethod

Phần Operator Overloading ở fadepoint, lifetime, owner, Kan thấy không cần thiết lắm, sao không gán trực tiếp vào biến luôn khi sử dụng, không phải nhanh hơn sao :-/, nếu là mục đích bảo mật nó thì nên đổi lại private biến đó đi, còn setText thì ok rồi :D

Mà có cái thế này, nếu chữ dài quá khi size to lên thì tự động chữ nó bị drop xuống hàng, khi size nhỏ lại nó lại nhảy lên...hơi xấu ^^, mà chắc không ai dùng cái này để show 1 đoạn text dài đâu ^O^
 
ai da` muốn thế nào là do config mà ra cả. Style này chỉ tạo hiệu ứng cho texttag là trông như nó nảy lên 1 chút. Hình như nó nảy hơi cao thì phải, nhưng cái này cũng hoàn toàn chỉnh được trong trigger TexttagController. Còn màu mè, size, độ dài ... đều có thể điều chỉnh tùy ý mà ko ảnh hưởng đến style đó :)

TexttagController là lilbrary chứa cách xử lý texttag của bạn theo thời gian

Về cái Operator cám ơn Kan góp ý, nó là để cho thân thiện dễ nhớ và ý nghĩa hơn là fp, life hay p. Nếu có ver sau chắc mình sẽ sửa lại luôn mấy cái này

Còn quên 1 cái nữa : cách để demo map là nhấn [Esc] button. Rất xin lỗi vì làm đêm hay xảy ra sự cố ngoài ý muốn thế này :">

---------- Post added at 19:05 ---------- Previous post was at 17:21 ----------

aaaaa Chết ngượng quá :">
SR mọi người mình vừa mới phát hiện và fix 1 bug nghiêm trọng (do sai sót nhỏ) nên h up lại map demo cho đàng hoàng có khuyến mãi thêm phần thay đổi màu của texttag ờ version mới luôn
 
Chỉnh sửa cuối:
Đã thay đổi lần cuối cho cùng và kết thúc phát triển sys này ... ở ver 1.1, nếu còn phát triển thì sẽ là ver 1.2 :))
 
Có thể nói là system đã hoàn tất với version 1.2, các bạn ai dùng texttag thì dùng sys ver 1.2 của mình nhé. Không dùng cũng cứ down demo map về mà thèm :))
 
Release Version 1.3
  • Với bản này hiệu suất của system đã được nâng cấp đáng kể với khả năng tái sử dụng texttag.
  • Giờ system là độc lập nền tảng tức không cần system bên ngoài nữa. Trước là cần T32
  • Phân biệt rõ 2 struct với 2 chức năng riêng biệt là config và runtime.
  • Config chỉ lưu các giá trị thuộc tính của texttag, còn runtime mới là texttag thật sự. Vì chỉ là config nên theo ý nghĩa chỉ cần làm 1 lần, lần sau chỉ gọi texttag để hiển thị.
  • Cũng vì thế ngoài chế độ auto destroy struct còn chế độ bình thường cho phép tự thân vận động đi xóa leak struct. Thực ra là không cần nếu dùng mãi mãi. Config là thế mà :))
  • À, tên system có thay đổi chút cũng như tên struct cũng như API ko còn như trước nhưng thực ra về ý nghĩa thì ko đổi


Nói chung các bạn hãy dùng bản này thay cho các bản trước để có lợi nhất ...... cho các bạn :)
 
Release version 1.4:
  • Sửa logic bug khi multi-call .display() method
  • Sửa blizzard bug: màu của texttag có vấn đề khi thay đổi alpha mà ko reset text
  • Thêm style Inclined và Head up !

Có thể nói làm các style = system của mình vui ko kém làm spell. Mình hi vọng có người biết 1 chút về jass và cách dùng sys của mình để cùng mình tạo style cho texttag.
Chứ 1 mình tự sướng hoài cũng bùn lém

P/S: rất xin lỗi về 2 cái bug còn tồn tại của bản trước đã thể hiện rõ sự kém cỏi về khả năng và thiếu kinh nghiệm về texttag của mình :((
 
Chỉnh sửa cuối:
Bác vuongkkk chịu khó viết mấy system này à nha ;)). Anw, texttag cũng là cái mình rất là yếu kém do ít sử dụng =)). Thank bác phát.
 
^^ Thực ra system mình viết chỉ recycle 1 cách đơn giản nhất mà thôi.

^ Mình ko hề chăm chỉ là cần mà chưa thấy có system nào thì ta làm thôi

Ai ko biết tùy biến có thể dùng các style đơn giản có sẵn trong map demo. Còn biết rồi thì có thể tạo texttag rất đẹp và cũng đơn giản.

Thực ra nhiều người thấy jass thì ko dùng là sai lầm :(
Dù chỉ dùng GUI không biết jass nhưng biết dùng custom script để gọi ra mấy câu lệnh jass thì vẫn có thể dùng được system này (miễn là có jass helper mới nhất để biên dịch code). Chỉ cần gọi mấy câu lệnh _Create trong trigger TexttagControllers là được
 
Mình thích nhất là cái system này cho phép tùy biến Texttag theo thời gian thực 1 cách tự động :)) Đúng là phải học hỏi bác vuongkkk nhiều :))
 
Bạn nào dùng system này của mình thì nên update system mới nhất (1.5) đi nhé.
Về API khi tạo texttag (mấy func _Create) thì ko đổi đâu
Nhưng 2 trigger VTexttagTexttagControllers thì cần update đấy
 
Changelog 2.1:
- Chỉnh lại các style đã đó
- Thay Normal Texttag = Attach Texttag
- Chia ra thành 1 system chỉ để loop và tạo texttag, 1 ext hỗ trợ làm stylish texttag
- Minimum dung lượng của system. Nếu cậu nào thấy size của system vẫn ko thay đổi mấy thì là vì mình add thêm document để cho dễ sử dụng. Còn nếu size to hơn ắt là do file đã đính kém thêm virut...
- Cách create texttag khi quá 100 cái ko phải là 1 cái ko thể hiển thị nữa mà là hủy cái texttag cũ nhất đi để hiển thị cái mới. Cái này đặc biệt cần thiết khi map có nhiều texttag hiển thị!
- Stylish texttag viết theo kiểu struct và có thể sử dụng VTexttag ở method onInit của các struct và module khác
 
chú vương ơi trong phần VTexttag_Critical.create có thể giúp cháu thêm vụ hide texttag hok :(
 
cháu nói rõ hơn đi. Nếu là hide với player xác định thì trong tham số truyền vào của chú có player để hiển thị riêng cho player đó.
Còn nếu ko muốn hide thì có cái chức năng .visible=false là ok. Còn ko hết time là texttag auto destroy mà

P/S: nhắc cái này mới nhớ là phải sửa lại 1 cái để chức năng đấy đúng @@
Ai dùng down lại bản 2.1b nhé...............
 
Chỉnh sửa cuối:
cháu nói rõ hơn đi. Nếu là hide với player xác định thì trong tham số truyền vào của chú có player để hiển thị riêng cho player đó.
Còn nếu ko muốn hide thì có cái chức năng .visible=false là ok. Còn ko hết time là texttag auto destroy mà

P/S: nhắc cái này mới nhớ là phải sửa lại 1 cái để chức năng đấy đúng @@
Ai dùng down lại bản 2.1b nhé...............

hom nay nha chau bi cup dien roi, y cua chau la lam cho cai crit do vidu player 1 danh player2 thi do texttagse ra. nhung player3 hok nam trong ngoai fog se hok thay dc so crit.

chu co the lam no ra kieu a danh b, b co so mau trang.nhung b lai thay la mau do?
va so texttag ae hide khi player 3 hok thay dc sight cua player a va b


p/s: sr on bang mobile nen hok co danh dc tieng viet co dau
 
cháu nói rõ hơn đi. Nếu là hide với player xác định thì trong tham số truyền vào của chú có player để hiển thị riêng cho player đó.
Còn nếu ko muốn hide thì có cái chức năng .visible=false là ok. Còn ko hết time là texttag auto destroy mà

P/S: nhắc cái này mới nhớ là phải sửa lại 1 cái để chức năng đấy đúng @@
Ai dùng down lại bản 2.1b nhé...............

hình như GetLocalPlayer không có tác dụng hide cái textag đó thì phải..
 
chu co the lam no ra kieu a danh b, b co so mau trang.nhung b lai thay la mau do?
va so texttag ae hide khi player 3 hok thay dc sight cua player a va b

Thế thì cháu làm ra 2 cái texttag với 2 màu khác nhau hiện lên riêng cho 2 player là được mà @@
Hi vọng số lượng texttag trong map cháu ko quá lớn >.<
 
Thế thì cháu làm ra 2 cái texttag với 2 màu khác nhau hiện lên riêng cho 2 player là được mà @@
Hi vọng số lượng texttag trong map cháu ko quá lớn >.<

uh :"> cháu thay đổi vụ đó bằng string local tức player 1 string khác player 2 lại string khác vì thế chỉ 1 texttag thôi :">
 
Back
Top