[Script] [ACE] [VXA] Tổng hợp các lệnh nho nhỏ bằng script
Sau đây, mình sẽ giới thiệu những cái mình thu nhặt đc trên mạng về cũng như do mình tự mày mò để các bạn có thể áp dụng cho game của mình hay hơn!
(Hi, now I will show you some "mini" script can make your game more awesome ^^)
[chapter]Mở rộng kích cỡ màn hình[/chapter]
Hiện tại, việc mở rộng kích cỡ màn hình chỉ tối đa là 640x480, các kích cỡ khác phải can thiệp vào Source Code của RPG Maker và như vậy là không-hợp-pháp.
Trước dòng
Bổ sung từ @iPhone69 (chưa test)
[chapter]Việt hoá các dòng lệnh[/chapter]
Ngoài việc việt hoá ở Database(F10)/Terms, hãy vào Scripts(F11)/Vocab để việt hoá
[chapter]Thay đổi tên thư mục chứa Audios/Data[/chapter]
Thay đổi những chữ màu tím ở Scripts/Cache
[chapter]Thay đổi tên file lưu dữ liệu trong Data[/chapter]
Thay đổi những chữ màu tím ở Scripts/DataManager
[chapter]Thay đổi số lượng vật phẩm, vũ khí,... bằng script[/chapter]
Tương tự với weapons/armor, thay $data_items bằng $data_weapons hoặc $data_armors
số lượng: âm -> giảm, dương -> tăng
[chapter]Điều khiển Switch, Self-Switch, Varialbe bằng script[/chapter]
Switch:
Self-Switch:
Ngoài ra có thể dùng lệnh for để điều khiển số lượng lớn
Hoặc
[chapter]Timer[/chapter]
Kiểm tra Timer có hoạt động không
Trả về số giây hiện tại hoặc còn lại của Timer:
Chạy Timer:
Dừng Timer:
Tạm dừng Timer (cần Mini-Script):
Tạm dừng:
[chapter]Nhân vật[/chapter]
Đổi tên nhân vật:
Đổi Nickname:
Đổi Class:
Đổi Level:
Đổi EXP:
Đổi HP:
Đổi MP:
(Có thể dùng các phép so sánh)
Kiểm tra xem có trang bị vũ khí [w_id] không:
Kiểm tra xem có trang bị giáp [a_id] không:
Kiểm tra xem có vật phẩm [i_id] không:
Kiểm tra xem có vũ khí [w_id] không:
Kiểm tra xem có giáp [a_id] không:
Thêm thành viên:
Bớt thành viên:
Dịch chuyển nhân vật:
Lên/Xuống phương tiện:
Điều khiển nhân vật đến vị trí ô (x,y) trên bản đồ hiện tại:
Độ mờ của nhân vật:
Đang giữ phím? :
Đang lặp lại phím? :
Đang bấm phím? :
Toạ độ nhân vật:
Sự kiện [id] có gần nhân vật không? (bán kính 12 ô):
Đổi ảnh thành viên:
Đổi ảnh phương tiện:
[chapter]Truy xuất số lượng[/chapter]
Tiền:
Vật phẩm:
Vũ khí:
Giáp:
Có thể dùng cho phép so sánh ( == , >= , <= , < , > , != ) nhưng KHÔNG dùng trong phép gán
[chapter]Truy xuất thông tin khác[/chapter]
Map ID:
Số thành viên trong nhóm:
Số bước đã đi:
Thời gian đã chơi:
Số lần lưu:
Số lần chiến đấu:
[chapter]Lệnh chờ[/chapter]
[chapter]Ảnh[/chapter]
Hiện ảnh:
Chuyển ảnh:
Xoay ảnh:
Chuyển màu ảnh:
Xoá ảnh:
Thời tiết:
[chapter]Âm thanh[/chapter]
Chạy nhạc:
Dừng nhạc:
Giữ BGM:
Giữ BGM và BGS:
Chạy lại BGM lần nữa:
Chạy lại BGM và BGS lần nữa:
Hiệu ứng Fade:
[chapter]Sự kiện[/chapter]
Gọi Common Event:
Xoá tạm thời event:
Toạ độ sự kiện:
Đổi ảnh sự kiện:
Điều khiển sự kiện di chuyển tới vị trí ô (x,y) trên bản đồ hiện tại:
[chapter]Bản đồ[/chapter]
ID:
Tên:
Hiện tên hay không? :
Đổi Tileset:
Đổi ảnh Parallax:
[chapter]Region ID[/chapter]
Kiểm tra người chơi có trong vùng có ID là [n] không:
Kiểm tra sự kiện [event_id] có trong vùng có ID là [n] không:
[chapter]Chạy Video OGV[/chapter]
[chapter]Nhập tên và tăng giới hạn ký tự[/chapter]
Bỏ hẳn giới hạn ký tự:
Ở Script "Window_NameEdit", Bỏ dòng
[chapter]Cửa hàng[/chapter]
Gọi cửa hàng:
Ẩn hẳn lệnh "Sell" nếu shop được đặt là "Chỉ mua":
[chapter]Mở Cửa sổ lệnh[/chapter]
Mở:
Thoát game:
[chapter]Bỏ lệnh Skill, Equip,... trong menu[/chapter]
Script "Window_MenuCommand", các dòng:
[chapter]Bỏ tab Item/Weapon/Armor/Key Item trong Lựa chọn Item[/chapter]
Script "Window_ItemCategory", các dòng:
[chapter]Hệ thống Message[/chapter]
Hiện Text:
$game_message.face_name = 'Tên ảnh Face'
$game_message.face_index = face_index(0-7)
$game_message.background = [0] Normal, [1] Faded, [2] Transparent
$game_message.position = [0] Normal, [1] Faded, [2] Transparent
$game_message.add("Text")
Nhập số:
Chọn vật phẩm khoá:
Văn bản cuộn:
[chapter]Lệnh điều kiện[/chapter]
Cơ bản:
Nâng cao:
[chapter]Hiệu ứng[/chapter]
Cho nhân vật:
[chapter]Bong bóng Cảm xúc[/chapter]
Cho nhân vật:
[chapter]Hiệu ứng màn hình[/chapter]
Fade Out:
Fade In:
[chapter]Kiểm tra di chuyển[/chapter]
[chapter]Di chuyển nhân vật tới toạ độ x,y[/chapter]
Bổ sung của @TkTs (chưa test)
Bỏ trên Main:
Cách dùng: dùng Script Call sau trong Set Move Route
[chapter]Khác[/chapter]
Tiền tệ hiện tại:
[chapter]Nếu còn...[/chapter]
...sẽ bổ sung sau!
[chapter]Nguồn[/chapter]
Tự tìm hiểu
http://www.rpgmakerweb.com/
http://rpgmaker.net
Và một số nguồn chưa xác định hoặc quên nguồn :v
[chapter]Tổng hợp bởi Kang, Copy xin ghi nguồn![/chapter]
(Hi, now I will show you some "mini" script can make your game more awesome ^^)
[chapter]Mở rộng kích cỡ màn hình[/chapter]
Hiện tại, việc mở rộng kích cỡ màn hình chỉ tối đa là 640x480, các kích cỡ khác phải can thiệp vào Source Code của RPG Maker và như vậy là không-hợp-pháp.
Trước dòng
rgss_main { SceneManager.run }
Dán dòng
Graphics.resize_screen(640, 480)
Bổ sung từ @iPhone69 (chưa test)
keybd = Win32API.new 'user32.dll', 'keybd_event', ['i', 'i', 'l', 'l'], 'v'
keybd.call(0xA4, 0, 0, 0) ; keybd.call(13, 0, 0, 0)
keybd.call(13, 0, 2, 0) ; keybd.call(0xA4, 0, 2, 0)
Giải thích: lệnh này giả lập tổ hợp phím Alt+Enter để fullscreen[chapter]Việt hoá các dòng lệnh[/chapter]
Ngoài việc việt hoá ở Database(F10)/Terms, hãy vào Scripts(F11)/Vocab để việt hoá
[chapter]Thay đổi tên thư mục chứa Audios/Data[/chapter]
Thay đổi những chữ màu tím ở Scripts/Cache
[chapter]Thay đổi tên file lưu dữ liệu trong Data[/chapter]
Thay đổi những chữ màu tím ở Scripts/DataManager
[chapter]Thay đổi số lượng vật phẩm, vũ khí,... bằng script[/chapter]
$game_party.gain_gold(số lượng)
$game_party.gain_item($data_items[id], số lượng)
Tương tự với weapons/armor, thay $data_items bằng $data_weapons hoặc $data_armors
số lượng: âm -> giảm, dương -> tăng
[chapter]Điều khiển Switch, Self-Switch, Varialbe bằng script[/chapter]
Switch:
$game_switches[ID] = true/false
Self-Switch:
key = [map_id, event_id, "A/B/C/D"]
$game_self_switches[key] = true/
Variable: [code]$game_variables[ID]] [phép toán] [Số]
Phép gán (=), Phép so sánh ( == ; > , < , >= , <= , != ), Phép toán ( + , - , * , / , % )Ngoài ra có thể dùng lệnh for để điều khiển số lượng lớn
for i in [số, số, sô,...] (các số không liên tục)
[lệnh]
end
Hoặc
for i in [số đầu]..[số cuối] (các số liên tục)
[lệnh]
end
[chapter]Timer[/chapter]
Kiểm tra Timer có hoạt động không
$game_timer.working?
, trả về true nếu hoạt động, ngược lại falseTrả về số giây hiện tại hoặc còn lại của Timer:
$game_timer.sec
Chạy Timer:
$game_timer.start([Số giây] * Graphics.frame_rate)
Dừng Timer:
$game_timer.stop
Tạm dừng Timer (cần Mini-Script):
Tạm dừng:
$game_timer.pause
Tiếp tục:
$game_timer.resume
Mini-Script: Bỏ vào trước Main
class Game_Timer
def pause
@working = false if @count > 0
end
def resume
@working = true if @count > 0
end
end
[chapter]Nhân vật[/chapter]
Đổi tên nhân vật:
$game_actors[ID].name = [tên]
Đổi Nickname:
$game_actors[ID].nickname = [tên]
Đổi Class:
$game_actors[ID].class_id = [class_id]
Đổi Level:
$game_actors[ID].level = [số]
Đổi EXP:
$game_actors[ID].exp = [số]
Đổi HP:
$game_actors[ID].hp = [số]
Đổi MP:
$game_actors[ID].mp = [số]
(Có thể dùng các phép so sánh)
Kiểm tra xem có trang bị vũ khí [w_id] không:
$game_actors[ID]weapons.include?($data_weapons[w_id])
Kiểm tra xem có trang bị giáp [a_id] không:
$game_actors[ID]armors.include?($data_armors[a_id])
Kiểm tra xem có vật phẩm [i_id] không:
$game_party.has_item?($data_items[i_id])
Kiểm tra xem có vũ khí [w_id] không:
$game_party.has_item?($data_weapons[w_id])
Kiểm tra xem có giáp [a_id] không:
$game_party.has_item?($data_armors[a_id])
Thêm thành viên:
$game_party.add_actor(ID)
Bớt thành viên:
$game_party.remove_actor(ID)
Dịch chuyển nhân vật:
$game_player.reserve_transfer(map_id, x, y)
Lên/Xuống phương tiện:
$game_player.get_on_off_vehicle
(đang lên => xuống và ngược lại)Điều khiển nhân vật đến vị trí ô (x,y) trên bản đồ hiện tại:
$game_player.moveto(x, y)
Độ mờ của nhân vật:
$game_player.transparent = [số]
Đang giữ phím? :
Input.trigger?(Input::A/B/C/X/Y/Z/R/L)
Đang lặp lại phím? :
Input.repeat?(:A/B/C/X/Y/Z/R/L)
Đang bấm phím? :
Input.press?(:A/B/C/X/Y/Z/R/L)
Toạ độ nhân vật:
$game_player.x
và
$game_player.y
Sự kiện [id] có gần nhân vật không? (bán kính 12 ô):
$game_map.events[id].near_the_player? == true/false
Đổi ảnh thành viên:
$game_actors[ID].set_graphic("Tên ảnh", character_index(0=top-left | 1= top-center | ... | 11= bottom-right), "Tên ảnh Faceset", faceset_index(0-7) )
$game_player.refresh
Đổi ảnh phương tiện:
$game_map.vehicles[ID].set_graphic("Tên ảnh", character_index(0=top-left | 1= top-center | ... | 11= bottom-right) )
[chapter]Truy xuất số lượng[/chapter]
Tiền:
$game_party.gold
Vật phẩm:
$game_party.item_number($data_items[ID])
Vũ khí:
$game_party.item_number($data_weapons[ID])
Giáp:
$game_party.item_number($data_armors[ID])
Có thể dùng cho phép so sánh ( == , >= , <= , < , > , != ) nhưng KHÔNG dùng trong phép gán
[chapter]Truy xuất thông tin khác[/chapter]
Map ID:
$game_map.map_id
Số thành viên trong nhóm:
$game_party.members.size
Số bước đã đi:
[code]$game_party.steps
[/code]Thời gian đã chơi:
Graphics.frame_count / Graphics.frame_rate
Số lần lưu:
$game_system.save_count
Số lần chiến đấu:
$game_system.battle_count
[chapter]Lệnh chờ[/chapter]
wait(frame)
[chapter]Ảnh[/chapter]
Hiện ảnh:
screen.pictures[số thứ tự].show( "Tên", [0=top-left|1=center], x, y, width, heigh, opacity, blend type(0-2) )
Chuyển ảnh:
screen.pictures[số thứ tự]].move( "Tên", [0=top-left|1=center], x, y, zoom_width, zoom_heigh, opacity, blend type(0-2) )
Xoay ảnh:
screen.pictures[số thứ tự].rotate(góc) ;=> Có thể tuỳ biến tốc độ, không bị giới hạn
Chuyển màu ảnh:
screen.pictures[Số thứ tự].start_tone_change(Tone.new(R, B, G, Gray), wait)
Xoá ảnh:
screen.pictures[số thứ tự].erase
Thời tiết:
$game_map.screen.change_weather(type(:none, :rain, :storm, :snow), power(0-9), duration)
[chapter]Âm thanh[/chapter]
Chạy nhạc:
RPG::SE.new("SE Name", volume, pitch).play
RPG::ME.new("ME Name", volume, pitch).play
RPG::BGS.new("BGS Name", volume, pitch).play
RPG::BGM.new("BGM Name", volume, pitch).play
Dừng nhạc:
RPG::BGM.stop
RPG::BGS.stop
RPG::ME.stop
Giữ BGM:
$game_system.save_bgm
Giữ BGM và BGS:
BattleManager.save_bgm_and_bgs
Chạy lại BGM lần nữa:
$game_system.replay_bgm
Chạy lại BGM và BGS lần nữa:
BattleManager.replay_bgm_and_bgs
Hiệu ứng Fade:
RPG::BGM.fade(seconds * 1000)
RPG::BGS.fade(seconds * 1000)
RPG::ME.fade(seconds * 1000)
[chapter]Sự kiện[/chapter]
Gọi Common Event:
$game_temp.reserve_common_event(ID)
Xoá tạm thời event:
$game_map.events[event_id].erase
Toạ độ sự kiện:
$game_map.events[event_id].x và $game_map.events[event_id].y
Đổi ảnh sự kiện:
$game_map.events[id].set_graphic("Tên ảnh", character_index(0=top-left | 1= top-center | ... | 11= bottom-right) )
Điều khiển sự kiện di chuyển tới vị trí ô (x,y) trên bản đồ hiện tại:
$game_map.events[ID].moveto(x, y)
[chapter]Bản đồ[/chapter]
ID:
$game_map.map_id
Tên:
$game_map.name
Hiện tên hay không? :
$game_map.name_display = true/false
Đổi Tileset:
$game_map.change_tileset(ID)
Đổi ảnh Parallax:
$game_map.change_parallax("Tên", lặp ngang?(true/false), lặp dọc(true/false), HScroll(số), VScroll(số)])
[chapter]Region ID[/chapter]
Kiểm tra người chơi có trong vùng có ID là [n] không:
$game_player.region_id == n
Kiểm tra sự kiện [event_id] có trong vùng có ID là [n] không:
$game_map.events[event_id].region_id == n
[chapter]Chạy Video OGV[/chapter]
Graphics.play_movie('đường dẫn')
[chapter]Nhập tên và tăng giới hạn ký tự[/chapter]
SceneManager.call(Scene_Name)
SceneManager.scene.prepare(actor_id, số ký tự tối đa)
Fiber.yield
Bỏ hẳn giới hạn ký tự:
Ở Script "Window_NameEdit", Bỏ dòng
42. return false if @index >= @max_char
[chapter]Cửa hàng[/chapter]
Gọi cửa hàng:
[code]goods = [[type, id, price_override_flag(, price)]]
SceneManager.call(Scene_Shop)
SceneManager.scene.prepare(goods, true)
[/code]Ẩn hẳn lệnh "Sell" nếu shop được đặt là "Chỉ mua":
Script "Window_ShopCommand", dòng 33. add_command(Vocab::ShopSell, :sell, !@purchase_only)
Thay bằng:
if !@purchase_only
add_command(Vocab::ShopSell, :sell)
end
[chapter]Mở Cửa sổ lệnh[/chapter]
Mở:
SceneManager.call(scene)
Với scene là Scene_Menu, Scene_Item, Scene_Skill, Scene_Status, Scene_Title, Scene_Save, Scene_Load, Scene_Name, Scene_Debug, v.v...Thoát game:
SceneManager.exit
[chapter]Bỏ lệnh Skill, Equip,... trong menu[/chapter]
Script "Window_MenuCommand", các dòng:
add_main_commands
add_formation_command
add_original_commands
add_save_command
add_game_end_command
add_command(Vocab::item, :item, main_commands_enabled)
add_command(Vocab::skill, :skill, main_commands_enabled)
add_command(Vocab::equip, :equip, main_commands_enabled)
add_command(Vocab::status, :status, main_commands_enabled)
add_command(Vocab::formation, :formation, formation_enabled)
add_command(Vocab::save, :save, save_enabled)
add_command(Vocab::game_end, :game_end)
Bỏ lệnh nào bỏ dòng tương ứng với lệnh đó[chapter]Bỏ tab Item/Weapon/Armor/Key Item trong Lựa chọn Item[/chapter]
Script "Window_ItemCategory", các dòng:
add_command(Vocab::item, :item)
add_command(Vocab::key_item, :key_item)
add_command(Vocab::weapon, :weapon)
add_command(Vocab::armor, :armor)
Bỏ lệnh nào bỏ dòng tương ứng với lệnh đó[chapter]Hệ thống Message[/chapter]
Hiện Text:
$game_message.face_name = 'Tên ảnh Face'
$game_message.face_index = face_index(0-7)
$game_message.background = [0] Normal, [1] Faded, [2] Transparent
$game_message.position = [0] Normal, [1] Faded, [2] Transparent
$game_message.add("Text")
Nhập số:
$game_message.num_input_variable_id = x
$game_message.num_input_digits_max = y
Chọn vật phẩm khoá:
$game_message.item_choice_variable_id = x
Văn bản cuộn:
$game_message.scroll_mode = true
$game_message.scroll_speed = 1
$game_message.scroll_no_fast = false
$game_message.add("A long time ago,")
$game_message.add("in a galaxy far, far away ...")
$game_message.add("")
$game_message.add("")
$game_message.add("")
$game_message.add("...")
[chapter]Lệnh điều kiện[/chapter]
Cơ bản:
if <điều kiện>
<làm nếu đúng>
else
<làm nếu sai>
end
Nâng cao:
if <điều kiện 1>
<làm nếu đúng>
elsif <điều kiện 2 nếu điều kiện 1 sai>
<làm nếu đúng>
elsif <điều kiện 3 nếu điều kiện 2 sai>
<làm nếu đúng>
...
elsif <điều kiện n nếu điều kiện n-1 sai>
<làm nếu đúng>
end
[chapter]Hiệu ứng[/chapter]
Cho nhân vật:
$game_player.animation_id = n
Cho sự kiện:
$game_map.events[eventid].animation_id = n
[chapter]Bong bóng Cảm xúc[/chapter]
Cho nhân vật:
$game_player.balloon_id = n
Cho sự kiện:
$game_map.events[eventid].balloon_id = n
[chapter]Hiệu ứng màn hình[/chapter]
Fade Out:
Fiber.yield while $game_message.visible
screen.start_fadeout(frame)
wait(frame)
Fade In:
Fiber.yield while $game_message.visible
screen.start_fadein(frame)
wait(frame)
[chapter]Kiểm tra di chuyển[/chapter]
$game_player.moving?
$game_player.dash?
$game_player.jumping?
$game_map.events[event_id].moving?
$game_map.events[event_id].jumping?
[chapter]Di chuyển nhân vật tới toạ độ x,y[/chapter]
Bổ sung của @TkTs (chưa test)
Bỏ trên Main:
class Game_Character < Game_CharacterBase
def mtxy(posx, posy)
sx = distance_x_from(posx)
sy = distance_y_from(posy)
if sx.abs > sy.abs
move_straight(sx > 0 ? 4 : 6)
move_straight(sy > 0 ? 8 : 2) if !@move_succeed and sy != 0
elsif sy != 0
move_straight(sy > 0 ? 8 : 2)
move_straight(sx > 0 ? 4 : 6) if !@move_succeed and sx != 0
end
end
end
Cách dùng: dùng Script Call sau trong Set Move Route
mtxy(x, y)
hoặc
mtxy($game_variables[x], $game_variables[y])
[chapter]Khác[/chapter]
Tiền tệ hiện tại:
$data_system.currency_unit
[chapter]Nếu còn...[/chapter]
...sẽ bổ sung sau!
[chapter]Nguồn[/chapter]
Tự tìm hiểu
http://www.rpgmakerweb.com/
http://rpgmaker.net
Và một số nguồn chưa xác định hoặc quên nguồn :v
[chapter]Tổng hợp bởi Kang, Copy xin ghi nguồn![/chapter]
Comments
-> $game_player.moving? cái này là chị Cê dùng trong demo farm của chỉ nè. :cuoideu:
Còn xếp cái gì nữa, Thẻ Code nó thế rồisửa rồi á :v
:laclac:
THAM GIA GROUP CỦA TTC TRÊN FACEBOOK
làm 3 phát 1 lúc như hôm bữa đi anh =]]
:tanghoa:
THAM GIA GROUP CỦA TTC TRÊN FACEBOOK
nếu được thì thanks nhiều ^_^
[/align]
Có lẽ... Một số có thể được.
ehh
Tìm trong Game_Interper á nha pác :v
Okay @_@
Nhác + ko cài
Cái VXA đây em tìm mất 2 ngày đó :v
Xp bây giờ gần như chẳng ai nhắc đến ~_~