Advertisement
TechSkylander1518

BW Gender Selector v19

Jul 11th, 2023
1,868
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 9.52 KB | None | 0 0
  1. #===============================================================================
  2. # - BW Gender Selector v2.2
  3. #
  4. # Original version by KleinStudio
  5. #
  6. # Updated Version for Essentials v18 by DeepBlue PacificWaves
  7. #
  8. #
  9. # The original post can be found in: www.deviantart.com/kleinstudio/gallery
  10. #
  11. # The version I updated can be found in the Pokemon Essentials BW V3.1.1,
  12. # available in the same gallery.
  13. #===============================================================================
  14. # Instructions:
  15. #
  16. # Use the call: pbGenderSelector to play the scene. You can have the script show
  17. # the trainer sprite, instead of the Intro sprites in Pictures, by changing the
  18. # lines:
  19. #
  20. # TRAINERMALE       = "Graphics/Pictures/introBoy"
  21. # TRAINERFEMALE     = "Graphics/Pictures/introGirl"
  22. #
  23. # to:
  24. #
  25. # TRAINERMALE       = "Graphics/Trainers/trainer000"
  26. # TRAINERFEMALE     = "Graphics/Trainers/trainer001"
  27. #
  28. # Otherwise, is a pretty forward script.
  29. #
  30. #===============================================================================
  31. # Original Instructions by KleinStudio:
  32. #
  33. # When it's true the script will also start the text entry scene for
  34. # write your trainer name
  35. #
  36. # [Note: he is refering to WRITETRAINERNAME = true]
  37. #===============================================================================
  38.  
  39. PluginManager.register({
  40.   :name => "BW Gender Selector",
  41.   :version => "2.2",
  42.   :credits => ["KleinStudio", "DeepBlue PacificWaves"],
  43.   :link => "https://reliccastle.com/resources/491/"
  44. })
  45.  
  46. #===============================================================================
  47. # CUSTOMITAZION
  48.  
  49. WRITETRAINERNAME  = true
  50. TRAINERMALE       = "Graphics/Pictures/introBoy"
  51. TRAINERFEMALE     = "Graphics/Pictures/introGirl"
  52.  
  53. #===============================================================================
  54.  
  55. class GenderSelectorScene
  56.  
  57. def pbStartScene
  58. @sprites={}
  59. @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
  60. @viewport.z=99999
  61. @select=-1
  62. @finished=false
  63.  
  64. #===================================================
  65. # Create bars
  66. #===================================================
  67.  
  68. @sprites["bg"]=Sprite.new(@viewport)
  69. @sprites["bg"].bitmap=RPG::Cache.picture("introbg")
  70.  
  71. @sprites["gendergirl"] = Sprite.new(@viewport)
  72. @sprites["gendergirl"].bitmap = RPG::Cache.picture("genderselect")
  73. @sprites["gendergirl"].y=Graphics.height/2
  74. @sprites["gendergirl"].x=Graphics.width
  75. @sprites["genderboy"] = Sprite.new(@viewport)
  76. @sprites["genderboy"].bitmap = RPG::Cache.picture("genderselect")
  77. @sprites["genderboy"].y=Graphics.height/2
  78. @barwidth=@sprites["gendergirl"].bitmap.width
  79. @barheight=@sprites["gendergirl"].bitmap.height/2
  80. @sprites["gendergirl"].src_rect.set(0,0,@barwidth,@barheight)
  81. @sprites["genderboy"].src_rect.set(0,@barheight,@barwidth,@barheight)
  82. @sprites["gendergirl"].oy=@barheight/2
  83. @sprites["genderboy"].oy=@barheight/2
  84. @sprites["gendergirl"].ox=@barwidth/2-@barwidth/6
  85. @sprites["genderboy"].ox=@barwidth/2+@barwidth/6
  86.  
  87.  
  88. #===================================================
  89. # Create trainer sprites
  90. #===================================================
  91.   @sprites["girl"]=Sprite.new(@viewport)
  92.   @sprites["girl"].bitmap=Bitmap.new(TRAINERFEMALE)
  93.   @sprites["girl"].zoom_x=2.0; @sprites["girl"].zoom_y=2.0  
  94.   @totalframeg=@sprites["girl"].bitmap.width/@sprites["girl"].bitmap.height
  95.   @totalframeg=1 if @totalframeg<1
  96.   realwidthg=@sprites["girl"].bitmap.width/@totalframeg
  97.   @sprites["girl"].src_rect.set((@totalframeg-1)*realwidthg, 0,
  98.   realwidthg,@sprites["girl"].bitmap.height)
  99.   @sprites["girl"].oy=@sprites["girl"].bitmap.height/2
  100.   @sprites["girl"].ox=realwidthg/2
  101.   @sprites["girl"].x=412
  102.   @sprites["girl"].y=Graphics.height/2
  103.  
  104.   @sprites["boy"]=Sprite.new(@viewport)
  105.   @sprites["boy"].bitmap=Bitmap.new(TRAINERMALE)
  106.   @sprites["boy"].zoom_x=2.0; @sprites["boy"].zoom_y=2.0  
  107.   @totalframeb=@sprites["boy"].bitmap.width/@sprites["boy"].bitmap.height
  108.   @totalframeb=1 if @totalframeb<1
  109.   realwidthb=@sprites["boy"].bitmap.width/@totalframeb
  110.   @sprites["boy"].src_rect.set((@totalframeb-1)*realwidthb, 0,
  111.   realwidthb,@sprites["boy"].bitmap.height)
  112.   @sprites["boy"].oy=@sprites["boy"].bitmap.height/2
  113.   @sprites["boy"].ox=realwidthb/2
  114.   @sprites["boy"].x=100
  115.   @sprites["boy"].y=Graphics.height/2
  116.  
  117.   @BOYX=@sprites["boy"].x
  118.   @GENDERBOYX=@sprites["genderboy"].x
  119.  
  120.   @GIRLX=@sprites["girl"].x
  121.   @GENDERGIRLX=@sprites["gendergirl"].x
  122.  
  123.   @sprites["msgwindow"]=pbCreateMessageWindow(@viewport)
  124.  
  125.   @sprites["bg"].opacity=0
  126.   @sprites["genderboy"].opacity=0
  127.   @sprites["boy"].opacity=0
  128.   @sprites["gendergirl"].opacity=0
  129.   @sprites["girl"].opacity=0
  130.  
  131. end
  132.  
  133.  
  134. def pbEndScene
  135.   pbDisposeSpriteHash(@sprites)
  136.   @viewport.dispose
  137. end
  138.    
  139. def pbHide
  140. 10.times do
  141. Graphics.update
  142. @sprites["bg"].opacity-=25.5
  143. @sprites["genderboy"].opacity-=25.5
  144. @sprites["boy"].opacity-=25.5
  145. @sprites["gendergirl"].opacity-=25.5
  146. @sprites["girl"].opacity-=25.5
  147. end
  148. end
  149.  
  150. def pbShow
  151. 10.times do
  152. Graphics.update
  153. @sprites["bg"].opacity+=25.5
  154. @sprites["genderboy"].opacity+=25.5
  155. @sprites["boy"].opacity+=25.5
  156. @sprites["gendergirl"].opacity+=25.5
  157. @sprites["girl"].opacity+=25.5
  158. end
  159. end
  160.  
  161. def selectBoy
  162. frame=0
  163. 6.times do
  164. Graphics.update
  165. frame+=1
  166. @sprites["genderboy"].tone.set(0,0,0,0)
  167. @sprites["boy"].tone.set(0,0,0,0)
  168.  
  169. @sprites["genderboy"].x+=12
  170. @sprites["boy"].x+=12
  171.  
  172. if @select==-1
  173. @sprites["gendergirl"].x+=6
  174. @sprites["girl"].x+=6
  175. else
  176. @sprites["gendergirl"].x+=12
  177. @sprites["girl"].x+=12
  178. end
  179.  
  180. @sprites["boy"].zoom_x+=0.015*2 if @sprites["boy"].zoom_x != 2.0
  181. @sprites["boy"].zoom_y+=0.015*2 if @sprites["boy"].zoom_y != 2.0
  182. @sprites["genderboy"].zoom_x+=0.015*2 if @sprites["genderboy"].zoom_x != 1.0
  183. @sprites["genderboy"].zoom_y+=0.015*2 if @sprites["genderboy"].zoom_y != 1.0
  184.  
  185. @sprites["gendergirl"].zoom_x-=0.015
  186. @sprites["gendergirl"].zoom_y-=0.015
  187. @sprites["girl"].zoom_x-=0.015*2
  188. @sprites["girl"].zoom_y-=0.015*2
  189.  
  190. if frame==4
  191. @sprites["gendergirl"].tone.set(-20,-20,-20,100)
  192. @sprites["girl"].tone.set(-60,-60,-60,100)
  193. end
  194. end
  195. @select=0
  196. end
  197.  
  198. def selectGirl
  199. frame=0
  200. 6.times do
  201. Graphics.update
  202. frame+=1
  203. @sprites["gendergirl"].tone.set(0,0,0,0)
  204. @sprites["girl"].tone.set(0,0,0,0)
  205. @sprites["gendergirl"].x-=12
  206. @sprites["girl"].x-=12
  207.  
  208. if @select==-1
  209. @sprites["genderboy"].x-=6
  210. @sprites["boy"].x-=6
  211. else
  212. @sprites["genderboy"].x-=12
  213. @sprites["boy"].x-=12
  214. end
  215.  
  216. @sprites["girl"].zoom_x+=0.015*2 if @sprites["girl"].zoom_x != 2.0
  217. @sprites["girl"].zoom_y+=0.015*2 if @sprites["girl"].zoom_y != 2.0
  218. @sprites["gendergirl"].zoom_x+=0.015*2 if @sprites["gendergirl"].zoom_x != 1.0
  219. @sprites["gendergirl"].zoom_y+=0.015*2 if @sprites["gendergirl"].zoom_y != 1.0
  220.  
  221. @sprites["genderboy"].zoom_x-=0.015
  222. @sprites["genderboy"].zoom_y-=0.015
  223. @sprites["boy"].zoom_x-=0.015*2
  224. @sprites["boy"].zoom_y-=0.015*2
  225.  
  226. if frame==4
  227. @sprites["genderboy"].tone.set(-20,-20,-20,100)
  228. @sprites["boy"].tone.set(-60,-60,-60,100)
  229. end
  230. end
  231. @select=1
  232. end
  233.  
  234. def selection
  235.  
  236. if @select==0 # Boy is selected
  237. actualboyx=@sprites["boy"].x
  238. 22.times do # Animation
  239. Graphics.update
  240. @sprites["gendergirl"].x+=16
  241. @sprites["girl"].x+=12
  242. @sprites["genderboy"].x+=16
  243. @sprites["genderboy"].zoom_y-=0.008
  244. @sprites["boy"].x+=12 if @sprites["boy"].x!=Graphics.width/2
  245. @sprites["boy"].x=Graphics.width/2 if @sprites["boy"].x>Graphics.width/2
  246.  
  247. end
  248.  
  249. if !pbConfirmMessage(_INTL("You're a boy, right?"))
  250. 22.times do
  251. Graphics.update
  252. @sprites["gendergirl"].x-=16
  253. @sprites["girl"].x-=12
  254. @sprites["genderboy"].x-=16
  255. @sprites["genderboy"].zoom_y+=0.008
  256. @sprites["boy"].x-=12 if @sprites["boy"].x!=actualboyx
  257. @sprites["boy"].x=actualboyx if @sprites["boy"].x<actualboyx
  258. @sprites["msgwindow"].visible=true
  259. end
  260. else
  261.   pbChangePlayer(0)
  262.   @sprites["msgwindow"].visible=false
  263.   pbMessage("I'd like to know your name.\nPlease tell me.")
  264.   selectName
  265. end
  266.  
  267.  
  268. else # Girl is selected
  269. actualgirlx=@sprites["girl"].x
  270. 22.times do # Animation
  271. Graphics.update
  272. @sprites["genderboy"].x-=16
  273. @sprites["boy"].x-=12
  274. @sprites["gendergirl"].x-=16
  275. @sprites["gendergirl"].zoom_y-=0.008
  276. @sprites["girl"].x-=12 if @sprites["girl"].x!=Graphics.width/2
  277. @sprites["girl"].x=Graphics.width/2 if @sprites["girl"].x<Graphics.width/2
  278. end
  279.  
  280. if !pbConfirmMessage(_INTL("You're a girl, right?"))
  281. 22.times do
  282. Graphics.update
  283. @sprites["genderboy"].x+=16
  284. @sprites["boy"].x+=12
  285. @sprites["gendergirl"].x+=16
  286. @sprites["gendergirl"].zoom_y+=0.008
  287. @sprites["girl"].x+=12 if @sprites["girl"].x!=actualgirlx
  288. @sprites["girl"].x=actualgirlx if @sprites["girl"].x>actualgirlx
  289. @sprites["msgwindow"].visible=true
  290. end
  291. else
  292. pbChangePlayer(1)
  293. @sprites["msgwindow"].visible=false
  294. pbMessage("I'd like to know your name.\nPlease tell me.")
  295. selectName
  296. end
  297.  
  298. end
  299. end
  300.  
  301. def selectName
  302. if WRITETRAINERNAME
  303.   pbHide
  304.   pbTrainerName
  305.   if !pbConfirmMessage(_INTL("Your name is {1}?",$Trainer.name))
  306.     selectName
  307.   else
  308.     @finished=true
  309.   end
  310. else
  311.   @finished=true
  312. end
  313. end
  314.  
  315. def pbUpdate
  316.   pbShow
  317.   pbMessageDisplay(@sprites["msgwindow"],
  318.       _INTL("Are you a boy?\nOr a girl?"))
  319.   selectBoy
  320. loop do
  321.   Graphics.update
  322.   Input.update
  323.  
  324.   if Input.trigger?(Input::LEFT)
  325.     selectBoy if @select!=0
  326.   elsif Input.trigger?(Input::RIGHT)
  327.     selectGirl if @select!=1
  328.   end
  329.  
  330.   if Input.trigger?(Input::C)
  331.     selection
  332.   end
  333.  
  334.   break if @finished
  335.   end
  336. end
  337.  
  338. end
  339. ###################################################
  340.  
  341. class GenderSelector
  342.  
  343. def initialize(scene)
  344. @scene=scene
  345. end
  346.  
  347. def pbStartScreen
  348. @scene.pbStartScene
  349. @scene.pbUpdate
  350. @scene.pbEndScene
  351. end
  352.  
  353. end
  354.  
  355. def pbGenderSelector
  356.   scene=GenderSelectorScene.new
  357.   screen=GenderSelector.new(scene)
  358.   screen.pbStartScreen
  359. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement