VXA-OS - Create your MMO with RPG Maker

Valentine90

Veteran
Veteran
Joined
Oct 5, 2017
Messages
47
Reaction score
15
First Language
Português
Primarily Uses
RMVXA

Author: Valentine
Version: 2.0.4 (launched in 05/01/2020)​

About
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.

Features
Current:
  • 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 the event commands on the server;
  • Common server events;
  • Configurable resolution;
  • Global switches;
  • EventMachine network library;
  • Friends system;
  • Quests;
  • VIP system;
  • Account Editor;
  • Teleportation;
  • Paperdolls;
  • Guild;
  • Party;
  • Minimap;
  • PvP;
  • Bank.
Next:
  • Remaining event commands, such as: Show Choices, Item Selection and Move Event;
  • Customized movement of events;
  • Condition of automatic start of events on the server;
  • Editor of players, global switches etc.

Images
» Login

» Selection of characters

» Bank and party

» Quests and friends list

» Administration panel and guild creation

» Guild


Download
With DirectX:
Mega
4shared

Without DirectX:
1) After downloading the version with DirectX, download the executable Game.exe 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 script [VS] Mouse with:
Code:
#==============================================================================
# ** 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
  end
  
  def self.press?(button)
    return @pressed[1] if button == :L
    return @pressed[2] if button == :R
  end
  
  def self.release?(button)
    return @released[1] if button == :L
    return @released[2] if button == :R
  end
  
  def self.repeat?(button)
    return @repeated[1] if button == :L
    return @repeated[2] if button == :R
  end
  
  def self.dbl_clk?(button)
    return @dbl_lclick if button == :L
    return @dbl_rclick if button == :R
  end
  
  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
  end
  
  def self.tile_y
    (($game_map.display_y * 32 + self.y) / 32).to_i
  end
  
  def self.in_tile?(object)
    object.x == tile_x && object.y == tile_y
  end
  
  def self.update
    Mouse__update.call()
    @pos = [0, 0].pack('l2')
    @old_pos = [0, 0].pack('l2')
    Mouse__getPos.call(@pos)
    Mouse__getOldPos.call(@old_pos)
    @pos = @pos.unpack('l2')
    @old_pos = @old_pos.unpack('l2')
    @dbl_lclick = double_left_click?
    @dbl_rclick = double_right_click?
  end
  
  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
    else
      @last_lclick = Time.now
      @last_pos = @pos
    end
    result
  end
  
  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
    else
      @last_rclick = Time.now
      @last_pos = @pos
    end
    result
  end
  
  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
  
end
  
#==============================================================================
# ** Graphics
#==============================================================================
module Graphics
  
  def self.is_fullscreen?
    false
  end
  
  def self.toggle_fullscreen
  end
  
  def self.vsync=(vsync)
  end
  
  def self.vsync
  end
  
end
Tips
How to attack or talk to event:
Press Ctrl.
How to open the administration panel:
Press F9.
English vocabulary:
Open the script editor (F11) and replace the [VS] Vocab script with:
Code:
#==============================================================================
# ** Vocab
#------------------------------------------------------------------------------
#  Este módulo lida com o vocabulário. Todos os textos
# exibidos no jogo ficam aqui.
#------------------------------------------------------------------------------
#  Autor: 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'
  
  # 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!'
  InvalidCommand     = 'Invalid command!'
  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 discard item now.'
  ProtectionLevel    = 'You or your target does not have enough level to duel.'
  EquipVIP           = 'Only VIP players can use this equipment.'
  SoulboundItem      = 'This item is linked to your soul and cannot be traded, dropped or deposited in the bank.'
  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.'
  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'
  
  # Help
  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
  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
  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'
  
  # Icons
  Quests             = 'Quests'
  Menu               = 'Menu'
  
  # Battle and HUD
  Critical           = 'Critical!'
  NoHit              = 'Miss!'
  LevelUp            = 'Level up!'
  MaxLevel           = 'Max level'
  
end
Discord
Keep in touch with us and report any errors you find also in our Discord group.

Tutorials
Level next to the player's name in the chat
Show group in chat and on top of the character
Percentage experience
Monsters 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

Additional utilities
MySQL database
Simple launcher
Auto Update

Credits
Creator:
Valentine

Thanks:
Cidiomar
Soreto
LeonM²
Komuro
zh99998
Gallighan
invwindy
 
Last edited:

Valentine90

Veteran
Veteran
Joined
Oct 5, 2017
Messages
47
Reaction score
15
First Language
Português
Primarily Uses
RMVXA
Can any moderator help me change the topic name? I did not find this option and I do not speak English.
 

TheoAllen

Self-proclaimed jack of all trades
Veteran
Joined
Mar 16, 2012
Messages
5,299
Reaction score
6,056
First Language
Indonesian
Primarily Uses
RMVXA
Edit your post > click more options. It will bring you to full editing option including change the topic.
 

TakeHomeTheCup

Veteran
Veteran
Joined
Oct 15, 2013
Messages
244
Reaction score
459
First Language
English
Primarily Uses
Hm, the server was marked by Windows Defender... Not sure if that's a false positive or something.
 

Valentine90

Veteran
Veteran
Joined
Oct 5, 2017
Messages
47
Reaction score
15
First Language
Português
Primarily Uses
RMVXA
I could not change the topic name. Some moderator could change topic name to: VXA-OS - Create your MMO with RPG Maker
 

Kes

Veteran
Veteran
Joined
Aug 3, 2012
Messages
22,008
Reaction score
11,345
First Language
English
Primarily Uses
RMVXA
I have done this for you.
Next time you want a Mod to do something, it is best to Report your post and say what you would like. Mods may not see an individual post but will see a Report.
 

Sixth

Veteran
Veteran
Joined
Jul 4, 2014
Messages
2,136
Reaction score
810
First Language
Hungarian
Primarily Uses
RMVXA
In case you need to change topic titles in the future:
No need to enter editing mode, it should be right there at the top right corner of the opening post.

Nice engine, btw!
 

Valentine90

Veteran
Veteran
Joined
Oct 5, 2017
Messages
47
Reaction score
15
First Language
Português
Primarily Uses
RMVXA
Version 1.0.4 available.

Log:
-Fix hotbar bug;
-Move character with keys W, A, S and D added;
-DirectX 9 added;
-Resolution configurable;
-Mission system added.
 

jahad

Warper
Member
Joined
Dec 21, 2018
Messages
1
Reaction score
0
First Language
French
Primarily Uses
RMVXA
Thank you for your work ! This seems pretty cool i'm trying it tomorrow, or at least in the weekend. It's just a bit harsh for me to read portuguese (? not sure) but a little google translate and it will be ok :cutesmile:

I'm keeping an eye on your project ^^
 

Valentine90

Veteran
Veteran
Joined
Oct 5, 2017
Messages
47
Reaction score
15
First Language
Português
Primarily Uses
RMVXA
Thank you for your work ! This seems pretty cool i'm trying it tomorrow, or at least in the weekend. It's just a bit harsh for me to read portuguese (? not sure) but a little google translate and it will be ok :cutesmile:

I'm keeping an eye on your project ^^
Thanks for the feedback.

In the topic already has a translation from Portuguese to English.
 

Valentine90

Veteran
Veteran
Joined
Oct 5, 2017
Messages
47
Reaction score
15
First Language
Português
Primarily Uses
RMVXA
Version 1.0.6 available.

LOG:
-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.
 

Niclauke

Warper
Member
Joined
Dec 14, 2013
Messages
1
Reaction score
0
First Language
Norwegian
Primarily Uses
Started working on an online RPG because of this, great work so far:) The english translate work was a bit of a pain, but I don't mind - you've done a great job on this! Anything you've got planned for future updates?

How does switches work in multiplayer? Is there a way to flick a switch for a single client only. Example: Opening a door for one player only. etc, I tried this with switches but even though the door disappears - the player still can't move through it.

Is there also a way you can explain the quest system a bit more?

Thanks,
Nic
 
Last edited:

Valentine90

Veteran
Veteran
Joined
Oct 5, 2017
Messages
47
Reaction score
15
First Language
Português
Primarily Uses
RMVXA
Started working on an online RPG because of this, great work so far:) The english translate work was a bit of a pain, but I don't mind - you've done a great job on this! Anything you've got planned for future updates?

How does switches work in multiplayer? Is there a way to flick a switch for a single client only. Example: Opening a door for one player only. etc, I tried this with switches but even though the door disappears - the player still can't move through it.

Is there also a way you can explain the quest system a bit more?

Thanks,
Nic
Switches from 1 to 100 are from the player himself. From 100 onwards they are global.
 

Yui Kitamura

Villager
Member
Joined
Oct 29, 2015
Messages
7
Reaction score
1
First Language
English
Primarily Uses
RMVXA
In the topic already has a translation from Portuguese to English.
Mainly I think he means it would be more accessible if the instructions had an English translation as well. I'm also currently translating them using google translate.
 

Valentine90

Veteran
Veteran
Joined
Oct 5, 2017
Messages
47
Reaction score
15
First Language
Português
Primarily Uses
RMVXA
I intend to do a Manual in English in the future.
 

koezyrs

Warper
Member
Joined
Sep 22, 2018
Messages
3
Reaction score
0
First Language
English
Primarily Uses
RMMV
Can we use many other vxa scripts? or we have to make our own script for VXA-OS ?
 

koezyrs

Warper
Member
Joined
Sep 22, 2018
Messages
3
Reaction score
0
First Language
English
Primarily Uses
RMMV
Oh , i tried many rmvxa scripts but most of them didn't fit with vxa-os. I think i have to do it my self then >.< .
Also it will be great if the account editor can edit player gold, switches , variables, level ..... or admin command for that.
 

whitespirits

Veteran
Veteran
Joined
May 24, 2014
Messages
51
Reaction score
7
First Language
english
Primarily Uses
Is anyone capable of making new systems for this? I am looking for a team
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

I've noticed that more videos on YouTube have these segmented bookmark things in the videos themselves. It's nice being able to jump to parts of a video you want, and to have them all clearly labelled.
Why you do this? Now I have to buy the new RPG Maker xD
I've always dreaded planning for my games so I just didn't plan at all. That... didn't work out after all. :kaosigh:
Turns out it can be kind of fun if you keep the scope small and don't take it way too seriously.
well... for the first time in months... I feel like my game is headed towards something again. I finally have it where I won't be drawing battle assets for the rest of the year...

Forum statistics

Threads
99,569
Messages
966,729
Members
131,221
Latest member
SilverEagle
Top