đọc kỹ bài này, hi vọng nó có thể giúp bạn :) http://forum.gamevn.com/showthread.php?485055-Tutorial-GUI-to-JASS
Trước khi test thì save một lần,nhìn trên cửa sổ JNG góc bên phải trên cùng có dấu * thì cứ phải save lại mới test được
Cho minh hỏi làm cach nào để điều chỉnh chỉ số ãm cho skill ví du: gần giống skill passive của necrolyte (ten gì đó quên rồi) nhưng mình muốn kẻ thù đứng gần hero sẽ bị giảm HP regen, mình thử skill 3 (passvie) của Dark knight tên Unholy Aura mỉnh điều chỉnh nó xuống chỉ số âm và enter thì nó trở về số 0 có ai bik cách làm khong chỉ mình. mình cần khẩn cấp lắm
@Daric: bài đó e đọc hơn chục lần rùi mà vẫn chưa thấm bác xem giúp e cái này Mã: library Myboard initializer Init requires Multiboard function create takes integer columnCount, integer rowCount returns nothing local Multiboard mb = Multiboard.create(1,1) set mb.which = CreateMultiboard() set mb.columnCount = 4 set mb.rowCount = 13 call MultiboardSetColumnCount(mb.which, mb.columnCount) call MultiboardSetRowCount(mb.which, mb.rowCount) call mb.clear() call MultiboardDisplay(mb.which, flag) endfunction function Init takes nothing returns nothing local trigger t set t = CreateTrigger() call TriggerRegisterTimerEventSingle(t, 1.) call TriggerAddAction(t, function create) endfunction endlibrary nó báo lỗi: Line 1625: Multiboard.which is private còn phần effect hình rẽ quạt bác giúp e lun đc hk
xóa cái đấy đi... mấy cái màu xanh sai lệnh rồi màu tía thì là đặt sai chỗ, để phía dưới hàm .create ấy. Đồng thời sửa tên function create lại, trùng struct kìa
cho mình hỏi về bj_lastCreatedXXX có phải nó chỉ thực ra như là 1 biến có từ khởi tạo và nếu cái XXX đó đã tạo từ rất lâu rồi, sau này có nhìu dạng XXX khác, vậy nếu mình set bj_lastCreatedXXX = XXX, thì có được k
nó chính là một biến để lưu các giá trị,bạn có thể lưu bj_lastCreatedUnit = CreateUnit(...),GetSpellAbilityUnit()...,nhưng bạn hỏi "và nếu cái XXX đó đã tạo từ rất lâu rồi, sau này có nhìu dạng XXX khác" là muốn hỏi về cái gì ?
mình biết bj_lastCreatedUnit là nó tạo unit trong 1 function mẫu, và sau đó nó gán bj_lastCreatedUnit bằng unit đó ý mình hỏi là: nếu mình đã tạo unit A, unit B, unit C, vậy thì lúc này bj_lastCreatedUnit là C nhưng nếu mình "set bj_lastCreatedUnit = A", vậy thì có bị gì k ? hay đơn giản, bj_lastCreatedUnit cũng chỉ là 1 biến
anh TOM cho em hỏi về lỗi này, em sử dụng Multiboard Decorator giống của a, mà k hiểu sao lại lỗi cái này
cho e hỏi cái này: trong hàm này function SpellDamage takes integer level returns real returns I2R(level)*2 endfunction cái level là level của Spell cast, còn muốn lấy giá trị stat (agi, str, int) của hero thì làm sao?
m` lấy từ cái spell lúc bạn làm cho m` á Mã: library Spell initializer init requires TimerUtils,GroupUtils globals private integer SpellId ='A000' private real SpellAoe =400 private real SpellSpeed =0.1 private real SpellDur =1 private real array SpellDamage private string SpellSfx ="Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl" private player TempPlayer endglobals private function GetSpellDamage takes integer level returns real return I2R(level)*2 endfunction struct Spell unit u real x real y real tik integer level method stop takes nothing returns nothing set.u=null call.destroy() endmethod method Effect takes nothing returns nothing local real x local real y local real r=GetRandomReal(0,SpellAoe) set x=.x+r*Cos(r*bj_DEGTORAD) set y=.y+r*Sin(r*bj_DEGTORAD) call DestroyEffect(AddSpecialEffect(SpellSfx,x,y)) endmethod static method Check takes nothing returns boolean local boolean b=true local unit u=GetFilterUnit() set b=b and GetWidgetLife(u)>.405 set b=b and IsUnitType(u,UNIT_TYPE_STRUCTURE)==false set b=b and IsUnitEnemy(u,TempPlayer) set u=null return b endmethod method Damage takes nothing returns nothing local group g=NewGroup() local unit u set TempPlayer=GetOwningPlayer(.u) call GroupEnumUnitsInArea(g,.x,.y,SpellAoe,Condition(function thistype.Check)) loop set u=FirstOfGroup(g) exitwhen u==null call UnitDamageTarget(.u,u,GetSpellDamage(.level),true,true,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_MAGIC,null) call GroupRemoveUnit(g,u) set u=null endloop call ReleaseGroup(g) set TempPlayer=null set g=null set u=null endmethod static method Loop takes nothing returns nothing local timer ti=GetExpiredTimer() local thistype this=GetTimerData(ti) set.tik=.tik-1 if.tik<=0then call ReleaseTimer(ti) call.stop() else call.Effect() call.Damage() endif set ti=null endmethod static method Create takes unit u,real x,real y returns thistype local thistype this=thistype.allocate() local timer ti=NewTimer() set.u=u set.x=x set.y=y set.level=GetUnitAbilityLevel(.u,SpellId) set.tik=SpellDur/SpellSpeed call SetTimerData(ti,this) call TimerStart(ti,SpellSpeed,true,function thistype.Loop) set ti=null return this endmethod endstruct private function Cd takes nothing returns boolean if GetSpellAbilityId()==SpellId then call Spell.Create(GetSpellAbilityUnit(),GetSpellTargetX(),GetSpellTargetY()) endif return false endfunction private function init takes nothing returns nothing local integer i=0 local trigger t=CreateTrigger() loop if GetPlayerSlotState(Player(i))==PLAYER_SLOT_STATE_PLAYING then call TriggerRegisterPlayerUnitEvent(t,Player(i),EVENT_PLAYER_UNIT_SPELL_EFFECT,null) endif set i=i+1 exitwhen i==bj_MAX_PLAYER_SLOTS endloop call TriggerAddCondition(t,function Cd) set t=null endfunction endlibrary