PESCARIA AVANÇADA COM BARRA 1.2
Este script simula o ato de pescar! ele requer que o personagem esteja em um tag determinado ou de frente para ele e que o jogador possua dois itens no inventário no caso uma vara de pescar e iscas, a id destes itens será determinada no próprio script!
bugs corrigido:
- Código:
- se você clicasse duas vezes a barra era iniciada uma vez e vc pescava duas vezes
- ao andar a barra não sumia
PRIMEIRO PASSO:
Adicione esse script acima do main que é o da pescaria:- Código:
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=#
#
# Pescaria Avançada com barra 1.0
#
# Por: Maephel e Odair Neto
# Baseado no script do AzorMachine
#
# Possibilita a pesca de um item variavel predeterminado baseado
# em terreno se possuir uma vara de pescar e iscas.
#
#
#---------------------------------------------------------------#
# Possiveis mudanças:
# - Mudar a imagem do joagdor para a imagem do personagem
# pescando.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=#
#---------------------------------------------------------------#
# INICIO DA CONFIGURAÇAO
#---------------------------------------------------------------#
module MOD_PESCA
# ID do item da vara de pescar
VARA = 36 #Mude para a id do item de vara de pescar no DB
# ID do item que será a isca.
ISCA = 37 #mude para a id do item de vara de pescar no DB
# ID dos itens pescaveis na Database.
RESULT = [5, 2, 4, 8]
# Tag do tile com agua.
TAG_TERRENO = 1
#Frase que será mostrada caso o jogador não possua uma vara
NOVARA = "Você precisa de uma vara de pescar primeiro"
#Frase que será mostrada caso o jogador não possua iscas
NOISCA = "Você não possui iscas"
# Começo da frase de acerto.
SUCESSO = "Você pegou"
# Frase de falha.
FALHA = "nada..."
# Som de acerto.
SOM_SUCESSO = "055-Right01"
# Som de falha.
SOM_FALHA = "057-Wrong01"
PESCANDO = "Pescando..."
end
#---------------------------------------------------------------#
# FIM DA CONFIGURAÇAO
#---------------------------------------------------------------#
class Game_Map
alias pesca_ini initialize
alias pesca_upd update
def initialize
ini_vars
pesca_ini
end
def update
direction_check if @direc != nil
check_input
fish_bar
pesca_upd
end
def ini_vars
@direc = nil
@esta_pescando = false
end
def direction_check
d = $game_player.direction
if @direc != d
@esta_pescando = false
@direc = nil
desligar_barra
end
end
def check_input
if Input.trigger?(Input::Z)
if $barra_on == true
Chat.add ("Você não pode pescar agora")
else
fishing
end
end
end
def fishing
character = $game_player
case character.direction
when 2
lx = character.x
ly = character.y + 1
when 4
lx = character.x - 1
ly = character.y
when 6
lx = character.x + 1
ly = character.y
when 8
lx = character.x
ly = character.y - 1
end
if $game_map.terrain_tag(lx,ly) == MOD_PESCA::TAG_TERRENO
check_itens
end
end
end
def check_itens
id_1 = $game_party.item_number(MOD_PESCA::VARA)
id_2 = $game_party.item_number(MOD_PESCA::ISCA)
if id_1 >= 1 and id_2 >= 1
save_var
elsif id_1 == 0
Chat.add ("#{MOD_PESCA::NOVARA}")
elsif id_2 == 0
Chat.add ("#{MOD_PESCA::NOISCA}")
end
end
def save_var
@direc = $game_player.direction
ligar_barra
@esta_pescando = true
end
def fish_bar
if @esta_pescando == true
$game_variables[11] += 1 if $game_variables[11] <= 100
fish if $game_variables[11] == 100
end
def fish
desligar_barra
$game_party.lose_item(MOD_PESCA::ISCA,1)
@chance = rand(10)
if @chance >= 0 and @chance <= 2
@db_item = MOD_PESCA::RESULT[rand(MOD_PESCA::RESULT.size-1)]
Chat.add ("#{MOD_PESCA::SUCESSO} #{$data_items[@db_item].name.to_s}!")
Audio.se_play("Audio/SE/"+MOD_PESCA::SOM_SUCESSO)
$game_party.gain_item(@db_item, 1)
@esta_pescando = false
#-------------------------------------------
# SUGESTÃO:
# Crie uma animação de um peixe saltitando no database.
#-------------------------------------------
# Troque "id" pelo numero da animação no database.
# Network::Main.send_animation(id)
# $game_player.animation_id = id
else
Chat.add ("#{MOD_PESCA::FALHA}")
Audio.se_play("Audio/SE/"+MOD_PESCA::SOM_FALHA)
@esta_pescando = false
end
end
end
SEGUNDO PASSO:
e esse que é o da barrinha:- Código:
#==============================================================================
# Barra de load
# autor: Peaverin
# edição: Matheus Melo (plug and play) e Odair Neto (correções)
#==============================================================================
module LOAD
# variavel que armazenará os valor que encherá a barra
VAR = 11
#switch que ativa a barra de carregamento
SWI = 10
end
def ligar_barra
$barra_on = true
$game_variables[11] = 0
$game_switches[10] = true
end
def desligar_barra
$barra_on = false
$game_variables[11] = 0
$game_switches[10] = false
end
class Min < RPG::Sprite
def initialize
super()
# Nome da Hud de base da barra.
@base = RPG::Cache.picture("Actor Base")
@base_rect = Rect.new(0, 0, @base.width, @base.height)
# Nome da Hud da barra cheia.
@M = RPG::Cache.picture("Actor MIN")
self.bitmap = Bitmap.new(@base.width, @base.height)
refresh
end
def update
super
refresh if something_changed?
end
def something_changed?
return true if @old_pic != $game_variables[LOAD::VAR]
return true if @old_x != $game_player.screen_x - 14
return true if @old_y != $game_player.screen_y - 50
return false
end
def refresh
@old_pic = $game_variables[LOAD::VAR]
if $game_switches[LOAD::SWI] == true
@old_x = $game_player.screen_x - 14
@old_y = $game_player.screen_y - 50
self.bitmap.clear
self.x = $game_player.screen_x - 14
self.y = $game_player.screen_y - 50
# Nessa parte abaixo creio que se define
# o limite maximoda barra no casso 100
# $game_variables[LOAD::VAR] / 100
# creio que se colocar /500 a barra
# a barra encherá quando a variavel chegar a 500.
@wid = @M.width * $game_variables[LOAD::VAR] / 100
@M_rect = Rect.new(0, 0, @wid, @base.height)
else
@old_x = $game_player.screen_x - 1000
@old_y = $game_player.screen_y - 1000
self.bitmap.clear
self.x = $game_player.screen_x - 1000
self.y = $game_player.screen_y - 1000
@wid = 0
@M_rect = Rect.new(0, 0, 0, 0)
end
self.bitmap.blt(0, 0, @base, @base_rect)
self.bitmap.blt(0, 0, @M, @M_rect)
end
end
## Modified by Peaverin
class Sprite_Character < RPG::Sprite
alias init initialize
alias upd update
def initialize(view, char)
init(view, char)
if @character.is_a?(Game_Player)
@minbar = Min.new
$minbar = @minbar
end
end
def update
if @character.is_a?(Game_Player) and @minbar != nil
@minbar.refresh
end
upd
end
end
TERCEIRO PASSO
E por fim adicione esta imagens a pasta picture:--------------------------------------------
com o nome "Actor Base"
--------------------------------------------
com nome "Actor MIN"
--------------------------------------------
ambos sem aspas.
Última edição por Maephel em Dom Dez 07, 2014 2:20 am, editado 9 vez(es)