Olá Pessoal, eu estava aqui fazendo meu projeto quando comecei a fazer um Sistema de Fome e Sede Completo!
e resolvi nao so Disponibiliza-lo como Dar uma Aula sobre o Mesmo!
- ScreenShot:
Nome: SSFSNPM {Script System Fome Sede NetPlay Master}
Scripter: Nanzin
Dificuldade: {Medio}
Equipe: Wolf Dragon Makers {WDM}
Game_Actor
[WIN] HUD
[ACT] Fome_Sede
1º Passo:
vá no script: Game_Actor e adicione as seguinte linhas abaixo da linha 34:
- Código:
attr_reader :fome
attr_reader :sede
adicione as seguintes linhas abaixo do : def initialize
- Código:
@fome = WDM::MAX_FOME
@sede = WDM::MAX_SEDE
Explicaçao 1:
Nos codigos: attr_reader :fome, e , attr_reader :sede
estamos definindo as variaveis como somente leitura!;
Nos codigos: @fome = WDM::MAX_FOME, e , @sede = WDM::MAX_SEDE
estamos definindo os valores iniciais da fome e da sede do personagem!
2º Passo:
adicione os seguintes comandos abaixo do: def initialize
- Código:
def fome
return @fome
end
def diminuir_fome(n)
@fome = @fome - n.to_i
end
def aumentar_fome(n)
@fome = @fome n.to_i
end
def diminuir_sede(n)
@sede = @sede - n.to_i
end
def aumentar_sede(n)
@sede = @sede n.to_i
end
def sede
return @sede
end
Explicaçao 2:
- Código:
def fome
return @fome
end
- Código:
def aumentar_fome(n)
@fome = @fome n.to_i
end
- Código:
def diminuir_fome(n)
@fome = @fome - n.to_i
end
OBS: os mesmos comandos servem para a SEDE!
3º Passo:
Crie um Novo script e adicione o [ACT] Fome_Sede (disponivel na Demo ou acima na area scripts)
Explicaçao 3:
- Código:
module WDM
FRUTA_1 = 40
BEBIDA_1 = 40
MAX_FOME = 250
MAX_SEDE = 250
PERDE_FOME = 15
PERDE_SEDE = 15
TEMPO_F_M = 150
end
- Código:
class Scene_Map
alias fome_map_draw main_draw
alias fome_update update
def main_draw
@time = 0
fome_map_draw
end
- Código:
def main_draw
@tempo = 0
main_draw
end
- Código:
def update
if $game_party.actors[0].fome > WDM::MAX_FOME
valor_verdadeiro = ($game_party.actors[0].fome%WDM::MAX_FOME)
$game_party.actors[0].diminuir_fome(valor_verdadeiro)
elsif $game_party.actors[0].sede > WDM::MAX_SEDE
valor_verdadeiro2 = ($game_party.actors[0].sede%WDM::MAX_SEDE)
$game_party.actors[0].diminuir_sede(valor_verdadeiro2)
end
if Graphics.frame_count / Graphics.frame_rate != @total_sec
@time = 1
end
if $game_party.actors[0].fome <= 0 or $game_party.actors[0].sede <= 0
$fome_sede = Fome_Sede.new
end
if @time == WDM::TEMPO_F_M * 10
$game_party.actors[0].diminuir_sede(WDM::PERDE_SEDE)
$game_party.actors[0].diminuir_fome(WDM::PERDE_FOME)
@time = 0
end
fome_update
end
- Código:
if $game_party.actors[0].fome > WDM::MAX_FOME
valor_verdadeiro = ($game_party.actors[0].fome%WDM::MAX_FOME)
$game_party.actors[0].diminuir_fome(valor_verdadeiro)
elsif $game_party.actors[0].sede > WDM::MAX_SEDE
valor_verdadeiro2 = ($game_party.actors[0].sede%WDM::MAX_SEDE)
$game_party.actors[0].diminuir_sede(valor_verdadeiro2)
end
Graphics.frame_count / Graphics.frame_rate != @total_sec, a cada vez que isso for satisfeito (esta condiçao), soma-se 1 a nosso tempo!, (este procedimento e bem rapido pois e como se calcula-se mos se a tela foi atualizada, e como no RMXP o map e atualiza constantemente fica facil decifrar!;,
apos isso definimos se voce ficou totalmente com fome ou com sede, atravez de:
- Código:
if $game_party.actors[0].fome <= 0 or $game_party.actors[0].sede <= 0
- Código:
if @time == WDM::TEMPO_F_M * 10
- Código:
$game_party.actors[0].diminuir_sede(WDM::PERDE_SEDE)
$game_party.actors[0].diminuir_fome(WDM::PERDE_FOME)
@time = 0
- Código:
class Fome_Sede
def initialize
# Adicione aqui Comandos Extras
if $game_party.actors[0].fome <= 0
$game_temp.chat_log.push("#{$game_party.actors[0].name} Morreu de Fome")
print("Voce Morreu de Fome")
$game_party.actors[0].aumentar_fome(WDM::MAX_FOME/2)
$scene = Scene_Gameover.new
elsif $game_party.actors[0].sede <= 0
$game_temp.chat_log.push("#{$game_party.actors[0].name} Morreu de Sede")
print("Voce Morreu de Sede")
$game_party.actors[0].aumentar_sede(WDM::MAX_SEDE/2)
$scene = Scene_Gameover.new
end
end
end
entao, aqui voce determina o que sera feito se voce morrer de fome ou morrer de sede,
Nanzin mais nao seria mais prudente coloca isso acima onde voce testou se eu morri ou nao?
bom eu preferi nao, por que nao sei o desejo de cada adm, mais eu fiz para verificar se o personagem morreu de fome ou de sede (especificamente), para poder fazer mensagens diferentes (consequente mente quando voce morre de fome vc tbm morre de sede por voce perder os 2 ao mesmo tempo (porem isso pode ser mudado), depois eu recupero metade da fome ou sede do personagem (para que ele possa comprar algo), e depois chamo o Game_Over.new, que teleporta ele novamente para o mapa programado no User_Edit;
4º Passo:
Adicione o Window_HUD, para poder controlar a sua fome e sede, nao explicarei pois e simples e basta le-lo que entenderá!; porem se tiver qualuqer duvida ou problema poste no Topico!;
Download Aqui!
Nanzin > Por criar o sistema, disponibiliza-lo, Ensina-lo, e fazer os Buttons
Abraços a Todos espero ter Ajudado!
Última edição por Nanzin em Seg Dez 12, 2011 1:06 pm, editado 2 vez(es)