Item System - Make by 19101994
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:
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 )
test map
Events
Map initialization
Conditions
Actions
Custom Script: call EnableAddCharge(true)
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:
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)
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)
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):
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!!!
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
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:
với a là item có tick use auto, còn b là item bình thườngcall RegisterItemShop(a,b)
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õ:
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 ý
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 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
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
Được sửa bởi 19101994 ngày 19.08.12 21:37; sửa lần 14. (Reason for editing : http://www.phutu.org)