Advertisement
Jaizu85

Untitled

Sep 28th, 2019
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.40 KB | None | 0 0
  1. #===============================================================================
  2. #
  3. #-------------------------------------------------------------------------------
  4. #-------------------------------------------------------------------------------
  5. # Script : Multiples Partidas 5.0
  6. # por JessWishes
  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 partida, se creará la carpeta que contendrá
  38. # los archivos
  39. #
  40. # 2.-Al iniciar una partida 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 partidas, te saldrá el menseaje para
  45. # avisar al jugador.
  46. #
  47. # 4.-Estando en la pantalla de carga, se podrá eliminar la partida seleccionada
  48. # al oprimir la tecla Z (Input::A).
  49. #
  50. # 5.-Para evitar reducción de rendimiento, solo la partida 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 partida 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. NOMBREPARTIDA = "Partida_JessWishes"
  64.  
  65. # Nombre de la carpeta que contendrá los archivos a guardar.
  66. DIR_PARTIDA = "Guardar"
  67.  
  68. # Número maximo de partidas
  69. N_MX_PARTIDA = 10
  70.  
  71. # Al iniciar partida 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. ["Español","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 partidas.
  97. #-------------------------------------------------------------------------------
  98. module RTP
  99.  
  100. def self.getSaveFileName(fileName)
  101. Dir.mkdir(DIR_PARTIDA) unless File.exists?(DIR_PARTIDA)
  102. return DIR_PARTIDA+"/"+fileName
  103. end
  104.  
  105. end
  106. #-------------------------------------------------------------------------------
  107. # Variable temporal en la cual se guardará el nombre de la partida actual.
  108. #-------------------------------------------------------------------------------
  109. class Game_Temp
  110. attr_accessor :archivoguardado
  111. end
  112. #-------------------------------------------------------------------------------
  113. # Guardar Partida(s).
  114. #-------------------------------------------------------------------------------
  115.  
  116. # Autosave
  117. def pbJessAutoSave
  118. Kernel.pbMessage(_INTL("Guardando Partida...\\wtnp[10]"))
  119. mx=false
  120. for i in 1..N_MX_PARTIDA
  121. sv = "#{NOMBREPARTIDA}#{i}"; sv2 = sv+".rxdata"
  122. break if !safeExists?(RTP.getSaveFileName(sv2))
  123. mx=true if i==N_MX_PARTIDA && !$game_temp.archivoguardado
  124. end
  125. $game_temp.archivoguardado = sv if !$game_temp.archivoguardado && mx==false
  126. if mx==true
  127. Kernel.pbMessage(_INTL("Has llegado al límite de partidas guardadas\nNo se podrá guardar una partida nueva"))
  128. return false
  129. else
  130. pbSave(false,$game_temp.archivoguardado)
  131. Kernel.pbMessage(_INTL("\\me[GUI save game]Se ha guardado la partida actual"))
  132. return true
  133. end
  134. end
  135.  
  136.  
  137. def pbSave(safesave=false,archivo=NOMBREPARTIDA)
  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 partida actual en el archivo Repaldo.rxdata
  173. #-------------------------------------------------------------------------------
  174. def pbEmergencySave
  175. oldscene=$scene
  176. $scene=nil
  177. Kernel.pbMessage(_INTL("El script está tomando mucho tiempo, el juego se reiniciará."))
  178. return if !$Trainer
  179. if safeExists?(RTP.getSaveFileName("Respaldo.rxdata"))
  180. File.open(RTP.getSaveFileName("Respaldo.rxdata"), 'rb') {|r|
  181. File.open(RTP.getSaveFileName("Respaldo.rxdata.bak"), 'wb') {|w|
  182. while s = r.read(4096)
  183. w.write s
  184. end
  185. }
  186. }
  187. end
  188. if pbSave(false,"Respaldo")
  189. Kernel.pbMessage(_INTL("El juego se ha guardado como Respaldo.rxdata.\\me[GUI save game]\\wtnp[30]"))
  190. else
  191. Kernel.pbMessage(_INTL("\\se[]Hubo un error al guardar el archivo...\\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 #Partida Nueva
  204. archivos=[]
  205. n=0
  206. for i in 1..N_MX_PARTIDA
  207. archivos.push("#{NOMBREPARTIDA}#{i}") if safeExists?(RTP.getSaveFileName("#{NOMBREPARTIDA}#{i}.rxdata"))
  208. next if n>0
  209. n=i if !safeExists?(RTP.getSaveFileName("#{NOMBREPARTIDA}#{i}.rxdata"))
  210. end
  211. @scene.pbStartScreen
  212. if Kernel.pbConfirmMessage(_INTL("¿Te gustaría guardar la partida?"))
  213. #Ver si hay una partida guardada
  214.  
  215. if archivos.size>0 && !$PokemonTemp.begunNewGame
  216. resul=1 #No es Partida Nueva
  217. Kernel.pbMessage(_INTL("¡Ya existe una partida guardada!"))
  218. if Kernel.pbConfirmMessage(_INTL("¿Sobre escribir la partida actual?"))
  219. resul=2 #Sobre escribir
  220. end
  221. end
  222. $PokemonTemp.begunNewGame=false
  223. if archivos.size==N_MX_PARTIDA && resul!=2
  224. Kernel.pbMessage(_INTL("¡Has alcanzado el máximo número de partidas guardadas!"))
  225. Kernel.pbMessage(_INTL("\\se[]No se ha podido guardar.\\wtnp[30]"))
  226. else
  227. guardar="#{NOMBREPARTIDA}#{n}" #Archivo nuevo
  228. guardar=$game_temp.archivoguardado if resul==2 #Archivo actual
  229. if pbSave(false,guardar)
  230. Kernel.pbMessage(_INTL("Se ha guardado la partida.\\me[GUI save game]\\wtnp[30]")) if resul==0
  231. Kernel.pbMessage(_INTL("Se ha guardado en una partida nueva.\\me[GUI save game]\\wtnp[30]")) if resul==1
  232. Kernel.pbMessage(_INTL("Se ha sobre escrito la partida.\\me[GUI save game]\\wtnp[30]")) if resul==2
  233. if archivos.size==N_MX_PARTIDA && resul!=2
  234. Kernel.pbMessage(_INTL("Has alcanzado el máximo de partidas guardadas, podrás sobre escribir las existentes pero no podrás guardar nuevas hasta que elimines alguna de las anteriores."))
  235. end
  236. ret=true
  237. $game_temp.archivoguardado= guardar #Definir archivo actual
  238. else
  239. Kernel.pbMessage(_INTL("\\se[]No se ha podido guardar.\\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 partida(s)
  252. #-------------------------------------------------------------------------------
  253. class PokemonLoadScreen
  254.  
  255. #Eliminando el método de Essentials para eliminar partidas.
  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_PARTIDA
  296. archivos.push("#{NOMBREPARTIDA}#{i}") if safeExists?(RTP.getSaveFileName("#{NOMBREPARTIDA}#{i}.rxdata"))
  297. savefile.push(RTP.getSaveFileName("#{NOMBREPARTIDA}#{i}.rxdata")) if safeExists?(RTP.getSaveFileName("#{NOMBREPARTIDA}#{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_PARTIDA
  344. showContinue.push(true) if safeExists?(RTP.getSaveFileName("#{NOMBREPARTIDA}#{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("Partida #{i+1}") if showContinue[i]==true
  358. end
  359. end
  360. commands[cmdNewGame = commands.length] = _INTL("Juego Nuevo")
  361. commands[cmdMysteryGift = commands.length] = _INTL("Regalo Misterioso") if (trainer.mysterygiftaccess rescue false)
  362. commands[cmdOption = commands.length] = _INTL("Opciones")
  363. commands[cmdDebug = commands.length] = _INTL("Debug") if $DEBUG
  364. commands[cmdQuit = commands.length] = _INTL("Cerrar Juego")
  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]=="eliminar"
  394. if command<archivos.size
  395. if safeExists?(savefile[command]) && comando.include?(command)
  396. if Kernel.pbConfirmMessage(_INTL("¿Eliminar está partida?"))
  397. Kernel.pbMessage(_INTL("Si la eliminas se perderá toda la información en ella."))
  398. if Kernel.pbConfirmMessage(_INTL("¿Eliminar de todas maneras?"))
  399. begin; File.delete(savefile[command]); rescue; end
  400. begin; File.delete(savefile[command]+".bak"); rescue; end
  401. Kernel.pbMessage(_INTL("Está partida ha sido eliminada."))
  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 partida
  420. nmb_j = (archivos[n-1] == NOMBREPARTIDA) ? "#{NOMBREPARTIDA}#{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,"eliminar"]
  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("Medallas:"),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("Tiempo:"),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