Sistema de Reputação
Créditos: AzorMachine > Por Criar
Felix Blayder > Por Disponibilisar
Créditos: AzorMachine > Por Criar
Felix Blayder > Por Disponibilisar
Descrição:
O script, cria Facções, escolhidas por você, e conforme você conversa com NPCs dessa Facção, ou faz Quests, são sendo adcionadas, reputação sua, a essa Facção, determinada no código.
O script não tem limitações a prova, pode ser usado em jogos de Namoro, jogos estilo Bully, ou QUALQUER OUTRA COISA POSSÍVEL !
Como Usar:
- Spoiler:
- Como adcionar reputação a certa Facção ?
É só usar o código :
$game_system.fac_rep[i] += n
Sendo o "i", o ID da Facção, e n, o valor da reputação que vae ser adcionada ^^
Lembrando, que as Facções começam do 0, ou seja, se você quer adcionar 2 pontos a facção 6, o código ficará assim :
$game_system.fac_rep[5] += 2
Como eu faço pro jogador ver a sua Reputação ?
É só chamar o script :
$scene = Scene_Reputação.new
Como eu faço pra a Interação do NPC mudar conforme a Reputação ?
É só ir no evento, e em condições, bote em scripts e :
$game_system.fac_rep[5] == 2
Lembrando que as Facções começam do 0, esse código verifica se a Facção 6 tem, 2 pontos de Reputação ^^
Acabou a Explicação, vamos ao Script em si ^^
Script:
- Código:
#==============================================================
# Sistema de Reputação - Azor_Rep v.2
#
# Por AzorMachine
#
# Data : 08/06/08
#
#==============================================================
#
# :: Edição ::
#
# Linha 46 - Ponto de reputação inicias em cada Facção.
# Linha 49 - Facções Iniciais.
# Linha 98 - Facções.
# Linha 99 - Estados da Reputação.
#
#==============================================================
class Game_System
attr_accessor :fac_rep
attr_accessor :fac_ativo
alias rep_initialize initialize
def initialize
rep_initialize
@fac_rep=[]
@fac_ativo=[]
end
end
class Scene_Title
alias azor_rep command_new_game
def command_new_game
azor_rep
$game_system.fac_rep = [50, 44, 75, 24, 9, 56, 100]
$game_system.fac_ativo = ["ativo", "ativo", "ativo", "ativo", "ativo", nil, nil]
end
end
class Scene_Reputação
def main
@status_window = Window_Reputação.new
@sprite = Spriteset_Map.new
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@status_window.dispose
@sprite.dispose
end
def update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
end
end
class Window_Reputação < Window_Base
attr_accessor :facções
attr_accessor :fac_rep
attr_accessor :reptypes
attr_accessor :fac_ativo
def initialize
super(0, 0, 640, 480)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 22
self.contents.font.color = text_color(0)
self.back_opacity = 120
@facções = ["Familia Real", "Igreja de Avelius", "Nobres", "Nômades", "Estrangeiros", "Magos Brancos", "Crepúsculo"]
@rep = ["Venerado", "Honrado", "Amigo", "Neutro", "Inimigo", "Odiado", "Desertado"]
refresh
end
def draw_repbar(x, y, width, height, current, max)
x -= 10
for i in 0..(height+2)
self.contents.fill_rect(x-3+i, y - 1 + i, width+5, 1, Color.new(255, 255, 255, 255))
end
for i in 0..height
self.contents.fill_rect(x+i, y+i, width+1, 1, Color.new(0, 0, 0, 255))
end
for i in 0..height
for j in 0..current
self.contents.fill_rect(x+j+i, y+i, 1, 1, Color.new(0, 0 + (1.25*j), 255 - (1.25*j), 255 - (5*i)))
end
end
end
def refresh
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.size = 32
self.contents.draw_text(20, 30, 184, 32, "Reputação", 2)
self.contents.font.size = $fontsize
for i in 0...@facções.size
y = 80 + (i * 70)
x = -30
if i > 4
x = 280
y = 80 + ((i - 5) * 70)
end
if $game_system.fac_rep[i] > 100
$game_system.fac_rep[i] = 100
end
if $game_system.fac_rep[i] < 0
$game_system.fac_rep[i] = 0
end
if $game_system.fac_ativo[i] == "ativo"
draw_fac(x, y, i)
end
self.contents.font.color = normal_color
end
end
def draw_fac(x, y, i)
self.contents.draw_text(x+40, y, 160, 32, @facções[i], 0)
draw_repbar(x+90, y+32, 200, 14, 2 * $game_system.fac_rep[i], 100)
self.contents.font.color = system_color
if $game_system.fac_rep[i] >= 90
self.contents.draw_text(x+210, y, 96, 32, @rep[0], 2)
elsif $game_system.fac_rep[i] >= 75
self.contents.draw_text(x+210, y, 96, 32, @rep[1], 2)
elsif $game_system.fac_rep[i] >= 55
self.contents.draw_text(x+210, y, 96, 32, @rep[2], 2)
elsif $game_system.fac_rep[i] >= 45
self.contents.draw_text(x+210, y, 96, 32, @rep[3], 2)
elsif $game_system.fac_rep[i] >= 25
self.contents.draw_text(x+210, y, 96, 32, @rep[4], 2)
elsif $game_system.fac_rep[i] >= 10
self.contents.draw_text(x+210, y, 96, 32, @rep[5], 2)
else
self.contents.draw_text(x+210, y, 96, 32, @rep[6], 2)
end
end
end
Screens :
- Spoiler: