[Script] [ACE] [VXA] Tổng hợp các lệnh nho nhỏ bằng script

245

Comments

  • Dang_KhoaDang_Khoa Posts: 3,861Administrators
    XP được bàn nhiều quá rồi nên giờ chẳng còn gì để bàn thêm ^^
  • KangKang Posts: 453Registered
    nên là pj của pác xong là pác lo dọn đồ qua vxa đi hé
  • David ChaseDavid Chase Posts: 1,766Registered
    Dang_Khoa wrote:
    XP được bàn nhiều quá rồi nên giờ chẳng còn gì để bàn thêm ^^

    bởi vậy.. mọi người toàn bàn về VXA không à @_@
  • Focker_cFocker_c Posts: 1,577Registered
    Có lệnh nào để cho Event đi đến 1 tọa độ ko nhỉ ?
  • slucis7593slucis7593 Posts: 544Registered
    @Focker_c: Theo như mình biết thì mặc định của vxa không có.
    Trên mạng mình tìm được script: Galv's Move Route Extras thì có lệnh này.
  • Focker_cFocker_c Posts: 1,577Registered
    Giờ mình muốn trên màn hình luôn hiện một cái window kiểu giống message nhưng nhỏ.
    Trong window ấy hiện một dòng text mà mình muốn.

    Mong giúp đỡ để làm mẫu
  • slucis7593slucis7593 Posts: 544Registered
    Focker_c wrote:
    Giờ mình muốn trên màn hình luôn hiện một cái window kiểu giống message nhưng nhỏ.
    Trong window ấy hiện một dòng text mà mình muốn.

    Mong giúp đỡ để làm mẫu

    Sorry code trước hơi thừa, mình sửa cái này đơn giản hơn

    Bạn tạo 1 class Window kế thừa từ Window_Base như sau (ở đây là class Window_Text)

    [php]
    class Window_Text < Window_Base
    #
    # * Object Initialization
    #
    def initialize
    super(0, 0, 160, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    end
    #
    # * Draw text
    #
    def drawText(i_text, i_color)
    self.contents.clear
    self.contents.font.color = text_color(i_color)
    self.contents.draw_text(4, 0, 120, 32, i_text)
    end
    end
    [/php[/php]]

    Khi vào game bạn chạy script sau:
    [php]
    $wd = Window_Text.new
    $wd.drawText("Xin chào", 12)
    [/php]


    Hàm drawText(i_text, i_color) dùng để vẽ xâu ký tự i_text lên cửa sổ với màu là i_color.
    i_color là số nguyên từ 0 - 31, ở ví dụ trên i_color = 12, nên màu của text giống với ô màu ở vị trí 12 (tính từ trái -> phải, trên -> xuống) tương ứng trong file Graphics\System\Window.png ấy

    Không hiểu dòng lệnh nào bạn cứ bảo, cần thì mình giải thích hết cho :D
  • Focker_cFocker_c Posts: 1,577Registered
    Cái này bên GM Engine nó gọi là lập ra một Function rồi gọi lên khi cần.
    Nhưng vụ kế thừa kia hoàn toàn mới mẻ vs mình :) Để mò mẫm thêm ^^
  • slucis7593slucis7593 Posts: 544Registered
    Focker_c wrote:
    Cái này bên GM Engine nó gọi là lập ra một Function rồi gọi lên khi cần.
    Nhưng vụ kế thừa kia hoàn toàn mới mẻ vs mình :) Để mò mẫm thêm ^^

    :D kế thừa là tính chất của lập trình hướng đối tượng, bạn có thể kiếm sách để tìm hiểu
  • Focker_cFocker_c Posts: 1,577Registered
    Bên GME nó ko có data từ các Window day Database game. Mình phải tự viết ra từ đâu đến cuối. Cho nên khác biệt một chút.
    Giờ thì đã ngộ ra điều này ^^ . Ruby có thể dẫn ra , kế thừa, như vậy sẽ nhanh và đơn giản hơn.
  • Focker_cFocker_c Posts: 1,577Registered
    slucis7593 wrote:
    Focker_c wrote:
    Giờ mình muốn trên màn hình luôn hiện một cái window kiểu giống message nhưng nhỏ.
    Trong window ấy hiện một dòng text mà mình muốn.

    Mong giúp đỡ để làm mẫu

    Sorry code trước hơi thừa, mình sửa cái này đơn giản hơn

    Bạn tạo 1 class Window kế thừa từ Window_Base như sau (ở đây là class Window_Text)

    [php]
    class Window_Text < Window_Base
    #
    # * Object Initialization
    #
    def initialize
    super(0, 0, 160, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    end
    #
    # * Draw text
    #
    def drawText(i_text, i_color)
    self.contents.clear
    self.contents.font.color = text_color(i_color)
    self.contents.draw_text(4, 0, 120, 32, i_text)
    end
    end
    [/php[/php]]

    Khi vào game bạn chạy script sau:
    [php]
    $wd = Window_Text.new
    $wd.drawText("Xin chào", 12)
    [/php]


    Hàm drawText(i_text, i_color) dùng để vẽ xâu ký tự i_text lên cửa sổ với màu là i_color.
    i_color là số nguyên từ 0 - 31, ở ví dụ trên i_color = 12, nên màu của text giống với ô màu ở vị trí 12 (tính từ trái -> phải, trên -> xuống) tương ứng trong file Graphics\System\Window.png ấy

    Không hiểu dòng lệnh nào bạn cứ bảo, cần thì mình giải thích hết cho :D

    Thứ nhất, bây giờ muốn off nó đi, ko hiện nữa thì làm sao ? :)
    Thứ 2, vẫn chưa hiển thị ở tọa độ như mong muốn, câu lệnh call sẽ như : draw_text(x,y,text,color) .

    Mong được giúp đỡ :)
  • Dang_KhoaDang_Khoa Posts: 3,861Administrators
    Trả lời câu 1
    $wd.visible = false
    

    thì nó sẽ ẩn đi

    Không được thì dùng
    $wd.opacity = 0
    

    lệnh trên là đổi độ trong suốt của window (max là 255)

    Trả lời câu 2

    Lệnh
    super(0, 0, 160, 64)
    

    Sửa 0, 0 thành giá trị khác, nó sẽ đổi tọa độ,
    Thật ra các con số đó chính là (x, y, dài, rộng)
  • Focker_cFocker_c Posts: 1,577Registered
    Không thể thay đổi tọa độ ở mỗi lệnh call được hả a ?
    Ví dụ như ở chỗ này em muốn nó hiện ở chỗ này,
    một lúc sau, theo game nó sẽ hiện ở chỗ khác. :D kiểu như vậy ấy.
  • Dang_KhoaDang_Khoa Posts: 3,861Administrators
    Focker_c wrote:
    Không thể thay đổi tọa độ ở mỗi lệnh call được hả a ?
    Ví dụ như ở chỗ này em muốn nó hiện ở chỗ này,
    một lúc sau, theo game nó sẽ hiện ở chỗ khác. :D kiểu như vậy ấy.


    Được, em sửa lại cái initialize như sau:
    def initialize(x, y)
        super(x, y, 160, 64)
        self.contents = Bitmap.new(width - 32, height - 32)
    end
    


    Tạo window bằng lệnh:
    $wd = Window_Text.new(100, 100)
    

    100,100 là tọa độ x, y, em có thể thay bằng số khác tùy ý nhé.
  • Focker_cFocker_c Posts: 1,577Registered
    Công nhận một điều là phức tạp hơn GM Lang ^^


    ___________


    Lại hỏi lại một chút. Draw item ở một tọa độ thì câu lệnh như nào nhỉ ?
    Hỏi ở top nào đó rồi nhưng lục lại 30p ko thấy đâu ... :)
Sign In or Register to comment.