Elemental Radar Graph Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Elemental Radar Graph

Ir para baixo

Elemental Radar Graph Empty Elemental Radar Graph

Mensagem por samuel6406 Qua Jun 13, 2012 6:57 pm

Element Radar Graph


Introdução

Um script que cria uma nova window_status com um radar elemental que calcula a vulnerabilidade a cada elemento de um personagen.

Características

Mostra a fraqueza elemental dos personagens em um grafico.

Screenshots
Elemental Radar Graph Indexphpactiondlattachtr
Como usar

Cole o script acima do main.

Voce pode configurar o numero de elementos que o radar vai calcular e que elementos iram aparecer nestas linhas:
ELEMENT_NUMBER = 8 # Numero de elementos NO RADAR.
ELEMENTS = [1, 2, 3, 4, 5, 6, 7, 8] # ID dos elementos que apareceram no radar
Demo

Não nescessita.

Script
Código:
#===============================================================================
# Gráfico de radar elemental
#===============================================================================
class Bitmap
def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color)
distance = (start_x - end_x).abs + (start_y - end_y).abs
if end_color == start_color
for i in 1..distance
x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
if width == 1
self.set_pixel(x, y, start_color)
else
self.fill_rect(x, y, width, width, start_color)
end
end
else
for i in 1..distance
x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
r = start_color.red * (distance-i)/distance + end_color.red * i/distance
g = start_color.green * (distance-i)/distance + end_color.green * i/distance
b = start_color.blue * (distance-i)/distance + end_color.blue * i/distance
a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance
if width == 1
self.set_pixel(x, y, Color.new(r, g, b, a))
else
self.fill_rect(x, y, width, width, Color.new(r, g, b, a))
end
end
end
end
end
#==============================================================================
#
#==============================================================================
class MENUSETTINGS
#--------------------------------------------------------------------------
# Constantes de elementos
#--------------------------------------------------------------------------
ELEMENT_NUMBER = 8 # Numeros de elementos en la rueda.
ELEMENTS = [1, 2, 3, 4, 5, 6, 7, 8] # Elementos que apareceran en la rueda, en orden.
end
#===============================================================================
# ■ Window_Base
#===============================================================================
class Window_Base
FONT_SIZE = 16
GRAPH_SCALINE_COLOR = Color.new(255, 255, 255, 128)
GRAPH_SCALINE_COLOR_SHADOW = Color.new( 0, 0, 0, 192)
GRAPH_LINE_COLOR = Color.new(255, 255, 64, 255)
GRAPH_LINE_COLOR_MINUS = Color.new( 64, 255, 255, 255)
GRAPH_LINE_COLOR_PLUS = Color.new(255, 64, 64, 255)
#--------------------------------------------------------------------------
# Proceso de rueda
#--------------------------------------------------------------------------
def draw_actor_element_radar_graph(actor, x, y, radius = 43)
cx = x + radius + FONT_SIZE + 48
cy = y + radius + FONT_SIZE + 32
for loop_i in 0..MENUSETTINGS::ELEMENT_NUMBER
if loop_i != 0
@pre_x = @now_x
@pre_y = @now_y
@pre_ex = @now_ex
@pre_ey = @now_ey
@color1 = @color2
end
if loop_i == MENUSETTINGS::ELEMENT_NUMBER
eo = MENUSETTINGS::ELEMENTS[0]
else
eo = MENUSETTINGS::ELEMENTS[loop_i]
end
er = actor.element_rate(eo)
estr = $data_system.elements[eo]
@color2 = er < 0 ? GRAPH_LINE_COLOR_MINUS : er > 100 ? GRAPH_LINE_COLOR_PLUS : GRAPH_LINE_COLOR
er = er.abs
th = Math::PI * (0.5 - 2.0 * loop_i / MENUSETTINGS::ELEMENT_NUMBER)
@now_x = cx + (radius * Math.cos(th)).floor
@now_y = cy - (radius * Math.sin(th)).floor
@now_wx = cx - 6 + ((radius + FONT_SIZE * 3 / 2) * Math.cos(th)).floor - FONT_SIZE
@now_wy = cy - ((radius + FONT_SIZE * 1 / 2) * Math.sin(th)).floor - FONT_SIZE/2
@now_vx = cx + ((radius + FONT_SIZE * 8 / 2) * Math.cos(th)).floor - FONT_SIZE
@now_vy = cy - ((radius + FONT_SIZE * 3 / 2) * Math.sin(th)).floor - FONT_SIZE/2
@now_ex = cx + (er*radius/100 * Math.cos(th)).floor
@now_ey = cy - (er*radius/100 * Math.sin(th)).floor
if loop_i == 0
@pre_x = @now_x
@pre_y = @now_y
@pre_ex = @now_ex
@pre_ey = @now_ey
@color1 = @color2
else
end
next if loop_i == 0
self.contents.draw_line(cx+1,cy+1, @now_x+1,@now_y+1, GRAPH_SCALINE_COLOR_SHADOW)
self.contents.draw_line(@pre_x+1,@pre_y+1, @now_x+1,@now_y+1, GRAPH_SCALINE_COLOR_SHADOW)
self.contents.draw_line(cx,cy, @now_x,@now_y, GRAPH_SCALINE_COLOR)
self.contents.draw_line(@pre_x,@pre_y, @now_x,@now_y, GRAPH_SCALINE_COLOR)
self.contents.draw_line(@pre_ex,@pre_ey, @now_ex,@now_ey, @color1, 2, @color2)
self.contents.font.color = system_color
self.contents.draw_text(@now_wx,@now_wy, FONT_SIZE*3.1, FONT_SIZE, estr, 1)
self.contents.font.color = Color.new(255,255,255,128)
self.contents.draw_text(@now_vx,@now_vy, FONT_SIZE*2, FONT_SIZE, er.to_s + "%", 2)
self.contents.font.color = normal_color
end
end
end
#==============================================================================
# ** Window_Status
#==============================================================================
class Window_Status < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 640, 480)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_actor_graphic(@actor, 40, 112)
draw_actor_name(@actor, 4, 0)
draw_actor_class(@actor, 4 + 144, 0)
draw_actor_level(@actor, 96, 32)
draw_actor_state(@actor, 96, 64)
draw_actor_hp(@actor, 96, 100, 172)
draw_actor_sp(@actor, 96, 132, 172)
draw_actor_exp(@actor, 96, 164)
#---------------------------------------------------
draw_actor_element_radar_graph(@actor, 300, 20)
#---------------------------------------------------
draw_actor_parameter(@actor, 96, 208, 0)
draw_actor_parameter(@actor, 96, 240, 1)
draw_actor_parameter(@actor, 96, 272, 2)
draw_actor_parameter(@actor, 96, 304, 3)
draw_actor_parameter(@actor, 96, 336, 4)
draw_actor_parameter(@actor, 96, 368, 5)
draw_actor_parameter(@actor, 96, 400, 6)
self.contents.font.color = system_color
self.contents.draw_text(320, 208, 96, 32, "Equipamento")
draw_item_name($data_weapons[@actor.weapon_id], 320 + 16, 250)
draw_item_name($data_armors[@actor.armor1_id], 320 + 16, 298)
draw_item_name($data_armors[@actor.armor2_id], 320 + 16, 346)
draw_item_name($data_armors[@actor.armor3_id], 320 + 16, 394)
draw_item_name($data_armors[@actor.armor4_id], 320 + 16, 442)
end
end

samuel6406
Banido
Banido

Mensagens : 49
Créditos : 11

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos