Item System

HiroshiKaze

Youtube Master Race
Tham gia ngày
19/8/12
Bài viết
66
Reaction score
2
Các pro + lão có thể giúp bác ấy test cái này được ko?? :4cool_confuse:
(nguồn: http://www.phutu.org/t26180-topic?showpost=834908)

//================================================
//================================================
//================================================
//================================================
//================================================
//================================================
//================================================

19101994 nói:

Item System 1.9
Make by 19101994

Nếu sử dụng hay Copy bài xin ghi rõ nguồn để thể hiện mình là người có văn hóa!
Bản quyền thuộc về 19101994 - Update ngày 14/8/2012

Công dụng:
1. Ép item đa dạng. VD: bình thường là a+b+c+d=e (các chữ cái đại diện cho 1 item), ai hay hơn thì làm a+a+a=b, thế ai từng nghĩ đến kết hợp 2 cái chưa nhỉ??? rất khó đấy nhỉ?? Giờ chỉ cần 1 dòng là có thể ép bất kì kiểu nào dù là cách thứ 1, thứ 2 hay kết hợp (a+a+b+b+c=d) cũng được!!
2. Ép item nâng cao. Cho phép tự tính toán charge. VD: item A có 10 charge và item B có 5 charge, công thức cần 7 charge của item A và 2 charge của item B. System có thể tự tính toán để trừ đúng số charge mà bạn đăng kí cho từng loại item!!!
3. Thực hiện nhìu hiệu ứng, tính toán với các công thức ép đồ (đọc đến hướng dẫn sử dụng sẽ rõ).

Ưu:
1. Hiệu suất chạy 80-90%
2. 70% hashtable, thay vì check mỗi lần chạy thì nó lưu trong hashtable và lấy ra khi cần!
3. Hỗ trợ năng ép item khi full inventory!!!

Khuyết:
Như nêu ở bên trên rằng kết hợp cả 2 cách ép đồ thông thường lại nên tui dùng khá nhìu loop... trông có vẽ lag nhưng cũng đã thêm vài cái hủy loop giữa chừng nếu như item được thực hiện lệnh thành công nên cũng tạm sử dụng được (lí do tại sao nói hiệu suất có 80-90% là vậy :-< )

Hướng dẫn sử dụng trước khi dùng:
call Combine(a,b,c,d,e,f,x)
a,b,c,d,e,f là các rawcode của các item cần để ép ra rawcode của item x. Đứa nào không biết rawcode là gì xin vào F6 (Object) ấn Ctrl+d rùi tự hiểu!!

call Limit(a,s)
a là rawcode của item đăng kí và s và số giởi hạn của item
VD: call Limit('raft',2)
Ở đây 'raft' là rawcode của Claws of Attack +15. đăng kí giởi hạn là 2. nếu như 1 unit cầm item Claws of Attack +15 thứ 3 lên người sẽ tự động drop. tóm gọn là cầm tối đa 2 cái =.="
Lưu ý: 1 rawcode chỉ đăng kí Limit 1 lần, đăng kí lần 2 tự động đè chèn lần 1

call EnableAddCharge(true/false)
mặc định là false rùi khỏi nói. nếu bật true như sau:
test map
Events
Map initialization
Conditions
Actions
Custom Script: call EnableAddCharge(true)
thì tất cả mọi item có charge khi mang chung sẽ tự động gáng lại với nhau (rãnh rỗi up 2.0 làm cách tách charge :-< )

call CombineAdvanced(1,2,3,4,5,6,7,8,9,10,11,12,13,14)
Như cái Combine nhưng nâng cao
1,3,5,7,9,11 là các rawcode của item cần để ép ra cái item có rawcode là 13
còn 2,4,6,8,10,12 là các charge cần của các item có rawcode trước nó
khi tạo item 13 thì tự động cho nó có số lượng charge 14
VD: call CombineAdvanced(a,0,b,5,0,0,0,0,0,0,0,0,c,8)
nếu nếu item không có charge thì điền charge của item đó = 0 như trên VD phần item a ấy!
ở đây là cần item a và 5 charge của item b thì tạo item c và cho nó 8 charge

call SetEffect(string) Thêm hiệu ứng
call SetPercentage(real) Thêm %
call SetEffectFailed(string) Thêm hiệu ứng khi thất bại
call SetRecipeCost(gold, lumber) Thêm vàng và gỗ cần khi ép
Các lệnh trên dùng ngay bên dưới công thức vừa đăng kí. VD:
Custom script: call Combine('engs',0,'I000',0,0,0,'ratf')
Custom script: call Combine(0,'I002','I000',0,0,0,'ratf')
Custom script: call SetPercentage(50)
Custom script: call SetEffect("Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl")
Custom script: call SetRecipeCost(100000,50000)
các dòng thêm %, effect, cost đều được thêm cho công thức thứ 2, cái đầu không được thêm thì sẽ mặc định theo constant (sẽ nói sau ở bên dưới)

call GetItemGoldCost(integer rawcode)
call GetItemLumberCost(integer rawcode)
call GetItemNameFromId(integer rawcode)

các hàm này dùng để lấy giá trị của item, tùy các chú sử dụng, tên hàm đã ghi quá rõ công dụng rồi!!!

Phần Constant (bên trong Main System các dòng: 43-47):
constant string ItemSystem_EffectDefault = null //Default = null
constant sound ItemSystem_SoundDefault = null //Default = null
constant real ItemSystem_PercentageDefault = 100.00 //Default = 100.00
constant string ItemSystem_EffectFailedDefault = null //Default = null
constant sound ItemSystem_SoundFailedDefault = null //Default = null
Khi đăng kí 1 công thức ép đồ, công thức đó sẽ được nhận các default này làm mặc định!! (tên constant đã chỉ rõ chức năng của nó) nếu bạn không thích gì của default có thể dùng các lệnh đã nêu trên để chỉnh lại %, effect, v.v... Như VD trên: công thức thứ 2 đã được chỉnh lại %, effect, cost. Còn cái đầu tiên thì nhận default tức 100%, không effect, không cost!!!
Lưu ý: riêng 2 cái constant SOUND thì ko có hàm chỉnh sửa (vốn dĩ cũng định làm nhưng nó thuộc handle nên nếu mỗi công thức 1 sound khác nhau thì lag banh máy à??) vì vậy tất cả công thức đều dùng chung SOUND của constant nên mún thay SOUND thì chỉnh trực tiếp lên 2 cái constant SOUND!!!

Cách Active System cho phép ép đồ khi đã Full Inventory:
Vào Gameplay Interface, tìm dòng Inventoryfull, chỉnh nó thành " "
Vào Main System, dòng thứ 52, cái constant đó chỉnh thành true (trong Demo đã chỉnh sẵn thành true do ta test map)
Các item bán trong shop, tạo 1 item tương tự có khả năng "Use Automatically When Acquire" (F6 vào item đó tick chọn dòng này), thay các item shop = item này với icon, goldcost, lumbercost, delay, tooltip,v.v... tương tự chỉ các nhau mỗi dòng này.
Tạo 1 trig với event: Map Initialization để đăng kí item như sau:
call RegisterItemShop(a,b)
với a là item có tick use auto, còn b là item bình thường
Về phần đăng kí công thức ép đồ, thì sử dụng rawcode của item bình thường, cái item có tick use auto chỉ để bán thôi!!!


Download:
<-- 1.9
Nếu sử dụng hay Copy bài xin ghi rõ nguồn để thể hiện mình là người có văn hóa!




Item System 2.0
Make by 19101994

Nếu sử dụng hay Copy bài xin ghi rõ nguồn để thể hiện mình là người có văn hóa!
Bản quyền thuộc về 19101994 - Update ngày 16/8/2012

Bổ sung thêm 2 constant (dòng 48,49) để đặt tên cho Gold và Lumber... Vì sao lại thêm 2 dòng này thì xem hình sau sẽ rõ:
1ab351c8a9a43ef6bcac3ab58079f8a1_48185592.1.png

Ver trước quên nói là nếu đăng kí cost cho recipe thì khi không đủ cost nó sẽ hiện 1 dòng như thế lên map (đừng lo chỉ có player của unit mang item mới thấy) nhưng nó lun xài mặc định 2 cái tên Gold và Lumber, nhưng 1 số map lại thay cái đó = cái khác nên tôi xin tạo ra 2 cái này để tùy các hạ đặt tên tùy ý :D

Bổ sung thêm tên Recipe cho dòng cost như trên hình (ver trước ko có)

Bổ sung thêm 1 hàm mới:
call OnlyUnit(a,b)
với a là rawcode của item, b là rawcode của unit, còn công dụng thì tên hàm đã ghi quá rõ ràng!!!

Đã sắp xếp lại Main System nên có vẽ chạy tốt hơn trước :D nhưng trong lúc sắp xếp ko biết còn sai sót chỗ nào không nên nếu phát hiện lỗi xin báo lại để tui fix!!!


Download:
<-- 2.0
Nếu sử dụng hay Copy bài xin ghi rõ nguồn để thể hiện mình là người có văn hóa!




Item System 2.1
Make by 19101994

Nếu sử dụng hay Copy bài xin ghi rõ nguồn để thể hiện mình là người có văn hóa!
Bản quyền thuộc về 19101994 - Update ngày 19/8/2012

Fix lỗi: call EnableAddCharge mà không chạy...

Bỏ: call OnlyUnit
Thay call OnlyUnit bằng: call ItemsForUnits(a,b)
với a là rawcode của item
và b là rawcode của unit
Ai hỏi tại sao lại thay thì xin trả lời... Cái kia nếu xét call OnlyUnit(a,b) thì item a chỉ có thể do unit b mang và khi call OnlyUnit(a,c) thì item a chỉ có thể do unit c mang => thằng b ngu người. Vì vậy mới thay = cái này tốt hơn, có thể xài rộng rãi thoải mái :D

Bổ sung: Tích hợp với Bonus System 1.6 (đương nhiên là make by 19101994 rùi) có khả năng nâng cấp level item. Xem Demo


Download:
<-- 2.1
Nếu sử dụng hay Copy bài xin ghi rõ nguồn để thể hiện mình là người có văn hóa!​
 
Nhìn "khủng" thế này thì chắc tác giả đã phải test cả trăm lần rồi, cần gì phải nhờ người khác test hộ nữa?
 
quảng cáo quá trời :D
Item System làm gì mà giới thiệu changlog tùm lum bản thế ?? up cái cuối cùng nêu lại chức năng khái quá, nhìn mà choáng @@
 
kết luân của mình trong trigger của system này toàn BJ không tối ưu hóa tốt sẽ hoạt động chậm. với lại trong system đã quá lãng phí hashtable rồi :-< 1 theo mình 1 hashtable có thể hoạt động tốt hơn so với 3 hashtable khi mực đích đã giống nhau ? thì làm vậy chi cho ăn bộ nhớ hơn ?

đánh giá: 2/5
khả năng hoạt động tốt: không chắc chắn

P/S: mình để ý trong bài có từ Nếu sử dụng hay Copy bài xin ghi rõ nguồn để thể hiện mình là người có văn hóa! nhưng theo bản chính sách giấy phép của forumvi. thì chắc copy bài hok ghi nguồn sẽ không sao ha :-"
Respect of the copyrights and brands

The whole of the elements that you see, or read on this website is protected by the legislation about copyright. In any case, you cannot use, distribute, copy, reproduce, modify, alter or transmit the site or elements of the site, such as texts, images without having previously gotten a written permission of the company. The brands and logos which appear on the site, are owned by the company and all rights reserved. No right or license could be allotted on any of these elements without any written permission from the company or the third party who holds rights on the brand or logo which appear on the site. The company reserves the right to prosecute any patent infringement of his ownership, in front court of law.
 
kết luân của mình trong trigger của system này toàn BJ không tối ưu hóa tốt sẽ hoạt động chậm. với lại trong system đã quá lãng phí hashtable rồi :-< 1 theo mình 1 hashtable có thể hoạt động tốt hơn so với 3 hashtable khi mực đích đã giống nhau ? thì làm vậy chi cho ăn bộ nhớ hơn ?

đánh giá: 2/5
khả năng hoạt động tốt: không chắc chắn

P/S: mình để ý trong bài có từ Nếu sử dụng hay Copy bài xin ghi rõ nguồn để thể hiện mình là người có văn hóa! nhưng theo bản chính sách giấy phép của forumvi. thì chắc copy bài hok ghi nguồn sẽ không sao ha :-"

Thanks bác đã góp ý thẳng thắng... sẽ cố gắng học hỏi và làm tốt hơn :6cool_beat_brick:
 
Update version mới đây... mấy bác test và cho ý kiển để hoàn thiện hơn nhá:

Item System 2.2 http://www.mediafire.com/?8msc3pxzw6pcst3
Đã thay hết mí lệnh BJ trong đấy như lời dh-gà mún =.=!
Giảm 3/6 hashtable như chú ấy mún :7cool_feel_good:

Bonus System 1.8 http://www.mediafire.com/?73n53n3ra609vuo
Thay toàn bộ =.="
Tăng giới hạn, bớt lag hơn chút

ItemSystem-BonusSystem [Demo] http://www.mediafire.com/?gktafmu0gcz7tzh (có khả năng nâng cấp lvl item)

P/s mí chú cứ phang gạch thẳng thắng để lượm về xây dựng lại :4cool_confuse:
 
Thứ lỗi thứ lỗi... cái BonusSystem chưa viết xong đã vội đăng... đây là bản fix
Mong anh em thứ lỗi ^_^!

Bonus System 1.8 [fixed] http://www.mediafire.com/?of4pgliy1mvw08i

ItemSystem-BonusSystem [Demo] [fixed] http://www.mediafire.com/?647v33wo4ey77dc

---------- Post added at 20:47 ---------- Previous post was at 20:42 ----------

Bonus System 1.8 [fixed] http://www.mediafire.com/?h6sqxpj8z9o3r6j

ItemSystem-BonusSystem [Demo] [fixed] http://www.mediafire.com/?db8ckjiv18u39um
 
Back
Top