#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Bbcode messages v 0.6 Rgss2
# Criado por berka
www.rpgmakervx-fr.com# Traduzido pelo Amigo X planetarpgmaker.forumbrasil.net
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Permite a ultilização de Comandos BBCode nas mensagens do jogo
#
# [b]...[/b] Negrito == [strong]...[/strong]
# [i]...[/i] Italico
# [o]...[/o] Sem sombra
# [size=TAMANHO]...[/size] Tamanho dos Caractes
# [color=#XXXXXX]...[/color] Cor Hexadecimal
# [color=COR]...[/color] Cores HTML
#
[list]
[*]...
[*]...
[/list] lista Marcada
# [list=1]
[*]...
[*]...
[/list] lista em Numerica
# [list=a]
[*]...
[*]...
[/list] lista em Letras
# [u]...[/u] Sublinhado
# [s]...[/s] Riscado
# [font=NOME DA FONTE]...[/font] Fonte
# [sup]...[/sup] Expositor
# [shadow=#XXXXXX]...[/shadow] Sobra Hexadecimal
# [shadow=COR]...[/shadow] Sobra HTML
# [blur]...[/blur] Borrado
# [img]NOME DA IMAGEM SEM EXTENSÃO[/img] Inserir Imagem
# (A Imagem deve está na pasta Graphics/system)
#
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$KCODE="UTF8"
module Berka
module Bbcode
Puce="?—? " #?ˆ†
Surligneur="#0000CD" #html
Blur_Opacite=125 #opacidade [blur]
Ombre_Portee=[6,6] #[x,y] offset dos pixeis
#Cores html <> hexadecimais
HTML={:aliceblue=>"#F0F8FF",:aqua=>"#00FFFF",:aquamarine=>"#7FFFD4",:azure=>"#F0FFFF",:beige=>"#F5F5DC",:bisque=>"#FFE4C4",
:black=>"#000000",:blanchedalmond=>"#FFEBCD",:blue=>"#0000FF",:blueviolet=>"#8A2BE2",:brown=>"#A52A2A",:burlywood=>"#DEB887",
:cadetblue=>"#5F9EA0",:chartreuse=>"#7FFF00",:chocolate=>"#D2691E",:coral=>"#FF7F50",:cornflowerblue=>"#6495ED",:cornsilk=>"#FFF8DC",
:crimson=>"#DC143C",:cyan=>"#00FFFF",:darkblue=>"#00008B",:darkcyan=>"#008B8B",:darkgoldenrod=>"#B8860B",:darkgray=>"#A9A9A9",
:darkgreen=>"#006400",:darkkhaki=>"#BDB76B",:darkmagenta=>"#8B008B",:darkolivegreen=>"#556B2F",:darkorange=>"#FF8C00",
:darkorchid=>"#9932CC",:darkred=>"#8B0000",:darksalmon=>"#E9967A",:darkseagreen=>"#8FBC8F",:darkslateblue=>"#483D8B",
:darkslategray=>"#2F4F4F",:darkturquoise=>"#00CED1",:darkviolet=>"#9400D3",:deeppink=>"#FF1493",:deepskyblue=>"#00BFFF",
:dimgray=>"#696969",:dodgerblue=>"#1E90FF",:firebrick=>"#B22222",:floralwhite=>"#FFFAF0",:forestgreen=>"#228B22",:fuchsia=>"#FF00FF",
:gainsboro=>"#DCDCDC",:ghostwhite=>"#F8F8FF",:gold=>"#FFD700",:goldenrod=>"#DAA520",:gray=>"#808080",:green=>"#008000",
:greenyellow=>"#ADFF2F",:honeydew=>"#F0FFF0",:hotpink=>"#FF69B4",:indianred=>"#CD5C5C",:indigo=>"#4B0082",:ivory=>"#FFFFF0",
:khaki=>"#F0E68C",:lavender=>"#E6E6FA",:lavenderblush=>"#FFF0F5",:lawngreen=>"#7CFC00",:lemonchiffon=>"#FFFACD",:lightblue=>"#ADD8E6",
:lightcoral=>"#F08080",:lightcyan=>"#E0FFFF",:lightgoldenrodyellow=>"#FAFAD2",:lightgreen=>"#90EE90",:lightgrey=>"#D3D3D3",
:lightpink=>"#FFB6C1",:lightsalmon=>"#FFA07A",:lightseagreen=>"#20B2AA",:lightskyblue=>"#87CEFA",:lightslategray=>"#778899",
:lightsteelblue =>"#B0C4DE",:lightyellow=>"#FFFFE0",:lime=>"#00FF00",:limegreen=>"#32CD32",:linen=>"#FAF0E6",:magenta=>"#FF00FF",
:maroon=>"#800000",:mediumaquamarine=>"#66CDAA",:mediumblue=>"#0000CD",:mediumorchid=>"#BA55D3",:mediumpurple=>"#9370DB",
:mediumseagreen=>"#3CB371",:mediumslateblue=>"#7B68EE",:mediumspringgreen=>"#00FA9A",:mediumturquoise=>"#48D1CC",
:mediumvioletred=>"#C71585",:midnightblue=>"#191970",:mintcream=>"#F5FFFA",:mistyrose=>"#FFE4E1",:moccasin=>"#FFE4B5",
:navajowhite=>"#FFDEAD",:navy=>"#000080",:oldlace=>"#FDF5E6",:olive=>"#808000",:olivedrab=>"#6B8E23",:orange=>"#FFA500",
:orangered=>"#FF4500",:orchid=>"#DA70D6",:palegoldenrod=>"#EEE8AA",:palegreen=>"#98FB98",:paleturquoise=>"#AFEEEE",
:palevioletred=>"#DB7093",:papayawhip=>"#FFEFD5",:peachpuff=>"#FFDAB9",:peru=>"#CD853F",:pink=>"#FFC0CB",:plum=>"#DDA0DD",
:powderblue=>"#B0E0E6",:purple=>"#800080",:red=>"#FF0000",:rosybrown=>"#BC8F8F",:royalblue=>"#4169E1",:saddlebrown=>"#8B4513",
:salmon=>"#FA8072",:sandybrown=>"#F4A460",:seagreen=>"#2E8B57",:seashell=>"#FFF5EE",:sienna=>"#A0522D",:silver=>"#C0C0C0",
:skyblue=>"#87CEEB",:slateblue=>"#6A5ACD",:slategray=>"#708090",:snow=>"#FFFAFA",:springgreen=>"#00FF7F",:steelblue=>"#4682B4",
:tan=>"#D2B48C",:teal=>"#008080",:thistle=>"#D8BFD8",:tomato=>"#FF6347",:turquoise=>"#40E0D0",:violet=>"#EE82EE",:wheat=>"#F5DEB3",
:white=>"#FFFFFF",:whitesmoke=>"#F5F5F5",:yellow=>"#FFFF00",:yellowgreen=>"#9ACD32"}
Alpha="abcdefghijklmnopqrstuvwxyz".scan(/./)
end
end
include Berka::Bbcode
class Window_Message < Window_Selectable
alias berka_bbcode_convert convert_special_characters
def start_message
@text=""
for i in 0...$game_message.texts.size
@text+=" " if i >= $game_message.choice_start
@text+=$game_message.texts[i].clone+"\x00"
end
@item_max=$game_message.choice_max
convert_special_characters
reset_window
new_page
end
def convert_special_characters
berka_bbcode_convert
@a=0
@text.gsub!('[b]') {"\xA1"}
@text.gsub!('[strong]') {"\xA1"}
@text.gsub!('[/b]') {"\xA2"}
@text.gsub!('[/strong]') {"\xA2"}
@text.gsub!('[i]') {"\xA3"}
@text.gsub!('[/i]') {"\xA4"}
@text.gsub!('[o]') {"\xA5"}
@text.gsub!('[/o]') {"\xA6"}
@text.gsub!(/\[size\=(\d+)\]/) {"\xA7[#{$1}]"}
@text.gsub!('[/size]') {"\xA8"}
@text.gsub!(/\[color\=\#([0-9A-Za-z]+?)\]/x){"\xA9\[#{$1}\]"}
@text.gsub!(/\[color\=([0-9A-Za-z]+?)\]/x){"\xA9\[#{$1}\]"}
@text.gsub!('[/color]') {"\xAA"}
@text.gsub!('
[list]') { @a=nil;@t=nil;''}
@text.gsub!(/\[list\=(\d+)\]/) { @a=0;@t=0;'' }
@text.gsub!(/\[list\=([A-Za-z]+)\]/){ @a=0;@t=nil;'' }
@text.gsub!('
[*]') {(@t.nil? ? (@a+=1;"\x00 #{Alpha[@a-1]}-"):(@a+=1;"\x00 #{@a+=1}-"))rescue "\x00 "+Puce }
@text.gsub!('
[/list]') { @a=nil;@t=nil;""}
@text.gsub!('[u]') {"\xAB"}
@text.gsub!('[/u]') {"\xAV"}
@text.gsub!('[s]') {"\xAD"}
@text.gsub!('[strike]') {"\xAD"}
@text.gsub!('[/s]') {"\xAE"}
@text.gsub!('[/strike]') {"\xAE"}
@text.gsub!(/\[font\=([A-Za-z]+)\]/){ "\xAF[#{$1}]"}
@text.gsub!('[/font]') {"\xB0"}
@text.gsub!('[sup]') {"\xB1"}
@text.gsub!('[/sup]') {"\xB2"}
@text.gsub!('[fluo]') {"\xB3"}
@text.gsub!('[/fluo]') {"\xB4"}
@text.gsub!('[blur]') {"\xB5"}
@text.gsub!('[/blur]') {"\xB6"}
@text.gsub!(/\[shadow\=\#([0-9A-Za-z]+?)\]/x){"\xB7\[#{$1}\]"}
@text.gsub!(/\[shadow\=([0-9A-Za-z]+?)\]/x){"\xB7\[#{$1}\]"}
@text.gsub!('[/shadow]') {"\xB8"}
@text.gsub!('[img]') {"\xB9"}
@text.gsub!('[/img]') {"\xBA"}
end
def update_message
loop {
c=@text.slice!(/./m)
case c
when nil
finish_message
break
when "\x00"
new_line
if @line_count >= MAX_LINE
unless @text.empty?
self.pause=true
break
end
end
when "\x01";@text.sub!(/\[([0-9]+)\]/,"");contents.font.color=text_color($1.to_i);next
when "\x02";@gold_window.refresh;@gold_window.open
when "\x03";@wait_count=15;break
when "\x04";@wait_count=60;break
when "\x05";self.pause=true;break
when "\x06";@line_show_fast=true
when "\x07";@line_show_fast=false
when "\x08";@pause_skip=true
when "\xA1";self.contents.font.bold=true
when "\xA2";self.contents.font.bold=Font.default_bold
when "\xA3";self.contents.font.italic=true
when "\xA4";self.contents.font.italic=Font.default_italic
when "\xA5";self.contents.font.shadow=false
when "\xA6";self.contents.font.shadow=Font.default_shadow
when "\xA7";@text.sub!(/\[(\d+)\]/,'');self.contents.font.size=$1.to_i;next
when "\xA8";self.contents.font.size=Font.default_size
when "\xA9";@text.sub!(/\[([0-9A-Za-z]+)\]/ix,'');@bbcouleur=self.contents.font.color=hexa($1);next
when "\xAA";self.contents.font.color=Font.default_color
when "\xAB";@soul=true
when "\xAC";@soul=false
when "\xAD";@str=true
when "\xAE";@str=false
when "\xAF";@text.sub!(/\[([A-Za-z]+)\]/,"");self.contents.font.name=$1 if Font.exist?($1)
when "\xB0";self.contents.font.name=Font.default_name
when "\xB1";self.contents.font.size*=0.5
when "\xB2";self.contents.font.size=Font.default_size
when "\xB3";@fluo=true
when "\xB4";@fluo=false
when "\xB5";@flou=true
when "\xB6";@flou=false
when "\xB7";@text.sub!(/\[([0-9A-Za-z]+)\]/,'');@ombre=$1
when "\xB8";@ombre=nil
when "\xB9";@text.sub!(/([0-9A-Za-z]+)/,'');@img=Cache.system($1)
when "\xBA";
else
c_width=contents.text_size(c).width
(contents.blt(@contents_x,@contents_y,@img,@img.rect);@contents_x+=@img.width)if !@img.nil?
contents.fill_rect(@contents_x,@contents_y,c_width,self.contents.font.size,hexa(Surligneur)) if @fluo
contents.ombre_portee(c,@contents_x,@contents_y,[6,6],@ombre)if !@ombre.nil?
contents.draw_text(@contents_x,@contents_y,40,self.contents.font.size,c)
contents.flou([@contents_x,@contents_y,c_width,self.contents.font.size])if @flou
contents.draw_text(@contents_x,@contents_y+1,c_width,self.contents.font.size,"___") if @soul
contents.draw_text(@contents_x,@contents_y-self.contents.font.size/3,c_width,self.contents.font.size,"___") if @str
@contents_x+=c_width
@img=nil
end
break unless @show_fast||@line_show_fast}
end
def hexa(hex)
hex=HTML[hex.to_sym] if HTML.has_key?(hex.to_sym)
hex=hex.scan(/./)
(rgb=[hex[0]+hex[1],hex[2]+hex[3],hex[4]+hex[5]]) rescue (return normal_color)
return Color.new(rgb[0].to_i(16),rgb[1].to_i(16),rgb[2].to_i(16))
end
end
class Bitmap
def ombre_portee(string,x,y,d,col)
a,b,m,n=false,false,d[0],d[1]
loop do
self.font.color=Color.new(hexa(col)[0],hexa(col)[1],hexa(col)[2],255-255*m/d[0])
draw_text(Rect.new(x-m,y+n,text_size(string).width,self.font.size),string)
m>0 ? m-=1 :a=true;n>0 ? n-=1 :b=true
break if a&&b
end
end
def flou(rect,of=2,opacite=Blur_Opacite,spac=1)
x,y,w,h=rect[0],rect[1],rect[2],rect[3]
dummy = self.dup
of.times{|i|
src_rects=[]
src_rects<
src_rects<
src_rects<
src_rects<
o=Integer(opacite*(of-i)/of)
src_rects.each{|src_rect|blt(x,y,dummy,src_rect,o)}}
end
def hexa(hex)
hex=HTML[hex.to_sym] if HTML.has_key?(hex.to_sym) rescue return
hex=hex.scan(/./)
(rgb=[hex[0]+hex[1],hex[2]+hex[3],hex[4]+hex[5]]) rescue (return normal_color)
return rgb[0].to_i(16),rgb[1].to_i(16),rgb[2].to_i(16)
end
end