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

Thảo luận trong 'World Editor' bắt đầu bởi Tom_Kazansky, 2/9/12.

  1. Ice_water

    Ice_water Dragon Quest

    Tham gia ngày:
    11/1/07
    Bài viết:
    1,457
    Remove xong thì lần 2 nó đẻ ở đâu ?
     
  2. Ngoc LeO

    Ngoc LeO Mario & Luigi

    Tham gia ngày:
    23/7/06
    Bài viết:
    839
    Nơi ở:
    Nothing...
    Thiếu gì cách để tìm lại point đó hả bạn ? Có cần thiết phải hỏi câu ko cần thiết như vậy ?
     
    Chỉnh sửa cuối: 28/11/12
  3. whisky137

    whisky137 Dragon Quest

    Tham gia ngày:
    7/2/07
    Bài viết:
    1,318
    Trigger này là mình copy ra từ đống Demo spell. Mỗi khi kill quái xong thì nó hồi sinh lại ở vị trí lúc bắt đầu vào map, rất tiện (hsinh ở vị trí Dying unit thì hỏng), hợp với mấy map RPG.
    Mỗi tội cứ đánh độ 20 30 phút là cảm thấy giật giật nhẹ, đến chỗ đông quái có skill thì cứ gọi là nhà mình ngồi cũng chao đảo @@. Exit thì mất độ 20s, ặc ặc.
    Lạ cái là mấy map mình để auto tạo creep tại random point in region khi Hero enter region, quái ra nhiều và bị chết nhanh thôi rồi, ngồi 30p cũng chả thấy giật gì cả mặc dù chẳng remove point.
    Vậy là phải romove thằng Creep_Loc ở trig 2, thằng Creep_Face_Ang mình thấy chả quan trọng, bỏ luôn từ đầu đi :|
    Bác Ngoc Leo đã nói thế thì chỉ cách luôn đi ^^, mà ý bác hình như trig 1 cũng leak ?
     
    Chỉnh sửa cuối: 28/11/12
  4. Evil_Hunter

    Evil_Hunter Mario & Luigi

    Tham gia ngày:
    18/9/11
    Bài viết:
    786
    Nơi ở:
    Evil Forest
    Xem ra bạn vẫn chưa hiểu thì phải!
    Event là một unit die, sau đó sẽ set point, thì cuối action là remove point để tránh leak, thì khi một unit khác chết nó lại tiếp tục làm việc đó, nên ... :|


    Mình đã thử và cảm nhận như thế này, còn bạn thì sao? :@)
    Hồi đó map mình cũng lag lắm, chưa remove leak, kể cả sau khi remove leak vẫn lag như thường, nguyên nhân là do các ability custom base từ thunder clap, shockwave,...
    Và lời khuyên là bạn nên dùng ability Channel
    Tuy nhiên nó chỉ làm skill giả và để trigger thay việc tạo effect, deal dmg thôi. Còn với các ability mà thuộc dạng có sẵn trong war (vd: skill 1 của xạ thủ trong df, nó base từ shockwave đấy) thì nên xài luôn cho đỡ mệt :D
     
    Chỉnh sửa cuối: 28/11/12
  5. Ice_water

    Ice_water Dragon Quest

    Tham gia ngày:
    11/1/07
    Bài viết:
    1,457
    1. Hero xài custom skill vào chỗ quái đông : Thì skill có vấn đề
    2. Creep xài custom skill vào chỗ quái đông : Thì skill có vấn đề
    3. Hero + creep ko xài custom : thi nên nâng cấp máy.

    http://www.thehelper.net/threads/how-to-create-a-creep-revival-system.47054/

    Nếu đã leak thì leak hoàn toàn từ đầu vì đây là các point đã set từ khi vào đầu game.
    Số point leak cũng chỉ bằng số creep có trong map, chứ không giới hạn như các leak khác.
     
  6. whisky137

    whisky137 Dragon Quest

    Tham gia ngày:
    7/2/07
    Bài viết:
    1,318
    Các skill của creep hoàn toàn là skill mặc định có sẵn của Neutral trong war3. Các skill của Hero cũng đa phần là mặc định, còn lại đều ở mức đơn giản, cùng lắm là thay ném búa của Moutan King thành tia sét đập xuống, đã destroys effect, nói chung là ko tìm ra leaks ở chỗ này.
    Việc lag chỉ xảy ra khi chơi độ 20-30p, đặc biệt là lúc đánh với đám quái đông có skill như Chain lightning, Mana burn.
    Nhưng nếu mua lv ngay từ đầu, cho học skill đầy đủ mạng ngang với chơi 30p, lên đánh với bọn quái đấy rất bình thường, vì vậy mình nghi ngờ bị leaks do mấy trig trên.
     
  7. FlameDrake

    FlameDrake Dragon Quest

    Tham gia ngày:
    1/12/10
    Bài viết:
    1,298
    Nơi ở:
    Quận 10 HCM
    Bác nào cho e hỏi, mún làm mất đi cái Button Move của 1 unit thì add skill nào hoặc trigger nào thế ?
     
  8. Drakkar Knight

    Drakkar Knight Mr & Ms Pac-Man Lão Làng GVN

    Tham gia ngày:
    13/11/11
    Bài viết:
    269
    Nơi ở:
    Hà Nội
    Em muốn add nhạc vào map làm sao cho nó cứ phát ngẫu nhiên như nhạc mặc định ấy thì làm thế nào ạ?
     
  9. goldviper

    goldviper Mario & Luigi Lão Làng GVN

    Tham gia ngày:
    7/1/10
    Bài viết:
    747
    Nơi ở:
    Tổ dân phố
    Sao bạn ko remove rồi tạo lại rồi cuối cùng lại remove
    vd :
    Mã:
    set A = trigger unit
             set Point = Loc of A => abcxyz (1 act sử dụng đến Point)  => remove udg_Point
             set Point = Loc of A => abczyz => remove udg_Point
    Shockwave ko hay cho lắm ,nên sử dụng Carrion Swarm nếu với số lượng lớn
     
  10. Daric™

    Daric™ C O N T R A

    Tham gia ngày:
    7/3/12
    Bài viết:
    1,853
    Nơi ở:
    Porizon
    Thật sự thì Ice_water anh ấy nói rất chính xác bạn ko cần lo.
    Việc gán giá trị point ngay từ đầu thật chất chỉ lưu giá trị thôi. Nếu gán đi gán lại nhiều lần trong một đơn vị nhỏ thì mới gây ra leak thôi. Nếu leak thì cũng ko tới cỡ đấy đâu.

    Bây giờ hãy thử bật Process XP và xem dung lượng Private bytes (Vào mục View, Select Column, mục Process Memory và check chọn Private Bytes để xem). Dung lượng tăng nhanh tức là leak rất nhiều. Bạn cần kiểm tra lập tức toàn bộ trigger (bất kỳ).
    Hãy để ý một vùng có quá nhiều con quái vật xuất hiện (tần suất trên 30 con trên 500 range) thì sẽ có thể lag cực độ. Đôi khi việc thực hiện trigger 2 cũng xảy ra lỗi (yên tâm, đã từng sử dụng) nên nó tạo ra hàng trăm triệu con quái cùng kiểu tại một điểm đấy. Vì vậy hãy đưa ra các giải quyết bằng việc đưa các con quái đã chọn từ đầu map và đưa nó vào một nhóm (unit group), ở mục trigger thứ nhì thì chỉ kiểm tra xem quái đấy có thuộc nhóm đã đưa vào hay không. Đúng thì remove nó, xong đợi mấy giây thì hồi sinh.
    Nếu vẫn còn. Thử gán biến giá trị unit-type của loại creep đó vào tiếp giá trị UnitType[Custom Value của unit đã chết] rồi đem ra sử dụng tại trigger 2 (Nói chung các chỗ giá trị sử dụng trực tiếp thế này Create 1 (Unit-type of (Triggering unit)) for (Owner of (Triggering unit)) thì thử gán giá trị gián tiếp xem. :)

    Những việc khởi tạo quái thế này đôi khi sẽ bị lỗi tạo mấy trăm con trong bán kính 1000 range. Và hồi xưa cách giải quyết của mình là.... xóa đi trigger rồi tạo lại, vào chơi thử nếu còn bị thì làm vậy tiếp. Hên xui thì hết :9cool_haha: (<=== Đừng làm theo tui ==! Hết cách thì hẵn)
    Giờ thì tự viết tự xài nên ko còn lỗi, thoải mái vui chơi :9cool_haha:

    Chúc bạn thành công :)

    p.s: Ý của Evil cũng ko hẳn là sai. Một số loại chiêu thức base từ Shockwave hay War Stomp thì khi sử dụng thì "bỗng dưng muốn lag". Vì vậy bạn thử thay đổi các chiêu base từ chúng để cải thiện tốt hơn. Ví dụ : Shockwave thay thế bằng Carrion Swarm, War Storm thay thế bằng Thunderclap hay Fan of Knives
     
    Chỉnh sửa cuối: 28/11/12
  11. Evil_Hunter

    Evil_Hunter Mario & Luigi

    Tham gia ngày:
    18/9/11
    Bài viết:
    786
    Nơi ở:
    Evil Forest
    Cho nó thành building hoặc chỉnh movement type = none và ms speed = 0

    Tìm file nhạc đó, đuôi mp3 hay wav. Sau đó import vào = cách ấn F12, cửa sổ import hiện ra, tiếp đó bấm F5, right click lên file sound vừa import rồi use as sound (hoặc music) rồi nếu muốn cho chơi như nhạc mặc định, việc đầu tiên phải tắt nhạc chính trước đúng ko?
    Mã:
    Untitled Trigger 001
        Events
            Map initialization
        Conditions
        Actions
            Sound - Clear the music list
            Sound - Stop music Immediately
            For each (Integer A) from 1 to 50, do (Actions)
                Loop - Actions
                    Sound - Play ArthasTheme <gen>
                    Wait 300.00 seconds
    
    2 lệnh đầu là dừng nhạc ngay lập tức, lệnh dưới thì chơi bản nhạc đó theo loop thôi, để wait 300s, tức bản nhạc này dài 300s (vd thôi nhé) thi wait nhiêu đó để nó ko bị play chồng lên nhau.
     
  12. DylandKyo

    DylandKyo Donkey Kong

    Tham gia ngày:
    28/10/10
    Bài viết:
    358
    cho m` hỏi:Trong jass
    - làm để nào để move unit every second
    - khi nào dùng library, scope
    - cách tạo skill hình rẻ quạt
    Tks trước
     
  13. Daric™

    Daric™ C O N T R A

    Tham gia ngày:
    7/3/12
    Bài viết:
    1,853
    Nơi ở:
    Porizon
    1. Cách đơn giản:
    Tạo Trigger, cho Event là Every second rồi convert sang Jass
    Nâng cao: Sử dụng system timer utils - Bạn hãy cố gắn tìm timer utils trên google để biết thêm nhiều cách vận dụng nó cũng như cách viết spell từ nó.
    2. Library và scope sử dụng để khai báo một trigger nào đó bao gồm tổ hợp nhiều các function, struct, chứa globals để khai báo các biến sử dụng độc lập hay chung.
    Sử dụng library để viết system hoặc viết spell, thường kèm theo initializer + tên function khởi điểm sau tên library khai báo nhằm kích hoạt.
    scope sử dụng để viết các spell (chưa thấy ai viết sys mà xài scope), nếu trigger convert từ GUI có chứa sẵn event hoạt động thì sau tên scope không cần phải thêm initializer + tên function khởi điểm.
    Library chỉ khác scope ở chỗ scope có thể sử dụng các library và lệnh kêu gọi các function từ trigger khác mà không cần phải khai báo sử dụng lúc mở đầu trigger. Còn library nếu muốn sử dụng lệnh khai báo nằm trong một library khác hay sử dụng một library khác thì cần phải khai báo phía sau lệnh initializer + tên function khởi điểm là requires + tên các loại library cần sử dụng.

    Đọc thêm các tham khảo về Jass tại đây:http://forum.gamevn.com/showthread.php?485055-Tutorial-GUI-to-JASS
    và các chiêu thức tham khảo: http://forum.gamevn.com/showthread.php?216534-Jass-ngon-ngu-co-ban-cua-War-3-Cac-ban-vao-tham-khao
     
    Chỉnh sửa cuối: 28/11/12
    DylandKyo thích bài này.
  14. DylandKyo

    DylandKyo Donkey Kong

    Tham gia ngày:
    28/10/10
    Bài viết:
    358
  15. Meepolisk

    Meepolisk Donkey Kong

    Tham gia ngày:
    8/2/08
    Bài viết:
    336
    cho mình hỏi về Jass

    hàm ForGroup (<group name>, <function B>)

    thì có truyền tham chiếu vào function B được k :| VD như

    ForGroup (g, Function_B(m))

    với m là integer
     
  16. Daric™

    Daric™ C O N T R A

    Tham gia ngày:
    7/3/12
    Bài viết:
    1,853
    Nơi ở:
    Porizon
    khởi tạo 1 multiboard trong 1 function riêng:
    local Multiboard mb = Multiboard.create(1,1)
    call mb.setColumnCount(số lượng cột)
    call mb.setRowCount(số lượng dòng)
    call mb.setTitleText(tên Multiboard muốn tạo, vd "Testv1")
    call mb.setItemValue(cột, dòng, "đoạn hàm") <= chỉnh giá trị chỗ tại vị trí cột, dòng thể hiện nên đoạn hàm
    ...
    call mb.display(true)

    *note: không thể thay đổi phần biến Multiboard trong local Multiboard mb=Multiboard.create(1,1) vì đó là giá trị mặc định từ lib sử dụng rồi. Ngay cả việc viết hoa hết hay thường hết cũng ko.
    Cụ thể cứ xem mục Function list rồi cứ làm như việc tạo một multiboard như thường


    không a à. :)
     
    Chỉnh sửa cuối: 28/11/12
  17. DylandKyo

    DylandKyo Donkey Kong

    Tham gia ngày:
    28/10/10
    Bài viết:
    358
    @Daric: còn fần này - cách tạo skill hình rẻ quạt bác trả lời giúp e lun đc hk?

    thêm nữa, lúc tạo mình thêm phần

    library Myboard initializer Init requires Multiboard

    thì nó báo lỗi, có cần thêm phần đó vào hk
     
    Chỉnh sửa cuối: 28/11/12
  18. Daric™

    Daric™ C O N T R A

    Tham gia ngày:
    7/3/12
    Bài viết:
    1,853
    Nơi ở:
    Porizon
    ^
    báo lỗi ntn? :5cool_ops:

    code làm spell là effect theo rẻ quạt hay missile bay theo hình rẻ quạt? @@
     
  19. DylandKyo

    DylandKyo Donkey Kong

    Tham gia ngày:
    28/10/10
    Bài viết:
    358
    effect theo rẻ quạt

    nó báo lỗi takes nothings returns *** in librarY???

    mà e fải bắt đầu bằng function hay cái j`ạ??? (sr mới học jass học chưa rành lắm )
     
  20. FlameDrake

    FlameDrake Dragon Quest

    Tham gia ngày:
    1/12/10
    Bài viết:
    1,298
    Nơi ở:
    Quận 10 HCM
    K ý thế này, Unit là Hero khi dùng 1 skill thì khóa Button Move của nó 1 thời gian, khi xong skill thì trả lại Button Move cho nó
     

Chia sẻ trang này