Giới Thiệu RPG MAKE XP RPG Maker XP (RMX) là một công cụ chuyên dụng cho việc tạo Game thể loại nhập vai (Role-Playing Games). Bất kì Game nào được tạo ra từ RMX đều có thể tự do sử dụng theo ý thích của tác giả mà không phạm vào bất kì điều luật nào về bản quyền. * Hình ảnh tuyệt vời: bạn có thể sử dụng chế độ màn hình 32 bit lên đến 640 x 480 Pixels. Hình ảnh được xử lý cao dẫn đến sự mượt mà không thể chê vào đâu được. Hiệu ứng pha trộn giúp ảnh trông thật hơn và các mép ảnh trở nên nhẵn không như các phần mềm trước đó... * Âm thanh sống động: tích hợp nhạc nền và Sound giúp cho Game của Bạn thêm phần lý thú. Bạn cũng có thể sử dụng nhạc nền, Sound của riêng mình nếu thấy cung cấp của RMX là chưa đủ. Với dàn âm thanh này, người chơi sẽ không bao giờ thấy nhàm chán khi chơi Game do bạn tạo ra. * Mạnh hơn nữa với RGSS: RMX cung cấp cho bạn thêm phần ngôn ngữ RGSS (Ruby Game Scripting System). Với các Script có sẵn hoặc tự viết, bạn có thể tùy biến trò chơi của mình thêm phần phong phú, tiên tiến và linh hoạt hơn. Đây chính là phần mà mà RMX khác xa các phần mềm khác và vượt trội hơn hẳn RPG Maker 2003. * Một yếu tố tuyệt vời của RMX nữa chính là: bạn có thể tạo ra một trò Game HOÀN TOÀN bằng tiếng Việt có dấu! Cài Đặt Cài đặt Bạn tải RMX tại địa dây: [DOWNLOAD]http://www.mediafire.com/download.php?yvftyeyztzm[/DOWNLOAD]- 30 MB, giải nén ra và chạy "SetupMenu.exe", một hộp thoại xuất hiện: (Giao diện của SetupMenu) Nhấn vào "Cài đặt RGSS-RTP Standard (cài trước tiên)" để cài đặt trước RGSS, sau đó tiếp tục nhấn vào "Cài đặt RPG Maker XP" để cài tiếp RMX. Xong xuôi nhấn Thoát. Nếu các nút bấm không hiện tiếng Việt là do máy thiếu Font. Bạn hãy dow file này về http://www.mediafire.com/download.php?0nglmvxljzdcoppy toàn bộ vào thư mục C:\Windows\Fonts Nút điều khiển RPG Maker Game được tạo ra từ RMX sử dụng 8 nút điều khiển ứng với các thành phần dưới đây: Di chuyển sử dụng cần điều khiển (Gamepad ) hoặc các phím mũi tên (Keyboard). Để tùy chỉnh màn hình, âm thanh, đổi nút điều khiển, Bạn nhấn F1 trong khi đang chơi Game hoặc đang Test Game: (Hộp thoại tùy chỉnh khi nhấn F1) Để hiển thị số Frame (40 FPS là lớn nhất, lúc này tốc độ chơi Game là tuyệt vời nhất), Bạn nhấn F2. Lưu ý chức năng này chỉ có tác dụng khi đang Test Game. Để trở lại Titlescreen, bạn nhấn F12. Tóm lại, xem bảng các nút điều khiển dưới đây sẽ rõ: Crack RPG MAKE XP Nếu máy bạn có kết nối Internet thì nên đăng kí bản quyền = Keygen. Cách đăng kí rất đơn giản, làm theo các bước có hình minh họa dưới đây: - Vào Start >> Programs >> RPG Maker XP. Nhấn vào Already Paid. - Nhấn tiếp vào Generate. - Mở Keygen lên >> Copy lại dãy số Serial. - Sang RMX >> Paste Serial Number vào đúng 4 ô của RMX >> nhấn Web. - Nhấn tiếp vào Print URL. - Copy dòng địa chỉ hiện ra. - Dán vào Activation URL của Keygen >> nhấn nút Generate. - Copy dãy số từ Activation Code. - Trở lại RMX >> nhấn Cancel 2 lần >> nhấn Enter Activation Code >> Paste đoạn Code Copy bên Keygen vào Activation Code của RMX >> Nhấn OK. - Nó hiện ra hình này là OK Chỉnh Ngôn Ngữ Việt Có Dấu Với RPG Maker XP, Bạn có thể tạo ra một Game HOÀN TOÀN BẰNG TIÊNG VIỆT. Để thực hiện được điều đó, Bạn cần điều chỉnh Font chung cho RMX: - Nhấn F11 >> ở cửa sổ Script Editor mới hiện ra, bên trái là tên Script, bên phải là nội dung của nó. - Tìm Script có tên là Main (nằm ở cuối) >> Copy nội dung sau dán vào ngay sau begin (nên xuống 1 hàng cho đẹp ^^). Mã: $defaultfonttype = $fontface = Font.default_name = $fontname = [".VnArial", ".VnTimes"] $defaultfontsize = $fontsize = Font.default_size = 21 (Script Main sau khi đã chỉnh Font, kích cỡ Font chung) Giờ thì đã hiển thị được tiếng Việt rồi đấy! Chúng ta tiến hành thử lại xem sao nhé: Nhấn F8 >> nhấp đúp vào ô nào đó tạo 1 Event >> đặt vào đó lệnh "Show Text..." (lệnh đầu tiên ở trang 1) và dùng VietKey để gõ tiếng Việt thôi! Điều chỉnh VietKey như hình: (Bảng mã của VietKey phải đúng như hình mới gõ được tiếng Việt) Hoặc nếu bạn dùng Unikey: (Bảng mã của Unikey phải đúng như hình mới gõ được tiếng Việt) Nếu chưa biết cách tạo Event, Bạn nên đọc bài "Event" trước khi tiếp tục. Khi tiến hành gõ tiếng Việt, nó hiện ra những kí tự hầm bà lằng gì thì mặc kệ nó, lúc vào chơi sẽ hiện đúng tiếng Việt thôi! [ (Gõ tiếng Việt trong "Show Text" hiển thị những kí tự nhảm nhí ) (Lúc vào chơi hoặc Test Game hiện tiếng Việt bình thường) Khi mới bắt đầu Game tức ở TitleScreen, Bạn sẽ thấy các tùy chọn "New Game".... Khi vào chơi, Nhấn phím "X" Bạn cũng sẽ thấy Menu điều khiển của Game và tất nhiên tất cả đều là tiếng Anh. Bạn phải tiến hành Việt hóa cấu trúc thôi. RMX cung cấp sẵn cho Bạn một số mục cơ bản cần Việt hóa, chúng nằm trong thẻ "System" của Database (nhấn F9 >> System). Trước khi tiếp tục, Bạn nên đọc bài "Database" đoạn hướng dẫn thiết lập System. Tuy nhiên, sau khi đã tiến hành sửa đổi các mục trong Database, nhấn F12 Test thử Bạn vẫn thấy TitleScreen và một phần của Menu điều khiển (từ Status trở xuống) vẫn chưa được Việt hóa. Để Việt hóa được chúng, Bạn cần xâm nhập vào Script Editor và sửa đổi. Dưới đây là các bước chung để sửa đổi trong Script Editor: - Nhấn F11 vào Script Editor. - Nhấn tổ hợp phím "Ctrl + Shift + F" để bật chức năng tìm kiếm trong toàn bộ Script Editor, gõ vào đó các từ tiếng Anh mà Bạn nhìn thấy khi Test Game và đặt nó vào giữa 2 dấu ", nhấn "Start Search" để tìm thôi. (Tìm kiếm trong toàn bộ Script Editor từ "New Game") - Công việc còn lại là phần của Bạn thôi. Bạn hãy sửa các từ trong cặp dấu " thành tiếng Việt (không biết tiếng Anh thì đến đây nghỉ Make Game được rồi ). - Sau một thời gian tiếp xúc và quen dần với Script Editor, Bạn sẽ biết được Script nào gồm các chức năng nào. Lúc này Bạn chỉ việc tìm thẳng đến tên Script đó ở bên trái >> nhấn "Ctrl + F" để tìm trong nội bộ Script đó các từ cần thiết thì công việc sẽ nhanh chóng và chính xác hơn. VD: "Scene_Title" gồm các thành phần điều chỉnh của TitleScreen... EVENT trong RPG MAKER Event tạm dịch là "sự kiện". Trong bất kì một trò Game nào từ đơn giản đến phức tạp đều phải có các sự kiện xảy ra. Với RMX thì Event là phần quan trọng nhất và cũng là phần xuất hiện nhiều nhất trong Game. Việc tạo các Event cơ bản rất đơn giản, nhưng để tạo được các Event hay thì bạn cần có kinh nghiệm và đầu óc khéo léo để thực hiện. Tạo Event gồm nhiều lệnh liên kết chặt chẽ và thống nhất với nhau sẽ giúp cho Game trở nên liền lạc, dễ hiểu. Event cũng chính là phần biểu thị Game của Bạn có hợp lí hay không. Cách tạo một Event rất đơn giản, bạn chỉ việc nhấn F8 >> nhấp đôi chuột vào bất kì ô vuông nào thì sẽ tạo Event ngay tại vị trí đó. Để thiết lập vị trí nhân vật sẽ xuất hiện đầu tiên, nhấn chuột phải >> Player's Starting Position. (Giao diện khi khởi tạo Event) - Name: tên Event. - New Event Page: tạo trang mới trong cùng Event. - Copy Event Page: sao lại trang Event đang chọn. - Paste Event Page: dán trang Event đã sao. - Delete Event Page: xóa trng Event đang chọn. - Clear Event Page: xóa bỏ tất cả các lệnh trong trang Event đang chọn. - Conditions: nhận các điều kiện, Switch, Selt Switch, Variable, nối các trang của Event lại với nhau. Để hiểu rõ hơn, Bạn đọc bài "Switch và Local Switch" và "Variable". - Graphic: hình ảnh hiển thị của Event. - Autonomous Movement: tự động di chuyển với "Type" là kiểu di chuyển, "Speed" là tốc độ di chuyển và "Freq" là chất lượng di chuyển. - Options: tùy chọn. Ý nghĩa các mục từ trên xuống lần lược là: không cử động, cử động, không quay mặt được, có thể đi xuyên qua, luôn ở trên tầng cao nhất. - Trigger: loại hình Event tức điều kiện để Event thực thi các lệnh của nó. Ý nghĩa các mục từ trên xuống: bấm phím, Hero chạm vào Event, Event chạm Hero, tự thực hiện, chạy song song. - List of Event Comands: các lệnh có trong trang Event. Để biết rõ hơn chức năng của từng lệnh, bạn nên dùng bản Việt hóa Database RPG MAKE XP Database được dịch là "cơ sở dữ liệu". Đây là phần quan trọng mang tính quyết định cho Game của Bạn. Database bao gồm các thông số của từng Hero, Monster, Skill, Item... Thiết lập Database là một công việc đòi hỏi sự kiên trì và cẩn thận. Nếu có bất kì sai sót nào của Database thì Game có thể trở thành... đồ bỏ! VD: thiết lập các chỉ số của Monster quá cao, người chơi sẽ khó lòng vượt qua được; ngược lại nếu qua thấp, họ sẽ cảm thấy nhàm chán và mất cả hứng chơi Game. RMX đã thiết lập mặc định sẵn cho bạn một cấu trúc tương đối hoàn chỉnh và an toàn. Tuy nhiên cũng chính vì vậy mà hầu như 90% Game Maker đều sử dụng nó và từ đó dẫn đến sự trùng lập của các Game được tạo ra từ RMX, mất đi tính chất "độc" và "riêng" mà mỗi Game đều phải đáp ứng cho các Game thủ. Việc chỉnh sửa thông số, thiết lập lại Database thật ra cũng không mấy khó khăn. Tốt nhất bạn cũng nên đọc hết bài này và tự mình làm lại hoàn toàn xem sao! (Thẻ Actor - tùy chỉnh Hero) - Name: tên mặc định ban đầu của Hero. Muốn cho người chơi đặt tên tùy ý, bạn xem bài "Event". - Class: tạm dịch là "nghề nghiệp" vậy. Mục này bạn chọn nghề nghiệp mặc định cho từng Hero, ứng vỡi mỗi nghề sẽ có các tuyệt chiêu và các món đồ riêng. VD: chỉ có phù thủy mới có chiêu băng chưởng và chỉ phù thủy mới xài được gậy phép. - Initial Level và Final Level: cấp độ ban đầu và cấp độ cao nhất mà Hero có thể đạt được. - EXP Curve: điểm kinh nghiệm cho mỗi cấp và khoảng cách tăng dần giữa các cấp. - Charater Graphic: hình ảnh Hero khi di chuyển. - Battler Graphic: hình ảnh của Hero trong trận đánh. - Parameters: các chỉ số cần có trong một Game thể loại RPG. Nếu chưa rõ các chỉ số này, tốt nhất bạn nên chơi hết một loạt Game Final Fantasy của Square Soft (chắc hết năm luôn quá ). - Starting Equipment: các món đồ Hero đeo sẵn khi bắt đầu Game như giáp, vũ khí... Nếu bạn chọn ô "Fixed" thì người chơi sẽ không thể tự thay đổi món đồ đó. (Thẻ Classes - tùy chỉnh chức vụ) - Name: tên nghề nghiệp. bạn cũng đặt tiếng Việt luôn cho đẹp. - Equippable Weapons: những vũ khí mà Hero thuộc nghề này có thể đeo được. VD: kiếm vương thì chỉ cầm kiếm hoặc giả là đao chứ không thể cầm được gập phép. - Position: vị trí của nghề này so với các nghề khác. - Equippable Armor: các loại giáp mà Hero thuộc nghề này có thể mặc được. VD: họ nhà thương không thể nào mặc áo choàng hay đội mũ của phù thủy. - Element Effciency và State Effciency: nghề này có thể chống được các dạng chiêu thức nào, nghĩa là Hero sẽ không bao giờ bị trúng các chiêu đã được bạn chọn. VD: phù thủy hệ lửa thì có khả năng miễn dịch hoàn toàn với các chiêu lửa đánh vào. - Skills to Learn: các tuyệt chiêu học được khi đủ cấp độ yêu cầu, để thiết lập các tuyệt chiêu này, bạn xem hướng dẫn thẻ "Skill" ngay bên dưới. (Thẻ Skills - tùy chỉnh kĩ năng) - Name: tên chiêu thức. - Icon: biểu tượng cho chiêu thức. - Description: chú thích, công dụng của chiêu thức. - Scope: đối tượng tấn công. - Occasion: nơi có thể sử dụng, trong trận đánh, trong Menu điều khiển... - User Animation: hình ảnh chuyển động hiển thị tuyệt chiêu cho Hero xuất chiêu, phần này xem hướng dẫn "Thẻ Animations" phía dưới. - Target Animation: hình ảnh chuyển động hiển thị tuyệt chiêu cho đối tượng bị trúng chiêu. - Menu Use SE: âm thanh khi xuất chiêu. - Common Event: gọi Common Event đã thiết lập sẵn, xem hướng dẫn "Thẻ Common Events". - SP Cost: năng lượng cần dùng. - Power: sức công phá, hiệu lực. Giá trị dương là mất, giá trị âm là tăng lên. VD: Chiêu hồi phục máu thì phải đặt giá trị âm. - ATK-F: tấn công. - EVA-F: tránh né. - STR-F: sức mạnh. - DEX-F: khéo léo. - AGI-F: tốc độ. - INT-F: phép thuật. - Hit Rate: chính xác. - PDEF-F: thủ vật lý. - MDRF-F: thủ phép. - Variance: mức độ chênh lệch "hên xui" tăng hay giảm sức đánh. Tính theo phần trăm của mức gốc. - Element và State Change: nguyên tố trạng thái khi chiêu được tung ra. Chọn một trong 2 mục này đồng thời đặt vào "ATK-F" một giá trị nào đó, nếu đặt 0 thì chiêu đó sẽ không mất máu và điều đó có nghĩa là nó sẽ trở thành chiêu phép thuật; đặt giá trị lớn hơn 0 thì nó sẽ là chiêu kĩ năng. (Thẻ Items - tùy chỉnh đồ dùng) - Name: tên đồ vật. - Icon: biểu tượng cho đồ vật. - Description: chú thích, công dụng của đồ vật. - Scope: đối tượng sử dụng. - Occasion: nơi có thể sử dụng, trong trận đánh, trong Menu điều khiển... - User Animation: hình ảnh chuyển động hiển thị khi Hero sử dụng, phần này xem hướng dẫn "Thẻ Animations" phía dưới. - Target Animation: hình ảnh chuyển động hiển thị cho đối tượng bị sử dụng. - Menu Use SE: âm thanh khi sử dụng. - Common Event: gọi Common Event đã thiết lập sẵn, xem hướng dẫn "Thẻ Common Events". - Price: giá tiền bán trong các cửa hàng. - Consumable: mất đi. Nếu chọn "No" thì món đồ này sẽ dùng hoài không hết. - Parameter và Param Inc: giới hạn chỉ số. Chọn tăng chỉ số nào đó thì điều chỉnh mức tăng ở "Param Inc". VD: đồ vật đó là thuốc thần thì khi uống vào, chỉ số máu của Hero hiện tại đang là 54/100 sẽ tăng lên 54/300, tức là tăng chỉ số gốc. - Rcvr HP %: tỉ lệ phần trăm số máu sẽ hồi phục tính theo chỉ số gốc. - Rcvr HP: số lượng chính xác máu sẽ hồi phục. - Rcvr SP %: tỉ lệ phần trăm số năng lượng sẽ hồi phục tính theo chỉ số gốc. - Rcvr HP: số lượng chính xác năng lượng sẽ hồi phục. - Hit Rate: chính xác. - PDEF-F: thủ vật lý. - MDRF-F: thủ phép. - Variance: mức độ chênh lệch "hên xui" tăng hay giảm sức đánh. Tính theo phần trăm của mức gốc. - Element và State Change: nguyên tố trạng thái khi dùng đồ vật. Chọn một trong 2 mục này đồng thời đặt vào "ATK-F" một giá trị nào đó, nếu đặt 0 thì đồ vật đó sẽ không mất máu và điều đó có nghĩa là nó sẽ trở thành đồ vật phép thuật; đặt giá trị lớn hơn 0 thì nó sẽ là đồ vật kĩ năng. (Thẻ Weapons - tùy chỉnh vũ khí) - Name: tên vũ khí. - Icon: biểu tượng cho vũ khí. - Description: chú thích, công dụng của vũ khí. - Attacker Ainimation: hình ảnh chuyển động hiển thị khi dùng vũ khí xuất chiêu. - Target Animation: hình ảnh chuyển động hiển thị tuyệt chiêu cho đối tượng bị trúng chiêu. - Price: giá tiền bán trong các cửa hàng. - ATK: tấn công. - PDEF: thủ vật lý. - MDEF: thủ phép. - STR+: Sức mạnh. - DEX+: khéo léo. - AGI+: tốc độ. - INT+: phép thuật. - Element và State Change: nguyên tố trạng thái khi dùng vũ khí. Chọn một trong 2 mục này đồng thời đặt vào "ATK-F" một giá trị nào đó, nếu đặt 0 thì vũ khí đó sẽ không mất máu và điều đó có nghĩa là nó sẽ trở thành vũ khí phép thuật; đặt giá trị lớn hơn 0 thì nó sẽ là vũ khí kĩ năng. (Thẻ Armors - tùy chỉnh trang phục) - Name: tên trang phục. - Icon: biểu tượng cho trang phục. - Description: chú thích, công dụng của trang phục. - Kind: kiểu trang phục, có thể là khiên, mũ, giáp hoặc phụ kiện. - Auto State: tự có trạng thái, khi mặc vào, Hero sẽ tự động xuất hiện các trạng thái. - Price: giá tiền bán trong các cửa hàng. - PDEF: thủ vật lý. - MDEF: thủ phép. - EVA: tránh né. - STR+: Sức mạnh. - DEX+: khéo léo. - AGI+: tốc độ. - INT+: phép thuật. - Element Defense và State Defense: phòng thủ được đôi với các nguyên tố và các trạng thái. http://i681.photobucket.com/albums/vv176/meobeo_luoibieng_9x/RPG%20Maker/Database7.gif[/IMG[/CENTER] ] [CENTER](Thẻ Enemies - tùy chỉnh quái vật)[/CENTER] - Name: tên quái vật. - MaxHP: chỉ số máu. - MaxSP: chỉ số năng lượng. - Battler Graphic: hình ảnh của quái vật trong trận đánh. - STR: Sức mạnh. - DEX: khéo léo. - AGI: tốc độ. - INT: phép thuật. - ATK: tấn công. - PDEF: thủ vật lý. - MDEF: thủ phép. - EVA: tránh né. - Attacker Ainimation: hình ảnh chuyển động hiển thị tuyệt chiêu cho quái vật xuất chiêu. - Target Animation: hình ảnh chuyển động hiển thị tuyệt chiêu cho đối tượng bị trúng chiêu. - EXP: điểm kinh nghiệm nhận được khi đánh thắng. - Gold: số tiền nhận được khi đánh thắng. - Treasure: rớt đồ vật, vũ khí, giáp... khi quái vật chết. - Element Effeciency và State Effeciency: chống trạng thái và chống nguyên tố. Nghĩa là quái vật sẽ không bị tổn hại khi sử dụng nguyên tố hoặc trạng thái nào đó. - Action: phương thức và điều kiện tấn công, sử dụng tuyệt chiêu. [CENTER][URL="http://forum.gamevn.com/redirector.php?url=http%3A%2F%2Fi681.photobucket.com%2Falbums%2Fvv176%2Fmeobeo_luoibieng_9x%2FRPG%2520Maker%2FDatabase8.gif"][IMG]http://i681.photobucket.com/albums/vv176/meobeo_luoibieng_9x/RPG%20Maker/Database8.gif[/URL] (Thẻ Troops - tùy chỉnh nhóm quái vật) - Name: tên nhóm quái vật. - Autoname: tự động đặt tên theo tên và số lượng quái vật. - [ED] Battlerback...: sân diễn ra trận đánh khi Test thử. - Battler Test...: vào thử trận đánh với sân đã chọn ở trên. - Battler Event: đặt vào nhóm quái vật các Event, phần này xem bài "Event" để hiểu rõ hơn. (Thẻ States - tùy chỉnh trạng thái) - Name: tên trang thái. - Animation: hình ảnh chuyển động cho trạng thái. - Restriction: hạn chế. - Nonresistance: không thể kháng cự. - Regard as HP 0: xem như đã chết. - Can't Get EXP: không nhận được điểm kinh nghiệm. - Can't Evade: không thể tránh được. - Slip Damage: tăng dần thiệt hại. - Rating: hiệu suất. - Hit Rate %: độ chính xác tính theo tỉ lệ phần trăm. - MaxHP %: tỉ lệ phần trăm lượng máu mất. - MaxSP %: tỉ lệ phần trăm lượng năng lượng mất. - STR %: tỉ lệ phần trăm sức mạnh. - DEX %: tỉ lệ phần trăm khéo léo. - AGI %: tỉ lệ phần trăm tốc độ. - INT %: tỉ lệ phần trăm phép thuật. - ATK %: tỉ lệ phần trăm tấn công. - PDEF %: tỉ lệ phần trăm thủ vật lý. - MDEF %: tỉ lệ phần trăm thủ phép. - EVA: tránh né. - Release Conditions: điều kiện hồi phục. - Element Defense và State Change: chống được nguyên tố và liên hệ trạng thái khác. (Thẻ Animations - tùy chỉnh hình ảnh chuyển động) - Name: tên Animation. - Animation Graphic: hình ảnh hiển thị Animation. - Postition: vị trí hiện. - Frames: tổng số Frames hiển thị hình ảnh. - SE and Flash Timing: âm thanh, hiệu ứng. - Back và Next: chọn Frame trước đó và tiếp theo. - [ED] Battler...: ảnh Hero dùng lúc Test. - Paste Last: dán Frame cuối - Copy Frames...: sao lại Frames - Clear Frames...: xóa Frames. - Tweening...: tự hoàn thành. - Cell Batch...: thay đổi số lượng. - Entrie Slide...: vị trí lệch đi của các hình ảnh. - Play Hit: xem thử khi đánh trúng. - Play Miss: xem thử khi đánh trượt. Phía dưới là các hình ảnh đã chọn ở mục "Animation Graphic". Bạn chọn từng tấm ảnh cho từng Frame để hiển thị. Các Frames nối tiếp nhau sẽ tạo ra hiệu ứng chuyển động. Phần này xấu đẹp là phụ thuộc vào kĩ năng và sự sắp xếp có hợp lí của bạn hay không. (Thẻ Titleset - tùy chỉnh vật liệu xây dưng Map) - Name: tên vật liệu xây dựng Map. - Titleset Graphic: hình ảnh của vật liệu xây dựng. - Autotile Graphic: hình ảnh ngói, đá lát. - Panorama Graphic: nền của Map. - Fog Graphic: sương mù. - Battlerback Graphic: sân đấu. - Passage: cho phép vượt qua hoặc xem như vật cản. - Passage (4dir): hướng có thể qua lại. - Priority: độ cao. - Bush Flag: che khuất. - Counter Flag: đệm lót. - Terrain Flag: địa hình. (Thẻ Common Event - tùy chỉnh Event thường sử dụng) - Name: tên Common Event. - Trigger: dạng Event. - Condition Switch: điều kiện bật Switch. - List of Event Comands: nơi đặt các lệnh của Common Event. Common Event là phần không kém phần quan trọng mà đa số các Game Maker hay bỏ quên. Nó giúp bạn tiết kiệm được rất nhiều thời gian đối với các Event xuất hiện nhiều lần trong Game. Để hiểu rõ hơn, xem bài "Event". (Thẻ System - tùy chỉnh hệ thống) - Intial Party: đội hình ban đầu, tức là số thành viên có trong nhóm Hero khi mới bắt đầu Game. - Element Names: nguyên tố. - System Graphic / BGM / ME / SE: hệ thống. - World: tên hệ thống. Variable RPG MAKE XP Variable Variable dịch xác nghĩa là "biến số" và đó cũng chính là toàn bộ những gì cần hiểu về Variable. Cũng như Switch, Variable cũng dùng làm các Event dạng chuỗi nhưng chuỗi này không xảy ra tức thời liên tiếp mà dựa trên sự dò xét. Cao hơn Switch, Variable có thể thay đổi được giá trị bởi bằng các phép cộng, trừ, nhân, chia bởi bản thân nó là biến mà. Trong bất kì một Game RPG, Variable là phần cần thiết giúp nội dung Game trở nên xuyên suốt và đúng theo cốt Game, không gây sự lộn xộn và nhiều khi bất hợp lí. Với ví dụ phía dưới sẽ giúp bạn hiểu kĩ hơn về Variable và cách sử dụng. VÍ DỤ VỀ GỬI TIỀN CÓ LÃI SUẤT: Ví dụ này là dạng nhà băng đơn giản giúp nhân vật có thể gửi tiền và nhận được lãi suất. Trước tiên bạn cần tạo 1 Event và đặt vào lệnh "Change Gold..." cho tiền Hero để Test, đặt bao nhiêu tùy thích. (Nói chuyện với chị này sẽ nhận đươợ 100 đ để Test) Tạo một Event đặt góc Map hoặc những nơi nhân vật không đi tới được, Event này thuộc dạng chạy song song (Parallel Process) và phần hình ảnh để trống. Đặt vào đó lệnh "Control Variable...", mục Single chọn hàng Variable và đặt tên cho Variable là "Tien", mục Operation chọn dạng "Set" tức đặt vào giá trị xác định, mục Operand chọn "Other" và nhấn "v" chọn "Gold" để Variable này làm nhiệm vụ dò số tiền hiện Hero đang có. (Event dạng song song dò số tiền Hero đang có) Tạo một Event nữa là ông chủ nhà băng sẽ cho phép bạn gửi tiền, tất nhiên lấy hình ông chủ nhà băng rồi! Cho vào Even này lệnh "Show Text..." và "Show Choices...". (Event ông chủ nhà băng, đặt vào lệnh "Show Text..." và lệnh "Show Choices...") Cấu trúc của Event hiện tại gồm hai lựa chọn: - Gửi thì gửi: bạn sẽ đặt vào trong đây các lệnh tiếp theo của nhà băng. - Khỏi đi! Để tiên ăn kem...: bạn đặt vào lệnh "Show Text..." và cho lão chủ nhà băng chửi một câu cho vui. (Khi chọn "Khỏi đi! Để tiên ăn kem..." thì bị lão chủ nhà băng chửi té tát) Các lệnh thực thi khi chọn "Gửi thì gửi": - "Show Text..." cho lão chủ nhà băng nói chuyện và lệnh "Input Number..." để bạn nhập vào số tiền (chọn bao nhiêu kí tự số tùy bạn). (Khi chọn "Gửi thì gửi" thì lão chủ nhà băng bảo nhập vào số tiền cần gửi) - Lệnh điều kiện (Control Branch... ở trang 1 của bảng lệnh) chọn mục Variable và đặt tên là "Nhap", chọn nhỏ hơn hoặc bằng (Less than or Equal to) so với Variable "Tien" của Event dò đã tạo lúc nãy, chọn ô "Set handling when conditions do not apply" để thêm vào lệnh ngược lại. Cấu trúc của Event lúc này sẽ dò theo số tiiền bạn nhập và xảy ra hai trường hợp: + Số tiền nhỏ hơn hoặc bằng với số tiền hiện có: thêm vào đây các lệnh: "Change Gold..." giảm tiền của Hero theo Variable "Nhap". (Giảm tiền theo đúng số đã nhập) "Control Variable..." để đặt thêm một biến mới nữa là "Tong", chọn "Add" (+) và chọn theo Variable "Nhap", tức là lúc này biến "Tong" có vai trò cộng thêm vào số tiền đã nhập. ("Tong" = "Tong" + "Nhap") + Số tiền nhập lớn hơn số tiền hiện có: cho lão chủ nhà băng chửi một câu thôi! (Nhập vào số tiền gửi nhiều hơn hiện có) Như vậy là đã hoàn thành xong việc gửi tiền rồi đấy! Hướng dẫn lằng nhằng khó hiểu nhưng cả Event chỉ có bấy nhiêu lệnh thôi đấy. Thông cảm do người viết hướng dẫn rất "ẹ" môn văn! Từ này giờ chỉ mới gửi tiền thôi chứ chưa hề có... lãi suất. Để có thể nhận được lại suất, bạn cần tạo một Event nữa dạng chạy song song và cho vào đó lệnh "Wait" bao nhiêu tùy thích, rồi lệnh "Control Variable..." cho cái "Tong" = "Tong" x 2 hoặc + thêm bao nhiêu tùy ý. Lúc bấy giờ sau khoảng thời gian quy định (tính theo số Frames ở lệnh Wait) thì tiền sẽ tự động nhân đôi hoặc tăng lên. (Tăng lãi suất lên gấp 2 lần sau 900 Frames) Đã xong việc gửi tiền thì đến lúc phải rút tiền chứ! Đáng ra nên cho mục rút tiền nằm chung với lệnh "Show Choices..." ban đầu nhưng do... quên! Giờ lười sửa lại từ đầu quá! Bạn thông cảm tạo Event khác để rút tiền vậy! Cho vào nó các lệnh: - "Show Text..." như hình bên dưới. (Event máy rút tiền hình... cục đá ) - "Show Choices..." để hỏi xem có muốn rút tiền không. - "Change Gold..." tăng lên theo Variable "Tong".. Vậy là xong rồi đấy! Với cách rút tiền này thì bạn sẽ rút một lần tất cả số tiền mình có cả vốn lẫn lãi suất. Nếu muốn rút từ từ theo ý thích thì cho thêm lệnh "Input Number..." và đặt thêm một Variable cho cái này tên là "Rut". Sau đó cho "Tong" = "Tong" - "Rut". Nói chung là đến đây bạn đã có thể tự làm lấy hết rồi đấy! VÍ DỤ ĐƠN GIẢN VỀ CÁNH CỬA: Với cái nhà băng phía trên thì thật là khó hiểu (thật ra rất đơn giản, chỉ do thằng ngu viết hướng dẫn này không biết cách diễn giải thôi) . Để đơn giản hơn, bạn xem ví dụ về cánh cửa có điều kiện này. Tạo một Event là thằng võ sư, cho vào đó lệnh "Battler Processing..." (trang 3 bảng lệnh) thôi! (nhớ chọn ô "Continute Even When Loser" để được chơi tiếp nếu đánh thua. Đặt vào chỗ điều kiện nếu thắng một Variable tên "Danh" dạng Set và Constant là 1. Cũng Variable đó nếu thua thì sẽ đặt giá trị là 2. (Thiết lập các Variable khi thắng và khi thua) Tạo một Event là cánh cửa và đặt điều kiện "Condition Branch..." cho nó theo Variable "Danh". Nếu "Danh" = 0 thì mở được cửa và co vào, ngược lại nếu khác 0 thì không cho vào. (Điều kiện để cửa mở) Variable thoạt đầu tưởng như rối rắm khó hiểu nhưng thật ra cũng rất đơn giản, nó chỉ là biến số và ta có thể thực hiện các phép gán, cộng, trừ, nhân, chia... tùy theo yêu cầu và tùy thích. Variable được ứng dụng rộng rãi và xuyên suốt nội dung Game. Để có thể làm việc B thì trước hết bạn phải hoàn thành việc A cũng như để có con thì trước hết phải có vợ! (cũng nhiều khi có con trước rồi có vợ sau nữa ). Dùng Variable có thể khiến Game trở nên có nhiều kết thúc hoàn toàn khác xa nhau, giúp Game của bạn thật sự trở nên hấp dẫn đối với các Game thủ. Với Varible, bạn sẽ có thể "lái" người chơi theo đúng kịch bản định sẵn của mình mà không gây ra sự bất hợp lí nào cả. Nói tóm lại, đã học Make Game thì nhất định phải biết dùng biến cơ bản này! Ruby Game Scripting System Ruby Game Scripting System Ruby là ngôn ngữ lập trình cực mạnh sáng tạo bởi Yukihiro Matsumoto vào năm 1993. Cùng với sự ra đời của Ruby On Rails, Framework dựa trên Ruby dùng để lập trình Web, vào năm 2004, Ruby ngày càng được sử dụng phổ biến rộng rãi trên toàn thế giới. Điểm tạo nên sức thu hút lớn ở Ruby là năng suất lập trình rất cao, gấp 5 đến 10 lần so với Java! :-O Công dụng ban đầu của Ruby là lập trình Web. Nhưng do sự mạnh mẽ của hệ thống Coding, sự Logic rất dễ thuộc của từ khóa mà năm 2003, Ruby đã được tích hợp vào công cụ Make Game và dẫn đến sự ra đời của RPG Maker XP. RPG Maker XP ra đời đã thay thế gần như hoàn toàn RPG Maker 2000 và 2003. Một kỉ nguyên mới mở ra cho giới Make Game... Nhờ Ruby mà RPG Maker XP đã vượt trội hơn hẳn so với các công cụ trước đó. Chúng ra có thể thay đổi cấu trúc, tùy biến sản phẩm Game theo ý mình mà không phải bị bó buộc như các phiên bản cũ với các chức năng "bất di bất dịch". Nhưng để có thể sử dụng thành thạo Ruby, bạn bắt buộc phải mày mò học tập và thời gian bỏ ra cho công việc này chắc chắn sẽ gấp nhiều lần khoảng thời gian bạn đã nghiên cứu các chức năng của RPG Maker XP. Các bài hướng dẫn cơ bản dưới đây sẽ phần nào giúp bạn đến gần hơn với Ruby. Tuy nhiên, bản thân người viết bài này cũng chưa hề học qua lớp Ruby chính khóa nào nên khi viết hướng dẫn đã đắn đo sàng lọc những tri thức "chắc và đúng" để tránh sai sót trong quá trình học tập của bạn, chính vì thế mà lượng kiến thức không nhiều. Hãy cùng chúng tôi xây dựng VnRuby nói riêng và nền công nghệ của Việt Nam ngày càng vững mạnh (trích câu phát biểu của "Hội nghiên cứu ứng dụng ngôn ngữ Ruby của Việt Nam" ). Nếu bạn đã học qua Pascal (môn học chính thức trong các trường phổ thông) thì sẽ nhận ra được vai trò của "class...end" cũng tương tự như "begin...end". Điểm khác nhau cơ bản là khi dùng Class, bạn luôn phải kèm theo tên của Class đó. Ở đây định nghĩa một Class mới là "x1" (Ko cần phải dùng các lệnh khi báo như trong Pascal nũa). "def...end" dùng để định nghĩa một Method (hệ thống) mới là "x2". Các lệnh 1, 2,..., n sẽ được thi hành khi Method x2 này được gọi đến do chúng là "con" của thằng "x2" này! Việc thụt lùi ô khi viết Script là rất cần thiết. Nó giúp bạn biết được lệnh nào thuộc Method nào khi có nhiều Method trong cùng một Class, dễ dàng sửa chữa khi Script bị trục trặc và tất nhiên là cũng tăng vẻ thẫm mỹ lên rồi! Cơ bản thì Ruby chỉ có bây nhiêu! (ủa? Sao đơn giản qua vậy? => đã bảo là cấu trúc cơ bản mà). Do không gian chỗ chứa có hạn, thêm nữa là việc viết bài hướng dẫn toàn thể về Ruby từ đầu đến cuối không phải là việc đơn giản mà là cả một dự án E-Book lớn! (nói cách ngắn gọn à trình độ thằng khốn viết hướng dẫn này chỉ có bấy nhiêu thôi ). Chèn script Một vài bạn chưa biết cách add script. Xin xem hướng dẫn sau. Chú ý, đây là cách dùng phổ thông (add trước Main), còn 1 số cript nào dùng đặc biệt sẽ có hướng dẫn sau: 1. Mở rmxp. ấn F11 hoặc chọn Tools --> Script editor để mở bảng Script Editor. Ta có bảng sau: 2. Kick chuột phải vào Main, chọn Insert như sau: IMAGE DIE 3. Sau đó, ta thấy 1 dòng trắng, dòng đó trên Main, bạn ghi tên phía dưới và post nội dung của script vào khung bên phải. IMAGE DIE Chú ý: Một số script sẽ mất tác dụng khi bạn add thêm script mới , vì thế bạn hãy thay đổi vị trí của 2 script đó ,cái dưới lên trên cái trên, cái trên xuống dưới có thể sửa được lỗi. Ruby Scripting Nào chúng ta hãy cùng viết một một số code rất cơ bản. Cốt để chỉ cho các bạn các cú pháp chính và điều khoản ( ^^ tui cũng chả biết dịch thế nào nữa, tra từ điển nó vậy. Nhưng theo tôi hiểu đó là quy định ví dụ như 1 phảI nhỏ hơn 2 đó ^^ ) mà bạn sẽ sử dụng trong hầu hết các script. Hãy bắt đầu bằng một chương trình đơn giản giúp hiển thị một thông báo lên màn hình “ Tôi là một scripter “. Mã: Class Say_Something Def initialize Print “ Tôi là một scripter “ End End Tạo một trang mới bằng script editor, copy/paste đoạn code bên trên vào đó. Nên nhớ, bạn có thể đặt tên trang bằng bất cứ tên gì bạn muốn, nhưng nó nên là một cái tên dễ nhớ. ( Chọn cái tên class đặt cho tên trang, trong trường hợp này ta đặt là Say_Something ). Bây giờ, để test cái script đó, chúng ta cần tạo một event trên map sẽ thực thi script. Trong event này, chọn lệnh “ Call Script “ ( cái tên này có thể khác trong các phiên bản khác nhau nhưng thường thường nó là lệnh cuối cùng ở trang 3 ), và viết cái này vào: Mã: Say_Something.new Và chạy thử game, đến nói truyện với event đó, một thông báo sẽ hiện ra “ Tôi là một scripter “ Đây là phần giải thích cho cái script ( từng dòng một ): Mã: 1 Class Say_Something 2 Def initialize 3 Print “ Tôi là một scripter “ 4 End 5 End Dòng 1: Chúng ta định nghĩa một class mới là “ Say_Something “. Dòng 2: Chúng ta định nghĩa một method mới là “ initialize “. Dòng 3: Chúng ta thêm một dòng code sẽ được thực thi khi method “ initialize “ được gọi Dòng 4: Chúng ta kết thúc method “ initialize “ bằng từ khoá “ end ”. Dòng 5: Chúng ta kết thúc class “ Say_Something “ bằng từ khoá “ end “. Method “initialize” là method mặc định được thi hành khi chúng ta sử dụng cú pháp .new. giống với cái mà bạn đã sử dụng trong event đó. Như vậy, khi bạn khai báo trong “ call script “ câu “Say_Something.new” bạn đã nói với RMXP tạo một trường hợp ( cái này tui cũng chả hiểu thằng dube nó nói instance là gì ) của Say_Something bằng thông Nào chúng ta hãy cùng viết một một số code rất cơ bản. Cốt để chỉ cho các bạn các cú pháp chính và điều khoản ( ^^ tui cũng chả biết dịch thế nào nữa, tra từ điển nó vậy. Nhưng theo tôi hiểu đó là quy định ví dụ như 1 phảI nhỏ hơn 2 đó ^^ ) mà bạn sẽ sử dụng trong hầu hết các script. Hãy bắt đầu bằng một chương trình đơn giản giúp hiển thị một thông báo lên màn hình “ Tôi là một scripter “. Class Say_Something Def initialize Print “ Tôi là một scripter “ End End Tạo một trang mới bằng script editor, copy/paste đoạn code bên trên vào đó. Nên nhớ, bạn có thể đặt tên trang bằng bất cứ tên gì bạn muốn, nhưng nó nên là một cái tên dễ nhớ. ( Chọn cái tên class đặt cho tên trang, trong trường hợp này ta đặt là Say_Something ). Bây giờ, để test cái script đó, chúng ta cần tạo một event trên map sẽ thực thi script. Trong event này, chọn lệnh “ Call Script “ ( cái tên này có thể khác trong các phiên bản khác nhau nhưng thường thường nó là lệnh cuối cùng ở trang 3 ), và viết cái này vào: Say_Something.new Và chạy thử game, đến nói truyện với event đó, một thông báo sẽ hiện ra “ Tôi là một scripter “ Đây là phần giải thích cho cái script ( từng dòng một ): 1 Class Say_Something 2 Def initialize 3 Print “ Tôi là một scripter “ 4 End 5 End Dòng 1: Chúng ta định nghĩa một class mới là “ Say_Something “. Dòng 2: Chúng ta định nghĩa một method mới là “ initialize “. Dòng 3: Chúng ta thêm một dòng code sẽ được thực thi khi method “ initialize “ được gọi Dòng 4: Chúng ta kết thúc method “ initialize “ bằng từ khoá “ end ”. Dòng 5: Chúng ta kết thúc class “ Say_Something “ bằng từ khoá “ end “. Method “initialize” là method mặc định được thi hành khi chúng ta sử dụng cú pháp .new. giống với cái mà bạn đã sử dụng trong event đó. Như vậy, khi bạn khai báo trong “ call script “ câu “Say_Something.new” bạn đã nói với RMXP tạo một trường hợp ( cái này tui cũng chả hiểu thằng dube nó nói instance là gì ) của Say_Something bằng thông Nào chúng ta hãy cùng viết một một số code rất cơ bản. Cốt để chỉ cho các bạn các cú pháp chính và điều khoản ( ^^ tui cũng chả biết dịch thế nào nữa, tra từ điển nó vậy. Nhưng theo tôi hiểu đó là quy định ví dụ như 1 phảI nhỏ hơn 2 đó ^^ ) mà bạn sẽ sử dụng trong hầu hết các script. Hãy bắt đầu bằng một chương trình đơn giản giúp hiển thị một thông báo lên màn hình “ Tôi là một scripter “. Class Say_Something Def initialize Print “ Tôi là một scripter “ End End Tạo một trang mới bằng script editor, copy/paste đoạn code bên trên vào đó. Nên nhớ, bạn có thể đặt tên trang bằng bất cứ tên gì bạn muốn, nhưng nó nên là một cái tên dễ nhớ. ( Chọn cái tên class đặt cho tên trang, trong trường hợp này ta đặt là Say_Something ). Bây giờ, để test cái script đó, chúng ta cần tạo một event trên map sẽ thực thi script. Trong event này, chọn lệnh “ Call Script “ ( cái tên này có thể khác trong các phiên bản khác nhau nhưng thường thường nó là lệnh cuối cùng ở trang 3 ), và viết cái này vào: Say_Something.new Và chạy thử game, đến nói truyện với event đó, một thông báo sẽ hiện ra “ Tôi là một scripter “ Đây là phần giải thích cho cái script ( từng dòng một ): 1 Class Say_Something 2 Def initialize 3 Print “ Tôi là một scripter “ 4 End 5 End Dòng 1: Chúng ta định nghĩa một class mới là “ Say_Something “. Dòng 2: Chúng ta định nghĩa một method mới là “ initialize “. Dòng 3: Chúng ta thêm một dòng code sẽ được thực thi khi method “ initialize “ được gọi Dòng 4: Chúng ta kết thúc method “ initialize “ bằng từ khoá “ end ”. Dòng 5: Chúng ta kết thúc class “ Say_Something “ bằng từ khoá “ end “. Method “initialize” là method mặc định được thi hành khi chúng ta sử dụng cú pháp .new. giống với cái mà bạn đã sử dụng trong event đó. Như vậy, khi bạn khai báo trong “ call script “ câu “Say_Something.new” bạn đã nói với RMXP tạo một trường hợp ( cái này tui cũng chả hiểu thằng dube nó nói instance là gì ) của Say_Something bằng thông báo “ new”; sẽ thực thi method “initialize”. Cái này được áp dụng trong rất nhiều thứ trong Ruby, và việc thụt lề vào là một ý tưởng hay ( nhìn vd bên dưới bạn sẽ hiểu rõ hơn ) Vì vậy, khi nào nó thụt hết lề vào bên trong là bạn đã end hết rùi ( nếu ko test sẽ biết lo gì ^^ ) Nhưng như ta đã nói ở trên, mọi thứ đều là một object ( đối tượng ) nhưng chúng ta lại ko thấy bất kì một đối tượng nào trong cái “ Say_Something “. Thực tế thì chúng ta đã làm một object nhưng nó đã chết ( died ). Bạn có thể viết như sau vào ô “ Call Script “, và mọi thứ vẫn ổn. Mã: My_object = Say_Something.new Nó có cùng một hiệu quả, ở đây ta tạo một object mới tên là “ My_object “ nó sẽ thuộc class “ Say_Something “. Tất nhiên là chúng ta ko chỉ định cho cái object đó hiển thị cái thông báo, nhưng cứ khai báo như thế thì nó lại thích hiển thị ( theo tui hiểu đại khái là như thế chả biết có đúng ko ^^, còn dich ra nguyên văn thì chả hiểu gì đây là câu gốc : “Of course, since our class does nothing except displaying a message, it's kind of useless to specify an object name.”.). Nào, hãy cùng nâng cấp cái “ Say_Something “ của chúng ta như vậy chúng ta có thể sử dụng object một cách tốt hơn, và chúng ta sẽ mở đầu cho “ Arguments “. Thay “ Say_Something “ bằng đoạn code dưới đây: Mã: class Say_Something attr_accessor :greeting attr_accessor :name def initialize(greeting, name) @greeting=greeting @name=name end def say print @greeting + " " + @name end end Và trong cái event ( ở phần đầu đó ), thay cái script trong đó bằng cái này : (Tôi tạo những khoảng cách để các bạn hiểu về nó một cách rõ hơn) Mã: message1=Say_Something.new("Hello", "Alex") message2=Say_Something.new("Hello", "Peter") print message1.name print message2.name message1.say message2.say Nào chạy thử game của bạn, và nói truyện với cái event , bạn sẽ thấy 4 cái bảng thông báo lần lượt. Thông báo đầu tiên sẽ hiển thị tên mà bạn đặt cho object “message1”, tương tự với “message2”. Sau đó, 2 cửa sổ khác sẽ thực thi thông báo “say” mà chúng ta đã nói. “say” là một method trong cái class “Say_Something” của chúng ta. Cái mà bạn vừa tạo ở 2 object, “message1” và “message2”, bây giờ là hai trường hợp ( instances ) của “Say_Something”, nó làm giảm bớt sự lằng nhằng (^^). Nào hãy cùng phân tích cái script của chúng ta, từng dòng một như trên nhé: Mã: 01 class Say_Something 02 03 attr_accessor :greeting 04 attr_accessor :name 05 06 def initialize(greeting, name) 07 @greeting=greeting 08 @name=name 09 end 10 11 def say 12 print @greeting + " " + @name 13 end 14 15 end Dòng 1: Chúng ta định nghĩa một class mới là “ Say_Something “. Dòng 3: Chúng ta định nghĩa một giá trị ATTR, là viết tắt của Attribute ( thuộc tính ). Ruby là một ngôn ngữ rất thông minh ( bằng tui hông ^^ ) chúng ta chỉ cần sử dụng cú pháp ATTR_ACCESSOR để định nghĩa một attribute mới, nó sẽ được đọc và ghi cho tất cả objects được tạo bởi “Say_Something”. Như vậy cái ATTR đầu tiên của chúng ta là “greeting”. Dòng 4: Chúng ta định nghĩa một ATTR tên là “ name ”. Dòng 6: Chúng ta định nghĩa một method mới tên là “ initialize “. Giống như tôi đã nói ở trên, method initialize là method được thực thi đầu tiên khi mà một object được tạo bởi class. Như vậychúng ta thêm “Argument Recevier” ( nhận đối số), bạn có thể hiểu đơn giản là đó là những biến được tham chiếu. Trong trường hợp của chúng ta, những “ argument “ ( hoặc “attribute” ) là “ greeting “ và “ name “. Chúng ta đặt cái argument này bên trong giấu ngoặc và đằng sau method. Dòng 7: ở đây chúng ta định nghĩa một biến instance nó sẽ nắm giữ thông tin được gởi đến “ greeting “. Một biến instance luôn bắt đầu bằng dấu @ ( xe a còng á, zậy trong một class phải có bao nhiêu con a còng mới đủ đây, hic hic, thằng viết ra ruby giàu we’. ^^ Đùa một chút cho lấy lại tinh thần thui, tiếp tục nào ) và nó có thể dùng được trong mọi method của class. Làm như thế ta đã nói với RPG Maker XP rằng lấ giá trị của “greeting” và cho vào “@greeting” để giúp ta sử dụng nó trong các method khác của class. Dòng 8: Tượng tự như dòng 7, nhưng với “name” attribute ( thuộc tính ) Dòng 9: Chúng ta đóng method “ initialize “ bằng từ khoá “END”. Dòng 11: Chúng ta định nghĩa một method mới là “say”. Dòng 12: Dòng code này sẽ thực thi khi mà một object nhận một thông báo “say”. Trong trường hợp này, chúng sẽ hiện ra màn hình giá trị của biến “@greeting” + dấu cách + giá trị biến “@name” ( giống giải trí qua truyền hình quá ^^ ) Dòng 13: Chúng ta kết thúc method “say” bằng từ khoá “END”. Dòng 15: Chúng ta kết thúc class “Say_Something” bằng từ khoá “END”. Nào hãy tiếp tục tìm hiểu dòng code trong cái event nhé : Mã: 1 message1=Say_Something.new("Hello", "Alex") 2 message2=Say_Something.new("Hello", "Peter") 3 4 print message1.name 5 print message2.name 6 7 message1.say 8 message2.say Dòng 1: Chúng ta tạo một đối tượng mới tên là “message1” nó sẽ là một instance ( trường hợp ^^ Lạc Việt nói thế ) của “Say_something”. Tất cả những gì chúng ta làm trong object này đều đã được định nghĩa trong class “Say_something”. Khi chúng ta thêm “ Argument Recevier “ ( ở trên đó, khỏi giải thích lại ) trong method “initialize” trong class “Say_Something” ( Cái Ruby này lằng nhằng thật, hết thằng con lại đến thằng bố ). Chúng ta cần phải gửi giá trị đến cái Arugment đó, nếu không rmxp sẽ đá văng chúng ra ngoài, ko tin à, thử thì biết. Còn để gửi giá trị vào mấy cái argument đó thì bạn nhìn cái dòng 1 trong script của event nhé. ( à mà nên nhớ là đây chỉ là gán giá trị chứ ko thực thi luôn như cái “Say_Something” đầu tiên đâu. Còn tại sao thì bạn cứ hỏi cái thằng làm ra cái Ruby này ấy thằng ấy tên là Yukihiro Matsumoto. ( MK cái tên khó nhớ thế ^^ ). Dòng 2 : Chúng ta tạo một object mới khác tên là “message2”. Dòng 4 : Chúng ta sử dụng lệnh “print” để hiển thị cái tên được lưu trữ trong object “message1”. Và như bạn đã thấy, nó rất đơn giản, bạn có thể truy cập vào object attribute bằng cách sử dụng tên mà bạn đã định trong cái ATTR của class. Dòng 5 : Chúng ta làm tương tự như “message2”. Dòng 7: Chúng ta gửi một thông báo đến object “message1”, cái thông báo đó là “say”. Như vậy RPG MakerXP sẽ lục lọi trong cái class “Say_Something” ( vì bạn đã gán giá trị của cái message1 cho cái class này trước đó ). Một method đã được định nghĩa có tên “say”… Và nó sẽ thực thi những hàm đựơc khai báo trong method đó. Dòng 8: Tương tự như dòng 7 nhé. 7 - Kết thúc Chap 1 Đó. Thể theo nguyện vọng của mấy pa tui đã dịch tiếp, và đến hết chap1. Bây giờ thì mấy pác cứ theo cái này mà làm mấy cái script con con tựa tựa như trên nhé. Repower Đi