Advertisement
FuegoFatuo25

Menu de TPs raro

Feb 13th, 2019
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 5.70 KB | None | 0 0
  1. #==============================================================================
  2. #Nombre de los mapas. Se refiere al nombre con el que se mostrará, no al propio
  3. #nombre del mapa. Es decir, puedes poner un nombre distinto al que hay.
  4. # Los nombres deben estar ordenados, de forma que cada uno coincida con su
  5. #descripciín, ID, etc.
  6. # Los nombres también deben ir precedidos por :
  7. MAP_NAMES=[:Pueblo_Soneto,:Ciudad_Augura,:C,:D]
  8. #==============================================================================
  9. #Descripciones de cada mapa, deben ir en el mismo orden que los nombres, para que
  10. #coincidan.
  11. MAP_DESCS=["AAAAAAAA","BBBBBBBBBBBB","CCCCCCCCCC"]
  12. #==============================================================================
  13. #IDs de los mapas. Nuevamente, deben coincidir en orden con las descripciones y
  14. #nombres. Estas deben ser las IDs del mapa al que se desea teletransportar (MAP001,
  15. #MAP002, etc)
  16. MAP_IDS=["MAP001","MAP002","MAP003"]
  17. #==============================================================================
  18. #Coordenada X del mapa a la que el jugador será teletransportado en dicho mapa
  19. #(Al igual que antes, el orden debe coincidir)
  20. MAP_X=[1,2,3]
  21. #==============================================================================
  22. #Coordenada Y del mapa a la que el jugador será teletransportado en dicho mapa
  23. #(Al igual que antes, el orden debe coincidir)
  24. MAP_Y=[1,2,3]
  25. #==============================================================================
  26. module Teleport
  27.   attr_accessor :nombre
  28.   attr_accessor :descripcion
  29.   attr_accessor :imagen
  30.   attr_accessor :maps_array
  31.   def initialize
  32.     @name=nombre
  33.     @description=descripcion
  34.     @imagen=imagen
  35.     @select=0
  36.     @exit=0
  37.     @mapnames=MAP_NAMES
  38.     @map_descs=MAP_DESCS
  39.     @mapids=MAP_IDS
  40.     @mapx=MAP_X
  41.     @mapy=MAP_Y
  42.     $maps_array=[]
  43.   end
  44.  
  45.   def Kernel.pbNewTeleport(tp)
  46.     $maps_array ||= []
  47.     tp=tp.to_sym unless tp.is_a?(Symbol)
  48.     $maps_array << tp
  49.   end
  50.  
  51.   def pbTpUnlocked?(mapname)
  52.     $maps_array.each{|x|
  53.     return @mapnames[mapname]==x ? true : false
  54.     }
  55.   end
  56.  
  57.   def pbWarpToMap(map)
  58.   @mapids=MAP_IDS
  59.   mapid=@mapids[map]
  60.     map=Game_Map.new
  61.     map.setup(mapid)
  62.     success=false
  63.     x=@mapx[@select]
  64.     y=@mapy[@select]
  65.     100.times do
  66.     x=@mapx[@select]
  67.     y=@mapy[@select]
  68.       next if !map.passableStrict?(x,y,$game_player)
  69.       blocked=false
  70.       for event in map.events.values
  71.         if event.x == x && event.y == y && !event.through
  72.           blocked=true if self != $game_player || event.character_name != ""
  73.         end
  74.       end
  75.       next if blocked
  76.       pbTpSuccess
  77.       success=true
  78.       break
  79.     if !success
  80.       x=rand(map.width)
  81.       y=rand(map.height)
  82.     end
  83.     return [mapid,x,y]
  84.   end
  85.   return nil
  86. end
  87.   def pbTpSuccess
  88.     pbFadeOutAndHide(sprites)
  89.     pbDisposeSpriteHash(sprites)
  90.     viewport.dispose
  91.     if $scene.is_a?(Scene_Map)
  92.     $game_temp.player_new_map_id=map[0]
  93.     $game_temp.player_new_x=map[1]
  94.     $game_temp.player_new_y=map[2]
  95.     $game_temp.player_new_direction=2
  96.     $scene.transfer_player
  97.     $game_map.refresh
  98.     else
  99.     Kernel.pbCancelVehicles
  100.     $MapFactory.setup(map[0])
  101.     $game_player.moveto(map[1],map[2])
  102.     $game_player.turn_down
  103.     $game_map.update
  104.     $game_map.autoplay
  105.     $game_map.refresh
  106.     end
  107.   end
  108. end
  109.   class Teleport_Scene
  110.   include Teleport
  111.   def initialize
  112.     @mapnames=MAP_NAMES
  113.     @map_descs=MAP_DESCS
  114.     @select=0
  115.     @extraselect=0
  116.     @exit=false
  117.   end
  118.   def pbStartScene
  119.   @exit=false
  120.   pbSetViableDexes
  121.   @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
  122.   @viewport.z=9999
  123.   @select=0
  124.  
  125.   @sprites={}
  126.   pbSEPlay("BW2OpenMenu")
  127.   @sprites["bg"]=IconSprite.new(0,0,@viewport)    
  128.   @sprites["bg"].setBitmap("Graphics/Pictures/TP/bg")
  129.  
  130.   @sprites["overlay"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
  131.   @sprites["overlay"].z=99999
  132.  
  133.   pbUpdate
  134.  
  135.   end
  136.  
  137.   def pbUpdate
  138.     loop do
  139.     @sprites["bg"].setBitmap("Graphics/Pictures/TP/bg2") if @select==0
  140.     @sprites["bg"].setBitmap("Graphics/Pictures/TP/bg2") if @select==(@mapnames.length+@extraselect)
  141.     overlay=@sprites["overlay"].bitmap
  142.         baseColor=Color.new(255,255,255)
  143.     shadowColor=Color.new(0,0,0)
  144.     pbSetSystemFont(@sprites["overlay"].bitmap)
  145.     textpos=[]
  146.     if pbTpUnlocked?(@select)
  147.     textpos.push([_INTL("{1}",@mapnames[@select].to_s),512,0,1,baseColor,shadowColor])
  148.     textpos.push([_INTL("{1}",@map_descs[@select].to_s),200,0,1,baseColor,shadowColor])
  149.     else
  150.     textpos.push([_INTL("???",@mapnames[@select].to_s),512,0,1,baseColor,shadowColor])
  151.     textpos.push([_INTL("???",@map_descs[@select].to_s),200,0,1,baseColor,shadowColor])
  152.     end
  153.     pbDrawTextPositions(overlay,textpos)
  154.    
  155.     Graphics.update
  156.     Input.update
  157.    
  158.    
  159.     if Input.trigger?(Input::B)
  160.       pbEndScene
  161.     end
  162.     if Input.trigger?(Input::UP) && !(@select==0)
  163.       overlay.clear
  164.       @select -= 1
  165.       pbSEPlay("Choose")
  166.     end
  167.     if Input.trigger?(Input::DOWN) && !(@select==(@mapnames.length+@extraselect))
  168.       @select += 1
  169.       pbSEPlay("Choose")
  170.       overlay.clear
  171.     end
  172.     if Input.trigger?(Input::C) && pbTpUnlocked?(@select)
  173.       pbFadeOutIn(99999)
  174.       pbWarpToMap(@select)
  175.     end    
  176.     break if @exit
  177.     break if Input.trigger?(Input::B)
  178.     Graphics.update
  179.     end
  180.   end
  181.   def pbEndScene
  182.     @exit=true
  183.     pbSEPlay("menu")
  184.     pbFadeOutAndHide(@sprites)
  185.     pbDisposeSpriteHash(@sprites)
  186.     @viewport.dispose
  187.     #@MenuPage=0
  188.     #pbFadeOutAndHide(@sprites){pbUpdateSpriteHash(@sprites)}
  189.     #@viewport.dispose
  190.   end
  191. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement