Jass hỏi- đáp

Thảo luận trong 'World Editor' bắt đầu bởi kingkod, 30/10/08.

  1. kingkod

    kingkod Mr & Ms Pac-Man

    Tham gia ngày:
    16/9/07
    Bài viết:
    127
    Các pro jass cho hỏi xíu là làm sao biết được SKill,Unit..... mang mã gì mà gắn vào jass vậy các mã A000 hay A001 ý. :-s:-s:-s:-s:-s:-s:-s:-s
     
  2. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    Object Editor \ Abilities, ấn Ctrl + D
     
  3. CDCode

    CDCode Mr & Ms Pac-Man

    Tham gia ngày:
    28/10/08
    Bài viết:
    162
    các dòng call, locate trong jass là j zậy ?
     
  4. kingkod

    kingkod Mr & Ms Pac-Man

    Tham gia ngày:
    16/9/07
    Bài viết:
    127
    Bác Tom có rảnh thì hướng dẫn các Code cơ bản thường sử dụng dùm. thank nha
    .
    ___________Auto Merge________________

    .
    cho em hỏi thêm cái nữa là sao lại dùng if (not mà ko chỉ if không
     
  5. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    rảnh ư ? nope
    "code cơ bản thường sử dụng" <- ko hiểu :-/

    Mã:
    function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
        if ( not ( GetSpellAbilityId() == 'A000' ) ) then
            return false
        endif
        return true
    endfunction
    
    Cái này tôi cũng chả hiểu Blizzard nghĩ gì mà làm thế cả :|
    Nhg If hay If not thì cũng ko nên dùng trong điều kiện này, thế này:
    Mã:
    function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
        return GetSpellAbilityId() == 'A000'
    endfunction
    
    là gọn nhất, nếu phải thỏa mãn nhiều điều kiện một lúc thì dùng and giữa các điều kiện, dùng or khi chỉ cần thỏa mãn 1 trong nhiều điều kiện
    Mã:
    function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
        return GetSpellAbilityId() == 'A000' and GetUnitState( GetTriggerUnit() , UNIT_STATE_LIFE ) >= 1000
    endfunction
    
    Mã:
    function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
        return GetSpellAbilityId() == 'A000' or GetSpellAbilityId() == 'A001' or GetSpellAbilityId() == 'A002'
    endfunction
    
     
  6. Dark Gamer

    Dark Gamer Legend of Zelda

    Tham gia ngày:
    26/8/07
    Bài viết:
    1,125
    Nơi ở:
    Hà Nội
    call trong Jass tức là bạn gọi 1 function nào đó vd :
    Mã:
    call UnitAddAbility(u,'A02J')
    
    tức bạn call 1 function:
    Mã:
    native UnitAddAbility takes unit whichUnit, integer abilityId returns boolean
    
    đây là 1 function có sẵn trong Jass có nhiệm vụ add thêm ability cho bạn.

    locate thì làm gì có chỉ có local tức là tạo 1 varible chỉ có thể sử dụng trong function đó thường có:
    local integer a ~> tạo 1 var integer
    local real a ~> tạo 1 var real
    group
    unit
    lightning
    ......
    location ~> địa điểm tương đương với point


    còn cái vụ if not là vì nó sử dụng trong CONDITION and : nếu hok phải thì cho là sai tức hok thực hiện
    nói chung theo mình thì

    Mã:
    function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A000' ) ) then
    return false
    endif
    return true
    endfunction
     
    sẽ tương đương với
    Mã:
    function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
    if  GetSpellAbilityId() != 'A000' then // ở đây != là khác 
    return false
    endif
    return true
    endfunction 
    
    hoặc

    Mã:
    function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
    if GetSpellAbilityId() == 'A000' then
    return true
    endif
    return false
    endfunction 
    
    nhưng
    Mã:
    function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A000' ) ) then
    return false
    endif
    if ( not ( GetUnitAbilityLevel(GetSpellAbilityUnit(),GetSpellAbilityId()) >3 then
    return false
    endif
    return true
    endfunction 
    
    thì sẽ có nghĩa là condition and còn:

    Mã:
    function Trig_Untitled_Trigger_001_Conditions takes nothing returns boolean
    if  GetSpellAbilityId() == 'A000' then
    return true
    endif
    if  GetUnitAbilityLevel(GetSpellAbilityUnit(),GetSpellAbilityId()) >3 then
    return true
    endif
    return false
    endfunction 
    
    sẽ có nghĩa là condtion or
    :whew:

    :(( vừa post xong đã thấy anh Tom post roài :((

    ps : anh tom sai nhé if hok viết hoa chứ hok phải If
     
  7. kingkod

    kingkod Mr & Ms Pac-Man

    Tham gia ngày:
    16/9/07
    Bài viết:
    127
    các you xem thử đoạn jass sai gì mà mình test cái là Văng khỏi WE
     
  8. Dark Gamer

    Dark Gamer Legend of Zelda

    Tham gia ngày:
    26/8/07
    Bài viết:
    1,125
    Nơi ở:
    Hà Nội
    cái :
    loop
    set u = FirstOfGroup(g)
    exitwhen u==null
    if IsUnitEnemy(u, GetOwningPlayer(cast))==true then
    call GroupRemoveUnit(g,u)
    call AddSpecialEffectTargetUnitBJ( "origin", u , "Abilities\\Spells\\Orc\\Purge\\PurgeBuffTarget.md l" )
    endif
    endloop

    là 1 loop vô tận vì nếu có 1 unit hok phải là enemy thì sẽ loop mãi mãi
    phải là
    loop
    set u = FirstOfGroup(g)
    exitwhen u==null //
    call GroupRemoveUnit(g,u) // thêm cái này vào
    if IsUnitEnemy(u, GetOwningPlayer(cast))==true then
    call AddSpecialEffectTargetUnitBJ( "origin", u , "Abilities\\Spells\\Orc\\Purge\\PurgeBuffTarget.md l" )
    endif
    endloop

    set dumb = CreateNUnitsAtLoc( 1, 'e001', GetOwningPlayer(caster), p , bj_UNIT_FACING )

    create NUnits là thành 1 group

    quên hok destroy group và remove point rồi kìa

    sao phải :
    local trigger t
    set t=CreateTrigger()

    mà hok viết lun :
    local trigger t = CreateTrigger()

    ps : @Tom : anh tôm ơi có Inukami chắp 17 rồi đấy :X nhưng 3 tháng sau mới có 18 cơ :((
     
  9. CDCode

    CDCode Mr & Ms Pac-Man

    Tham gia ngày:
    28/10/08
    Bài viết:
    162
    Cho em hỏi cách câu lệnh trong jass thì dựa trên j... có bảng gì hướng dẫn rõ câu lệnh nào đc dùng trong trường hợp j hôk ?... hay chỉ tự suy diễn = English
     
  10. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    Mã:
    set u = FirstOfGroup(g)
    call GroupRemoveUnit(g,u)
    exitwhen u==null
    khi u = FirstOfGroup(g) chưa biết u có là no unit hay ko, sao lại remove khỏi group g ? anh chỉ biết remove 1 unit ko ở trong group thì ko sao, nhg remove "null" tức là no unit khỏi group thì ko biết có sao ko, nhg dù sao cũng cẩn thận

    Mã:
    set u = FirstOfGroup(g)
    exitwhen u==null
    call GroupRemoveUnit(g,u)
    Ngoài ra kingkod quên ko destroy effect nữa
    ----
    @CDCode, chưa biết lệnh jass thì cứ viết lệnh GUI ra rồi convert ra jass, ngoài ra có thể dùng tool này: http://www.hiveworkshop.com/forums/tools.php?id=ge7tzt để xem các lệnh

    P/S: mọi người post jass, xin hãy đặt vào code tag ([​IMG] ) như thế sẽ dễ đọc hơn, vì các khoảng trống đc giữ nguyên
     
  11. kingkod

    kingkod Mr & Ms Pac-Man

    Tham gia ngày:
    16/9/07
    Bài viết:
    127
    Hehe mình mới tập làm jass cho đúng ,chưa làm spell thực sự nên chưa quan tâm đến chuyện chống leak,
    cho mình hỏi là sao lại thêm //, cái // để làm gì
    thank
     
  12. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    Phần text sau // là phần "ghi chú" hay dùng để giải thích, ko ảnh hưởng gì đến code
     
  13. kingkod

    kingkod Mr & Ms Pac-Man

    Tham gia ngày:
    16/9/07
    Bài viết:
    127
    Mã:
    function remove takes unit cast, real wait returns nothing
        call TriggerSleepAction(wait)
        call RemoveUnit(cast)
    endfunction
    
    function start takes nothing returns nothing
        call remove(udg_caster, 1.00)
    endfunction

    Mã:
    function condition takes unit cast returns boolean
    return IsUnitDeadBJ(cast)
    endfunction
    
    function start takes nothing returns nothing
    call TriggerSleepAction(0.01)
    if condition(udg_caster)==true then
    call RemoveUnit(udg_caster)
    endif
    endfunction
    OK tiếp tục vấn đề
    đây là trích trong cái hướng dận của pác Tom
    cho hỏi ở Code call function đằng sau nó có biến vậy biến này có ý nghĩa gì, trong cái Hướng dận pác tom ko nói rõ (vì theo tui nghị nó sẽ giống Run triggle bên Gui nên ko biết biến đằng sau để làm gì)
     
  14. Dark Gamer

    Dark Gamer Legend of Zelda

    Tham gia ngày:
    26/8/07
    Bài viết:
    1,125
    Nơi ở:
    Hà Nội
    cái biến đằng sau là các biến bạn lấy từ function này sang function khác, chả qua cái udg_caster là 1 var global ( tức toàn map) nên function nào cũng được nhưng sang local thì hok được ngay

    mình thành thật khuyên bạn cứ làm = GUI cho nhuần nhuyễn đi đã rồi convest sang Jass mà xem chứ hỏi nhìu cái đơn giản như thế này thì hok phải lúc nào cũng có người trả lời cho bạn được đâu::(
     
  15. kingkod

    kingkod Mr & Ms Pac-Man

    Tham gia ngày:
    16/9/07
    Bài viết:
    127
    đối với Gui tui có thể làm bình thường rùi Pác ơi xem map Change Myth cua tui thì biết
    còn hỏi thì ko biết phải hỏi chứ (trong GUI đâu có mấy vụ này) và cobert rừ Gui sang Bizzard cứ làm lòng vòng nhứa cã đầu
     
  16. kingkod

    kingkod Mr & Ms Pac-Man

    Tham gia ngày:
    16/9/07
    Bài viết:
    127
    bạn có thể nói rõ hơn ko, như vậy thì cái udg_caster sẽ thay cho cast và 1.00 sẽ là real wait ah
     
  17. Dark Gamer

    Dark Gamer Legend of Zelda

    Tham gia ngày:
    26/8/07
    Bài viết:
    1,125
    Nơi ở:
    Hà Nội
    bạn có để ý mấy cái function có sẵn như :
    call PauseUnit(unit,boolean) hok ?
    thì cái cast ~ với cái unit nài . Mà khởi đầu thì bạn cứ quan tâm Native function với BJ function đi đã đừng vội sang function tự tạo :wink:

    1.00 chính là real wait
     
  18. askquest

    askquest Mr & Ms Pac-Man

    Tham gia ngày:
    23/5/08
    Bài viết:
    224
    Nói như bà chị vậy lập diễn đàn war ra làm gì ? lập ra để cho ng ta ko bít thì mới hỏi, ko nắm cái cơ bản sao lên đc cái khó. Có gì mạo fạm thì tôi cũng nói vậy àh, có lòng, tâm huyết thì bà chị hướng dẫn chứ ko đừng nói "hỏi nhìu cái đơn giản như thế này thì koh fải lúc nào cũg có ng trả lời" cho bà chị nói riêng và nhưng ng khác nói chung, mỗi khi có ng hỏi thì 1 số pro hay nói :"mấy cái này tự tìm hĩu đi, còn ko thì đi học thêm tiếng anh đi ..." nói vậy mùh chi ? vậy thà đừng trả lời chứ cmt kiểu đó thì cmt chi ???
    .
    ___________Auto Merge________________

    .
    Có gì mạo fạm thì bà chị bỏ qua cho mình :hug:, thẳng tính có sao nói vậy ...
     
  19. boy_shock_kute

    boy_shock_kute Mr & Ms Pac-Man

    Tham gia ngày:
    19/9/08
    Bài viết:
    241
    ai viết giúp mình 1 đoạn JASS làm hiện số damge trên đầu unit đi , thử vài cách mà lag wá , văng lun T_T
     
  20. CDCode

    CDCode Mr & Ms Pac-Man

    Tham gia ngày:
    28/10/08
    Bài viết:
    162
    các dòng code trong jass có số thứ tự nhất định... nếu đổi nó thì có sao hôk ?
    - và box native có rất nhìu code... nếu code đó add vào trong jass thì nó có thể hiện rõ ra game khi chơi ko ? ( để biết đc code nó có tác dụng j thôi í mà )
    - Và cho hỏi function là j =))
    .
    ___________Auto Merge________________

    .
    Àh... Làm sao để tạo ra địa điểm screep ra giống như Green TD và biến đổi theo thời gian
     

Chia sẻ trang này