Topic hỏi đáp về cách làm map | version 14

Status
Không mở trả lời sau này.
Mình đang cần giúp:

Mình làm hệ thống tàu hỏa và mình muốn khi tàu đến thì thông báo trên tàu là đến còn nếu người khác không đi tàu mà đi qua thì hiện cho người đó thanks

---------- Post added at 22:54 ---------- Previous post was at 22:51 ----------



Bạn thử áp dụng học item qua mua skills hay gì ấy quên rùi

Bạn nói zay mình sao hiểu ? Còn ko hướng dẫn nói vậy thì...Dù sao cũng thanks vì comment
 
câu hỏi của mình về UnitIndexSystem
Với lại mình vẫn ko hiểu lắm về cách sử dụng timer, ai có thể cho mình biết 1 số hệ thống timer người ta hay dùng bây h, và công dụng của nó như thế nào?

p/s vuongkkk: mình vừa biết đc là là sau khi unit bị remove 1 tí thì nó mới mất UserData và các thông tin khác :D
 
Chỉnh sửa cuối:
^UnitIndexSys của cậu có lẽ ko vấn đề gì nhưng nên chú ý cách dùng là ko dùng SetUnitUserData khác ngoài system có thể gây lỗi cả hệ thống
Và tớ vẫn băn khoăn tại sao cái PUI_Action để check lỗi của cậu lại chỉ chạy đến IPUI_maxcount=10?
Nếu lỗi nằm ở index > 10 thì lỗi cả hệ thống !!!

Timer loop 1(one shot) lần thường là dùng để tạo game event hoặc là delay 1 action nào đó sau 1 khoảng thời gian.
Cái đó thì có thể dùng TimerUtils của Vex trên wc3c.net
Còn timer loop đi lặp lại và thường có period time ngắn thì dùng để làm spell cần xử lý overtime như slide hay là deal dam độc chả hạn
Cái này thì có thể dùng T32 của Jesus4Lif trên thehelper hoặc là Constant Timer Loop 32 của Nestharus

Edit: Thực ra ngay ở event unit death thì nó đã mất thông tin về buff rồi nên ko thể check buff lúc đấy. Và lúc unit leave map thì là lúc unit bắt đầu bị remove hoặc tự biến mất thì ngay trong trigger đó thông tin unit vẫn còn nguyên. sang trigger khác thì mới mất. chứ ko phải mất 1 lúc nó mới mất. Có thể nói là mất ngay sau khi bị remove
 
Chỉnh sửa cuối:
^UnitIndexSys của cậu có lẽ ko vấn đề gì nhưng nên chú ý cách dùng là ko dùng SetUnitUserData khác ngoài system có thể gây lỗi cả hệ thống
Và tớ vẫn băn khoăn tại sao cái PUI_Action để check lỗi của cậu lại chỉ chạy đến IPUI_maxcount=10?
Nếu lỗi nằm ở index > 10 thì lỗi cả hệ thống !!!

À à tại trong lúc test mình để 10 để nó clear nhanh :D


Edit: Thực ra ngay ở event unit death thì nó đã mất thông tin về buff rồi nên ko thể check buff lúc đấy. Và lúc unit leave map thì là lúc unit bắt đầu bị remove hoặc tự biến mất thì ngay trong trigger đó thông tin unit vẫn còn nguyên. sang trigger khác thì mới mất. chứ ko phải mất 1 lúc nó mới mất. Có thể nói là mất ngay sau khi bị remove
Vừa test lại đúng thế thật.
Nhưng vẫn ko hiểu ngay trong trigger đó thông tin unit vẫn còn nguyên. sang trigger khác trigger đó là sao và trigger khác là sao, khá mơ hồ thế nào là trigger :D


Timer loop 1(one shot) lần thường là dùng để tạo game event hoặc là delay 1 action nào đó sau 1 khoảng thời gian.
Cái đó thì có thể dùng TimerUtils của Vex trên wc3c.net
Còn timer loop đi lặp lại và thường có period time ngắn thì dùng để làm spell cần xử lý overtime như slide hay là deal dam độc chả hạn
Cái này thì có thể dùng T32 của Jesus4Lif trên thehelper hoặc là Constant Timer Loop 32 của Nestharus

Mấy hệ thống timer đó ích lợi gì nhỉ? Nếu mình xài timer local và cẩn thận destroy này kia thì việc dùng mấy hệ thống timer đó có thật sự cần thiết ko?
 
Chỉnh sửa cuối:
Cái này: nếu là ally thì xài đc rồi, nhưng nếu là enemy như bạn nói thì phải deal 150/300/450/600 dam (chứ ko phải 50/100/150/200 như bạn nói) vì đã heal 100/200/300/400, vậy mới gây đc 50/100/150/200 dam (=1/2 lượng heal)
nếu vậy thì bạn nên dùng loại dam là ATTACK_TYPE_CHAOS (nếu bạn ko chỉnh gì custom constants), DAMAGE_TYPE_UNIVERSAL, vậy sẽ gây đc dam thuần đúng con số đó :D

nói tóm lại cách 1 khá rắc rối và bất khả thi vì enemy target là UNDEAD \m/

---------- Post added at 11:38 ---------- Previous post was at 09:43 ----------

cho em hỏi: nếu là ally thì dùng "belongs to an ally", nếu là enemy thì dùng " belongs to an enemy", vậy thì self thì.... dủng cái gì :-??

---------- Post added at 11:41 ---------- Previous post was at 11:38 ----------

sẵn cho em hỏi cái này nữa: sao trigger này lại deal damage có 1 phát là thằng đó chết tươi :-??:
Mã:
lord 2
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to lord 2 
    Actions
        If (((Target unit of ability being cast) belongs to an ally of (Owner of (Casting unit))) Equal to True) then do (Unit - Set life of (Target unit of ability being cast) to (100.00 x (Real((Level of lord 2  for (Casting unit)))))) else do (Do nothing)
        If (((Target unit of ability being cast) belongs to an enemy of (Owner of (Casting unit))) Equal to True) then do (Unit - Set life of (Target unit of ability being cast) to (-100.00 x (Real((Level of lord 2  for (Casting unit)))))) else do (Do nothing)
 
Cho hỏi bình thường mọi người soạn jass thì dùng soft gì hỗ trợ hay viết tay hết,mình xem trong JassCraft thấy nó đâu có đầy đủ,ví dụ 1 dòng event đầy đủ:

call TriggerRegisterAnyUnitEventBJ( gg_trg_t, EVENT_PLAYER_UNIT_SPELL_EFFECT)

nhưng trong jasscraft nó rời rạc hai cái đó.

Mình đang tập mò về Jass nên không biết gì cả :| đành tìm hiểu từ những cái cơ bản nhất,mọi người chỉ giáo thêm :|
 
Mã:
lord 2
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to lord 2 
    Actions
        If (((Target unit of ability being cast) belongs to an ally of (Owner of (Casting unit))) Equal to True) then do (Unit - Set life of (Target unit of ability being cast) to (100.00 x (Real((Level of lord 2  for (Casting unit)))))) else do (Do nothing)
        [COLOR="#FF0000"][B]If (((Target unit of ability being cast) belongs to an enemy of (Owner of (Casting unit))) Equal to True) then do (Unit - Set life of (Target unit of ability being cast) to (-100.00 x (Real((Level of lord 2  for (Casting unit)))))) else do (Do nothing)[/B][/COLOR]

đặt máu thành số âm như thế thì chả chết tươi =))

Cho hỏi bình thường mọi người soạn jass thì dùng soft gì hỗ trợ hay viết tay hết,mình xem trong JassCraft thấy nó đâu có đầy đủ,ví dụ 1 dòng event đầy đủ:

call TriggerRegisterAnyUnitEventBJ( gg_trg_t, EVENT_PLAYER_UNIT_SPELL_EFFECT)

nhưng trong jasscraft nó rời rạc hai cái đó.

Mình đang tập mò về Jass nên không biết gì cả :| đành tìm hiểu từ những cái cơ bản nhất,mọi người chỉ giáo thêm :|

dùng JNGP là đc rồi, có màu code, có tự động nhắc tên function,...

với trigger thì cứ convert từ GUI ra thôi, các lệnh từ GUI ra JASS mà chưa nhớ thì cũng convert nốt
tuy nhiên thay thế các BJ "có hại" bằng các native. Ví dụ:
[spoil]
đây là hàm Unit - Add Ability trong GUI
Mã:
function UnitAddAbilityBJ takes integer abilityId, unit whichUnit returns boolean
    return UnitAddAbility(whichUnit, abilityId)
endfunction
nó không làm gì cả ngoài việc gọi native UnitAddAbility
Mã:
native UnitAddAbility takes unit whichUnit, integer abilityId returns boolean
có cái khác là vị trí của các tham số đã thay đổi ( ability cần add, unit ) thay vì (unit, ability cần add) như native

nên dùng luôn native
Mã:
[s]call UnitAddAbilityBJ( 'ANab', GetTriggerUnit() )[/s]
//thay bằng
call UnitAddAbility( GetTriggerUnit(), 'ANab' )
[/spoil]
và dùng biến local thay cho global (nếu được)
---
cái này tự học là chính, tôi muốn chỉ rõ ràng cũng khó :-??
 
đặt máu thành số âm như thế thì chả chết tươi =))



dùng JNGP là đc rồi, có màu code, có tự động nhắc tên function,...

với trigger thì cứ convert từ GUI ra thôi, các lệnh từ GUI ra JASS mà chưa nhớ thì cũng convert nốt
tuy nhiên thay thế các BJ "có hại" bằng các native. Ví dụ:
[spoil]
đây là hàm Unit - Add Ability trong GUI
Mã:
function UnitAddAbilityBJ takes integer abilityId, unit whichUnit returns boolean
    return UnitAddAbility(whichUnit, abilityId)
endfunction
nó không làm gì cả ngoài việc gọi native UnitAddAbility
Mã:
native UnitAddAbility takes unit whichUnit, integer abilityId returns boolean
có cái khác là vị trí của các tham số đã thay đổi ( ability cần add, unit ) thay vì (unit, ability cần add) như native

nên dùng luôn native
Mã:
[s]call UnitAddAbilityBJ( 'ANab', GetTriggerUnit() )[/s]
//thay bằng
call UnitAddAbility( GetTriggerUnit(), 'ANab' )
[/spoil]
và dùng biến local thay cho global (nếu được)
---
cái này tự học là chính, tôi muốn chỉ rõ ràng cũng khó :-??

như thế thì đó là đặt máu cho đâu phải bom máu x-(
vậy dùng trigger gì để heal khi target là ally và deal khi target là enemy @@
 
như thế thì đó là đặt máu cho đâu phải bom máu x-(
vậy dùng trigger gì để heal khi target là ally và deal khi target là enemy @@

bạn dùng set life thành số âm r` .... là 1 hit nó chết ngắc r` ..... fải thay như sau :
Mã:
lord 2
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to lord 2 
    Actions
        If (((Target unit of ability being cast) belongs to an ally of (Owner of (Casting unit))) Equal to True) then do (Unit - Set life of (Target unit of ability being cast) to ([B][COLOR="#0000CD"](Life of (Target unit of ability being cast )[/COLOR][/B]) + 100.00 x (Real((Level of lord 2  for (Casting unit)))))) else do (Do nothing)
        If (((Target unit of ability being cast) belongs to an enemy of (Owner of (Casting unit))) Equal to True) then do (Unit - Set life of (Target unit of ability being cast) to ([B][COLOR="#0000CD"](Life of (Target unit of ability being cast )[/COLOR][/B]) - 100.00 x (Real((Level of lord 2  for (Casting unit)))))) else do (Do nothing)
[/QUOTE]
còn về (Life of (Target unit of ability being cast ) ở đâu thì bạn vào Unit - Property nhé :D
 
Nhưng vẫn ko hiểu ngay trong trigger đó thông tin unit vẫn còn nguyên. sang trigger khác trigger đó là sao và trigger khác là sao, khá mơ hồ thế nào là trigger :D
Nôm na jass là các câu lệnh được xử lý liên tục từ trên xuống dưới. Và 1 event sẽ gọi 1 đoạn mã lệnh. Thực hiện hết đoạn mã lệnh là hết 1 trigger. Lúc xử lý xong trigger leave map thì unit đó coi như hết nhiệm vụ và bị xóa. Có gì khó hiểu ở đây ko ???

Mấy hệ thống timer đó ích lợi gì nhỉ? Nếu mình xài timer local và cẩn thận destroy này kia thì việc dùng mấy hệ thống timer đó có thật sự cần thiết ko?
Cái đó cậu làm spell nhiều và khi nào làm phức tạp 1 chút chắc sẽ cần dùng.
Ví dụ là di chuyển lighning liên tục để nối giữa 2 unit và thực hiện việc hút mana bên này và tăng mana bên kia chả hạn ....
 
nếu target là ally thì dùng trigger "belongs to an ally", nếu target là enemy thì dùng trigger "belongs to an enemy"
vậy còn self thì... :-??
 
Mấy hệ thống timer đó ích lợi gì nhỉ? Nếu mình xài timer local và cẩn thận destroy này kia thì việc dùng mấy hệ thống timer đó có thật sự cần thiết ko?
Cái đó cậu làm spell nhiều và khi nào làm phức tạp 1 chút chắc sẽ cần dùng.
Ví dụ là di chuyển lighning liên tục để nối giữa 2 unit và thực hiện việc hút mana bên này và tăng mana bên kia chả hạn ....

Nó cũng kiểu như tạo 1 cái SetUnitTimerData để save 1 integer ứng với 1 timer để dùng vậy thôi phải ko nhỉ ? Giống như hệ thống đánh index cho Unit nhưng là cho Timer?
 
Đấy là timerutils còn T32 với CTL32 thì là loop 1 loạt các struct overtime
 
nếu target là ally thì dùng trigger "belongs to an ally", nếu target là enemy thì dùng trigger "belongs to an enemy"
vậy còn self thì... :-??

"Belongs to an ally" là tính cả self trong đó rồi.

---------- Post added at 19:22 ---------- Previous post was at 19:15 ----------

Ai hướng dẫn mình lại vụ slide unit mà ko bị mất order bằng GUI với. VD : Bình thường thì Set Point 1 = Position of unit, Point 2 = Point 1 Offset by 100 toward ... , rồi move unit to Point 2, giờ ko muốn bị mất order khi move thì phải làm thế nào?
 
Ai giúp mình cái này với :
1:mình định làm cái skill blizard (bắn nước :D) ,Nhưng mà giờ mình muốn là khi bắn nước xuống thì quái ở trong phạm vi đó sẽ bị freezing breath hoặc là frost atack
2:Mình định làm kiểu skill passive atack này nhưng không hiểu cách làm ntn :2cool_sad: -mình dùng frost atack kết hợp với barrage nhưng không được :( Khi vào game thì nó cũng bắn nhiều tên nhưng trong đó thì chỉ có 1 tên là frost attack :(
-Mình cũng làm giống kiểu trên nhưng mà là đánh gần (Frost Attack + Cleaving Attack)
P/S:Hy vọng mấy bạn giúp dùm mình với :2cool_burn_joss_sti
 
Status
Không mở trả lời sau này.
Back
Top