ZEkA10000

Visual Dialogues RPG Maker VX Ace

Nov 6th, 2019
343
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 10.49 KB | None | 0 0
  1. class Dialogue
  2.  
  3.  
  4.   #Coordinates for avatars
  5.   COORDS = {
  6.   "AJ"   => [[-64, 124],[388, 124]],
  7.   "PP"   => [[-64, 140],[388, 140]],
  8.   "FS"   => [[-64, 140],[388, 140]],
  9.   "RD"   => [[-64, 140],[388, 140]],
  10.   "TS"   => [[-64, 140],[388, 140]],
  11.   "RR"   => [[-64, 140],[338, 140]],
  12.   "SP"   => [[ 30, 200],    nil   ],
  13.   "LR"   => [    nil   ,[100, -26]],
  14.   "TR"   => [[-64, 140],[388, 140]]}
  15.  
  16.   def initialize
  17.     @characters  = []
  18.     @active_char = [nil, false, false, false, false]
  19.   end
  20.  
  21.   def reset_actives
  22.     @active_char = [nil, false, false, false, false]
  23.   end
  24.  
  25.   def actived?(id)
  26.     return @active_char[id]
  27.   end
  28.   #=============================================================================
  29.   #          LEFT SIDE AVATARS
  30.   #=============================================================================
  31.  
  32.   #Show first avatar
  33.   def show10(char, emote)
  34.     show_pic(char, emote, 4, "l")
  35.     return nil
  36.   end
  37.   #Show second avatar
  38.   def show20(char, emote)
  39.     show_pic(char, emote, 2, "l")
  40.     return nil
  41.   end
  42.  
  43.   #Change emotion for avatar
  44.   def set10(emote)
  45.     change_emote(emote, 4)
  46.     return nil
  47.   end
  48.   def set20(emote)
  49.     change_emote(emote, 2)
  50.     return nil
  51.   end
  52.  
  53.   #Change avatar
  54.   def change10(char, emote)
  55.     change_avatar(4, char, emote)
  56.     return nil
  57.   end
  58.   def change20(char, emote)
  59.     change_avatar(2, char, emote)
  60.     return nil
  61.   end  
  62.  
  63.   #=============================================================================
  64.   #          RIGHT SIDE AVATARS
  65.   #=============================================================================
  66.  
  67.   #Show first avatar
  68.   def show01(char, emote)
  69.     show_pic(char, emote, 3, "r")
  70.     return nil
  71.   end
  72.   #Show second avatar
  73.   def show02(char, emote)
  74.     show_pic(char, emote, 1, "r")
  75.     return nil
  76.   end
  77.  
  78.   #Change emotion for avatar
  79.   def set01(emote)
  80.     change_emote(emote, 3)
  81.     return nil
  82.   end
  83.   def set02(emote)
  84.     change_emote(emote, 1)
  85.     return nil
  86.   end
  87.  
  88.   #Change avatar
  89.   def change01(char, emote)
  90.     change_avatar(3, char, emote)
  91.     return nil
  92.   end
  93.   def change02(char, emote)
  94.     change_avatar(1, char, emote)
  95.     return nil
  96.   end  
  97.  
  98.   #=============================================================================
  99.   #          ACTIONS
  100.   #=============================================================================
  101.   def change_avatar(id, char, emote)
  102.     case id
  103.     when 1, 3
  104.       face_side = "Right side faces"
  105.       x1, y1 = COORDS[char][1][0], COORDS[char][1][1]
  106.       out = 500
  107.     when 2, 4
  108.       face_side = "Left side faces"
  109.       x1, y1 = COORDS[char][0][0], COORDS[char][0][1]
  110.       out = -500
  111.     end
  112.     x = $game_map.screen.pictures[id].x
  113.     y = $game_map.screen.pictures[id].y
  114.     name = "Avatars/#{face_side}/#{char}/#{emote}.png"
  115.     nm = $game_map.screen.pictures[id].name
  116.     $game_map.screen.pictures[10].show(nm, 0, x, y, 100, 100, 255, 0)
  117.     $game_map.screen.pictures[10].move(0, x + out, y, 100, 100, 255,   0, 30)
  118.     $game_map.screen.pictures[id].show(name, 0, x1 + out, y1, 100, 100, 255, 0)
  119.     $game_map.screen.pictures[id].move(0, x1, y1, 100, 100, 255,   0, 30)
  120.     @characters[id] = char
  121.   end
  122.  
  123.   def change_emote(emote, id)
  124.     old_name = $game_map.screen.pictures[id].name
  125.     arr = []
  126.     i = 0
  127.     while i < old_name.size
  128.       arr[i] = old_name[i]
  129.       i +=1
  130.     end
  131.  
  132.     while arr[-1] != "/"
  133.       arr.pop
  134.     end
  135.     name = arr.join + emote
  136.     x = $game_map.screen.pictures[id].x
  137.     y = $game_map.screen.pictures[id].y
  138.     tona = $game_map.screen.pictures[id].tone
  139.     $game_map.screen.pictures[id].show(name, 0, x, y, 100, 100, 255, 0)
  140.     $game_map.screen.pictures[id].start_tone_change(tona, 1)
  141.   end
  142.  
  143.   def show_pic(char, emote, id, side)
  144.     case side
  145.       when "l"
  146.         face_side = "Left side faces"
  147.         x, y = COORDS[char][0][0], COORDS[char][0][1]
  148.         if char == "SP"
  149.           out = x - 300
  150.         else
  151.           out = x - 500
  152.         end
  153.       when "r"
  154.         face_side = "Right side faces"
  155.         x, y = COORDS[char][1][0], COORDS[char][1][1]
  156.         if char == "SP"
  157.           out = x + 300
  158.         else
  159.           out = x + 500
  160.         end
  161.     end
  162.     name = "Avatars/#{face_side}/#{char}/#{emote}.png"
  163.     puts name
  164.     if File.exist?("Graphics/Pictures/#{name}")
  165.       case id
  166.       when 1
  167.         y -= 30
  168.         x -= 30
  169.       when 2
  170.         y -= 30
  171.         x += 30
  172.       when 3
  173.         x += 30
  174.       when 4
  175.         x -= 30
  176.       end
  177.       if char == "SP"
  178.         time = 15
  179.       else
  180.         time = 30
  181.       end
  182.       $game_map.screen.pictures[id].show(name, 0, out,   y, 100, 100, 255, 0)
  183.       $game_map.screen.pictures[id].move(0,    x,   y, 100, 100, 255,   0, time)
  184.       $game_map.screen.pictures[id].start_tone_change(Tone.new(-50, -50, -50, 0), 1)
  185.       @characters[id] = char
  186.       p @characters
  187.     else
  188.       puts "Oops! Probably Image is not exist in your folder."
  189.     end
  190.   end
  191.  
  192.   def select(id)
  193.     x = []
  194.     y = []
  195.     x[1], y[1] = COORDS[@characters[1]][1][0] - 30, COORDS[@characters[1]][1][1] - 30 if @characters[1] != nil
  196.     x[2], y[2] = COORDS[@characters[2]][0][0] + 30, COORDS[@characters[2]][0][1] - 30 if @characters[2] != nil
  197.     x[3], y[3] = COORDS[@characters[3]][1][0] + 30, COORDS[@characters[3]][1][1]      if @characters[3] != nil
  198.     x[4], y[4] = COORDS[@characters[4]][0][0] - 30, COORDS[@characters[4]][0][1]      if @characters[4] != nil
  199.  
  200.     case id
  201.     when "01"
  202.       char_id = 3
  203.     when "02"
  204.       char_id = 1
  205.     when "10"
  206.       char_id = 4
  207.     when "20"
  208.       char_id = 2
  209.     end
  210.    
  211.     reset_actives
  212.     @active_char[char_id] = true if char_id != nil
  213.    
  214.     if $game_map.screen.pictures[1].name != ""
  215.       @active_char[1] ? x1 = x[1] - 30 : x1 = x[1]
  216.       $game_map.screen.pictures[1].move(0, x1, y[1], 100, 100, 255,   0, 20)
  217.     end
  218.     if $game_map.screen.pictures[2].name != ""
  219.       @active_char[2] ? x2 = x[2] + 30 : x2 = x[2]
  220.       $game_map.screen.pictures[2].move(0, x2, y[2], 100, 100, 255,   0, 20)
  221.     end
  222.     if $game_map.screen.pictures[3].name != ""
  223.       @active_char[3] ? x3 = x[3] - 30 : x3 = x[3]
  224.       $game_map.screen.pictures[3].move(0, x3, y[3], 100, 100, 255,   0, 20)
  225.     end
  226.     if $game_map.screen.pictures[4].name != ""
  227.       @active_char[4] ? x4 = x[4] + 30 : x4 = x[4]
  228.       $game_map.screen.pictures[4].move(0, x4, y[4], 100, 100, 255,   0, 20)
  229.     end
  230.    
  231.     (1..4).each do |i|
  232.       if actived?(i)
  233.         if $game_map.screen.pictures[i].name != ""
  234.           $game_map.screen.pictures[i].start_tone_change(Tone.new(  0,   0,   0, 0), 1)
  235.         end
  236.       else
  237.         if $game_map.screen.pictures[i].name != ""
  238.           $game_map.screen.pictures[i].start_tone_change(Tone.new(-50, -50, -50, 0), 1)
  239.         end
  240.       end
  241.     end
  242.     return nil
  243.   end
  244.    
  245.   def hide_all
  246.     hide_char("01")
  247.     hide_char("02")
  248.     hide_char("10")
  249.     hide_char("20")
  250.   end
  251.   def hide_char(inp)
  252.     case inp
  253.     when "01"
  254.       char_id = 3
  255.     when "02"
  256.       char_id = 1
  257.     when "10"
  258.       char_id = 4
  259.     when "20"
  260.       char_id = 2
  261.     end
  262.     if @characters[char_id] != nil
  263.       x = $game_map.screen.pictures[char_id].x
  264.       y = $game_map.screen.pictures[char_id].y
  265.       if    char_id == 2 or char_id == 4
  266.         targ = $game_map.screen.pictures[char_id].x - 600
  267.       elsif char_id == 1 or char_id == 3
  268.         targ = $game_map.screen.pictures[char_id].x + 600
  269.       end
  270.       if $game_map.screen.pictures[char_id].name != ""
  271.         $game_map.screen.pictures[char_id].move(0, targ, y, 100, 100, 255,   0, 20)
  272.       end
  273.     end
  274.     return ''
  275.   end
  276.    
  277.   def dialogue_end
  278.     if $game_map.screen.pictures[1].name != ""
  279.       $game_map.screen.pictures[1].erase
  280.     end
  281.     if $game_map.screen.pictures[10].name != ""
  282.       $game_map.screen.pictures[10].erase
  283.     end
  284.     if $game_map.screen.pictures[2].name != ""
  285.       $game_map.screen.pictures[2].erase
  286.     end
  287.     if $game_map.screen.pictures[3].name != ""
  288.       $game_map.screen.pictures[3].erase
  289.     end
  290.     if $game_map.screen.pictures[4].name != ""
  291.       $game_map.screen.pictures[4].erase
  292.     end
  293.   end
  294. end  
  295.    
  296.  
  297.  
  298. module DataManager
  299.   def self.create_game_objects
  300.     $game_temp          = Game_Temp.new
  301.     $game_system        = Game_System.new
  302.     $game_timer         = Game_Timer.new
  303.     $game_message       = Game_Message.new
  304.     $game_switches      = Game_Switches.new
  305.     $game_variables     = Game_Variables.new
  306.     $game_self_switches = Game_SelfSwitches.new
  307.     $game_actors        = Game_Actors.new
  308.     $game_party         = Game_Party.new
  309.     $game_troop         = Game_Troop.new
  310.     $game_map           = Game_Map.new
  311.     $game_player        = Game_Player.new
  312.  
  313.     $dialog             = Dialogue.new
  314.   end
  315. end
  316.  
  317. class Window_Base < Window
  318.   def convert_escape_characters(text)
  319.     result = text.to_s.clone
  320.     result.gsub!(/\\/)                            { "\e" }
  321.     result.gsub!(/\e\e/)                          { "\\" }
  322.     result.gsub!(/\eV\[(\d+)\]/i)                 { $game_variables[$1.to_i] }
  323.     result.gsub!(/\eN\[(\d+)\]/i)                 { actor_name($1.to_i) }
  324.     result.gsub!(/\eP\[(\d+)\]/i)                 { party_member_name($1.to_i) }
  325.     result.gsub!(/\eG/i)                          { Vocab::currency_unit }
  326.     result.gsub!(/\eALD\[(.+?), (.+?)\]/i)        { $dialog.show10($1, $2)}
  327.     result.gsub!(/\eALU\[(.+?), (.+?)\]/i)        { $dialog.show20($1, $2)}
  328.     result.gsub!(/\eARD\[(.+?), (.+?)\]/i)        { $dialog.show01($1, $2)}
  329.     result.gsub!(/\eARU\[(.+?), (.+?)\]/i)        { $dialog.show02($1, $2)}
  330.     result.gsub!(/\eEMLD\[(.+?)\]/i)              { $dialog.set10($1)}
  331.     result.gsub!(/\eEMLU\[(.+?)\]/i)              { $dialog.set20($1)}
  332.     result.gsub!(/\eEMRD\[(.+?)\]/i)              { $dialog.set01($1)}
  333.     result.gsub!(/\eEMRU\[(.+?)\]/i)              { $dialog.set02($1)}
  334.     result.gsub!(/\eCHALD\[(.+?), (.+?)\]/i)      { $dialog.change10($1, $2)}
  335.     result.gsub!(/\eCHALU\[(.+?), (.+?)\]/i)      { $dialog.change20($1, $2)}
  336.     result.gsub!(/\eCHARD\[(.+?), (.+?)\]/i)      { $dialog.change01($1, $2)}
  337.     result.gsub!(/\eCHARU\[(.+?), (.+?)\]/i)      { $dialog.change02($1, $2)}
  338.     result.gsub!(/\eSWITCH\[(.+?)\]/i)            { $dialog.select($1)}
  339.     result.gsub!(/\eEND/i)                        { $dialog.dialogue_end}
  340.     result.gsub!(/\eHIDEA/i)                      { $dialog.hide_all}
  341.     result.gsub!(/\eHIDE\[(.+?)\]/i)              { $dialog.hide_char($1)}
  342.     result
  343.   end
  344. end
Advertisement
Add Comment
Please, Sign In to add comment