Recipe Item System - System ghép đồ

  • Thread starter Thread starter vuongkkk
  • Ngày gửi Ngày gửi
vương ơi. có lỗi rồi đây. sửa đi nhá. mình thấy sys của bạn rất hay. nhưng còn lỗi nè. vd Ring+2 armor x2 => ring+4 armor. nhưng khi vứt ra đất nó lại thành 2 cái ring +2 thế là thế nào. nó vứt ra đất phải là ring +4 chứ. sao lịa là 2 cái +2 :-j. 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 :-j

vào map đừng copy cái máy cái đoạn ở folder dưới là ok ...
 
không copy đoạn nào ạ. em thấy đoạn nào cũng có code. anh chỉ em với :|. mà ai chỉ mình cái này với. làm sao post tringger vào bài được. như thế này nè. đây là mình copy bài trên còn tự bỏ vào thì mình không biết.
/*
Cach xai`:
Moi khi tao. 1 Item (Permanent gi gi do), thi tao them 1 Item base tu` 1 Item PowerUp (nhu sach mau' chang han)
Sau do ghi lai RAW code cua 2 item do, goi item PowerUp la Tome, item chinh' (permanent j j do y) la Item (of course)
Tai. Map Initializing, ghi dong` code:
call AddItemTable(Tome_ID,Item_ID)
Voi Tome_ID la RAW code cua Tome, Item_ID la RAW code cua Item
Khi tao. shop, cho Shop ban Tome chu khong ban Item chinh.
*/
library InitPowerUp initializer Init requires Table, ItemRecipeSys
globals
public Table ItemTable
endglobals

public function AddItemTable takes integer tomeid, integer itemid returns nothing
set ItemTable[tomeid] = itemid
endfunction

private function GiveAction takes nothing returns nothing
local unit a = GetBuyingUnit()
local item b
local location loc = GetUnitLoc(a)
set b = CreateItemLoc(ItemTable[GetItemTypeId(GetSoldItem())],loc)
if InventoryIsFull(a) then
call ItemRecipeSys_Check(a,b)
else
call UnitAddItem(a,b)
endif
 
Chỉnh sửa cuối:
Cái bạn bảo lỗi thực ra là các chức năng phụ khác của system mình đó. Muốn mấy cái đó ko chạy thì đơn giản là đừng copy (delete nếu đã có) folder test là ổn thôi mà :)
 
à vậy hả. uh vậy ver 1.4 là fix đầy đủ hết ồi chứ gì. chỉ copy cái phần InnitiMap thôi hả.
 
à vậy hả. uh vậy ver 1.4 là fix đầy đủ hết ồi chứ gì. chỉ copy cái phần InnitiMap thôi hả.

việc copy chỉ những trigger này nhá, bỏ vào map là ok rồi còn số trigger khác trong map thì đừng nên copy
ChainData
ItemInfo
TriggerUtils
ItemRecipeSys
initRecipes
SimError
Table
 
Change Log:
Ver 2.0:
  • Code giờ gọn hơn, dễ nhìn hơn, có lẽ là nhanh hơn 1 chút nữa :D
  • Đã hoàn chỉnh việc ghép đồ như dota!
  • Không cần nhiều trigger như trước chỉ có 4 cái thôi

P/S:
- Update lại trang 1 và thêm cách dùng rồi nhé
- Anh Tom sửa hộ cái title cho thread với: Recipe Item System - System ghép đồ
 
Chỉnh sửa cuối:
Double post!!! To bring attention

Update ver 2.1:
+ Thêm chức năng
+ Thêm hướng dẫn dùng cụ thể ở trang đầu
+ Đảm bảo dễ dùng hơn ver 2.0 nhiều ;)
 
Bạn vuongkkk ơi! Có lỗi trong Recipe Item System của bạn này! Không biết bạn còn hoạt động trong 4rum ko nữa! Bạn còn hoạt động thì cố gắng fix dùm System của bạn với! Mình đang dùng System của bạn để tiết kiệm thời gian tự viết code ghép Item trong map của mình!
:cuteonion17:
Luôn xảy ra lỗi khi mua Item dạng Power Up (Item giả để trong Shop)đầu tiên, rồi mới mua các Item # trong công thức ghép để bắt đầu ghép!

Hoặc lỗi khi Item giả ở các dạng khác, ngoài Power Up

I - Trường hợp 1:
set result = RIS_Result.create('I00B',0)
set recipe = RIS_Recipe.create(result)
call recipe.add('I00I','I00J',0)
call recipe.add('I00L',0,0)
_ Nghĩa là: Claws of Attack (+50) (Face trong Shop, và nó ở dạng Power Up) ghép Claws of Attack (+40) = Claws of Attack (+50) (Real)
_ Thứ tự mua: 1) Claws of Attack (+50) (Face - Power Up) trước tiên
2) Claws of Attack (+40) sau cùng
_ Lỗi: Code đã remove hết các Item công thức để tạo thành Item thật là Claws of Attack (+50), nhưng không remove Ability của Claws of Attack (+40).
Item thật sẽ + 90 Damage (Chứ không phải + 50 Damage), dù bỏ ra vẫn sẽ được + 40 Damage (Do ko được code remove đi)
_ Lỗi không xảy ra khi trình tự mua được đảo ngược

II - Trường hợp 2:
set result = RIS_Result.create('I00B',0)
set recipe = RIS_Recipe.create(result)
call recipe.add('I00I',0,0)
call recipe.add('I00L',0,0)
_ Nghĩa là: Lần này không cho Item dạng Power Up vào công thức ghép nữa! Item giả (Để trưng bày, sẽ ở các dạng khác ngoài Power Up)
- Thứ tự mua: Vẫn là mua cái Item giả trước, rồi mới mua Item Claws of Attack (+40) sau cùng!
_ Lỗi: Như trên
_ Lỗi không xảy ra khi trình tự mua được đảo ngược

III - Để tách Item dễ dàng hơn:
Bạn có thể chuyển Code sang Event khác được không? Hoặc chuyển code tách Item sang dạng GUI! (Tại mình gà Jass). Để như hiện giờ thì hơi khổ khi tách Item: Cứ phải Click đúp chuột phải vào Item thì Event mới bắt đc!
Nhỡ đâu đang gần Hero địch, lỡ tay click đúp chuột phải 2 phát vào Item (Định di chuyển Item sang ô khác nhưng Full slot, lại đặt vị trí ban đầu!)...thì thôi rồi!
Mã:
Event
 Unit - A unit Is issued an order with no target

Chuyển sang Event khác, ví dụ:
Mã:
Event
 Unit - A unit Starts the effects of an ability

Map demo: RIS_2.1.w3x
 
Cái lỗi bạn nói mình cũng ko rõ lắm nhưng cách fix tạm thời là:
Chuyển class của cái Claws of Attack (+40) sang Artifacts

Mình đã có map dùng system này mà ko bị sao nên khi nào mình sẽ post lại cái system bên đó cho cậu dùng thử có khác j ko nhá @@
 
Bạn khi nào rảnh thì cứ post cho mình và mọi người tham khảo nhé!
 
hehe, h mới có time để check @@
Thực ra code này của tớ ko có bắt lỗi mà buộc ng` dùng phải dùng đúng cách! (Thêm bắt lỗi chỉ nặng code)

^ Cậu có dùng sai ở 1 chỗ là cái upgrade (công thức ép) của cậu chỉ gồm mỗi item power up ghép vs 1 đồ thật.
Thực ra đây vẫn chỉ là ghép đồ thôi. Đáng ra khi mua mỗi cái upgrade thì vẫn có item trong hòm nếu cậu ko có đồ để nâng cấp. Sau sẽ dùng nó để nâng cấp hoặc bán lại lấy tiền.

Tức chuẩn ra sẽ là như sau:
set result = RIS_Result.create('I00C',0)
set recipe = RIS_Recipe.create(result)
call recipe.add('I0D1','I0D2',0)
call recipe.add('I0U1','I0U2',0)
Trong đó:
I00C: item cuối cùng mà mình muốn sau khi nâng cấp
I0D1: Đồ thật, mang thì cộng dam
I0D2: Đồ giả, để trưng trong shop và khi mua nếu có full đồ thì tạo đồ thật dưới chân. Khi full hòm chứa I0U2 thì có luôn đồ cuối (I00C)
I0U1: Đồ thật, để khi có đồ cấp thấp thì có thể upgrade mà ko cần mua lại
I0U2: Đồ giả, để trưng trong shop và nếu có đồ cần nâng cấp thì nó lên luôn ko thì tạo ra I0U1

Map demo cho cậu mình đính kèm bên dưới nhá
View attachment Cach dung RIS 2.1 .rar
 
Cảm ơn bạn vuongkkk đã nhiệt tình giúp đỡ!

Bởi vì trong Demo của bạn ko có ví dụ như này, và bạn cũng ko nói đến trường hợp "đặc biệt" này gì cả, nên mình mới không biết cách làm!

Nhưng hiện giờ mình đang dùng [System] Item Combination của bạn LeoNguyen112 rồi! Mặc dù System này của bạn ấy vẫn có lỗi, nhưng vì là GUI nên mình biết cách sửa, còn của bạn lỗi ở đâu thì mình mù Jass! :cuteonion44:

Mình cũng muốn post map của mình lên đây, nhưng chả hiểu sao không được đăng, mặc dù rất nhiều người khác ( dù là mới lập nick, hay là bài viết đầu tiên! ) vẫn cho đăng Theard mới! ( Dù biết là nó thông báo cần Mod duyệt! Vậy tại sao Mod Tom chả Online bao giờ, mà những bài đó việt đc đăng --> ko cần duyệt chăng, hay do nick mình có vấn đề??? )
 
Back
Top