vuongkkk
T.E.T.Я.I.S
Giới thiệu hệ thống:
- Các bạn ai cũng biết rằng rất nhiều map cần đến việc ghép đồ, nếu không muốn nói là đa số... Nhưng thực sự thì mình không ưng cái nào cả ngoài cái của Artificial.
- Nhưng system đó chỉ giúp được bạn ghép đồ 1 cách đơn giản. Nâng cao thì còn thiếu nhiều
- Cuối cùng mình đã quyết làm 1 hệ thống recipe item cho tất cả mọi người, nhất là map maker Việt và nay đã hoàn thiện.
- Ghép đồ như dota luôn !!!!!! Full hòm cũng chiến
How it work – Cách thức hoạt động
Để nắm được cách config cho đúng và cách dùng system bạn cần biết về cách nó hoạt động:
- Để mua đồ trong shop mặc dù hòm đồ đã đầy thì đồ đó phải là dạng đồ power up, tạm gọi nó là đồ giả. Vì vậy về căn bản 1 đồ sẽ cần làm 2 item (1 thật và 1 giả để trong shop = Powerup)
- Khi mua đồ:
+ Nếu có đủ đồ thành phần tính cả đồ vừa mua thì sẽ tiến hành ghép luôn
+ Nếu ko có đủ thì sẽ tạo 1 món đồ thật dưới chân
- Khi nhặt đồ:
+ Dù có full hòm đồ vẫn ghép được đồ dù đồ dưới đất là đồ thật, ko phải dạng powerup
+ Thực chất là đáng ra là ko có gì xảy ra được và hiện lên thông báo inventory is full
+ Nhưng do chỉnh Follow - Item range ngắn nên unit đi đến tận nơi mới có thông báo inventory
+ Nhưng do mình config thì sẽ làm mất thông báo hiện inventory full vì giờ cũng ko cần thiết có cái đó nữa. Còn nếu làm thông báo giả = SimError thì sẽ có thể bị đè lên các thông báo sẵn có của War3 trong Constant
How to config - Chỉnh để sys hoạt động chuẩn xác
- Chỉnh Gameplay Constants -> Follow range - Items = số bạn muốn
- Chỉnh RecipeTrigger -> FOLLOW_ITEM_RANGE = Follow range - Items mà bạn chỉnh bên trên
- Chỉnh Game Interface -> Sound - Inventory is full = Animation - Bolt
- Chỉnh Game Interface -> Text - Message - Inventory is full = <Space>
- Chỉnh MAX_NUM là số lượng thành phần tối đa cho 1 công thức trong map của bạn
- Item giả phải là item dạng power up thuộc class power up luôn và model là ko có gì (.mdl)
- Item thật thì class nào cũng OK nhưng đừng đặt ở class powerup
- Item charge thì đặc biệt phải để trong class charge cả item giả lẫn item thật thì mới có thể tăng charge khi ghép hoặc mua. Ko muốn để tăng charge thì đặt chỗ khác
- Item giả ko dùng để mua đồ mà chỉ để viết tooltip vào và trưng ra cùng thông báo ko cần mua item này để ghép đồ thì để trong class Artifact
How to use - Cách dùng
- Import 4 trigger: Table, RecipeItemSys, RecipeTrigger, initRecipes vào map
- Interface:
RIS_Result
Là để chứa các thông số của item sản phẩm sau khi ghép
[spoil]
[/spoil]
RIS_Recipe
Là để chứa các thông tin của các món đồ thành phần dùng để ghép
[spoil]
[/spoil]
RIS_Combiner
Là struct để tìm công thức đúng là kiểm tra có đủ item cần chưa cũng như giúp thực hiện việc ghép đồ
[spoil]
[/spoil]
RIS_RecipeItem
Là struct để đăng kí cặp item giả và thật để mua trong shop khi full hòm.
Nếu cặp item giả và thật đã có trong lúc đăng kí công thức thì ko cần phải đăng kí lại bằng cái này nữa!
[spoil]
[/spoil]
- RecipeItemSys : chỉ mang tính là công cụ lưu giữ và xử lý thông tin ghép đồ. Không có trigger bên trong
- RecipeTrig mới là nơi xử lý các trường hợp xảy ra trong map. Đây là cái các cậu muốn custom thì vào xem. Có Comment hướng dẫn chỗ cho cách cậu edit code trong đó rồi. Thoải mái đi, miễn đúng chỗ
- initRecipe: Các cậu vào đây học hỏi cách đăng kí 1 công thức để ghép đồ nhé
Advantage - Điểm mạnh
- Ko lag, số lượng công thức ghép đồ nhiều và có thể tùy chỉnh để cho hiệu quả nhất với map của bạn
(max = 8912 / MAX_NUM)
- 1 item có thể có nhiều công thức ghép
- Tăng charge ghép đồ với charge item và kết quả cho ra có thể là charge item luôn
- Đồ thành phẩm sau khi ghép có thể tách được (disassemble)
- Dù 1 đồ có nhiều cách ghép hay 1 cách ghép cũng có thể disassemble chuẩn
Disadvantage - Điểm yếu
- Các cậu cần phải biết cách dùng vjass hoặc jass
- Phải đọc hướng dẫn thì mới dùng được. Nếu dùng sai thì đừng đổ tại system tớ hoạt động ko chuẩn. Hãy xem lại hướng dẫn = tiếng Việt đó @@
Change Log:
Ver 2.1:
Đôi lời chia sẻ
Link download map demo
RIS - Recipe Item System 2.1 demo map
- Các bạn ai cũng biết rằng rất nhiều map cần đến việc ghép đồ, nếu không muốn nói là đa số... Nhưng thực sự thì mình không ưng cái nào cả ngoài cái của Artificial.
- Nhưng system đó chỉ giúp được bạn ghép đồ 1 cách đơn giản. Nâng cao thì còn thiếu nhiều
- Cuối cùng mình đã quyết làm 1 hệ thống recipe item cho tất cả mọi người, nhất là map maker Việt và nay đã hoàn thiện.
- Ghép đồ như dota luôn !!!!!! Full hòm cũng chiến

How it work – Cách thức hoạt động
Để nắm được cách config cho đúng và cách dùng system bạn cần biết về cách nó hoạt động:
- Để mua đồ trong shop mặc dù hòm đồ đã đầy thì đồ đó phải là dạng đồ power up, tạm gọi nó là đồ giả. Vì vậy về căn bản 1 đồ sẽ cần làm 2 item (1 thật và 1 giả để trong shop = Powerup)
- Khi mua đồ:
+ Nếu có đủ đồ thành phần tính cả đồ vừa mua thì sẽ tiến hành ghép luôn
+ Nếu ko có đủ thì sẽ tạo 1 món đồ thật dưới chân
- Khi nhặt đồ:
+ Dù có full hòm đồ vẫn ghép được đồ dù đồ dưới đất là đồ thật, ko phải dạng powerup
+ Thực chất là đáng ra là ko có gì xảy ra được và hiện lên thông báo inventory is full
+ Nhưng do chỉnh Follow - Item range ngắn nên unit đi đến tận nơi mới có thông báo inventory
+ Nhưng do mình config thì sẽ làm mất thông báo hiện inventory full vì giờ cũng ko cần thiết có cái đó nữa. Còn nếu làm thông báo giả = SimError thì sẽ có thể bị đè lên các thông báo sẵn có của War3 trong Constant
How to config - Chỉnh để sys hoạt động chuẩn xác
- Chỉnh Gameplay Constants -> Follow range - Items = số bạn muốn
- Chỉnh RecipeTrigger -> FOLLOW_ITEM_RANGE = Follow range - Items mà bạn chỉnh bên trên
- Chỉnh Game Interface -> Sound - Inventory is full = Animation - Bolt
- Chỉnh Game Interface -> Text - Message - Inventory is full = <Space>
- Chỉnh MAX_NUM là số lượng thành phần tối đa cho 1 công thức trong map của bạn
- Item giả phải là item dạng power up thuộc class power up luôn và model là ko có gì (.mdl)
- Item thật thì class nào cũng OK nhưng đừng đặt ở class powerup
- Item charge thì đặc biệt phải để trong class charge cả item giả lẫn item thật thì mới có thể tăng charge khi ghép hoặc mua. Ko muốn để tăng charge thì đặt chỗ khác
- Item giả ko dùng để mua đồ mà chỉ để viết tooltip vào và trưng ra cùng thông báo ko cần mua item này để ghép đồ thì để trong class Artifact
How to use - Cách dùng
- Import 4 trigger: Table, RecipeItemSys, RecipeTrigger, initRecipes vào map
- Interface:
RIS_Result
Là để chứa các thông số của item sản phẩm sau khi ghép
[spoil]
PHP:
readonly integer rawcode
readonly integer charge
boolean enabled // giúp người dùng có thể tùy chỉnh xem có thể ghép ra được món đồ này hay ko kể cả có đủ đồ thành phần
static method create takes integer itemid, integer itemcharge returns RIS_Result
// item id là raw code của item sản phẩm, charge là số lượng charge @@
RIS_Recipe
Là để chứa các thông tin của các món đồ thành phần dùng để ghép
[spoil]
PHP:
readonly RIS_Result result // lưu kết quả
readonly integer count // lưu số item cần để ghép (ko tính charge)
static method create takes RIS_Result r returns RIS_Recipe
// result chính là để chỉ ra item cuối cùng mà công thức này tạo thành
method add takes integer id1, integer id2, integer c returns nothing
// id1 là rawcode item thật
// id2 là rawcode item giả và có thể để là 0 nếu đồ đó ko có ở trong shop ko cần phải mua
// c là số lượng charge cần để ghép. Nếu ko phải item dạng charge thì để = 0
// id1 và id2 luôn phải đi thành cặp. Nếu 1 id1 vốn cặp với id2 khi add mà còn có id2 khác cũng cặp với id1 thì sẽ gây lỗi hệ thống
method addMulti takes integer num, integer id1, integer id2, integer c returns nothing
// num là số lượng item (ko phải số lượng charge) cùng loại cần
// các thông số còn lại giống như trên
// Nếu công thức có nhiều item giống nhau để ghép thì dùng lệnh này thay vì dùng nhiều lần lệnh add
method createComponent takes real x, real y, code c returns nothing
// cái này dùng để tạo ra các món đồ thật trong công thức này
// x, y là tọa độ mà các item thành phần sẽ rớt ra
// c là function mà code trong đó sẽ dùng để thao tác với từng món đồ thành phần sau khi tạo ra
// trong function c thì dùng bj_lastCreatedItem để thao tác với item
RIS_Combiner
Là struct để tìm công thức đúng là kiểm tra có đủ item cần chưa cũng như giúp thực hiện việc ghép đồ
[spoil]
PHP:
static method validate takes item it returns boolean
// có tác dụng để tạo kiểm tra item it có thể dùng để ghép được hay ko
// lệnh này buộc phải thực hiện đầu tiên!
static method add takes item it returns nothing
// Thêm vào 1 item vào quá trình kiểm tra đồ thành phần
// Không được add trùng vì sẽ làm hỏng quá trình kiểm tra
static method addInv takes unit u returns nothing
// Thêm tất cả đồ trong hòm của unit u vào quá trình kiểm tra
// Không được add trùng vì sẽ làm hỏng quá trình kiểm tra
static method create takes RIS_Result r returns RIS_Recipe
// result chính là để chỉ ra item cuối cùng mà công thức này tạo thành
RIS_RecipeItem
Là struct để đăng kí cặp item giả và thật để mua trong shop khi full hòm.
Nếu cặp item giả và thật đã có trong lúc đăng kí công thức thì ko cần phải đăng kí lại bằng cái này nữa!
[spoil]
PHP:
static method createPair takes integer id1, integer id2 returns nothing
// id1 = rawcode item thật
// id2 = rawcode item giả trong shop
- RecipeItemSys : chỉ mang tính là công cụ lưu giữ và xử lý thông tin ghép đồ. Không có trigger bên trong
- RecipeTrig mới là nơi xử lý các trường hợp xảy ra trong map. Đây là cái các cậu muốn custom thì vào xem. Có Comment hướng dẫn chỗ cho cách cậu edit code trong đó rồi. Thoải mái đi, miễn đúng chỗ
- initRecipe: Các cậu vào đây học hỏi cách đăng kí 1 công thức để ghép đồ nhé

Advantage - Điểm mạnh
- Ko lag, số lượng công thức ghép đồ nhiều và có thể tùy chỉnh để cho hiệu quả nhất với map của bạn
(max = 8912 / MAX_NUM)- 1 item có thể có nhiều công thức ghép
- Tăng charge ghép đồ với charge item và kết quả cho ra có thể là charge item luôn
- Đồ thành phẩm sau khi ghép có thể tách được (disassemble)
- Dù 1 đồ có nhiều cách ghép hay 1 cách ghép cũng có thể disassemble chuẩn
Disadvantage - Điểm yếu
- Các cậu cần phải biết cách dùng vjass hoặc jass
- Phải đọc hướng dẫn thì mới dùng được. Nếu dùng sai thì đừng đổ tại system tớ hoạt động ko chuẩn. Hãy xem lại hướng dẫn = tiếng Việt đó @@
Change Log:
Ver 2.1:
- Thêm 1 số trường hợp có thể xảy ra khi ghép đồ mà ver trước bỏ sót
- Thêm chức năng disassemble
- Thêm chức năng hiển thị message khi cố mua item ko cần phải mua
- Đã hoàn chỉnh việc ghép đồ như dota!
- Code giờ gọn hơn, dễ nhìn hơn, có lẽ là nhanh hơn 1 chút nữa

Đôi lời chia sẻ
- Nếu anh em không cần đến chuyện ghép đồ khi hòm đồ full, thì hoàn toàn có thể dùng hệ thống ghép đồ , cái của Artificial.
Link download map demo
RIS - Recipe Item System 2.1 demo map
Chỉnh sửa cuối:
... Trên Việt dưới ANh mình thấy nó hơi kỳ kỳ @@


. cái này hay nữa nè :d. VD 2 cái ring+2 nhập lại thành ring +4. xong vứt ra đất thành 2 ring +2. lượm 2 ring+2 lên nó lại không nhập thành ring +4 nữa