ComfeyyLove

Untitled

Jan 16th, 2021
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.70 KB | None | 0 0
  1. # =============================================== ==============================
  2. #
  3. # ------------------------------------------------- ------------------------------
  4. # ------------------------------------------------- ------------------------------
  5. # Script: Multiple Games 5.0
  6. # by JessWishes
  7. # ------------------------------------------------- ------------------------------
  8. # ------------------------------------------------- ------------------------------
  9. # Created for RPG Maker XP with Essentials base
  10. # Compatible: version 17
  11. # Not tested with 16 or less.
  12. # ------------------------------------------------- ------------------------------
  13. #
  14. # ------------------------------------------------- ------------------------------
  15. # DevianArt:
  16. # https://www.deviantart.com/jesswshs
  17. #
  18. # Twitter:
  19. # https://twitter.com/JessWishes
  20. #
  21. # Resource Page
  22. # https://jesswishesdev.weebly.com
  23. #
  24. # ------------------------------------------------- ------------------------------
  25. #
  26. # ------------------------------------------------- ------------------------------
  27. # This has taken time and effort to design, although it is free to use,
  28. # credit is appreciated.
  29. #
  30. # ------------------------------------------------- ------------------------------
  31. #
  32. # ------------------------------------------------- ------------------------------
  33. # How to use
  34. #
  35. # Copy and paste in a new script above the one called Main.
  36. #
  37. # 1.-Once the first game is saved, the folder that will contain
  38. # the files
  39. #
  40. # 2.-When starting a new game, the first time it is saved, it will be done in a
  41. # new file and when saving again, it will ask you if you want that
  42. # file is overwritten, otherwise a new one will be created.
  43. #
  44. # 3.-When you reach the maximum number of games, you will get the message to
  45. # notify the player.
  46. #
  47. # 4.-Being on the loading screen, you can delete the selected game
  48. # by pressing the Z key (Input :: A).
  49. #
  50. # 5.-To avoid performance reduction, only the item selected in the
  51. # The loading screen will show the character image and the icons of the
  52. # team.
  53. #
  54. # 6.-To force the game to be saved automatically, use the
  55. # next function: pbJessAutoSave
  56. # You can return the result; true if saved or false if not saved
  57. # could save.
  58. #
  59. # ------------------------------------------------- ------------------------------
  60. # Global Variables
  61. # ------------------------------------------------- ------------------------------
  62. # Name of the files to save.
  63. PARTNAME = "Partida_JessWishes"
  64.  
  65. # Name of the folder that will contain the files to save.
  66. DIR_PARTIDA = "Save"
  67.  
  68. # Maximum number of games
  69. N_MX_PARTIDA = 10
  70.  
  71. # When starting a new game it will let you select a different language.
  72. LENG_JESS = false
  73.  
  74. # List of available languages.
  75. # the LANGUAGES variable in the Settings section should not be used to avoid
  76. # possible errors with the compiler.
  77. LANGUAGES = [
  78. ["Spanish", "messages.dat"],
  79. ["English", "leng-2.dat"]
  80. ]
  81. # ------------------------------------------------- ------------------------------
  82. #
  83. # ------------------------------------------------- ------------------------------
  84. #
  85. # ------------------------------------------------- ------------------------------
  86. #
  87. # ------------------------------------------------- ------------------------------
  88. #
  89. # ------------------------------------------------- ------------------------------
  90. #
  91. # ------------------------------------------------- ------------------------------
  92. #
  93. # ------------------------------------------------- ------------------------------
  94. #
  95. # ------------------------------------------------- ------------------------------
  96. # Address where the games will be saved.
  97. # ------------------------------------------------- ------------------------------
  98. RTP module
  99.  
  100. def self.getSaveFileName (fileName)
  101. Dir.mkdir (DEPARTMENT DIR) unless File.exists? (DEPARTMENT DIR)
  102. return DEPART_DIR + "/" + fileName
  103. end
  104.  
  105. end
  106. # ------------------------------------------------- ------------------------------
  107. # Temporal variable in which the name of the current game will be saved.
  108. # ------------------------------------------------- ------------------------------
  109. class Game_Temp
  110. attr_accessor: saved file
  111. end
  112. # ------------------------------------------------- ------------------------------
  113. # Save Game (s).
  114. # ------------------------------------------------- ------------------------------
  115.  
  116. #Autosave
  117. def pbJessAutoSave
  118. Kernel.pbMessage (_INTL ("Saving Game ... \\ wtnp [10]"))
  119. mx = false
  120. for i in 1..N_MX_PARTIDA
  121. sv = "# {PARTNAME} # {i}"; sv2 = sv + ". rxdata"
  122. break if! safeExists? (RTP.getSaveFileName (sv2))
  123. mx = true if i == N_MX_GAME &&! $ game_temp.savedfile
  124. end
  125. $ game_temp.savedfile = sv if! $ game_temp.savedfile && mx == false
  126. if mx == true
  127. Kernel.pbMessage (_INTL ("You have reached your save game limit \ nYou won't be able to save a new game"))
  128. return false
  129. else
  130. pbSave (false, $ game_temp.savedfile)
  131. Kernel.pbMessage (_INTL ("\\ me [GUI save game] The current game has been saved"))
  132. return true
  133. end
  134. end
  135.  
  136.  
  137. def pbSave (safesave = false, file = PARTYNAME)
  138. $ Trainer.metaID = $ PokemonGlobal.playerID
  139. begin
  140. File.open (RTP.getSaveFileName ("# {file} .rxdata"), "wb") {| f |
  141. Marshal.dump ($ Trainer, f)
  142. Marshal.dump (Graphics.frame_count, f)
  143. if $ data_system.respond_to? ("magic_number")
  144. $ game_system.magic_number = $ data_system.magic_number
  145. else
  146. $ game_system.magic_number = $ data_system.version_id
  147. end
  148. $ game_system.save_count + = 1
  149. Marshal.dump ($ game_system, f)
  150. Marshal.dump ($ PokemonSystem, f)
  151. Marshal.dump ($ game_map.map_id, f)
  152. Marshal.dump ($ game_switches, f)
  153. Marshal.dump ($ game_variables, f)
  154. Marshal.dump ($ game_self_switches, f)
  155. Marshal.dump ($ game_screen, f)
  156. Marshal.dump ($ MapFactory, f)
  157. Marshal.dump ($ game_player, f)
  158. $ PokemonGlobal.safesave = safesave
  159. Marshal.dump ($ PokemonGlobal, f)
  160. Marshal.dump ($ PokemonMap, f)
  161. Marshal.dump ($ PokemonBag, f)
  162. Marshal.dump ($ PokemonStorage, f)
  163. }
  164. Graphics.frame_reset
  165. rescue
  166. return false
  167. end
  168. return true
  169. end
  170.  
  171. # ------------------------------------------------- ------------------------------
  172. # In case of error it will save the current game in the Backup file.rxdata
  173. # ------------------------------------------------- ------------------------------
  174. def pbEmergencySave
  175. oldscene = $ scene
  176. $ scene = nil
  177. Kernel.pbMessage (_INTL ("The script is taking a long time, the game will restart."))
  178. return if! $ Trainer
  179. if safeExists? (RTP.getSaveFileName ("Backup.rxdata"))
  180. File.open (RTP.getSaveFileName ("Backup.rxdata"), 'rb') {| r |
  181. File.open (RTP.getSaveFileName ("Backup.rxdata.bak"), 'wb') {| w |
  182. while s = r.read (4096)
  183. w.write s
  184. end
  185. }
  186. }
  187. end
  188. if pbSave (false, "Backup")
  189. Kernel.pbMessage (_INTL ("The game has been saved as Backup.rxdata. \\ me [GUI save game] \\ wtnp [30]"))
  190. else
  191. Kernel.pbMessage (_INTL ("\\ se [] There was an error saving the file ... \\ wtnp [30]"))
  192. end
  193. $ scene = oldscene
  194. end
  195.  
  196. # ------------------------------------------------- ------------------------------
  197. # Save screen
  198. # ------------------------------------------------- ------------------------------
  199. class PokemonSaveScreen
  200.  
  201. def pbSaveScreen
  202. ret = false
  203. result = 0 # New Game
  204. files = []
  205. n = 0
  206. for i in 1..N_MX_PARTIDA
  207. files.push ("# {PARTNAME} # {i}") if safeExists? (RTP.getSaveFileName ("# {PARTNAME} # {i} .rxdata"))
  208. next if n> 0
  209. n = i if! safeExists? (RTP.getSaveFileName ("# {PARTNAME} # {i} .rxdata"))
  210. end
  211. @ scene.pbStartScreen
  212. if Kernel.pbConfirmMessage (_INTL ("Would you like to save the game?"))
  213. #See if there is a saved game
  214.  
  215. if files.size> 0 &&! $ PokemonTemp.begunNewGame
  216. result = 1 # is not a new item
  217. Kernel.pbMessage (_INTL ("A saved game already exists!"))
  218. if Kernel.pbConfirmMessage (_INTL ("Overwrite current game?"))
  219. result = 2 #Overwrite
  220. end
  221. end
  222. $ PokemonTemp.begunNewGame = false
  223. if files.size == N_MX_PARTIDA && results! = 2
  224. Kernel.pbMessage (_INTL ("You have reached the maximum number of saved games!"))
  225. Kernel.pbMessage (_INTL ("\\ se [] Could not save. \\ wtnp [30]"))
  226. else
  227. save = "# {PARTNAME} # {n}" #New file
  228. save = $ game_temp.file saved if result == 2 #Current file
  229. if pbSave (false, save)
  230. Kernel.pbMessage (_INTL ("The game has been saved. \\ me [GUI save game] \\ wtnp [30]")) if results == 0
  231. Kernel.pbMessage (_INTL ("Saved in a new game. \\ me [GUI save game] \\ wtnp [30]")) if results == 1
  232. Kernel.pbMessage (_INTL ("Game was overwritten. \\ me [GUI save game] \\ wtnp [30]")) if result == 2
  233. if files.size == N_MX_PARTIDA && results! = 2
  234. Kernel.pbMessage (_INTL ("You have reached the maximum number of saved games, you will be able to overwrite existing ones but you will not be able to save new ones until you delete any of the previous ones."))
  235. end
  236. ret = true
  237. $ game_temp.archivoguardado = save #Define current file
  238. else
  239. Kernel.pbMessage (_INTL ("\\ se [] Could not save. \\ wtnp [30]"))
  240. ret = false
  241. end
  242. end
  243. end
  244. @ scene.pbEndScreen
  245. return ret
  246. end
  247.  
  248. end
  249.  
  250. # ------------------------------------------------- ------------------------------
  251. # Load game (s)
  252. # ------------------------------------------------- ------------------------------
  253. class PokemonLoadScreen
  254.  
  255. #Removing the Essentials method to delete games.
  256. def pbStartDeleteScreen; end
  257.  
  258.  
  259. def pbReadinfosave (savefile)
  260. trainer = nil
  261. framecount = 0
  262. mapid = 0
  263. @haveBackup = false
  264. begin
  265. trainer, framecount, $ game_system, $ PokemonSystem, mapid = pbTryLoadFile (savefile)
  266. rescue
  267. if safeExists? (savefile + ". bak")
  268. begin
  269. trainer, framecount, $ game_system, $ PokemonSystem, mapid = pbTryLoadFile (savefile + ". bak")
  270. @haveBackup = true
  271. rescue
  272. end
  273. end
  274. if @haveBackup
  275. Kernel.pbMessage (_INTL ("The save file is corrupt. The previous save file will be loaded."))
  276. else
  277. Kernel.pbMessage (_INTL ("The save file is corrupt, or is incompatible with this game."))
  278. if! Kernel.pbConfirmMessageSerious (_INTL ("Do you want to delete the save file and start anew?"))
  279. $ scene = nil
  280. return
  281. end
  282. begin; File.delete (savefile); rescue; end
  283. begin; File.delete (savefile + ". Bak"); rescue; end
  284. $ game_system = Game_System.new
  285. $ PokemonSystem = PokemonSystem.new if! $ PokemonSystem
  286. Kernel.pbMessage (_INTL ("The save file was deleted."))
  287. end
  288. end
  289. return [trainer, framecount, $ game_system, $ PokemonSystem, mapid]
  290. end
  291.  
  292. def pbcarga ()
  293. files = []
  294. savefile = []
  295. for i in 1..N_MX_PARTIDA
  296. files.push ("# {PARTNAME} # {i}") if safeExists? (RTP.getSaveFileName ("# {PARTNAME} # {i} .rxdata"))
  297. savefile.push (RTP.getSaveFileName ("# {PARTNAME} # {i} .rxdata")) if safeExists? (RTP.getSaveFileName ("# {PARTNAME} # {i} .rxdata"))
  298. end
  299. return [files, savefile]
  300. end
  301.  
  302. def pbStartLoadScreen
  303. $ PokemonTemp = PokemonTemp.new
  304. $ game_temp = Game_Temp.new
  305. $ game_system = Game_System.new
  306. $ PokemonSystem = PokemonSystem.new if! $ PokemonSystem
  307.  
  308. data = pbcarga
  309. files = data [0]
  310. savefile = data [1]
  311.  
  312. FontInstaller.install
  313.  
  314. data_system = pbLoadRxData ("Data / System")
  315. mapfile = ($ RPGVX)? sprintf ("Data / Map% 03d.rvdata", data_system.start_map_id):
  316. sprintf ("Data / Map% 03d.rxdata", data_system.start_map_id)
  317. if data_system.start_map_id == 0 || ! pbRgssExists? (mapfile)
  318. Kernel.pbMessage (_INTL ("No starting position was set in the map editor. \ 1"))
  319. Kernel.pbMessage (_INTL ("The game cannot continue."))
  320. @ scene.pbEndScene
  321. $ scene = nil
  322. return
  323. end
  324.  
  325. commands = []
  326. cmdContinue = []
  327. command = []
  328.  
  329. for i in 0..savefile.size-1
  330. cmd Continue [i] = -1
  331. command.push ("cmdContinue # {i}")
  332. end
  333.  
  334. cmdNewGame = -1
  335. cmdOption = -1
  336. cmdMysteryGift = -1
  337. cmdDebug = -1
  338. cmdQuit = -1
  339.  
  340. showContinue = []
  341. showContinue.push (false)
  342.  
  343. for i in 1..N_MX_PARTIDA
  344. showContinue.push (true) if safeExists? (RTP.getSaveFileName ("# {PARTNAME} # {i} .rxdata"))
  345. end
  346.  
  347. if savefile.size> 0
  348. data = pbLeerinfosave (savefile [0])
  349. trainer = data [0]; framecount = data [1]; $ game_system = data [2]; $ PokemonSystem = data [3]; mapid = data [4]
  350. showContinue [0] = true if trainer
  351. if showContinue [0] == true
  352. if! @haveBackup
  353. begin; File.delete (savefile [0] + ". Bak"); rescue; end
  354. end
  355. end
  356. for i in 0..cmdContinue.size-1
  357. commands [command [i] = commands.length] = _INTL ("Item # {i + 1}") if showContinue [i] == true
  358. end
  359. end
  360. commands [cmdNewGame = commands.length] = _INTL ("New Game")
  361. commands [cmdMysteryGift = commands.length] = _INTL ("Mystery Gift") if (trainer.mysterygiftaccess rescue false)
  362. commands [cmdOption = commands.length] = _INTL ("Options")
  363. commands [cmdDebug = commands.length] = _INTL ("Debug") if $ DEBUG
  364. commands [cmdQuit = commands.length] = _INTL ("Close Game")
  365.  
  366. trainerlist = []
  367. framelist = []
  368. maplist = []
  369. for k in 0 ... files.size
  370. datatt = pbLeerinfosave (savefile [k])
  371. trainerlist.push (datatt [0])
  372. framelist.push (datatt [1])
  373. maplist.push (datatt [4])
  374. end
  375.  
  376. @ scene.pbStartScene (commands, showContinue [0], trainer, framecount, mapid, cmdContinuar.size, trainerlist, framelist, maplist)
  377. @ scene.pbSetParty (trainer) if showContinue [0]
  378. @ scene.pbStartScene2
  379. $ ItemData = readItemList ("Data / items.dat")
  380. loop do
  381. command2 = @ scene.pbChoose (commands)
  382. command = command2 [0]
  383.  
  384. if (command2 [1] == "upd" || command2 [1] == "dwd")
  385. @ scene.pbSetParty (trainer, false)
  386. if command <files.size
  387. data = pbLeerinfosave (savefile [command])
  388. trainer = data [0]; framecount = data [1]; $ game_system = data [2]; $ PokemonSystem = data [3]; mapid = data [4]
  389. @ scene.pbSetParty (trainer) if showContinue [command]
  390.  
  391. end
  392.  
  393. elsif command2 [1] == "delete"
  394. if command <files.size
  395. if safeExists? (savefile [command]) && command.include? (command)
  396. if Kernel.pbConfirmMessage (_INTL ("Delete this heading?"))
  397. Kernel.pbMessage (_INTL ("If you delete it, all the information in it will be lost."))
  398. if Kernel.pbConfirmMessage (_INTL ("Delete anyway?"))
  399. begin; File.delete (savefile [command]); rescue; end
  400. begin; File.delete (savefile [command] + ". Bak"); rescue; end
  401. Kernel.pbMessage (_INTL ("This game has been removed."))
  402. files.delete_at (command)
  403. command.delete_at (command)
  404. @ scene.pbEndScene
  405. sscene = PokemonLoad_Scene.new
  406. sscreen = PokemonLoadScreen.new (sscene)
  407. sscreen.pbStartLoadScreen
  408. break
  409. end
  410. end
  411. end
  412. end
  413. elsif command.include? (command)
  414. for i in 0..savefile.size-1
  415. savefile2 = savefile [i] if command == command [i]
  416. n = i + 1 if command == command [i]
  417. end
  418.  
  419. # Determine the name of this game
  420. nmb_j = (files [n-1] == PARTNAME)? "# {PARTNAME} # {n}": files [n-1]
  421. $ game_temp.savedfile = nmb_j
  422. #
  423. unless safeExists? (savefile2)
  424. pbPlayBuzzerSE
  425. next
  426. end
  427. @ scene.pbEndScene
  428. metadata = nil
  429. File.open (savefile2) {| f |
  430. $ Trainer = Marshal.load (f) # Trainer already loaded
  431. Graphics.frame_count = Marshal.load (f)
  432. $ game_system = Marshal.load (f)
  433. $ PokemonSystem = Marshal.load (f)
  434. Marshal.load (f) # Current map id no longer needed
  435. $ game_switches = Marshal.load (f)
  436. $ game_variables = Marshal.load (f)
  437. $ game_self_switches = Marshal.load (f)
  438. $ game_screen = Marshal.load (f)
  439. $ MapFactory = Marshal.load (f)
  440. $ game_map = $ MapFactory.map
  441. $ game_player = Marshal.load (f)
  442. $ PokemonGlobal = Marshal.load (f)
  443. metadata = Marshal.load (f)
  444. $ PokemonBag = Marshal.load (f)
  445. $ PokemonStorage = Marshal.load (f)
  446. magicNumberMatches = false
  447. if $ data_system.respond_to? ("magic_number")
  448. magicNumberMatches = ($ game_system.magic_number == $ data_system.magic_number)
  449. else
  450. magicNumberMatches = ($ game_system.magic_number == $ data_system.version_id)
  451. end
  452. if! magicNumberMatches || $ PokemonGlobal.safesave
  453. if pbMapInterpreterRunning?
  454. pbMapInterpreter.setup (nil, 0)
  455. end
  456. begin
  457. $ MapFactory.setup ($ game_map.map_id) # calls setMapChanged
  458. rescue Errno :: ENOENT
  459. if $ DEBUG
  460. Kernel.pbMessage (_INTL ("Map {1} was not found.", $ Game_map.map_id))
  461. map = pbWarpToMap
  462. if map
  463. $ MapFactory.setup (map [0])
  464. $ game_player.moveto (map [1], map [2])
  465. else
  466. $ game_map = nil
  467. $ scene = nil
  468. return
  469. end
  470. else
  471. $ game_map = nil
  472. $ scene = nil
  473. Kernel.pbMessage (_INTL ("The map was not found. The game cannot continue."))
  474. end
  475. end
  476. $ game_player.center ($ game_player.x, $ game_player.y)
  477. else
  478. $ MapFactory.setMapChanged ($ game_map.map_id)
  479. end
  480. }
  481. if! $ game_map.events # Map wasn't set up
  482. $ game_map = nil
  483. $ scene = nil
  484. Kernel.pbMessage (_INTL ("The map is corrupt. The game cannot continue."))
  485. return
  486. end
  487. $ PokemonMap = metadata
  488. $ PokemonEncounters = PokemonEncounters.new
  489. $ PokemonEncounters.setup ($ game_map.map_id)
  490. pbAutoplayOnSave
  491. $ game_map.update
  492. $ PokemonMap.updateMap
  493. $ scene = Scene_Map.new
  494.  
  495. $ PokemonSystem.language = 0 if $ PokemonSystem.language> LANGUAGES.size-1
  496.  
  497. pbLoadMessages ("Data /" + LANGUAGES [$ PokemonSystem.language] [1]) if LENG_JESS
  498.  
  499. return
  500. elsif cmdNewGame> = 0 && command == cmdNewGame
  501. @ scene.pbEndScene
  502.  
  503. if LENG_JESS
  504. $ PokemonSystem.language = pbChooseLanguage
  505. pbLoadMessages ("Data /" + LANGUAGES [$ PokemonSystem.language] [1])
  506. end
  507.  
  508. if $ game_map && $ game_map.events
  509. for event in $ game_map.events.values
  510. event.clear_starting
  511. end
  512. end
  513. $ game_temp.common_event_id = 0 if $ game_temp
  514. $ scene = Scene_Map.new
  515. Graphics.frame_count = 0
  516. $ game_system = Game_System.new
  517. $ game_switches = Game_Switches.new
  518. $ game_variables = Game_Variables.new
  519. $ game_self_switches = Game_SelfSwitches.new
  520. $ game_screen = Game_Screen.new
  521. $ game_player = Game_Player.new
  522. $ PokemonMap = PokemonMapMetadata.new
  523. $ PokemonGlobal = PokemonGlobalMetadata.new
  524. $ PokemonStorage = PokemonStorage.new
  525. $ PokemonEncounters = PokemonEncounters.new
  526. $ PokemonTemp.begunNewGame = true
  527. $ data_system = pbLoadRxData ("Data / System")
  528. $ MapFactory = PokemonMapFactory.new ($ data_system.start_map_id) # calls setMapChanged
  529. $ game_player.moveto ($ data_system.start_x, $ data_system.start_y)
  530. $ game_player.refresh
  531. $ game_map.autoplay
  532. $ game_map.update
  533. return
  534. elsif cmdMysteryGift> = 0 && command == cmdMysteryGift
  535. pbFadeOutIn (99999) {
  536. trainer = pbDownloadMysteryGift (trainer)
  537. }
  538. elsif cmdOption> = 0 && command == cmdOption
  539. pbFadeOutIn (99999) {
  540. scene = PokemonOption_Scene.new
  541. screen = PokemonOptionScreen.new (scene)
  542. screen.pbStartScreen (true)
  543. }
  544. elsif cmdDebug> = 0 && command == cmdDebug
  545. pbFadeOutIn (99999) {pbDebugMenu (false)}
  546. elsif cmdQuit> = 0 && command == cmdQuit
  547. @ scene.pbEndScene
  548. $ scene = nil
  549. return
  550. end
  551. end
  552. @ scene.pbEndScene
  553. return
  554. end
  555. end
  556.  
  557. # ------------------------------------------------- ------------------------------
  558. # Loading screen (visual)
  559. # ------------------------------------------------- ------------------------------
  560. class PokemonLoad_Scene
  561.  
  562. def pbUpdate
  563. oldi = @sprites ["cmdwindow"]. index rescue 0
  564. pbUpdateSpriteHash (@sprites)
  565. newi = @sprites ["cmdwindow"]. index rescue 0
  566. if oldi! = newi
  567. @sprites ["panel # {oldi}"]. selected = false
  568. @sprites ["panel # {oldi}"]. pbRefresh
  569. @sprites ["panel # {newi}"]. selected = true
  570. @sprites ["panel # {newi}"]. pbRefresh
  571.  
  572. sy = @ sprites ["panel # {newi}"]. bitmap.height + 2
  573. mov = (newi> oldi)
  574. fv = (@ mxpartidas * sy)
  575.  
  576. for i in 0 ... @ commands.length
  577. if newi == 0
  578. @sprites ["panel # {i}"]. y = @ bsy [i]
  579. elsif newi> oldi && newi! = oldi + 1
  580. @sprites ["panel # {i}"]. y- = fv
  581. else
  582. @sprites ["panel # {i}"]. y- = sy if mov && newi <@ mxpartidas + 1
  583. @sprites ["panel # {i}"]. y + = sy if! mov && newi <@mxpartidas
  584. end
  585. end
  586. end
  587. end
  588.  
  589. def pbSetParty (trainer, val = true)
  590. @sprites ["player"]. dispose if @sprites ["player"]
  591. for i in 0..6; @sprites ["party # {i}"]. dispose if @sprites ["party # {i}"]; end
  592. return if! trainer || ! trainer.party || val == false
  593. meta = pbGetMetadata (0, MetadataPlayerA + trainer.metaID)
  594. if meta
  595. filename = pbGetPlayerCharset (meta, 1, trainer)
  596. @sprites ["player"] = TrainerWalkingCharSprite.new (filename, @ viewport)
  597. charwidth = @sprites ["player"]. bitmap.width
  598. charheight = @sprites ["player"]. bitmap.height
  599. @sprites ["player"]. x = 56 * 2-charwidth / 8
  600. @sprites ["player"]. y = 56 * 2-charheight / 8
  601. @sprites ["player"]. src_rect = Rect.new (0,0, charwidth / 4, charheight / 4)
  602. end
  603. for i in 0 ... trainer.party.length
  604. @sprites ["party # {i}"] = PokemonIconSprite.new (trainer.party [i], @ viewport)
  605. @sprites ["party # {i}"]. x = 151 * 2 + 33 * 2 * (i & 1)
  606. @sprites ["party # {i}"]. y = 36 * 2 + 25 * 2 * (i / 2)
  607. @sprites ["party # {i}"]. z = 99999
  608. end
  609. end
  610.  
  611. def pbStartScene (commands, showContinue, trainer, framecount, mapid, mxpartidas, trainerlist, framelist, maplist)
  612. @ trainerlist = trainerlist
  613. @ mxpartidas = mxpartidas
  614. @commands = commands
  615. @sprites = {}
  616. @viewport = Viewport.new (0,0, Graphics.width, Graphics.height)
  617. @ viewport.z = 99998
  618. addBackgroundOrColoredPlane (@sprites, "background", "loadbg", Color.new (248,248,248), @ viewport)
  619. y = 16 * 2
  620. @ bsy = []
  621. for i in 0 ... commands.length
  622. @sprites ["panel # {i}"] = PokemonLoadPanel.new (i, commands [i],
  623. (showContinue && i <@mxpartidas)? true: false, trainerlist [i], framelist [i], maplist [i], @ viewport)
  624. @sprites ["panel # {i}"]. x = 24 * 2
  625. @sprites ["panel # {i}"]. y = y
  626. @sprites ["panel # {i}"]. pbRefresh
  627. @ bsy.push (y)
  628. y + = (showContinue && i <@mxpartidas)? 111 * 2 + 1 * 2: 23 * 2 + 1 * 2
  629. end
  630. @sprites ["cmdwindow"] = Window_CommandPokemon.new ([])
  631. @sprites ["cmdwindow"]. viewport = @viewport
  632. @sprites ["cmdwindow"]. visible = false
  633. end
  634.  
  635. def pbactu (commands, trainer, framecount, mapid)
  636.  
  637. for i in 0 ... commands.length
  638. @sprites ["panel # {i}"]. pbactu (trainer [i], framecount, mapid)
  639. end
  640. end
  641.  
  642. def pbChoose (commands)
  643. @sprites ["cmdwindow"]. commands = commands
  644. loop do
  645. Graphics.update
  646. Input.update
  647. pbUpdate
  648. if Input.trigger? (Input :: C)
  649. return [@sprites ["cmdwindow"]. index, "sel"]
  650. elsif Input.trigger? (Input :: A)
  651. return [@sprites ["cmdwindow"]. index, "delete"]
  652. elsif Input.trigger? (Input :: UP)
  653. return [@sprites ["cmdwindow"]. index, "upd"]
  654. elsif Input.trigger? (Input :: DOWN)
  655. return [@sprites ["cmdwindow"]. index, "dwd"]
  656. end
  657. end
  658. end
  659.  
  660. end
  661. # ------------------------------------------------- ------------------------------
  662. # Panels
  663. # ------------------------------------------------- ------------------------------
  664. class PokemonLoadPanel <SpriteWrapper
  665. attr_reader: selected
  666.  
  667. def initialize (index, title, isContinue, trainer, framecount, mapid, viewport = nil)
  668. super (viewport)
  669. @ viewport = viewport
  670. @ trainer = trainer
  671. @index = index
  672. @title = title
  673. @isContinue = isContinue
  674. @trainer = trainer
  675. @totalsec = (framecount || 0) /Graphics.frame_rate
  676. @mapid = mapid
  677. @selected = (index == 0)
  678. @bgbitmap = AnimatedBitmap.new ("Graphics / Pictures / loadPanels")
  679. @refreshBitmap = true
  680. @refreshing = false
  681. refresh
  682. end
  683.  
  684. def dispose
  685. @ bgbitmap.dispose
  686. self.bitmap.dispose
  687. super
  688. end
  689.  
  690. def selected = (value)
  691. if @selected! = value
  692. @selected = value
  693. @refreshBitmap = true
  694. refresh
  695. end
  696. end
  697.  
  698. def pbactu (trainer, framecount, mapid)
  699. @ trainer = trainer
  700. @ mapid = mapid
  701. @totalsec = (framecount || 0) /Graphics.frame_rate
  702. refresh
  703. end
  704.  
  705. def pbRefresh
  706. @refreshBitmap = true
  707. refresh
  708. end
  709.  
  710. def refresh
  711. return if @refreshing
  712. return if disposed?
  713. @refreshing = true
  714. if! self.bitmap || self.bitmap.disposed?
  715. self.bitmap = BitmapWrapper.new (@ bgbitmap.width, 111 * 2)
  716. pbSetSystemFont (self.bitmap)
  717. end
  718. if @refreshBitmap
  719. @refreshBitmap = false
  720. self.bitmap.clear if self.bitmap
  721.  
  722. if @isContinue
  723. self.bitmap.blt (0,0, @ bgbitmap.bitmap, Rect.new (0, (@ selected)? 111 * 2: 0, @ bgbitmap.width, 111 * 2))
  724. else
  725. self.bitmap.blt (0,0, @ bgbitmap.bitmap, Rect.new (0,111 * 2 * 2 + ((@ selected)? 23 * 2: 0), @ bgbitmap.width, 23 * 2))
  726. end
  727. textpos = []
  728. if @isContinue
  729. textpos.push ([@ title, 16 * 2.5 * 2.0, Color.new (232,232,232), Color.new (136,136,136)])
  730. textpos.push ([_ INTL ("Medals:"), 16 * 2.56 * 2.0, Color.new (232,232,232), Color.new (136,136,136)])
  731. textpos.push ([@ trainer.numbadges.to_s, 103 * 2.56 * 2.1, Color.new (232,232,232), Color.new (136,136,136)])
  732. textpos.push ([_ INTL ("Pokédex:"), 16 * 2.72 * 2.0, Color.new (232,232,232), Color.new (136,136,136)])
  733. textpos.push ([@ trainer.pokedexSeen.to_s, 103 * 2.72 * 2.1, Color.new (232,232,232), Color.new (136,136,136)])
  734. textpos.push ([_ INTL ("Time:"), 16 * 2.88 * 2.0, Color.new (232,232,232), Color.new (136,136,136)])
  735. hour = @totalsec / 60/60
  736. min = @totalsec / 60% 60
  737. if hour> 0
  738. textpos.push ([_ INTL ("{1} h {2} m", hour, min), 103 * 2.88 * 2.1, Color.new (232,232,232), Color.new (136,136,136)])
  739. else
  740. textpos.push ([_ INTL ("{1} m", min), 103 * 2.88 * 2.1, Color.new (232,232,232), Color.new (136,136,136)])
  741. end
  742. if @ trainer.isMale?
  743. textpos.push ([@ trainer.name, 56 * 2.32 * 2.0, Color.new (56,160,248), Color.new (56,104,168)])
  744. else
  745. textpos.push ([@ trainer.name, 56 * 2.32 * 2.0, Color.new (240,72,88), Color.new (160,64,64)])
  746. end
  747. mapname = pbGetMapNameFromId (@mapid)
  748. mapname.gsub! (/ \\ PN /, @ trainer.name)
  749. textpos.push ([mapname, 193 * 2.5 * 2.1, Color.new (232,232,232), Color.new (136,136,136)])
  750. else
  751. textpos.push ([@ title, 16 * 2.4 * 2.0, Color.new (232,232,232), Color.new (136,136,136)])
  752. end
  753. pbDrawTextPositions (self.bitmap, textpos)
  754. end
  755. @refreshing = false
  756. end
  757. end
  758. # ------------------------------------------------- ------------------------------
  759. #
  760. # ------------------------------------------------- ------------------------------
  761. # =============================================== ==============================
Advertisement
Add Comment
Please, Sign In to add comment