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

Status
Không mở trả lời sau này.
Cho mình hỏi cách làm Trigger có nội dung: Chỉ cho phép Player (mọi Player) mua tối đa 5 Unit nào đó? Khi unit đó chết thì mới dc mua thêm :)
 
@thodevil1:

mình ghi như thế left - hand ví dụ
Special Effect - Create a special effect attached to the left - hand of (Triggering unit) using Abilities\Spells\Other\TalkToMe\TalkToMe.mdl


@0978788673:

Player - Limit training of Footman to 1 for Player 1 (Red)
 
Câu trên t đã mò dc, thì ra nó có hàm riêng
Player - Limit training of Footman to 1 for Player 1 (Red)
t muốn hỏi vụ Upgrade nữa :). Ví dụ trong map Chống Cửa bằng chòi, thì Chòi A sẽ có thể Upgrade lên Chòi B, rồi lên Chòi C. Vậy nếu mình muốn giới hạn, chỉ cho phép Player upgrade lên 5 chòi B thì làm như thế nào? Nếu từ Chòi B mà Upgrade lên Chòi C thì lại vẫn nâng cấp 1 Chòi A lên Chòi B dc.
 
cũng dùng cái đó, hoạt động tốt cho building upgrade.
 
Mấy bác cho hỏi, cái Animation giúp unit change hieght ấy ( fly ) dùng integer hàm sin cos gì đó giúp unit bay lên xong tự hạ xuống
 
height = A * Sin( x )

A là độ cao tối đa
x là góc chạy từ 0 -> 180

Sin( 0 ) -> Sin( 90 ) -> Sin( 180 ) : 0 -> 1 -> 0
nhân với A ta được: 0 -> A -> 0

vậy là unit sẽ bay lên đến độ cao A rồi lại hạ xuống.
chú ý: một số unit có "default fly height" thì phải cộng thêm số này vào "height" trên.
 
cái đó là vài cái tab và enter thui mà :|
nhìn kỹ thì đâu có canh giữa đâu :-j
p/s: câu lệnh tab và xuống dòng là gì lun vậy, lâu quá nên ko nhớ nữa :(
 
@Dylankyo: nhớ cho vào thẻ spoil, to quá. Xài show text cũng đc, ko thì Sim error, muốn thay đổi vị trí thì thay offset.


Mình có vài câu hỏi, xin mọi người giúp tí.
1) libary và scope là gì và dùng ntn vậy ? Nếu có thể mình xin link tut được không ?
2) Phần Text - Propers name used là số tên mà hero được dùng, vậy khi vào map thì tên này đặt là random hay có quy luật không ?
3) Nếu mình SetTextTagVelocity, SetTextTagPermanent, SetTextTagLifespan thì text không hiện, như vậy là lỗi hay code nó vậy ?
[spoil]
Mã:
    set t = CreateTextTagUnitBJ( "-" + I2S(R2I( GetUnitStateSwap(UNIT_STATE_MAX_MANA, a) * 0.20 )), a, 14.00, 12.00, 25.00, 100.00, 25.00, 10.00 )
    call SetTextTagVelocityBJ( t, 64, 90 )
    call SetTextTagPermanentBJ( t, false )
    call SetTextTagLifespanBJ( t, 4.00 )
[/spoil]
 
Chỉnh sửa cuối:
@DylandKyo:

cái đấy là tác dụng của system DisplayCenteredText

cách sử dụng có thể tạo 1 custom script call DisplayCenteredTextToPlayer (udg_TempPlayer,udg_TempReal,udg_TempString)

TempPlayer là player cần hiển thị còn TempReal là vị trí Y còn TempString là những gì cần ghi

Mã:
library DisplayCenteredText initializer Init requires Table

//*****************************************************************
//*  DisplayCenteredText
//*
//*  written by: Anitarf
//*
//*  A set of functions for displaying centered game messages. The
//*  functions do two things in order to center the message: first,
//*  they add spaces at the start of the message string so the
//*  message is "pushed" to the center of the area available for
//*  game messages, which is about two thirds of the screen; and
//*  second, they display the message at a certain x offset so the
//*  above mentioned area gets centered on the screen.
//*
//*  The values used were experimentally determined and are only
//*  approximations, but results are very reliable in practice in
//*  nearly all game resolution and with almost all input strings.
//*
//*  The following functions are available:
//*
//*    function GetCenteredMessage takes string line returns string
//*    function DisplayCenteredTextToPlayer takes player toPlayer, real y, string message returns nothing
//*    function DisplayTimedCenteredTextToPlayer takes player toPlayer, real y, real duration, string message returns nothing
//*
//*  Note that if the string is too long to fit in the available
//*  area then the game will split it before displaying, centering
//*  won't work in this case, the solution is to give the functions
//*  shorter strings to work with.
//*
//*****************************************************************

    globals
        private constant real DEFAULT_CHAR_WIDTH = 156 //default width for all undefined characters
        private StringTable uppercase
        private StringTable lowercase
    endglobals

    private function Init takes nothing returns nothing
        set uppercase = StringTable.create()
        set lowercase = StringTable.create()

        // experimentally determined values, in 1/10000 of max message width
        // more info: http://www.wc3campaigns.net/showthread.php?t=90599
        set uppercase["a"]= 206
        set uppercase["b"]= 162
        set uppercase["c"]= 183
        set uppercase["d"]= 193
        set uppercase["e"]= 153
        set uppercase["f"]= 122
        set uppercase["g"]= 204
        set uppercase["h"]= 200
        set uppercase["i"]=  77
        set uppercase["j"]=  80
        set uppercase["k"]= 183
        set uppercase["l"]= 148
        set uppercase["m"]= 264
        set uppercase["n"]= 200
        set uppercase["o"]= 225
        set uppercase["p"]= 156
        set uppercase["q"]= 237
        set uppercase["r"]= 179
        set uppercase["s"]= 156
        set uppercase["t"]= 151
        set uppercase["u"]= 187
        set uppercase["v"]= 183
        set uppercase["w"]= 282
        set uppercase["x"]= 204
        set uppercase["y"]= 179
        set uppercase["z"]= 179

        set lowercase["a"]= 151
        set lowercase["b"]= 159
        set lowercase["c"]= 147
        set lowercase["d"]= 162
        set lowercase["e"]= 159
        set lowercase["f"]=  98
        set lowercase["g"]= 176
        set lowercase["h"]= 159
        set lowercase["i"]=  65
        set lowercase["j"]=  77
        set lowercase["k"]= 147
        set lowercase["l"]=  68
        set lowercase["m"]= 227
        set lowercase["n"]= 156
        set lowercase["o"]= 166
        set lowercase["p"]= 162
        set lowercase["q"]= 162
        set lowercase["r"]=  98
        set lowercase["s"]= 126
        set lowercase["t"]= 100
        set lowercase["u"]= 159
        set lowercase["v"]= 159
        set lowercase["w"]= 229
        set lowercase["x"]= 159
        set lowercase["y"]= 159
        set lowercase["z"]= 147

        set lowercase["."]=  51
        set lowercase[","]=  55
        set lowercase[" "]=  80
        set lowercase["-"]= 104
    endfunction

    function GetCenteredMessage takes string line returns string
        local string char
        local integer i=0
        local real charwidth
        local real totalwidth=0.0

        loop //get the approximate width of the string
            set char = SubString(line, i, i+1)
            exitwhen char == ""
            if StringCase(char, false)==char then
                set charwidth = lowercase[char]
            else
                set charwidth = uppercase[char]
            endif
            if charwidth == 0.0 then
                set charwidth = DEFAULT_CHAR_WIDTH
            endif
            set totalwidth=totalwidth+charwidth
            set i = i + 1
        endloop

        set i = R2I((5000.0-totalwidth/2)/lowercase[" "]) //number of spaces needed
        set char = ""
        loop
            exitwhen i<=3 //safety margin, better add one space too few than one space too many
            set char=char+" "
            set i=i-1
        endloop
        return char+line
    endfunction
    
    function DisplayCenteredTextToPlayer takes player toPlayer, real y, string message returns nothing
        call DisplayTextToPlayer(toPlayer, 0.25, y, GetCenteredMessage(message))
    endfunction
    function DisplayTimedCenteredTextToPlayer takes player toPlayer, real y, real duration, string message returns nothing
        call DisplayTimedTextToPlayer(toPlayer, 0.25, y, duration, GetCenteredMessage(message))
    endfunction

endlibrary

@lonewolf020291:

1,library là thư viện nó là hàm của vjass của Vexorian

cách sử dụng library ví dụ
Mã:
library [B]MyBrary[/B] requires AIDS
function test takes nothing returns nothing
call DoNothing(  )
endfunction
endlibrary

MyBrary là tên của thư viện đặt tên để tránh bị cùng 1 thư viện
requires AIDS để đặt yêu cầu là trong map phải có 1 thư viện có tên là AIDS

còn scope thì tớ hok bít cách giải thích :|


2, tên sẽ được cấp với ngẫu nhiên và nếu trùng tên thì sẽ ra tự đặt thứ tự bằng cách I hay II hoặc III nhưng sẽ không bị trùng tên khi các tên hero đã random ra hết
3, nếu sử dụng jass thì hãy loại bỏ BJ bằng cách
Mã:
function test takes unit u, integer i, player p returns nothing
local texttag tt = CreateTextTag()

        call SetTextTagText(tt, (text), 0.024)
        call SetTextTagPos(tt, GetUnitX(u) - 16.0, GetUnitY(u), 0.0)
        call SetTextTagColor(tt, 0, 200, 80, 255)
        call SetTextTagVelocity(tt, 0.0, 0.04)
        call SetTextTagVisibility(tt, GetLocalPlayer()==p)
        call SetTextTagFadepoint(tt, 1.0)
        call SetTextTagLifespan(tt, 2.0)
        call SetTextTagPermanent(tt, false)
set text = null
endfunction
 
Chỉnh sửa cuối:
Mấy anh chỉ dùm em cách làm mấy chiêu tăng range, tăng base damage cho hero nha. Thử nhiều cách rùi mà hok có ra.
 
Eh men ! điền ô Animation Names thế nào để skill đc cái ani hiện là " Attack - 2 " ? "attack" bình thường thì dễ nhưng thêm số 2 voa thì ?!?
 
Những cái Animation mà có - số thì ko bao giờ sài đc, ko bao giờ nó ra chuẩn theo mình mún, nó ra ngẫu nhiên
Cho hỏi có tool nào giúp khóa map, xong nếu bị depro ra thì toàn bộ item unit buff tạo mới ( Custom ) bị del theo luôn, trở về 1 dạng như map melee bt
Thấy có vài map TQ khi depro ra nó mất sạch hết :D
 
Hình như là có cách xài mà ... lão nào bít ko thế ? hizz
Thế hỏi cái khác dễ hơn: Trog trigger, Lệnh Action thế nào để remove 1 group tên là [a] khỏi game ?
 
Những cái Animation mà có - số thì ko bao giờ sài đc, ko bao giờ nó ra chuẩn theo mình mún, nó ra ngẫu nhiên
Cho hỏi có tool nào giúp khóa map, xong nếu bị depro ra thì toàn bộ item unit buff tạo mới ( Custom ) bị del theo luôn, trở về 1 dạng như map melee bt
Thấy có vài map TQ khi depro ra nó mất sạch hết :D

cái đó tại SLK đó :| chứ đâu ra cái tool đó :| cái công thức của tớ là xdep lành bó tay thôi. còn về vụ đó thì tớ cũng lành bó tay :|
 
cho tớ hỏi :-?
có cách nào sử dụng trigger Special Effect trong GetLocalPlayer mà không bị desync hok :|
 
Chỉnh sửa cuối:
Thế hỏi cái khác dễ hơn: Trog trigger, Lệnh Action thế nào để remove 1 group tên là [a] khỏi game ?

Buzz !
Câu này chưa đc help ! Tưởng ai cũng biết cái này ? :-(||>

---------- Post added at 15:43 ---------- Previous post was at 14:55 ----------

Còn nữa ^^
Các bác biết skill factory của Tinker trong base map ko ? Nó tung ra cái nhà máy để chế tạo ra clorkwek sau mỗi mấy giây...
Em thay cái model của cái nhà máy thành 1 cái nhà của 1 trong 4 race chính thì nó ra animation đang xây ... Em phải làm thế nào để ra luôn cái nhà ?
 
Status
Không mở trả lời sau này.
Back
Top