Jump to content

VXA-OS - Create your MMO with RPG Maker

Recommended Posts


Author: Valentine
Version: 2.1.1 (released 09/23/2020)



VXA-OS is the most complete and secure free tool for creating 2D online games from RPG Maker. It has been in active development since October 2017 and has been used in several MMORPGs, such as Urkon Online, Lotus Online, Darknessfall and Mystical Hunter.



-5 types of chat;
-9 types of equipment;
-13 administrator commands;
-3 monitor commands;
-Global real-time battle system on the server;
-Passwords protected with the MD5 cryptographic function;
-99% of event commands on the server;
-Common server events;
-Configurable resolution;
-Global switches;
-EventMachine network library;
-Friends system;
-Quest system;
-VIP system;
-Account Editor;
-Move Event event command;
-Customized movement of events.



» Login
» Selection of characters
» Bank and party
» Quest and friends list
» Administration panel and guild creation
» Guild



With DirectX:



Without DirectX:
1) After downloading the DirectX version, download the Game.exe executable below and replace it with the one in the folder Client
Download Game.exe
2) Open the Script Editor (F11)
3) Search for the script [VS] Mouse:
4) Replace ALL [VS] Mouse script with:

# ** Mouse
#  Autor: Cidiomar

module Mouse
  typedef 'unsigned long HCURSOR'
  dll = 'System/VXAOS.dll'
  Mouse__setup = c_function(dll, 'void Mouse__setup(struct RArray*, struct RArray*, struct RArray*, void *)')
  Mouse__update = c_function(dll, 'void Mouse__update()')
  Mouse__getPos = c_function(dll, 'void Mouse__getPos(long *)')
  Mouse__getOldPos = c_function(dll, 'void Mouse__getOldPos(long *)')
  @triggered = Input.triggered
  @pressed = Input.pressed
  @released = Input.released
  @repeated = Input.repeated
  @last_lclick = Time.now
  @last_rclick = Time.now
  @dbl_lclick = false
  @dbl_rclick = false
  @pos = Array.new(2, 0)
  Mouse__setup.call(@triggered, @pressed, @released, @repeated)
  def self.click?(button)
    return @triggered[1] if button == :L
    return @triggered[2] if button == :R
  def self.press?(button)
    return @pressed[1] if button == :L
    return @pressed[2] if button == :R
  def self.release?(button)
    return @released[1] if button == :L
    return @released[2] if button == :R
  def self.repeat?(button)
    return @repeated[1] if button == :L
    return @repeated[2] if button == :R
  def self.dbl_clk?(button)
    return @dbl_lclick if button == :L
    return @dbl_rclick if button == :R
  def self.tile_x
    # Corrige o display_x, já que a tela pode se mover
    #16 em vez de 32 pixel na horizontal se a largura da
    #resolução for superior a 1000
    x = $game_map.display_x > 0 && $game_map.display_x > $game_map.display_x.to_i ? self.x + 16 : self.x
    (x / 32 + $game_map.display_x).to_i
  def self.tile_y
    (($game_map.display_y * 32 + self.y) / 32).to_i
  def self.in_tile?(object)
    object.x == tile_x && object.y == tile_y
  def self.update
    @pos = [0, 0].pack('l2')
    @old_pos = [0, 0].pack('l2')
    @pos = @pos.unpack('l2')
    @old_pos = @old_pos.unpack('l2')
    @dbl_lclick = double_left_click?
    @dbl_rclick = double_right_click?
  def self.double_left_click?
    return false unless click?(:L)
    result = false
    t_diff = Time.now - @last_lclick
    if t_diff < 0.5 && @last_pos == @pos
      result = true
      @last_lclick = Time.now
      @last_pos = @pos
  def self.double_right_click?
    return false unless click?(:R)
    result = false
    t_diff = Time.now - @last_rclick
    if t_diff < 0.5 && @last_pos == @pos
      result = true
      @last_rclick = Time.now
      @last_pos = @pos
  def self.x;        @pos[0];           end
  def self.y;        @pos[1];           end
  def self.pos;      @pos.dup;          end
  def self.old_x;    @old_pos[0];       end
  def self.old_y;    @old_pos[1];       end
  def self.old_pos;  @old_pos.dup;      end
  def self.moved?;   @pos != @old_pos;  end
# ** Graphics
module Graphics
  def self.is_fullscreen?
  def self.toggle_fullscreen
  def self.vsync=(vsync)
  def self.vsync



How to attack or speak to events:
Press Ctrl.
How to open the administration panel:
Press Insert.
English vocabulary:
Open the script editor (F11) and replace the [VS] Vocab script with:

# ** Vocab
#  This module deals with vocabulary. All texts displayed
# in the game are here.
#  Author: Valentine

module Vocab
  # Login and account creation
  Username           = 'Username'
  Password           = 'Password'
  RepeatPass         = 'Repeat password:'
  Email              = 'Email:'
  Remember           = 'Remember?'
  Register           = 'Register'
  Connect            = 'Connect'
  NewAcc             = 'Register'
  Login              = 'Log in'
  # Character creation and selection
  NotVIP             = 'You are not VIP'
  VIP                = 'You have %s VIP days.'
  Name               = 'Name'
  Sex                = 'Sex:'
  Class              = 'Class:'
  Graphic            = 'Graphic:'
  Points             = 'Points:'
  Male               = 'Male'
  Female             = 'Female'
  Empty              = 'Empty'
  Play               = 'Play'
  ShopBuy            = 'Buy'
  # Chat
  SecondaryText      = 'Press Enter to talk...'
  Map                = 'Map'
  All                = 'All'
  Party              = 'Party'
  Guild              = 'Guild'
  Private            = 'Private'
  # Menu alert
  ServerOffline      = 'The server is offline!'
  ServerFull         = 'The server is full. Try again later!'
  ConnectionFailed   = 'The connection failed!'
  Insufficient       = '%s must be at least %d characters!'
  ForbiddenCharacter = 'The name can only contain letters, numbers and space!'
  Kicked             = 'You got kicked out!'
  IPBanned           = 'Your IP is banned!'
  OldVersion         = 'This version is old. Please update!'
  AccBanned          = 'Your account is banned!'
  InvalidUser        = 'Invalid user!'
  InvalidPass        = 'Invalid password!'
  InvalidName        = 'Invalid name!'
  InvalidEmail       = 'Invalid email!'
  PasswordsNotMatch  = 'Passwords do not match!'
  IPBlocked          = 'You missed the data 5 times. Your IP was blocked for 3 minutes!'
  MultiAccount       = 'User logged in!'
  Inactivity         = 'You have exceeded the maximum downtime!'
  EnterPass          = 'The character will be permanently deleted and cannot be recovered. Please enter your password to confirm the deletion.'
  AccExist           = 'This user already exists!'
  Successful         = 'Account registered successfully!'
  CharExist          = 'This name is already in use!'
  # Game alert
  Teleported         = 'You have been teleported.'
  Pulled             = 'You were pulled.'
  Muted              = 'You have been muted for 30 seconds.'
  NonPvP             = 'You can not attack here.'
  AttackAdmin        = 'You cannot attack an administrator.'
  NotEnoughMoney     = 'Insufficient money.'
  NotSellItem        = 'This shop does not buy items.'
  NotTarget          = 'You have no target.'
  NotSeeTarget       = 'You are not seeing the target.'
  TargetNotInRange   = 'Target out of range!'
  InsufficientLevel  = 'You do not have enough level to use this item.'
  InsufficientMP     = 'You do not have enough MP.'
  GlobalSpawning     = 'Wait 1 second to speak again in the global chat.'
  NotAmmunition      = 'You have no ammo.'
  NotPickUpDrop      = 'You still can not get this item.'
  RequestDeclined    = 'Your request was declined.'
  FullInventory      = 'Your inventory is full.'
  FullTrade          = 'The trade is full.'
  FullBank           = 'The bank is full.'
  FullDrops          = 'You cannot drop an item on the floor now.'
  ProtectionLevel    = 'You or your target does not have enough level to duel.'
  EquipVIP           = 'Only VIP players can use this equipment.'
  DifferentSex       = 'This protector was not made for your sex.'
  SoulboundItem      = 'This item is linked to your soul and cannot be traded, dropped or deposited.'
  Blocked            = 'was blocked.'
  Unlocked           = 'has been unlocked.'
  Busy               = 'This player is busy.'
  Ask                = 'Are you sure?'
  # Skills
  Attack             = 'Attack'
  Support            = 'Support'
  # Friends
  FullFriends        = 'Your friends list is full.'
  FriendAdded        = 'has been added to your friends list.'
  FriendExist        = 'This player is already your friend.'
  FriendRequest      = 'wants to be your friend. Accept?'
  Friend             = 'Friend'
  # Trade
  TradeRequest       = 'invited you for an trade. Accept?'
  TradeComplete      = 'wants to complete the trade. Accept?'
  TradeDeclined      = 'The trade was declined.'
  TradeFinished      = 'Trade finished.'
  PlayerNotInRange   = 'Player out of range.'
  InTrade            = 'You are already in an trade.'
  Trade              = 'Trade'
  # Bank
  Items              = 'Items'
  Weapons            = 'Weapons'
  Armors             = 'Armors'
  # Party
  InParty            = 'This player is already in a party.'
  PartyRequest       = 'invited you to a party. Accept?'
  PartyMemberJoined  = 'joined the party.'
  PartyMemberLeave   = 'left the party.'
  DissolvedParty     = 'Party dissolved.'
  FullParty          = 'Your party is full.'
  NotParty           = 'You are not in a party.'
  # Guild
  NewGuild           = 'Guild creation'
  YouInGuild         = 'You are already in a guild.'
  PlayerInGuild      = 'is already in the guild'
  GuildExist         = 'This guild already exists.'
  EmptyFlag          = 'You did not draw the flag.'
  NotGuildLeader     = 'You are not the leader of the guild.'
  FullGuild          = 'Your guild is full.'
  GuildRequest       = 'invited you to the %s guild. Accept?'
  NotGuild           = 'You are not in a guild.'
  Leader             = 'Leader'
  Member             = 'Member'
  NewLeader          = 'New leader:'
  Notice             = 'Notice:'
  Main               = 'Main'
  Manage             = 'Manage'
  # Description of items, weapons and protectors
  Equipable          = 'Equipable by'
  NotEquipable       = 'Not equipable by'
  Consumable         = 'Consumable:'
  BaseDamage         = 'Base damage:'
  Soulbound          = 'Soulbound'
  TwoHanded          = 'Two-handed weapon'
  OneHanded          = 'One-handed weapon'
  ItemType           = 'Type:'
  Normal             = 'Normal'
  MPCost             = 'MP cost:'
  Hit                = 'Hit:'
  # Menu
  Menu               = 'Menu'
  Configs            = 'Settings'
  BackLogin          = 'Back to login'
  BackSelection      = 'Back to selection'
  Quit               = 'Leave game'
  Music              = 'Music:'
  Sound              = 'Sound:'
  Resolution         = 'Resolution:'
  FullScreen         = 'Full screen:'
  FPS                = 'FPS:'
  Vsync              = 'V-sync'
  NoLimit            = 'No limit'
  # Titles
  Teleport           = 'Teleport'
  Bank               = 'Bank'
  Amount             = 'Amount'
  Shop               = 'Shop'
  Alert              = 'Alert'
  NewChar            = 'Character creation'
  UseChar            = 'Selection of characters'
  # Quests
  Quest              = 'Quest'
  Quests             = 'Quests'
  Information        = 'Information'
  InProgress         = 'In progress'
  Completed          = 'Completed'
  StartQuest         = 'You started the quest'
  FinishQuest        = 'You have completed the quest'
  Rewards            = 'Rewards:'
  Item               = 'Item'
  Exp                = 'Exp'
  # Admin panel
  SecondaryPanelText = "Enter the name or 'all'"
  AdmPanel           = 'Admin panel'
  AlertMessage       = 'Alert message:'
  Motd               = 'Motd:'
  Banishment         = 'Banishment:'
  GlobalSwitch       = 'Global switch:'
  Days               = 'Days'
  ID                 = 'ID:'
  Kick               = 'Kick'
  Mute               = 'Mute'
  Pull               = 'Pull'
  GoTo               = 'Go to'
  Change             = 'Change'
  BanAcc             = 'Ban account'
  BanIP              = 'Ban IP'
  Unban              = 'Unban'
  On                 = 'On'
  Off                = 'Off'
  Teleport           = 'Teleport'
  GiveItem           = 'Give item'
  Send               = 'Send'
  # Buttons
  Ok                 = 'Ok'
  Go                 = 'Go'
  Cancel             = 'Cancel'
  Yes                = 'Yes'
  No                 = 'No'
  Create             = 'Create'
  Delete             = 'Delete'
  Accept             = 'Accept'
  Block              = 'Block'
  Unlock             = 'Unlock'
  Activated          = 'Activated'
  Disabled           = 'Disabled'
  # Minimap icons
  Boss               = 'Boss'
  CheckPoint         = 'Check point'
  # HUD
  MaxLevel           = 'Max level'



Keep in touch with us and report any errors you find also in our Discord.



Level next to the player's name in the chat
Show group in chat and on top of the character
Percentage experience
Enemies do not attack administrators
Do not attack party member
Black background under the name
Player names and events only appear if you hover over them
Independence from RTP
Parallax System

Do not lose level when dying


Additional utilities

MySQL database
Simple launcher
Auto Update




Thank you:

Edited by Valentine90

Share this post

Link to post
Share on other sites
On 21/08/2018 at 1:33 PM, FlexFlox said:

Nice dude!

One question tho.... do you have an english manual?

Also, where to find the file to have a english translation?

I'm still working on an English version.

Share this post

Link to post
Share on other sites
Version 1.0.6 available.
-Paperdolls added;
-List of friends added;
-Bank added;
-Teleportation system added;
-Party added;
-Added moderator commands;
-Configurable maximum number of classes;
-Pup of gold added;
-Fix bug in the drop;
-Fix bug in the minimap;
-Other bugs fixed.
I added some things in the Manual.

Share this post

Link to post
Share on other sites

This may be my new favorite RM thing.



I love the sense of community, competition, and cooperation the MMO genre of rpgs provides, and the prospect of creating one has had me foaming at the mouth for over a year now.


I have to test compatibility with a few other scripts. Primarily Hime's Instance Items, Vlue's Advanced Recipe Crafting,  Dark Sky's House Decorating System. 

Share this post

Link to post
Share on other sites

I can make it to the login screen but without a server you can't even run offline tests (that I'm aware of).




When it comes to servers and such I am all but useless. With everything in Portuguese, it hasn't been easy to figure anything out. I translated some of the config script, but all the raw info you need is in the Portuguese manual.

Share this post

Link to post
Share on other sites

"Game.exe has stopped working"



Exception Code:	c0000005
Exception Offset: 00011584



This tells me nothing. It may mean something to you, I dunno.

Share this post

Link to post
Share on other sites

Version 1.1.0 available.


-Changes made in the Manual;
-Vocab added on the server;
-Added speed hack protection;
-Limit of inventory, trade and bank added;
-Event Command Call Added Common Event;
-Error when equipping weapon or armor that increases HP and/or Max MP fixed;
-Error when using item that permanently increases HP and/or Max MP fixed;
-Error by giving a high gold value through the admin panel fixed;
-Error when disconnected in character selection fixed;
-Error in vip days count in accounts editor fixed;
-Error when creating character without starting points fixed;
-Error of multiplying item in the trade fixed;
-Error when performing corrected event actions;
-Error in priority Below the Hero fixed;
-Error in the z-order of the chat fixed;
-Error on switches fixed.

Share this post

Link to post
Share on other sites
Posted (edited)

Version 2.0.3 available.


-Input_Slider finished;
-Chat error fixed;
-Error when disconnecting the player fixed;
-Fixed Flash Effect event command error.

Edited by Valentine90

Share this post

Link to post
Share on other sites
Posted (edited)

Hey, this script is really cool and all, but wheres the 100% English version you mentioned? I downloaded the "Portugeese" version but couldn't find an English one.

Edited by DokuDako

Share this post

Link to post
Share on other sites


Version 1.0.1 was also released in English. However, currently, there is only the Portuguese version.



Version 2.0.4 available.


-Damage limit received by the customer increased;
-Cursor icon changes when hovering over event, enemy, drop and player;
-Error selecting target fixed.

Share this post

Link to post
Share on other sites

I've been trying to get this to work using the manual (translated in English) and it always says that the server is offline, I've been replacing each host IP in both the Server folder and the Client studio configure script, but it doesn't work. Any suggestions?

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.