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

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

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

    vuongkkk T.E.T.Я.I.S

    Tham gia ngày:
    22/5/10
    Bài viết:
    588
    Nơi ở:
    Hà Nội
    leak và lag
    Leak như kiểu là cái đấy đáng ra không dùng nữa thì phải vất đi nhưng bạn quên mất Sau nhiều lần như thế sẽ thành đống rác dẫn đến lag map.
    Lag là kết quả của việc giảm FPS (frame per second).Con số đó càng lớn thì tức là map càng nuột , mượt và Còn càng ít thì map càng giật, lag.

    @tunghamtien:Tình hình là map em thường xuyên bị fatal error ,trong map có sử dụng system của EGUI , có phải map có nhiều trigger kiểu "Ever x sec làm gì đó " thì sẽ dễ bị fatal ko ?
    Xin thưa là không, nếu fatal eror nghĩa là bạn code lỗi (trường hợp của bạn là system EGUI lỗi)

    Còn việc giảm chỉ số FPS là do 2 vấn đề:
    1. Do bạn xử lý quá nhiều thứ cùng 1 lúc, ví dụ là những cái như kiểu tạo 100 unit cùng lúc hay nhiều hiệu ứng (Special effect) ... Nhiều cái "Ever x sec làm gì đó " rồi mỗi cái làm gì đó của bạn là 1 đống thứ nữa thì không lag hơi phí
    2. Hoặc vấn đề là do cái nêu trên, leak.
    Nếu tốt tiếng Anh thì có thể đọc ở đây

    @tunghamtien: Gần đây em thấy trong topic của PA và 1 số nguồn khác có nói về những system giảm leak như UnitClear ... Có ai có thể giải thích cơ chế hoạt động vào link down ko ?
    ClearUnit á mình thấy bạn tự remove unit còn hơn ,system làm gì nữa.
    Unit chỉ bị leak do 1 số trường hợp unit đấy chết mà model của nó vẫn tồn tại như tome (sách đó) hay doodads model. Còn unit bt có thời gian tối đa xác còn tồn tại trên map (để hồi sinh) rồi nó cũng tự mất đi thôi.

    Cách giảm lag tốt nhất á
    jass + system code, không biết nói gì hơn khi Tom đại ka đã công nhận jass nuột hơn GUI b-)

    Note: trong bất kỳ map nào, gõ /fps ở chỗ chat để coi độ nuột của map đó :)
     
    Chỉnh sửa cuối: 9/5/11
  2. kingghot

    kingghot Mr & Ms Pac-Man

    Tham gia ngày:
    15/4/10
    Bài viết:
    290
    Nơi ở:
    Rach Gia
    Hỏi:

    Làm sao chọn hero giống Map Tổng Hợp 49.0
     
  3. FlameDrake

    FlameDrake Dragon Quest

    Tham gia ngày:
    1/12/10
    Bài viết:
    1,298
    Nơi ở:
    Quận 10 HCM
    Mã:
        Events
            Unit - A unit Starts the effect of an ability
        Conditions
            (Ability being cast) Equal to |cffFFCCCCSlide Dancing|r 
        Actions
            Set SD_Unit = (Casting unit)
            Set SD_TempUnit = (Position of SD_Unit)
            Set SD_TempTarger = (Target point of ability being cast)
            Set SD_Distance = ((Real((Level of |cffFFCCCCSlide Dancing|r  for SD_Unit))) x 10.00)
            Set SD_Angle = (Angle from SD_TempUnit to SD_TempTarger)
            Trigger - Turn on Spell Slide Dancing Move <gen>
            [COLOR="Red"]Wait SD_Distance seconds[/COLOR]
            Trigger - Turn off Spell Slide Dancing Move <gen>
    
    Mã:
        Events
            Time - Every 0.04 seconds of game time
        Conditions
        Actions
            Set SD_TempUnit = (Position of SD_Unit)
            Set SD_TempTarger = (SD_TempUnit offset by SD_Distance towards SD_Angle degrees)
            Unit - Move SD_Unit instantly to SD_TempTarger
    
    Spell gốc Shockwave, hiệu ứng, chọn targer, move tới targer rồi dừng. Ai biết cách chỉnh dòng màu đỏ Wait đó ntn cho khi đến đúng chỗ targer thì Hero dừng lại lập tức ko, để như trên thì Hero nó move thêm 1 đoạn wa chỗ targer mới dừng.
     
  4. 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
    xài Wait có tích họp Conditions trong wait có 3 loại 1 wait game 2 wait 3 wait conditions
    sau đó đặt conditions cần yêu cầu là good :D
     
  5. BooyViip

    BooyViip Mr & Ms Pac-Man GameOver

    Tham gia ngày:
    20/11/10
    Bài viết:
    120
    Nơi ở:
    Hà Nội
    Mấy tháng do có nhiều vấn đề trục trặc nên tới bây giờ mình mới onl được ^^ ( chắc bạn FlameDrake còn nhớ). Còn về cai spell của bạn mình thấy cái dòng: "Wait SD_Distance seconds" HOÀN TOÀN không có ý nghĩa gì cả vì nếu coi như spell lvl 1 thì SD_Distance sẽ là 10. Tốc độ 10 range/ 0.04 s như ở Trigger 2 cho thấy cũng ko phải là nhanh nhưng chờ tới 10s mới ngừng thi quãng đường đi được cũng ko phải là ngắn, đó là chưa kể ở lv 3,4 sẽ chờ 30s, 40s thì hỏng bét.

    Đó là giải thích, còn về ý tưởng, mình có công thức tính :lấy khoảng cách giữa Caster và Target chia cho tốc độ ra thời gian cần phải WAIT (ở đây tốc độ = 1/0.04 x SD_Distance : nghĩa là 0.04s đi đc SD_Distance thì 1s sẽ đi được ngần đó).

    Thật ra cách đơn giản hơn là có thể dùng IF khoảng cách của Caster đến Target chưa đạt tới 0 THEN tiếp tục Move Caster ELSE Caster dừng lại.

    ---------- Post added at 22:31 ---------- Previous post was at 22:23 ----------

    Ah mình cũng có vấn đề cần giải đáp: mình đã ADD Custom Hero vào trong Game Play Constant rồi mà khi thử Test vẫn mua được 3 Custom Hero đó như thường (những Standard Hero kia đương nhiên chỉ mua đc 1 lần).
     
  6. FlameDrake

    FlameDrake Dragon Quest

    Tham gia ngày:
    1/12/10
    Bài viết:
    1,298
    Nơi ở:
    Quận 10 HCM
    Sửa theo Boy luôn rồi, nhưng lần này nó bay còn gê hơn @@ cả ra phần đen, Boy chỉnh lại trong phần trigger dùm luôn đi :D
    P/s: Tiện thể mình hỏi luôn, trigger nào làm cho màn hình rung lên như động đất, như map Lac Viet , mỗi khi đánh sập nhá, dất màn hình nó rung chuyển lên
     
    Chỉnh sửa cuối: 9/5/11
  7. BooyViip

    BooyViip Mr & Ms Pac-Man GameOver

    Tham gia ngày:
    20/11/10
    Bài viết:
    120
    Nơi ở:
    Hà Nội
    Demo Map đây:
    Hì Hì, ngồi 1 lúc thì mình cũng mợi nhận ra là cái cách tính đó chỉ tương đối đúng: bạn cứ để ý khi Slide ở khoảng cách vừa thì ko sao, còn ngắn wa' thì tự nhiên chưa đến đã dừng, dài wa' thì lại trượt wa'. Mình đã tăng thêm 1 tẹo thời gian Wait nhưng cũng không thấy chính xác hơn, nói chung bạn nên dùng lệnh if như mình bảo thì hay hơn, cái đó mai mình sẽ pót sau.
    Còn về cái Code của bạn thì mình nghĩ sai ở Trigger 2, ban phải gán 2 biến khác thay cho 2 biến "Temp_Unit" và "Temp_Target" để làm việc ở Trigger 2 (2 biến "Temp_Unit" và "Temp_Target" quan trọng khi dùng Spell, ko riêng gì spell này những spell khác bạn cũng nên làm vậy, phải để những biến đó tồn tại đến khi hết spell chứ đừng đem ra thay đổi).
     
  8. nhocabc123

    nhocabc123 Youtube Master Race

    Tham gia ngày:
    28/5/09
    Bài viết:
    63
    Ai trả lời giúp với. Reply lần 1.
     
  9. vuongkkk

    vuongkkk T.E.T.Я.I.S

    Tham gia ngày:
    22/5/10
    Bài viết:
    588
    Nơi ở:
    Hà Nội
    @BooyViip:Ah mình cũng có vấn đề cần giải đáp: mình đã ADD Custom Hero vào trong Game Play Constant rồi mà khi thử Test vẫn mua được 3 Custom Hero đó như thường (những Standard Hero kia đương nhiên chỉ mua đc 1 lần)
    Bạn muốn tất cả các hero chỉ mua được 1 lần thì dùng cái này
    Melee Game - Limit Heroes to 1 per Hero-type (for all players)
    Còn muốn chỉnh giới hạn chỉ train 1 số hero cho 1 player thì
    Player - Limit training of Heroes to 3 for Player 1 (Red)
    Còn nếu muốn xác định giới hạn của 1 hero cụ thể cho 1 player cụ thể thì
    Player - Limit training of Footman to 1 for Player 1 (Red)

    @FlameDrake:trigger nào làm cho màn hình rung lên như động đất, như map Lac Viet , mỗi khi đánh sập nhá, dất màn hình nó rung chuyển lên
    Có phải là cái này Camera - Shake the camera for Player 1 (Red) with magnitude 3.00 hoặc Camera - Sway the camera target for Player 1 (Red) with magnitude 10.00 and velocity 0.10
    Rồi dùng cái này để ngưng động đất Camera - Stop swaying/shaking the camera for Player 1 (Red)
    Còn chỉ muốn rung đất 1 vùng thì tạo dummy rồi cast Earthquake (chỉnh area effect để xác định độ rộng vùng động đất)

    Note:
    Đừng dùng wait để tạo slide vì wait là không chuẩn đâu và nhất là với cái này sẽ gặp lỗi nếu muốn MUI

    Slide à. Hỏi làm gì. Không chịu nghe giáo sư Tom giảng bài rồi. Bài giảng về slide đây
     
    Chỉnh sửa cuối: 10/5/11
  10. [DemonPrince]

    [DemonPrince] Youtube Master Race

    Tham gia ngày:
    10/5/11
    Bài viết:
    7
    Vì dmg hiện lên là số máu mất đi của con quái sau hit của mình , vì thế cách làm như sau :[​IMG]
    bất kì 1 spell gây dmg của bạn cũng phải có thêm những bước này :
    - tạo biến a lưu số máu kẻ địch hiện có.
    - gây dmg của spell cho địch.
    - lấy số máu hiện tại của địch - a. dùng hàm abs của math ( absolute - lấy số nguyên ) gán vào biến b.
    ví dụ ban đầu địch có 300 máu, dam spell là 100 , giảm , kháng gì đó thì sau khi gây dmg địch còn 230. nó lấy 230 - 300 = abs(-70) = 70 .
    -dùng floating text cho bay trên đầu kẻ địch , giá trị là b ( là 70 ).

    Vậy dmg mình đánh trúng hiện đúng 70 chứ ko phải damage spell là 100.
    [​IMG]
     
  11. nhocabc123

    nhocabc123 Youtube Master Race

    Tham gia ngày:
    28/5/09
    Bài viết:
    63
  12. BooyViip

    BooyViip Mr & Ms Pac-Man GameOver

    Tham gia ngày:
    20/11/10
    Bài viết:
    120
    Nơi ở:
    Hà Nội
    Mà sao Cái "SlideTick" trong đó chưa được Set bằng cái gì cả? Đồng ý là phải = (Distance giữa Caster và Target)/SD_Distance nhưng mình nghĩ độ chính xác chắc cũng tương đối cái Wait thôi (có thể chính xác trong Distance thấp nhưng Trung Bình hoặc Cao sẽ sai lệch nhiều)
     
  13. DragonKai

    DragonKai Mr & Ms Pac-Man

    Tham gia ngày:
    10/2/11
    Bài viết:
    222
    Cái đó bạn phải dùng đến jassnewgen bạn à
    Rồi mở map mình ra rồi tim chữ UMSWE đánh dấu Enable UMSWE
    Tắt jassnewgen rồi mở lại jassnewgen load map mình lần nữa vào game interface sẽ thấy chữ font
     
  14. BooyViip

    BooyViip Mr & Ms Pac-Man GameOver

    Tham gia ngày:
    20/11/10
    Bài viết:
    120
    Nơi ở:
    Hà Nội
    Trigger 1
    Mã:
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to Slide Dancing 
    Actions
        Set SD_Caster = (Casting unit)
        Set SD_CasterPoint = (Position of SD_Caster)
        Set SD_Point[1] = (Position of SD_Caster)
        Set SD_TargetPoint = (Target point of ability being cast)
        Set SD_Angel = (Angle from SD_CasterPoint to SD_TargetPoint)
        Set SD_Distance = (5.00 x (Real((Level of Slide Dancing  for SD_Caster))))
        Trigger - Turn on Slide Dancing 2 <gen>
    
    Trigger 2
    Mã:
    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 SD_Point[1] and SD_TargetPoint) Greater than or equal to (SD_Distance / 2.00)
            Then - Actions
                Set SD_Point[2] = (SD_Point[1] offset by SD_Distance towards SD_Angel degrees)
                Unit - Move SD_Caster instantly to SD_Point[2]
                Set SD_Point[1] = SD_Point[2]
            Else - Actions
                Trigger - Turn off (This trigger)
    
    Dùng IF như vậy là chính xác đến tuyệt đối :D !
     
  15. FlameDrake

    FlameDrake Dragon Quest

    Tham gia ngày:
    1/12/10
    Bài viết:
    1,298
    Nơi ở:
    Quận 10 HCM
    Đúng là chính xác thật @@ Đúng chỗ targer là stop liền :))
    P/s: Mình để ý có 1 vấn đề khi làm spell ko biết là do leak hay do Dummy, hễ là spell nào mà create nhìu Dummy 1 lượt mà có set dame group, dù remove leak và dummy nhưng sài nhìu lần spell đó, là bắt đầu có triệu chứng lag :| ( mọi thứ trong map cà dựt cà dựt). Ai biết vụ này là do nguyên nhân gì ko :|
    Thanks all rất nhìu vì triggger và HD.
     
  16. vuongkkk

    vuongkkk T.E.T.Я.I.S

    Tham gia ngày:
    22/5/10
    Bài viết:
    588
    Nơi ở:
    Hà Nội
    @BooyViip:Mà sao Cái "SlideTick" trong đó chưa được Set bằng cái gì cả?
    Cái bạn muốn đây hửm, có trong tut rồi mà: "Set SlideTick = 20 //tick = 20, mỗi tick là 0.04 (xem event của trigger Slide) -> cần 20 * 0.04 = 0.8 giây để move xong, tương đương với 0.8s stun ::)"

    @BooyViip:Đồng ý là phải = (Distance giữa Caster và Target)/SD_Distance nhưng mình nghĩ độ chính xác chắc cũng tương đối cái Wait thôi (có thể chính xác trong Distance thấp nhưng Trung Bình hoặc Cao sẽ sai lệch nhiều)
    Bạn của tôi ơi, quên mất vài thứ rồi.
    Thứ nhất là bạn không nên dùng cách đó vì quả thật không chính xác. Thế nên trong tut anh Tom cách ảnh dùng cách tính là "khoảng cách slide = khoảng cách knockback / số tick" vì khoảng cách là real (số thực) nên chả có sai lệch nào ở đây cả.
    Thứ 2 là nếu bạn muốn slide mượt thì sẽ không nên để "khoảng cách slide" cao, nó sẽ tạo cảm giác unit bị giật và di chuyển như thế đồng nghĩa là di chuyển tốc độ cao đó bạn ạ
    Thứ 3 là nếu bạn vẫn dùng cách đó thì cũng chả sao cả, đừng để SD_Distance cao là được, chính bạn cũng biết để cao thì không chuẩn mà ;))
    Còn bạn muốn là slide nuột hơn (với cách anh Tom nhé) thì hãy điều chỉnh cái "SlideTick" để đếm số lần di chuyển đó. Số càng cao nghĩa là càng nhiều bước di chuyển và bước di chuyển càng ngắn tức unit di chuyển càng mượt

    Note:
    theo kinh nghiệm cá nhân thì:
    Với khoảng thời gian giữa các lần di chuyển trong 1 lần slide < 0.3
    Với khoảng cách giữa các bước di chuyển < 30 (dù bất kể cách tính nào thì cố gắng sao cho được như thế này)
    Thì đảm bảo di chuyển sẽ mượt


    @FlameDrake: hễ là spell nào mà create nhìu Dummy 1 lượt mà có set dame group, dù remove leak và dummy nhưng sài nhìu lần spell đó, là bắt đầu có triệu chứng lag :| ( mọi thứ trong map cà dựt cà dựt). Ai biết vụ này là do nguyên nhân gì ko :|
    Sau nhiều lần cast và càng ngày càng lag hơn thì đó chắc chắn là leak. Bạn chỉ nói vậy mà không có trigger hay code thì khó ai giúp được
     
    Chỉnh sửa cuối: 10/5/11
  17. BooyViip

    BooyViip Mr & Ms Pac-Man GameOver

    Tham gia ngày:
    20/11/10
    Bài viết:
    120
    Nơi ở:
    Hà Nội
    Cái hiện Dam mình hỏi nhiều lần rồi nhưng cuối cùng cũng chỉ kết luận là KO có cách nào hiện Dam chính xác cả.
    Cách của bạn nghe thì thấy đúng nhưng nếu Target bị nhiều Unit đánh cùng 1 lúc thì Dam hiện lên sẽ là Dam tổng của Các Unit đó. Hơn nữa hiện 70 dam lên cũng là sai vì tất cả những dam hiện lên ở Spell hay dam vật lý ở Critical Strike đều là giá trị mặc định, chưa tính đến chuyện kháng gì cả.
     
  18. vuongkkk

    vuongkkk T.E.T.Я.I.S

    Tham gia ngày:
    22/5/10
    Bài viết:
    588
    Nơi ở:
    Hà Nội
    Nhớ thêm mấy cái custom script: RemoveLocation() không là leak đấy
     
  19. BooyViip

    BooyViip Mr & Ms Pac-Man GameOver

    Tham gia ngày:
    20/11/10
    Bài viết:
    120
    Nơi ở:
    Hà Nội
    Cách đó chỉ đảm bảo Target bị Stun đúng 0.8s chứ ko đảm bảo khoảng cách Target bị Knockback, đương nhiên với 0.8s Slide thì khoảng cách đều là 1 giá trị nhất định nhưng cái mà bạn FLAMEDRAKE muốn là khi thay đổi khoảng cách Slide thì Spell vẫn đúng.
     
  20. raivor

    raivor Dragon Quest Lão Làng GVN

    Tham gia ngày:
    24/7/09
    Bài viết:
    1,411
Trạng thái chủ đề:
Không mở trả lời sau này.

Chia sẻ trang này