Ranking
Esse script mostra o rank de 1 a 10 de quem finalizou o jogo, no computador local. Mostra de acordo com a variável 10 do jogador, então ela seria a pontuação, caso queira que seja o level, só por o valor dela o Level.
O script salva com o nome do primeiro herói, então se for usar é necessário por para o jogador escolher o nome do herói.
Para atualizar O rank com a pontuação atual do jogador, chame o script Rank.Salvar . Para resetar o rank, chame o script Rank.Reset
obs: O ranking fica salvo no arquivo game.rank na pasta do jogo.
Screenshots
- Spoiler:
O rank abaixo não tem compromisso com a realidade.
Antes de postar o script vou ensinar como por a opção rank na scene Title:
É Opcional por essa opção na scene_title
Vá até o script Window_TitleCommand na linha 37, onde tem add_command("Rank", :rank). Em baixo adicione esse código:add_command("Rank", :rank)
Agora vá no Scene_Title, na linha 96, onde tem @command_window.set_handler... Adicione:
@command_window.set_handler(:rank, method(:command_rank))
Pronto, agora podemos ir ao script.
- Código:
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# |Autor: RD12| Rank Local
#------------------------------------------------------------------------------
# Mostra o Rank de 1 a 10 de quem jogou no computador local
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Atualizar o Rank: Rank.Salvar
# Resetar o rank: Rank.Reset
# O script atualiza o rank de acordo com a pontuação, que é a variável de ID
#escolhida no modulo abaixo.
# Ao salvar o Rank irá salvar com o nome do primeiro Herói, então é bom por
#para escolher o nome ao iniciar o jogo.
# Aparecer a scene de rank: SceneManager.goto(Scene_Rank)
# www.aldeiarpgbr.com
module Rank_Conf
Text_1 = "Jogador"
Text_2 = "Pontuação"#Level
Imagem = Cache.picture("rank")
#ID Variável que armazena o ponto do jogador no jogo
Var_Ponto = 10
end
class Scene_Rank < Scene_Base
def start
super
File.open("game.rank", "rb") do |file|
contents = Marshal.load(file)
$jogadores = contents[:jogadores]
$pontos = contents[:pontos]
end
show_rank
end
def terminate
super
@sprite.bitmap.dispose
@sprite.dispose
end
def update
super
SceneManager.goto(Scene_Title) if Input.trigger?(:C)
end
def show_rank
@sprite = Sprite.new
@sprite.bitmap = Rank_Conf::Imagem
@sprite.bitmap.draw_text(120, 10, 300, 32, Rank_Conf::Text_1, 0)
@sprite.bitmap.draw_text(300, 10, 300, 32, Rank_Conf::Text_2, 0)
#Rank 1
@sprite.bitmap.draw_text(90, 50+27, 300, 32, "1- "+$jogadores[0], 0)
@sprite.bitmap.draw_text(330, 50+27, 300, 32, $pontos[0], 0)
#Rank 2
@sprite.bitmap.draw_text(90, 50+27*2, 300, 32, "2- "+$jogadores[1], 0)
@sprite.bitmap.draw_text(330, 50+27*2, 300, 32, $pontos[1], 0)
#Rank 3
@sprite.bitmap.draw_text(90, 50+27*3, 300, 32, "3- "+$jogadores[2], 0)
@sprite.bitmap.draw_text(330, 50+27*3, 300, 32, $pontos[2], 0)
#Rank 4
@sprite.bitmap.draw_text(90, 50+27*4, 300, 32, "4- "+$jogadores[3], 0)
@sprite.bitmap.draw_text(330,50+27*4, 300, 32, $pontos[3], 0)
#Rank 5
@sprite.bitmap.draw_text(90, 50+27*5, 300, 32, "5- "+$jogadores[4], 0)
@sprite.bitmap.draw_text(330,50+27*5, 300, 32, $pontos[4], 0)
#Rank 6
@sprite.bitmap.draw_text(90, 50+27*6, 300, 32, "6- "+$jogadores[5], 0)
@sprite.bitmap.draw_text(330,50+27*6, 300, 32, $pontos[5], 0)
#Rank 7
@sprite.bitmap.draw_text(90, 50+27*7, 300, 32, "7- "+$jogadores[6], 0)
@sprite.bitmap.draw_text(330,50+27*7, 300, 32, $pontos[6], 0)
#Rank 8
@sprite.bitmap.draw_text(90, 50+27*8, 300, 32, "8- "+$jogadores[7], 0)
@sprite.bitmap.draw_text(330,50+27*8, 300, 32, $pontos[7], 0)
#Rank 9
@sprite.bitmap.draw_text(90, 50+27*9, 300, 32, "9- "+$jogadores[8], 0)
@sprite.bitmap.draw_text(330,50+27*9, 300, 32, $pontos[8], 0)
#Rank 10
@sprite.bitmap.draw_text(80, 50+27*10, 300, 32, "10- "+$jogadores[9], 0)
@sprite.bitmap.draw_text(330,50+27*10, 300, 32, $pontos[9], 0)
@sprite.bitmap.font.size = 20
@sprite.bitmap.draw_text(370, 50+27*12, 150, 32, "Enter - Voltar", 0)
end
end
class Rank
def self.Salvar
File.open("game.rank", "rb") do |file|
rank = Marshal.load(file)
$jogadores = rank[:jogadores]
$pontos = rank[:pontos]
end
if $game_variables[Rank_Conf::Var_Ponto] >= $pontos[0]
atualizar_rank(0)
elsif $game_variables[Rank_Conf::Var_Ponto] >= $pontos[1]
atualizar_rank(1)
elsif $game_variables[Rank_Conf::Var_Ponto] >= $pontos[2]
atualizar_rank(2)
elsif $game_variables[Rank_Conf::Var_Ponto] >= $pontos[3]
atualizar_rank(3)
elsif $game_variables[Rank_Conf::Var_Ponto] >= $pontos[4]
atualizar_rank(4)
elsif $game_variables[Rank_Conf::Var_Ponto] >= $pontos[5]
atualizar_rank(5)
elsif $game_variables[Rank_Conf::Var_Ponto] >= $pontos[6]
atualizar_rank(6)
elsif $game_variables[Rank_Conf::Var_Ponto] >= $pontos[7]
atualizar_rank(7)
elsif $game_variables[Rank_Conf::Var_Ponto] >= $pontos[8]
atualizar_rank(8)
elsif $game_variables[Rank_Conf::Var_Ponto] >= $pontos[9]
atualizar_rank(9)
elsif $game_variables[Rank_Conf::Var_Ponto] >= $pontos[10]
atualizar_rank(10)
end
end
def self.atualizar_rank(new_rank)
msgbox("Você ficou no rank: "+(new_rank+1).to_s)
@old_pontos = $pontos
$jogadores[new_rank] = $game_party.members[0].name
if new_rank == 0
$pontos[9] = @old_pontos[8]
$pontos[8] = @old_pontos[7]
$pontos[7] = @old_pontos[6]
$pontos[6] = @old_pontos[5]
$pontos[5] = @old_pontos[4]
$pontos[4] = @old_pontos[3]
$pontos[3] = @old_pontos[2]
$pontos[2] = @old_pontos[1]
$pontos[1] = @old_pontos[0]
$pontos[0] = $game_variables[Rank_Conf::Var_Ponto]
elsif new_rank == 1
$pontos[9] = @old_pontos[8]
$pontos[8] = @old_pontos[7]
$pontos[7] = @old_pontos[6]
$pontos[6] = @old_pontos[5]
$pontos[5] = @old_pontos[4]
$pontos[4] = @old_pontos[3]
$pontos[3] = @old_pontos[2]
$pontos[2] = @old_pontos[1]
$pontos[1] = $game_variables[Rank_Conf::Var_Ponto]
$pontos[0] = @old_pontos[0]
elsif new_rank == 2
$pontos[9] = @old_pontos[8]
$pontos[8] = @old_pontos[7]
$pontos[7] = @old_pontos[6]
$pontos[6] = @old_pontos[5]
$pontos[5] = @old_pontos[4]
$pontos[4] = @old_pontos[3]
$pontos[3] = @old_pontos[2]
$pontos[2] = $game_variables[Rank_Conf::Var_Ponto]
$pontos[1] = @old_pontos[1]
$pontos[0] = @old_pontos[0]
elsif new_rank == 3
$pontos[9] = @old_pontos[8]
$pontos[8] = @old_pontos[7]
$pontos[7] = @old_pontos[6]
$pontos[6] = @old_pontos[5]
$pontos[5] = @old_pontos[4]
$pontos[4] = @old_pontos[3]
$pontos[3] = $game_variables[Rank_Conf::Var_Ponto]
$pontos[2] = @old_pontos[2]
$pontos[1] = @old_pontos[1]
$pontos[0] = @old_pontos[0]
elsif new_rank == 4
$pontos[9] = @old_pontos[8]
$pontos[8] = @old_pontos[7]
$pontos[7] = @old_pontos[6]
$pontos[6] = @old_pontos[5]
$pontos[5] = @old_pontos[4]
$pontos[4] = $game_variables[Rank_Conf::Var_Ponto]
$pontos[3] = @old_pontos[3]
$pontos[2] = @old_pontos[2]
$pontos[1] = @old_pontos[1]
$pontos[0] = @old_pontos[0]
elsif new_rank == 5
$pontos[9] = @old_pontos[8]
$pontos[8] = @old_pontos[7]
$pontos[7] = @old_pontos[6]
$pontos[6] = @old_pontos[5]
$pontos[5] = $game_variables[Rank_Conf::Var_Ponto]
$pontos[4] = @old_pontos[4]
$pontos[3] = @old_pontos[3]
$pontos[2] = @old_pontos[2]
$pontos[1] = @old_pontos[1]
$pontos[0] = @old_pontos[0]
elsif new_rank == 6
$pontos[9] = @old_pontos[8]
$pontos[8] = @old_pontos[7]
$pontos[7] = @old_pontos[6]
$pontos[6] = $game_variables[Rank_Conf::Var_Ponto]
$pontos[5] = @old_pontos[5]
$pontos[4] = @old_pontos[4]
$pontos[3] = @old_pontos[3]
$pontos[2] = @old_pontos[2]
$pontos[1] = @old_pontos[1]
$pontos[0] = @old_pontos[0]
elsif new_rank == 7
$pontos[9] = @old_pontos[8]
$pontos[8] = @old_pontos[7]
$pontos[7] = $game_variables[Rank_Conf::Var_Ponto]
$pontos[6] = @old_pontos[6]
$pontos[5] = @old_pontos[5]
$pontos[4] = @old_pontos[4]
$pontos[3] = @old_pontos[3]
$pontos[2] = @old_pontos[2]
$pontos[1] = @old_pontos[1]
$pontos[0] = @old_pontos[0]
elsif new_rank == 8
$pontos[9] = @old_pontos[8]
$pontos[8] = $game_variables[Rank_Conf::Var_Ponto]
$pontos[7] = @old_pontos[7]
$pontos[6] = @old_pontos[6]
$pontos[5] = @old_pontos[5]
$pontos[4] = @old_pontos[4]
$pontos[3] = @old_pontos[3]
$pontos[2] = @old_pontos[2]
$pontos[1] = @old_pontos[1]
$pontos[0] = @old_pontos[0]
elsif new_rank == 9
$pontos[9] = $game_variables[Rank_Conf::Var_Ponto]
$pontos[8] = @old_pontos[8]
$pontos[7] = @old_pontos[7]
$pontos[6] = @old_pontos[6]
$pontos[5] = @old_pontos[5]
$pontos[4] = @old_pontos[4]
$pontos[3] = @old_pontos[3]
$pontos[2] = @old_pontos[2]
$pontos[1] = @old_pontos[1]
$pontos[0] = @old_pontos[0]
end
contents = {}
contents[:jogadores] = $jogadores
contents[:pontos] = $pontos
File.open("game.rank", "wb") do |file|
Marshal.dump(contents, file)
end
end
def self.Reset
contents = {}
contents[:jogadores] = ["Vazio", "Vazio", "Vazio", "Vazio", "Vazio", "Vazio", "Vazio", "Vazio", "Vazio", "Vazio",]
contents[:pontos] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
File.open("game.rank", "wb") do |file|
Marshal.dump(contents, file)
end
end
end
Créditos RD12
obs: Na primeira vez que usar o script chame o script: Rank.Reset só para criar o arquivo na pasta do jogo.