Macro - Hướng dẫn | Trợ Giúp | Bàn luận !

Thảo luận trong 'World of Warcraft' bắt đầu bởi hung_war3, 24/10/06.

  1. hung_war3

    hung_war3 http://hungwar.com

    Tham gia ngày:
    15/4/04
    Bài viết:
    9,830
    Nơi ở:
    .::Sky::.
    Keke, hôm nay sever nó bảo trì , đi chơi về đợi sever up lâu quá ! Thấy vấn đề này ít người bàn tới , nên hôm nay mở 1 cái topic nho nhỏ để mọi người bàn luận , thắc mắc nhé !
    Macro Guide - By Hung_war3​

    1- Macro là gì ?
    - Chi tiết tại site của blizzard về macro : http://www.worldofwarcraft.com/info/basics/macros.html
    - Giới thiệu qua 1 chút : Đó là những lệnh đặc biệt , được bạn tự tạo nhằm giúp bạn tiện lợi hơn trong việc chơi wow , và thêm nhiều tính năng tuyệt vời khác :)) .

    2- Macros :
    - Trong game ban gõ /macro hoặc /m để mở thanh công cụ của Macro :
    [​IMG]

    - Để tạo 1 macro mới bạn click vô " New " sau đó chọn Icon cho Macro của mình ! Ok sau khi chọn xong bạn thấy ở dưới có dòng " Macro Command" là viết những code lệnh cho Macro .

    - Ok vậy ta cần biết Macro không thể làm những gì :
    + Không thể làm bạn di chuyển :) .
    + Cast quá 1 spell ( ví dụ : không thể shock + frostNova cùng 1 spell được ! )
    + Sử dụng những dòng lệnh chờ <~~ confuse !
    - Vậy macro có thể làm những gì ??? Oh rất nhiều , đọc típ nào !!!
    3- Basic

    3.1 Targeting ( mục tiêu ) :
    Macro : %t
    Ý nghĩa : Nói tên của mục tiêu bạn đang chỉ tới .
    Ví dụ : Nếu con mob của bạn tên là "Gay Rogue" bạn code 1 macro nhu sau : "/bg Me kiep, %t in our base" khi bạn dùng macro này sẽ có dòng chat nhu sau trong channel BG :"[Battleground]Me kiep, Gay Rogue in our base" <~~ So cool :) .

    3.2 Quest :
    Mệt mỏi với việc đợi cái text quest load hết :) . OK bạn làm như sau :
    Macro : /script AcceptQuest()
    Ví dụ : test thử thì biết :devil: .

    3.3 Spell/Skill :
    Macro : /Cast Spell Name ()
    Ý nghĩa : Cast phép dùng Macro .
    Ví dụ : /Cast ShockWave(Rank 3) hoặc /Cast BackStab(Rank 1)

    3.4 Attack :
    Macro : /Script AttackTarget()
    Ý nghĩa : Tấn công mục tiêu <~~ tương đương với chuột phải !

    3.5 Giúp đỡ :
    Macro : /Assist %t hoặc /Assist PlayerName
    Ý nghĩa : ở đây %t là target hiện thời của bạn , giả sử target của bạn là Tank với tên là GayMan và bạn muốn tấn công mục tiêu mà him đang óanh thì bạn dùng "/assist GayMan" sẽ đưa bạn Target của GayMan đang tấn công .
    3.6 Mục tiêu cuối cùng :
    Macro: /script TargetLastEnemy()
    Ý nghĩa : Giả sử bạn heal thằng nào đó , bạn bị fear , sheep ! Thì sau khi End time speel effec xài cái Macro này sẽ target cho bạnt thằng nào bạn đang attack cuối cùng .

    3.7 Thông tin Enemy :
    Macro: /Script SendChatMessage("Level:"..Unitlevel("target"),"party")
    Ý nghĩa : chỉ lv của Target .
    Macro: /Script SendChatMessage("Class:"..UnitClassification("target"),"party")
    Ý nghĩa : Đặt Class Target vào trong chat box :) .
    ...

    Ok vậy là tạm 1 chút rùi , bài tiếp theo là về cái cực hay là tìm hiểu về Location Item trên Char và Location cái Bag của mình :) .

    1- Tìm hiểu vị trí của Bag :
    ok , bạn xem ví dụ dưới đây :

    ? || [4] [3] [2] [1] [0] ||

    Hy vọng các bro hiểu tui nói gì ở dòng trên , tức là nếu nhìn từ phải sang trái , thì cái BackPack của mình sẽ là ở vị trí số 0 . Lần lượt tiếp theo !

    Tiếp là vị trí các Item trong Bag :
    16 Slot :
    [1] [2] [3] [4]
    [5] [6] [7] [8]
    [9] [10] [11] [12]
    [13] [14] [15] [16]

    14 Slot :
    [1] [2] x x
    [3] [4] [5] [6]
    [7] [8] [9] [10]
    [11] [12] [13] [14]

    Rùi tương tự với những cái khác nhé :) .
    OK vậy ta có item ở Bag 4 Slot 16 là : (4,16) <~ quá đơn giản nhỉ :) .
    Ok tiếp , để sử dụng item ở Bag 4 Slot 16 :
    Macro : /Script PickupContainerItem(4,16)

    Tiếp ta xem , trong character thì cũng có mỗi location cho mỗi item trên char :
    [1] Head
    [2] Neck
    [3] Shoulders
    [4] Shirt
    [5] Chest
    [6] Waist
    [7] Leg
    [8] Feet
    [9] Wrist
    [10] Hand
    [11] Finger
    [12] Finger
    [13] Trinket
    [14] Trinket
    [15] Back
    [16] Main Hand
    [17] Off Hand
    [18] Ranged Wep
    [19] Tabard

    OK sau khi biết loc của item trên char của mình ta có thể làm tiếp theo như sau :
    Macro : /Script PickupInventoryItem(x)
    Ý nghĩa : Thay thế item ở slot x .

    Ok sau khi đọc xong 2 cái loc trên ta sẽ thấy 1 tổ hợp macro khá hay :
    /Script PickupContainerItem(4,16);
    /Script PickupInventoryItem(16);
    Vậy nếu khi đó ta đang dùng Axe thì ở trong Slot 16 bag 4 là Sword thì sẽ thay cho ta Sword vào Main Hand :) .

    3.7 - 1 Macro rất hay cho ai chơi Hunter :
    Macro :
    /Cast Feed Pet
    /Script PickupContainerItem(x,x)
    Khi đó chỉ 1 click là đã cho con Pet của bạn ăn uống ngon lành :wink: .
    Típ :
    Macro :
    /Cast Concussive Shot()
    /Cast PetAttack() ;
    Tuyệt vời dành cho SoloMan .
    Và :
    Macro :
    /Cast Hunters Mark(Rank x);
    /script PetAttack();
    /Cast AutoShot();

    Damn it , sao mình ghét Hunter thế :devil: :devil: .

    3.8 - Warlock nào :
    Macro :
    /Cast Fear(Rank x)
    /Script PetFollow();
    Ok khi đó warlock cast Fear thì con Pet sẽ đứng cạnh bạn chứ không đi theo attack vớ vẩn nữa :) .

    3.9 - Hehe PVP nào :
    Macro :
    /Cast Fear(Rank x);
    /Target [Player Name];
    /Script UseContainerItem(x,x);
    /Script TargetLastEnemy;

    Fear 1 phát , cast bandage rùi attack luôn , OMG !

    Và còn vô vàn , vô vàn nữa :D :D ... và anh em ta bàn luận , góp ý luôn . Cũng sắp tới giờ sever Up rùi , làm cốc cafe cho tỉnh người nào !
    Bài viết do Hung_war3 sưu tầm , dịch và viết lại ! Sao chép đề nghị ghi rõ người viết :D . ( có cátxe không nhỉ ) .

    Ai mà chát nhảm ngoài chủ đề là tớ cảnh cáo đấy nhé !
    Tìm hiểu thêm chỗ này :
    http://forums.worldofwarcraft.com/board.html?forumId=11114&sid=1
     
  2. drhien

    drhien Mr & Ms Pac-Man

    Tham gia ngày:
    1/2/05
    Bài viết:
    237
    Lệnh /script tương đương với lệnh /run :)) type ngắn hơn, dễ hơn
    Tương tự PickupContainerItem(x,y) tương đương UseContainerItem(x,y)
    Macro selfbandage tôi thường dùng là :
    /run TargetUnit("player"); UseContainerItem(0,1); TargetLastEnemy()
    Anh em để ý tôi luôn để bandage ở slot đầu tiên trong backpack (0,1) và lệnh /run chỉ cần type 1 lần, các lệnh cách nhau bằng ; . Khi này /run sẽ tự apply cho tất cả các câu lệnh sau
    Làm sao vừa shock vừa frostnova được Hùng ?? :))
    Theo tôi hiểu thì không thể cast quá 1 spell CÙNG LOẠI lên 1 target, còn khác loại thì ok . Vd :
    Cám ơn Hùng-war đã mở topic này. Tôi rất thích viết macro :))
     
  3. hung_war3

    hung_war3 http://hungwar.com

    Tham gia ngày:
    15/4/04
    Bài viết:
    9,830
    Nơi ở:
    .::Sky::.
    Hehe thanks bro đã trả lời , thì như trên tui đã nói là "Không thể Shock +FrostNova cùng 1 spell được " .

    Thực ra tất cả macro đều được viết dưới dạng mã Lua, còn 1 dòng lệnh rất hay này :D , cực kỳ tuyệt luôn mà tui đang ngâm cứu :
    :D :D :D
     
  4. lightdevil

    lightdevil Space Marine Doomguy

    Tham gia ngày:
    11/3/05
    Bài viết:
    5,748
    Nơi ở:
    Under the sun
    Bây h muốn làm 1 macro cho Shaman
    Thả Binding Totem, hóa ghost wolf rồi chạy thì làm được ko ?
     
  5. hung_war3

    hung_war3 http://hungwar.com

    Tham gia ngày:
    15/4/04
    Bài viết:
    9,830
    Nơi ở:
    .::Sky::.
    cái này phải thế này , bởi có time cast cho cả 2 . Tui nhớ có lệnh SpellCastSuccess thì mình phải để :
    If ... then ... end .

    Để suy nghĩ típ và test thử xem đã lol !
     
  6. _qct_

    _qct_ Legend of Zelda

    Tham gia ngày:
    2/10/05
    Bài viết:
    972
    Nơi ở:
    HCM City
    Basic Scatter Shot

    /script PetPassiveMode()
    /cast Scatter Shot()

    Đổi chế độ Pet sang passive sau đó cát Scatter Shot để con Pet ko attack làm break nó..

    =====================================================

    Kill

    /cast Hunter's Mark(Rank 2);
    /script PetAttack();

    Mark xong, Pet attack luôn.

    =====================================================

    Hunter Melee

    /cast Aspect of the Monkey
    /script PetAttack();
    /script AttackTarget();

    Chuyển sang Aspect of the Monkey khi bị class Melee áp sát :D

    =====================================================

    Intelligent Sting - Smart Sting : cái này hay quá.

    /script if UnitPowerType('target')>0 then CastSpellByName("Scorpid Sting(Rank 2)"); else CastSpellByName("Viper Sting(Rank 1)"); end

    /script if UnitPowerType("target")==0 then CastSpellByName("Viper Sting") else CastSpellByName("Serpent Sting"); end

    Nếu class mình attack là class có Mana (Priest, Mage, Druid - ở chế độ caster, Hunter, Warlock) thì sẽ cast "Viper Sting".. ngược lại các class melee (War, Rogue, Druid - ở chế độ Bear, Cat) sẽ class "Scorpid Sting"

    =====================================================

    Hunter Pull Shots

    /script if IsControlKeyDown() then if (GetNumRaidMembers()>0) then chan="RAID" else chan="PARTY" end CastSpellByName("Arcane Shot(Rank 1)")
    SendChatMessage("--- Incoming: "..UnitName("target").." ---",chan) else
    CastSpellByName("Arcane Shot(Rank 8)") end

    Nếu bạn là puller thì khi dùng macro này sẽ cast Arcane Shot (Rank 1) để ko lấy aggro sau đó thông báo cho Raid (nếu đang ở trong Raid) hay Party là mobs đang đến (lưu ý là khi cast phải đè control) nếu ko đè control nó sẽ cast Rank 8. Bạn có thể bỏ else cuối cùng và bỏ if đầu tiên thì sẽ ko cần đè control khi cast.

    =====================================================

    Pet Care

    /script if (not UnitExists("pet") or UnitHealth("pet")==0) then
    CastSpellByName("Revive Pet"); else if (UnitAffectingCombat("pet")) then
    CastSpellByName("Mend Pet"); else CastSpellByName("Feed Pet");
    PickupContainerItem(2,16); end; end;

    Nếu Pet bạn chết sẽ cast "Revive Pet", nếu Pet bạn đang Combat thì sẽ cast "Mend Pet", nếu Pet bạn out combat thì sẽ cast "Feed Pet" với thức ăn trong bag của bạn (cái này xem lại bài hung_war sẽ hiểu)

    =====================================================

    P/S : Nếu bạn là coder thì những đoạn mã này tương đối dễ, đọc vô 1 chút là hiểu liền... Bạn ko là coder bạn cũng có thể hiểu dễ dàng :D.
    Cám ơn hung_war tui đã bắt đầu hiểu mấy đoạn mã này hehehe. :D.

    Ai là pro có đoạn mã này là thành wá pro luôn :D
     
  7. _qct_

    _qct_ Legend of Zelda

    Tham gia ngày:
    2/10/05
    Bài viết:
    972
    Nơi ở:
    HCM City
    Sinister Strike --> Eviscerate

    /script GCP=GetComboPoints();
    /script if (GCP < 5) then CastSpellByName("Sinister Strike(Rank #") else
    CastSpellByName("Eviscerate(Rank #)"); end

    Khi combo point < 5 thì sẽ cast Sinister Strike, ngược lại nếu đủ 5 point sẽ cast Eviscerate.

    ====================================================

    Bandage Macro for Rogues

    /script UseContainerItem(0,1);
    /script if( SpellIsTargeting() ) then TargetUnit("player"); end

    Macro này chấp nhận cho bạn bandage chính bạn mà ko làm mất combo point trên đối thủ or mobs.

    ====================================================

    Rogue Ambush

    /script GCP=GetComboPoints();
    /cast Ambush(Rank 1)
    /script if (GCP < 2) then CastSpellByName("Sinister Strike(Rank 4") else CastSpellByName("Slice and Dice(Rank 1"); end

    Ambush xong nếu combo point < 2 thì cast Sinister Strike, còn nếu lớn hơn = 2 thì cast Slice and Dice
     
  8. younghero

    younghero Youtube Master Race

    Tham gia ngày:
    8/3/04
    Bài viết:
    59
    macro cho mage di sep ....;)
    >_< 30 ki tu hix
     
  9. WildBodom

    WildBodom Donkey Kong

    Tham gia ngày:
    10/11/04
    Bài viết:
    306
    Nơi ở:
    Hà Nội <3
    cho mày về nhà tắm rửa sạch sẽ, chổng mông lên giường nằm soi gương suy nghĩ lại.
     
  10. WildBodom

    WildBodom Donkey Kong

    Tham gia ngày:
    10/11/04
    Bài viết:
    306
    Nơi ở:
    Hà Nội <3
    thật sự mà nói, theo kinh nghiệm chơi hunter của tớ, các bạn ko nên xài mí cái macro trên, sẽ cản trở rất nhiều trong 1 số trường hợp tế nhị..
    macro, tác dụng của nó thì wa cool rồi, tuy nhiên theo ý kiến cá nhân thì tôi chỉ dùng những macro mang tính tổng quát, dùng được trong mọi tình huống, skill nào đã add vào macro thì ko cần kéo ra nữa(1 phần tác dụng của macro là để dồn nhiều skill vào 1 button, nhằm đỡ tốn chỗ trên skill bar và dễ khiển hơn, dùng macro mà vẫn phải kéo cái skill của macro đó ra thì QQ)!! và ko gây cản trở trong 1 số trường hợp tế nhị mà tui sẽ nói tới sau đây..

    -trước hết là macro đầu tiên, cái nì xài cũng được, ko xài cũng ko sao, vì thứ 1, choi hunter muốn gud thì nen để pet pasive 24/7, thứ 2 chơi hunter hay warlock thì nên xài cái mod tên là smart pet, nó sẽ giúp auto câll pet back khi target của pet bị scater, và hơn thế nữa là cả sheep, gouge, blind, sap, seduce, bomb, etc...

    -macro kill, vậy khi chỉ muốn mark con rogue hay druid trong BG, bạn lại phải câl pet lại à?? hơn nữa pet attack thì chỉ cần ctrl 1.. quá đơn giản =/ lại năng động hơn

    -hunter mele, cái này miễn bàn, cũng đơn giản ko cần thiết phải dùng macro, và ko phải lúc nào cast monkey cũng phải cho pet attack, có thể xác định là phải mele từ truớc thì cast monkey thôi, cho pet xông lên làm chi =/, còn nếu đang phang nhau nó xông vào mele mình, phải chuỷen wa monkey thì lúc đó pet cũng đang attack rồi, đâu cần phải pet attack =/
    còn cái auto attack (tương đương right click) đối với hunter thì đúng xàm, wing clip lúc nào cũng là chiêu đầu tiên phải dùng khi mele, ko cooldown cũng ko bao giờ sợ ko đủ mana, vì nó cần wa it mana LOL

    -intelligent sting, OMG cool vậy ta??!?! lol, thế lúc đang viper sting con priest mà nó định xông về phía mình (chuẩn bị vô cái trap mình đặt trước), thì làm sao đổi wa scorpid sting?? hay là cứ để viper sting cho nó tự break trap?? người ta gọi đấy là tự tay bóp khoái lạc song châu ^^
    nói chung là mấy cái sting cũng rất là đơn giản hok có gì mà phải macro 2 cái sting xàm xi xì ba lú này cả T___T

    -puller: được cái này ghi nhận. CONGRATULATIONS!!!!!
    -pet: .___. lúc out combat mà con pet nó ít máu thì làm sao heal nó nhanh trước khi bị thằng player khác nó giết (con mage casting fire ball for example)??? (gặp tao đi ngnag là em pet xác con mẹ nó định, giết pet thích hơn giết người ^^)


    túm lại, mí cái macro của cậu như khìn.. hok có tính hiệu quả, ko đáp ứng được mục đích của việc sử dụng macro, ko có tính tổng quát, nghĩa là dùng cũng được mà mấy cái skill làm macro vẫn phải kéo ra để xài riêng trong 1 số trường hợp
    túm lại tập 2: cậu còn non và xanh lắm, HÔ HÔ HÔ, còn tuổi đời mênh mông lắm :))
     
  11. WildBodom

    WildBodom Donkey Kong

    Tham gia ngày:
    10/11/04
    Bài viết:
    306
    Nơi ở:
    Hà Nội <3
    macro cho mage.....
    mage có đúng 1 cái macro quan trọng nhất
    /script SpellStopCasting();

    dùng cho blink, iceblock, counterspell ^^ Lưu ý là chỉ dùng cho skill instant cast :D

    ngoài ra hồi trước còn dùng được cái macro sheep, mất bao công sức tìm tòi nghiên cứu, thu thập macro khắp nơi của bọn pro mage coder, giờ blizz nó fix mẹ lại ***** xài được nữa ức lòi fa T____T
    macro đấy tương tự spellstopcasting mà dùng để spam sheep, nếu spell đang cast ko phải là sheep thì cancel để cast sheep, còn nếu đang cast sheep thì giữ nguyên. giờ ***** dùng được nữa blizz fuk face
     
  12. WildBodom

    WildBodom Donkey Kong

    Tham gia ngày:
    10/11/04
    Bài viết:
    306
    Nơi ở:
    Hà Nội <3
    PS: giờ bandage cứ việc right click cái bandage, ko cần macro mẹ gì nữa đâu LOLz try, u ll see :))
    còn bạn hungwar, dm bạn
    cái macro warlock fear bandage của bạn xài được cứ fone cho tớ gọi tớ đến giơ đầu cho mà chặt. fear có phải instant cast đâu!
     
  13. _qct_

    _qct_ Legend of Zelda

    Tham gia ngày:
    2/10/05
    Bài viết:
    972
    Nơi ở:
    HCM City
    Cài này là do tôi sưu tầm thôi, cũng chẳng viết ra dc 1 cái jì hết.. Sưu tầm từ nhiều nguồn thấy cái nào okie thì ghi nhận lại.
    Còn cậu thì pro tui biết, nhưng mà phải nói cho người ta phục chứ ko phải lúc nào cũng "non" "xanh" rồi noob này noob nọ :P. Ko hay chút nào !! .
    Nói chung tui thích trung lập, ko thích ngồi cãi nhau hồi trước giờ cũng chỉ có đọc bài trên này chứ chưa tranh luận jì gay gắt với ai cả. Tại vì sẵn hung_war lập topic nên tôi tìm tòi và post lên cho mọi người thôi. Ai dùng cũng dc ko dùng cũng ko sao :P (vì cũng chẳng phải do tôi viết ra).
    Nếu những lời trên có gì xúc phạm bro thì tôi xin lỗi... ko muốn làm mất hòa khí với nhau. :P Cám ơn đã đọc bài và cho lời bình luận :P
     
  14. WildBodom

    WildBodom Donkey Kong

    Tham gia ngày:
    10/11/04
    Bài viết:
    306
    Nơi ở:
    Hà Nội <3
    :P khi nào rảnh tui làm hunter guide share anh em cùng chia sẻ kinh nghiệm tâm sự với bàn luận chơi ^^
     
  15. RovingGangster

    RovingGangster Donkey Kong

    Tham gia ngày:
    15/11/04
    Bài viết:
    379
    /2 WTS Enchant WEAPON:Crusader,Unholy,Fiery,Icy,25agi,15agi,+9,+7dmg2H,+4dmg1H,+30Spell.BRACER:+24Heal,+4Regen,+9,+7Stam +9Stre. BOOTS:+7Agi,+7Stam. CHEST:+100Mana,+100HP.CLOAK:+15FR,+5Resist,+70Armor.GLOVES:+7Agi,Ridding Skill,+1%Speed.SHIELD:+7Stam....

    That's what macro use for...=))
     
  16. hung_war3

    hung_war3 http://hungwar.com

    Tham gia ngày:
    15/4/04
    Bài viết:
    9,830
    Nơi ở:
    .::Sky::.
    He he với Shamy thì việc dùng Dagger thì đánh với Rogue hay Paly và dùng Mace + Axe khi đánh với class khác <~~ ý kiến của tui thì cần cast RockBiker vào Wep !
    Nhưng dek hiểu sao khi change 1 Dagger + 1 Shield = 2 Hand Mace or Axe cái loc của item không chả lại đúng vị trí .... :\ ...
    Đang bí chỗ này !
     
  17. WildBodom

    WildBodom Donkey Kong

    Tham gia ngày:
    10/11/04
    Bài viết:
    306
    Nơi ở:
    Hà Nội <3
    mún bít macro đổi 2 handed với dual wield hoặc 1 hand + shield mà vẫn giữ đúng vị trí đồ trong bags theo ý mình thì PM YM tớ chỉ cho ^^

    mà truớc hết, dcm hôm nào lấy ppc dơ mồm ra tớ phang con đặc sản giày hongkong vào mồm đã, ấy đì tớ hơi nhiều đấy ^^ con công nhân nghành ^^
     
  18. hung_war3

    hung_war3 http://hungwar.com

    Tham gia ngày:
    15/4/04
    Bài viết:
    9,830
    Nơi ở:
    .::Sky::.
    tao đì mày lúc nào :D :D :D chỉ tao đi mà .... :D hun mày 1 cái nè !! :))
     
  19. Chimcò_vn

    Chimcò_vn Chim Non Moderator Lão Làng GVN

    Tham gia ngày:
    14/7/05
    Bài viết:
    6,448
    Nơi ở:
    SI:7
    haha thằng qtc noob chết mẹ ..... lên đây nói làm chi cho thằng bạn bò nó troll ^^" ! chơi con rogue còn chưa đến đâu bày đặt macro ^^
     
  20. WildBodom

    WildBodom Donkey Kong

    Tham gia ngày:
    10/11/04
    Bài viết:
    306
    Nơi ở:
    Hà Nội <3
    xàm.... tao gặp con hunter nó trong BG còn bị nó kill mấy lần đấy, đừng có đùa :|

    @hungwar: và cho cả những ai cần đến nó ^^
    /script PickupInventoryItem(17);if(CursorHasItem()) then
    PickupContainerItem(2,2);PickupContainerItem(2,1);PickupInventoryItem(16);else
    PickupContainerItem(2,1);PickupInventoryItem(16);PickupContainerItem(2,2);PickupInventoryItem(17);end

    2.1 và 2.2 là vị trí để 2 món dual wield :D, thay đổi lại nếu mún ^^
    macro nì đơn giản dễ hiểu, nên dài, có thằng pro hơn nó làm ngắn xịt, mà teo đọc ***** hiểu -,-''
     

Chia sẻ trang này