Ir a contenido

0

Script de Pesca


1 respuestas en este tema

#1 Fegarur

    Vago

  • Moderador Power!
  • 2,331 Mensajes:
  • Genero:Chico
  • Nivel maker: Experto
  • Especialidad: Guion

Publicado el 13 April 2007 - 10:42 AM

Descripción:
Permite pescar en el mapa. Su instalación es bastante sencilla.

Screens:
Spoiler

Demo:
Descarga Directa
Descargar por MediaFire
Descargar por SaveFile
Descargar por Uploading
Descargar por Rapidshare
Descargar por Megaupload

Script:
user posted image Reemplaza tu Scene_Map con:
CODE
#==============================================================================
#     Scene_Map
#------------------------------------------------------------------------------
#     The scene with the player walking around on the map.
#==============================================================================

class Scene_Map
 #--------------------------------------------------------------------------
 #    Main
 #--------------------------------------------------------------------------
 def main
   @spriteset = Spriteset_Map.new
   @message_window = Window_Message.new
   Graphics.transition
   loop do
     Graphics.update
     Input.update
     update
     if $scene != self
       break
     end
   end
   Graphics.freeze
   @spriteset.dispose
   @message_window.dispose
   if $scene.is_a?(Scene_Title)
     Graphics.transition
     Graphics.freeze
   end
 end
 #--------------------------------------------------------------------------
 #     Update
 #--------------------------------------------------------------------------
 def update
   loop do
     $game_map.update
     $game_system.map_interpreter.update
     $game_player.update
     $game_system.update
     $game_screen.update
     unless $game_temp.player_transferring
       break
     end
     transfer_player
     if $game_temp.transition_processing
       break
     end
   end
   @spriteset.update
   @message_window.update
   if $game_temp.gameover
     $scene = Scene_Gameover.new
     return
   end
   if $game_temp.to_title
     $scene = Scene_Title.new
     return
   end
   if $game_temp.transition_processing
     $game_temp.transition_processing = false
     if $game_temp.transition_name == ""
       Graphics.transition(20)
     else
       Graphics.transition(40, "Graphics/Transitions/" +
         $game_temp.transition_name)
     end
   end
   if $game_temp.message_window_showing
     return
   end
   if $game_player.encounter_count == 0 and $game_map.encounter_list != []
     unless $game_system.map_interpreter.running? or
            $game_system.encounter_disabled
       n = rand($game_map.encounter_list.size)
       troop_id = $game_map.encounter_list[n]
       if $data_troops[troop_id] != nil
         $game_temp.battle_calling = true
         $game_temp.battle_troop_id = troop_id
         $game_temp.battle_can_escape = true
         $game_temp.battle_can_lose = false
         $game_temp.battle_proc = nil
       end
     end
   end
   if Input.trigger?(Input::B)
     unless $game_system.map_interpreter.running? or
            $game_system.menu_disabled
       $game_temp.menu_calling = true
       $game_temp.menu_beep = true
     end
   end    
   if Input.trigger?(Input::A)
     call_fishing                        
   end
   if $DEBUG and Input.press?(Input::F9)
     $game_temp.debug_calling = true
   end
   unless $game_player.moving?
     if $game_temp.battle_calling
       call_battle
     elsif $game_temp.shop_calling
       call_shop
     elsif $game_temp.name_calling
       call_name
     elsif $game_temp.menu_calling
       call_menu
     elsif $game_temp.save_calling
       call_save
     elsif $game_temp.debug_calling
       call_debug
     end
   end
 end
 #--------------------------------------------------------------------------
 #      Fishing
 #--------------------------------------------------------------------------
 def call_fishing
   character = $game_player
   case character.direction
   when 2
     lookingx = character.x
     lookingy = character.y + 1
  when 4
     lookingx = character.x - 1
     lookingy = character.y
   when 6
     lookingx = character.x + 1
     lookingy = character.y
   when 8
     lookingx = character.x
     lookingy = character.y - 1
   end
   for i in 0..$game_party.actors.size
     actor = $game_party.actors[i].id
     if $data_weapons[$game_actors[actor].weapon_id] != nil
       if $data_armors[$game_actors[actor].armor1_id] != nil
         if $data_armors[$game_actors[actor].armor2_id] != nil
           if $data_armors[$game_actors[actor].armor3_id] != nil
             poleused = $data_weapons[$game_actors[actor].weapon_id]
             baitused = $data_armors[$game_actors[actor].armor1_id]
             lineused = $data_armors[$game_actors[actor].armor2_id]
             reelused = $data_armors[$game_actors[actor].armor3_id]
             if poleused.element_set.include?(17)
               if baitused.guard_element_set.include?(18)
                 if lineused.guard_element_set.include?(19)
                   if reelused.guard_element_set.include?(20)
                     if $game_map.terrain_tag(lookingx,lookingy) != 0
                       $waterlevel = $game_map.terrain_tag(lookingx,lookingy)
                       @event_counter = 0
                       for h in 1..999
                         if $game_map.events[h].id > @event_counter
                           @event_counter = $game_map.events[h].id
                         end
                       end
                       for h in [email protected]_counter
                         if  $game_map.events[h] != nil
                           if $game_map.events[h].x == lookingx and $game_map.events[h].y == lookingy
                             case $game_map.events[h].opacity
                             when 1
                               $waterlevel = 1
                             when 2
                               $waterlevel = 2
                             when 3
                               $waterlevel = 3
                             when 4
                               $waterlevel = 4
                             when 5
                               $waterlevel = 5
                             when 6
                               $waterlevel = 6
                             when 7
                               $waterlevel = 7
                             end
                           end
                         end
                       end
                       $fisherman = actor
                       $scene = Scene_Fishing.new
                       break
                     end
                   end
                 end
               end
             end
           end
         end
       end
     end
   end
 end
 #--------------------------------------------------------------------------
 #     Call Battle
 #--------------------------------------------------------------------------
 def call_battle
   $game_temp.battle_calling = false
   $game_temp.menu_calling = false
   $game_temp.menu_beep = false
   $game_player.make_encounter_count
   $game_temp.map_bgm = $game_system.playing_bgm
   $game_system.bgm_stop
   $game_system.se_play($data_system.battle_start_se)
   $game_system.bgm_play($game_system.battle_bgm)
   $game_player.straighten
   $scene = Scene_Battle.new
 end
 #--------------------------------------------------------------------------
 #     Call Shop
 #--------------------------------------------------------------------------
 def call_shop
   $game_temp.shop_calling = false
   $game_player.straighten
   $scene = Scene_Shop.new
 end
 #--------------------------------------------------------------------------
 #     Call Name
 #--------------------------------------------------------------------------
 def call_name
   $game_temp.name_calling = false
   $game_player.straighten
   $scene = Scene_Name.new
 end
 #--------------------------------------------------------------------------
 #     Call Menu
 #--------------------------------------------------------------------------
 def call_menu
   $game_temp.menu_calling = false
   if $game_temp.menu_beep
     $game_system.se_play($data_system.decision_se)
     $game_temp.menu_beep = false
   end
   $game_player.straighten
   $scene = Scene_Menu.new
 end
 #--------------------------------------------------------------------------
 #     Call Save
 #--------------------------------------------------------------------------
 def call_save
   $game_player.straighten
   $scene = Scene_Save.new
 end
 #--------------------------------------------------------------------------
 #     Call Debug
 #--------------------------------------------------------------------------
 def call_debug
   $game_temp.debug_calling = false
   $game_system.se_play($data_system.decision_se)
   $game_player.straighten
   $scene = Scene_Debug.new
 end
 #--------------------------------------------------------------------------
 #     Transfer Player
 #--------------------------------------------------------------------------
 def transfer_player
   $game_temp.player_transferring = false
   if $game_map.map_id != $game_temp.player_new_map_id
     $game_map.setup($game_temp.player_new_map_id)
   end
   $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
   case $game_temp.player_new_direction
   when 2
     $game_player.turn_down
   when 4
     $game_player.turn_left
   when 6
     $game_player.turn_right
   when 8
     $game_player.turn_up
   end
   $game_player.straighten
   $game_map.update
   @spriteset.dispose
   @spriteset = Spriteset_Map.new
   if $game_temp.transition_processing
     $game_temp.transition_processing = false
     Graphics.transition(20)
   end
   $game_map.autoplay
   Graphics.frame_reset
   Input.update
 end
end


user posted image Coloca esto sobre Main (Window Fishing):
CODE
#==============================================================================
#   Window_Fishing
#==============================================================================
 
class Window_Fishing < Window_Base
 def initialize
   super(0, 0, 640, 416)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = $defaultfonttype
   self.contents.font.size = $defaultfontsize
   self.contents.clear
   refresh
 end
 def refresh
   self.contents.clear #Clears the picture
   bitmap = RPG::Cache.picture("FishingBackground.jpg") #And redraws it.
   self.contents.blt(0, 0, bitmap, Rect.new(0, 0, bitmap.width, bitmap.height))
   actor = $game_actors[$fisherman] #Chooses the actor to draw.
   draw_fisher(actor, 150, 320) #Draws character one at the point (150, 320).
   if $distance != 0 #If the bobber is out then it draws a ripple/bobber.
     bitmap = RPG::Cache.icon("081-Ripple.png")
     self.contents.blt(($distance / 5) + 160, 300, bitmap, Rect.new(0, 0, 24, 24))
   end
   if $showfish == true
     bitmap = RPG::Cache.icon($data_items[$fish].icon_name)
     self.contents.blt(165, 280, bitmap, Rect.new(0, 0, 24, 24))
   end
 end
 def draw_fisher(actor, x, y)
   bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
   cw = bitmap.width / 4
   ch = bitmap.height / 4
   src_rect = Rect.new(0, ch * 2, cw, ch)
   self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
 end
end


user posted image Coloca esto bajo el script anterior (Scene Fishing):
CODE
#     Script de Pesca...
#
#     Instrucciones:
#
# 1. Añade 4 atributos, 17: Caña, 18: Anzuelo, 19: Sedal, and 20: Carrete.
# 2. Añade armas que serán cañas de pescar y dales el atributo "Caña"
# 3. Edita la fuerza del arma a cualquier número. A mayor número, la caña es más fuerte.
# 4. Añade escudos que serán anzuelos y dales el atributo "Anzuelo"
# 5. Edita la evasión de los anzuelos a 100 o menos. A menor número, mejor anzuelo.
# 6. Añade cascos que serán sedales y dales el atributo "Sedal"
# 7. Edita la evasión de los sedales a 100 o menos. A mayor número, mejor sedal.
# 8. Añade armaduras que serán carretes y dales el atributo "Carrete"
# 9. Edita la evasión de los carretes a 5 o menos. A mayor número mejor carrete. Puedes
#     darles Fuerza, lo que sube la velocidad de recogida del pescador.
# 10. Añade el objeto "Cebo" en el ID 33.
# 11. Añade objetos y llámalos como peces, y edita su Destreza a 100 o menos.
#       a menor número, el pez es más débil.
# 12. Ve a las líneas 105-146, y cambia esos valores.
# 13. Importa un dibujo para usarlo como fondo (en Pictures) y llámalo "FishingBackground.jpg"
# 14. Importa un icono que parezca una onda y llámalo "081-Ripple.png"
# 15. Asegúrate de que tus clases pueden usar cañas, anzuelos, sedales, and carretes
# 16. Edita los tileset y pon el el agua en valor de terreno 1-7
#       A número más alto, más difícil encontrar peces.
# 17. Para que una zona de agua tenga un nivel diferente que el determiando en el tile haz un evento con
#       gráfico de opacidad de 1-7; Esos números corresponden con la dificultad del Paso 12
# 18. Para pescar, presiona Shift cuando tengas todo lo necesario y agua enfrente.

#==============================================================================
#     Scene_Fishing
#------------------------------------------------------------------------------
#       The Fishing Scene
#==============================================================================

class Scene_Fishing
 #--------------------------------------------------------------------------
 #   The set up of the scene
 #--------------------------------------------------------------------------
 def initialize
   $distance = 0 #Sets the distance of your bobber to 0.
 end
#--------------------------------------------------------------------------
 def main
   @fishing_window = Window_Fishing.new
   @fishing_window.x = 0
   @fishing_window.y = 64
   @help_window = Window_Help.new
   $hooked = false #You don't have a fish on your hook yet.
   @wait_count = 0 #It's not waiting for anything.
   Graphics.transition
   loop do
     Graphics.update
     Input.update
     update
     if $scene != self
       break
     end
   end
   Graphics.freeze
 end
 
 #--------------------------------------------------------------------------
 #   The fishing part
 #--------------------------------------------------------------------------
 def update
   if @wait_count == 0 #If you're not waiting...
     $showfish = false
     if $game_party.item_number(33) > 0 #Makes sure you have bait.
       if Input.trigger?(Input::B) #If you press Esc then it plays a sound and quits.
         $game_system.se_play($data_system.cancel_se)
         @fishing_window.dispose
         @help_window.dispose
         $scene = Scene_Map.new
         return
       end
       if $distance <= 0 #If the distance between you and you're bobber is 0 or less.
         $distance = 0 #Than make sure distance is only 0, no less.
         if $hooked == true #If a fish was hooked, then catch it and wait a little.
           $hooked = false
           @help_window.set_text("¡Pescaste un/a " + $data_items[$fish].name + "!", 1)
           $showfish = true
           $game_party.gain_item($fish, 1)
           $game_system.me_play($data_system.battle_end_me)
           $game_actors[$fisherman].exp=($game_actors[$fisherman].exp + $data_items[$fish].hit)
           @fishing_window.refresh
           @wait_count = 100
         end
         if @wait_count == 0
           @help_window.set_text("¡Usa la tecla de acción para lanzar el anzuelo!", 1) #Set the help window text to that.
           if Input.trigger?(Input::C) #If you press Spacebar...
             @help_window.set_text("Recogiendo sedal...", 1) #It sets the help window text,
             Audio.se_play("Audio/SE/021-Dive01") #Plays a sound,
             $distance = $data_armors[$game_actors[$fisherman].armor2_id].eva * 18#Sets's distance
                                                                                                 #between you and your bobber.
           end
         end
       end
       if Input.trigger?(Input::C) #If you press Spacebar and a fish is hooked
         if $hooked == true
           actor = $game_actors[$fisherman]
           $distance = $distance - rand(Math.sqrt(actor.str *
           $data_armors[$game_actors[$fisherman].armor3_id].eva) * 2) #It sets distance to less based
                                                                                                     #on strength.
         end
       end
       if $distance > 0 #If distance is more than 0 and nothing is hooked then it reels in
         if $hooked == false
           $distance = $distance - $data_armors[$game_actors[$fisherman].armor3_id].eva
           if rand($distance) > 100 #And decides to hook something based on bait and distance.
             bait = $game_actors[$fisherman].armor1_id
             if rand($data_armors[bait].eva * 10) == 0
               $hooked = true
               case $waterlevel
               when 1
                 fishinwater =
                 [34, 34, 34, 34, 34, 35]
               when 2
                 fishinwater =
                 [34, 34, 35]
               when 3
                 fishinwater =
                 [34, 35, 35, 36]
               when 4
                 fishinwater =
                 [35, 35, 35, 36]
               when 5
                 fishinwater =
                 [35, 35, 36, 36, 37]
               when 6
                 fishinwater =
                 [37, 37, 37, 38]
              when 7
                 fishinwater =
                 [38]
               end
               $fish = fishinwater[rand(fishinwater.size)] #Decides which fish to hook.
               @help_window.set_text("¡Han picado! ¡Usa la tecla de acción!", 1) #Says you got one
               $game_system.se_play($data_system.battle_start_se) #Plays a sound
               @wait_count = 50 #And waits.
             end
           end
         end
       end
       if $hooked == true #If something is hooked, the fish will try to pull away based on it's strength.
         $distance = $distance + rand(Math.sqrt($data_items[$fish].hit) * 2)
         if rand(80) == 0 #About 1 out of 80 times it will sound like the fish is splashing
           Audio.se_play("Audio/SE/022-Dive02")
         end
       end
       if $distance > $data_armors[$game_actors[$fisherman].armor2_id].eva * 20 #If the fish gets far
                                                         #away, it releases the fish, sets text, plays a sound, and waits.
         @help_window.set_text("¡El pez escapó!", 1)
         if rand(5) == 0
           $game_party.lose_item(60, 1)
           @help_window.set_text("¡El pez huyó con el cebo!", 1)
         end
         $game_system.me_play($data_system.gameover_me)
         @wait_count = 50
         $hooked = false
       end
       @fishing_window.refresh #Updates the windows.
       @help_window.update
     else
       @help_window.set_text("No te queda cebo.", 1)
       if Input.trigger?(Input::C) #If you press Spacebar then it quits.
         @fishing_window.dispose
         @help_window.dispose
         $scene = Scene_Map.new
         return
       end
     end
   else
     @wait_count =  @wait_count - 1 #Sets the wait count to less.
   end
 end
end


Recursos Necesarios:
Descarga Directa
Descargar por MediaFire
Descargar por SaveFile
Descargar por Uploading
Descargar por Rapidshare
Descargar por Megaupload

Instrucciones:
user posted image Coloca los scripts tal y como puse en el apartado Script.
user posted image El resto de instrucciones se encuentran en el principio de Scene_Fishing (en las anotaciones, claro)

Crédito:
Script creado por Tiberius

Editado por Fegarur, 13 April 2007 - 11:02 AM.


#2 666

    Caballero

  • voidzonero
  • 297 Mensajes:
  • Genero:Chico
  • Nivel maker: Experto
  • Especialidad: Engines

Publicado el 16 April 2007 - 02:28 PM

Jejeje, esta bueno (Para mi tipo, este me parece mejor que el otro).

Suerte.