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

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

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

    AzuhaSky T.E.T.Я.I.S

    Tham gia ngày:
    30/5/10
    Bài viết:
    550
    Nơi ở:
    WE Box
    Ừ thì phải,32 giọt máu !;))
    Kiểu đó đụng một phát là die thì đánh gì nữa cậu? Mình góp ý sử dụng Percent life của unit thì tốt hơn! Bởi hero càng lớn thì dam ít nhiều cũng hơn 90
     
  2. 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
    ai xem hộ mình cái trigger này với, chẳng hiểu sao cứ enable là fatal error, trong khi Newgen chẳng báo lỗi gì cả :(
    Mã:
    scope Multiboard initializer Init 
    globals
       private multiboard mb = CreateMultiboard()
       private integer array PK // Chien tich
       private integer array Creeping // Chan Quan
       private integer array Giet // Giet
       private integer array Chet // Chet
    endglobals
    
    private function update takes nothing returns nothing
        local integer a = 1
        local integer b = 2
        loop
            exitwhen a > 10
            set b = b +1
            if b == 8 then
                set b = 9
            endif
            call MultiboardSetItemValueBJ(mb,2,b," " + I2S( PK[a]))
            call MultiboardSetItemValueBJ(mb,3,b,"  " + I2S( Giet[a]))
            call MultiboardSetItemValueBJ(mb,4,b,"    " + I2S( Chet[a] ))
            call MultiboardSetItemValueBJ(mb,5,b,"    " + I2S( Creeping[a]))
            set a = a + 1
        endloop
    endfunction
    
    private function killcond takes nothing returns boolean
        if ( not ( IsUnitEnemy(GetTriggerUnit(), GetOwningPlayer(GetKillingUnit())) == true ) ) then
            return false
        endif
        if ( not ( GetUnitTypeId(GetTriggerUnit()) == 'dumy' )) then
            return false
        endif
        return true
    endfunction
    
    private function killact takes nothing returns nothing
        local unit u = GetTriggerUnit()
        local unit k = GetKillingUnit()
        local player pk = GetOwningPlayer(k)
        local integer a = 1
        local integer g
        local string kname = GetPlayerName(pk)
        local group gr
        local group gro = NewGroup()
        local real exp
        local integer count = 1
        local unit p
        
        call DestroyEffect(AddSpecialEffect("UI\\Feedback\\GoldCredit\\GoldCredit.mdl",GetUnitX(u),GetUnitY(u)))
        
        set a = 1
        loop
            exitwhen a > 10
            if pk == Player(a) then
                if IsUnitType(u,UNIT_TYPE_HERO) then
                    set Giet[a] = Giet[a] + 1
                else
                    set  Creeping[a] =  Creeping[a] + 1
                endif
            endif
            if GetOwningPlayer(u) == Player(a) and IsUnitType(u,UNIT_TYPE_HERO) then
                set Chet[a] = Chet[a] + 1
            endif
            set a = a + 1
        endloop
        call SetPlayerState(GetOwningPlayer(k),PLAYER_STATE_RESOURCE_GOLD,GetPlayerState(GetOwningPlayer(k),PLAYER_STATE_RESOURCE_GOLD) + g)
        //call TextTag(GetPlayerId(GetOwningPlayer(k)),"Gold: +" + I2S(g),k,7,25,255,242,0,0)
        call update()
        
        set exp = GetUnitLevel(u) * 100
        call GroupUnitsInArea(gr, GetUnitX(k), GetUnitY(k), 700)
        loop
            set p = FirstOfGroup(gr)
            call GroupRemoveUnit(gr,p)
            exitwhen p == null
            if IsUnitAlly(p,pk) and IsUnitType(p,UNIT_TYPE_HERO) then
                set count = count + 1
                call GroupAddUnit(gro,p)
            endif
        endloop
        call ReleaseGroup(gr)
        call AddHeroXP(k,R2I(exp),true)
        set exp = exp / count
        loop
            set p = FirstOfGroup(gro)
            call GroupRemoveUnit(gro,p)
            exitwhen p == null
            call AddHeroXP(p,R2I(exp),true)
            if p == k then
                set exp = exp * 2
            endif
           // call TextTag(GetPlayerId(GetOwningPlayer(p)),"EXP: +" + I2S(R2I(exp * 2.3)),p,7,3,102,45,145,0)
           set exp = exp /2
        endloop
        call ReleaseGroup(gro)
        set p = null
        set u = null
        set k = null
        set gr = null
        set gro = null
        set pk = null
    endfunction
    
    function leftact takes nothing returns nothing
    	local integer iSCounter
    	local integer iFCounter
        local integer a = 1
        
        set PlayerCounter = PlayerCounter - 1
        
    	call DisplayTimedTextToForce(bj_FORCE_ALL_PLAYERS,25.,PlayerColor[GetPlayerId(GetTriggerPlayer())]+GetPlayerName(GetTriggerPlayer())+"|r"+"|c00ff0303 ®· tho¸t.|r")
        set iSCounter=1
        set iFCounter=10
        loop
            exitwhen iSCounter>iFCounter
            if Player(iSCounter) !=GetTriggerPlayer()then
                if GetPlayerController(Player(iSCounter)) == MAP_CONTROL_USER then
                    set PlayerPK[GetPlayerId(GetTriggerPlayer())] = false
                    call SetPlayerState(Player(iSCounter),PLAYER_STATE_RESOURCE_GOLD,GetPlayerState(GetTriggerPlayer(),PLAYER_STATE_RESOURCE_GOLD) / PlayerCounter)
                    call SetPlayerAllianceStateBJ(GetTriggerPlayer(),Player(iSCounter),4)
                    call SetPlayerController(GetTriggerPlayer(),MAP_CONTROL_COMPUTER)
                    call MultiboardSetItemValueBJ(mb,1,1 + PlayerSlot[GetPlayerId(GetTriggerPlayer())],PlayerColor[GetPlayerId(GetTriggerPlayer())] + "-®· rêi khái trËn ®Êu")
                endif
            endif
            set iSCounter=iSCounter+1
        endloop
    endfunction
    private function create takes nothing returns nothing
        local integer a = 1
        local integer b
        local integer r = 3
        
        loop
            exitwhen a > 10
            if GetPlayerSlotState(Player(a)) == PLAYER_SLOT_STATE_PLAYING and GetPlayerController(Player(a)) == MAP_CONTROL_USER then
                set r = r + 1
            endif
            set a = a + 1
        endloop
        call MultiboardSetColumnCount(mb,6)
        call MultiboardSetRowCount(mb,r)
        call MultiboardSetTitleText(mb,"Pekon")
        call MultiboardDisplay(mb,true)
        
        set a = 1
        loop
            exitwhen a > r
            set b = 1
            loop
                exitwhen b > 6
                call MultiboardSetItemStyleBJ( mb, b + 1, a, true, false )
                set b = b + 1
            endloop
            call MultiboardSetItemStyleBJ(mb,1,a,true,true)
            call MultiboardSetItemValueBJ(mb,2,a,"  ")
            call MultiboardSetItemWidthBJ(mb,1,a,8.50)
            call MultiboardSetItemWidthBJ(mb,2,a,3.25)
            call MultiboardSetItemWidthBJ(mb,3,a,7.25)
            call MultiboardSetItemWidthBJ(mb,4,a,3.85)
            call MultiboardSetItemWidthBJ(mb,5,a,5.25)
            
            call MultiboardSetItemColorBJ(mb,2,a,100,10,10,0)
            call MultiboardSetItemColorBJ(mb,3,a,10,100,10,0)
            call MultiboardSetItemColorBJ(mb,4,a,40,18,57,0)
            call MultiboardSetItemColorBJ(mb,5,a,0,68,94,0)
            set a = a + 1
        endloop
        
        call MultiboardSetItemStyleBJ(mb,1,1,true,false)
        call MultiboardSetItemColorBJ(mb,1,1,10,100,100,0)
        call MultiboardSetItemValueBJ(mb,1,1,"      Danh tÝnh")
        call MultiboardSetItemStyleBJ(mb,2,1,true,false)
        call MultiboardSetItemStyleBJ(mb,3,1,true,false)
        call MultiboardSetItemValueBJ(mb,2,1,"ChiÕn tÝch")
        call MultiboardSetItemValueBJ(mb,3,1,"S¸t nh©n")
        call MultiboardSetItemValueBJ(mb,4,1,"Hi sinh")
        call MultiboardSetItemValueBJ(mb,5,1,"Ch¨n qu©n")
        call MultiboardSetItemValueBJ(mb,1,2,"H¾c long")
        call MultiboardSetItemValueBJ(mb,1,8,"B¹ch Hæ")
        call MultiboardSetItemValueBJ(mb,2,2," 0")
        call MultiboardSetItemValueBJ(mb,3,2,"     0")
        call MultiboardSetItemValueBJ(mb,4,2,"   0")
        call MultiboardSetItemValueBJ(mb,5,2,"     0")
        call MultiboardSetItemValueBJ(mb,2,8," 0")
        call MultiboardSetItemValueBJ(mb,3,8,"     0")
        call MultiboardSetItemValueBJ(mb,4,8,"   0")
        call MultiboardSetItemValueBJ(mb,5,8,"     0")
        
        set a = 1
        set b = 2
        loop
            exitwhen a > 10
            if GetPlayerSlotState(Player(a)) == PLAYER_SLOT_STATE_PLAYING and GetPlayerController(Player(a)) == MAP_CONTROL_USER then
                set b = b + 1
                if b == 8 then
                    set b = 9
                endif
                call MultiboardSetItemValueBJ(mb,1,b, PlayerName[a])
                call MultiboardSetItemValueBJ(mb,2,b," 0")
                call MultiboardSetItemValueBJ(mb,3,b,"     0")
                call MultiboardSetItemValueBJ(mb,4,b,"   0")
                call MultiboardSetItemValueBJ(mb,5,b,"     0")
            endif
            set a = a + 1
        endloop
        
        call MultiboardMinimize(mb,true)
    endfunction
    private function time takes nothing returns nothing
        local integer a = 1
        
        if Second == 59 then
            set Min = Min + 1
            set Second = 0
            call SetPlayerHandicapXP(Player(0),Min)
            call SetPlayerHandicapXP(Player(11),Min)
        endif
        
        set Second = Second + 1 
        
        loop
            exitwhen a > 10
            call AdjustPlayerStateBJ( 1, Player(a), PLAYER_STATE_RESOURCE_GOLD )
            call SetPlayerState(Player(a),PLAYER_STATE_RESOURCE_LUMBER,Min)
            call SetPlayerState(Player(a),PLAYER_STATE_RESOURCE_FOOD_USED,Second)
            set a = a + 1
        endloop
    endfunction
    public function Init takes nothing returns nothing
        local trigger t = CreateTrigger() // dem thoi gian
        local trigger a = CreateTrigger() // tao bang
        local trigger b = CreateTrigger() // creeping
        local trigger l = CreateTrigger() // player left
        local integer i
        local trigger k = CreateTrigger() // giet -> chan creep, tuong, cong exp
        call TriggerRegisterTimerEvent(t,1,true)
        call TriggerAddAction(t,function time)
        call TriggerRegisterTimerEvent(a,0.1,false)
        call TriggerAddAction(a,function create)
        call DestroyTrigger(a)
        set i = 1
        loop
            exitwhen i > 10
            call TriggerRegisterPlayerEventLeave( l, Player(i) )
            set i = i + 1
        endloop
        call TriggerAddAction(l,function leftact)
        call TriggerRegisterAnyUnitEventBJ(k,EVENT_PLAYER_UNIT_DEATH)
        call TriggerAddCondition(k,Condition(function killcond))
        call TriggerAddAction(k,function killact)
        set t = null
        set a = null
        set b = null
        set l = null
        set k = null
    endfunction
    endscope
    Mọi người xem ngược từ dưới lên, trong init mình cho 5 trigger đảm nhiệm 5 vai trò khác nhau, mỗi trigger có 1 function action để thực hiện, ngoài ra thêm 1 function update để gọi nâng cấp
    Mình ẩn từng function 1 thì vẫn vậy, đều báo lỗi cả, k hiểu do đâu nữa :-S
    @Tom
    sử dụng cái table như thế nào nhỉ? E vẫn chưa biết xài à :(
    gắn int vào int, nhưng lại có tạo table, như vậy mỗi hero nên tạo 1 table hay ntn ?
    với cả cái timer anh gửi cho em ấy , giả sử nó đang chạy lấy data như thế nào hả anh, chẳng lẽ phải đặt globals var @@, nó k có GetTiming nhỉ ( cái thời gian đang chạy ý )
    ps : sao anh dạo này chả ol YM thế , với cả e đập điện thoại ui :">
     
    Chỉnh sửa cuối: 15/6/11
  3. zxforeverlovexz

    zxforeverlovexz Youtube Master Race

    Tham gia ngày:
    12/6/11
    Bài viết:
    25
    [​IMG]

    Dark Gamer ơi cho mình hỏi với. kill hero chúng nó rồi + kill mấy con creep rồi mà chả lên 1 điểm nào vậy ?

    [?] cho em xin cái trigger đầy đủ để chỉ còn 30% máu mới ATK quân mình với ạ.[ trigger anh nhé, Jass em không biết viết]
     
  4. ThanatoUltimate

    ThanatoUltimate Youtube Master Race

    Tham gia ngày:
    2/4/09
    Bài viết:
    19
    @zxforeverlovexz đã đặt event khi một unit chết hay một hero chết thì tăng cái điểm kill và last hit chưa thế?
     
  5. zxforeverlovexz

    zxforeverlovexz Youtube Master Race

    Tham gia ngày:
    12/6/11
    Bài viết:
    25
    cái trigger ấy là mình thử test của Dark Gamer làm mà, không thấy lên 1 điểm nào dù kill mấy con hero team nó rồi. cái của mình tự làm cũng vậy. kill hero hoặc creep cũng không lên 1 points nào. mình làm như hình dưới
     
  6. FlameDrake

    FlameDrake Dragon Quest

    Tham gia ngày:
    1/12/10
    Bài viết:
    1,298
    Nơi ở:
    Quận 10 HCM
    Wang thẳng cái map lên đây, post thế thì sao mà giúp
     
  7. zzchaolegionzz

    zzchaolegionzz T.E.T.Я.I.S

    Tham gia ngày:
    27/9/07
    Bài viết:
    606
    Nơi ở:
    Black Parade
    cho em hỏi câu này: em lấy cái nhà làm shop á. xong thay model cho no thanh unit nhưng vẫn còn cái nền. ai chỉ cho em làm sao cho mất cái nền không. hoặc làm shop băng unit cũng được. nhưng em làm theo ở trên topic thì em cho nó bán đồ xong mua đồ nó rớt ra đất. nó không vào người mình, xong mình phải lượm lên.
    #2 cái không deni cùng team ấy. ai chỉ rõ cho em được không ạ. có code hay hình thì càng tốt ak. em cảm ơn

    ---------- Post added at 16:28 ---------- Previous post was at 16:17 ----------

    (Attacking unit) is an ally of (Owning of(Attacked unit)) equal to true
    (Attacking unit): cái này là biến hả anh. chứ em tìm mãi không ra chi ra đoạn sau thôi
    [​IMG]. em NB nếu sai mong anh chỉ giúp. hjhj
     
  8. DragonKai

    DragonKai Mr & Ms Pac-Man

    Tham gia ngày:
    10/2/11
    Bài viết:
    222
    Attacking thì cũng như attacked
    (Owning of(Attacking unit)) is an ally of (Owning of(Attacked unit)) equal to true
     
  9. FlameDrake

    FlameDrake Dragon Quest

    Tham gia ngày:
    1/12/10
    Bài viết:
    1,298
    Nơi ở:
    Quận 10 HCM
    Owner of Unit >>> Attacking unit
    Muốn nhà mất nền vào dòng Art - Ground Texture del đi là đc
    Add spell Select Unit or Select Hero vào con unit bán shop hay nhà|
     
    Chỉnh sửa cuối: 15/6/11
  10. zxforeverlovexz

    zxforeverlovexz Youtube Master Race

    Tham gia ngày:
    12/6/11
    Bài viết:
    25
  11. FlameDrake

    FlameDrake Dragon Quest

    Tham gia ngày:
    1/12/10
    Bài viết:
    1,298
    Nơi ở:
    Quận 10 HCM
    Các pro giúp tui cái này phát, đây là cái system tìm đc nó change inventory ( 12 slot)
    http://www.mediafire.com/?u5td22ags0eqdoz
    Nhưng có 1 cái trở ngại là, đối với item ko có Charge thì ko sao, còn đối với item Charge ( cơ bản trong map nào cũng có là bình bơm máu và mana) sử dụng system trên thì nó mất hết Charge, ai chỉnh lại dùm tui cho nó khi dùng system vẫn giữ đc lượng Charge của item.
    P.s: À còn cái này nữa, trigger nào bắt 1 unit nào đó lụm hết item trong 1 region
     
    Chỉnh sửa cuối: 15/6/11
  12. ngoc426123

    ngoc426123 Youtube Master Race

    Tham gia ngày:
    1/2/08
    Bài viết:
    83
    Nơi ở:
    TP .Hồ Chí Mi
    ai giúp đỡ với , thí dụ đánh một con unit này sẽ rớt đồ mà chỉ có 20% là rớt thôi , ai giúp với !!!
     
  13. FlameDrake

    FlameDrake Dragon Quest

    Tham gia ngày:
    1/12/10
    Bài viết:
    1,298
    Nơi ở:
    Quận 10 HCM
    Mã:
    (Random integer number between 1 and 100) Less than or equal to 50 // Random từ 1 > 100, có 50% cái gì đó

    Đã tìm ra nguyên nhân, vì trong map mình có 1 trigger +Charge, và system cũng có 1 trigger +Charge nên khi sử dụng nó lẫn lộn :D
     
    Chỉnh sửa cuối: 15/6/11
  14. zxforeverlovexz

    zxforeverlovexz Youtube Master Race

    Tham gia ngày:
    12/6/11
    Bài viết:
    25
    Mã:
    sau đây là map của em, ở trong đã có 1 W ghi những gì em cần làm. mọi người xem và chỉnh hộ nhé
    http://www.mediafire.com/?rbdnwp4diapilf3
    Who Can Help Me, làm hộ em với nhé, thank các anh nhiều
     
  15. 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
    thôi thì bạn thử thêm dòng For 1 to 12 ( số player chơi ) rồi cho update lại toàn bộ xem sao
    Mình nghĩ do có thể sai ở số dòng chăng?
     
  16. dh-g

    dh-g Fire in the hole!

    Tham gia ngày:
    29/8/09
    Bài viết:
    2,654
    Nơi ở:
    Q1 TP.HCM
    PHP:
    demo
        Events
            Unit 
    A unit Dies
        Conditions
        Actions
            
    If (All Conditions are Truethen do (Then Actions) else do (Else Actions)
                If - 
    Conditions
                    
    (Random real number between 1.00 and 100.00Less than or equal to 20.00
                Then 
    Actions
                    Item 
    Create Tome of Experience at (Position of (Dying unit))
                Else - 
    Actions
    như thế này rất đơn giản nếu muốn đặt dạng unit loại gì khi rớt đồ thì set 1 conditions ví dụ (Unit-type of (Dying unit)) Equal to Footman


    sẵn cho hỏi hàm vjass library trigger initializer Init sử dụng như thế nào :-s
     
  17. zzchaolegionzz

    zzchaolegionzz T.E.T.Я.I.S

    Tham gia ngày:
    27/9/07
    Bài viết:
    606
    Nơi ở:
    Black Parade
    unit rới 20% dễ mà. theo cách của tớ thì cậu cứ cho cái Item đó vào. rồi thêm 4item nữa là 5 thì nó sẽ chia % ra. 5X2 là 100% muốn rớt % cao hơn thì xoa bớt item đi. còn mấy bình máu đó là đễ bồi dưỡng :))
    chứ không đánh xong bos ko có 1 cái gì ak :D. mục đích của mấy bình máu là 2 mục đích . 1 chia nhỏ % rớt item cần. 2 đánh xong có ít máu đi đanh tiếp. chả lẽ đánh boss xong về nhà regen thẳng. theo cách khác cũng được nha. cách này đâu cân tringger. mình là chuyên gia copy đến từ holywood nên mấy cái GUI mình chẳng biết chữ mô cả :D
     
  18. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    cho vào là cho vào đâu :-/

    liên quan gì tới câu hỏi? :-/

    -----------
    @dh-g: dùng "random integer" đi 8-|
    Mã:
    library MyLib initializer Init
    
    
    private function Init takes nothing returns nothing
        // hàm này sẽ được chạy khi map load (Map Initialization)
    endfunction
    
    endlibrary
    
     
  19. zzchaolegionzz

    zzchaolegionzz T.E.T.Я.I.S

    Tham gia ngày:
    27/9/07
    Bài viết:
    606
    Nơi ở:
    Black Parade
    khổ hồi sáng em hình vào mà photobucker không cho.báo lối sever bận nên chỉ port đc bài mà không có hình.[​IMG]
    #2 ai giúp em cái này với. em download Jassnewgen về extral ra rồi chạy thì nó ra cái bảng đường dẫn. em dẫn đến Warcardf của em thì nó báo thê này:[​IMG] ai giúp em với hix hix
     
  20. 19101994[K]uro

    19101994[K]uro Youtube Master Race

    Tham gia ngày:
    13/3/11
    Bài viết:
    53
    Cái cách đầu chỉ là cho unit trên map có sẵn thui còn unit dc tạo ra = trig thì đâu áp dụng dc vả lại mún 20% thì cần gì phải có 5 item, chỉnh cái item cần rớt xuống 20% thôi
     
Trạng thái chủ đề:
Không mở trả lời sau này.

Chia sẻ trang này