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

Status
Không mở trả lời sau này.
chuyển real sang int không đc à bạn? nếu b thik dùng gì cũng đc thôi, tôi nói cho bạn kia dễ hiểu thôi. Theo hình của bạn @zzchaolegionzz thì là nhỏ hơn 32 chứ không phải nhỏ hơn 32%. và nhỏ hơn 32 thì lại k đánh được (??)

Ừ 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
 
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:
nhovao.jpg


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]
 
@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ế?
 
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
 
Wang thẳng cái map lên đây, post thế thì sao mà giúp
 
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
untitled-5.jpg
. em NB nếu sai mong anh chỉ giúp. hjhj
 
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
untitled-5.jpg
. em NB nếu sai mong anh chỉ giúp. hjhj
Attacking thì cũng như attacked
(Owning of(Attacking unit)) is an ally of (Owning of(Attacked unit)) equal to true
 
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:
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:
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 !!!
 
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 !!!
Mã:
(Random integer number between 1 and 100) Less than or equal to 50 // Random từ 1 > 100, có 50% cái gì đó
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

Đã 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:
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
 
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?
 
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 !!!

PHP:
demo
    Events
        Unit - A unit Dies
    Conditions
    Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Random real number between 1.00 and 100.00) Less 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
 
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
 
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

cho vào là cho vào đâu :-/

chứ không đánh xong bos ko có 1 cái gì ak . 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ả

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
 
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.
item.jpg

#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:
loi.jpg
ai giúp em với hix hix
 
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
 
Status
Không mở trả lời sau này.
Back
Top