Topic hỏi đáp (tập 4) về cách làm map

Status
Không mở trả lời sau này.
Tình hình là em định tạo 1 nhóm lính, sau đó em tạo 1 biến (ví dụ tên là gate1) kiểu là Unit Group. Bây giờ cho em hỏi sao chuyển nhóm lính đó vào gate1 được vậy mấy anh.
P/S: Em dùng Add Unit to Unit Group thì nó toàn tạo thêm lính thôi ( ví dụ tạo 5 thằng lính thì kết quả là 10 thằng ( 5 thằng do mình tạo, 5 thằng do "Add Unit to Unit Group tạo" )
Vậy có ai biết thì chỉ với nhé :D
 
Làm sao để có được mấy cái vành đen ở chỗ chọn tướng vậy, và làm sao để import model tướng từ map khác (đừng chém em gà)

vành đen
ko hiểu
làm sao để import model tướng từ map khác
mở map cần lấy ra,F12 giản nén ra ngoài
open maps mình, chèn model vừa giải nén vào
 
về cơ bản thì ko leak, nhưng Tom từng nghe: khi một unit được tạo ra, nó chiếm một chút bộ nhớ và không thể lấy lại được, nghĩa là cho dù remove unit này thì cũng không thể lấy lại được bộ nhớ kia. (tuy nhiên, ko remove thì leak nhiều hơn)

và phần lớn leak kiểu này là do dummy

nếu map trên mà bỏ (disable) trigger respawn và trigger tạo dummy cast phép thì không thấy bộ nhơ tăng nữa (về sau còn giảm)
----
giải pháp cho vấn đề này là dùng một system nào đó "tái sử dụng" dummy, ví dụ: xecast

ở dưới Tom đã gửi kèm map trên với xecast (có chút sửa đổi, phần global), dùng xecast sẽ giải quyết được vấn đề leak do create dummy.
còn leak do respawn thì phải chịu thôi... :|


Mã:
Cuong loi chan dia
    Events
        Game - GDD_Event becomes Equal to 0.00
    Conditions
        (GDD_DamagedUnit has buff Poison (Stacking)) Equal to True
    Actions
        -------- khai báo biến xe là một "xecast" object --------
        Custom script:   local xecast xe
        Unit - Remove Poison (Stacking) buff from GDD_DamagedUnit
        Set Temp_Point = (Position of GDD_DamagedUnit)
        -------- tạo xecast object --------
        [COLOR="Blue"]Custom script:   set xe = xecast.createBasicA( 'A001', OID_chainlightning, GetOwningPlayer( udg_GDD_DamageSource) )[/COLOR]
        -------- ----- --------
        -------- # --------
        [COLOR="Red"]Custom script:   set xe = xecast.createA()
        Custom script:   set xe.orderstring = "chainlightning"
        Custom script:   set xe.abilityid = 'A001'
        Custom script:    set xe.owningplayer=GetOwningPlayer( udg_GDD_DamageSource)[/COLOR]
        -------- # --------
        -------- ----- --------
        -------- đặt vị trí cho dummy --------
        Custom script:   call xe.setSourceLoc( udg_Temp_Point, 1000. )
        -------- cast vào target --------
        Custom script:   call xe.castOnTarget( udg_GDD_DamagedUnit )
        Set Temp_Int = (Level of Arrow  for GDD_DamageSource)
        Unit - Cause GDD_DamageSource to damage GDD_DamagedUnit, dealing ((Real(Temp_Int)) x 100.00) damage of attack type Normal and damage type Normal
        Custom script:   call RemoveLocation(udg_Temp_Point)

dòng xanh là "viết nhanh", nếu dùng OID (library OID đã có trong map)



nếu không "viết nhanh" thì thay dòng xanh bằng 4 dòng đỏ, trong đó thì:

----
p.s: dummy unit nên có instant cast (Art - Animation - Cast Point = 0.000 )

Em làm y như thế không được nhỉ?

À phải thay dummy unit ID,a chả nói...

Còn với vòng lặp thì có cần dòng Custom script: local xecast xe không anh?

Mã:
Unit Group - Pick every unit in Temp_Group and do (Actions)
    Loop - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Random integer number between 1 and 100) Less than or equal to Skill_TTTC_Chance[Temp_Int]
            Then - Actions
                Custom script:   local xecast xe
                Set Temp_Point_2 = (Position of (Picked unit))
                Custom script:   set xe = xecast.createBasicA( 'A004', OID_thunderbolt, GetOwningPlayer( udg_GDD_DamageSource) )
                Custom script:   call xe.setSourceLoc( udg_Temp_Point, 50. )
                Custom script:   call xe.castOnTarget( GetEnumUnit() )
                Custom script:   call RemoveLocation(udg_Temp_Point_2)
            Else - Actions

Thế này ko được rồi anh ạ.
 
Em làm y như thế không được nhỉ?

À phải thay dummy unit ID,a chả nói...

anh quên mất :D

Còn với vòng lặp thì có cần dòng Custom script: local xecast xe không anh?

Thế này ko được rồi anh ạ.

Mã:
Unit Group - Pick every unit in Temp_Group and do (Actions)
    Loop - Actions
        [COLOR="Red"]Custom script:   local xecast xe[/COLOR]
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Random integer number between 1 and 100) Less than or equal to Skill_TTTC_Chance[Temp_Int]
            Then - Actions
                [s]Custom script:   local xecast xe[/s]
                Set Temp_Point_2 = (Position of (Picked unit))
                Custom script:   set xe = xecast.createBasicA( 'A004', OID_thunderbolt, GetOwningPlayer( udg_GDD_DamageSource) )
                Custom script:   call xe.setSourceLoc( udg_Temp_Point, 50. )
                Custom script:   call xe.castOnTarget( GetEnumUnit() )
                Custom script:   call RemoveLocation(udg_Temp_Point_2)
            Else - Actions
 
Ờ thì mấy chỗ đen đen nó ngăn giữa hai khu vực chọn tướng ý anh
 
Ờ thì mấy chỗ đen đen nó ngăn giữa hai khu vực chọn tướng ý anh

Menu -> Layer -> Terrain [T] -> Hiện ra thanh công cụ chọn [Boundary]

attachment.php
 

Attachments

  • Untitled.jpg
    Untitled.jpg
    22.5 KB · Đọc: 58
anh REX dùng phần mền nào mà cho map KIEMTHE loading nhanh vậy ;;) chỉnh em với
OE - > SLK , TXT
 
Sao cái xe 0.8 anh lại disable mấy cái vậy,anh hướng dẫn sử dụng mấy cái đó luôn đi...

(Bao gồm damage,collider)

Cái map demo xe0.8 toàn Jass,chả hiểu gì :D.

Ví dụ em muốn làm 1 cái spell 5 lần mỗi lần cách nhau 2 giây tạo 3 effect ở 3 random point aoe nào đó,deal dame tại 3 random point đó.

Ý tưởng của e là tạo 1 dummy unit với custom value 5,cho nó chết sau 2s,mỗi khi nó chết thì tạo 1 loại dummy cùng loại với nó với custom -1,khi có dummy loại đó tạo ra thì create effect tại 3 random point từ vị trí dummy đó rồi pick group quanh mỗi random point đó là enemy của dummy rồi order unit deal dame theo công thức.

Có cách nào đỡ tốn bộ nhớ hơn cách trên ko anh? Và nếu làm theo cách trên thì sử dụng xe system như nào?


Cái xe này coi bộ còn đơn giản,còn cái CS16.0 nữa nếu được anh từ từ hướng dẫn giùm:D
 
Cho hỏi, khi 1 hero tăng level thì các chỉ số được tính như thế nào (Agility, Strengh,Intelligence , và làm sao thay đổi các chỉ số này (World Editor)
 
Thanks anh, nhưng cái link 2 nó nhiều quá em ko biết anh muốn chỉ em vào cái nào hết, cái 1 là đủ rùi :D
 
Sao cái xe 0.8 anh lại disable mấy cái vậy,anh hướng dẫn sử dụng mấy cái đó luôn đi...

(Bao gồm damage,collider)

Cái map demo xe0.8 toàn Jass,chả hiểu gì :D.

Ví dụ em muốn làm 1 cái spell 5 lần mỗi lần cách nhau 2 giây tạo 3 effect ở 3 random point aoe nào đó,deal dame tại 3 random point đó.

Ý tưởng của e là tạo 1 dummy unit với custom value 5,cho nó chết sau 2s,mỗi khi nó chết thì tạo 1 loại dummy cùng loại với nó với custom -1,khi có dummy loại đó tạo ra thì create effect tại 3 random point từ vị trí dummy đó rồi pick group quanh mỗi random point đó là enemy của dummy rồi order unit deal dame theo công thức.

Có cách nào đỡ tốn bộ nhớ hơn cách trên ko anh? Và nếu làm theo cách trên thì sử dụng xe system như nào?


Cái xe này coi bộ còn đơn giản,còn cái CS16.0 nữa nếu được anh từ từ hướng dẫn giùm:D

Chỉ cho em với...

Và nếu chỉ tạo dummy xong cho nó chết sau xx giây(để làm biến lưu vị trí) thì dùng xe như nào anh ? Hay chỉ cần trigger là được.

Unit - Create 1 Dummy 2 for (Owner of (Triggering unit)) at Random_Point[(Integer A)] facing Default building facing degrees
Unit - Add a 0.33 second Generic expiration timer to (Last created unit)
 
Sao cái xe 0.8 anh lại disable mấy cái vậy,anh hướng dẫn sử dụng mấy cái đó luôn đi...

ko dùng tới thì disable thôi

  • xesfx tạo effect có thể di chuyển
  • xedamage dùng để deal dmg, AoE dmg, phá cây,...
  • xecollider tạo missile có thể collide (chạm) vào unit -> chạm thì chạy trigger

nhưng mấy cái kia nặng về vJass nên anh ko giới thiệu, mà anh cũng chẳng dùng :-??

Cái xe này coi bộ còn đơn giản,còn cái CS16.0 nữa nếu được anh từ từ hướng dẫn giùm:D

đúng, cái này là "viết lại" của CS, giờ bỏ CS để dùng cái này.

Ví dụ em muốn làm 1 cái spell 5 lần mỗi lần cách nhau 2 giây tạo 3 effect ở 3 random point aoe nào đó,deal dame tại 3 random point đó.

Ý tưởng của e là tạo 1 dummy unit với custom value 5,cho nó chết sau 2s,mỗi khi nó chết thì tạo 1 loại dummy cùng loại với nó với custom -1,khi có dummy loại đó tạo ra thì create effect tại 3 random point từ vị trí dummy đó rồi pick group quanh mỗi random point đó là enemy của dummy rồi order unit deal dame theo công thức.

cách như em thì tốn bộ nhớ lắm, dùng timer thôi.
GUI thì quả thực hơi lằng nhằng...

Và nếu chỉ tạo dummy xong cho nó chết sau xx giây(để làm biến lưu vị trí) thì dùng xe như nào anh ? Hay chỉ cần trigger là được.

xe ko có kiểu này... em phải tự làm thôi...
---
 
Nếu dùng timer thì truyền tham số lưu vị trí cast spell,thông số item + attributes của caster như nào anh ? E chưa hình dung ra dùng các mảng như nào??

Cái chain spell của anh,em định làm nó MUI,tức là biến em định lưu vào local integer để dùng wait được,nhưng khi viết tham số cho các biến mảng thì toàn phải dùng custom script(thế mới cho tham số là biến local vào mảng được).

Nhưng đến đoạn pick unit group thì quá phức tạp...(check điều kiện),cái này bắt buộc phải học JASS hả anh,có "mẹo" nào sử dụng biến local làm tham số trong mảng ko anh?

Hoặc là có cách nào làm chain spell MUI với wait mà chỉ dùng GUI,không sử dụng đến biến local hoặc sử dụng ít ko anh?

Có cách nào lưu 1 biến unit lại ko anh?
Vd em set GDD_DamageSource = unit X
set hero[a]= GDD_DamageSource
--> khi GDD_DamageSource = null thì hero[a]= null luôn.
Em muốn hero[a] luôn = unit X (sau khi mình đã set nó = unit x) thì làm thế nào?
 
Chỉnh sửa cuối:
Em nhớ trong Xheroseige có cái item chiếc giày dùng để duy chuyển nhanh trong 1 khoảng cách ngắn, ai biết tạo item này thì chỉ em với ;;)
 
Add ability blink cho cái giày là được thôi mà....
 
Add ability blink cho cái giày là được thôi mà....
Bác nói rõ đi, em cũng add blink nhưng nó chả thấy gì cả [-X
.
___________Auto Merge________________

.
Em chọn cái blink (Item version) ấy
 
em là người mới nên cho hỏi "xe" là gì ??? hướng dẫn sử dụng và link download. Thanks
 
Status
Không mở trả lời sau này.
Back
Top