Se você for um noob idiota que visitou o tópico para pega o
script, por favor volte para a página anterior, pois se apenas copiar e
colar o script, irão aparecer alguns erros, e você vai postar no tópico
uma dúvida estúpida que foi esclarecida no tópico!
Caso seja alguém
que esteja disposte a entender a base da scene login e register, leia o
tópico completo pois existem bugs em certos netplays e os mesmos podem
ser resolvidos com o conteúdo do tópico.
script, por favor volte para a página anterior, pois se apenas copiar e
colar o script, irão aparecer alguns erros, e você vai postar no tópico
uma dúvida estúpida que foi esclarecida no tópico!
Caso seja alguém
que esteja disposte a entender a base da scene login e register, leia o
tópico completo pois existem bugs em certos netplays e os mesmos podem
ser resolvidos com o conteúdo do tópico.
- Spoiler:
Iae
pessoal, bem, eu tava dando uma olhada nos projetos aqui do fórum e me
deparei com uma característica comum na maioria dos jogos online
presente, a Scene_Login, praticamente todos estão
usando a padrão. Eu não sei se é porque não sabem como modificar ou se é
porque gostaram da padrão e tals xD
Enfim, nesse tutorial estarei explicando como criar uma Scene_Login para o qualquer netplay baseado no 1.7 e que, obrigatoriamente possua widgets
Só pra dar uma forcinha a mais eu vou fazer uma Scene_Register comentada pra vocês xDEntão vamos começar...
Primeiro:
Abra o editor de scripts, podem observar que há uma sequência de
scripts com o [SC] no começo do nome, então, abaixo desses crie outo
script com o nome de [SC] Scene_Login2. Ótimo, a primeira parte da nossa
scene já está criada xD
Agora começaremos a programar, insera o seguinte código no script:- Código:
#-------------------------------------------------------------------------------------------------
# * Scene_Login
#-------------------------------------------------------------------------------------------------
# By Soreto
#-------------------------------------------------------------------------------------------------
class Scene_Login
def main
# Criaremos a janela de login
@window = Window_Base.new(230, 330, 180, 160)
@window.contents = Bitmap.new(@window.width - 32, @window.height - 32)
# Configuramos a fonte
@window.contents.font.name = 'Verdana' # Nome da fonte
@window.contents.font.size = 14 # Tamanho da fonte
# Iniciaremos o loop
Graphics.transition
Network::Main.retrieve_version
loop do
Network::Base.update
update
break if $scene != self
end
Graphics.freeze
# Dispose
@window.dispose
end
#----------------------------------------------------------------------------
# * Update
#----------------------------------------------------------------------------
def update
@window.update
end
#----------------------------------------------------------------------------
# * Login
#----------------------------------------------------------------------------
def login
# Depois adicionaremos os comandos
end
#----------------------------------------------------------------------------
# * Update
#----------------------------------------------------------------------------
def register
# Depois adicionaremos os comandos
end
#----------------------------------------------------------------------------
# * Fim da classe
#----------------------------------------------------------------------------
end
Segundo: Ainda não testem o script pois só montei a base para verem os primeiros passos xD
Como
podem observar, eu fiz uso da Window_Base para criar uma janela (a de
login), eu declarei a variável @window como a janela de login, então
sempre que quiserem adicionar um texto ou algo do tipo utilizem a
variável acima no lugar do self.
AVISO: Caso esteja utilizando o netplay master, deve se usar Window_Dummys.new no lugar de Window_Base.new.
Agora faremos umas pequenas edições, como adicionar um os textos, text_box e buttons.
Na def main, dê enter na linha 17, depois adicione o seguinte código:- Código:
# Desenhando os textos
@window.contents.draw_text(40, 20, 60, 22, "User:")
@window.contents.draw_text(40, 42, 60, 22, "Pass:")
# Desenhando botões
@login_button = Button.new(@window, 8, 65, "Login") {self}
@register_button = Button.new(@window, 70, 65, "Register") {self}
# Desenhando caixas de texto
@login_text = Text_Box.new(@window, 40, 20, 100, 20, 1)
@pass_text = Text_Box.new(@window, 40, 42, 100, 20, 1)
Antes de começar o terceiro passo, recomendo que testem a scene para ajustarem as posições dos textos e demaisTerceiro: Agora com tudo ajustado, nas posições corretas já podemos começar a editar as funções dos botões e demais =D
Opa...
parece que me esqueci de um código... Se você realmente testou a scene,
percebeu que o texto da caixa de senha está visível e isso não pode
acontecer, então para esconde-lo você deve adicionar o seguinte código
abaixo de @pass_text...
- Código:
@register_text.hide
Farei agora o código que será adicionado na def login, ou seja, o código que te conectará ao jogo xD
Agora
criaremos o set_status, que é de certa forma obrigatório nos netplays
com base no 1.7 pois ele envia o estado do server (creio que seja isso,
corrijam-me caso eu esteja errado).
Abaixo da def login adicione isso:
- Código:
#----------------------------------------------------------------------------
# * Set Status
#----------------------------------------------------------------------------
def set_satus(status)
@window.contents.clear
@window.set_text2(status, 500, 400)
end
No código do botão faça a mesma coisa, porém ponha register no lugar de self.
sei que disse que iria fazer uma tela de registro separada, mas
infelizmente meu tempo é curto, mas é só usar a base como dessa scene :)
Quarto: Vamos criar a função de registro. Dentro da def register adicione o seguinte código:
- Código:
if Network::Main.user_exist?(@login_text.text) == true
print "Usuário já existe"
else
Network::Main.send_register(@login_text.text, @pass_text.text)
end
Netplay:
- Código:
#-------------------------------------------------------------------------------------------------
# * Scene_Login
#-------------------------------------------------------------------------------------------------
# By Soreto
#-------------------------------------------------------------------------------------------------
class Scene_Login
def main
# Criaremos a janela de login
@window = Window_Base.new(230, 330, 180, 160)
@window.contents = Bitmap.new(@window.width - 32, @window.height - 32)
# Configuramos a fonte
@window.contents.font.name = 'Verdana' # Nome da fonte
@window.contents.font.size = 14 # Tamanho da fonte
@window.contents.bold = true # Negrito
# Desenhando os textos
@window.contents.draw_text(40, 20, 60, 22, "User:")
@window.contents.draw_text(40, 42, 60, 22, "Pass:")
# Desenhando botões
@login_button = Button.new(@window, 8, 65, "Login") {login}
@register_button = Button.new(@window, 70, 65, "Register") {register}
# Desenhando caixas de texto
@login_text = Text_Box.new(@window, 40, 20, 100, 20, 1)
@pass_text = Text_Box.new(@window, 40, 42, 100, 20, 1)
@pass_text.hide
# Iniciaremos o loop
Graphics.transition
Network::Main.retrieve_version
loop do
Network::Base.update
update
break if $scene != self
end
Graphics.freeze
# Dispose
@window.dispose
end
#----------------------------------------------------------------------------
# * Update
#----------------------------------------------------------------------------
def update
@window.update
end
#----------------------------------------------------------------------------
# * Login
#----------------------------------------------------------------------------
def login
Network::Main.send_login(@login_text.text, @pass_text.text)
$scene = Scene_Title.new
end
#----------------------------------------------------------------------------
# * Set Status
#----------------------------------------------------------------------------
def set_satus(status)
@window.contents.clear
@window.set_text2(status, 500, 400)
end
#----------------------------------------------------------------------------
# * Register
#----------------------------------------------------------------------------
def register
if Network::Main.user_exist?(@login_text.text) == true
print "Usuário já existe"
else
Network::Main.send_register(@login_text.text, @pass_text.text)
print "Usuário registrado com sucesso"
end
end
#----------------------------------------------------------------------------
# * Fim da classe
#----------------------------------------------------------------------------
end
- Código:
#-------------------------------------------------------------------------------------------------
# * Scene_Login
#-------------------------------------------------------------------------------------------------
# By Soreto
#-------------------------------------------------------------------------------------------------
class Scene_Login
def main
# Criaremos a janela de login
@window = Window_Dummys.new(230, 330, 180, 160)
@window.contents = Bitmap.new(@window.width - 32, @window.height - 32)
# Configuramos a fonte
@window.contents.font.name = 'Verdana' # Nome da fonte
@window.contents.font.size = 14 # Tamanho da fonte
# Desenhando os textos
@window.contents.draw_text(40, 20, 60, 22, "User:")
@window.contents.draw_text(40, 42, 60, 22, "Pass:")
# Desenhando botões
@login_button = Button.new(@window, 8, 65, "Login") {login}
@register_button = Button.new(@window, 70, 65, "Register") {register}
# Desenhando caixas de texto
@login_text = Text_Box.new(@window, 40, 20, 100, 20, 1)
@pass_text = Pass_Box.new(@window, 40, 42, 100, 20, 1)
# Iniciaremos o loop
Graphics.transition
Network::Main.retrieve_version
loop do
Network::Base.update
update
break if $scene != self
end
Graphics.freeze
# Dispose
@window.dispose
end
#----------------------------------------------------------------------------
# * Update
#----------------------------------------------------------------------------
def update
@window.update
end
#----------------------------------------------------------------------------
# * Login
#----------------------------------------------------------------------------
def login
Network::Main.send_login(@login_text.text, @pass_text.text)
$scene = Scene_Title.new
end
#----------------------------------------------------------------------------
# * Set Status
#----------------------------------------------------------------------------
def set_satus(status)
@window.contents.clear
@window.set_text2(status, 500, 400)
end
#----------------------------------------------------------------------------
# * Register
#----------------------------------------------------------------------------
def register
if Network::Main.user_exist?(@login_text.text) == true
print "Usuário já existe"
else
Network::Main.send_register(@login_text.text, @pass_text.text)
print "Usuário registrado com sucesso"
end
end
#----------------------------------------------------------------------------
# * Fim da classe
#----------------------------------------------------------------------------
end
Noob que não leu o tópico: A minha ficou feia, os textos e demais estão desorganizados...
Eu: Eu poderia muito facilmente te mandar ir siriricar no beco, mas a única coisa que digo é: Leia o tópico!
eu disse no tópico, você terá que ajustar tudo ao seu gosto, pois
realmente só adicionei os widgets a tela, não me preocupei em ajustar
pois isso foi um tutorial, não estou disponibilizando script pronto.
E só pra mostra o que fiz com a mesma scene:
https://i.imgur.com/0Tm0C.png