Анимированное название карты (локации)

Предыдущая тема Следующая тема Перейти вниз

Анимированное название карты (локации)

Сообщение  Moonwolf в Ср Фев 04, 2015 4:47 am

Код:
=begin =========================================================================
Dekita's                                                                   v1.7
                            ★ Animatéd Map Namé™ ★

================================================================================
Script Information:
====================
This script creates a highly dynamic and customisable map name "window"
and gives the ability to remove the old (shit) one.

Features :~
Each map can have its own unique map name display features,
such as... Location,  Icon,  Font,  Color, Outline Color , Size,
Effect,  Position,  Background.
Each Individual letter can also now have its own unique effects, color, size,
ect..

================================================================================
★☆★☆★☆★☆★☆★☆★☆★ TERMS AND CONDITIONS: ☆★☆★☆★☆★☆★☆★☆★☆★☆
================================================================================
1. You must give credit to "Dekita"
2. You are NOT allowed to repost this script.(or modified versions)
3. You are NOT allowed to convert this script.(into other game engines e.g RGSS2)
4. You are NOT allowed to use this script for Commercial games.
5. ENJOY!

"FINE PRINT"
By using this script you hereby agree to the above terms and conditions,
if any violation of the above terms occurs "legal action" may be taken.
Not understanding the above terms and conditions does NOT mean that
they do not apply to you.
If you wish to discuss the terms and conditions in further detail you can
contact me at http://dekitarpg.wordpress.com/ or DekitaRPG@gmail.com

================================================================================
History:
=========
D /M /Y
o6/o2/2o13 - Fixed Bug for BG when Map has no display name,
             Added individual letter effects and slide,
             Fixed a few typos,
o5/o2/2o13 - Added individual letter color/outline color,
             Added individual letter fonts, bold, italic,
o4/o2/2o13 - Added "new-Line Letter",
             Added individual letter size,
21/o1/2o13 - Added individual letter position to fix the rpg maker
             "irregular letter" bug,(for map name window only obviously)
11/o1/2o13 - increased efficiency,
           - added background option,
           - fixed bug, (icons not doing name effect properly)
o9/o1/2o13 - added 18 effects,
o8/o1/2o13 - added 8 effects,
             fixed bug, (typo)
o6/o1/2o13 - started && finished,

================================================================================
Known Bugs:
============
N/A

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
If a new bug is found please contact me at
http://dekitarpg.wordpress.com/

================================================================================
INSTRUCTIONS:
==============
Place this script UNDER "▼ Materials" and ABOVE "▼ Main" in your script editor.

================================================================================
SCRIPT CALLS:
=============
reset_map_name
^ Does what it says.(and resets the map name display trigger and shows it again)

================================================================================
NOTETAGS: (map noteboxes)
==========

Font_Name_Tags :
<FONT NAME: X>
<FN: X>
replace X with the Font_Name array index.

Font_Size_Tags :
<FONT SIZE: X>
<FS: X>
replace X with the font size.

Font_Bold_Tags :
<FONT BOLD: bool>
<FB: bool>
replace bool with true or false

Font-italic_Tags :
<FONT ITALIC: bool>
<FI: bool>
replace bool with true or false

Font_Color_Tags :
(main color tags)
  <FONT COLOR: red, grn, blu, alp>
  <FC: red, grn, blu, alp>
(outline color tags)
  <FONT OUT COLOR: red, grn, blu, alp>
  <FOC: red, grn, blu, alp>
red = the red value of the font
grn = the green value of the font
blu = the blue value of the font
alp = the alpha value of the font

Icon_id_Tags :
<NAME ICON: X>
<ICON: X>
<NI: X>
replace x with the icon id from your iconset

Icon_Position_Tags :
<ICON POS: x, y>
<IP, x, y>
x / y = the screen position.

Icon_Center_Tags :
<ICON CENTER: bool_X, bool_Y>
<ICEN: bool_X, bool_Y>
bool_X / bool_Y should be replaced with true or false  e.g <ICEN: true, false>
              this would center the icon's x value in the middle but not the y

Icon_Effect_Tags :
<ICON EFFECT: bool>
<IC: bool>
bool = true or false

Map_Name_Effect_Tags :
<NAME EFFECT: id>
<NAME EFF: id>
<NE: id>
id = the effect id for this map.

<NO NAME EFFECT>
<NO NAME EFF>
<NO NE>
makes this map have no name effect

Map_Name_Slide_Tags :
<NAME SLIDE: dist>
<NS DIST: dist>
<NSD: dist>
dist = the distance of the slide, eg. 180

Map_Name_Position_Tags :
<NAME POS: x, y>
<NP: x, y>
x, y = the position of the map name

<NAME CENTER: bool_X, bool_Y>
<NCEN: bool_X, bool_Y>
bool_X / bool_Y should be replaced with true or false  e.g <NCEN: true, false>
              this would center the name's x value in the middle but not the y

Map_Name_L_S_D_Tags :
<NAME DELAY: val>
<ND: val>
val = the delay value from one letter showing till the next.

BACKGROUND NOTETAGS :
<BACKGROUND: "IMAGE NAME">
<BG: "IMAGE NAME">
These notetags will change the maps background image name,
for use if you want t use a special image for a background box :p

<BGPOS: x, y>
<BGP: x, y>
Background box position.

<SHOW BG: bool>
<SBG: bool>
Do you want to show the background ? bool = true / false


Single Huge Notetag :
Tired of putting loads of little '<' and '>' ? use this notetag .
<MAP NAME>
# -- notes go here
<\MAP NAME>
or
<MNW>
# -- notes go here
<\MNW>

the notes for inside these notetags are the same as above without the '<' and '>'
e.g

<MNW>
FN: X
FS: X
FB: bool
FI: bool
FC: red, grn, blu, alp
FOC: red, grn, blu, alp
NI: X
IP, x, y
ICEN: bool_X, bool_Y
IC: bool
NE: id
NO NE
NSD: dist
NP: x, y
NCEN: bool_X, bool_Y
ND: val
BG: "IMAGENAME"
BGP: x, y
SBG: bool
</MNW>

<LET: id, x, y>
<letter id, x, y>
id = the id position of the letter, the first letter is 0, second = 1 ect.
x = the extra distance added to the origional x position of this letter
y = the extra distance added to the origional y position of this letter
NOTE : This notetag cannot be used within the "large notetag"
NOTE" : You can put as may of this notetag into a map's notebox as you like
e.g
<let: 0, 2, 0>
<let: 1, 2, 0>
<let: 3, 2, 0>

Use these notetags for individual letter effects, ie, size, font, color..
You must use one of these notetags for each letter you wish to modify
you cannot use these in the large notetag..

<L SIZE: letter_id, size>
<let size: letter_id, size>

<LCOL: letter_id,red,grn,blu,alpha>
<let col: letter_id,red,grn,blu,alpha>

<LOC: letter_id,red,grn,blu,alpha>
<let ocol: letter_id,red,grn,blu,alpha>

<L Fon: letter_id,font_id>
<let font: letter_id,font_id>

<L Bol: letter_id,boolean>
<let bold: letter_id,boolean>

<L Ita: letter_id,boolean>
<let italic: letter_id,boolean>

<L FX: letter_id, effect_type>
<let effect: letter_id,effect_type>

<L SLI: letter_id, slide>
<let slide: letter_id,slide>


letter_id = the id of the letter, eg. 0, 1, 2, 3
red = the red value
grn = the green value
blu = the blue value
alpha = the visibility of the color
boolean = true or false
font_id = the font array to use for this letter
effect_type = the effect type to use for this letter.

=end #=========================================================================#
module Map_Name_Window
Font_Name=[]#Do Not Delete.

 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 # ★ GENERAL SETTINGS ★
 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

 Remove_Default_Name_Window = true # obviously...

 # Z value for the new map name "window" reccommended to be about 200
 Map_Name_z = 200

 # The delay from entering the map till the name begins to show. (Frames)
 Delay_Timer = 30

 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 # ★ FONT SETTINGS ★
 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

 # This adjusts the fonts used for your maps. If the font at the start of
 # the array doesn't exist on the player's computer, it'll use the next one.
 # the games default font will be used if a maps font name is unspecified.
 Font_Name[0] = ["VL Gothic", "Arial"  ]
 Font_Name[1] = ["Arial" , "Xirod"     ]
 Font_Name[2] = ["Xirod" , "Arial Bold"]
 Font_Name[3] = ["Comic Sans MS"]
 Font_Name[4] = ["Verdana"      ]
 Font_Name[5] = ["Arial"        ]
 Font_Name[6] = ["Courier"      ]

 Font_Size = 16

 Font_Bold = true

 Font_Italic = true

 Font_Color = [ 255, 255, 255, 255 ] # [ red, grn, blu, alpha ]

 Font_Out_Col=[ 0  , 0  , 0  , 128 ] # Font outline color, same format as above.

 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 # ★ ICON SETTINGS ★
 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

 #Icon= [ use? , icon id ]
 Icon = [ true , 304 ] # Default iconset map icon = 231

 Icon_Pos  = [15, 15] # [x, y] (position of the icon)

 Icon_Has_Effects = true # Icon has the same effects as letters ?

 Center_Icon = [ false , false ] # format = [ center x ? , center y ? ]

 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 # ★ LETTER SETTINGS ★
 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

 Map_Name_Pos = [25, 10] # [x, y] (position of the first letter in the map name)

 # The delay between each letter showing, this results in a fade like effect.
 L_S_D_Timer = 15

 Center_Name = [ false , false ] # format = [ center x ? , center y ? ]

 Slide_Distance = Graphics.width / 4 # the distance that letters slide.

 Letter_Effects = true # do letters have effects ? e.g slide, spin...

 L_Effect_Type = 0
 # 0 = Basic Left Slide
 # 1 = Basic Right Slide
 # 2 = Top Drop Left Slide
 # 3 = Top Drop Right Slide
 # 4 = Bottoms up Left Slide
 # 5 = Bottoms up Right Slide
 # 6 = Basic Left Spin
 # 7 = Basic Right Spin
 # 8 = Basic Left Swirl Top
 # 9 = Basic Left Swirl Bottom
 # 10 = Basic Right Swirl Bottom
 # 11 = Basic Right Swirl Top
 # 12 = Slide Up
 # 13 = Slide Down
 # 14 = Slide Up & Left
 # 15 = Slide Up & Right
 # 16 = Slide Down & Left
 # 17 = Slide Down & Right
 # 18 = Slide Up & Left, Left Spin
 # 19 = Slide Up & Left, Right Spin
 # 20 = Slide Up & Right, Left Spin
 # 21 = Slide Up & Right, Right Spin
 # 22 = Slide Down & Left, Left Spin
 # 23 = Slide Down & Left, Right Spin
 # 24 = Slide Down & Right, Left Spin
 # 25 = Slide Down & Right, Right Spin

 # If this 'letter' is used in a map name, it will trigger a new line
 # all letters afterwords will be placed on the new line.
 # they can then still be repositioned ect using notetags.
 # REMEMBER :~ if using the new-line symbol, it still counts as a letter
 # even though it wont be visable.
 NewLine_Letter = '%'
 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 # ★ BACKGROUND SETTINGS ★
 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

 # Basic background color , format = (red , green , blue , alpha)
 BackGround_Color_1 = Color.new(0,0,0,128)
 BackGround_Color_2 = Color.new(0,0,0,0)

 Show_Background = true#false # self explanitory

 # This is the name of the folder you want to store your map name bg images in,
 # This MUST be within your games poject folder.
 BG_Image_Folder = "Graphics/Map Windows/"

end # DO NOT DELETE #
module M_N_W_RegExp #
 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 # ★ REGEXP SETTINGS ★
 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 # only change these if you know what you are doing.
 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 F_Name = /(?:FONT NAME|font name|FN|fn):[ ](\d+)/
 F_Size = /(?:FONT SIZE|FS):[ ](\d+)/i
 F_Bold = /(?:FONT BOLD|FB):[ ](.*)/i
 F_Ital = /(?:FONT ITALIC|FI):[ ](.*)/i
 F_Col_ = /(?:FONT COLOR|FC):[ ](.*),(.*),(.*),(.*)/i
 F_OCol = /(?:FONT OUT COLOR|FOC):[ ](.*),(.*),(.*),(.*)/i
 Icon   = /(?:NAME ICON|ICON|NI):[ ](\d+)/i
 IPos   = /(?:ICON POS|IP):[ ](\d+),[ ](\d+)/i
 ICent  = /(?:ICON CENTER|ICEN):[ ](.*),[ ](.*)/i
 IEffs  = /(?:ICON EFFECT|IEFF):[ ](.*)/i
 Eff    = /(?:NAME EFFECT|NAME EFF|NE):[ ](\d+)/i
 NEff   = /(?:NO NAME EFFECT|NO NAME EFF|NO NE)/i
 Slide  = /(?:NAME SLIDE|NS DIST|NSD):[ ](\d+)/i
 Posi   = /(?:NAME POS|NP):[ ](\d+),[ ](\d+)/i
 Pos2   = /(?:NAME CENTER|NCEN):[ ](.*),[ ](.*)/i
 LSD_   = /(?:NAME DELAY|ND):[ ](\d+)/i
 Large  = /<(?:MAP NAME|MNW)>([^><]*)<\/(?:MAP NAME|MNW)>/im
 BG__   = /(?:BACKGROUND|BG):[ ]"(.*)"/i
 BG_2   = /(?:BACKGROUND|BG):[ ]'(.*)'/i
 BGpos  = /(?:BGPOS|BGP):[ ](\d+),[ ](\d+)/i
 BGshow = /(?:SHOW BG|SBG):[ ](.*)/i
 Letter_Fixx = /<(?:LET|letter):[ ](.*),(.*),(.*)>/i
 Letter_Size = /<(?:L SIZE|let size):[ ](.*),(.*)>/i
 Letter_Col  = /<(?:LCOL|let col):[ ](.*),(.*),(.*),(.*),(.*)>/i
 Letter_OCol = /<(?:LOC|let ocol):[ ](.*),(.*),(.*),(.*),(.*)>/i
 Letter_Font = /<(?:L Fon|let font):[ ](.*),(.*)>/i
 Letter_Bold = /<(?:L Bol|let bold):[ ](.*),(.*)>/i
 Letter_Ital = /<(?:L Ita|let italic):[ ](.*),(.*)>/i
 Letter_FX   = /<(?:L FX|let effect):[ ](.*),(.*)>/i
 Letter_SLI  = /<(?:L SLI|let slide):[ ](.*),(.*)>/i
                           #####################
                           # CUSTOMISATION END #
end                         #####################
#☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★#
#                                                                               #
#                       http://dekitarpg.wordpress.com/                         #
#                                                                               #
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆#
#===============================================================================#
# ARE YOU MODIFYING BEYOND THIS POINT? \.\.                                     #
# YES?\.\.                                                                      #
# OMG, REALLY? \|                                                               #
# WELL SLAP MY FACE AND CALL ME A DRAGONITE.\..\..                              #
# I REALLY DIDN'T THINK YOU HAD IT IN YOU.\..\..                                #
#===============================================================================#

$imported = {} if $imported.nil?
$imported[:Dekita_Anim_Map_Name] = true

#===============================================================================#
class RPG::Map
#===============================================================================#

 attr_reader(:map_name_font_name)
 attr_reader(:map_name_font_size)
 attr_reader(:map_name_font_bold)
 attr_reader(:map_name_font_ital)
 attr_reader(:map_name_font_col_)
 attr_reader(:map_name_font_ocol)
 attr_reader(:map_name_icon)
 attr_reader(:map_name_icon_pos)
 attr_reader(:map_name_icon_pos_centered)
 attr_reader(:map_name_icon_gets_effects)
 attr_reader(:map_name_effect)
 attr_reader(:map_name_slide_dist)
 attr_reader(:map_name_letter_show_delay)
 attr_reader(:map_name_position)
 attr_reader(:map_name_position_centered)
 attr_reader(:map_name_bg)
 attr_reader(:map_name_bg_pos)
 attr_reader(:map_name_bg_show)
 attr_reader(:map_name_ind_let_fixx)
 attr_reader(:map_name_ind_let_font)
 attr_reader(:map_name_ind_let_size)
 attr_reader(:map_name_ind_let_bold)
 attr_reader(:map_name_ind_let_ital)
 attr_reader(:map_name_ind_let_color)
 attr_reader(:map_name_ind_let_outcolor)
 attr_reader(:map_name_ind_let_fx)
 attr_reader(:map_name_ind_let_slide)

 def get_map_name_icon_info
   @map_name_font_name = Font.default_name
   @map_name_font_size = Map_Name_Window::Font_Size
   @map_name_font_bold = Map_Name_Window::Font_Bold
   @map_name_font_ital = Map_Name_Window::Font_Italic
   @map_name_font_col_ = Map_Name_Window::Font_Color
   @map_name_font_ocol = Map_Name_Window::Font_Out_Col
   @map_name_icon = Map_Name_Window::Icon
   @map_name_icon_pos = Map_Name_Window::Icon_Pos
   @map_name_icon_pos_centered = Map_Name_Window::Center_Icon
   @map_name_icon_gets_effects = Map_Name_Window::Icon_Has_Effects
   @map_name_effect = [Map_Name_Window::Letter_Effects,Map_Name_Window::L_Effect_Type]
   @map_name_slide_dist = Map_Name_Window::Slide_Distance
   @map_name_position = Map_Name_Window::Map_Name_Pos
   @map_name_position_centered = Map_Name_Window::Center_Name
   @map_name_letter_show_delay = Map_Name_Window::L_S_D_Timer
   @map_name_bg = nil
   @map_name_bg_pos = @map_name_position
   @map_name_bg_show = Map_Name_Window::Show_Background
   @map_name_ind_let_fixx = []
   @map_name_ind_let_size = []
   @map_name_ind_let_font = []
   @map_name_ind_let_bold = []
   @map_name_ind_let_ital = []
   @map_name_ind_let_color  = []
   @map_name_ind_let_outcolor = []
   @map_name_ind_let_fx = []
   @map_name_ind_let_slide = []
   self.note.split(/[\r\n]+/).each { |line| ; case line
   when /<#{M_N_W_RegExp::F_Name}>/ ; @map_name_font_name = Map_Name_Window::Font_Name[$1.to_i]
   when /<#{M_N_W_RegExp::F_Size}>/ ; @map_name_font_size = $1.to_i
   when /<#{M_N_W_RegExp::F_Bold}>/ ; @map_name_font_bold = $1.to_s
   when /<#{M_N_W_RegExp::F_Ital}>/ ; @map_name_font_ital = $1.to_s
   when /<#{M_N_W_RegExp::F_Col_}>/ ; @map_name_font_col_ = [$1.to_i,$2.to_i,$3.to_i,$4.to_i]
   when /<#{M_N_W_RegExp::F_OCol}>/ ; @map_name_font_ocol = [$1.to_i,$2.to_i,$3.to_i,$4.to_i,]
   when /<#{M_N_W_RegExp::Icon}>/  ; @map_name_icon = [true, $1.to_i]
   when /<#{M_N_W_RegExp::IPos}>/  ; @map_name_icon_pos = [$1.to_i, $2.to_i]
   when /<#{M_N_W_RegExp::ICent}>/ ; @map_name_icon_pos_centered = [$1.to_s.downcase, $2.to_s.downcase]
   when /<#{M_N_W_RegExp::IEffs}>/ ; @map_name_icon_gets_effects = $1.to_s.downcase
   when /<#{M_N_W_RegExp::Eff}>/   ; @map_name_effect = [true, $1.to_i]
   when /<#{M_N_W_RegExp::NEff}>/  ; @map_name_effect = [false, 0]
   when /<#{M_N_W_RegExp::Slide}>/ ; @map_name_slide_dist = $1.to_i
   when /<#{M_N_W_RegExp::Posi}>/  ; @map_name_position = [$1.to_i, $2.to_i]
   when /<#{M_N_W_RegExp::Pos2}>/  ; @map_name_position_centered = [$1.to_s.downcase, $2.to_s.downcase]
   when /<#{M_N_W_RegExp::LSD_}>/  ; @map_name_letter_show_delay = $1.to_i
   when /<#{M_N_W_RegExp::BG__}>/  ; @map_name_bg = $1.to_s
   when /<#{M_N_W_RegExp::BG_2}>/  ; @map_name_bg = $1.to_s
   when /<#{M_N_W_RegExp::BGpos}>/ ; @map_name_bg_pos = [$1.to_i, $2.to_i]
   when /<#{M_N_W_RegExp::BGshow}>/ ; @map_name_bg_show = $1.to_s.downcase
   when M_N_W_RegExp::Letter_Fixx
     @map_name_ind_let_fixx.push([$1.to_i, $2.to_i, $3.to_i])
   when M_N_W_RegExp::Letter_Font
     @map_name_ind_let_font.push([$1.to_i, Map_Name_Window::Font_Name[$2.to_i] ])
   when M_N_W_RegExp::Letter_Size
     @map_name_ind_let_size.push([$1.to_i, $2.to_i])
   when M_N_W_RegExp::Letter_Bold
     @map_name_ind_let_bold.push([$1.to_i, $2.to_s.downcase])
   when M_N_W_RegExp::Letter_Ital
     @map_name_ind_let_ital.push([$1.to_i, $2.to_s.downcase])
   when M_N_W_RegExp::Letter_Col
     @map_name_ind_let_color.push([$1.to_i,$2.to_i,$3.to_i,$4.to_i,$5.to_i])
   when M_N_W_RegExp::Letter_OCol
     @map_name_ind_let_outcolor.push([$1.to_i,$2.to_i,$3.to_i,$4.to_i,$5.to_i])
   when M_N_W_RegExp::Letter_FX
     @map_name_ind_let_fx.push([$1.to_i,$2.to_i])
   when M_N_W_RegExp::Letter_SLI
     @map_name_ind_let_slide.push([$1.to_i,$2.to_i])
   end ; } # self.note.split
   get_mni(self.note)
 end

 def get_mni(note)
   note.scan(M_N_W_RegExp::Large) { setup_map_name_info($1) }
 end

 def setup_map_name_info(info)
   @map_name_font_name = Map_Name_Window::Font_Name[$1.to_i] if info =~ M_N_W_RegExp::F_Name
   @map_name_font_size = $1.to_i if info =~ M_N_W_RegExp::F_Size
   @map_name_font_bold = $1.to_s.downcase if info =~ M_N_W_RegExp::F_Bold
   @map_name_font_ital = $1.to_s.downcase if info =~ M_N_W_RegExp::F_Ital    
   @map_name_font_col_ = [$1.to_i,$2.to_i,$3.to_i,$4.to_i] if info =~ M_N_W_RegExp::F_Col_
   @map_name_font_ocol = [$1.to_i,$2.to_i,$3.to_i,$4.to_i] if info =~ M_N_W_RegExp::F_OCol
   @map_name_icon   = [true,$1.to_i] if info =~ M_N_W_RegExp::Icon
   @map_name_icon_pos = [$1.to_i, $2.to_i] if info =~ M_N_W_RegExp::IPos
   @map_name_icon_pos_centered = [$1.to_s.downcase, $2.to_s.downcase] if info =~ M_N_W_RegExp::ICent
   @map_name_icon_gets_effects = $1.to_s.downcase if info =~ M_N_W_RegExp::IEffs
   @map_name_effect = [true,$1.to_i] if info =~ M_N_W_RegExp::Eff
   @map_name_effect = [false, 0]     if info =~ M_N_W_RegExp::NEff
   @map_name_slide_dist = $1.to_i    if info =~ M_N_W_RegExp::Slide
   @map_name_position = [$1.to_i,$2.to_i]  if info =~ M_N_W_RegExp::Posi
   @map_name_position_centered = [$1.to_s.downcase, $2.to_s.downcase] if info =~ M_N_W_RegExp::Pos2
   @map_name_letter_show_delay = $1.to_i if info =~ M_N_W_RegExp::LSD_
   @map_name_bg = $1.to_s if info =~ M_N_W_RegExp::BG__
   @map_name_bg = $1.to_s if info =~ M_N_W_RegExp::BG_2
   @map_name_bg_pos = [$1.to_i,$2.to_i] if info =~ M_N_W_RegExp::BGpos
   @map_name_bg_show = $1.to_s.downcase if info =~ M_N_W_RegExp::BGshow
 end

end

#==============================================================================
module Cache
#==============================================================================

 def self.mapname_im(filename)
   load_bitmap(Map_Name_Window::BG_Image_Folder, filename)
 end

end

#==============================================================================
class Game_Temp
#==============================================================================

 attr_accessor :mapname

 alias :map_name_initialize_GT :initialize
 def initialize
   map_name_initialize_GT
   @mapname = nil
 end

end

#===============================================================================#
class Game_Map
#===============================================================================#

 alias :map_nameGMsetup :setup
 def setup(map_id)
   map_nameGMsetup(map_id)
   @map.get_map_name_icon_info
 end

 def setup_map_name_info
 end

 def map_name_icon
   @map.map_name_icon
 end

 def map_name_icon_pos_x
   @map.map_name_icon_pos[0]
 end

 def map_name_icon_pos_y
   @map.map_name_icon_pos[1]
 end

 def map_name_icon_pos_x_center?
   @map.map_name_icon_pos_centered[0]
 end

 def map_name_icon_pos_y_center?
   @map.map_name_icon_pos_centered[1]
 end

 def map_name_icon_effects?
   @map.map_name_icon_gets_effects
 end

 def map_name_effect
   @map.map_name_effect
 end

 def map_name_slide
   @map.map_name_slide_dist
 end

 def map_name_font_name
   @map.map_name_font_name
 end

 def map_name_font_size
   @map.map_name_font_size
 end

 def map_name_font_bold
   @map.map_name_font_bold
 end

 def map_name_font_italic
   @map.map_name_font_ital
 end

 def map_name_position_x
   @map.map_name_position[0]
 end

 def map_name_position_y
   @map.map_name_position[1]
 end

 def map_name_pos_center_x?
   @map.map_name_position_centered[0]
 end

 def map_name_pos_center_y?
   @map.map_name_position_centered[1]
 end

 def map_name_LSD
   @map.map_name_letter_show_delay
 end

 def map_name_font_color
   c = @map.map_name_font_col_
   Color.new(c[0],c[1],c[2],c[3])
 end

 def map_name_font_out_color
   c = @map.map_name_font_ocol
   Color.new(c[0],c[1],c[2],c[3])
 end

 def map_name_bg
   @map.map_name_bg
 end

 def map_name_bg_x
   @map.map_name_bg_pos[0]
 end

 def map_name_bg_y
   @map.map_name_bg_pos[1]
 end

 def map_name_bg_showing?
   @map.map_name_bg_show
 end

 def ind_letter_fixx
   @map.map_name_ind_let_fixx
 end

 def ind_letter_size
   @map.map_name_ind_let_size
 end

 def ind_letter_font
   @map.map_name_ind_let_font
 end

 def ind_letter_bold
   @map.map_name_ind_let_bold
 end

 def ind_letter_ital
   @map.map_name_ind_let_ital
 end

 def ind_letter_color
   @map.map_name_ind_let_color
 end

 def ind_letter_outcolor
   @map.map_name_ind_let_outcolor
 end

 def ind_letter_fx
   @map.map_name_ind_let_fx
 end

 def ind_letter_slide
   @map.map_name_ind_let_slide
 end

end

#==============================================================================
class Game_Interpreter
#==============================================================================

 def reset_map_name
   $game_temp.mapname = nil
 end

end

#==============================================================================
class Sprite_MapName < Sprite
#==============================================================================

 include Map_Name_Window

 def initialize(letter, x = 0, y = 0, timer = 0, index = 0)
   super(nil)
   create_variables(timer, index, letter)
   get_letter_effects if @letter_effects[0]
   x = x_needs_fixed?(letter, x) if letter != nil
   y = y_needs_fixed?(letter, y) if letter != nil
   create_map_name(letter, x, y) if letter != nil
 end

 def create_variables(t, i, l)
   @open          = true
   @slide_left    = false
   @slide_right   = false
   @slide_up      = false
   @slide_down    = false
   @timer         = t
   @timer_val     = 0
   @letter_index  = i
   @angle_type    = nil
   @letter_effects = get_let_fx(l)
   @slide_distance = get_let_slide(l)
 end

 def get_letter_effects
   case @letter_effects[1]
   when 0 ; basic_left_slide
   when 1 ; basic_right_slide
   when 2 ; basic_left_slide ; get_angle_type(0)
   when 3 ; basic_right_slide ; get_angle_type(1)
   when 4 ; basic_left_slide ; get_angle_type(1)
   when 5 ; basic_right_slide ; get_angle_type(0)
   when 6 ; basic_left_spin ; get_angle_type(2)
   when 7 ; basic_right_spin ; get_angle_type(3)
   when 8 ; basic_right_slide ; get_angle_type(4)
   when 9 ; basic_left_slide ; get_angle_type(4)
   when 10; basic_right_slide ; get_angle_type(5)
   when 11; basic_left_slide ; get_angle_type(5)
   when 12; basic_up_slide
   when 13; basic_down_slide
   when 14; basic_up_slide ; basic_left_slide
   when 15; basic_up_slide ; basic_right_slide
   when 16; basic_down_slide ; basic_left_slide
   when 17; basic_down_slide ; basic_right_slide
   when 18; basic_up_slide ;basic_left_slide; basic_left_spin ;get_angle_type(2)
   when 19; basic_up_slide ;basic_left_slide; basic_right_spin ;get_angle_type(3)
   when 20; basic_up_slide ;basic_right_slide; basic_left_spin ;get_angle_type(2)
   when 21; basic_up_slide ;basic_right_slide; basic_right_spin ;get_angle_type(3)
   when 22; basic_down_slide ;basic_left_slide ; basic_left_spin ;get_angle_type(2)
   when 23; basic_down_slide ;basic_left_slide ; basic_right_spin ;get_angle_type(3)
   when 24; basic_down_slide ;basic_right_slide ; basic_left_spin ;get_angle_type(2)
   when 25; basic_down_slide ;basic_right_slide ; basic_right_spin ;get_angle_type(3)
   end
 end

 def get_let_fx(letter)
   $game_map.ind_letter_fx.each {|let|
   return [true, let[1]] if let[0] == @letter_index }
   return $game_map.map_name_effect
 end

 def get_let_slide(letter)
   $game_map.ind_letter_slide.each {|let|
   return let[1] if let[0] == @letter_index }
   return $game_map.map_name_slide
 end

 def x_needs_fixed?(letter, x)
   $game_map.ind_letter_fixx.each {|let|
   return x += let[1] if let[0] == @letter_index }
   return x
 end

 def y_needs_fixed?(letter, y)
   $game_map.ind_letter_fixx.each {|let|
   return y += let[2] if let[0] == @letter_index }
   return y
 end

 def create_map_name(letter, x, y)
   size = get_let_size(letter)
   self.bitmap = Bitmap.new(size,size)
   self.bitmap.font.name = get_let_font(letter)
   self.bitmap.font.size = size
   self.bitmap.font.bold = get_let_bold(letter)
   self.bitmap.font.italic = get_let_ital(letter)
   self.bitmap.font.color = get_letter_color(letter)
   self.bitmap.font.out_color = get_letter_outcolor(letter)
   self.bitmap.draw_text(0, 0, size, size, letter.to_s)
   self.x = x
   self.y = y + (size / 2).to_i
   self.z = Map_Name_z + 2
   self.opacity = 0
 end

 def get_let_font(letter)
   $game_map.ind_letter_font.each {|let|
   return let[1] if let[0] == @letter_index }
   return $game_map.map_name_font_name
 end

 def get_let_size(letter)
   $game_map.ind_letter_size.each {|let|
   return let[1] if let[0] == @letter_index }
   return $game_map.map_name_font_size
 end

 def get_let_bold(letter)
   $game_map.ind_letter_bold.each {|let|
   return let[1] if let[0] == @letter_index }
   return $game_map.map_name_font_bold
 end

 def get_let_ital(letter)
   $game_map.ind_letter_ital.each {|let|
   return let[1] if let[0] == @letter_index }
   return $game_map.map_name_font_italic
 end

 def get_letter_color(letter)
   $game_map.ind_letter_color.each do |let|
     if let[0] == @letter_index
       return Color.new(let[1],let[2],let[3],let[4])
     end
   end
   return $game_map.map_name_font_color
 end

 def get_letter_outcolor(letter)
   $game_map.ind_letter_outcolor.each do |let|
     if let[0] == @letter_index
       return Color.new(let[1],let[2],let[3],let[4])
     end
   end
   return $game_map.map_name_font_out_color    
 end

 def basic_left_slide
    @slide_left = true
   self.ox = -(@slide_distance).to_i
 end

 def basic_right_slide
    @slide_right = true
   self.ox = (@slide_distance).to_i
 end

 def basic_up_slide
   @slide_up = true
   self.oy = -(@slide_distance).to_i
 end

 def basic_down_slide
   @slide_down = true
   self.oy = (@slide_distance).to_i
 end

 def basic_left_spin
   @move_for_spin = true
 end

 def basic_right_spin
   @move_for_spin = true
 end

 def get_angle_type(angle_type)
   @angle_type = angle_type
   case angle_type
   when 0 ; self.angle =  50
   when 1 ; self.angle = -50
   when 2 ; self.angle = -360
   when 3 ; self.angle =  360
   when 4 ; self.angle =  (50 * (@timer / (@letter_index+1)))
   when 5 ; self.angle = -(50 * (@timer / (@letter_index+1)))
   end
 end

 def update
   super
   update_timer
   update_show
   update_slide if @open
   update_angle if @angle_type != nil
 end

 def update_timer
   return if @timer_val >= @timer
   @timer_val += 1
   self.opacity = 1
 end

 def update_show
   self.opacity += 1 if @open
   self.opacity -= 1 if !@open
   @open = false if self.opacity >= 255
 end

 def update_slide
   self.ox += 1 if self.ox < 0 && @slide_left
   self.ox -= 1 if self.ox > 0 && @slide_right
   self.oy += 1 if self.oy < 0 && @slide_up
   self.oy -= 1 if self.oy > 0 && @slide_down
 end

 def update_angle
   return if @angle_type == nil
   return if self.angle.between?(-0.49,0.49)
   case @angle_type
   when 0, 1 ; self.angle < 0 ? self.angle += 0.2 : self.angle -= 0.2
   when 2, 3 ; self.angle.between?(-5,5) ?
     self.angle < 0 ? self.angle += 0.5 : self.angle -= 0.5 :
     self.angle < 0 ? self.angle += 1.5 : self.angle -= 1.5
   when 4, 5 ; self.angle.between?(-10,10) ? self.angle.between?(-4,4) ?
     self.angle < 0 ? self.angle += 0.5 : self.angle -= 0.5 : # 2nd between
     self.angle < 0 ? self.angle += 1.5 : self.angle -= 1.5 : # 1st between
     self.angle < 0 ? self.angle += 2.5 : self.angle -= 2.5
   end
 end

 def dispose
   super
   if self.bitmap != nil
     self.bitmap.dispose
   end  
 end
 
end

#==============================================================================
class Sprite_MapIcon < Sprite_MapName
#==============================================================================

 def initialize(icon, x = 0, y = 0, timer, index)
   super(nil, x, y, timer, index)
   self.bitmap = Cache.system("Iconset")
   rect = Rect.new(icon % 16 * 24, icon / 16 * 24, 24, 24)
   self.bitmap.blt(0, 0, self.bitmap, rect)
   self.src_rect.set(rect.x, rect.y, 24, 24)
   self.x = x
   self.y = y
   self.z = Map_Name_z + 1
 end

 def update
   super
 end

 def dispose
   super
   if self.bitmap != nil
     self.bitmap.dispose
   end  
 end
 
end

#==============================================================================
class Sprite_MapName_BG < Sprite
#==============================================================================

 include Map_Name_Window

 def initialize(x, y, width, height, image = nil)
   super(nil)
   self.z = Map_Name_z
   self.opacity = 0
   @open = true
   if image == nil
     create_standard_bg(x, y, width, height)
   else
     create_background_image(x, y, image)
   end
   @timer = 0
   update
 end

 def create_standard_bg(x, y, width, height)
   self.bitmap = Bitmap.new(width,height)
   rect = Rect.new(0, 0,width,height)
   rect.width /= 2
   self.bitmap.gradient_fill_rect(rect, BackGround_Color_2, BackGround_Color_1)
   rect.x = rect.width
   self.bitmap.gradient_fill_rect(rect, BackGround_Color_1, BackGround_Color_2)
   self.x = x
   self.y = y + (height / 2 )
 end

 def create_background_image(x, y, image)
   self.bitmap = Cache.mapname_im(image)
   self.x = x
   self.y = y
 end

 def update
   super
   @timer += 1 if !@open
   self.opacity += 1 if @open
   self.opacity -= 1 if !@open
   @open = false if self.opacity >= 250
 end

 def dispose
   super
   if self.bitmap != nil
     self.bitmap.dispose
   end  
 end
 
end

#==============================================================================
module Spriteset_Map_Name
#==============================================================================

 def init_map_name_set
   return if $game_temp.mapname == $game_map.display_name
   $game_temp.mapname = $game_map.display_name
   create_map_name
   create_map_name_icon
   create_map_name_BG
   @delay_timer = 0
   @display_mn_timer = 0
 end

 def create_map_name_icon
   return unless $game_map.map_name_icon[0]
   x = $game_map.map_name_icon_pos_x
   y = $game_map.map_name_icon_pos_y
   x = (Graphics.width / 2) - (12) if $game_map.map_name_icon_pos_x_center?
   y = (Graphics.height / 2) - (12) if $game_map.map_name_icon_pos_y_center?
   timer = $game_map.map_name_LSD
   index = 0
   icon = $game_map.map_name_icon[1]
   @map_icon = Sprite_MapIcon.new(icon, x, y, timer, index)
 end

 def create_map_name
   x = $game_map.map_name_position_x
   y = $game_map.map_name_position_y
   n = $game_map.display_name.to_s.split(//)
   @map_name = []
   timer = $game_map.map_name_LSD
   index = 0
   fbvaal = ($game_map.map_name_font_bold ? 0 : 0) + ($game_map.map_name_font_italic ? 0 : 0)
   if $game_map.map_name_pos_center_x?
     n_size = ($game_map.display_name.size+1) * ($game_map.map_name_font_size + fbvaal )
     x = (Graphics.width / 2) - (n_size / 2)
   end
   if $game_map.map_name_pos_center_y?
     n_size = ($game_map.map_name_font_size + fbvaal )
     y = (Graphics.height / 2) - (n_size / 2)
   end
   for i in n
     letter = i[0]
     if letter == Map_Name_Window::NewLine_Letter
       y += $game_map.map_name_font_size
       x = $game_map.map_name_position_x - ($game_map.map_name_font_size)
       letter = ''
     end
     @map_name.push( Sprite_MapName.new(letter, x, y, timer, index))
     x += ($game_map.map_name_font_size / 4 * 3)
     timer += $game_map.map_name_LSD
     index += 1
   end
 end

 def create_map_name_BG
   return unless $game_map.map_name_bg_showing?
   return if $game_map.display_name == ''
   timer = $game_map.map_name_LSD
   mbgwid = ($game_map.display_name.size) * @map_name[0].width / 4 * 3
   mbghei = @map_name[0].height
   mbgx = $game_map.map_name_bg_x
   mbgy = $game_map.map_name_bg_y
   image = $game_map.map_name_bg
   @map_BG = Sprite_MapName_BG.new(mbgx, mbgy, mbgwid, mbghei, image) if @map_name != nil
 end

 def update_map_name_set
   if $game_temp.mapname != $game_map.display_name
     dispose_map_name_set
     init_map_name_set
   end
   return if @map_name == nil
   update_map_name_DPBz if @map_name != nil
   update_map_name_BG if @map_BG != nil
   update_map_name_icon if @map_icon != nil
   @display_mn_timer += 1
   if @display_mn_timer > 600
     @map_name.each {|i| return if i.opacity > 0 }
     return if @map_icon != nil && @map_icon.opacity > 0
     return if @map_BG != nil && @map_BG.opacity > 0
     dispose_map_name_set
   end
 end

 def update_map_name_DPBz
   return if @delay_timer == nil
   @delay_timer += 1
   return unless @delay_timer >= Map_Name_Window::Delay_Timer
   @map_name.each {|sprite| sprite.update } if @map_name != nil
 end

 def update_map_name_BG
   @map_BG.update if @map_BG != nil
 end

 def update_map_name_icon
   @map_icon.update if @map_icon != nil
 end

 def dispose_map_name_set
   @map_BG.dispose if @map_BG != nil
   @map_icon.dispose if @map_icon != nil
   @map_name.each {|sprite| sprite.dispose } if @map_name != nil
   @map_BG = nil
   @map_icon = nil
   @map_name = nil
   @delay_timer = nil
 end

end

#==============================================================================
class Spriteset_Map
#==============================================================================

 include Spriteset_Map_Name

 alias :initialize_map_name :initialize
 alias :dispose_map_name    :dispose
 alias :update_map_name     :update

 def initialize
   initialize_map_name
   init_map_name_set
 end

 def dispose
   dispose_map_name
   dispose_map_name_set
 end

 def update
   update_map_name
   update_map_name_set
 end

end

#==============================================================================
class Window_MapName < Window_Base
#==============================================================================

 if Map_Name_Window::Remove_Default_Name_Window
 
   def refresh
     contents.clear
   end
 
 end # if Map_Name_Window::Remove_Default_Name_Window

end

#==============================================================================#
#                               - SCRIPT END -                                 #
#==============================================================================#
#                      http://dekitarpg.wordpress.com/                         #
#==============================================================================#
avatar
Moonwolf
Admin
Admin

Сообщения : 396
Репутация : 15
Дата регистрации : 2009-01-13
Возраст : 34
Откуда : город воинской славы Елец

http://moonwolf.toxicfarm.com

Вернуться к началу Перейти вниз

Предыдущая тема Следующая тема Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения