Sim, Valentine vou testar mais tarde. te dou a resposta no pv(discord). ok?
+142
steven459
offzinho
xurana321
CaJú
riegel
Kernel
raycostabrito
MokirShabat
Ioriyagami190
kamus9629
Acalantus
bazante
emii41so
jonatas_cg
StormAD
-JohnLennon-
LeonM²
psousa
ElKhadafo
Gumg
Snoopy
marcoabruneriZ
faeltwister
ahiraa
Sonart
Naziozeno
Blue
guideath
CaioAnselmo
Biehnandikki
shoves123
ramoncs13
darkfoligno
rushmima
kike669165
Nextt
Tankevil
KauaiÉMeuNomeDeVerdade
diohellfire
AllyssonRpg
Otávio Grunje
onigoetia
takub088
Geynecmi
EduKrowlley
Gabas
Minos
godzilamaker
folignooo
SunsetHill
Allan443211
Pingo de Leite
ezzcardoso
aeFly
Maximus0037
Lixølas
sufaiterevo
wesleykk
tknooz
Adanrox
4l3ff
IsraTwerknov
DragonicK
zgrise
RD12
GuLabonia
saask
iGhoul
OFWGKTA
StellaS2
Brayan96
yuri.dante
PlayDev
eek
TheJhow
Rayner
Aldimun
Shiy
Edsephiroth
Valentine
Mazxz123
iCoke~
Caio Juan
Zetto
Daniel Carvalho
lupptyr
babugue
koezyrs
Makisso
Crunchbird
eluedes
Pain Correndo
renatokamus
Aither
makergame2000
PoxaFiih
afcbb123
GVS3281
Kenshiro
Flares
Satheios
dpsdenes
Pain
Ps+
kinhoccs
Lief
-Luther
Haseo
Kincy
Dexter
admbaiakme
Paulo Soreto
GallighanMaker
luutr
Azel
Honinbou
sklokize
HarturPl4ys
Trpino
Kuroshi
sam-rtp-rgss
Ruan
wclear
driko
Dreew00
LightOfNyx
jiraya
Takkun
iJackboy
Profane ~
moon.sarito1
Soubi92
DevWithCoffee
snaker15
Fabrizio
whitespirits
Conjurador
Readerusama
Komuro Takashi
Kies
Manticora
Dooolly
146 participantes
VXA-OS - Crie seu MMO com RPG Maker
KauaiÉMeuNomeDeVerdade- Novato
- Mensagens : 1
Créditos : 0
- Mensagem nº552
Re: VXA-OS - Crie seu MMO com RPG Maker
Tankevil- Novato
- Mensagens : 1
Créditos : 0
- Mensagem nº553
Re: VXA-OS - Crie seu MMO com RPG Maker
Acabei de testar e é realmente muito bom seu sistema.
Faz alguns anos que não brinco com o rpg maker, vou voltar a criar algo, para não enlouquecer nessa quarentena.
Incrível trabalho valentine!
Parabéns e Obrigado por disponibilizar!
Faz alguns anos que não brinco com o rpg maker, vou voltar a criar algo, para não enlouquecer nessa quarentena.
Incrível trabalho valentine!
Parabéns e Obrigado por disponibilizar!
- Mensagem nº554
Re: VXA-OS - Crie seu MMO com RPG Maker
Correções de bugs da versão 2.0.2:
Correção de erro na animação do ataque:
No script [VS] Game_Character do CLIENTE, substitua o def animate_attack por:- Código:
def animate_attack(ani_index)
return if ani_index == 8 || @ani_time < 30
@last_character_index = @character_index
@last_pattern = @pattern
@last_step_anime = @step_anime
@character_index = ani_index
@pattern = 0
@step_anime = true
@ani_time = 0
end
Correção de erro ao entrar no personagem:
No arquivo database.rb do SERVIDOR, substitua o def self.load_player por:- Código:
def self.load_player(name)
actor = Actor.new
reader = Binary_Reader.new(File.read("Data/Players/#{name}.bin", mode: 'rb'))
actor.name = name
actor.character_name = reader.read_string
actor.character_index = reader.read_byte
actor.face_name = reader.read_string
actor.face_index = reader.read_byte
actor.class_id = reader.read_short
actor.sex = reader.read_byte
actor.level = reader.read_short
actor.exp = reader.read_int
actor.hp = reader.read_int
actor.mp = reader.read_int
actor.param_base = []
8.times { actor.param_base << reader.read_int }
actor.equips = []
9.times do |slot_id|
equip_id = reader.read_short
# Se o equipamento ainda existir no banco de dados
equip_id = 0 if slot_id == Constants::EQUIP_WEAPON && !$data_weapons[equip_id] || slot_id > Constants::EQUIP_WEAPON && !$data_armors[equip_id]
actor.equips << equip_id
end
actor.points = reader.read_short
actor.guild = reader.read_string
actor.revive_map_id = reader.read_short
actor.revive_x = reader.read_short
actor.revive_y = reader.read_short
map_id = reader.read_short
# Se o mapa ainda existir
actor.map_id = $server.maps.has_key?(map_id) ? map_id : actor.revive_map_id
actor.x = reader.read_short
actor.y = reader.read_short
actor.direction = reader.read_byte
actor.gold = reader.read_int
actor.items = {}
size = reader.read_byte
size.times do
item_id = reader.read_short
value = reader.read_short
# Se o item ainda existir no banco de dados
actor.items[item_id] = value if $data_items[item_id]
end
actor.weapons = {}
size = reader.read_byte
size.times do
weapon_id = reader.read_short
value = reader.read_short
actor.weapons[weapon_id] = value if $data_weapons[weapon_id]
end
actor.armors = {}
size = reader.read_byte
size.times do
armor_id = reader.read_short
value = reader.read_short
actor.armors[armor_id] = value if $data_armors[armor_id]
end
actor.skills = []
size = reader.read_byte
size.times { actor.skills << reader.read_short }
actor.quests = {}
size = reader.read_byte
size.times do
quest_id = reader.read_byte
actor.quests[quest_id] = Game_Quest.new(quest_id, reader.read_byte, reader.read_short)
end
actor.hotbar = []
Configs::MAX_HOTBAR.times do
type = reader.read_byte
item_id = reader.read_short
type = item_id = 0 if type == Constants::HOTBAR_ITEM && !$data_items[item_id] || type == Constants::HOTBAR_SKILL && !$data_skills[item_id]
actor.hotbar << Hotbar.new(type, item_id)
end
actor.switches = []
Configs::MAX_PLAYER_SWITCHES.times { actor.switches << reader.read_boolean }
actor.variables = []
Configs::MAX_PLAYER_VARIABLES.times { actor.variables << reader.read_short }
actor.self_switches = {}
size = reader.read_short
size.times do
key = [reader.read_short, reader.read_short, reader.read_string]
actor.self_switches[key] = reader.read_boolean
end
actor
end
Correção de erro no FPS:
1) Delete o arquivo Audio.rvdata2 da pasta System do CLIENTE2) Substitua todo o script [VS] Audio por:
- Código:
#==============================================================================
# ** Audio
#------------------------------------------------------------------------------
# Este script lida com o volume das músicas e sons.
#------------------------------------------------------------------------------
# Autor: Valentine
#==============================================================================
module Audio
@music_volume = 100
@sound_volume = 100
@resolution_id = 0
@fullscreen = 1
@vsync = 0
def self.load
return unless FileTest.exist?('System/Audio.rvdata2')
file = File.open('System/Audio.rvdata2', 'rb')
@music_volume = Marshal.load(file)
@sound_volume = Marshal.load(file)
@resolution_id = Marshal.load(file)
@fullscreen = Marshal.load(file)
@vsync = Marshal.load(file)
file.close
end
def self.save
file = File.open('System/Audio.rvdata2', 'wb')
file.write(Marshal.dump(@music_volume))
file.write(Marshal.dump(@sound_volume))
file.write(Marshal.dump(@resolution_id))
file.write(Marshal.dump(@fullscreen))
file.write(Marshal.dump(@vsync))
file.close
end
def self.music_volume=(volume)
@music_volume = volume
update_bgm_volume
end
def self.sound_volume=(volume)
@sound_volume = volume
update_bgs_volume
end
def self.resolution_id=(resolution_id)
@resolution_id = resolution_id
end
def self.fullscreen=(fullscreen)
@fullscreen = fullscreen
Graphics.toggle_fullscreen if fullscreen == 0 && !Graphics.is_fullscreen? || fullscreen == 1 && Graphics.is_fullscreen?
end
def self.vsync=(vsync)
@vsync = vsync
Graphics.vsync = (@vsync == 0)
end
class << self
alias vxaos_bgm_play bgm_play
alias vxaos_bgm_stop bgm_stop
alias vxaos_bgs_play bgs_play
alias vxaos_bgs_stop bgs_stop
alias vxaos_me_play me_play
alias vxaos_se_play se_play
attr_reader :music_volume, :sound_volume, :resolution_id, :fullscreen, :vsync
def update_bgm_volume
return unless @bgm_filename
bgm_play(@bgm_filename, @bgm_volume, @bgm_pitch)
end
def update_bgs_volume
return unless @bgs_filename
bgs_play(@bgs_filename, @bgs_volume, @bgs_pitch)
end
def bgm_play(filename, volume = 100, pitch = 100, pos = 0)
@bgm_filename = filename
@bgm_volume = volume
@bgm_pitch = pitch
volume = @music_volume * volume / 100
vxaos_bgm_play(filename, volume, pitch, pos)
end
def bgm_stop
@bgm_filename = nil
vxaos_bgm_stop
end
def bgs_play(filename, volume = 100, pitch = 100, pos = 0)
@bgs_filename = filename
@bgs_volume = volume
@bgs_pitch = pitch
volume = @sound_volume * volume / 100
vxaos_bgs_play(filename, volume, pitch, pos)
end
def bgs_stop
@bgs_filename = nil
vxaos_bgs_stop
end
def me_play(filename, volume = 100, pitch = 100)
volume = @music_volume * volume / 100
vxaos_me_play(filename, volume, pitch)
end
def se_play(filename, volume = 100, pitch = 100)
volume = @sound_volume * volume / 100
vxaos_se_play(filename, volume, pitch)
end
end
end
Audio.load
Graphics.resize_screen(Configs::RESOLUTIONS[Audio.resolution_id][0], Configs::RESOLUTIONS[Audio.resolution_id][1])
# Se a tela cheia está ativada e o executável utiliza DirectX 9
Graphics.toggle_fullscreen if Audio.fullscreen == 0 && Graphics.respond_to?(:toggle_fullscreen)
Graphics.vsync = (Audio.vsync == 0) if Graphics.respond_to?(:vsync)
- Código:
#==============================================================================
# ** Window_Config
#------------------------------------------------------------------------------
# Esta classe lida com a janela de configurações.
#------------------------------------------------------------------------------
# Autor: Valentine
#==============================================================================
class Window_Config < Window_Base
def initialize
# Quando a resolução é alterada, a coordenada x é
#reajustada no adjust_windows_position da Scene_Map
super(adjust_x, 155, 215, 259)
self.visible = false
self.closable = true
# Evita que a barra de título fique embaixo das
#janelas da cena do login
self.z = 102
self.title = Vocab::Configs
Button.new(self, 78, 227, Vocab.save) { save }
@music_slider = Input_Slider.new(self, 16, 31, 183) { change_music_volume }
@sound_slider = Input_Slider.new(self, 16, 72, 183) { change_sound_volume }
@music_slider.index = Audio.music_volume
@sound_slider.index = Audio.sound_volume
resolutions = Configs::RESOLUTIONS.map { |resolution| resolution.join('x') }
@fullscreen_button = Radio_Button.new(self, [[16, 117, Vocab::Activated], [105, 117, Vocab::Disabled]], Audio.fullscreen) { toggle_fullscreen }
@vsync_button = Radio_Button.new(self, [[16, 158, Vocab::Activated], [105, 158, Vocab::Disabled]], Audio.vsync) { vsync }
@resolution_box = Combo_Box.new(self, 16, 199, 183, resolutions) { change_resolution }
@resolution_box.index = Audio.resolution_id
end
def adjust_x
Graphics.width / 2 - 107
end
def refresh
# Evita que o texto seja redesenhado sobre ele mesmo
#toda vez que a janela ficar visível
contents.clear
draw_text(0, 0, contents_width, line_height, "#{Vocab::Music} #{@music_slider.index}%", 1)
draw_text(0, 41, contents_width, line_height, "#{Vocab::Sound} #{@sound_slider.index}%", 1)
draw_text(0, 83, contents_width, line_height, Vocab::FullScreen, 1)
draw_text(0, 126, contents_width, line_height, 'V-sync', 1)
draw_text(0, 169, contents_width, line_height, Vocab::Resolution, 1)
end
def change_music_volume
Audio.music_volume = @music_slider.index
refresh
end
def change_sound_volume
Audio.sound_volume = @sound_slider.index
refresh
end
def change_resolution
Audio.resolution_id = @resolution_box.index
Graphics.resize_screen(Configs::RESOLUTIONS[Audio.resolution_id][0], Configs::RESOLUTIONS[Audio.resolution_id][1])
SceneManager.scene.adjust_windows_position
end
def toggle_fullscreen
Audio.fullscreen = @fullscreen_button.index
end
def vsync
Audio.vsync = @vsync_button.index
end
def save
Audio.save
hide
end
end
Correção de erro no comando de evento Efeito Flash:
1) Na pasta RGSS3 do SERVIDOR, abra o arquivo rgss.rb e substitua TUDO por:- Código:
#==============================================================================
# ** RGSS3
#------------------------------------------------------------------------------
# Autor: Valentine
#==============================================================================
require './RGSS3/rpg'
require './RGSS3/audiofile'
require './RGSS3/bgm'
require './RGSS3/bgs'
require './RGSS3/me'
require './RGSS3/se'
require './RGSS3/table'
require './RGSS3/color'
require './RGSS3/tone'
require './RGSS3/baseitem'
require './RGSS3/baseitem_feature'
require './RGSS3/usableitem'
require './RGSS3/usableitem_damage'
require './RGSS3/usableitem_effect'
require './RGSS3/item'
require './RGSS3/skill'
require './RGSS3/state'
require './RGSS3/equipitem'
require './RGSS3/weapon'
require './RGSS3/armor'
require './RGSS3/enemy'
require './RGSS3/enemy_action'
require './RGSS3/enemy_dropitem'
require './RGSS3/class'
require './RGSS3/learning'
require './RGSS3/actor'
require './RGSS3/map'
require './RGSS3/mapinfo'
require './RGSS3/tileset'
require './RGSS3/event'
require './RGSS3/event_page'
require './RGSS3/event_page_condition'
require './RGSS3/event_page_graphic'
require './RGSS3/eventcommand'
require './RGSS3/movecommand'
require './RGSS3/moveroute'
require './RGSS3/commonevent'
require './RGSS3/system'
require './RGSS3/system_terms'
require './RGSS3/system_vehicle'
require './RGSS3/system_testbattler'
def load_data(file_name)
File.open("#{DATA_PATH}/#{file_name}", 'rb') { |f| Marshal.load(f) }
end
3) Dentro deste arquivo color.rb adicione:
- Código:
#==============================================================================
# ** Color
#------------------------------------------------------------------------------
# Autor: zh99998
#==============================================================================
class Color
def initialize(red=0, green=0, blue=0, alpha = 255)
@red = red
@blue = blue
@green = green
@alpha = alpha
end
def set(red, blue=0, green=0, alpha = 255)
if red.is_a? Color
color = red
@red = color.red
@blue = color.blue
@green = color.green
@alpha = color.alpha
else
@red = red
@blue = blue
@green = green
@alpha = alpha
end
return self
end
def to_s()
"(#{@red}, #{@blue}, #{@green}, #{@alpha})"
end
def _dump(depth = 0)
[@red, @green, @blue, @alpha].pack('D*')
end
def self._load(string)
self.new(*string.unpack('D*'))
end
def red=(val)
@red = [[0, val].max, 255].min
end
def blue=(val)
@blue = [[0, val].max, 255].min
end
def green=(val)
@green = [[0, val].max, 255].min
end
def alpha=(val)
@alpha = [[0, val].max, 255].min
end
def ==(other)
raise TypeError.new("can't convert #{other.class} into Color") unless self.class == other.class
return @red == other.red &&
@green == other.green &&
@blue == other.blue &&
@alpha == other.alpha
end
def ===(other)
raise TypeError.new("can't convert #{other.class} into Color") unless self.class == other.class
return @red == other.red &&
@green == other.green &&
@blue == other.blue &&
@alpha == other.alpha
end
def egl?(other)
raise TypeError.new("can't convert #{other.class} into Color") unless self.class == other.class
return @red == other.red &&
@green == other.green &&
@blue == other.blue &&
@alpha == other.alpha
end
attr_accessor :red
attr_accessor :blue
attr_accessor :green
attr_accessor :alpha
end
Correção de erro no bate-papo:
1) No arquivo handle_data.rb do SERVIDOR, procure por def handle_chat_message2) Dentro do def handle_chat_message procure:
- Código:
message = buffer.read_string
- Código:
message = buffer.read_string.force_encoding('UTF-8')
Correção de erro ao desconectar o jogador:
No arquivo game_general.rb do SERVIDOR, substitua o def multi_accounts por:- Código:
def multi_accounts?(user, ip)
result = @clients.find { |client| client && client.user.casecmp(user).zero? }
if result && result.ip == ip
result.leave_game if result.in_game?
result.close_connection
result = false
end
result
end
- Mensagem nº555
Re: VXA-OS - Crie seu MMO com RPG Maker
Versão 2.0.3 disponível.
LOG:
-Input_Slider finalizado;
-Erro no bate-papo corrigido;
-Erro ao desconectar o jogador corrigido;
-Erro no comando de evento Efeito Flash corrigido.
LOG:
-Input_Slider finalizado;
-Erro no bate-papo corrigido;
-Erro ao desconectar o jogador corrigido;
-Erro no comando de evento Efeito Flash corrigido.
Edsephiroth- Novato
- Mensagens : 17
Créditos : 0
- Mensagem nº556
Re: VXA-OS - Crie seu MMO com RPG Maker
Perdão pela ignorância, mas o que é esse recurso chamado "Input_Slider"?
- Mensagem nº557
Re: VXA-OS - Crie seu MMO com RPG Maker
Edsephiroth escreveu:Perdão pela ignorância, mas o que é esse recurso chamado "Input_Slider"?
Ele não estava 100% completo.
iCoke~- Membro Ativo
- Medalhas :
Mensagens : 268
Créditos : 25
Ficha do personagem
Nível: 1
Experiência:
(0/0)
Vida:
(30/30)
- Mensagem nº558
Re: VXA-OS - Crie seu MMO com RPG Maker
Opa, animação de ataque? isso tá ficando lindo dms!
Uma singela sugestão: que as paperdolls também se animem ao atacar, de forma que uma armadura, por exemplo, acompanhe o movimento do character. Havia feito isso há uns meses, em uma versão mais antiga do VXA-OS, mas não sei onde foi parar :/ .
Uma singela sugestão: que as paperdolls também se animem ao atacar, de forma que uma armadura, por exemplo, acompanhe o movimento do character. Havia feito isso há uns meses, em uma versão mais antiga do VXA-OS, mas não sei onde foi parar :/ .
- Mensagem nº559
Re: VXA-OS - Crie seu MMO com RPG Maker
Os paperdolls também se animam.iCoke~ escreveu:Opa, animação de ataque? isso tá ficando lindo dms!
Uma singela sugestão: que as paperdolls também se animem ao atacar, de forma que uma armadura, por exemplo, acompanhe o movimento do character. Havia feito isso há uns meses, em uma versão mais antiga do VXA-OS, mas não sei onde foi parar :/ .
iCoke~- Membro Ativo
- Medalhas :
Mensagens : 268
Créditos : 25
Ficha do personagem
Nível: 1
Experiência:
(0/0)
Vida:
(30/30)
- Mensagem nº560
Re: VXA-OS - Crie seu MMO com RPG Maker
Quis dizer animado no sentido de mudar os gráficos do paperdoll tbm. Por exemplo, se durante a animação o character recebe o sufixo "_attack", o paperdoll tbm recebe. Dessa forma, o gráfico do paperdoll com o sufixo seria um gráfico adequado ao do character animado.