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

Status
Không mở trả lời sau này.
Ai chỉ mình cách tạo conditions khi không có cái rune (item) nào trên Rect thì nó mới xuất hiện đi

Mình làm tương tự như cách làm với creep mà ko đc T_T cái cũ chưa ai tới nhặt nó đã xuất hiện thêm

À,tiện cho mình hỏi thêm cách làm trigger sao cho khi đồng minh out thì mình được điều khiển hero đó :D

Giúp mình với :D

Câu hỏi dưới. Vào Forces trong cái Menu Scenario .
Chỉnh chung team thì nhấn hết 5 cái ... (thêm 2 cái Share Unit Ctrl và S Adv.Unit Ctrl) là được.
 
Ai chỉ mình cách tạo conditions khi không có cái rune (item) nào trên Rect thì nó mới xuất hiện đi
Có thể nôm na như thế này: Khi tạo rune đầu tiên thì đặt 1 chỉ số integer nào đó = 1. Ai đó nhặt thì đưa số đó về 0. Đợi đến thời gian quy định nếu số đó = 0 thì tạo rune mới và lại đặt số đó = 1. Ngược lại nếu số đó vẫn = 1 (tức là chưa ai nhặt) thì ko tạo.
 
Mình chỉ có thể làm được như này :( cậu nói rõ cho mình biết đc ko

987.jpg
 

Attachments

  • 987.jpg
    987.jpg
    51.1 KB · Đọc: 0
^
ko có điều kiện sao nó hoạt động
sao phải làm loop B ( bạn muốn tạo 4 cái Rune ak :-/ )
 
Mình làm ngẫu nhiên rơi ra 1 trong 4 loại rune đó :D

Thú thật là mình có biết gì đâu,mình chỉ đơn thuần làm theo cách spawn unit thôi :| Giờ mình muốn hỏi làm điều kiện sao cho khi nó xuất hiện rồi,fải có có người tới nhặt rune xong thì nó xuất hiện tiếp.

Chứ mình làm nó cứ tự ra một đống theo thời gian T_T
 
Mình làm ngẫu nhiên rơi ra 1 trong 4 loại rune đó :D

Thú thật là mình có biết gì đâu,mình chỉ đơn thuần làm theo cách spawn unit thôi :| Giờ mình muốn hỏi làm điều kiện sao cho khi nó xuất hiện rồi,fải có có người tới nhặt rune xong thì nó xuất hiện tiếp.

Chứ mình làm nó cứ tự ra một đống theo thời gian T_T

Tìm cách làm = GUI mãi không ra.. nên thử làm với JASS.

Giờ làm như thế này.

Đầu tiên tạo một Trigger để Create các Item mà bạn muốn.
PHP:
Runes
    Events
        Map initialization
    Conditions
    Actions
        Item - Create Rune of Greater Healing at (Center of Rect[(Random integer number between 1 and 4)])
        Set TempItem[1] = (Last created item)
        Item - Create Rune of Shielding at (Center of Rect[(Random integer number between 1 and 4)])
        Set TempItem[2] = (Last created item)
        Item - Create Rune of Speed at (Center of Rect[(Random integer number between 1 and 4)])
        Set TempItem[3] = (Last created item)
        Item - Create Rune of the Watcher at (Center of Rect[(Random integer number between 1 and 4)])
        Set TempItem[4] = (Last created item)

Như ví dụ trên là 4 Item. Ban đầu ta đặt cho nó là như thế này. không thể đưa nó vào vòng Loop vì 4 Item khác loại nhau.
Tạo một biến TempItem (với type là item, click Array cho nó)

Tiếp theo Copy đoạn Code Jass dưới đây vào 1 Trigger mới.
Để làm điều này thì Tạo 1 Trigger mới, tên gì cũng được ... Chọn Edit -> Convert to Custom Script.
Xong xóa hết trong đó và copy toàn bộ dưới đây vào

PHP:
scope ItemAdd initializer Init

private function CheckCond takes nothing returns boolean
local integer Int
set Int = 1
        loop
            exitwhen Int > 4
             if ( ( GetItemTypeId(GetManipulatedItem()) == GetItemTypeId(udg_TempItem[Int]) ) ) then
                return true
                
            endif
            set Int = Int + 1
        endloop
    return false
endfunction

private function Conditions takes nothing returns boolean
    if ( not CheckCond() ) then
        return false
    endif
    return true
endfunction

private function Actions takes nothing returns nothing
    local integer a
    local integer b =1
   

    loop
        exitwhen b>4
        if  GetItemTypeId(GetManipulatedItem())== GetItemTypeId(udg_TempItem[b])  then
        set a = b
        endif
        set b = b+1
    endloop
    
            call TriggerSleepAction(5)
            call CreateItemLoc( GetItemTypeId(udg_TempItem[a]), GetRectCenter(udg_Rect[GetRandomInt(1, 4)]) )

endfunction

//===========================================================================
private function Init takes nothing returns nothing
local trigger t = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_PICKUP_ITEM )
    call TriggerAddCondition( t, Condition( function Conditions ) )
    call TriggerAddAction( t, function Actions )
set t = null
endfunction
endscope

Bây giờ mình thử phân tích đoạn trên để bạn có thể hiểu và áp dụng.

Mã:
private function CheckCond takes nothing returns boolean 
local integer [COLOR="#FF0000"]Int [/COLOR]
set[COLOR="#FF0000"] Int[/COLOR] = 1 
        loop 
            exitwhen [COLOR="#FF0000"]Int[/COLOR] > 4 
             if ( ( GetItemTypeId(GetManipulatedItem()) == GetItemTypeId(udg_TempItem[[COLOR="#FF0000"]Int[/COLOR]]) ) ) then
                return true 
                 
            endif 
            set [COLOR="#FF0000"]Int[/COLOR] = [COLOR="#FF0000"]Int[/COLOR] + 1 
        endloop 
    return false 
endfunction

Đoạn trên này là điều kiện được Convert từ đoạn GUI này ra.
Conditions
Or - Any (Conditions) are true
Conditions
(Item-type of (Item being manipulated)) Equal to (Item-type of TempItem[1])
(Item-type of (Item being manipulated)) Equal to (Item-type of TempItem[2])
(Item-type of (Item being manipulated)) Equal to (Item-type of TempItem[3])
(Item-type of (Item being manipulated)) Equal to (Item-type of TempItem[4])

Bạn hiểu nó đúng không . Cái này là điều kiện xem xem Unit đó nhặt Item số mấy mà mình đã lưu lại ở Trigger trên kia.
Nếu có nhiều Item hơn thì ta có thể thay đổi đoạn này.
Mã:
 [B]exitwhen[/B][COLOR="#0000FF"] Int [/COLOR]> X
Với X là số Item mà bạn đã đặt ở Trigger trên.;)


Tiếp đến mình xuống Function này.
PHP:
private function Actions takes nothing returns nothing
    local integer a
    local integer b =1
   

    loop
        exitwhen b>4
        if  GetItemTypeId(GetManipulatedItem())== GetItemTypeId(udg_TempItem[b])  then
        set a = b
        endif
        set b = b+1
    endloop
    
            call TriggerSleepAction(5)
            call CreateItemLoc( GetItemTypeId(udg_TempItem[a]), GetRectCenter(udg_Rect[GetRandomInt(1, 4)]) )

endfunction

Ở đây cũng tương tự. Nếu số Item của bạn lớn hơn 4.. bạn có thể thay đổi số 4 ở trong này thành số lượng Item mà bạn đặt ở Trigger đầu.
Mã:
  exitwhen b>4
Trọng đoạn này. Số 5 là số thời gian mà nó sẽ tạo lại một Item mới cho bạn ở vị trí Random như bạn nói. Nếu muốn thay đổi thời gian thì cứ đổi số 5 thành số nào tùy bạn.
PHP:
 call TriggerSleepAction(5)


Thế là xong.. Chỉ cần thay đổi các giá trị mình đề cập để làm điều bạn muốn. Chúc thành công

---------- Post added at 18:50 ---------- Previous post was at 18:48 ----------

Tặng bạn cái Maps này.. đây là Những gì mà mình nêu ở trên.


---------- Post added at 18:52 ---------- Previous post was at 18:50 ----------

À quên.. mở maps = NEWGEN nha.. JassHelper mới nhất ... như vậy mới mở được/
 
Mình làm ngẫu nhiên rơi ra 1 trong 4 loại rune đó :D

Thú thật là mình có biết gì đâu,mình chỉ đơn thuần làm theo cách spawn unit thôi :| Giờ mình muốn hỏi làm điều kiện sao cho khi nó xuất hiện rồi,fải có có người tới nhặt rune xong thì nó xuất hiện tiếp.

Chứ mình làm nó cứ tự ra một đống theo thời gian T_T

Luôn GUI này. Khỏi cần code luôn nhé cầm thẳng demo map về coi :D Trong đó là cứ 10s spawn 1 rune. Ko nhặt thì nó ko spawn thêm. Nếu nhặt ở giây thứ 9 thì ngay giây tiếp theo sẽ có 1 rune khác. Coi rồi sửa theo ý mình nhé :D Nếu có gì ko vừa ý cậu thì cứ bảo tôi.
http://www.mediafire.com/?f1yelzconby2lyf
 
Mình đã làm được rồi :D cám ơn 2 bạn nhiều lắm :D Vote

Mà theo cách mtvthinh chỉ mình về cách share unit thì ko phải,ý mình muốn là lúc một đứa trong team mình rời cuộc chơi,có thông báo và mình tự động nhận được quyền điều khiển nó ấy,chứ ko phải 2 đứa đang chơi share unit cho nhau.
 
Mình đã làm được rồi :D cám ơn 2 bạn nhiều lắm :D Vote

Mà theo cách mtvthinh chỉ mình về cách share unit thì ko phải,ý mình muốn là lúc một đứa trong team mình rời cuộc chơi,có thông báo và mình tự động nhận được quyền điều khiển nó ấy,chứ ko phải 2 đứa đang chơi share unit cho nhau.

thế thì bạn thử Share Unit Ctrl thôi... đừng Share Adv.Unit... sau đó test với 2 người xêm.. nếu không được thì lên đây chỉ cách khác.
 
Cho em hỏi cách làm 2 món đồ giống nhau ép ra 1 món VD: khi có 2 cái Claw of Attack sẽ ra 1 Orb of Lightning:D
 
Mọi người cho em hỏi 1 chút về GUI và Jass, tại sao 1 trigger như thế này:
erroram.jpg


khi em save map lại, nó báo Undelacred function

Vậy có cách nào để khắc phục được ko ạ? Em xin cảm ơn.

---------- Post added at 00:26 ---------- Previous post was at 00:23 ----------

khi em save map lại, nó báo "Undelacred function DebugError"... em tìm hiểu mãi nhưng vẫn ko hiểu nguyên nhân vì sao @.@
 
chỉ có BJDebugMsg chứ lấy đâu ra DebugError? 8-|

BJDebugMsg: hiển thị một dòng chữ

Undelacred = chưa khai báo
DebugError <-- làm gì thì tôi chịu, không thể khai báo giúp bạn đc
 
Trigger đấy là để báo khi mà cast skill ở 1 terrain ko phù hợp thì nó báo lỗi và order unit sang stop ạ. Em ko biết ở map gốc nó ko bị sao nhưng khi em copy sang map em thì nó lại bị như vậy ạ '.'
 
À sẵn giúp em phần Delay luôn , em pó tay rầu ! Mấy a test giùm em mấy cái trigger và chỉ em cái trigger nào còn chứa leak quan trọng (ảnh hưởng làm map bị delay theo tác)

Map (Unlock):

http://www.mediafire.com/?4b0a81clahtk2lg

Check leak giùm em với mọi người (chỉ cho em leak nào làm map bị delay với nha, em kiếm hoài mà pó tay @.@)
 
e muốn tạo map tổng hợp,ai biết làm giúp e với !!! pm e qa njck yh nhá : golden_darkness_9x
 
khi save lại bị hư về trigger (copy vào chưa kip edit nên sai về var) khi open map lại bị lỗi ai có thể giúp không
untitled.jpg

và hỏi có tool nào xóa trigger không
 
Cho e hỏi làm sao để chỉnh số lượng giết và deni creep được tính trên title của multiboard vậy và nó chỉ hiện cho thằng giết dc hoac deni thôi và không tính trên bảng multiboard của người khác giống trong hình này nè.
untitled-4.jpg
 
e muốn tạo map tổng hợp,ai biết làm giúp e với !!! pm e qa njck yh nhá : golden_darkness_9x
Những câu như thế này khó mà có câu trả lời cho được ==! Muốn làm map thì thạo những cái cơ bản trước đi đã ==! Mà nói thật tạo thì tạo cái gì khác đi chứ cái map tổng hợp đó theo quan điểm của riêng mình thì mức độ nhảm nhí khá là cao ==!
 
Những câu như thế này khó mà có câu trả lời cho được ==! Muốn làm map thì thạo những cái cơ bản trước đi đã ==! Mà nói thật tạo thì tạo cái gì khác đi chứ cái map tổng hợp đó theo quan điểm của riêng mình thì mức độ nhảm nhí khá là cao ==!
Sao lại phán là nhảm nhí ! Map Tong Hop v49 đứng thứ 3 trong top download nhiều nhất trên epicwar đấy.
e muốn tạo map tổng hợp,ai biết làm giúp e với !!! pm e qa njck yh nhá : golden_darkness_9x
Thế em biết những gì ?
 
Status
Không mở trả lời sau này.
Back
Top