ComfeyyLove

Untitled

Jan 14th, 2021
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.67 KB | None | 0 0
  1.  
  2.  
  3. #=begin
  4. #===============================================================================
  5. #
  6. #-------------------------------------------------------------------------------
  7. #-------------------------------------------------------------------------------
  8. # Script : Multiples Partidas 5.0
  9. # por JessWishes
  10. #-------------------------------------------------------------------------------
  11. #-------------------------------------------------------------------------------
  12. # Creado para RPG Maker XP con base Essentials
  13. # Compatible : versión 18
  14. # No probado con 16 o menor.
  15. #-------------------------------------------------------------------------------
  16. #
  17. #-------------------------------------------------------------------------------
  18. # DevianArt :
  19. # https://www.deviantart.com/jesswshs
  20. #
  21. # Twitter :
  22. # https://twitter.com/JessWishes
  23. #
  24. # Pagina de Recursos
  25. # https://jesswishesdev.weebly.com
  26. #
  27. #-------------------------------------------------------------------------------
  28. #
  29. #-------------------------------------------------------------------------------
  30. # Esto ha tomado tiempo y esfuerzo en ser diseñado, aunque es de uso libre,
  31. # se agradece que se den créditos.
  32. #
  33. #-------------------------------------------------------------------------------
  34. #
  35. #-------------------------------------------------------------------------------
  36. # Modo de uso
  37. #
  38. # Copiar y pegar en un nuevo script arriba del llamado Main.
  39. #
  40. # 1.-Una vez guardada la primera partida, se creará la carpeta que contendrá
  41. # los archivos
  42. #
  43. # 2.-Al iniciar una partida nueva, la primera vez que se guarde, se hará en un
  44. # archivo nuevo y al guardar de nuevo, te preguntará si quieres que ese
  45. # archivo se sobre escriba, de lo contrario se creará otro nuevo.
  46. #
  47. # 3.-Al llegar al número maximo de partidas, te saldrá el menseaje para
  48. # avisar al jugador.
  49. #
  50. # 4.-Estando en la pantalla de carga, se podrá eliminar la partida seleccionada
  51. # al oprimir la tecla Z (Input::A).
  52. #
  53. # 5.-Para evitar reducción de rendimiento, solo la partida seleccionada en la
  54. # la pantalla de carga, mostrará la imagen del personaje y los iconos del
  55. # equipo.
  56. #
  57. # 6.-Para forzar que la partida se guarde de manera automatica, se usa la
  58. # siguiente función : pbJessAutoSave
  59. # Está puede regresar el resultado; true si se ha guardado o false si no se
  60. # pudo guardar.
  61. #
  62. #-------------------------------------------------------------------------------
  63. # Variables Globales
  64. #-------------------------------------------------------------------------------
  65. # Nombre de los archivos a guardar.
  66. #NOMBREPARTIDA = "Partida_JessWishes"
  67. NOMBREPARTIDA = "Spielstand_"
  68.  
  69. # Nombre de la carpeta que contendrá los archivos a guardar.
  70. #DIR_PARTIDA = "Guardar"
  71. DIR_PARTIDA = "Save"
  72.  
  73. # Número maximo de partidas
  74. N_MX_PARTIDA = 3
  75.  
  76. # Al iniciar partida nueva te dejará seleccionar un lenguaje diferente.
  77. LENG_JESS = false
  78.  
  79. # Lista de Lenguajes disponibles.
  80. # la variable LANGUAGES en la sección Settings no se debe usar para evitar
  81. # posibles errores con el complilador.
  82. LANGUAGES = [
  83. ["Deutsch","deutsch.dat"],
  84. ["Deutsch","deutsch.dat"]
  85. ]
  86. #-------------------------------------------------------------------------------
  87. #
  88. #-------------------------------------------------------------------------------
  89. #
  90. #-------------------------------------------------------------------------------
  91. #
  92. #-------------------------------------------------------------------------------
  93. #
  94. #-------------------------------------------------------------------------------
  95. #
  96. #-------------------------------------------------------------------------------
  97. #
  98. #-------------------------------------------------------------------------------
  99. #
  100. #-------------------------------------------------------------------------------
  101. # Dirección donde se guardarán las partidas.
  102. #-------------------------------------------------------------------------------
  103. module RTP
  104.  
  105. def self.getSaveFileName(fileName)
  106. Dir.mkdir(DIR_PARTIDA) unless File.exists?(DIR_PARTIDA)
  107. return DIR_PARTIDA+"/"+fileName
  108. end
  109.  
  110. end
  111. #-------------------------------------------------------------------------------
  112. # Variable temporal en la cual se guardará el nombre de la partida actual.
  113. #-------------------------------------------------------------------------------
  114. class Game_Temp
  115. attr_accessor :archivoguardado
  116. end
  117. #-------------------------------------------------------------------------------
  118. # Guardar Partida(s).
  119. #-------------------------------------------------------------------------------
  120.  
  121. # Autosave
  122. def pbJessAutoSave
  123. Kernel.pbMessage(_INTL("Guardando Partida...\\wtnp[10]"))
  124. mx=false
  125. for i in 1..N_MX_PARTIDA
  126. sv = "#{NOMBREPARTIDA}#{i}"; sv2 = sv+".rxdata"
  127. break if !safeExists?(RTP.getSaveFileName(sv2))
  128. mx=true if i==N_MX_PARTIDA && !$game_temp.archivoguardado
  129. end
  130. $game_temp.archivoguardado = sv if !$game_temp.archivoguardado && mx==false
  131. if mx==true
  132. Kernel.pbMessage(_INTL("Has llegado al límite de partidas guardadas\nNo se podrá guardar una partida nueva"))
  133. return false
  134. else
  135. pbSave(false,$game_temp.archivoguardado)
  136. Kernel.pbMessage(_INTL("\\me[GUI save game]Das Spiel wurde gespeichert."))
  137. return true
  138. end
  139. end
  140.  
  141.  
  142. def pbSave(safesave=false,archivo=NOMBREPARTIDA)
  143. $Trainer.metaID=$PokemonGlobal.playerID
  144. begin
  145. File.open(RTP.getSaveFileName("#{archivo}.rxdata"),"wb"){|f|
  146. Marshal.dump($Trainer,f)
  147. Marshal.dump(Graphics.frame_count,f)
  148. if $data_system.respond_to?("magic_number")
  149. $game_system.magic_number = $data_system.magic_number
  150. else
  151. $game_system.magic_number = $data_system.version_id
  152. end
  153. $game_system.save_count+=1
  154. Marshal.dump($game_system,f)
  155. Marshal.dump($PokemonSystem,f)
  156. Marshal.dump($game_map.map_id,f)
  157. Marshal.dump($game_switches,f)
  158. Marshal.dump($game_variables,f)
  159. Marshal.dump($game_self_switches,f)
  160. Marshal.dump($game_screen,f)
  161. Marshal.dump($MapFactory,f)
  162. Marshal.dump($game_player,f)
  163. $PokemonGlobal.safesave=safesave
  164. Marshal.dump($PokemonGlobal,f)
  165. Marshal.dump($PokemonMap,f)
  166. Marshal.dump($PokemonBag,f)
  167. Marshal.dump($PokemonStorage,f)
  168. }
  169. Graphics.frame_reset
  170. rescue
  171. return false
  172. end
  173. return true
  174. end
  175.  
  176. #-------------------------------------------------------------------------------
  177. # En caso de error guardará la partida actual en el archivo Repaldo.rxdata
  178. #-------------------------------------------------------------------------------
  179. def pbEmergencySave
  180. oldscene=$scene
  181. $scene=nil
  182. Kernel.pbMessage(_INTL("Das Skript hat ein Problem, dass Spiel wird neu gestartet."))
  183. return if !$Trainer
  184. if safeExists?(RTP.getSaveFileName("Respaldo.rxdata"))
  185. File.open(RTP.getSaveFileName("Respaldo.rxdata"), 'rb') {|r|
  186. File.open(RTP.getSaveFileName("Respaldo.rxdata.bak"), 'wb') {|w|
  187. while s = r.read(4096)
  188. w.write s
  189. end
  190. }
  191. }
  192. end
  193. if pbSave(false,"Respaldo")
  194. Kernel.pbMessage(_INTL("Das Spiel wurde gespeichert.\\me[GUI save game]\\wtnp[30]"))
  195. else
  196. Kernel.pbMessage(_INTL("\\se[]Beim Speichern der Datei ist ein Fehler aufgetreten.\\wtnp[30]"))
  197. end
  198. $scene=oldscene
  199. end
  200.  
  201. #-------------------------------------------------------------------------------
  202. # Pantalla de guardar
  203. #-------------------------------------------------------------------------------
  204. class PokemonSaveScreen
  205.  
  206. def pbSaveScreen
  207. ret=false
  208. resul=0 #Partida Nueva
  209. archivos=[]
  210. n=0
  211. for i in 1..N_MX_PARTIDA
  212. archivos.push("#{NOMBREPARTIDA}#{i}") if safeExists?(RTP.getSaveFileName("#{NOMBREPARTIDA}#{i}.rxdata"))
  213. next if n>0
  214. n=i if !safeExists?(RTP.getSaveFileName("#{NOMBREPARTIDA}#{i}.rxdata"))
  215. end
  216. @scene.pbStartScreen
  217. if Kernel.pbConfirmMessage(_INTL("Möchtest du das Spiel speichern?"))
  218. #Ver si hay una partida guardada
  219.  
  220. if archivos.size>0 && !$PokemonTemp.begunNewGame && true #deactivated by default
  221. resul=1 #No es Partida Nueva
  222. #Kernel.pbMessage(_INTL("Es existiert bereits eine Spieldatei!"))
  223. #if Kernel.pbConfirmMessage(_INTL("Das Spiel überschreiben?"))
  224. resul=2 #Sobre escribir
  225. #end
  226. end
  227. $PokemonTemp.begunNewGame=false
  228. if archivos.size==N_MX_PARTIDA && resul!=2
  229. Kernel.pbMessage(_INTL("Die maximale Anzahl verschiedener Spielstände wurde erreicht!"))
  230. Kernel.pbMessage(_INTL("\\se[]Das Spiel konnte nicht gespeichert werden.\\wtnp[30]"))
  231. else
  232. guardar="#{NOMBREPARTIDA}#{n}" #Archivo nuevo
  233. guardar=$game_temp.archivoguardado if resul==2 #Archivo actual
  234. if pbSave(false,guardar)
  235. Kernel.pbMessage(_INTL("Das Spiel wurde gespeichert.\\me[GUI save game]\\wtnp[30]")) if resul==0
  236. Kernel.pbMessage(_INTL("Das Spiel wurde in einem neuen Spielstand gespeichert.\\me[GUI save game]\\wtnp[30]")) if resul==1
  237. Kernel.pbMessage(_INTL("Das Spiel wurde gespeichert.\\me[GUI save game]\\wtnp[30]")) if resul==2
  238. if archivos.size==N_MX_PARTIDA && resul!=2
  239. Kernel.pbMessage(_INTL("Du hast das Maximum an speicherbaren Spielständen erreicht. Du kannst die vorhandenen Spiele überschreiben, aber keine neuen speichern, bis du eines der vorherigen Spiele löschst."))
  240. end
  241. ret=true
  242. $game_temp.archivoguardado= guardar #Definir archivo actual
  243. else
  244. Kernel.pbMessage(_INTL("\\se[]Das Spiel konnte nicht gespeichert werden.\\wtnp[30]"))
  245. ret=false
  246. end
  247. end
  248. end
  249. @scene.pbEndScreen
  250. return ret
  251. end
  252.  
  253. end
  254.  
  255. #-------------------------------------------------------------------------------
  256. # Cargar partida(s)
  257. #-------------------------------------------------------------------------------
  258. class PokemonLoadScreen
  259.  
  260. #Eliminando el método de Essentials para eliminar partidas.
  261. def pbStartDeleteScreen; end
  262.  
  263.  
  264. def pbLeerinfoguardar(savefile)
  265. trainer = nil
  266. framecount = 0
  267. mapid = 0
  268. @haveBackup = false
  269. begin
  270. trainer, framecount, $game_system, $PokemonSystem, mapid = pbTryLoadFile(savefile)
  271. rescue
  272. if safeExists?(savefile+".bak")
  273. begin
  274. trainer, framecount, $game_system, $PokemonSystem, mapid = pbTryLoadFile(savefile+".bak")
  275. @haveBackup = true
  276. rescue
  277. end
  278. end
  279. if @haveBackup
  280. Kernel.pbMessage(_INTL("The save file is corrupt. The previous save file will be loaded."))
  281. else
  282. Kernel.pbMessage(_INTL("The save file is corrupt, or is incompatible with this game."))
  283. if !Kernel.pbConfirmMessageSerious(_INTL("Do you want to delete the save file and start anew?"))
  284. $scene = nil
  285. return
  286. end
  287. begin; File.delete(savefile); rescue; end
  288. begin; File.delete(savefile+".bak"); rescue; end
  289. $game_system = Game_System.new
  290. $PokemonSystem = PokemonSystem.new if !$PokemonSystem
  291. Kernel.pbMessage(_INTL("The save file was deleted."))
  292. end
  293. end
  294. return [trainer,framecount,$game_system,$PokemonSystem,mapid]
  295. end
  296.  
  297. def pbcarga()
  298. archivos=[]
  299. savefile=[]
  300. for i in 1..N_MX_PARTIDA
  301. archivos.push("#{NOMBREPARTIDA}#{i}") if safeExists?(RTP.getSaveFileName("#{NOMBREPARTIDA}#{i}.rxdata"))
  302. savefile.push(RTP.getSaveFileName("#{NOMBREPARTIDA}#{i}.rxdata")) if safeExists?(RTP.getSaveFileName("#{NOMBREPARTIDA}#{i}.rxdata"))
  303. end
  304. return [archivos,savefile]
  305. end
  306.  
  307. def pbStartLoadScreen
  308. #pbBGMPlay("IntroOrchestra")
  309. $PokemonTemp = PokemonTemp.new
  310. $game_temp = Game_Temp.new
  311. $game_system = Game_System.new
  312. $PokemonSystem = PokemonSystem.new if !$PokemonSystem
  313.  
  314. datos=pbcarga
  315. archivos=datos[0]
  316. savefile=datos[1]
  317.  
  318. FontInstaller.install
  319.  
  320. data_system = pbLoadRxData("Data/System")
  321. mapfile = ($RPGVX) ? sprintf("Data/Map%03d.rvdata",data_system.start_map_id) :
  322. sprintf("Data/Map%03d.rxdata",data_system.start_map_id)
  323. if data_system.start_map_id==0 || !pbRgssExists?(mapfile)
  324. Kernel.pbMessage(_INTL("No starting position was set in the map editor.\1"))
  325. Kernel.pbMessage(_INTL("The game cannot continue."))
  326. @scene.pbEndScene
  327. $scene = nil
  328. return
  329. end
  330.  
  331. commands = []
  332. cmdContinuar=[]
  333. comando=[]
  334.  
  335. for i in 0..savefile.size-1
  336. cmdContinuar[i] = -1
  337. comando.push("cmdContinuar#{i}")
  338. end
  339.  
  340. cmdNewGame = -1
  341. cmdOption = -1
  342. cmdMysteryGift = -1
  343. cmdDebug = -1
  344. cmdQuit = -1
  345.  
  346. showContinue = []
  347. showContinue.push(false)
  348.  
  349. for i in 1..N_MX_PARTIDA
  350. showContinue.push(true) if safeExists?(RTP.getSaveFileName("#{NOMBREPARTIDA}#{i}.rxdata"))
  351. end
  352.  
  353. if savefile.size>0
  354. data=pbLeerinfoguardar(savefile[0])
  355. trainer=data[0]; framecount=data[1]; $game_system=data[2]; $PokemonSystem=data[3]; mapid=data[4]
  356. showContinue[0]=true if trainer
  357. if showContinue[0]==true
  358. if !@haveBackup
  359. begin; File.delete(savefile[0]+".bak"); rescue; end
  360. end
  361. end
  362. for i in 0..cmdContinuar.size-1
  363. commands[comando[i] = commands.length]= _INTL("Spielstand #{i+1}") if showContinue[i]==true
  364. end
  365. end
  366. commands[cmdNewGame = commands.length] = _INTL("Neues Spiel")
  367. commands[cmdMysteryGift = commands.length] = _INTL("Geheimgeschenk") if (trainer.mysterygiftaccess rescue false)
  368. commands[cmdOption = commands.length] = _INTL("Optionen")
  369. commands[cmdDebug = commands.length] = _INTL("Debug") if $DEBUG
  370. commands[cmdQuit = commands.length] = _INTL("Beenden")
  371.  
  372. trainerlist=[]
  373. framelist=[]
  374. maplist=[]
  375. for k in 0...archivos.size
  376. datatt=pbLeerinfoguardar(savefile[k])
  377. trainerlist.push(datatt[0])
  378. framelist.push(datatt[1])
  379. maplist.push(datatt[4])
  380. end
  381.  
  382. @scene.pbStartScene(commands,showContinue[0],trainer,framecount,mapid,cmdContinuar.size,trainerlist,framelist,maplist)
  383. @scene.pbSetParty(trainer) if showContinue[0]
  384. @scene.pbStartScene2
  385. # $ItemData = readItemList("Data/items.dat")
  386. pbLoadBattleAnimations
  387. loop do
  388. command2 = @scene.pbChoose(commands)
  389. command=command2[0]
  390.  
  391. if (command2[1]=="upd" || command2[1]=="dwd")
  392. @scene.pbSetParty(trainer,false)
  393. if command<archivos.size
  394. data=pbLeerinfoguardar(savefile[command])
  395. trainer=data[0]; framecount=data[1]; $game_system=data[2]; $PokemonSystem=data[3]; mapid=data[4]
  396. @scene.pbSetParty(trainer) if showContinue[command]
  397.  
  398. end
  399.  
  400. elsif command2[1]=="eliminar"
  401. if command<archivos.size
  402. if safeExists?(savefile[command]) && comando.include?(command)
  403. if Kernel.pbConfirmMessage(_INTL("Spielstand löschen?"))
  404. Kernel.pbMessage(_INTL("Wenn du den Spielstand löscht, gehen alle gespeicherten Informationen verloren."))
  405. if Kernel.pbConfirmMessage(_INTL("Möchtest du den Spielstand trotzdem löschen?"))
  406. begin; File.delete(savefile[command]); rescue; end
  407. begin; File.delete(savefile[command]+".bak"); rescue; end
  408. Kernel.pbMessage(_INTL("Der Spielstand wurde gelöscht."))
  409. archivos.delete_at(command)
  410. comando.delete_at(command)
  411. @scene.pbEndScene
  412. sscene=PokemonLoad_Scene.new
  413. sscreen=PokemonLoadScreen.new(sscene)
  414. sscreen.pbStartLoadScreen
  415. break
  416. end
  417. end
  418. end
  419. end
  420. elsif comando.include?(command)
  421. for i in 0..savefile.size-1
  422. savefile2=savefile[i] if command==comando[i]
  423. n=i+1 if command==comando[i]
  424. end
  425.  
  426. # Determinar el nombre de esta partida
  427. nmb_j = (archivos[n-1] == NOMBREPARTIDA) ? "#{NOMBREPARTIDA}#{n}" : archivos[n-1]
  428. $game_temp.archivoguardado = nmb_j
  429. #
  430. unless safeExists?(savefile2)
  431. pbPlayBuzzerSE
  432. next
  433. end
  434. @scene.pbEndScene
  435. metadata = nil
  436. File.open(savefile2){|f|
  437. $Trainer = Marshal.load(f) # Trainer already loaded
  438. Graphics.frame_count = Marshal.load(f)
  439. $game_system = Marshal.load(f)
  440. $PokemonSystem = Marshal.load(f)
  441. Marshal.load(f) # Current map id no longer needed
  442. $game_switches = Marshal.load(f)
  443. $game_variables = Marshal.load(f)
  444. $game_self_switches = Marshal.load(f)
  445. $game_screen = Marshal.load(f)
  446. $MapFactory = Marshal.load(f)
  447. $game_map = $MapFactory.map
  448. $game_player = Marshal.load(f)
  449. $PokemonGlobal = Marshal.load(f)
  450. metadata = Marshal.load(f)
  451. $PokemonBag = Marshal.load(f)
  452. $PokemonStorage = Marshal.load(f)
  453. if $game_switches[278]
  454. $PokemonSystem.battlestyle = 1
  455. $diff_money = 0.85
  456. $diff_exp = 0.85
  457. if $game_switches[94]
  458. $PokemonSystem.battlestyle = 1
  459. $diff_money = 0.75
  460. $diff_exp = 0.75
  461. end
  462. if $game_switches[139]
  463. $PokemonSystem.battlestyle = 1
  464. $diff_money = 0.65
  465. $diff_exp = 0.65
  466. end
  467. else
  468. $PokemonSystem.battlestyle = 0
  469. $diff_money = 1
  470. $diff_exp = 1
  471. end
  472. magicNumberMatches = false
  473. if $data_system.respond_to?("magic_number")
  474. magicNumberMatches = ($game_system.magic_number==$data_system.magic_number)
  475. else
  476. magicNumberMatches = ($game_system.magic_number==$data_system.version_id)
  477. end
  478. if !magicNumberMatches || $PokemonGlobal.safesave
  479. if pbMapInterpreterRunning?
  480. pbMapInterpreter.setup(nil,0)
  481. end
  482. begin
  483. $MapFactory.setup($game_map.map_id) # calls setMapChanged
  484. rescue Errno::ENOENT
  485. if $DEBUG
  486. Kernel.pbMessage(_INTL("Map {1} was not found.",$game_map.map_id))
  487. map = pbWarpToMap
  488. if map
  489. $MapFactory.setup(map[0])
  490. $game_player.moveto(map[1],map[2])
  491. else
  492. $game_map = nil
  493. $scene = nil
  494. return
  495. end
  496. else
  497. $game_map = nil
  498. $scene = nil
  499. Kernel.pbMessage(_INTL("The map was not found. The game cannot continue."))
  500. end
  501. end
  502. $game_player.center($game_player.x, $game_player.y)
  503. else
  504. $MapFactory.setMapChanged($game_map.map_id)
  505. end
  506. }
  507. if !$game_map.events # Map wasn't set up
  508. $game_map = nil
  509. $scene = nil
  510. Kernel.pbMessage(_INTL("The map is corrupt. The game cannot continue."))
  511. return
  512. end
  513. $PokemonMap = metadata
  514. $PokemonEncounters = PokemonEncounters.new
  515. $PokemonEncounters.setup($game_map.map_id)
  516. pbAutoplayOnSave
  517. $game_map.update
  518. $PokemonMap.updateMap
  519. $scene = Scene_Map.new
  520.  
  521. $PokemonSystem.language=0 if $PokemonSystem.language>LANGUAGES.size-1
  522.  
  523. pbLoadMessages("Data/"+LANGUAGES[$PokemonSystem.language][1]) if LENG_JESS
  524.  
  525. return
  526. elsif cmdNewGame>=0 && command==cmdNewGame
  527. @scene.pbEndScene
  528.  
  529. if LENG_JESS
  530. $PokemonSystem.language = pbChooseLanguage
  531. pbLoadMessages("Data/"+LANGUAGES[$PokemonSystem.language][1])
  532. end
  533.  
  534. if $game_map && $game_map.events
  535. for event in $game_map.events.values
  536. event.clear_starting
  537. end
  538. end
  539. $game_temp.common_event_id = 0 if $game_temp
  540. $scene = Scene_Map.new
  541. Graphics.frame_count = 0
  542. $game_system = Game_System.new
  543. $game_switches = Game_Switches.new
  544. $game_variables = Game_Variables.new
  545. $game_self_switches = Game_SelfSwitches.new
  546. $game_screen = Game_Screen.new
  547. $game_player = Game_Player.new
  548. $PokemonMap = PokemonMapMetadata.new
  549. $PokemonGlobal = PokemonGlobalMetadata.new
  550. $PokemonStorage = PokemonStorage.new
  551. $PokemonEncounters = PokemonEncounters.new
  552. $PokemonTemp.begunNewGame = true
  553. pbRefreshResizeFactor # To fix Game_Screen pictures
  554. $data_system = pbLoadRxData("Data/System")
  555. $MapFactory = PokemonMapFactory.new($data_system.start_map_id) # calls setMapChanged
  556. $game_player.moveto($data_system.start_x, $data_system.start_y)
  557. $game_player.refresh
  558. $game_map.autoplay
  559. $game_map.update
  560. return
  561. elsif cmdMysteryGift>=0 && command==cmdMysteryGift
  562. pbFadeOutIn(99999){
  563. trainer = pbDownloadMysteryGift(trainer)
  564. }
  565. elsif cmdOption>=0 && command==cmdOption
  566. pbFadeOutIn(99999){
  567. scene = PokemonOption_Scene.new
  568. screen = PokemonOptionScreen.new(scene)
  569. screen.pbStartScreen(true)
  570. }
  571. elsif cmdDebug>=0 && command==cmdDebug
  572. pbFadeOutIn(99999){ pbDebugMenu(false) }
  573. elsif cmdQuit>=0 && command==cmdQuit
  574. @scene.pbEndScene
  575. $scene = nil
  576. return
  577. end
  578. end
  579. @scene.pbEndScene
  580. return
  581. end
  582. end
  583.  
  584. #-------------------------------------------------------------------------------
  585. # Pantalla de carga (visual)
  586. #-------------------------------------------------------------------------------
  587. class PokemonLoad_Scene
  588.  
  589. def pbUpdate
  590. oldi = @sprites["cmdwindow"].index rescue 0
  591. pbUpdateSpriteHash(@sprites)
  592. newi = @sprites["cmdwindow"].index rescue 0
  593. if oldi!=newi
  594. @sprites["panel#{oldi}"].selected = false
  595. @sprites["panel#{oldi}"].pbRefresh
  596. @sprites["panel#{newi}"].selected = true
  597. @sprites["panel#{newi}"].pbRefresh
  598.  
  599. sy=@sprites["panel#{newi}"].bitmap.height+2
  600. mov=(newi>oldi)
  601. fv=(@mxpartidas*sy)
  602.  
  603. if newi==0
  604. @sprites["panel#{i}"].y=@bsy[i]
  605. elsif newi>oldi && newi!=oldi+1
  606. @sprites["panel#{i}"].y-=fv
  607. else
  608. @sprites["panel#{i}"].y-=sy if mov && newi<@mxpartidas+1
  609. @sprites["panel#{i}"].y+=sy if !mov && newi<@mxpartidas
  610. end
  611. end
  612. end
  613. end
  614.  
  615. def pbSetParty(trainer,val=true)
  616. @sprites["player"].dispose if @sprites["player"]
  617. for i in 0..6; @sprites["party#{i}"].dispose if @sprites["party#{i}"]; end
  618. return if !trainer || !trainer.party || val==false
  619. meta = pbGetMetadata(0,MetadataPlayerA+trainer.metaID)
  620. if meta
  621. filename = pbGetPlayerCharset(meta,1,trainer)
  622. @sprites["player"] = TrainerWalkingCharSprite.new(filename,@viewport)
  623. charwidth = @sprites["player"].bitmap.width
  624. charheight = @sprites["player"].bitmap.height
  625. @sprites["player"].x = 56*2-charwidth/8
  626. @sprites["player"].y = 56*2-charheight/8
  627. @sprites["player"].src_rect = Rect.new(0,0,charwidth/4,charheight/4)
  628. end
  629. for i in 0...trainer.party.length
  630. @sprites["party#{i}"] = PokemonIconSprite.new(trainer.party[i],@viewport)
  631. @sprites["party#{i}"].x = 151*2+33*2*(i&1)
  632. @sprites["party#{i}"].y = 36*2+25*2*(i/2)
  633. @sprites["party#{i}"].z = 99999
  634. end
  635. end
  636.  
  637. def pbStartScene(commands,showContinue,trainer,framecount,mapid,mxpartidas,trainerlist,framelist,maplist)
  638. @trainerlist=trainerlist
  639. @mxpartidas=mxpartidas
  640. @commands = commands
  641. @sprites = {}
  642. @viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
  643. @viewport.z = 99998
  644. addBackgroundOrColoredPlane(@sprites,"background","loadbg",Color.new(248,248,248),@viewport)
  645. y = 16*2
  646. @bsy=[]
  647. for i in 0...commands.length
  648. @sprites["panel#{i}"] = PokemonLoadPanel.new(i,commands[i],
  649. (showContinue && i<@mxpartidas) ? true : false,trainerlist[i],framelist[i],maplist[i],@viewport)
  650. @sprites["panel#{i}"].x = 24*2
  651. @sprites["panel#{i}"].y = y
  652. @sprites["panel#{i}"].pbRefresh
  653. @bsy.push(y)
  654. y += (showContinue && i<@mxpartidas) ? 111*2+1*2 : 23*2+1*2
  655. end
  656. @sprites["cmdwindow"] = Window_CommandPokemon.new([])
  657. @sprites["cmdwindow"].viewport = @viewport
  658. @sprites["cmdwindow"].visible = false
  659. end
  660.  
  661. def pbactu(commands,trainer,framecount,mapid)
  662.  
  663. for i in 0...commands.length
  664. @sprites["panel#{i}"].pbactu(trainer[i],framecount,mapid)
  665. end
  666. end
  667.  
  668. def pbChoose(commands)
  669. @sprites["cmdwindow"].commands = commands
  670. loop do
  671. Graphics.update
  672. Input.update
  673. pbUpdate
  674. if Input.trigger?(Input::C)
  675. return [@sprites["cmdwindow"].index,"sel"]
  676. elsif Input.trigger?(Input::A)
  677. return [@sprites["cmdwindow"].index,"eliminar"]
  678. elsif Input.trigger?(Input::UP)
  679. return [@sprites["cmdwindow"].index,"upd"]
  680. elsif Input.trigger?(Input::DOWN)
  681. return [@sprites["cmdwindow"].index,"dwd"]
  682. end
  683. end
  684. end
  685.  
  686. end
  687. #-------------------------------------------------------------------------------
  688. # Paneles
  689. #-------------------------------------------------------------------------------
  690. class PokemonLoadPanel < SpriteWrapper
  691. attr_reader :selected
  692.  
  693. def initialize(index,title,isContinue,trainer,framecount,mapid,viewport=nil)
  694. super(viewport)
  695. @viewport=viewport
  696. @trainer=trainer
  697. @index = index
  698. @title = title
  699. @isContinue = isContinue
  700. @trainer = trainer
  701. @totalsec = (framecount || 0)/Graphics.frame_rate
  702. @mapid = mapid
  703. @selected = (index==0)
  704. @bgbitmap = AnimatedBitmap.new("Graphics/Pictures/loadPanels")
  705. @refreshBitmap = true
  706. @refreshing = false
  707. refresh
  708. end
  709.  
  710. def dispose
  711. @bgbitmap.dispose
  712. self.bitmap.dispose
  713. super
  714. end
  715.  
  716. def selected=(value)
  717. if @selected!=value
  718. @selected = value
  719. @refreshBitmap = true
  720. refresh
  721. end
  722. end
  723.  
  724. def pbactu(trainer,framecount,mapid)
  725. @trainer=trainer
  726. @mapid=mapid
  727. @totalsec = (framecount || 0)/Graphics.frame_rate
  728. refresh
  729. end
  730.  
  731. def pbRefresh
  732. @refreshBitmap = true
  733. refresh
  734. end
  735.  
  736. def refresh
  737. return if @refreshing
  738. return if disposed?
  739. @refreshing = true
  740. if !self.bitmap || self.bitmap.disposed?
  741. self.bitmap = BitmapWrapper.new(@bgbitmap.width,111*2)
  742. pbSetSystemFont(self.bitmap)
  743. end
  744. if @refreshBitmap
  745. @refreshBitmap = false
  746. self.bitmap.clear if self.bitmap
  747.  
  748. if @isContinue
  749. self.bitmap.blt(0,0,@bgbitmap.bitmap,Rect.new(0,(@selected) ? 111*2 : 0,@bgbitmap.width,111*2))
  750. else
  751. self.bitmap.blt(0,0,@bgbitmap.bitmap,Rect.new(0,111*2*2+((@selected) ? 23*2 : 0),@bgbitmap.width,23*2))
  752. end
  753. textpos = []
  754. if @isContinue
  755. textpos.push([@title,16*2,5*2,0,Color.new(232,232,232),Color.new(136,136,136)])
  756. #textpos.push([_INTL("Medallas:"),16*2,56*2,0,Color.new(232,232,232),Color.new(136,136,136)])
  757. #textpos.push([@trainer.numbadges.to_s,103*2,56*2,1,Color.new(232,232,232),Color.new(136,136,136)])
  758. textpos.push([_INTL("Pokédex :"),16*2,72*2,0,Color.new(232,232,232),Color.new(136,136,136)])
  759. textpos.push([@trainer.pokedexSeen.to_s,103*2,72*2,1,Color.new(232,232,232),Color.new(136,136,136)])
  760. textpos.push([_INTL("Spielzeit:"),16*2,88*2,0,Color.new(232,232,232),Color.new(136,136,136)])
  761. hour = @totalsec / 60 / 60
  762. min = @totalsec / 60 % 60
  763. if hour>0
  764. if min > 10
  765. textpos.push([_INTL("{1}:{2}",hour,min),103*2,88*2,1,Color.new(232,232,232),Color.new(136,136,136)])
  766. else
  767. textpos.push([_INTL("{1}:0{2}",hour,min),103*2,88*2,1,Color.new(232,232,232),Color.new(136,136,136)])
  768. end
  769. else
  770. if min > 10
  771. textpos.push([_INTL("0:{1}",min),103*2,88*2,1,Color.new(232,232,232),Color.new(136,136,136)])
  772. else
  773. textpos.push([_INTL("0:0{1}",min),103*2,88*2,1,Color.new(232,232,232),Color.new(136,136,136)])
  774. end
  775. end
  776. if @trainer.isMale?
  777. textpos.push([@trainer.name,56*2,32*2,0,Color.new(56,160,248),Color.new(56,104,168)])
  778. else
  779. textpos.push([@trainer.name,56*2,32*2,0,Color.new(240,72,88),Color.new(160,64,64)])
  780. end
  781. mapname = pbGetMapNameFromId(@mapid)
  782. mapname.gsub!(/\\PN/,@trainer.name)
  783. textpos.push([mapname,193*2,5*2,1,Color.new(232,232,232),Color.new(136,136,136)])
  784. else
  785. textpos.push([@title,16*2,4*2,0,Color.new(232,232,232),Color.new(136,136,136)])
  786. end
  787. pbDrawTextPositions(self.bitmap,textpos)
  788. end
  789. @refreshing = false
  790. end
  791. end
  792. #-------------------------------------------------------------------------------
  793. #
  794. #-------------------------------------------------------------------------------
  795. #===============================================================================
  796. #=end
Advertisement
Add Comment
Please, Sign In to add comment