Advertisement
roninator2

Credits Scene

Dec 17th, 2024
20
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 14.23 KB | None | 0 0
  1. # ╔═══════════════════════════════════════════════╦════════════════════╗
  2. # ║ Title: Credits Scene                          ║  Version: 1.00     ║
  3. # ║ Author: Roninator2                            ║                    ║
  4. # ╠═══════════════════════════════════════════════╬════════════════════╣
  5. # ║ Function:                                     ║   Date Created     ║
  6. # ║   Display credits for your                    ╠════════════════════╣
  7. # ║   hard work & attribution                     ║    18 Oct 2021     ║
  8. # ╚═══════════════════════════════════════════════╩════════════════════╝
  9. # ╔════════════════════════════════════════════════════════════════════╗
  10. # ║ Requires: nil                                                      ║
  11. # ║                                                                    ║
  12. # ╚════════════════════════════════════════════════════════════════════╝
  13. # ╔════════════════════════════════════════════════════════════════════╗
  14. # ║ Brief Description:                                                 ║
  15. # ║        Provide an alternate method of ending credits scene         ║
  16. # ╚════════════════════════════════════════════════════════════════════╝
  17. # ╔════════════════════════════════════════════════════════════════════╗
  18. # ║ Instructions:                                                      ║
  19. # ║   Modify the hash array with the credits to display                ║
  20. # ║                                                                    ║
  21. # ║ Credits = {         # page 1                                       ║
  22. # ║   0 => { 0 => {     # title text                                   ║
  23. # ║            :text         => "Producers",                           ║
  24. # ║            :font         => "Arial",                               ║
  25. # ║            :font_size    => 50,                                    ║
  26. # ║            :red          => 0,                                     ║
  27. # ║            :green        => 250,                                   ║
  28. # ║            :blue         => 0,                                     ║
  29. # ║            },                                                      ║
  30. # ║          1 => {     # credits to                                   ║
  31. # ║            :text         => "Kadokawa",                            ║
  32. # ║              },                                                    ║
  33. # ║         },          # page 2                                       ║
  34. # ║   1 => { 0 => {                                                    ║
  35. # ║            :text         => "Developers",                          ║
  36. # ║            :font         => "Arial",                               ║
  37. # ║            :font_size    => 50,                                    ║
  38. # ║            :red          => 0,                                     ║
  39. # ║            :green        => 250,                                   ║
  40. # ║            :blue         => 0,                                     ║
  41. # ║            },                                                      ║
  42. # ║          1 => {                                                    ║
  43. # ║            :text         => "Roninator2",                          ║
  44. # ║              },                                                    ║
  45. # ║         },                                                         ║
  46. # ║   2 => { 0 => {  # breaks from the scene                           ║
  47. # ║            :text         => "junk",                                ║
  48. # ║              },  # used if you want to exit                        ║
  49. # ║         },                                                         ║
  50. # ╚════════════════════════════════════════════════════════════════════╝
  51. # ╔════════════════════════════════════════════════════════════════════╗
  52. # ║ Updates:                                                           ║
  53. # ║ 1.00 - 18 Oct 2021 - Script finished                               ║
  54. # ║                                                                    ║
  55. # ╚════════════════════════════════════════════════════════════════════╝
  56. # ╔════════════════════════════════════════════════════════════════════╗
  57. # ║ Credits and Thanks:                                                ║
  58. # ║   Roninator2                                                       ║
  59. # ║                                                                    ║
  60. # ╚════════════════════════════════════════════════════════════════════╝
  61. # ╔════════════════════════════════════════════════════════════════════╗
  62. # ║ Terms of use:                                                      ║
  63. # ║  Follow the original Authors terms of use where applicable         ║
  64. # ║    - When not made by me (Roninator2)                              ║
  65. # ║  Free for all uses in RPG Maker except nudity                      ║
  66. # ║  Anyone using this script in their project before these terms      ║
  67. # ║  were changed are allowed to use this script even if it conflicts  ║
  68. # ║  with these new terms. New terms effective 03 Apr 2024             ║
  69. # ║  No part of this code can be used with AI programs or tools        ║
  70. # ║  Credit must be given                                              ║
  71. # ╚════════════════════════════════════════════════════════════════════╝
  72.  
  73. # ╔════════════════════════════════════════════════════════════════════╗
  74. # ║                      End of editable region                        ║
  75. # ╚════════════════════════════════════════════════════════════════════╝
  76.  
  77. module R2_Game_Credits
  78.   # key control to change to the next page
  79.   Next_Page             = :C
  80.   Key_Text              = "Z"
  81.   # :A = shift, :B = X, :C = Z, :X = A, :Y = S, :Z = D, :L = Q, :R = W
  82.   # Music to play. If blank, no music will play
  83.   BGM                   = ""
  84.   # Window Opacity and skin
  85.   Window_Skin           = "Window"
  86.   Window_Opacity        = 0
  87.   Window_Back_Opacity   = 0
  88.   # set text font and size
  89.   Default_Font          = "Times New Roman"
  90.   Default_Font_Size     = 25
  91.   # set default text color (255, 255, 255) = white
  92.   RED                   = 255
  93.   GREEN                 = 255
  94.   BLUE                  = 255
  95.   # space between the title and the credits & space from top of screen & title
  96.   Title_Shift           = 40
  97.   # scene break text. used to exit scene automatically
  98.   Scene_Break           = "junk"
  99.   # variable used to save credit page
  100.   Page_Var              = 2
  101. end
  102.  
  103. module Credit_Text
  104.   # only the text needs to be there.
  105.   # Zero entry is for the title, one onwards is for the credits
  106.   Credits = {
  107.       0 => {
  108.           0 => {
  109.           :text         => "Production",
  110.           :font         => "Arial",
  111.           :font_size    => 50,
  112.           :red          => 0,      
  113.           :green        => 250,
  114.           :blue         => 0
  115.             },
  116.           1 => {
  117.           :text         => "Enterbrain",
  118.             },
  119.           2 => {
  120.           :text         => "Kadakowa",
  121.             },
  122.           3 => {
  123.           :text         => "Gotcha, Gotcha Games",
  124.             },
  125.           4 => {
  126.           :text         => "Text in here",
  127.             },
  128.           5 => {
  129.           :text         => "Who helped me",
  130.             },
  131.           6 => {
  132.           :text         => "No credit for you",
  133.             },
  134.       },
  135.       # page two
  136.     1 => {
  137.           0 => {
  138.           :text         => "Designers",
  139.           :font         => "Arial",
  140.           :font_size    => 50,
  141.           :red          => 0,      
  142.           :green        => 250,
  143.           :blue         => 0
  144.             },
  145.            1 => {
  146.            :text        => "Roninator2",
  147.           },
  148.       },
  149.     2 => {
  150.           0 => {
  151.           :text         => "junk", # returns to map
  152.             },
  153.       },
  154.     3 => {
  155.           0 => {
  156.           :text         => "Returned",
  157.           :font         => "Arial",
  158.           :font_size    => 50,
  159.           :red          => 0,      
  160.           :green        => 250,
  161.           :blue         => 0
  162.             },
  163.            1 => {
  164.            :text        => "Other people",
  165.           },
  166.       },
  167.     4 => {
  168.           0 => {
  169.           :text         => "Lot of Credits",
  170.           :font         => "Arial",
  171.           :font_size    => 50,
  172.           :red          => 0,      
  173.           :green        => 250,
  174.           :blue         => 0
  175.             },
  176.            1 => {
  177.            :text        => "Must be a big game",
  178.           },
  179.       },
  180.     5 => {
  181.           0 => {
  182.           :text         => "junk", # returns to map
  183.             },
  184.       },
  185.     6 => {
  186.           0 => {
  187.           :text         => "Extra Credits",
  188.           :font         => "Arial",
  189.           :font_size    => 50,
  190.           :red          => 0,      
  191.           :green        => 250,
  192.           :blue         => 0
  193.             },
  194.            1 => {
  195.            :text        => "Did you pay for these",
  196.           },
  197.       },
  198.     }
  199. end
  200.  
  201. class Game_Interpreter
  202.   def game_credits
  203.     SceneManager.call(Scene_Game_Credits)
  204.   end
  205. end
  206.  
  207. class Window_Credits < Window_Base
  208.   def initialize(x, y, width, height)
  209.     super
  210.     self.windowskin = Cache.system(R2_Game_Credits::Window_Skin)
  211.     @scene_out = false
  212.     @w_width = width
  213.     @w_height = height
  214.   end
  215.   def draw_credits(data)
  216.     contents.clear
  217.     # draw here
  218.     @disp_data = data
  219.     old_font = Font.default_name
  220.     for i in 0..@disp_data.size - 1
  221.       text = @disp_data[i][:text]
  222.       if text == R2_Game_Credits::Scene_Break
  223.         @scene_out = true
  224.         break
  225.       end
  226.       font = @disp_data[i][:font].nil? ? R2_Game_Credits::Default_Font : @disp_data[i][:font]
  227.       font_size = @disp_data[i][:font_size].nil? ? R2_Game_Credits::Default_Font_Size : @disp_data[i][:font_size]
  228.       red = @disp_data[i][:red].nil? ? R2_Game_Credits::RED : @disp_data[i][:red]
  229.       green = @disp_data[i][:green].nil? ? R2_Game_Credits::GREEN : @disp_data[i][:green]
  230.       blue = @disp_data[i][:blue].nil? ? R2_Game_Credits::BLUE : @disp_data[i][:blue]
  231.       x = (@w_width - ((text.size * font_size) / 2)) / 2
  232.       if i == 0
  233.         y = 0 + R2_Game_Credits::Title_Shift
  234.       else
  235.         y = (i + 1) * font_size + R2_Game_Credits::Title_Shift * 2
  236.       end
  237.       Font.default_name = font
  238.       width = (text.size * font_size)
  239.       colour = Color.new(red, green, blue, 255)
  240.       contents.font.color = colour
  241.       contents.font.size = font_size
  242.       draw_text(x, y, width, font_size, text)
  243.     end
  244.     Font.default_name = old_font
  245.     reset_font_settings
  246.     btn = "Press #{R2_Game_Credits::Key_Text} to continue"
  247.     draw_text(@w_width / 2 - (btn.size * 12 / 2), @w_height - 50, 200, line_height, btn, 1)
  248.   end
  249.   def scene_out
  250.     return @scene_out
  251.   end
  252. end
  253.  
  254. class Scene_Game_Credits < Scene_Base
  255.   def start
  256.     super
  257.     create_window
  258.     play_music
  259.     scene_control
  260.     create_credits
  261.   end
  262.   def create_window
  263.     @window = Window_Credits.new(0,0,Graphics.width,Graphics.height)
  264.     @window.opacity = R2_Game_Credits::Window_Opacity
  265.     @window.back_opacity = R2_Game_Credits::Window_Back_Opacity
  266.   end  
  267.   def play_music
  268.     file = "Audio/BGM/" + R2_Game_Credits::BGM.to_s rescue nil
  269.     if file != nil
  270.       Audio.bgm_play(file,100,100) rescue nil
  271.     end  
  272.   end
  273.   def scene_control
  274.     @credit_page = nil
  275.     @page_count = $game_variables[R2_Game_Credits::Page_Var]
  276.     @page_count += 1 if @page_count > 0
  277.   end
  278.   def create_credits
  279.     @credit_page = Credit_Text::Credits[@page_count]
  280.     if @credit_page.nil?
  281.       SceneManager.return
  282.     else
  283.       @window.draw_credits(@credit_page)
  284.     end
  285.   end
  286.   def update
  287.     super
  288.     if @window.scene_out
  289.       $game_variables[R2_Game_Credits::Page_Var] = @page_count
  290.       return_scene
  291.     end
  292.     if Input.trigger?(R2_Game_Credits::Next_Page)
  293.       @page_count += 1
  294.       create_credits
  295.     end
  296.   end
  297. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement