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

Status
Không mở trả lời sau này.
Sr nhưng mình đã bỏ WE hơn 4 năm, mình đã đọc tut đó rồi, đã test thử nhưng ngặt nỗi nó không áp dụng cho nhiều player đc. :|
4 hay 40 chả liên quan. Ngặt nỗi là tôi làm theo cái tut và nó làm rất tốt (đã test LAN) (Dù cái tut đã 6 năm tuổi =)) ). Thôi thì đây là cái bạn muốn.
[spoil]
Mã:
Init
    Events
        Time - Elapsed game time is 0.00 seconds
    Conditions
    Actions
        Set TempLoc = (Location(0,0))
        Player Group - Pick every player in (All players) and do (Actions)
            Loop - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        ((Picked player) controller) Equal to User
                        ((Picked player) slot status) Equal to Is playing
                    Then - Actions
                        Floating Text - Create floating text that reads <Empty String> at TempLoc with Z offset 12.00, using font size 10.00, color (100.00%, 80.00%, 80.00%), and 0.00% transparency
                        Set Chat_Text[(Player number of (Picked player))] = (Last created floating text)
                        Trigger - Add to Chat <gen> the event (Player - (Picked player) types a chat message containing <Empty String> as A substring)
                        Player Group - Add (Picked player) to Chat_Group
                    Else - Actions
        Customscript: call RemoveLocation( udg_TempLoc)
Mã:
Chat
    Events
    Conditions
    Actions
        Set Temp_Int[0] = (Player number of (Triggering player))
        Floating Text - Change text of Chat_Text[Temp_Int[0]] to (Entered chat string) using font size 12.00
Mã:
Move
    Events
        Time - Every 0.01 seconds of game time
    Conditions
    Actions
        Player Group - Pick every player in Chat_Group and do (Actions)
            Loop - Actions
                Set Temp_Int[1] = (Player number of (Picked player))
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Chat_Hero[Temp_Int[1]] is alive) Equal to True
                    Then - Actions
                        Floating Text - Change the position of Chat_Text[Temp_Int[1]] to Chat_Hero[Temp_Int[1]] with Z offset 12.00
                    Else - Actions
                        Floating Text - Change text of Chat_Text[Temp_Int[1]] to <Empty String> using font size 12.00
[/spoil]
 

Attachments

Chỉnh sửa cuối:
tiện đây mình hỏi luôn,method trong jass để làm gì ?
"static"
implement
thấy một số spell nó dùng this,[this],có phải nó dùng giống như biến array ?

1. Method: giống như function, tuy nhiên chỉ có thể tạo ra trong struct
2. Static: Ví dụ cho dễ hiểu nhé!
Mã:
struct ViDu
    integer a 
    static integer b

    method A takes nothing returns nothing
          //Tiện thể giải thích luôn this là gì:
          //"this" chỉ có thể dùng trong method và method đó [B][U]không được[/U][/B] là static
          set this.a = 100 //từ khóa this ám chỉ chính nó, xem xuống dưới cùng của ví dụ sẽ hiểu rõ hơn
    endmethod

    static method B takes nothing returns nothing
          // do something
    endmethod
endstruct

//từ khóa static thường được sử dụng trong struct, bây h hãy xem những member trong struct nếu có thêm từ khóa static thì sẽ khác ra sao:

function Init takes nothing returns nothing
     ViDu vd = ViDu.create() // khởi tạo 1 biến từ struct vừa định nghĩa, hay còn gọi là 1 phần tử(instance)
     set vd.a = 9 //biến a được khai báo và sử dụng như bình thường
     set vd.b = 7 //xảy ra lỗi, vì được khai báo với từ khóa static nên biến b chỉ có thể được truy cập từ TênStruct.tênbiến, giống như thế này:
     set ViDu.b = 7 //dùng thế này mới đúng
     //Tương tự với 2 method A và B:

     call vd.A() //ok, và h thì vd.a sẽ = 100 (xem lại method A)
     call vd.B()  //lại sai
     call ViDu.B() // h thì chuẩn men rồi =))

end function
3. implement: Sẽ giải thích sau khi bạn hiểu được 2 cái trên
Srr vì cấu cú lủng củng, đang phê =))
 
Làm sao để ko ai có thể điều khiển dc 1 unit. (tức là unit đó vẫn có thể đánh và bị đánh chỉ là không ai điều khiển dc thôi...... )
2.cho em xin hệ thồng đạn của map battle ship, battle tank.... hay cách tạo ra hệ thống ấy cũng dc.
 
- add / remove Locust
Mã:
Custom Script: call UnitAddAbility( udg_TempUnit, 'Aloc' )
Custom Script: call UnitRemoveAbility( udg_TempUnit, 'Aloc' )

- tôi đã từng chơi battle ship và kết luận của tôi là: dùng ability Phoenix Fire (Apxf) với Duration: 0.01

tốc độ bắn: Cooldown
damage deal: Initial Damage
 
1. Method: giống như function, tuy nhiên chỉ có thể tạo ra trong struct
2. Static: Ví dụ cho dễ hiểu nhé!
Mã:
struct ViDu
    integer a 
    static integer b

    method A takes nothing returns nothing
          //Tiện thể giải thích luôn this là gì:
          //"this" chỉ có thể dùng trong method và method đó [B][U]không được[/U][/B] là static
          set this.a = 100 //từ khóa this ám chỉ chính nó, xem xuống dưới cùng của ví dụ sẽ hiểu rõ hơn
    endmethod

    static method B takes nothing returns nothing
          // do something
    endmethod
endstruct

//từ khóa static thường được sử dụng trong struct, bây h hãy xem những member trong struct nếu có thêm từ khóa static thì sẽ khác ra sao:

function Init takes nothing returns nothing
     ViDu vd = ViDu.create() // khởi tạo 1 biến từ struct vừa định nghĩa, hay còn gọi là 1 phần tử(instance)
     set vd.a = 9 //biến a được khai báo và sử dụng như bình thường
     set vd.b = 7 //xảy ra lỗi, vì được khai báo với từ khóa static nên biến b chỉ có thể được truy cập từ TênStruct.tênbiến, giống như thế này:
     set ViDu.b = 7 //dùng thế này mới đúng
     //Tương tự với 2 method A và B:

     call vd.A() //ok, và h thì vd.a sẽ = 100 (xem lại method A)
     call vd.B()  //lại sai
     call ViDu.B() // h thì chuẩn men rồi =))

end function
3. implement: Sẽ giải thích sau khi bạn hiểu được 2 cái trên
Srr vì cấu cú lủng củng, đang phê =))

Ồ...vậy thì mục đích dùng static để làm gì,sao không dùng function luôn trong struct mà phải dùng tới method ? Như trên ví dụ và cách giải thích của bạn chẳng phải dùng static là làm rắc rối thêm cho việc dùng struct ? :"> ?

Cám ơn bạn nhiều,bạn có thể giải thích giúp mình những cái còn lại ? :D

À,tiện cho mình hỏi về constant nữa


Cậu có thể cho mình cái map ví dụ được không,mình gà lắm :2cool_sad:

Như này nè:

Mã:
Every 1 sc
    Events
        Time - Every 1.00 seconds of game time
    Conditions
    Actions
        Set Group[1] = (Units in (Rect 1))
        Set Group[2] = (Units in (Rect 2))
        Set Group[3] = (Units in (Rect 3))
        Set Group[4] = (Units in (Rect 4))
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Number of units in Group[1]) Greater than 0
                (Number of units in Group[2]) Greater than 0
                (Number of units in Group[3]) Greater than 0
                (Number of units in Group[4]) Greater than 0
            Then - Actions
//Thỏa mãn cả 4 điều kiện trên thì mở
            Else - Actions
//Không thỏa mãn thì đóng
       call DestroyGroup(udg_Group[1])
       call DestroyGroup(udg_Group[2])
       call DestroyGroup(udg_Group[3])
       call DestroyGroup(udg_Group[4])
 
Chỉnh sửa cuối:
Như này nè:

Mã:
Every 1 sc
    Events
        Time - Every 1.00 seconds of game time
    Conditions
    Actions
        Set Group[1] = (Units in (Rect 1))
        Set Group[2] = (Units in (Rect 2))
        Set Group[3] = (Units in (Rect 3))
        Set Group[4] = (Units in (Rect 4))
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Number of units in Group[1]) Greater than 0
                (Number of units in Group[2]) Greater than 0
                (Number of units in Group[3]) Greater than 0
                (Number of units in Group[4]) Greater than 0
            Then - Actions
//Thỏa mãn cả 4 điều kiện trên thì mở
            Else - Actions
//Không thỏa mãn thì đóng
       call DestroyGroup(udg_Group[1])
       call DestroyGroup(udg_Group[2])
       call DestroyGroup(udg_Group[3])
       call DestroyGroup(udg_Group[4])
Vậy thì cứ nhất thiết là phải có 1 unit đứng ở đó rồi khi cả 2 đứng vào mới được ak
Ý tôi nói là Unit đã vào region 1,2 thì mở cửa
[Cụ Thể : Hero đi vào 1 cái foot switch thì cái foot switch đó sẽ death và di chuyển hero đã đi vào foot switch 2 rồi mở Gate 0001]
 
Cho em hỏi cái fade filter khi hiện ảnh lên thì nó hiện cho tất cả player luôn à ?:3cool_nosebleed:
Nếu em muốn làm cho nó chỉ hiện cho 1 player thôi thì có dc ko ?:3cool_nosebleed:
 
Vậy thì cứ nhất thiết là phải có 1 unit đứng ở đó rồi khi cả 2 đứng vào mới được ak
Ý tôi nói là Unit đã vào region 1,2 thì mở cửa
[Cụ Thể : Hero đi vào 1 cái foot switch thì cái foot switch đó sẽ death và di chuyển hero đã đi vào foot switch 2 rồi mở Gate 0001]

Vẽ 2 cái region,đặt 2 vật dummy lên đó (ở đây là foot switch).

Mã:
    Events
        Unit - A unit enters Rect 1 <gen>
    Conditions
    Actions
        Unit - Kill (footswitch1)
        Set Boolean = True
        Trigger - Turn off (This trigger)
Mã:
Melee Initialization
    Events
        Unit - A unit enters Rect 2 <gen>
    Conditions
        Boolean Equal to True
    Actions
        Unit - Kill (footswicht2)
        Destructible - Open Gate
        Trigger - Turn off (This trigger)
 
Chỉnh sửa cuối:
Vẽ 2 cái region,đặt 2 vật dummy lên đó (ở đây là foot switch).

Mã:
    Events
        Unit - A unit enters Rect 1 <gen>
    Conditions
    Actions
        Unit - Kill (footswitch1)
        Set Boolean = True
        Trigger - Turn off (This trigger)
Mã:
Melee Initialization
    Events
        Unit - A unit enters Rect 2 <gen>
    Conditions
        Boolean Equal to True
    Actions
        Unit - Kill (footswicht2)
        Destructible - Open Gate
        Trigger - Turn off (This trigger)
Nhưng mà nếu unit mà muốn đi region 1 trước xong rồi mới region 2 thì làm thế nào vậy bạn ?
 
Nhưng mà nếu unit mà muốn đi region 1 trước xong rồi mới region 2 thì làm thế nào vậy bạn ?

Bạn không thấy cái Boolean sao ? Mặc định khi tạo 1 biến boolean sẽ có giá trị = false

Khi có Unit vào cái Rect 1 thì sẽ set cái Boolean = true

Điều kiện khi vào Rect 2 để cửa mở thì Boolean phải = true

==> Nếu không vào rect 1 trước để set Boolean = true thì vào rect 2 ko hoạt động (cửa ko mở)

Hay ý bạn như nào ?
 
Chỉnh sửa cuối:
Bạn không thấy cái Boolean sao ? Mặc định khi tạo 1 biến boolean sẽ có giá trị = false

Khi có Unit vào cái Rect 1 thì sẽ set cái Boolean = true

Điều kiện khi vào Rect 2 để cửa mở thì Boolean phải = true

==> Nếu không vào rect 1 trước để set Boolean = true thì vào rect 2 ko hoạt động (cửa ko mở)

Hay ý bạn như nào ?
Ý mình là unit muốn vào cái nào trước cũng được VD như unit vào rect 2 rồi vào rect1 vẫn hoạt động (Rect1 - Rect2,Rect2 - Rect1)
Mình muốn nó vào rect 1 hoặc 2 đều set boolean được
[==> vào rect 1 để set Boolean = true thì vào rect 2 hoạt động
Và Ngược Lại
==> vào rect 2 để set Boolean = true thì vào rect 1 hoạt động
 
Ý mình là unit muốn vào cái nào trước cũng được VD như unit vào rect 2 rồi vào rect1 vẫn hoạt động (Rect1 - Rect2,Rect2 - Rect1)
Mình muốn nó vào rect 1 hoặc 2 đều set boolean được
[==> vào rect 1 để set Boolean = true thì vào rect 2 hoạt động
Và Ngược Lại
==> vào rect 2 để set Boolean = true thì vào rect 1 hoạt động

Mình nghĩ bạn diễn tả như thế thì hẳn bạn phải làm được chứ nhỉ. Cái này cũng đơn giản mà :P

Mã:
Untitled Trigger 001
    Events
        Unit - A unit enters Rect 1 <gen>
    Conditions
    Actions
        Trigger - Turn off (This trigger)
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                Boolean[1] Equal to True
            Then - Actions
                Unit - Kill (footswitch1)
                Destructible - Open Gate               
            Else - Actions
                set Boolean[2] = True
Mã:
Untitled Trigger 001
    Events
        Unit - A unit enters Rect 2 <gen>
    Conditions
    Actions
        Trigger - Turn off (This trigger)
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                Boolean[2] Equal to True
            Then - Actions
                Unit - Kill (footswitch2)
                Destructible - Open Gate                
            Else - Actions
                set Boolean[1] = True
 
Cho em hỏi cái fade filter khi hiện ảnh lên thì nó hiện cho tất cả player luôn à ?:3cool_nosebleed:
Nếu em muốn làm cho nó chỉ hiện cho 1 player thôi thì có dc ko ?:3cool_nosebleed:

Cho em hỏi lại vấn đề cực kỳ hóc búa này:2cool_beated:
 
các bạn ơi làm sao để khi create dummy dùng trigger bắt dummy di chuyển nếu di chuyển mà có cây cối đứng trước mặt dummy thì kill cây đó thì làm trigger sao vậy mấy bạn
 
Mã:
Destructible - Pick every destructible within 256.00 of (Target point of ability being cast) and do (Actions)
    Loop - Actions
        Destructible - Kill (Picked destructible)
 
1 số unit bay khi di chuyển nó ko đứng thẳng mà nghiêng người theo hướng di chuyển. Giờ muốn nó ko nghiêng mà cứ đứng thẳng khi di chuyển thì làm thế nào? (ko liên quan đến vấn đề về model nhé)
 
YAN[asian];22012865 nói:
1 số unit bay khi di chuyển nó ko đứng thẳng mà nghiêng người theo hướng di chuyển. Giờ muốn nó ko nghiêng mà cứ đứng thẳng khi di chuyển thì làm thế nào? (ko liên quan đến vấn đề về model nhé)

làm gì có vụ này nhỉ?
chỉ có vụ di chuyển vào chỗ đất nghiêng (dốc chẳng hạn) thì unit sẽ nghiêng theo thôi, cái này thì đặt: Art - Maximum Pitch/Roll Angle của unit thành 0.00 là ok
 
Vậy thay đổi câu hỏi 1 chút : những unit movement là Foot, khi chuyển thành Fly đồng thời tăng độ cao thì nó bị nghiêng người lúc di chuyển. Lý do gì mà nó bị như vậy?

Edit : à, hóa ra lý do cũng là cái bên trên ^^!
 
Chỉnh sửa cuối:
Cho mình hỏi, mình có 1 model, model ấy có 1 animation, vd là stand 2 chẳng hạn, khi unit play animation ấy (ko phải mình play nhé) thì lúc kết thúc animation nó liền bị "khựng" lại (giống như khi set animation speed = 0.00 ấy). Vậy lý do là vì sao, và cách khắc phục ntn?
 
YAN[asian];22014979 nói:
Cho mình hỏi, mình có 1 model, model ấy có 1 animation, vd là stand 2 chẳng hạn, khi unit play animation ấy (ko phải mình play nhé) thì lúc kết thúc animation nó liền bị "khựng" lại (giống như khi set animation speed = 0.00 ấy). Vậy lý do là vì sao, và cách khắc phục ntn?
Ý bạn là bạn play animation bằng trigger đúng không ? Nếu đúng là thế thì :
Lý do là nó chỉ thực hiện đúng theo yêu cầu của mình,vì animation chỉ chạy 1 lần thôi xong rồi nó sẽ ngắt lại.Khắc phục thì every time - (Số Time Chạy animation stand 2 đó),Action thì play animation - stand.
 
Status
Không mở trả lời sau này.
Back
Top