New Style MUI for Gui :Custom value

Thảo luận trong 'World Editor' bắt đầu bởi kickboy00, 30/5/09.

  1. kickboy00

    kickboy00 Mr & Ms Pac-Man

    Tham gia ngày:
    12/4/09
    Bài viết:
    164
    :):):):):)
    Em post đây là để hướng dẫn cho các newbie dùng GUI,Nếu cách này có ai post rồi thì thứ lỗi nhé :X
    Mui for Gui by Custom Value..:) :
    -Như ta đã biết thì MUI(Multi....:|) chính là khả năng mà nhiều unit có thể cast skill = trigger mà không bị bug.Và rất hiếm khi mà Gui có khả năng này.Chính xác là khó làm chứ không phải không thể..:).Sở dĩ GUI thường mắc nhưng lỗi như vậy vì các biến của GUI khi gán vào một giá..Nếu sử dụng liên tiếp thì các giá trị cũ đè lên nhau khiến hay mất dữ liệu trước.Vì vậy mà cần có cách lưu lại giá trị của biến trong Gui khi sử dụng 1 dữ liệu cùng tên liên tục.Vâng,chắc chắn các bạn cũng nghĩ đến kiểu mảng.Đó là kiểu có thể lưu nhiều dữ liệu với đánh số thứ tự cho biến(đoạn này hơi khó hiểu 1 tý :P)Thường thì trước đây các mem dùng 1 biến Integer để để điều chỉnh số thứ tự đó để cho chúng không trùng nhau..Nhưng vẫn không thể giải quyết vấn đề MUI vì nếu cast liên tiếp thì biến Integer vẫn bị đè nhâu dẫn đến sai lệch tọa ra bug.Vì vậy mà ta cần một giá trị khác không bị biến đổi trong quá trình Spell diễn raCustom Value(of unit)Sau đây e có 1 skill như sau(Link down map: http://www.mediafire.com/file/nzntztiznl2/gf.w3x,đây là skill bắn ra một tia đao khí gây sát thuong cho mục tiêu đi qua,càng về xa cây đao càng to(Cho đẹp thôi chứ không quan trọng :P)).Skill tên là Kiếm khí lên các biến sẽ gắn đuôi KK :|:
    -Biến sử dụng:
    +MUI[integer]: để cố định custom value
    +CasterKK[Unit]:Để ghi lại caster là ai(Thực chất chỉ để xét dame = hệ số x lvl nhưng vì ở trigger2 lên bắt buộc phải có :( , tốn cả kb :(()
    +CasterKK2[Unit]:Dể không bị Leak ấy mà :)
    +TargetPoint[Point]:Dể không bị Leak ấy mà :)
    +DamagedGroupKK[unit group]:để kiểm soát nhừng mục tiêu đã bị đánh thì sẽ không đánh nữa
    +DamagingGroupKK[unit group]:để kiểm soát những mục tiêu phải take dame
    +DemKK[interger]:Để kiểm soát tiến độ di chuyển của unit
    +DemKKMax[interger]:Để kiểm soát không cho Dummy vượt quá độ xa target
    +MovePointKK[Point]:Để ghi lại vị trí và để di chuyển Dummy trong trigger 2

    (các biến trên đều là Array(kiểu mảng)) :)
    Ok let's start :)
    Trigger 1(Kiemkhi<-tên trong map)
    Mã:
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to Kiêm khí 
    Actions
        Trigger - Turn on KiemMove <gen>
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                MUI Greater than or equal to 100
            Then - Actions
                Set MUI = 0
            Else - Actions
        Set MUI = (MUI + 1)
        Set CasterKK2[MUI] = (Casting unit)
        Set TargetPointKK[MUI] = (Target point of ability being cast)
        Set CasterPointKK[MUI] = (Position of Caster[MUI])
        Unit - Create 1 Kiêm for (Owner of CasterKK2[MUI]) at (Position of CasterKK2[MUI]) facing (Angle from (Position of CasterKK2[MUI]) to TargetPointKK[MUI]) degrees
        Unit Group - Add (Last created unit) to MoveGroupKK
        Unit - Turn collision for (Last created unit) Off
        Unit - Set the custom value of (Last created unit) to MUI
        Animation - Change (Last created unit)'s size to (100.00%, 100.00%, 100.00%) of its original size
        Set CasterKK[(Custom value of (Last created unit))] = (Casting unit)
        Set DemKK[(Custom value of (Last created unit))] = 0
        Set DemKKMax[(Custom value of (Last created unit))] = ((Integer((Distance between (Position of CasterKK2[MUI]) and TargetPointKK[MUI]))) / 30)
        Set AngelKK[(Custom value of (Last created unit))] = (Angle from CasterPointKK[MUI] to TargetPointKK[MUI])
        Custom script:   call RemoveLocation(udg_TargetPointKK[udg_MUI])
        Custom script:   call RemoveLocation(udg_CasterPointKK[udg_MUI])
        Custom script:   set udg_DamagedGroupKK[GetUnitUserData(GetLastCreatedUnit())]=CreateGroup()
    Trigger2(KiêmMove)

    Mã:
    Events
        Time - Every 0.04 seconds of game time
    Actions
        Unit Group - Pick every unit in MoveGroupKK and do (Actions)
            Loop - Actions
                Animation - Change (Picked unit)'s size to ((100.00 + (8.00 x (Real(DemKK[(Custom value of (Picked unit))]))))%, (100.00 + (8.00 x (Real(DemKK[(Custom value of (Picked unit))]))))%, (100.00 + (8.00 x (Real(DemKK[(Custom value of (Picked unit))]))))%) of its original size
                Set MovePointKK[(Custom value of (Picked unit))] = (Position of (Picked unit))
                Set MovePointKK2[(Custom value of (Picked unit))] = (MovePointKK[(Custom value of (Picked unit))] offset by 30.00 towards AngelKK[(Custom value of (Picked unit))] degrees)
                Unit - Move (Picked unit) instantly to MovePointKK2[(Custom value of (Picked unit))]
                Set DamagingGroupKK = (Units within 100.00 of MovePointKK2[(Custom value of (Picked unit))] 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 (Picked unit))) Equal to T
                Custom script:   call RemoveLocation(udg_MovePointKK[GetUnitUserData(GetEnumUnit())])
                Custom script:   call RemoveLocation(udg_MovePointKK2[GetUnitUserData(GetEnumUnit())])
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Number of units in DamagingGroupKK) Not equal to 0
                    Then - Actions
                        Unit Group - Add (Random unit from DamagingGroupKK) to DamagedGroupKB
                        Unit - Cause (Picked unit) to damage (Random unit from DamagingGroupKK), dealing (50.00 x (Real((Level of Kiêm khí  for CasterKK[(Custom value of (Picked unit))])))) damage of attack type Chaos and damage type Lightning
                        Special Effect - Create a special effect attached to the chest of (Random unit from DamagingGroupKK) using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
                        Special Effect - Destroy (Last created special effect)
                    Else - Actions
                Custom script:   call DestroyGroup(udg_DamagingGroupKK)
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        DemKK[(Custom value of (Picked unit))] Greater than or equal to DemKKMax[(Custom value of (Picked unit))]
                    Then - Actions
                        Set CasterKK[(Custom value of (Picked unit))] = No unit
                        Unit - Kill (Picked unit)
                        Unit Group - Remove (Picked unit) from MoveGroupKK
                        Custom script:   call DestroyGroup(udg_DamagedGroupKK[GetUnitUserData(GetEnumUnit())])
                    Else - Actions
                        Set DemKK[(Custom value of (Picked unit))] = (DemKK[(Custom value of (Picked unit))] + 1)
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Number of units in MoveGroupKK) Equal to 0
            Then - Actions
                Trigger - Turn off (This trigger)
            Else - Actions
    
    Trước hết nói về trigger 1:
    +Event:1 unit bắt đầu hiệu ứng của 1 skill
    +Condition:Kĩ năng đó là Kiếm khí
    +Action
    -Turn on Trigger 2:Bạn hãy xem một chút,trigger 2 hoạt động với Group MoveGroupKK(tý nữa tôi sẽ giải thích nó hoạt động thế nào :P) và turn off nếu MoveGroupKK không có unit nào
    -Lệnh If MUI =100(..): để reset giá trị của MUI.Bạn đừng lo,chắc chắn sẽ không có bug ở giai đoạn bị đè này vì giả sử MUI = 100 -> MUI đc đặt = 0.Mà giá trị lần cast gần nhất sẽ là MUI=99 -> không thể đè lên nhau,trừ phi tốc độ nháy skill của bạn nhanh hơn tốc độ xử lí vài triêu phép tính trong 1s của PC :-? ;)) :)
    -Set MUI= Mui +1 :Để giá trị của MUI luôn tiếp diễn,không đè lên nhau
    -Creat 1 Kiêm(..):Tạo 1 Dummy tại vị trí của caster
    -Unit Group-Add(..):Cho Dummy vừa tạo ra vào MoveGroupKK
    -Turn(..):khỏi cần nói nhé :)
    -Set the custom value of(..):Vâng và đây chính là cách để custom value không bị thất thoát mà sẽ luôn = Mui.Và nếu bạn muốn cách này có bug thi cố gắng làm như ở MUI ấy :)) :>
    -Animation(..):Cái náy không quan trọng ai hiểu thì hiểu,chủ yếu là để làm đẹp thôi
    -Set Caster,Dem,DemKK (..): Đặt các biến trên dưới số thứ tự là Custom Value.Nếu ai không hiểu công dung thì tham khảo spell của a Tom nhé(Skill Wave của Morphin ấy :X)
    -Custom(..):để tạo một Group,đó là Damaged Group để kiểm soát...(bên trên).
    Vâng,đó là giai đoạn chuẩn bị để ta bước vào Trigger 2(trigger này không để Intially):
    +Event: Every Time (..):để diễn ra liên tục các Action
    +Action
    -Unit Group(..):và đây chính là yếu tố làm cho Gui có thể MUI 1 cách thoải mái,tất cả các lếnh sau này đều nằm trong acction này
    -Sau đó là một tràng giang đại hải các bạn phải tự hiểu nhé :)...Vì nó rất giống với các skill khác mà
    -If(..)(cái này không nằm trong Unit Group):Để khi mà trong MoveGroupKK không có unit thì trigger này không hoạt động nữa -> giảm lượng thông tin phải xử lí.Nếu như phải để Intially On như cách cũ thì mỗi vài phần giây trigger lại hoạt động nên game khá nặng..
    tôi nghĩ chắc các bạn không hiểu gì ở Trigger 2 sao lai phải đặt trong Unit Group,Thật là rườm rà.Và tại sao lại phải là Custom value của picked unit trong cặp Unit Group?..Bạn có thể hiểu đơn giản thế này:
    Mỗi 0.04 giây thi WE sẽ pick các unit trong Unit Group(1 unit thì làm 1 lần) và làm các việc sau đó.Vì vậy mà ta dã gán cho các biến Array giả trị là Custom Value của của các Dummy,mà các Dummy này đã đc lưu cố định trong Unit Group-> các custom value luôn cố định dù cho thơi gian và số lường MUI có tăng lên->Các giá trị của biến cũng đc set 1 cách cố định -> các giả trị của biến cũng cố đinh không bị đè nên nhau dù cho trigger đc dùng nhiều lần,Vì thế không xuất hiên hiện tượng Bug trong khi nhiều unit sử dụng skill này

    Thế là e The End ở đây.Ai thấy bài viết hữu ích thì thank e 1 cái :X


    Đoạn giải thích e viết hơi khó hiểu,các Pro ai hiểu rồi có thể viết lại một cách dễ hiêu hơn cho các New Bie hộ e nhế :P
    Thank all,Nhớ Thank e nhé :P:>:-":>:-"
    ----------------------------------------------
    Thank a Tom nhé e fig lại Leak rồi đấy...
    P/S : Tại sao không lạ là Jass khi GUI cũng có thể ?
    ---------------------------------------------
    Cách này đc tham khảo rất nhiều từ .... E cũng không biết tên nữa nhưng mà e học trong Map Boomerang ở trong topic post GUI Spell ấy ..Thank a nhá
     
  2. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    Nhận xét:
    - "xì pam" biểu tượng vui (vi phạm nội quy box)
    - trigger leak lung tung:
    + trigger thứ 1: leak 6 point
    + trigger thứ 2: leak 2 point (đối với 1 unit), nhưng 0.04s leak 2 point -> 1s leak 50 point (cho một unit). tức là nếu trong group có 10 unit -> 1s leak 50 * 10 = 500 point :o
    - ngoài ra: (Custom value of <unit>) <- cái này NÊN cho vào 1 biến, mỗi lần dùng cái này là đã "gọi 1 hàm", nghĩa là nếu dùng 10 cái này với chỉ 1 cái cho vô biến thì cái cho vô biến sẽ nhanh hơn. Tương tự với (last created unit),... Năng dùng biến lên, ko chết đâu.

    EDIT: dùng chữ màu vàng làm gì vậy ? để khó nhìn ? 3:-O
     
  3. kickboy00

    kickboy00 Mr & Ms Pac-Man

    Tham gia ngày:
    12/4/09
    Bài viết:
    164
    ??? Leak đoạn nào thế nhỉ :-?....E nhìn mãi mà không ra.A Tom chỉ hộ e cái (:|...E thử rồi mà nhỉ.Nếu leak 500 point 1 s mà sao eắn tệt bô có thấy lag đâu :-?
    [-X
     
  4. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    500 point 1s là khi có 10 unit trong group MoveGroupKK

    cứ bắn tẹt đi, RAM nhiều sao thấy lag ngay được. Tốt nhất lúc dùng skill nên bật Task Manager (Ctrl + Shift + Del) lên để xem RAM tăng thế nào.

    còn point leak:

    Mã:
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to Kiêm khí 
    Actions
        Trigger - Turn on KiemMove <gen>
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                MUI Greater than or equal to 100
            Then - Actions
                Set MUI = 0
            Else - Actions
        Set MUI = (MUI + 1)
        Unit - Create 1 Kiêm for (Owner of (Casting unit)) at [B][COLOR="Red"](Position of (Casting unit)[/COLOR][/B]) facing (Angle from [B][COLOR="Red"](Position of (Casting unit)[/COLOR][/B]) to [B][COLOR="Red"](Target point of ability being cast)[/COLOR][/B]) degrees
        Unit Group - Add (Last created unit) to MoveGroupKK
        Unit - Turn collision for (Last created unit) Off
        Unit - Set the custom value of (Last created unit) to MUI
        Animation - Change (Last created unit)'s size to (100.00%, 100.00%, 100.00%) of its original size
        Set CasterKK[(Custom value of (Last created unit))] = (Casting unit)
        Set DemKK[(Custom value of (Last created unit))] = 0
        Set DemKKMax[(Custom value of (Last created unit))] = ((Integer((Distance between ([B][COLOR="Red"]Position of (Casting unit)[/COLOR][/B]) and [B][COLOR="Red"](Target point of ability being cast)[/COLOR][/B]))) / 30)
        Set AngelKK[(Custom value of (Last created unit))] = (Angle from ([B][COLOR="Red"]Position of CasterKK[(Custom value of (Last created unit))][/COLOR][/B]) to [B][COLOR="Red"](Target point of ability being cast)[/COLOR][/B])
        Custom script:   set udg_DamagedGroupKK[GetUnitUserData(GetLastCreatedUnit())]=CreateGroup()
    
    Mã:
    Events
        Time - Every 0.04 seconds of game time
             Conditions
             Actions
        Unit Group - Pick every unit in MoveGroupKK and do (Actions)
            Loop - Actions
    --------------------------------------------------------------------
                Animation - Change (Picked unit)'s size to ((100.00 + (8.00 x (Real(DemKK[(Custom value of (Picked unit))]))))%, (100.00 + (8.00 x (Real(DemKK[(Custom value of (Picked unit))]))))%, (100.00 + (8.00 x (Real(DemKK[(Custom value of (Picked unit))]))))%) of its original size
    -------------------------------------------------------------------
                Set MovePointKK[(Custom value of (Picked unit))] = ([B][COLOR="Red"](Position of (Picked unit)[/COLOR][/B]) offset by 30.00 towards AngelKK[(Custom value of (Picked unit))] degrees)
    --------------------------------------------------------------------
                Unit - Move (Picked unit) instantly to MovePointKK[(Custom value of (Picked unit))]
    ------------------------------------------------------
                Custom script:   call RemoveLocation(udg_MovePointKK[GetUnitUserData(GetEnumUnit())])
    ---------------------------------------------------------
                Set DamagingGroupKK = (Units within 100.00 of [B][COLOR="Red"](Position of (Picked unit)[/COLOR][/B]) 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 (Picked unit))) Equal to True) and (((Matching unit) is in DamagedGroupKK[(Custom value of(Picked Unit))]
    ------------------------------------------------------
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Number of units in DamagingGroupKK) Not equal to 0
                    Then - Actions
                        Unit Group - Add (Random unit from DamagingGroupKK) to DamagedGroupKB
                        Unit - Cause (Picked unit) to damage (Random unit from DamagingGroupKK), dealing (50.00 x (Real((Level of Kiêm khí  for CasterKK[(Custom value of (Picked unit))])))) damage of attack type Chaos and damage type Lightning
                        Special Effect - Create a special effect attached to the chest of (Random unit from DamagingGroupKK) using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
                        Special Effect - Destroy (Last created special effect)
                    Else - Actions
    -------------------------------------------------------
                Custom script:   call DestroyGroup(udg_DamagingGroupKK)
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        DemKK[(Custom value of (Picked unit))] Greater than or equal to DemKKMax[(Custom value of (Picked unit))]
                    Then - Actions
                        Set CasterKK[(Custom value of (Picked unit))] = No unit
                        Unit - Kill (Picked unit)
                        Unit Group - Remove (Picked unit) from MoveGroupKK
                        Custom script:   call DestroyGroup(udg_DamagedGroupKK[GetUnitUserData(GetEnumUnit())])
                    Else - Actions
                        Set DemKK[(Custom value of (Picked unit))] = (DemKK[(Custom value of (Picked unit))] + 1)
    ----------------------------------------------------------------------
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Number of units in MoveGroupKK) Equal to 0
            Then - Actions
                Trigger - Turn off (This trigger)
            Else - Actions
    
    
    sorry, trigger thứ 1 leak 7 point mới đúng :)
     
  5. kickboy00

    kickboy00 Mr & Ms Pac-Man

    Tham gia ngày:
    12/4/09
    Bài viết:
    164
    Ồh ra thế hờ hờ...Nhưng mà e làm về MUI là chủ yếu chứ quan tâm leak mấy đâu [-(..Để e chỉnh lại cái :D
    --------------------------------------
    Dã fix xong..Giờ thì Gui không còn lo về vấn đề MUI nữa rồi nhé :X
    mà sao vấn đề này ít người quan tâm nhỉ:-?
     
  6. ShadowThanatos

    ShadowThanatos -|--Soul Reaper--|-

    Tham gia ngày:
    23/2/09
    Bài viết:
    2,119
    Nơi ở:
    Horror Depht
    Ngoài cách làm MUI như bạn. Cũng có 1 cách khác của anh Tom cũng rất dễ hiểu, dễ làm (khó giải thích) mình áp dụng hầu như toàn bộ spell của mình. Dùng array đấy, dù sao thì bạn cũng có công đóng góp cho forum. + rep nhá
     
  7. kickboy00

    kickboy00 Mr & Ms Pac-Man

    Tham gia ngày:
    12/4/09
    Bài viết:
    164
    a Tom cũng có MUI cho GUI à?..Ông send link cho tui xem nào :-?..Thế mà mình không biết nhỉ... :-??
     
  8. ShadowThanatos

    ShadowThanatos -|--Soul Reaper--|-

    Tham gia ngày:
    23/2/09
    Bài viết:
    2,119
    Nơi ở:
    Horror Depht
    Thực ra thì anh ấy không viết tutorial cho việt MUI trong GUI. Tớ áp dụng cách làm MUI spell Slide trong Tutorial về cách làm spell Slide, Chain và Bounce. Muốn biết thêm thì vào topic tổng hợp tut có 1 bài về slide, chain
     
  9. kickboy00

    kickboy00 Mr & Ms Pac-Man

    Tham gia ngày:
    12/4/09
    Bài viết:
    164
    Tui biết hai cai đấy rồi.Ông không thấy là trong đấy skill ghe là không MUI à:-?...Vậy ông học kiểu gì :-??
     
  10. game_war48

    game_war48 Dragon Quest

    Tham gia ngày:
    7/9/08
    Bài viết:
    1,320
    Nơi ở:
    Ice City
    Nếu ai giỏi English thì sang hive hoặc thehelper học GUI + JASS. Tớ cũng học GUI ở đấy, giờ vẫn chưa có ý định chuyển sang JASS vì máy tớ xung đột với Newgen WE nên kô bật đc, phải cài lại Win mà làm biếng. Thế là giờ cứ "GUI, GUI nữa, GUI mãi" =)).

    Nhận xét về Tut:
    _Chữ màu mè lem nhem nhìn "rất chói mắt".
    _Trình bày thì.... thôi rồi (Phần giới thiệu + hướng dẫn lẫn lộn nhau lung tung cả lên, chả hiểu phần nào ra với phần nào, lại phải "căng mắt" ra mà tìm:-??).
    _Sửa lại rồi nhưng vẫn còn leak:
    Mã:
    [B]            Set MovePointKK[(Custom value of (Picked unit))] = (Position of (Picked unit))[/B]
                Set MovePointKK[(Custom value of (Picked unit))] = (MovePointKK[(Custom value of (Picked unit))] offset by 30.00 towards AngelKK[(Custom value of (Picked unit))] degrees)
                Unit - Move (Picked unit) instantly to MovePointKK[(Custom value of (Picked unit))]
                Set DamagingGroupKK = (Units within 100.00 of MovePointKK[(Custom value of (Picked unit))] 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 (Picked unit))) Equal to T
                Custom script:   call RemoveLocation(udg_MovePointKK[GetUnitUserData(GetEnumUnit())])
    Edit:
    Mã:
                Set MovePointKK[(Custom value of (Picked unit))] = (Position of (Picked unit))
                Set MovePointKK2[(Custom value of (Picked unit))] = (MovePointKK[(Custom value of (Picked unit))] offset by 30.00 towards AngelKK[(Custom value of (Picked unit))] degrees)
                Unit - Move (Picked unit) instantly to MovePointKK[(Custom value of (Picked unit))]
                Set DamagingGroupKK = (Units within 100.00 of MovePointKK[(Custom value of (Picked unit))] 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 (Picked unit))) Equal to T
                Custom script:   call RemoveLocation(udg_MovePointKK[GetUnitUserData(GetEnumUnit())])
                Custom script:   call RemoveLocation(udg_MovePointKK2[GetUnitUserData(GetEnumUnit())])
    _Xem lại phần Trigger1, chưa nhét vào thẻ CODE.
    _+REP vì đã bỏ công sức để viết Tut này.
     
  11. ShadowThanatos

    ShadowThanatos -|--Soul Reaper--|-

    Tham gia ngày:
    23/2/09
    Bài viết:
    2,119
    Nơi ở:
    Horror Depht
    .. Bạn có thấy là anh Tom có chỉ cách làm skill Storm Hammer MUI không? Cái đó đó, mình áp dụng cách đó cho nhìu spell khác và kết quả rất mỹ mãn :D
     
  12. WordEditor

    WordEditor C O N T R A

    Tham gia ngày:
    8/9/08
    Bài viết:
    1,509
    Nơi ở:
    Leaf Village
    Phải set mấy biến point, angle, skill lv,... để không leak à :-o, thế thì dễ lẫn lộn thật ( hèn gì map mình leak thật >"< )
    Thường thì trigger 2 mình làm theo Integer A, B không biết có dễ hơn không :D
    Chỉ sợ set nhiều nó nặng map thôi =="
     
  13. game_war48

    game_war48 Dragon Quest

    Tham gia ngày:
    7/9/08
    Bài viết:
    1,320
    Nơi ở:
    Ice City
    Nặng map? Cái đấy chả tốn đến nổi 0,000000001 bytes đâu=)).
    Chỉ có những biến này mới gây leak:
    Mã:
    Point
    Region
    Player Group
    Unit Group
    Floating Text
    Timer
    Effect
    Weather
    P/s: Kiểu Integer A, Integer B là dùng Timer, nó có tên gọi chứ có phải kô có đâu mà.
     
  14. kickboy00

    kickboy00 Mr & Ms Pac-Man

    Tham gia ngày:
    12/4/09
    Bài viết:
    164
    @ game_war : /:) a nhầm hàng à e sửa lại rồi có bị leak đâu.A nhầm rồi đấy.Để KK mới đúng.Tức là cái trước sẽ đè cái sau -> dữ liệu cái trước thay vào đó là cái sau.Sau đó đã remove cái sau rồi =)).Chắc tại read nhanh quá mà không chịu suy nghĩ đây (:|:-? /:)
     
  15. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    >dữ liệu cái trước thay vào đó là cái sau
    "thay" vào là thay vào variable chứ cái cái cũ thì vẫn ở đó, chết đi đâu ?

    ví dụ:
    set point = position of <unit> <- chiếm 1KB nhá (đây chỉ là ví dụ)
    set point = point offset by... <- chiếm 1KB nữa nhá

    -> 2 KB

    Custom Script: call RemoveLocation( udg_point )

    đây chỉ xóa point vừa mới đặt -> lấy lại đc 1KB
    -> còn 1KB nữa đâu rồi ?
     
  16. kickboy00

    kickboy00 Mr & Ms Pac-Man

    Tham gia ngày:
    12/4/09
    Bài viết:
    164
    Ồh thì ra là thế.Mà sao e post chủ yếu về MUI mà toàn sửa leak thế nhỉ :|...Thôi để e sửa lại vậy :(
    ----------------------------------------------------
    dã fix cái leak cuối cung #:-s
     
  17. rongdoVN

    rongdoVN Space Marine Doomguy Lão Làng GVN

    Tham gia ngày:
    6/9/05
    Bài viết:
    5,674
    Nơi ở:
    TS-Pri GameVN
    hướng dẫn cho người ta sai , giờ anh em chỉ cách fix lại mà còn kêu ca à ?
    mà làm MUI kiểu này rắc rối thật đó :-*
     
  18. virtualman

    virtualman Trùm Design GVN Lão Làng GVN

    Tham gia ngày:
    15/8/06
    Bài viết:
    3,951
    Nơi ở:
    Ha Noi, Vietnam,
    Thế làm MUI kiểu nào là đơn giản và nhanh gọn nhất cho GUI Đây các bác :|
     
  19. game_war48

    game_war48 Dragon Quest

    Tham gia ngày:
    7/9/08
    Bài viết:
    1,320
    Nơi ở:
    Ice City
    Kiểu này rất đơn giản nhưng kiểu Timer còn đơn giản hơn nữa=)).

    P/s: VM cái tội post bài về thằng bệnh ấy trong box TG bị quăng tạ như đúng rồi=)).
     
  20. ducthai

    ducthai Donkey Kong

    Tham gia ngày:
    27/2/06
    Bài viết:
    334
    Nơi ở:
    Biên Hòa - Trảng Bom
    chà xem qua bài viết của bạn Kickboy00 thấy khá là hữu ích đó , mình ko giỏi về MUI spell nên mình có thể nhờ 1 ai đó giỏi làm hộ 1 spell MUI đơn giản cho mình tham khảo cách làm MUi đc ko :P
    Cụ thể ở đây là mình muốn nhờ làm MUI spell Blink strike của Phantom Assasin hay RIkimatu (2 con sài chung 1 spell) spell này cách làm khá đơn giản với GUI nhưng MUI thì mình ko bít , xin hướng dẫn tỉ mỉ về mấy cái Biến và giải thích rõ ràng tại sao phải như vậy giùm mình nhé :P
     

Chia sẻ trang này