Cái dòng "function RemoveUnitTimed takes unit u, real wait returns nothing" em ko hiểu nó có tác dụng gì, vì copy vào chạy dùng spell đó thì bị lỗi war3.exe, còn sửa lại nothing thì nó chạy bình thường?
Mà em viết jass nhiều lúc sơ suất viết sai 1 tí rất hay bị lỗi "Expected a name" rồi ra 1 đống lỗi, có cách nào tránh ko?
Có chương trình nào giúp xem nhanh GUI qua Jass ko bác? nhiều lúc ko hiểu lệnh Jass phải mò trong kia mệt quá :(
z.Z.z ơi, tất nhiên khi viết Jass sai 1 tí là lỗi ngay, thật ra tôi viết Jass cũng có lúc lỗi (thậm chí còn bị close WE luôn đó), cho nên tôi khuyên bạn khi viết xong thì copy cái phần Jass đã viết đó vào cái notepad(copy như text ấy) rồi mới save map. Và có cái tool JSP dùng để soạn Jass, có các function mà trong WE ko có, check lỗi nữa. Còn về lệnh Jass thì cứ convert từ trigger ra thôi.
mỗi function có takes và returns
takes là cái mà function sẽ lấy của mình khi call nó ra, có thể lấy nhiều thứ( unit, real, integer, .....)
returns là cái mà function sẽ trả cho mình, chỉ có thể trả 1 thứ (unit hoặc real hoặc integer.....)
function trên sở dĩ khi takes unit u, real wait thì bị lỗi bởi vì nó là 1 triggeraction, triggeraction thì không đc lấy hay trả gì cả
call TriggerAddAction(t, function RemoveUnitTimed)
1 function muốn gọi nó thì để nó tự do (không đc là triggeraction hay triggercondition hay function của 1 timer)
Bạn hãy làm thế này:
tạo 1 trigger, convert trigger đó ra Jass. VD: 1 trigger tên là Jass sau khi convert sẽ thế này
function Trig_Jass_Actions takes nothing returns nothing
endfunction
//===========================================================================
function InitTrig_Jass takes nothing returns nothing
set gg_trg_Jass = CreateTrigger( )
call TriggerAddAction( gg_trg_Jass, function Trig_Jass_Actions )
endfunction
Chỉ cần để lại: "function InitTrig_Jass takes nothing returns nothing
endfunction"
//viết function của bạn ở đây
//===========================================================================
function InitTrig_Jass takes nothing returns nothing
endfunction
=>
function RemoveUnitTimedE takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit u = GetHandleUnit(t,"StoreUnit")
call RemoveUnit(u)
call SetHandleHandle(t,"StoreUnit",null)
call DestroyTimer(t)
set u = null
set t = null
endfunction
function RemoveUnitTimed takes unit u, real wait returns nothing
local timer t = CreateTimer()
call SetHandleHandle(t,"StoreUnit",u)
call TimerStart(t,wait,false,function RemoveUnitTimedE)
set u = null
set t = null
endfunction
//===========================================================================
function InitTrig_Jass takes nothing returns nothing
endfunction
Hãy destroy timer t khi đã expired, vả lại bạn set t = null rồi thì DestroyTimer(t) = DestroyTimer(null) => không cần thiết
Sau đó các trigger tạo ra sau trigger Jass này sẽ đc phép gọi function RemoveUnitTimed. ( call RemoveUnitTimed( u, wait ) )
Nếu trigger khác đc tạo ra trc trigger Jass này thì sẽ bị: Expected a function name" ngay. Và nhớ khi viết những gì trong 1 function phải lùi vào, cách đầu dòng 1 chút (thường thì 4 lần cách(space))
-----
Tôi giải thích ở trên chắc bạn đã hiểu đôi chút về các function, rồi bạn sẽ tạo đc function của riêng mình.
-----
Dùng tool JSP thì khi check lỗi sẽ dễ hơn, vì thỉnh thoảng trong WE mình sai chỉ 1 lỗi nó cũng hiện mấy chục lỗi.
----------------------------------------------------
Nếu cái rìu bay như DotA thì ko có gì, chỉ cần tạo 1 model của Beastmaster ko có rìu ở tay và 1 model cái rìu của Beastmaster, import 2 cái này vào map. Khi chơi thì attach rìu này vào tay Beastmaster bình thường còn nếu khi dùng spell chỉ cần bỏ rìu đã attach đi, khi rìu bay về thì attach lại bình thường.
Bạn phải đưa link lên đây xem xong map thì tôi hoặc ai đó mới tạo đc chớ.
-----------------------------------------------------
Đề nghị admin cho wrap cả jass tags trong bài viết, wrap quote thì bựa lém
