Advertisement
Guest User

Untitled

a guest
Dec 27th, 2019
520
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.14 KB | None | 0 0
  1. #===============================================================================
  2. #
  3. #-------------------------------------------------------------------------------
  4. #-------------------------------------------------------------------------------
  5. # Script : Multiples Saves 5.0
  6. # por JessWishes - English Translation
  7. #-------------------------------------------------------------------------------
  8. #-------------------------------------------------------------------------------
  9. # Creado para RPG Maker XP con base Essentials
  10. # Compatible : versión 17
  11. # No probado con 16 o menor.
  12. #-------------------------------------------------------------------------------
  13. #
  14. #-------------------------------------------------------------------------------
  15. # DevianArt :
  16. # https://www.deviantart.com/jesswshs
  17. #
  18. # Twitter :
  19. # https://twitter.com/JessWishes
  20. #
  21. # Pagina de Recursos
  22. # https://jesswishesdev.weebly.com
  23. #
  24. #-------------------------------------------------------------------------------
  25. #
  26. #-------------------------------------------------------------------------------
  27. # Esto ha tomado tiempo y esfuerzo en ser diseñado, aunque es de uso libre,
  28. # se agradece que se den créditos.
  29. #
  30. #-------------------------------------------------------------------------------
  31. #
  32. #-------------------------------------------------------------------------------
  33. # Modo de uso
  34. #
  35. # Copiar y pegar en un nuevo script arriba del llamado Main.
  36. #
  37. # 1.-Una vez guardada la primera Save, se creará la carpeta que contendrá
  38. # los archivos
  39. #
  40. # 2.-Al iniciar una Save nueva, la primera vez que se guarde, se hará en un
  41. # archivo nuevo y al guardar de nuevo, te preguntará si quieres que ese
  42. # archivo se sobre escriba, de lo contrario se creará otro nuevo.
  43. #
  44. # 3.-Al llegar al número maximo de Saves, te saldrá el menseaje para
  45. # avisar al jugador.
  46. #
  47. # 4.-Estando en la pantalla de carga, se podrá eliminar la Save seleccionada
  48. # al oprimir la tecla Z (Input::A).
  49. #
  50. # 5.-Para evitar reducción de rendimiento, solo la Save seleccionada en la
  51. # la pantalla de carga, mostrará la imagen del personaje y los iconos del
  52. # equipo.
  53. #
  54. # 6.-Para forzar que la Save se guarde de manera automatica, se usa la
  55. # siguiente función : pbJessAutoSave
  56. # Está puede regresar el resultado; true si se ha guardado o false si no se
  57. # pudo guardar.
  58. #
  59. #-------------------------------------------------------------------------------
  60. # Variables Globales
  61. #-------------------------------------------------------------------------------
  62. # Nombre de los archivos a guardar.
  63. SAVESLOT = "Pokemon Chaos & Order"
  64.  
  65. # Nombre de la carpeta que contendrá los archivos a guardar.
  66. DIR_Save = "Saves"
  67.  
  68. # Número maximo de Saves
  69. N_MX_Save = 10
  70.  
  71. # Al iniciar Save nueva te dejará seleccionar un lenguaje diferente.
  72. LENG_JESS = false
  73.  
  74. # Lista de Lenguajes disponibles.
  75. # la variable LANGUAGES en la sección Settings no se debe usar para evitar
  76. # posibles errores con el complilador.
  77. LANGUAGES = [
  78. ["Ingles","messages.dat"],
  79. ["Ingles","leng-2.dat"]
  80. ]
  81. #-------------------------------------------------------------------------------
  82. #
  83. #-------------------------------------------------------------------------------
  84. #
  85. #-------------------------------------------------------------------------------
  86. #
  87. #-------------------------------------------------------------------------------
  88. #
  89. #-------------------------------------------------------------------------------
  90. #
  91. #-------------------------------------------------------------------------------
  92. #
  93. #-------------------------------------------------------------------------------
  94. #
  95. #-------------------------------------------------------------------------------
  96. # Dirección donde se guardarán las Saves.
  97. #-------------------------------------------------------------------------------
  98. module RTP
  99.  
  100. def self.getSaveFileName(fileName)
  101. Dir.mkdir(DIR_Save) unless File.exists?(DIR_Save)
  102. return DIR_Save+"/"+fileName
  103. end
  104.  
  105. end
  106. #-------------------------------------------------------------------------------
  107. # Variable temporal en la cual se guardará el nombre de la Save actual.
  108. #-------------------------------------------------------------------------------
  109. class Game_Temp
  110. attr_accessor :archivoguardado
  111. end
  112. #-------------------------------------------------------------------------------
  113. # Guardar Save(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_Save
  121. sv = "#{SAVESLOT}#{i}"; sv2 = sv+".rxdata"
  122. break if !safeExists?(RTP.getSaveFileName(sv2))
  123. mx=true if i==N_MX_Save && !$game_temp.archivoguardado
  124. end
  125. $game_temp.archivoguardado = sv if !$game_temp.archivoguardado && mx==false
  126. if mx==true
  127. Kernel.pbMessage(_INTL("You have reached the limit of saved games\nA new game cannot be saved"))
  128. return false
  129. else
  130. pbSave(false,$game_temp.archivoguardado)
  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,archivo=SAVESLOT)
  138. $Trainer.metaID=$PokemonGlobal.playerID
  139. begin
  140. File.open(RTP.getSaveFileName("#{archivo}.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. # En caso de error guardará la Save actual en el archivo Repaldo.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. # Pantalla de guardar
  198. #-------------------------------------------------------------------------------
  199. class PokemonSaveScreen
  200.  
  201. def pbSaveScreen
  202. ret=false
  203. resul=0 #Save Nueva
  204. archivos=[]
  205. n=0
  206. for i in 1..N_MX_Save
  207. archivos.push("#{SAVESLOT}#{i}") if safeExists?(RTP.getSaveFileName("#{SAVESLOT}#{i}.rxdata"))
  208. next if n>0
  209. n=i if !safeExists?(RTP.getSaveFileName("#{SAVESLOT}#{i}.rxdata"))
  210. end
  211. @scene.pbStartScreen
  212. if Kernel.pbConfirmMessage(_INTL("Would you like to save the game?"))
  213. #Ver si hay una Save guardada
  214.  
  215. if archivos.size>0 && !$PokemonTemp.begunNewGame
  216. resul=1 #No es Save Nueva
  217. Kernel.pbMessage(_INTL("There already is a save on this slot!"))
  218. if Kernel.pbConfirmMessage(_INTL("Do you want to overwrite the current save?"))
  219. resul=2 #Sobre escribir
  220. end
  221. end
  222. $PokemonTemp.begunNewGame=false
  223. if archivos.size==N_MX_Save && resul!=2
  224. Kernel.pbMessage(_INTL("You have reached the maximum number of saved games!"))
  225. Kernel.pbMessage(_INTL("\\se[]Couldn't save the game.\\wtnp[30]"))
  226. else
  227. guardar="#{SAVESLOT}#{n}" #Archivo nuevo
  228. guardar=$game_temp.archivoguardado if resul==2 #Archivo actual
  229. if pbSave(false,guardar)
  230. Kernel.pbMessage(_INTL("The game has been saved.\\me[GUI save game]\\wtnp[30]")) if resul==0
  231. Kernel.pbMessage(_INTL("The game has been saved in a new slot.\\me[GUI save game]\\wtnp[30]")) if resul==1
  232. Kernel.pbMessage(_INTL("The game has been overwritten.\\me[GUI save game]\\wtnp[30]")) if resul==2
  233. if archivos.size==N_MX_Save && resul!=2
  234. Kernel.pbMessage(_INTL("You have reached the maximum amount of saved games. You can overwrite the existing ones but you cannot save new ones until you delete any of the previous ones."))
  235. end
  236. ret=true
  237. $game_temp.archivoguardado= guardar #Definir archivo actual
  238. else
  239. Kernel.pbMessage(_INTL("\\se[]Couldn't 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. # Cargar Save(s)
  252. #-------------------------------------------------------------------------------
  253. class PokemonLoadScreen
  254.  
  255. #Eliminando el método de Essentials para eliminar Saves.
  256. def pbStartDeleteScreen; end
  257.  
  258.  
  259. def pbLeerinfoguardar(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. archivos=[]
  294. savefile=[]
  295. for i in 1..N_MX_Save
  296. archivos.push("#{SAVESLOT}#{i}") if safeExists?(RTP.getSaveFileName("#{SAVESLOT}#{i}.rxdata"))
  297. savefile.push(RTP.getSaveFileName("#{SAVESLOT}#{i}.rxdata")) if safeExists?(RTP.getSaveFileName("#{SAVESLOT}#{i}.rxdata"))
  298. end
  299. return [archivos,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. datos=pbcarga
  309. archivos=datos[0]
  310. savefile=datos[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. cmdContinuar=[]
  327. comando=[]
  328.  
  329. for i in 0..savefile.size-1
  330. cmdContinuar[i] = -1
  331. comando.push("cmdContinuar#{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_Save
  344. showContinue.push(true) if safeExists?(RTP.getSaveFileName("#{SAVESLOT}#{i}.rxdata"))
  345. end
  346.  
  347. if savefile.size>0
  348. data=pbLeerinfoguardar(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..cmdContinuar.size-1
  357. commands[comando[i] = commands.length]= _INTL("Save #{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("Quit Game")
  365.  
  366. trainerlist=[]
  367. framelist=[]
  368. maplist=[]
  369. for k in 0...archivos.size
  370. datatt=pbLeerinfoguardar(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<archivos.size
  387. data=pbLeerinfoguardar(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<archivos.size
  395. if safeExists?(savefile[command]) && comando.include?(command)
  396. if Kernel.pbConfirmMessage(_INTL("Delete save?"))
  397. Kernel.pbMessage(_INTL("If you delete the save, all data 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("The save has been deleted."))
  402. archivos.delete_at(command)
  403. comando.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 comando.include?(command)
  414. for i in 0..savefile.size-1
  415. savefile2=savefile[i] if command==comando[i]
  416. n=i+1 if command==comando[i]
  417. end
  418.  
  419. # Determinar el nombre de esta Save
  420. nmb_j = (archivos[n-1] == SAVESLOT) ? "#{SAVESLOT}#{n}" : archivos[n-1]
  421. $game_temp.archivoguardado = 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. # Pantalla de carga (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. # Paneles
  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("Badges:"),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
Advertisement