|
| | [script]SISTEMA REAL DE MOEDAS | |
| | Autor | Mensagem |
---|
Darkevil DK. Administrador
Mensagens : 34 Data de inscrição : 22/09/2007
| Assunto: [script]SISTEMA REAL DE MOEDAS Dom Set 23, 2007 6:14 pm | |
| Adição de moedas de valores diferentes - Versão 1.0 Criador - João Neto
Este Script adiciona mais duas moedas a seu jogo: Prata e Cobre. Por enquanto, é possivel tê-las, os monstros já dropam nesse sistema e os itens podem ser comprados/vendidos também. Faltam alguns ajustes de visualização, mas é pouca coisa.
Para adicionar/remover, use as linhas abaixo:
* Prata: ganha_prata(n) perde_prata(n)
* Cobre: ganha_cobre(n) perde_cobre(n)
Onde n é o valor. A vantagem deste script é o Cambio automático, Como de alguns jogos como World of WarCraft. Se suas moedas de cobre chegarem a 100(que pode ser modificado esse valor) elas se tornam uma de Prata, e 10 moedas de prata(que pode ser modificado esse valor)se tornam uma de Ouro.
De brinde as janelas do menu modificadas, para mostrar os novos itens, apenas de exemplo, configure como quiser. Vale lembrar que, como fazem parte da classe Game_Party, você pode exibí-las usando:
$game_party.silver $game_party.copper
Vale lembrar que agora não se usa mais a variável $game_party.gold para mostrar o dinheiro total ou fazer calculos com ele, agora você deve usar $game_party.grana.
Para fazer o calculo de retirada do dinheiro, use calculo_geral(n). Há vários procedimentos novos, como o de verificar se você tem dinheiro.
Esse script foi feito em 40 minutos e sem muita frescura. use a vontade e, assim que der eu faço mais alguns ajustes nele.
Tive que faze poste duplo pq eh mto grande o script ^^
--------------------------------------------------------------------------------------------------------- Tags de Buscas --------------------------------------------------------------------------------------------------------- script / SISTEMA / REAL / MOEDA
Última edição por em Seg Out 08, 2007 12:08 am, editado 1 vez(es) | |
| | | Darkevil DK. Administrador
Mensagens : 34 Data de inscrição : 22/09/2007
| Assunto: Continuaçao...xD Dom Set 23, 2007 6:20 pm | |
| - Código:
-
=begin ################################################################# ################################################################# Adição de moedas de valores diferentes - Versão 1.0 www.jogosrpg.com.br - Criador - João Neto ################################################################# Este Script adiciona mais duas moedas a seu jogo: Prata e Cobre. Por enquanto, é possivel tê-las, os monstros já dropam nesse sistema e os itens podem ser comprados/vendidos também. Faltam alguns ajustes de visualização, mas é pouca coisa.
Para adicionar/remover, use as linhas abaixo:
* Prata: ganha_prata(n) perde_prata(n)
* Cobre: ganha_cobre(n) perde_cobre(n)
Onde n é o valor. A vantagem deste script é o Cambio automático, Como de alguns jogos como World of WarCraft. Se suas moedas de cobre chegarem a 100(que pode ser modificado esse valor) elas se tornam uma de Prata, e 10 moedas de prata(que pode ser modificado esse valor)se tornam uma de Ouro.
De brinde as janelas do menu modificadas, para mostrar os novos itens, apenas de exemplo, configure como quiser. Vale lembrar que, como fazem parte da classe Game_Party, você pode exibí-las usando:
$game_party.silver $game_party.copper
Vale lembrar que agora não se usa mais a variável $game_party.gold para mostrar o dinheiro total ou fazer calculos com ele, agora você deve usar $game_party.grana.
################################################################# ################################################################# =end #-############################################################### # Script de moedas - Versão 1.0 - João Neto #-############################################################### class Game_Party attr_reader :silver attr_reader :copper alias novas_moedas_init initialize def initialize novas_moedas_init @silver = 0 @copper = 0 @divisao_copper = 100 #Valor da divisão para virar prata @divisao_silver = 10 #Valor da divisão para virar Ouro end def gain_silver(n) @silver = [[@silver + n, 0].max, 9999999].min for i in 0...@silver / @divisao_silver if @silver >= @divisao_silver lose_silver(@divisao_silver) gain_gold(1) end end end def lose_silver(n) gain_silver(-n) end def gain_copper(n) @copper = [[@copper + n, 0].max, 9999999].min for i in 0...@copper / @divisao_copper if @copper >= @divisao_copper lose_copper(@divisao_copper) gain_silver(1) end end end def lose_copper(n) gain_copper(-n) end #faz a subtração de valores, respeitando o cambio. def calculo_geral(n) @valor = (@gold * (@divisao_copper * @divisao_silver)) @valor += (@silver * @divisao_copper) @valor += (@copper) @gold = 0 @silver = 0 @copper = 0 @valor -= n gain_copper(@valor) end def tem_grana?(n) @valor = (@gold * (@divisao_copper * @divisao_silver)) @valor += (@silver * @divisao_copper) @valor += (@copper) if @valor >= n return true else return false end end def grana @valor = (@gold * (@divisao_copper * @divisao_silver)) @valor += (@silver * @divisao_copper) @valor += (@copper) return @valor end end
class Interpreter def ganha_prata(n) $game_party.gain_silver(n) end def perde_prata(n) $game_party.lose_silver(n) end def ganha_cobre(n) $game_party.gain_copper(n) end def perde_cobre(n) $game_party.lose_copper(n) end def calculo_geral(n) $game_party.calculo_geral(n) end def tem_grana?(n) return $game_party.tem_grana?(n) end # responsável pelo comando Mudar Dinheiro def command_125 value = @parameters[1] + @parameters[2] if @parameters[0] == 0 #valor positivo ganha_cobre(value) else calculo_geral(value) end return true end end #-############################################################### # Fim do Script de moedas #-############################################################### #-############################################################### # Modificações de funcionamento #-###############################################################
class Window_ShopBuy < Window_Selectable def draw_item(index) item = @data[index] # A quantidade de Itens possuídos case item when RPG::Item number = $game_party.item_number(item.id) when RPG::Weapon number = $game_party.weapon_number(item.id) when RPG::Armor number = $game_party.armor_number(item.id) end # Aparece o preço do item se você tiver dinheiro suficiente e menos que 99 # itens do tipo. Caso contrário haverá uma coloração de invalidez. #Modificado para o novo Sistema #3############################## if item.price <= $game_party.grana and number < 99 #3############################## self.contents.font.color = normal_color else self.contents.font.color = disabled_color end x = 4 y = index * 32 rect = Rect.new(x, y, self.width - 32, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.draw_text(x + 28, y, 212, 32, item.name, 0) self.contents.draw_text(x + 240, y, 88, 32, item.price.to_s, 2) end end
#-------------------------------------------------------------------------- # - Inicialização Fase de Pós-Batalha #-------------------------------------------------------------------------- class Scene_Battle def start_phase5 # Alternar para a fase 5 @phase = 5 # Reproduzir ME de fim de Batalha $game_system.me_play($game_system.battle_end_me) # Retornar para BGM de antes da Batalha ser iniciada $game_system.bgm_play($game_temp.map_bgm) # Inicializar EXP, quantidade de dinheiro e tesouros exp = 0 gold = 0 treasures = [] # Loop for enemy in $game_troop.enemies # Se o Inimigo não estiver escondido unless enemy.hidden # Adicionar a EXP e a quantidade de dinheiro obtidos exp += enemy.exp gold += enemy.gold # Determinar se aparece algum tesouro if rand(100) < enemy.treasure_prob if enemy.item_id > 0 treasures.push($data_items[enemy.item_id]) end if enemy.weapon_id > 0 treasures.push($data_weapons[enemy.weapon_id]) end if enemy.armor_id > 0 treasures.push($data_armors[enemy.armor_id]) end end end end # o Limite de tesouros é de 6 Itens treasures = treasures[0..5] # Obtendo a EXP for i in 0...$game_party.actors.size actor = $game_party.actors[i] if actor.cant_get_exp? == false last_level = actor.level actor.exp += exp if actor.level > last_level @status_window.level_up(i) end end end # Obtendo o dinheiro #Alterado para o novo Sistema $game_party.gain_copper(gold) # Obtendo os tesouros for item in treasures case item when RPG::Item $game_party.gain_item(item.id, 1) when RPG::Weapon $game_party.gain_weapon(item.id, 1) when RPG::Armor $game_party.gain_armor(item.id, 1) end end # Criar janela de resultado de Batalha @result_window = Window_BattleResult.new(exp, gold, treasures) # Definir Espera @phase5_wait_count = 100 end end
class Scene_Shop #-------------------------------------------------------------------------- # - Processamento Principal #-------------------------------------------------------------------------- def main # Criar janela de ajuda @help_window = Window_Help.new # Criar janela de comandos de Loja @command_window = Window_ShopCommand.new # Criar janela de dinheiro @gold_window = Window_Gold.new @gold_window.x = 480 @gold_window.y = 0 # Criar janela testa-de-ferro @dummy_window = Window_Base.new(0, 128, 640, 352) # Criar janela de compra @buy_window = Window_ShopBuy.new($game_temp.shop_goods) @buy_window.active = false @buy_window.visible = false @buy_window.help_window = @help_window # Criar janela de venda @sell_window = Window_ShopSell.new @sell_window.active = false @sell_window.visible = false @sell_window.help_window = @help_window # Criar janela de entrada de quantidade @number_window = Window_ShopNumber.new @number_window.active = false @number_window.visible = false # Criar janela de Status @status_window = Window_ShopStatus.new @status_window.visible = false # Executar transição Graphics.transition # Loop principal loop do # Atualizar tela de jogo Graphics.update # Atualizar entrada de informações Input.update # Atualização do frame update # Abortar loop se a tela se alterou if $scene != self break end end # Preparar para transição Graphics.freeze # Exibição das janelas @help_window.dispose @command_window.dispose @gold_window.dispose @dummy_window.dispose @buy_window.dispose @sell_window.dispose @number_window.dispose @status_window.dispose end #-------------------------------------------------------------------------- # - Atualização do Frame #-------------------------------------------------------------------------- def update # Atualização das janelas @help_window.update @command_window.update @gold_window.update @dummy_window.update @buy_window.update @sell_window.update @number_window.update @status_window.update # Se a janela de comandos estiver ativa: chamar update_command if @command_window.active update_command return end # Se a janela de compra estiver ativa: chamar update_buy if @buy_window.active update_buy return end # Se a janela de venda estiver ativa: chamar update_sell if @sell_window.active update_sell return end # Se janela de entrada de quantidade estiver ativa: chamar update_number if @number_window.active update_number return end end #-------------------------------------------------------------------------- # - Atualização do Frame (Quando a janela de comandos estiver ativa) #-------------------------------------------------------------------------- def update_command # Se o botão B for pressionado if Input.trigger?(Input::B) # Reproduzir SE de cancelamento $game_system.se_play($data_system.cancel_se) # Alternar para a tela do Mapa $scene = Scene_Map.new return end # Se o botão C for pressionado if Input.trigger?(Input::C) # Ramificação por posição na janela de comandos case @command_window.index when 0 # Comprar # Reproduzir SE de OK $game_system.se_play($data_system.decision_se) # Mudar janelas para o modo de Compra @command_window.active = false @dummy_window.visible = false @buy_window.active = true @buy_window.visible = true @buy_window.refresh @status_window.visible = true when 1 # Vender # Reproduzir SE de OK $game_system.se_play($data_system.decision_se) # Mudar janelas para o modo de Venda @command_window.active = false @dummy_window.visible = false @sell_window.active = true @sell_window.visible = true @sell_window.refresh when 2 # Sair # Reproduzir SE de OK $game_system.se_play($data_system.decision_se) # Alternar para a tela do Mapa $scene = Scene_Map.new end return end end #-------------------------------------------------------------------------- # - Atualização do Frame (Quando a janela de Compra estiver ativa) #-------------------------------------------------------------------------- def update_buy # Definir janela de Status do Item @status_window.item = @buy_window.item # Se o botão B for pressionado if Input.trigger?(Input::B) # Reproduzir SE de cancelamento $game_system.se_play($data_system.cancel_se) # Mudar janela para o modo inicial @command_window.active = true @dummy_window.visible = true @buy_window.active = false @buy_window.visible = false @status_window.visible = false @status_window.item = nil # Apagar texto de ajuda @help_window.set_text("") return end # Se o botão C for pressionado if Input.trigger?(Input::C) # Selecionar Item @item = @buy_window.item # Se o Item for inválido, ou o preço for maior do que o dinheiro possuído
Última edição por em Dom Set 23, 2007 6:22 pm, editado 1 vez(es) | |
| | | Darkevil DK. Administrador
Mensagens : 34 Data de inscrição : 22/09/2007
| Assunto: Re: [script]SISTEMA REAL DE MOEDAS Dom Set 23, 2007 6:21 pm | |
| - Código:
-
#Modificado para o novo Sistema #3############################## if @item == nil or @item.price > $game_party.grana #3############################## # Reproduzir SE de erro $game_system.se_play($data_system.buzzer_se) return end # Selecionar contador de Itens possuídos case @item when RPG::Item number = $game_party.item_number(@item.id) when RPG::Weapon number = $game_party.weapon_number(@item.id) when RPG::Armor number = $game_party.armor_number(@item.id) end # Se já houverem 99 Itens possuídos if number == 99 # Reproduzir SE de erro $game_system.se_play($data_system.buzzer_se) return end # Reproduzir SE de OK $game_system.se_play($data_system.decision_se) # Aqui é calculado o número máximo de Itens que se pode comprar #Modificado para o novo Sistema #3############################## max = @item.price == 0 ? 99 : $game_party.grana / @item.price #3############################## max = [max, 99 - number].min # Mudar janelas para o modo de entrada de quantidade @buy_window.active = false @buy_window.visible = false @number_window.set(@item, max, @item.price) @number_window.active = true @number_window.visible = true end end #-------------------------------------------------------------------------- # - Atualização do Frame (Quando a janela de Venda estiver ativa) #-------------------------------------------------------------------------- def update_sell # Se o botão B for pressionado if Input.trigger?(Input::B) # reporduzir SE de cancelamento $game_system.se_play($data_system.cancel_se) # Mudar janelas para o modo inicial @command_window.active = true @dummy_window.visible = true @sell_window.active = false @sell_window.visible = false @status_window.item = nil # Apagar texto de ajuda @help_window.set_text("") return end # Se o botão C for pressionado if Input.trigger?(Input::C) # Selecionar Item @item = @sell_window.item # Definir a janela de Status do Item @status_window.item = @item # Se o Item for inválido, ou o preço do Item for 0 (impossível vender) if @item == nil or @item.price == 0 # Reproduzir SE de erro $game_system.se_play($data_system.buzzer_se) return end # Reproduzir SE de OK $game_system.se_play($data_system.decision_se) # Selecionar contador de Itens possuídos case @item when RPG::Item number = $game_party.item_number(@item.id) when RPG::Weapon number = $game_party.weapon_number(@item.id) when RPG::Armor number = $game_party.armor_number(@item.id) end # Quantidade máxima para vender = número de Itens possuídos max = number # Mudar janelas para o modo de entrada de quantidade @sell_window.active = false @sell_window.visible = false @number_window.set(@item, max, @item.price / 2) @number_window.active = true @number_window.visible = true @status_window.visible = true end end #-------------------------------------------------------------------------- # - Atualização do Frame # (Quando a janela de entrada de quantidade estiver ativa) #-------------------------------------------------------------------------- def update_number # Se o botão B for pressionado if Input.trigger?(Input::B) # Reproduzir SE de cancelamento $game_system.se_play($data_system.cancel_se) # Definir a janela de entrada de quantidade como inativa / invisível @number_window.active = false @number_window.visible = false # Ramificação por posição do cursor na janela de comandos case @command_window.index when 0 # Comprar # Mudar janelas para o modo de Compra @buy_window.active = true @buy_window.visible = true when 1 # sell # Mudar janelas para o modo de Venda @sell_window.active = true @sell_window.visible = true @status_window.visible = false end return end # Se o botão B for pressionado if Input.trigger?(Input::C) # Reproduzir SE de Loja $game_system.se_play($data_system.shop_se) # Definir a janela de entrada de quantidade como inativa / invisível @number_window.active = false @number_window.visible = false # Ramificação por posição do cursor na janela de comandos case @command_window.index when 0 # Comprar # Processo de compra #Modificado para o novo Sistema #3############################## $game_party.calculo_geral(@number_window.number * @item.price) #3############################## case @item when RPG::Item $game_party.gain_item(@item.id, @number_window.number) when RPG::Weapon $game_party.gain_weapon(@item.id, @number_window.number) when RPG::Armor $game_party.gain_armor(@item.id, @number_window.number) end # Atualizar cada janela @gold_window.refresh @buy_window.refresh @status_window.refresh # Mudar janelas para o modo de Compra @buy_window.active = true @buy_window.visible = true when 1 # Vender # processo de venda #Modificado para o novo Sistema #3############################## $game_party.gain_copper(@number_window.number * (@item.price / 2)) #3############################## case @item when RPG::Item $game_party.lose_item(@item.id, @number_window.number) when RPG::Weapon $game_party.lose_weapon(@item.id, @number_window.number) when RPG::Armor $game_party.lose_armor(@item.id, @number_window.number) end # Atualizar cada janela @gold_window.refresh @sell_window.refresh @status_window.refresh # Mudar janelas para o modo de Venda @sell_window.active = true @sell_window.visible = true @status_window.visible = false end return end end end #-############################################################### # Modificações Bonus #-############################################################### #Janela de PlayTime Menor class Window_PlayTime < Window_Base def initialize super(0, 0, 160, 64) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize refresh end def refresh self.contents.clear self.contents.font.color = system_color @total_sec = Graphics.frame_count / Graphics.frame_rate hour = @total_sec / 60 / 60 min = @total_sec / 60 % 60 sec = @total_sec % 60 text = sprintf("%02d:%02d:%02d", hour, min, sec) self.contents.font.color = normal_color self.contents.draw_text(4, 0, 120, 24, text, 1) end def update super if Graphics.frame_count / Graphics.frame_rate != @total_sec refresh end end end #Janela de Passos Menor class Window_Steps < Window_Base def initialize super(0, 0, 160, 64) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize refresh end def refresh self.contents.clear self.contents.font.color = system_color self.contents.draw_text(4, 0, 120, 32, "Passos") self.contents.font.color = normal_color self.contents.draw_text(4, 0, 120, 32, $game_party.steps.to_s, 2) end end # Janela de Dinheiro modificada para mostrar as outras moedas class Window_Gold < Window_Base def initialize super(0, 0, 160, 128) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize refresh end def refresh self.contents.clear cx = contents.text_size($data_system.words.gold).width self.contents.font.color = normal_color self.contents.draw_text(4, 0, 120, 32, $game_party.gold.to_s, 2) self.contents.font.color = system_color self.contents.draw_text(4, 0, 64, 32, "Ouro", 0) self.contents.font.color = normal_color self.contents.draw_text(4, 32, 120, 32, $game_party.silver.to_s, 2) self.contents.font.color = system_color self.contents.draw_text(4, 32, 64, 32, "Prata", 0) self.contents.font.color = normal_color self.contents.draw_text(4, 64, 120, 32, $game_party.copper.to_s, 2) self.contents.font.color = system_color self.contents.draw_text(4, 64, 64, 32, "Cobre", 0) end end #Modificação das posições das janelas na Scene_Menu class Scene_Menu def main s1 = $data_system.words.item s2 = $data_system.words.skill s3 = $data_system.words.equip s4 = "Status" s5 = "Salvar" s6 = "Fim de Jogo" @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6]) @command_window.index = @menu_index if $game_party.actors.size == 0 @command_window.disable_item(0) @command_window.disable_item(1) @command_window.disable_item(2) @command_window.disable_item(3) end if $game_system.save_disabled @command_window.disable_item(4) end @playtime_window = Window_PlayTime.new @playtime_window.x = 0 @playtime_window.y = 224 @steps_window = Window_Steps.new @steps_window.x = 0 @steps_window.y = 288 @gold_window = Window_Gold.new @gold_window.x = 0 @gold_window.y = 352 @status_window = Window_MenuStatus.new @status_window.x = 160 @status_window.y = 0 Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze @command_window.dispose @playtime_window.dispose @steps_window.dispose @gold_window.dispose @status_window.dispose end end
| |
| | | Conteúdo patrocinado
| Assunto: Re: [script]SISTEMA REAL DE MOEDAS | |
| |
| | | | [script]SISTEMA REAL DE MOEDAS | |
|
Tópicos semelhantes | |
|
| Permissões neste sub-fórum | Não podes responder a tópicos
| |
| |
| |
|