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

Thảo luận trong 'World Editor' bắt đầu bởi Tom_Kazansky, 2/8/11.

Trạng thái chủ đề:
Không mở trả lời sau này.
  1. hieu2525

    hieu2525 Mr & Ms Pac-Man

    Tham gia ngày:
    23/3/09
    Bài viết:
    111
    Nơi ở:
    HN
    100% như trong hình rồi ạ, nhưng khi em vào game thì ko thấy chọn force đâu cả. Map gốc thì ko bị sao ạ.
    [​IMG]
     
  2. Zoro Samurai

    Zoro Samurai Youtube Master Race

    Tham gia ngày:
    22/8/11
    Bài viết:
    23
    cảm ơn bạn, mình làm theo bài viết bên đó nhưng nó chỉ giúp mình sử dụng nhiều loại nền thôi, mình muốn sử dụng được cả nhiều loại đất cơ, bạn có thể chỉ mình được không
     
  3. NguLongHaKhac

    NguLongHaKhac T.E.T.Я.I.S

    Tham gia ngày:
    5/2/11
    Bài viết:
    653
    Nơi ở:
    MC
    Ai biết khi đánh vào một cái nhà thì số dmg của nó lên 1s là 1200 thì mình sẽ được 1200 Gold (Giống troll & Elves ý )
    ?????
     
  4. Sinni

    Sinni Donkey Kong

    Tham gia ngày:
    11/6/11
    Bài viết:
    311
    Nơi ở:
    kw_corp@yh
    nền ? đất có gì khác nhau ??
    hay mún import thêm vào :-/
    Help :((
     
  5. FlameDrake

    FlameDrake Dragon Quest

    Tham gia ngày:
    1/12/10
    Bài viết:
    1,298
    Nơi ở:
    Quận 10 HCM
    Mọi người cho hỏi, cái abilities Volcano của con Firelord, lúc ra skill thì có nguyên quả núi lửa, không biết có cách nào làm mất quả núi lửa này đc ko ?
     
  6. _Wild__Wolf_

    _Wild__Wolf_ Youtube Master Race

    Tham gia ngày:
    4/8/11
    Bài viết:
    80
    mấy anh ơi!!! có ai biết làm cho 1 skill trông mờ đi k0. lam unit mờ di thì em biết nhưng làm skill mờ đi thì em chịu. skill mờ di tức là trông nó trong suốt ấy. vẫn ra skill nhưng có thể nhìn qua được ấy.
     
  7. mvcthinh

    mvcthinh Mr & Ms Pac-Man

    Tham gia ngày:
    18/8/11
    Bài viết:
    140
    Nơi ở:
    HCM
    làm thử rồi.. không có cách nào :D
    cái này thì sử dụng lập = Timer thôi.
    Tạo 1 Trigger
    Event - Every 0.1 s ...
    Action - là Chance Animation cho con Unit đó mờ 20% hoặc bao nhiu tùy thích..

    1 Trigger khác tạo ra để bắt Spell..
    Có nhiều cách để làm nhưng mình sẽ giới thiệu sơ qua cho bạn một cách.

    Đây là Trigger 1 Dùng để bắt Spell..
    Khi Unit học Skill Passive này thì sẽ thiết lập những thứ cần thiết để khi qua bên Trigger kia có cái mà dùng
    Mã:
    Hide
        Events
            Unit - A unit Learns a skill
        Conditions
            (Learned Hero Skill) Equal to [Demon Hunter] Evasion 
        Actions
            Set EvasionUnit[(Player number of (Owner of (Triggering unit)))] = (Triggering unit)
            Set Evasion[(Player number of (Owner of (Triggering unit)))] = True
            Set EvasionInt[(Player number of (Owner of (Triggering unit)))] = (Level of [Demon Hunter] Evasion  for (Triggering unit))
            Trigger - Run Hide effect <gen> (checking conditions)
            Trigger - Turn on Hide effect <gen>
    Đây là Trigger thứ 2.
    Dùng vòng lập như vậy và các biến sử dụng Array là để MUI Skill + với nếu Unit đó chết đi thì khi hồi sinh lại thì mình lại thấy được nó vẫn mờ.

    Mã:
    Hide effect
        Events
            Time - Every 0.20 seconds of game time
        Conditions
        Actions
            For each (Integer A) from 1 to 12, do (Actions)
                Loop - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        If - Conditions
                            Evasion[(Integer A)] Equal to True
                        Then - Actions
                            Animation - Change EvasionUnit[(Integer A)]'s vertex coloring to (100.00%, 100.00%, 100.00%) with (9.00 x (Real(EvasionInt[(Integer A)])))% transparency
                        Else - Actions
                            Do nothing
    
    Đây là một Skill trong Maps Footman Frenzy - Fountain Of Power mà mình đang thực hiẹn. Thử làm nhé. :)
     
  8. kingghot

    kingghot Mr & Ms Pac-Man

    Tham gia ngày:
    15/4/10
    Bài viết:
    290
    Nơi ở:
    Rach Gia
    ? : Làm sao mà khi vào game có bản tùy chọn tên là Chọn Hero xuất hiện : Chiến Binh,Phù Thủy,Lính Ngự Lâm,Trinh Sát,Ví dụ chọn Chiến Binh thì sẽ tạo ra 1 heros tên chiến binh cửa play đó ở 1 vùng nào đó.Dịch ra giùm cái phần trigger ấy luôn giùm mình nhá

    Chiến Binh,Phù Thủy,Lính Ngự Lâm,Trinh Sát là những dòng chọn

    ---------- Post added at 22:26 ---------- Previous post was at 21:58 ----------

    cho hỏi thêm cái này nữa : cho mình cái maps demon về trigger trên và 1 trigger về phần 1 heros lên 1 lv thì được skills, VD : hero chiến binh lên lv 2 có chiêu vật ngã
     
    Chỉnh sửa cuối: 11/9/11
  9. mvcthinh

    mvcthinh Mr & Ms Pac-Man

    Tham gia ngày:
    18/8/11
    Bài viết:
    140
    Nơi ở:
    HCM
    Đây là 2 Trigger mà bạn cần để thực hiện việc trên..
    PHP:
    UnitTakeDamageEvent
        Events
            Time 
    Elapsed game time is 0.00 seconds
        Conditions
        Actions
            Unit Group 
    Pick every unit in (Units in (Playable map areamatching (((Matching unitis A structureEqual to True)) and do (Actions)
                
    Loop Actions
                    Unit Group 
    Add (Picked unitto TakeDamGroup
                    Trigger 
    Add to Action <genthe event (Unit - (Picked unitTakes damage)
    tạo biến Real tên DamageSource

    PHP:
    Action
        Events
        Conditions
        Actions
            Set DamageSource 
    = (Damage taken)
            
    Game Display to (All playersthe text: (String(DamageSource))
            If (
    All Conditions are Truethen do (Then Actions) else do (Else Actions)
                If - 
    Conditions
                    DamageSource Greater than 
    or equal to 1200.00
                Then 
    Actions
                    Player 
    Add (Integer(DamageSource)) to (Owner of (Damage source)) Current gold
                
    Else - Actions
    Nếu lượng Damage mà cái nhà nhận được nhỏ hơn 1200 (đã trừ Armor) thì nó sẽ ko cho thêm tiền.. nếu đánh mạnh hơn thì có tiền = cái lượng damage lớn hơn 1200...
    Trên kia chỉ là ví dụ.. bạn thay đổi sao tùy bạn.
     
  10. Zoro Samurai

    Zoro Samurai Youtube Master Race

    Tham gia ngày:
    22/8/11
    Bài viết:
    23

    không, ý mình là cái loại đất khi dùng increase one nâng nó lên á, thường thì world editor chỉ cho chọn 1 cái, 1 cái có 2 loại trong đó, nếu bạn biết map element TD thì nó giống như vậy, sử dụng cùng lúc 8 loại đất, ai chỉ mình đi
     
  11. goldviper

    goldviper Mario & Luigi Lão Làng GVN

    Tham gia ngày:
    7/1/10
    Bài viết:
    757
    Nơi ở:
    Tổ dân phố
    hỏi lại , mình đã thử cách của bạn gì gì ở trên cũng ko được :(
    hỏi thêm Sound set của con Grand Magus trong DotA là của unit nào vậy , hơn nữa mình thấy lạ là ko chọn được Sound của Medivh.
     
  12. mvcthinh

    mvcthinh Mr & Ms Pac-Man

    Tham gia ngày:
    18/8/11
    Bài viết:
    140
    Nơi ở:
    HCM
    Có thể họ dùng thủ thuật thôi... làm theo Link mà mình đã đưa đi...
     
  13. vuongkkk

    vuongkkk T.E.T.Я.I.S

    Tham gia ngày:
    22/5/10
    Bài viết:
    588
    Nơi ở:
    Hà Nội
    Đầu tiên lệnh câu lệnh call GroupEnumUnitsInRangeOfLoc(g,p,512,null) làm ngưng lại toàn bộ các dòng code bên dưới
    vì p của bạn chưa set location như trigger bên dưới nên nó là null=> dừng trigger lại luôn

    Sau đó bạn có chắc là có computer user trong map ko?
    Nếu mình ko nhầm thì nếu ko dùng trigger thiết lập player là computer hay lúc chọn map ko chỉnh user là computer hay ko có sẵn player nào được chỉnh sẵn là computer thì code trên ko có tác dụng

    Cuối cùng là sửa đoạn code
    PHP:
    set temp FirstOfGroup(g)
    set hpHero GetUnitLifePercent(x)
    loop
        exitwhen temp 
    == null
            set hpTarget
    GetUnitLifePercent(temp)
                if 
    hpTarget 50 then
                    call IssueTargetOrderBJ
    (x,"attack",temp)
                    
                    
    call GroupRemoveUnit(g,temp)
                    
    set temp FirstOfGroup(g)
                endif

            
    call GroupRemoveUnit(g,temp)
            
    set temp FirstOfGroup(g)
    endloop
    => thành
    PHP:
        loop
            set temp 
    FirstOfGroup(g)
            
    exitwhen temp == null
                set hpTarget
    GetUnitLifePercent(temp)
                    if 
    hpTarget 50 then
                        call IssueTargetOrderBJ
    (x,"attack",temp)
                        
    exitwhen true
                    
    endif
            
    call GroupRemoveUnit(g,temp)
        
    endloop
        call GroupClear
    (g)
    set hpHero GetUnitLifePercent(x)
    Cứ nâng lên thành núi trước rồi tô lại terrain ko được à :-?
     
    Chỉnh sửa cuối: 12/9/11
  14. mvcthinh

    mvcthinh Mr & Ms Pac-Man

    Tham gia ngày:
    18/8/11
    Bài viết:
    140
    Nơi ở:
    HCM
    Đây là đoạn code sau khi mình sửa lại.. tuy nhiên nó vẫn không Hoạt động.
    Ý tưởng của mình là làm cho các Hero (mấy con này đã được lưu biến HERO[1->12]) đang chơi và được điều khiển bởi Computer có khả năng tấng công vào mục tiêu lúc mà nó đánh nhau.. đồng thời tự đồng đi qua Start Location khi nó mạnh cũng như tự rút về khi hết máu... bên Trigger thì mình làm được nhưng bên vJASS thì khi làm ra đoạn code đó thì nó lại không hoạt động.. không biết có chỗ nào sai nữa không ..


    PHP:
    scope AttackAuto initializer Auto


    private function Actions takes nothing returns nothing
    local integer A 
    =1

    local real hpTarget
    local real hpHero

    local unit x 
    local unit temp

    local location p 
    local location p2

    local player h
    local player r

    local force f

    local group g 
    CreateGroup()


    loop 
       exitwhen A
    >12
                                
                                
    // Vong lap dau tien dung de kiem tra xem xung quanh Hero co Unit nao co mau duoi 50% thi se xong vao danh con do
        
    set x udg_HERO[A]
        
    set p2 GetUnitLoc(x)
        
        if (
    GetPlayerController(GetOwningPlayer(x)) == MAP_CONTROL_COMPUTER then
    // Dieu kien kiem tra xem Player do co phai do Computer dieu khien hay khong.. neu dung thi moi cho phep RUN o duoi.

                                
    call GroupEnumUnitsInRangeOfLoc(g,p2,512,null)
                             
                               
                                        
    loop
                                            set temp 
    FirstOfGroup(g)
                                            
    exitwhen temp == null
                                                set hpTarget
    GetUnitLifePercent(temp)
                                                    if 
    hpTarget 50 then
                                                        call IssueTargetOrderBJ
    (x,"attack",temp)
                                        
                                                       
    exitwhen true 
                                                    
    endif
                                    
                                                
    call GroupRemoveUnit(g,temp)
                                               
                                        
    endloop
                                        call GroupClear
    (g
                                
    set hpHero GetUnitLifePercent(x)
    // Ket thuc vong lap cua Group g
    // bat dau kiem tra Hp Hero.. neu duoi 20 % thi lenh cho no chay ve
                                      
                                        
                                        
                                    
    if hpHero 20 then
                                        set p 
    =  GetPlayerStartLocationLoc(GetOwningPlayer(x))
                                       
    call IssuePointOrderLoc(x,"move",p)
                                       
    call RemoveLocation(p)
                                       
    set p null
                                    
                                       
    else
                                            if 
    hpHero <7 then
                                                set p 
    =  GetPlayerStartLocationLoc(GetOwningPlayer(x))
                                                
    call IssuePointOrderLoc(x,"patrol",p)
                                                
    call RemoveLocation(p)
                                                
    set p null
                                                    
    else
                                                        
    set h =GetOwningPlayer(x)
                                                        
    set f GetPlayersEnemies(h)
                                                        
    set r ForcePickRandomPlayer(f)
                                                            if  (
    GetPlayerSlotState(r) == PLAYER_SLOT_STATE_PLAYING then
                                                            
                                                                set p 
    =  GetPlayerStartLocationLoc(r)
                                                                
    call IssuePointOrderLoc(x,"attack",p)
                                                                
    call RemoveLocation(p)
                                                                
    set p null
                                                            
    endif
                                                endif
                            
                                    endif
       endif
                            
            
    set A A+1
      
            set p2 
    null
            set x 
    null
            set temp 
    null
            set r 
    null
            set h 
    null
            set g 
    null
            set f 
    null
            call DestroyGroup
    (g)
            
    call DestroyForce(f)
            
    call RemoveLocation(p)
            
    call RemoveLocation(p2)

    endloop
    set p2 
    null
      set x 
    null
      set temp 
    null
      set r 
    null
      set h 
    null
      set g 
    null
      set f 
    null
    call DestroyGroup
    (g)
    call DestroyForce(f)
    call RemoveLocation(p)
    call RemoveLocation(p2)
    endfunction

    //===========================================================================
    private function Auto takes nothing returns nothing
    local trigger t 
    CreateTrigger(  )

        
    call TriggerRegisterTimerEventPeriodict2.00 )
        
    call TriggerAddActiont, function Actions )
        
    set t null
    endfunction

    endscope

    không biết với điều kiện bên dưới này nó có hoạt động đúng hay không .. mình convert từ GUI qua thì nó đặt điều kiện này qua 1 function khác, còn mình đem luôn điều kiện đó vào If.. không biết If có thực hiện khi điều kiện đó đúng hay không nữa.

    Tương tự mấy cái điều kiện bên dưới cũng vậy
    Mã:
       if (GetPlayerController(GetOwningPlayer(x)) == MAP_CONTROL_COMPUTER ) then



    Mã:
       if  (GetPlayerSlotState(r) == PLAYER_SLOT_STATE_PLAYING ) then


    Mình sợ lại điều kiện ghi như vậy nó không biết nhận diện nên mấy phần ở dưới nó không hoạt động.
    Mình sửa như bạn rồi nhưng test lại mấy cái computer không động đậy gì hết.. Bật Trigger GUI thì nó lại chạy được. :(

    ---
    Cho mình hỏi thêm khi dùng call DisableTrigger(TriggerNAME) thì khi muốn bật Trigger đó lên mình có dùng lệnh Turn On Trigger trong GUI để bật được không ..
    Với cách đặt tên Trigger Scope giống mình đặt như trên kia.
     
    Chỉnh sửa cuối: 12/9/11
  15. Star-Fire

    Star-Fire Mr & Ms Pac-Man

    Tham gia ngày:
    6/6/04
    Bài viết:
    268
  16. FlameDrake

    FlameDrake Dragon Quest

    Tham gia ngày:
    1/12/10
    Bài viết:
    1,298
    Nơi ở:
    Quận 10 HCM
    Mọi ng` cho hỏi cái model doodad có sẵn của war 3 mà có dạng "đá rớt từ trên cao xuống. có 1 đám bụi mù mịt bay ra", không biết nó tên gì ? kiếm cả buổi trong doodadl model ko ra
    P.S: Cái model mà khi con Shadowsong bị Illidan dụ vào trong cái hầm gì có con mắt xanh, xong cái phải chạy ra ngược lại ấy, ai chơi campain chắc biết
     
  17. kingghot

    kingghot Mr & Ms Pac-Man

    Tham gia ngày:
    15/4/10
    Bài viết:
    290
    Nơi ở:
    Rach Gia
    Khó quá hay sao mà không ai giúp thế?

    Sẵn thêm cái này luôm : Làm sao tính thời gian 1 unit vào 1 vùng khoảng 30 giây sau thì unit đó được 1 Item
     
  18. mvcthinh

    mvcthinh Mr & Ms Pac-Man

    Tham gia ngày:
    18/8/11
    Bài viết:
    140
    Nơi ở:
    HCM
    Doodads\Cinematic\EyeOfSargeras\EyeOfSargeras.mdl
    Cái này không biết phải con mắt xanh của bạn hay không ... Xem thử nhé

    Doodads\Cinematic\CavernDust\CavernDust.mdl
    Cái này là Dust từ trên rớt xuống nè...

    ---------- Post added at 12:05 ---------- Previous post was at 11:57 ----------

    Để làm cái này buộc lòng bạn phải nghiên cứu Dialog ... bạn có thể Tham khảo ở đây trước ... sau đó thì tiếp tục làm những yêu cầu trên theo ý mình.
    Tham khảo Link dưới đây
    http://world-editor-tutorials.thehelper.net/dialogs.php

    Đây là khái niệm Dialog căn bản để bạn biết cách bắt lệnh của nó.. Xem rồi Test và Hiểu...

    Nếu bạn đang cần học căn bản Trigger có thể tham khảo ở đây. [http://forum.gamevn.com/showthread.php?103123-Mot-so-bai-viet-dang-chu-y-cua-box-/page3]

    Bạn muốn bắt lệnh khi 1 Unit Lên LV.. ta dùng lệnh bên dưới đây
    Event Unit -> Unit - Generic Unit Event

    Chọn A unit Gains a level
    Mã:
        Events
            Unit - A unit Gains a level
        Conditions
        Actions
            Unit - Add [COLOR="#FF0000"]Ability [/COLOR]to (Leveling Hero)
    
     
  19. mvcthinh

    mvcthinh Mr & Ms Pac-Man

    Tham gia ngày:
    18/8/11
    Bài viết:
    140
    Nơi ở:
    HCM
    Sao lại không được.. mình làm được đấy thôi.
    hay là bạn thử đổi Buff mấy cái Gai thành 1 cái Buff khác mà khó nhận biết ý.. sẽ mất cái gai đi ngay thôi
    Xem hình Attach nhé

    View attachment 143507
     
  20. hieu2525

    hieu2525 Mr & Ms Pac-Man

    Tham gia ngày:
    23/3/09
    Bài viết:
    111
    Nơi ở:
    HN
    Là Druid of the Talon bạn ạ '.'
     
Trạng thái chủ đề:
Không mở trả lời sau này.

Chia sẻ trang này