@GW : lấy đâu ra câu lệnh set max life unit đấy , phải dùng ability Max life <~ rồi remove/add còn dmg thì sang 2pic hỏi đáp search đi , tớ post 1 lần rồi demo map Max life ở dưới
và hình như cách của bạn là cộng thêm maxlife cho unit, xin lỗi vì mình đã nói không rõ yêu cầu, cái mình muốn là tạo một passive spell tăng maxlife theo %maxlife của unit, ví dụ nếu maxlife của unit tăng lên thành 1000 thì khi có spell maxlife= 1000*1.5=1500, và khi max life xuống còn 500 => maxlife= 500*1.5=750 ,max life của unit tăng lên khi unit nhặt item có bonus maxlife hoặc ăn sách, và giảm khi unit drop item có + bonus maxlife.
cái Set unit max HP ở trên là cách cho unit bonus hp khi unit nhận đc ability trên, cho unit thêm số máu = max life hiện tại * % bonus mỗi khi nhận đc sách hay item life bonus thì tăng máu theo % số máu nhận đc từ sách, item. Tất nhiên, khi vứt item ra thì phải giảm máu theo % số máu nhận đc từ item đó ví dụ: 1000 max hp, nhận 50% bonus từ ability -> thêm 1000 * 0.5 = 500 máu nữa ( dùng Set Unit Max HP ở trên) khi nhận đc sách, cho 50 bonus hp, vậy phải thêm 50 * 0.5 = 25 máu nữa cho unit khi nhận/mất 1 item cho 400 máu, phải tăng/giảm 400 * 0.5 = 200 máu. p.s: nếu muốn tăng/giảm số % max life bonus này (50% -> 60% hoặc 50% -> 30%) thì hơi rắc rối. nếu đang là 50% thì số máu max hiện tại sẽ là 150% -> lấy 100% (số máu bình thường khi chưa có bonus %) là số máu max hiện tại / 1.5 rồi số đó nhân với 1.6 hoặc 1.3 là ra số máu max với 60% hoặc 30% bonus. Tất nhiên cũng dùng Set Unit Max HP ở trên để cộng/trừ.
thank anh Tom, vậy là vẫn sử dụng lại nhưng triger trên và thêm vài triger unit nhận sách hoặc unit nhận item nửa, Àh sẵn tiện cho em hỏi thêm, thật ra trong jass có câu lệnh set max life cho unit không anh Tom, nếu không thì blizzard thật là tệ, có lệnh setmaxlife cho Destructable mà không có lệnh set max life cho unit. Trong khi chỉ cần 1 action đơn giản thì đã xong triger thì lại phải làm thêm triger khác => bó tay. Nếu em mà mở được mấy cái triger của blizzard trong các skill của nó thì em phải xem nó làm thế nào.
setunitmaxlife <- ko có còn các spell (có sẵn) của Blizzard đã đc hard-coded, ko dễ dàng gì mà xem được (chứ đừng nói sửa).
Cái gì lù lù ra đây thế? Jass, ngôn ngữ cơ bản của War 3 - Các bạn vào tham khảo [Tutorial] GUI to JASS Đành rằng nó khó tìm, đây lù lù đập ngay vào mặt.
híc nhưng mà e đọc vẫn không hiêu hết.Dạy qua Yahoo vẫn dễ hơn chứ.Nick e là : are_you_love_me_00...Pác nào pro chỉ e đi
Gui thì thoải mái đi,Jass thì mới cơ bản thôi.mới học đc vài cái lẻ lẻ :(..Chưa hiểu rõ lắm.Cần giải thích tường tận :(
Tớ thì biết một nửa của JASS, mỗi tội chưa biết xài biến handlers để làm MUI thế nên cứ xài GUI là trên hết.
Wrong....gõ bao giờ chả nhanh hơn click? khi nào bạn đã làm quen được với JASS thì bạn sẽ nghĩ khác...làm sướng hơn GUI nhiều...tuy nhiên ko bắt buộc phải dùng JASS mới có map tốt !
Mã: function Conditions takes nothing returns boolean if ( not ( GetSpellAbilityId() == 'A000' ) ) then return false endif return true endfunction function Effect takes nothing returns nothing local location TargetLoc = GetSpellTargetLoc() local unit Caster = GetSpellAbilityUnit() local unit Dummy = GetLastCreatedUnit() local unit PickedUnit local timer Timer = GetExpiredTimer() local group Group set Group = GetUnitsInRangeOfLocAll(600 , TargetLoc) call AddSpecialEffectTargetUnitBJ("overhead", Dummy , "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl") call DestroyEffectBJ(GetLastCreatedEffectBJ() ) loop set PickedUnit = FirstOfGroup(Group) exitwhen PickedUnit==null if IsUnitEnemy(PickedUnit,GetOwningPlayer(Caster))==true then call GroupRemoveUnit(Group,PickedUnit) call UnitDamageTargetBJ(Dummy , PickedUnit , 50.00 , ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL) call SetUnitPositionLoc(PickedUnit , PolarProjectionBJ(GetUnitLoc(Dummy) , 40.00 , AngleBetweenPoints(GetUnitLoc(Dummy) , GetUnitLoc(PickedUnit))) ) set Dummy = null endif endloop endfunction function Actions takes nothing returns nothing local unit Caster local unit Dummy local location TargetLoc local timer Timer local group Group set Timer = CreateTimer() set TargetLoc = GetSpellTargetLoc() set Caster = GetSpellAbilityUnit() call CreateUnitAtLoc(GetOwningPlayer(Caster) , 'e000' , TargetLoc , bj_UNIT_FACING) set Dummy = GetLastCreatedUnit() call TimerStart(Timer , 0.5 , true , function Effect ) call TriggerSleepAction( 10.00 ) call KillUnit(Dummy) call DestroyTimer(Timer) call DestroyGroup(Group) call RemoveLocation(TargetLoc) set Caster = null set Dummy = null set TargetLoc = null set Group = null set Timer = null endfunction function InitTrig_Storm_Totem takes nothing returns nothing local trigger Trigger set Trigger = CreateTrigger() call TriggerRegisterAnyUnitEventBJ( Trigger, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( Trigger, Condition( function Conditions ) ) call TriggerAddAction( Trigger, function Actions ) endfunction các bác pro jass xem có gì sai giúp em tại sao nó lại ko tạo effect và ko deal hit point của các unit in group với
có ai cho em hỏi viết code bằng gui và jass vào trigger kiểu gì hok em toàn phải dò tùng dòng khi làm bằng gui thôi mất thời gian lắm