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

Status
Không mở trả lời sau này.
ai giúp mình cái này với nha. giờ mình muốn 1 tringger như thê này. VD sau 10 phút vào game xuất hiện 3 -4 con ngựa chở hàng đỉ từ A> B. A và B là 2 địa điểm xuất phát và kết thúc. nếu trên quãng đường đi. đến B mà không ai đánh 3 4 con ngựa đó. thì nó xẽ biến mất. 3 -4 con ngựa đó là chở hàng như kiểu đi buôn á nếu chết sẽ rớt ra item VD hàng như kiểu con đường tơ lụa á: Thủy Tinh , Nước hoa..vv bán được là được . mà cả 2 team đều có thể đánh được nó để cướp ;)). ai giúp với nha
còn cái vụ jass lỗi đó thì khỏi. bo trinnger vào map lỗi xong không load map đươc lun ;SS. sợ quá ra del tringger đi. vào lại load được :-j. sợ hết hồn :D
 
Chỉnh sửa cuối:
Cho mình hỏi cách làm 1 skill = jass thế này: pick units trong range x (ví dụ là 300) rồi đóng băng (tương tự như stun) trong 5s nhưng trong 5s đó nếu bị đánh thì bỏ stun. Thanks

Edit: Hỏi thêm 2 câu:
- Cách đổi màu model. Mình muốn đổi màu model có sẵng của war3 thì làm cách nào?
- Có system nào để học và tăng lvl của ability (ability trong spellbook) qua item ko? Trên hive có 1 cái nhưng chỉ add thêm chứ ko tăng lvl :(
 
Chỉnh sửa cuối:
Mã:
    Events
        Unit - A unit Dies // Nếu 1 unit chết
    Conditions
        ((Dying unit) is A Hero) Equal to True // con unit chết đó phải là Hero
    Actions
        Game - Display to (All players) the text: ((Name of (Killing unit)) + ( has killer  + (Name of (Dying unit)))) // như bạn yêu cầu
Dying unit là thằng chết
Killing unit là thằng giết

Good có thể làm cái này chữ có màu giống màu mỗi player ko?!? Với lại đồng minh trong phạm vi 500 sẽ nhận được tiền và có hiện text là hỗ trợ : xxxxx ( XXX là đồng minh ) giống như của Dota là assintain gì đó :XX:
 
Cho mình hỏi cách làm 1 skill = jass thế này: pick units trong range x (ví dụ là 300) rồi đóng băng (tương tự như stun) trong 5s nhưng trong 5s đó nếu bị đánh thì bỏ stun. Thanks
mình nghe mang máng giống Sleep của Dreadlord , ko biết có đúng ý bạn ko :-? còn nếu đúng thì việc phạm vi bn thì đơn giản rồi.
 
1.Làm ơn chỉ mình cái teleport region đi từ điểm A sang B và từ B sang A, mình làm rồi mà bị crash quài.
2.Sao mình dùng trigger để gán ability cho item và khi hero cầm item thì mấy cái ability nó nằm ở ability của hero chiếm hết skill của hero.
Thanks nhiều.

---------- Post added at 21:21 ---------- Previous post was at 21:17 ----------

àh còn 1 cái nữa mình tạo cái bảng multiboard xong thì mấy player không có màu toàn là chữ màu trắng không.
 
Anh Tom đâu rồi làm ơn cho em hỏi cái. Ngồi mần mãi mới làm đc cái MUI này thì giờ lại kẹt 1 tẹo với nó =.=! Tạm gọi skill đấy là Grand Storm Bolt. Cast vào 1 điểm thì sẽ có 1 cái búa bay từ chỗ con hero đến cái điểm đó. Chạm vào điểm đó thì stun tất cả unit trong 200 AoE. Khổ nỗi em nghĩ mãi mà ko hiểu sao nó bị cái lỗi như thế này lúc cái búa của con cast trước chạm vào mục tiêu thì cái búa đang bay của con cast sau bị ngừng lại (Nếu chỉ 1 con cast liên tục thì ko lỗi) (Xem clip lỗi bên dưới). Làm ơn chỉ dùm em cách fix.
[video]http://www.youtube.com/watch?v=s2Z376OQuxo[/video]

Và đây là 2 triggers:
Mã:
Grand Storm Bolt Main (Initially ON)

Events
    Unit - A unit Starts the effect of an ability
Conditions
    Or - Any (Conditions) are true
        Conditions
            (Ability being cast) Equal to Grand Storm Bolt 
            (Ability being cast) Equal to Dispel Magic (Neutral Hostile) (Neutral Hostile) //Cái này chỉ là skill để test với cooldown 0 :D
Actions
    Set GrandSBCurrentIndex = (GrandSBCurrentIndex + 1)
    Set GrandSBCaster[GrandSBCurrentIndex] = (Casting unit)
    Special Effect - Create a special effect attached to the weapon of GrandSBCaster[GrandSBCurrentIndex] using Abilities\Weapons\Bolt\BoltImpact.mdl
    Special Effect - Destroy (Last created special effect)
    Set GrandSBCasterLoc[GrandSBCurrentIndex] = (Position of GrandSBCaster[GrandSBCurrentIndex])
    Set GrandSBPoint[GrandSBCurrentIndex] = (Target point of ability being cast)
    Set GrandSBDistance[GrandSBCurrentIndex] = (Distance between GrandSBCasterLoc[GrandSBCurrentIndex] and GrandSBPoint[GrandSBCurrentIndex])
    Set GrandSBAngle[GrandSBCurrentIndex] = (Angle from GrandSBCasterLoc[GrandSBCurrentIndex] to GrandSBPoint[GrandSBCurrentIndex])
    Unit - Create 1 Grand Storm Bolt Dummy for (Owner of GrandSBCaster[GrandSBCurrentIndex]) at GrandSBCasterLoc[GrandSBCurrentIndex] facing GrandSBAngle[GrandSBCurrentIndex] degrees
    Set GrandSBDummy[GrandSBCurrentIndex] = (Last created unit)
    For each (Integer A) from 1 to GrandSBCurrentIndex, do (Actions)
        Loop - Actions
            Custom script:   call RemoveLocation(udg_GrandSBCasterLoc[GetForLoopIndexA()])
            Custom script:   call RemoveLocation(udg_GrandSBPoint[GetForLoopIndexA()])

Mã:
Grand Storm Bolt Move (Initially ON)

Events
    Time - Every 0.01 seconds of game time
Conditions
Actions
    For each (Integer A) from 1 to GrandSBCurrentIndex, do (Actions)
        Loop - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                If - Conditions
                    GrandSBDistance[(Integer A)] Greater than 40.00
                Then - Actions
                    Set GrandSBDummyLoc = (Position of GrandSBDummy[(Integer A)])
                    Set GrandSBDummyLoc2 = (GrandSBDummyLoc offset by 10.00 towards (Facing of GrandSBDummy[(Integer A)]) degrees)
                    Set GrandSBDistance[(Integer A)] = (GrandSBDistance[(Integer A)] - 10.00)
                    Unit - Move GrandSBDummy[(Integer A)] instantly to GrandSBDummyLoc2
                    Custom script:   call RemoveLocation(udg_GrandSBDummyLoc)
                    Custom script:   call RemoveLocation(udg_GrandSBDummyLoc2)
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        If - Conditions
                            GrandSBDistance[(Integer A)] Less than or equal to 40.00
                        Then - Actions
                            Set GrandSBDummyLoc = (Position of GrandSBDummy[(Integer A)])
                            Unit - Kill GrandSBDummy[(Integer A)]
                            Unit - Remove GrandSBDummy[(Integer A)] from the game
                            Special Effect - Create a special effect at GrandSBDummyLoc using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
                            Special Effect - Destroy (Last created special effect)
                            Set GrandSBGroup[(Integer A)] = (Units within 250.00 of GrandSBDummyLoc matching ((((Matching unit) is A structure) Not equal to True) and ((((Matching unit) is Magic Immune) Not equal to True) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Own
                            Unit Group - Pick every unit in GrandSBGroup[(Integer A)] and do (Actions)
                                Loop - Actions
                                    Set GrandSBGroupLoc = (Position of (Picked unit))
                                    Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Weapons\Bolt\BoltImpact.mdl
                                    Special Effect - Destroy (Last created special effect)
                                    Unit - Create 1 Grand Storm Bolt Cast Spell for (Owner of GrandSBDummy[(Integer A)]) at GrandSBDummyLoc facing Default building facing degrees
                                    Unit - Add a 0.10 second Generic expiration timer to (Last created unit)
                                    Unit - Set level of Grand Storm Bolt Dummy  for (Last created unit) to (Level of Grand Storm Bolt  for GrandSBCaster[(Integer A)])
                                    Unit - Set level of Grand Storm Bolt Dummy  for (Last created unit) to (Level of Dispel Magic (Neutral Hostile) (Neutral Hostile) for GrandSBCaster[(Integer A)])
                                    Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)
                                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        If - Conditions
                                            ((Picked unit) has an item of type |cff00ff00Emblem of Grass|r) Equal to True
                                        Then - Actions
                                            Unit - Cause GrandSBCaster[(Integer A)] to damage (Picked unit), dealing 150.00 damage of attack type Spells and damage type Lightning
                                            Floating Text - Create floating text that reads (|cffc0c0c0+150!|r + <Empty String>) above (Picked unit) with Z offset 0.00, using font size 10.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
                                            Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
                                            Floating Text - Change (Last created floating text): Disable permanence
                                            Floating Text - Change the lifespan of (Last created floating text) to 3.00 seconds
                                            Floating Text - Change the fading age of (Last created floating text) to 1.00 seconds
                                        Else - Actions
                            Custom script:   call DestroyGroup(udg_GrandSBGroup[GetForLoopIndexA()])
                            Custom script:   call RemoveLocation(udg_GrandSBDummyLoc)
                            For each (Integer B) from (Integer A) to (GrandSBCurrentIndex - 1), do (Actions)
                                Loop - Actions
                                    Set GrandSBCaster[(Integer A)] = GrandSBCaster[((Integer A) + 1)]
                                    Set GrandSBCasterLoc[(Integer A)] = GrandSBCasterLoc[((Integer A) + 1)]
                                    Set GrandSBDistance[(Integer A)] = GrandSBDistance[((Integer A) + 1)]
                                    Set GrandSBDummy[(Integer A)] = GrandSBDummy[((Integer A) + 1)]
                                    Set GrandSBGroup[(Integer A)] = GrandSBGroup[((Integer A) + 1)]
                            Set GrandSBCurrentIndex = (GrandSBCurrentIndex - 1)
                        Else - Actions
                Else - Actions


---------- Post added at 23:16 ---------- Previous post was at 23:11 ----------

Chết sao ko add đc video thế này... Anh xem tạm qua link youtube vậy: http://www.youtube.com/watch?v=s2Z376OQuxo
 
Các anh cho em hỏi, khi em cóp trigger của Empowering Haste từ map khác sang, khi save lại thì nó bị lỗi này
Mã:
Line 10307: Unexpected "Haste initializer Init"

Trigger:
Mã:
scope Empowering Haste initializer Init

globals
	private constant integer AbilId = 'A07B' // Enpowering Haste
	private constant integer DumAbilId = 'A07A' // Empowering Haste Dummy
	
	private group G = null
endglobals

private function Effects takes nothing returns nothing
	local unit u = GetEnumUnit()
	local integer bonus = R2I(GetUnitAbilityLevel(u,AbilId)*.04*GetUnitMoveSpeed(u))
	
    if GetWidgetLife(u)>.405 then
        call SetUnitAbilityLevel(u,DumAbilId,bonus+1)
    endif
    
    set u = null
endfunction
private function Update takes nothing returns nothing
	call ForGroup(G,function Effects)
endfunction
private function Actions takes nothing returns nothing
	local timer t
	local unit u = GetTriggerUnit()
	
	if G==null then
		set G = CreateGroup()
		set t = CreateTimer()
		call TimerStart(t,.5,true,function Update)
	endif
	call GroupAddUnit(G,u)
	call UnitAddAbility(u,DumAbilId)
endfunction

private function Conds takes nothing returns boolean
	if GetOwningPlayer(GetTriggerUnit())!=Player(15) and GetLearnedSkill()==AbilId and not IsUnitIllusion(GetTriggerUnit()) and GetUnitAbilityLevel(GetTriggerUnit(),AbilId)==1 then
		call Actions()
	endif
	return false
endfunction
private function Init takes nothing returns nothing
	local trigger t=CreateTrigger()
	call TriggerRegisterAnyUnitEventBJ(t,EVENT_PLAYER_HERO_SKILL)
	call TriggerAddCondition(t,Condition(function Conds))
	
	call PreloadAbil(DumAbilId)
endfunction

endscope
 
1.Làm ơn chỉ mình cái teleport region đi từ điểm A sang B và từ B sang A, mình làm rồi mà bị crash quài.
2.Sao mình dùng trigger để gán ability cho item và khi hero cầm item thì mấy cái ability nó nằm ở ability của hero chiếm hết skill của hero.
Thanks nhiều.

1. Bạn thử nghĩ, nếu bạn làm 2 cái trigger, 1 có event như kiểu unit enter region 1, 1 có event kiểu unit enter region 2, tức là 2 cái này chạy độc lập, giả sử khi unit đi vào region 1, bạn move nó sang region 2, như vậy có nghĩa là unit lại enter region 2, nó lại bị move về region 1, mà khi enter về region 1, unit lại bị move sang region 2.......................................cho tới khi bạn thoát được game. Vậy phải giải quyết bằng cách nào? cái này tùy vào bạn >:D<.
2. Ai lại dùng trigger gán ability cho item bao giờ, vào object editor gán không nhanh gấp tỉ lần à?

Anh Tom đâu rồi làm ơn cho em hỏi cái. Ngồi mần mãi mới làm đc cái MUI này thì giờ lại kẹt 1 tẹo với nó =.=! Tạm gọi skill đấy là Grand Storm Bolt. Cast vào 1 điểm thì sẽ có 1 cái búa bay từ chỗ con hero đến cái điểm đó. Chạm vào điểm đó thì stun tất cả unit trong 200 AoE. Khổ nỗi em nghĩ mãi mà ko hiểu sao nó bị cái lỗi như thế này lúc cái búa của con cast trước chạm vào mục tiêu thì cái búa đang bay của con cast sau bị ngừng lại (Nếu chỉ 1 con cast liên tục thì ko lỗi) (Xem clip lỗi bên dưới). Làm ơn chỉ dùm em cách fix.

Và đây là 2 triggers:
Mã:
Grand Storm Bolt Main (Initially ON)

Events
    Unit - A unit Starts the effect of an ability
Conditions
    Or - Any (Conditions) are true
        Conditions
            (Ability being cast) Equal to Grand Storm Bolt 
            (Ability being cast) Equal to Dispel Magic (Neutral Hostile) (Neutral Hostile) //Cái này chỉ là skill để test với cooldown 0 :D
Actions
    Set GrandSBCurrentIndex = (GrandSBCurrentIndex + 1)
    Set GrandSBCaster[GrandSBCurrentIndex] = (Casting unit)
    Special Effect - Create a special effect attached to the weapon of GrandSBCaster[GrandSBCurrentIndex] using Abilities\Weapons\Bolt\BoltImpact.mdl
    Special Effect - Destroy (Last created special effect)
    Set GrandSBCasterLoc[GrandSBCurrentIndex] = (Position of GrandSBCaster[GrandSBCurrentIndex])
    Set GrandSBPoint[GrandSBCurrentIndex] = (Target point of ability being cast)
    Set GrandSBDistance[GrandSBCurrentIndex] = (Distance between GrandSBCasterLoc[GrandSBCurrentIndex] and GrandSBPoint[GrandSBCurrentIndex])
    Set GrandSBAngle[GrandSBCurrentIndex] = (Angle from GrandSBCasterLoc[GrandSBCurrentIndex] to GrandSBPoint[GrandSBCurrentIndex])
    Unit - Create 1 Grand Storm Bolt Dummy for (Owner of GrandSBCaster[GrandSBCurrentIndex]) at GrandSBCasterLoc[GrandSBCurrentIndex] facing GrandSBAngle[GrandSBCurrentIndex] degrees
    Set GrandSBDummy[GrandSBCurrentIndex] = (Last created unit)
    For each (Integer A) from 1 to GrandSBCurrentIndex, do (Actions)
        Loop - Actions
            Custom script:   call RemoveLocation(udg_GrandSBCasterLoc[GetForLoopIndexA()])
            Custom script:   call RemoveLocation(udg_GrandSBPoint[GetForLoopIndexA()])

Mã:
Grand Storm Bolt Move (Initially ON)

Events
    Time - Every 0.01 seconds of game time
Conditions
Actions
    For each (Integer A) from 1 to GrandSBCurrentIndex, do (Actions)
        Loop - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                If - Conditions
                    GrandSBDistance[(Integer A)] Greater than 40.00
                Then - Actions
                    Set GrandSBDummyLoc = (Position of GrandSBDummy[(Integer A)])
                    Set GrandSBDummyLoc2 = (GrandSBDummyLoc offset by 10.00 towards (Facing of GrandSBDummy[(Integer A)]) degrees)
                    Set GrandSBDistance[(Integer A)] = (GrandSBDistance[(Integer A)] - 10.00)
                    Unit - Move GrandSBDummy[(Integer A)] instantly to GrandSBDummyLoc2
                    Custom script:   call RemoveLocation(udg_GrandSBDummyLoc)
                    Custom script:   call RemoveLocation(udg_GrandSBDummyLoc2)
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        If - Conditions
                            GrandSBDistance[(Integer A)] Less than or equal to 40.00
                        Then - Actions
                            Set GrandSBDummyLoc = (Position of GrandSBDummy[(Integer A)])
                            Unit - Kill GrandSBDummy[(Integer A)]
                            Unit - Remove GrandSBDummy[(Integer A)] from the game
                            Special Effect - Create a special effect at GrandSBDummyLoc using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
                            Special Effect - Destroy (Last created special effect)
                            Set GrandSBGroup[(Integer A)] = (Units within 250.00 of GrandSBDummyLoc matching ((((Matching unit) is A structure) Not equal to True) and ((((Matching unit) is Magic Immune) Not equal to True) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Own
                            Unit Group - Pick every unit in GrandSBGroup[(Integer A)] and do (Actions)
                                Loop - Actions
                                    Set GrandSBGroupLoc = (Position of (Picked unit))
                                    Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Weapons\Bolt\BoltImpact.mdl
                                    Special Effect - Destroy (Last created special effect)
                                    Unit - Create 1 Grand Storm Bolt Cast Spell for (Owner of GrandSBDummy[(Integer A)]) at GrandSBDummyLoc facing Default building facing degrees
                                    Unit - Add a 0.10 second Generic expiration timer to (Last created unit)
                                    Unit - Set level of Grand Storm Bolt Dummy  for (Last created unit) to (Level of Grand Storm Bolt  for GrandSBCaster[(Integer A)])
                                    Unit - Set level of Grand Storm Bolt Dummy  for (Last created unit) to (Level of Dispel Magic (Neutral Hostile) (Neutral Hostile) for GrandSBCaster[(Integer A)])
                                    Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)
                                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        If - Conditions
                                            ((Picked unit) has an item of type |cff00ff00Emblem of Grass|r) Equal to True
                                        Then - Actions
                                            Unit - Cause GrandSBCaster[(Integer A)] to damage (Picked unit), dealing 150.00 damage of attack type Spells and damage type Lightning
                                            Floating Text - Create floating text that reads (|cffc0c0c0+150!|r + <Empty String>) above (Picked unit) with Z offset 0.00, using font size 10.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
                                            Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
                                            Floating Text - Change (Last created floating text): Disable permanence
                                            Floating Text - Change the lifespan of (Last created floating text) to 3.00 seconds
                                            Floating Text - Change the fading age of (Last created floating text) to 1.00 seconds
                                        Else - Actions
                            Custom script:   call DestroyGroup(udg_GrandSBGroup[GetForLoopIndexA()])
                            Custom script:   call RemoveLocation(udg_GrandSBDummyLoc)
                            For each (Integer B) from (Integer A) to (GrandSBCurrentIndex - 1), do (Actions)
                                Loop - Actions
                                    Set GrandSBCaster[(Integer A)] = GrandSBCaster[((Integer A) + 1)]
                                    Set GrandSBCasterLoc[(Integer A)] = GrandSBCasterLoc[((Integer A) + 1)]
                                    Set GrandSBDistance[(Integer A)] = GrandSBDistance[((Integer A) + 1)]
                                    Set GrandSBDummy[(Integer A)] = GrandSBDummy[((Integer A) + 1)]
                                    Set GrandSBGroup[(Integer A)] = GrandSBGroup[((Integer A) + 1)]
                            Set GrandSBCurrentIndex = (GrandSBCurrentIndex - 1)
                        Else - Actions
                Else - Actions

Bạn biết sao nó bị lỗi không ?
Tại vì spell của bạn chưa MUI đấy.
 
Chỉnh sửa cuối:
@Hieu: Cái tên scope của bạn có khoảng cách nên nó ko hiểu thôi, chỉ cần đổi tên scope lại thành
Mã:
scope EmpoweringHaste initializer Init

Tiện thể mình hỏi một câu: initializer trong scope dùng làm gì?? có thì được gì, ko có thì đc gì?
 
ai giúp mình cái này với nha. giờ mình muốn 1 tringger như thê này. VD sau 10 phút vào game xuất hiện 3 -4 con ngựa chở hàng đỉ từ A> B. A và B là 2 địa điểm xuất phát và kết thúc. nếu trên quãng đường đi. đến B mà không ai đánh 3 4 con ngựa đó. thì nó xẽ biến mất. 3 -4 con ngựa đó là chở hàng như kiểu đi buôn á nếu chết sẽ rớt ra item VD hàng như kiểu con đường tơ lụa á: Thủy Tinh , Nước hoa..vv bán được là được . mà cả 2 team đều có thể đánh được nó để cướp ;)). ai giúp với nha
còn cái vụ jass lỗi đó thì khỏi. bo trinnger vào map lỗi xong không load map đươc lun ;SS. sợ quá ra del tringger đi. vào lại load được :-j. sợ hết hồn :D

Gui cũng làm được mà bạn à

Trigger 1
Mã:
 Event
            Every - Time 0.01 seconds ( thời gian ngựa ra)
          Action
            Creat Con ngựa to Player 12 trên region A
            Oder - Last creat unit group ( nếu creat nhiều con ) hoặc last creat unit ( nếu creat 1 con ) to region B

Trigger 2
Mã:
   Event
              Unit- A unit enter region B
            Condistion
              Unit type owen triggering equal to Con ngựa
            Action
              Remove triggering from the game
Trigger 3
Mã:
  Event
             A - unit die
           Condistion
             Unit type of dying unit equal to Con ngựa
           Action
              Item - Creat random item in level 1 ( level tùy nhớ chỉnh mấy item khác ở level đó về level khác ko trùng ráng chịu)
 
Cho mình hỏi làm thế nào để tạo một spell dạng như thế này :
thằng unit đó tạo một quả cầu trên đầu để tấn công đối phương
nếu unit chết thì quả cầu sẽ rơi xuong xuống và nổ
 
Ai làm đc cái duel giống nư trong map thiên kiếm của anh rex thì chỉ mình với.
Đến giờ move tất cảc các hero lên đấu trường.
Phân tích thắng bại = cách bên nào con hero sống sót cuối cùng.
Hero sống sót sẽ đc move về vị trí cũ trước khị bị move lên duel.
Hero chết sẽ trở về Region HeroRivve.
 
Mình nghĩ có khi nếu mà nó hiện cái chữ dummy unit như vầy :| thì mình nghĩ tốt nhất là thêm cái Triggering Change name của Player thành "Playername + (HeroName)" :D sau khi người chơi pick hero. Rồi trong cái Triggering hiện Text khi kill thì đổi lại là chỉ hiện tên Player thôi :)

---------- Post added at 10:35 ---------- Previous post was at 10:33 ----------

quên ko quote
@zzchaolegionzz:
 
Pro nào xem dùm 3 cái LEAK ở đây, đặt đúng vị trí không, có " chừa lại " cái gì trong bộ nhớ ko dùm cái
Mã:
BX Trigger 1
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to BX_Spell
    Actions
        Set BX_Caster = (Casting unit)
        Set BX_Point[1] = (Position of BX_Caster)
        Set BX_Target = (Target point of ability being cast)
        Set BX_Angle = (Angle from BX_Point[1] to BX_Target)
        Set BX_Distance = 24.00
        Set BX_Dame = (((Real((Level of BX_Spell for BX_Caster))) x 30.00) + (2.00 x (Real((Agility of BX_Caster (Include bonuses))))))
        Animation - Play BX_Caster's Attack Walk Stand Spin animation
        Unit - Turn collision for BX_Caster Off
        Trigger - Turn on BX Trigger 2 <gen>

Mã:
BX Trigger 2
    Events
        Time - Every 0.02 seconds of game time
    Conditions
    Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Distance between BX_Point[1] and BX_Target) Greater than or equal to (BX_Distance / 2.00)
            Then - Actions
                Set BX_Point[2] = (BX_Point[1] offset by BX_Distance towards BX_Angle degrees)
                Unit - Move BX_Caster instantly to BX_Point[2]
                Set BX_Point[1] = BX_Point[2]
                Set BX_Group = (Units within 200.00 of (Position of BX_Caster) matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an enemy of (Owner of BX_Caster)) Equal to True) and (((Matching unit
                Unit Group - Pick every unit in BX_Group and do (Actions)
                    Loop - Actions
                        Unit - Cause BX_Caster to damage (Picked unit), dealing BX_Dame damage of attack type Chaos and damage type Universal
                        Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
                        Special Effect - Destroy (Last created special effect)
                        Unit Group - Add (Picked unit) to BX_Group2
                        Custom script:   call DestroyGroup(udg_BX_Group)
            Else - Actions
                Trigger - Turn off BX Trigger 2 <gen>
                Unit - Turn collision for BX_Caster On
                Animation - Reset BX_Caster's animation
                Unit Group - Remove all units from BX_Group2
                [I][COLOR="#FF0000"]Custom script:   call RemoveLocation(udg_BX_Target)
                Custom script:   call RemoveLocation(udg_BX_Point[1])
                Custom script:   call RemoveLocation(udg_BX_Point[2])[/COLOR][/I]
 

Bạn biết sao nó bị lỗi không ?
Tại vì spell của bạn chưa MUI đấy.

Mình nghĩ bạn đọc 2 cái code của mình còn chưa hiểu ý chứ :| Cái spell ấy mình đang cố làm theo kiểu MUI đấy nên nó mới lằng nhằng thế chứ ==! Chứ ko MUI thì cái búa thứ 1 nó còn chả move nổi sau khi cái thứ 2 đc cast cùng lúc ý :| Vấn đề là nó gặp tí rắc rối ở cái biến nào đấy mà khi đẩy dần giá trị index đi thì cái biến của index cũ hình như ko được nhận nữa :|

---------- Post added at 12:35 ---------- Previous post was at 12:33 ----------

Mã:
BX Trigger 2
    Events
        Time - Every 0.02 seconds of game time
    Conditions
    Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Distance between BX_Point[1] and BX_Target) Greater than or equal to (BX_Distance / 2.00)
            Then - Actions
                [COLOR="#FF0000"]Set BX_Point[2] = (BX_Point[1] offset by BX_Distance towards BX_Angle degrees)
                Unit - Move BX_Caster instantly to BX_Point[2]
                Set BX_Point[1] = BX_Point[2][/COLOR]                Set BX_Group = (Units within 200.00 of (Position of BX_Caster) matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an enemy of (Owner of BX_Caster)) Equal to True) and (((Matching unit
                Unit Group - Pick every unit in BX_Group and do (Actions)
                    Loop - Actions
                        Unit - Cause BX_Caster to damage (Picked unit), dealing BX_Dame damage of attack type Chaos and damage type Universal
                        Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
                        Special Effect - Destroy (Last created special effect)
                        Unit Group - Add (Picked unit) to BX_Group2
                        Custom script:   call DestroyGroup(udg_BX_Group)
            Else - Actions
                Trigger - Turn off BX Trigger 2 <gen>
                Unit - Turn collision for BX_Caster On
                Animation - Reset BX_Caster's animation
                Unit Group - Remove all units from BX_Group2
                [I][COLOR="#FF0000"]Custom script:   call RemoveLocation(udg_BX_Target)
                Custom script:   call RemoveLocation(udg_BX_Point[1])
                Custom script:   call RemoveLocation(udg_BX_Point[2])[/COLOR][/I]

Cứ 0.02s nếu điều kiện đúng thì lại leak 2 phát thì phải :| 1s là đc 50 phát 8-}
 
@ZhengHe: mình đang mò mẫm Jass nên ko biết gì hết trơn, sau khi mình sửa tên thì nó báo tiếp lỗi này
Mã:
Line 5781: Undeclared function PreloadAbil
    call PreloadAbil(EmpoweringHaste___DumAbilId)

Trigger thì vẫn ở như trên, nhưng sao nó khó quá vậy T.T
 
@raigor: Cái Grand Storm Bolt của mình mình đã thử bỏ vài cái trigger đẩy index đi và kết quả là MUI hoạt động rất tốt. Nhưng hơi thắc mắc 1 tí là liệu bỏ cái đống đấy đi thì có để lại hậu quả gì trong tương lại ko...
Mã:
Grand Storm Bolt Move (Initially ON)

Events
    Time - Every 0.01 seconds of game time
Conditions
Actions
    For each (Integer A) from 1 to GrandSBCurrentIndex, do (Actions)
        Loop - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                If - Conditions
                    GrandSBDistance[(Integer A)] Greater than 40.00
                Then - Actions
                    Set GrandSBDummyLoc = (Position of GrandSBDummy[(Integer A)])
                    Set GrandSBDummyLoc2 = (GrandSBDummyLoc offset by 10.00 towards (Facing of GrandSBDummy[(Integer A)]) degrees)
                    Set GrandSBDistance[(Integer A)] = (GrandSBDistance[(Integer A)] - 10.00)
                    Unit - Move GrandSBDummy[(Integer A)] instantly to GrandSBDummyLoc2
                    Custom script:   call RemoveLocation(udg_GrandSBDummyLoc)
                    Custom script:   call RemoveLocation(udg_GrandSBDummyLoc2)
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        If - Conditions
                            GrandSBDistance[(Integer A)] Less than or equal to 40.00
                        Then - Actions
                            Set GrandSBDummyLoc = (Position of GrandSBDummy[(Integer A)])
                            Unit - Kill GrandSBDummy[(Integer A)]
                            Unit - Remove GrandSBDummy[(Integer A)] from the game
                            Special Effect - Create a special effect at GrandSBDummyLoc using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
                            Special Effect - Destroy (Last created special effect)
                            Set GrandSBGroup[(Integer A)] = (Units within 250.00 of GrandSBDummyLoc matching ((((Matching unit) is A structure) Not equal to True) and ((((Matching unit) is Magic Immune) Not equal to True) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Own
                            Unit Group - Pick every unit in GrandSBGroup[(Integer A)] and do (Actions)
                                Loop - Actions
                                    Set GrandSBGroupLoc = (Position of (Picked unit))
                                    Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Weapons\Bolt\BoltImpact.mdl
                                    Special Effect - Destroy (Last created special effect)
                                    Unit - Create 1 Grand Storm Bolt Cast Spell for (Owner of GrandSBDummy[(Integer A)]) at GrandSBDummyLoc facing Default building facing degrees
                                    Unit - Add a 0.10 second Generic expiration timer to (Last created unit)
                                    Unit - Set level of Grand Storm Bolt Dummy  for (Last created unit) to (Level of Grand Storm Bolt  for GrandSBCaster[(Integer A)])
                                    Unit - Set level of Grand Storm Bolt Dummy  for (Last created unit) to (Level of Dispel Magic (Neutral Hostile) (Neutral Hostile) for GrandSBCaster[(Integer A)])
                                    Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)
                                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        If - Conditions
                                            ((Picked unit) has an item of type |cff00ff00Emblem of Grass|r) Equal to True
                                        Then - Actions
                                            Unit - Cause GrandSBCaster[(Integer A)] to damage (Picked unit), dealing 150.00 damage of attack type Spells and damage type Lightning
                                            Floating Text - Create floating text that reads (|cffc0c0c0+150!|r + <Empty String>) above (Picked unit) with Z offset 0.00, using font size 10.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
                                            Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
                                            Floating Text - Change (Last created floating text): Disable permanence
                                            Floating Text - Change the lifespan of (Last created floating text) to 3.00 seconds
                                            Floating Text - Change the fading age of (Last created floating text) to 1.00 seconds
                                        Else - Actions
                            Custom script:   call DestroyGroup(udg_GrandSBGroup[GetForLoopIndexA()])
                            Custom script:   call RemoveLocation(udg_GrandSBDummyLoc)
                           [COLOR="#FF0000"] For each (Integer B) from (Integer A) to (GrandSBCurrentIndex - 1), do (Actions)
                                Loop - Actions
                                    Set GrandSBCaster[(Integer A)] = GrandSBCaster[((Integer A) + 1)]
                                    Set GrandSBCasterLoc[(Integer A)] = GrandSBCasterLoc[((Integer A) + 1)]
                                    Set GrandSBDistance[(Integer A)] = GrandSBDistance[((Integer A) + 1)]
                                    Set GrandSBDummy[(Integer A)] = GrandSBDummy[((Integer A) + 1)]
                                    Set GrandSBGroup[(Integer A)] = GrandSBGroup[((Integer A) + 1)]
                            Set GrandSBCurrentIndex = (GrandSBCurrentIndex - 1)[/COLOR]                        Else - Actions
                Else - Actions[COLOR="Silver"]

[SIZE=1]---------- Post added at 12:49 ---------- Previous post was at 12:47 ----------[/SIZE]

[/COLOR]Chết rồi viết thiếu
... Ai sửa bài dùm em với...
 
@hieu: bạn chắc là đã import thêm mấy cái system mà spell cần ko??
có thể map của bạn chưa có system nào đấy có hàm PreloadAbil() nên Jasshelper báo là hàm đó chưa được khai báo trước nên không thể xài.

Ai hướng dẫn giúp cách xài TimerUtil, ví dụ = 1 spell dạng damage over timer hoặc slide gì đấy. Trong GUI thì xài timer khá đơn giản còn Jass thì phải dính với struct nên phức tạp hơn. Hỏi thêm về cái vụ method, static method trong jass luôn, 2 cái này có công dụng gì?
 
Chỉnh sửa cuối:
Mình nghĩ bạn đọc 2 cái code của mình còn chưa hiểu ý chứ :| Cái spell ấy mình đang cố làm theo kiểu MUI đấy nên nó mới lằng nhằng thế chứ ==! Chứ ko MUI thì cái búa thứ 1 nó còn chả move nổi sau khi cái thứ 2 đc cast cùng lúc ý :| Vấn đề là nó gặp tí rắc rối ở cái biến nào đấy mà khi đẩy dần giá trị index đi thì cái biến của index cũ hình như ko được nhận nữa :|

---------- Post added at 12:35 ---------- Previous post was at 12:33 ----------



Cứ 0.02s nếu điều kiện đúng thì lại leak 2 phát thì phải :| 1s là đc 50 phát 8-}
Vậy sửa thế nào, bạn đặt cho đúng vị trí, to đỏ giúp mình
 
Cho mình hỏi làm sao để làm creeps xuất hiện kiểu như map tổng hợp đc không
 
Status
Không mở trả lời sau này.
Back
Top