Vai al contenuto

Rilevato Ad-Blocker. Per favore disabilita il tuo adblocker quando navighi su makerando.com - Non c'è nessun annuncio invasivo.

  • Chatbox

    You don't have permission to chat.
    Load More
Ally

Minigame Amethyst Platform System

Recommended Posts

Nome Script: Amethyst Platform System
Versione: 1.2
Autore/i: Khas

Informazioni:
Come da titolo, con questo script potete creare il vostro gioco platform.

Features:
- Alterazione sistema gravitazionale e impostazioni salto
- Compatibilità con Requiem SBABS

Screenshots:

ScreenShot119.png


Istruzioni:
Inserite lo script sopra Main o sopra tutti gli altri script che avete nel progetto.
Altre istruzioni sono all'interno dello script.

Script:

=begin
================================================================================
 Amethyst Platform System - Version 1.2 RMVX - 25/03/2010
================================================================================

--------------------------------------------------------------------------------
 Credits
--------------------------------------------------------------------------------
 Created by Khas. Translation by Avatar176.
 All Amethyst scripts are licensed under a Creative Commons
 All Amethyst scripts can only be used in non-commercial projects,
 If use in commercial project please send a PM with the request.
--------------------------------------------------------------------------------
 Features
--------------------------------------------------------------------------------
 The Amethyst System Platform Selected maps transforms the constant
 Amp_System_Maps (see the "configuration) in platform-style maps.

--------------------------------------------------------------------------------
 Instructions/Installation
--------------------------------------------------------------------------------
 1 - Paste this script above all the additional scripts
 2 - Set it in the configuration

--------------------------------------------------------------------------------
 Instructions - Creating The Maps
--------------------------------------------------------------------------------
 The tiles are not passable and the platform where the tiles are passable
 the character can fall  jump. The events also suffer map action
 gravity of the system, ie, fall into holes too

--------------------------------------------------------------------------------
 Configuration
--------------------------------------------------------------------------------
=end
module Amp_Config
  # Maps that will be platform style, place the ID within the [], separated by commas
  Amp_System_Maps = [1,2,8,9,10,12,13,14,15,17,18,19,20,22,23,24,25,26,27,28,32,30,33,34,35,36,37,38,39,40,41,
  42,43,46]
  # Force of gravity, varies from 0 ~ 2
  GForce = 1
  # Key to Jump
  Jump_Key = Input::X
  # Force Leap, values from 0 ~ 5
  Jump_Force = 4
  # Sound to play when you jump
  Jump_Sound = "Jump1"
end
#-------------------------------------------------------------------------------
#       Do not change anything below unless you know what you're doing!
#-------------------------------------------------------------------------------

$Amethyst_Scripts = {} if $Amethyst_Scripts.nil?
$Amethyst_Scripts["Am Platform System"] = ["1.2","25/03/2010"]

class Game_Character
  alias amp_original_initialize initialize
  alias amp_original_update update
  alias amp_original_move_up move_up
  alias amp_original_move_down move_down
  alias amp_original_move_left move_left
  alias amp_original_move_right move_right
  alias amp_original_move_random move_random
  alias amp_original_turn_random turn_random
  alias amp_original_move_toward_player move_toward_player
  alias amp_original_move_away_from_player move_away_from_player
  def amp_map?
    $game_map.nil? ? i = false : i = Amp_Config::Amp_System_Maps.include?($game_map.map_id)
    return i
  end
  def initialize
    if amp_map?
      @gforce = false; @nforce = false; @sforce = nil
    end
    amp_original_initialize
  end
  def update
    amp_original_update
    return unless amp_map?
    force_gravity if @gforce
    stop_gravity_force if @nforce
  end
  def force_gravity
    return if moving?
    @move_speed = Amp_Config::GForce+4
    @y = $game_map.round_y(@y+1)
    @real_y = (@y-1)*256
    if passable?(@x, @y+1); @gforce = true
      else; @nforce = true; @gforce = false
    end
  end
  def check_gravity_force
    if passable?(@x, @y+1)
      @sforce = @move_speed
      @gforce = true
      @walk_anime = false
    else
      check_event_trigger_touch(@x, @y+1)
    end
  end
  def stop_gravity_force
    return if moving?
    @nforce = false
    @gforce = false
    @walk_anime = true
    @move_speed = @sforce
    @sforce = nil
  end
  def move_up(turn_ok = true)
    amp_map? ? amp_move_up(turn_ok) : amp_original_move_up(turn_ok)
  end
  def move_down(turn_ok = true)
    amp_map? ? amp_move_down(turn_ok) : amp_original_move_down(turn_ok)
  end
  def move_left(turn_ok = true)
    amp_map? ? amp_move_left(turn_ok) : amp_original_move_left(turn_ok)
  end
  def move_right(turn_ok = true)
    amp_map? ? amp_move_right(turn_ok) : amp_original_move_right(turn_ok)
  end
  def move_random
    amp_map? ? amp_move_random : amp_original_move_random
  end
  def move_toward_player
    amp_map? ? amp_move_toward_player : amp_original_move_toward_player
  end
  def move_away_from_player
    amp_map? ? amp_move_away_from_player : amp_original_move_away_from_player
  end
  def turn_random
    amp_map? ? amp_turn_random : amp_original_turn_random
  end
  def amp_move_up(turn_ok)
    if passable?(@x, @y-1)
      @y = $game_map.round_y(@y-1)
      @real_y = (@y+1)*256
      increase_steps
      @move_failed = false
    else
      check_event_trigger_touch(@x, @y-1)
      @move_failed = true
    end
  end
  def amp_move_down(turn_ok)
    if passable?(@x, @y+1)
      @y = $game_map.round_y(@y+1)
      @real_y = (@y-1)*256
      increase_steps
      @move_failed = false
    else
      check_event_trigger_touch(@x, @y+1)
      @move_failed = true
    end
  end
  def amp_move_left(turn_ok)
    if passable?(@x-1, @y)
      turn_left if turn_ok
      @x = $game_map.round_x(@x-1)
      @real_x = (@x+1)*256
      increase_steps
      check_gravity_force
      @move_failed = false
    else
      turn_left if turn_ok
      check_event_trigger_touch(@x-1, @y)
      @move_failed = true
    end
  end
  def amp_move_right(turn_ok)
    if passable?(@x+1, @y)
      turn_right if turn_ok
      @x = $game_map.round_x(@x+1)
      @real_x = (@x-1)*256
      increase_steps
      check_gravity_force
      @move_failed = false
    else
      turn_right if turn_ok
      check_event_trigger_touch(@x+1, @y)
      @move_failed = true
    end
  end
  def amp_move_random
    case rand(2)
    when 0;  move_left(false)
    when 1;  move_right(false)
    end
  end
  def amp_move_toward_player
    sx = distance_x_from_player
    return if sx == 0
    sx > 0 ? move_right : move_left
  end
  def amp_move_away_from_player
    sx = distance_x_from_player
    return if sx == 0
    sx > 0 ? move_right : move_left
  end
  def amp_turn_random
    case rand(2)
    when 0; turn_right
    when 1; turn_left
    end
  end
end


class Game_Player < Game_Character
  alias amp_2original_initialize initialize
  alias amp_2original_update update
  alias amp_2original_move_by_input move_by_input
  def initialize
    amp_2original_initialize
    @jforce = 0
  end
  def update
    amp_2original_update
    update_jump_force if amp_map? and !@gforce
  end
  def update_jump_force
    if @jforce > 0
      return if moving?
      if @jforce > 1
        if Input.press?(Input::RIGHT)
          turn_right
          jump_upper_right
        elsif Input.press?(Input::LEFT)
          turn_left
          jump_upper_left
        else
          jump_up
        end
      else
        @move_speed = 4
        @walk_anime = true
        check_gravity_force
      end
      @jforce -= 1
    else
      if Input.trigger?(Amp_Config::Jump_Key)
        RPG::SE.new(Amp_Config::Jump_Sound,80).play
        dash? ? @jforce = 4+Amp_Config::Jump_Force : @jforce = 3+Amp_Config::Jump_Force
        @move_speed = 5
        @walk_anime = false
        @pattern = 0
      end
    end
  end
  def force_gravity
    return if moving?
    @move_speed = Amp_Config::GForce+4
    if Input.press?(Input::RIGHT)
      turn_right
      gforce_lower_right
    elsif Input.press?(Input::LEFT)
      turn_left
      gforce_lower_left
    else
      @y = $game_map.round_y(@y+1)
      @real_y = (@y-1)*256
    end
    check_touch_event
    if passable?(@x, @y+1); @gforce = true
      else; @nforce = true; @gforce = false
    end
  end
  def gforce_lower_left
    if (passable?(@x, @y+1) and passable?(@x-1, @y+1)) or
       (passable?(@x-1, @y) and passable?(@x-1, @y+1))
      @x -= 1
      @y += 1
    else
      @y = $game_map.round_y(@y+1)
      @real_y = (@y-1)*256
    end
  end
  def gforce_lower_right
    if (passable?(@x, @y+1) and passable?(@x+1, @y+1)) or
       (passable?(@x+1, @y) and passable?(@x+1, @y+1))
      @x += 1
      @y += 1
    else
      @y = $game_map.round_y(@y+1)
      @real_y = (@y-1)*256
    end
  end
  def jump_up
    if passable?(@x, @y-1)
      @y = $game_map.round_y(@y-1)
      @real_y = (@y+1)*256
      @move_failed = false
    else
      check_event_trigger_touch(@x, @y-1)
      @move_failed = true
      @jforce = 0
      check_gravity_force
    end
  end
  def jump_upper_left
    unless @direction_fix
      @direction = (@direction == 6 ? 4 : @direction == 2 ? 8 : @direction)
    end
    if (passable?(@x, @y-1) and passable?(@x-1, @y-1)) or
       (passable?(@x-1, @y) and passable?(@x-1, @y-1))
      @x -= 1
      @y -= 1
    else
      jump_up
    end
  end
  def jump_upper_right
    unless @direction_fix
      @direction = (@direction == 4 ? 6 : @direction == 2 ? 8 : @direction)
    end
    if (passable?(@x, @y-1) and passable?(@x+1, @y-1)) or
       (passable?(@x+1, @y) and passable?(@x+1, @y-1))
      @x += 1
      @y -= 1
    else
      jump_up
    end
  end
  def move_by_input
    amp_map? ? amp_move_by_input : amp_2original_move_by_input
  end
  def amp_move_by_input
    return if @gforce
    return unless movable?
    return if $game_map.interpreter.running?
    case Input.dir4
    when 4; move_left
    when 6; move_right
    end
  end
end
Note dell'Autore:
Si consiglia questo script per minigiochi o giochi brevi.
Per fare qualcosa di più complesso, create qualcosa ad eventi o affidatevi a tool più consoni a quel tipo di realizzazione.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

You need to be a member in order to leave a comment

Crea un account

Iscriviti per un nuovo account nella nostra comunità. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

  • Contenuti simili

    • Da Ghost Rider
      Eccoci alle votazioni per il One Map Minigame Contest appena concluso:
      Innanzitutto, dove sono i progetti da valutare?
       
      Eccoli qui: https://mega.nz/#F!7lMElazQ!lJ45YJK8-YQFMVxyNbKvKw
        Potete scaricarli singolarmente dalla mia cartella di MEGA.   Per votare il vostro minigame preferito basta utilizzare il sondaggio in cima al topic.   Purchè il voto sia registrato è necessario usare il sondaggio, tuttavia è naturalmente possibile commentare i lavori (anzi è più che gradito )   Come anticipato, il voto popolare si aggiunge a quello finale, ma cosa significa nello specifico?   Innanzitutto, specifico che chiunque potrà esprimere fino a due preferenze, tra i sei giochi in gara, non importa in che ordine (nel caso votasse due volte lo stesso gioco ovviamente sarà contato come un unico voto); Al termine delle votazioni ogni gioco riceverà un certo numero di punti bonus che si andranno a sommare alle valutazioni dei giudici (di cui parlerò tra un attimo) in modo direttamente proporzionale al numero di voti. Il gioco che ha ottenuto il maggior numero di voti dal "popolo" riceverà 10 punti bonus . Il secondo classificato avrà 8 punti bonus. Il terzo classificato avrà 6 punti bonus. Il quarto classificato avrà 4 punti bonus. Il quinto classificato avrà 2 punti bonus. Il sesto e ultimo classificato avrà 1 punto bonus.   Tie Breaker: Nel caso due o più progetti si trovino in parità verranno considerati entrambi nel posto "più basso" tra i due, ma "+1". Mi spiego meglio con un esempio: Gioco_A  è in vantaggio su tutti con 12 voti, Gioco_ B e Gioco_C seguono entrambi con 11 voti, in quel caso A prenderà 10 punti, mentre B e C prenderanno entrambi 7 (6+1) punti come se fosser al terzo posto tutti e due.   L'altra metà del voto è dato dai giudici, che per l'occasione sono @@Ghost Rider (che poi sarei io) e @@MrSte. I due giudici commenteranno i lavori di tutti e daranno un voto da 1 a 10. La media dei punteggi dei giudici, sommata ai punti bonus della classifica popolare determinerà il voto finale.   Quindi ricapitolando... Voto Finale = (Voto Giudice 1 + Voto Giudice 2) /2 + Punti Bonus   Altro: Non è possibile votare il proprio progetto, pena annullamento del voto I Giudici NON possono votare Le votazioni terminano Domenica 7 Maggio alle ore 23.59 (un po' più tardi del previsto perchè non ci sarò quasi per niente dalla prossima settimana) Che altro...? Niente credo!
    • Da Ghost Rider
      Premessa: questo è un esperimento, in base all'affluenza e al feedback riscontrato vedremo anche come organizzare contest futuri.
       
      Benvenuti a...
       
      MAKERANDO ONE-MAP MINIGAME CONTEST
       
      *dan daaaan daaaaaaaan*
       

       
      Perdonate la scarna (volendo usare un eufemismo) presentazione grafica, ma ahimè se dovevo anche mettermi a fare un banner il contest partiva l'anno prossimo XD
       
      Ebbene ho deciso di aprire questo contest a seguito della richiesta da parte degli utenti, e mi è parso di capire che un breve minigame-contest era quello più gettonato.
       
      Quindi... per questo contest vi si richiede di creare un minigame che si svolga in una sola mappa: è possibile creare una o più mappe "preparatorie" nel caso ci sia bisogno di impostare variabili e switch, pictures e quant'altro prima che il minigame cominci, ma il minigame vero e proprio DEVE svolgersi tutto in un unica scena/mappa. In generale comunque meno mappe create e meglio sarà valutato il vostro progetto, la bravura infatti sta nel far entrare tutto nel minimo spazio possibile!
       
      E' consentito l'uso di QUALUNQUE tool appartenente alla serie RPG Maker, dal '95 all' MV. E' proibito utilizzare script o plugin: per cui scegliete con attenzione il tool, in quanto potete fare affidamento solo con la vostra bravura con esso. Nel caso di RPG "moderni" (dall' XP in poi) è permesso inserire "call script" all'interno degli eventi, MA devono comunque richiamare funzioni già presenti in gioco. Non è possibile, per nessun motivo, utilizzare script oltre quelli gia forniti dal tool, SOPRATTUTTO se di terze parti. In generale è proibito anche usare script autoprodotti, tuttavia su questa condizione sono disposto a trattare, per cui se avete richieste particolari contattatemi in privato e spiegatemi bene lo script che volete incorporare e vi farò sapere. Per venire incontro a più persone e permettere a tutti di partecipare, il minigame non deve essere necessariamente programmato appositamente per il contest, può essere anche un minigame presente all'interno di un vostro gioco, purchè sia comunque inedito. Cosa viene valutato?
       
      Innanzitutto il minigame in se stesso: l'originalità, la complessità e la logica che c'è dietro* in primo luogo, secondo la fluidità con cui si volge il tutto, e l'assenza di bug sia grafici che del gameplay.
      In secondo luogo viene valutato anche il comparto grafico: le risorse utilizzate in piccola parte, ma soprattutto il modo in cui vengono utilizzate. Se sono originali o meno importa relativamente poco, in generale sì, c'è sempre l'occhio di riguardo verso chi si è impegnato a creare qualcosa di suo, ma grafica originale NON è uguale a grafica bella, quindi stabilite voi se ne vale la pena: il fulcro del contest è comunque il minigame dal punto di vista "tecnico", quindi... scegliete bene in cosa investire il tempo a disposizione.
       
      *per "logica che c'è dietro" intendo se il minigame segue un filo logico che giustifichi la sua complessità, oppure se sono semplicemente cose messe a caso senza senso, solo per rendere difficile il gioco.
       
      Modalità di consegna e voto:
       
      Il minigame va consegnato a me tramite messaggio privato, entro e non oltre la data di consegna (vedere sotto): una volta consegnato NON può più essere modificato, salvo nel caso in cui si scopra un bug critico che ne impedisce il corretto funzionamento: in questo caso mi avvisate del bug e mi inviate la nuova versione, segnalandomi il bug in questione, e io provvedrò a controllare che l'unica cosa diversa sia effettivamente la risoluzione del bug. Sono anche gradite due righe per spiegarne il funzionamento e le istruzioni.
       
      I minigame verranno pubblicati il giorno dopo la chiusura del contest e potranno essere votati dal pubblico secondo disposizioni che darò in sede di votazione; Il voto popolare costiutirà il 50% della votazione, mentre l'altra metà consisterà in una valutazione fatta da due giudici, di cui uno sono io e l'altro da designare.
       
      Data di consegna:
       
      Essendo un minigame breve non prevedo che ci voglia molto tempo, direi che 15 giorni sono un tempo più che ragionevole, ma nel caso se ne può parlare.
       
      Avevo pensato domenica 16, ma siccome è pasqua e lunedì è pasquetta, ho previsto che le persone normali non passino questi due giorni davanti al PC... quindi penso di posticipare.
       
      Fino a nuovo ordine, la data di consegna è fissata a...
       
      Mercoledì 23 Aprile 2017 fino alle ore 23:59:59
       
      fa fede la data di invio.
       
      Mi raccomando, partecipate numerosi
    • Da king 69
      Escape the bedroom è un gioco creato con rpg maker 2003 dello stile escape. Trama: Ryoku il protagonista si risveglia in una stanza che non è la sua, tocca a voi tirarlo fuori da quel luogo. Non viene specificato altro perché questo è un prequel, non vi voglio rovinare la sorpresa. Screen:
       
       


    • Da Ryoku
      Sono lieto di presentarvi:
       

       
       
      1)Di cosa stiamo parlando? 
      Il titolo qui presente è una sorta di "Tower Defence" miniaturizzato. In buona sostanza dovrete proteggere Tommy dall'attacco dei mostri in qualità di angelo custode. 
      L'intera ambientazione si svolge, nel cuore della notte, in un'unica mappa, la camera di Tommy. Mentre il grazioso ragazzino dorme nel sonno più beato, dovrete frenare a tempo le cattive intenzioni dei nemici di circostanza. Ma chi sono questi nemici da cui difendere l'ignaro Tommy? Lo scoprirete nel successivo paragrafo.
       
      2)I famelici nemici.
       
      Il mostro nell'armadio:
       

       
      Questa creatura è nascosta nel guardaroba di Tommy. Nel momento in cui lo sportello si apre sarà vostro interesse correre immediatamente a richiuderlo.
       
       
      La bimba fantasma:
       

       
      Questo nemico è l'unico a potersi muovere ed è anche l'unico ad apparire in punti diversi. La bimba si dirigerà verso il letto e voi dovrete fermarla prima che inizi a gridare.
       
       
      Larry il coniglio:
       

       
      Si presenta come un normale peluche, ma nella realtà è un essere crudele. Durante la notte, si volta in direzione del letto pronto ad assaltarlo. Nel momento in cui si gira, dovrete "rigirarlo" nella posa iniziale.
       
       
      L'ombra:
       

       
      The Shadow compare in corrispondenza della porta di ingresso. L'unico modo per fermarlo è quello di accendere la luce...E anche in questo caso va fatto in fretta.
       
      3)Gameplay.
      Il vostro aspetto non risulterà visibile nel gioco. Quello che potete fare è muovere un cursore (si muove anche in diagonale) ed usarlo per interagire con i quattro nemici. Vi consiglio ardentemente di usare, da tastiera, il tasto "spazio" anzichè "invio".
      I nemici appariranno di continuo ed a velocità sempre crescenti.
      Se lo si riesce a finire, il gioco è estremamente breve.
       
      4)Screenshot:
       

       

       

       
      5)Download [34 mb]:
       
      http://www.freankexpo.net/941/The-Tommy-s-room
       
      Il gioco non necessita delle Rtp. Nulla de nulla.
       
       
      Siccome il mio inglese è pessimo mi fareste un immenso piacere nel segnalarmi i probabilissimi  oerrori...Oltre chiaramente ai classici bug di gioco.
       
      Spero che il concept sia di vostro gradimento, così come il titolo in questione. ^^
    • Da Ally
      Nome Script: Sistema Premio
      Versione: 1.0
      Autore/i: Sky00Valentine
       
      Informazioni:
      Non so se avete presente il sistema nel gioco Need for Speed per la Playstation.
      Dopo ogni gara vi mostrava delle carte le quali una volta scelte, vincevate o dei soldi, o delle parti di ricambio etc...
      Questo script fa praticamente la stessa cosa.
       
      Screenshots:
       
       
       
      Istruzioni:
      Istruzioni e demo all'interno dello script/demo.
       
      Script:
       

      #=========================================================================== # # Sky Script Revolution : Reward Scene (SSR) (SSR/RS) # Version 1.0 # August 03, 2011 Started # August 08, 2011 Completed # #=========================================================================== # # What is Sky Script Revolution (SSR)? # It is a revamp of Sky's previous scripts. # Is that all? # No, that is only the beginning. Look for # New Scripts as well. Also look forward to # the reopenning of script request hall soon. # What kind of scripts are you planning? # I am starting to get into battle system # scripting so look for edits. # Are you supporting old scripts? # Some scripts don't need revamping as they # work beautifully, so I will update those # scripts. # #=========================================================================== # # Features : # Version 1.0 - August 08, 2011 # - Card Reward Graphics # - Choose from 4 possible rewards # - Set up your own rewards. # #=========================================================================== # # Credit # Sky00Valentine :creator and editor # New :requesting script # Celianna :grahpics # #=========================================================================== # # Terms of Use # ------------ # # Crediting Rpgmakervx.net is the only thing I ask. # However feel free to credit Sky00Valentine if you # see fit. # #=========================================================================== # # Future improvement # ------------------ # # - Other Reward Graphics # - Treasure Chests # #=========================================================================== # # Instructions & Installation # --------------------------- # - place under materials # # - be sure to download the card_graphics found here and place them in pictures # folder. # http://www.mediafire.com/?6qhycyy6bv4s877 # # - Setup the Module how you like. # # NEXT_SCENE is the next scene after the reward scene. Set to whatever. # # BACK_IMAGE is the background of the Scene. For the best results make # your own or get one made for you. # # SHOW_TITLE if there is a background image the Choose Your Reward message # will no longer show if this is set to false. # # MIN_VARIABLE set this to a free game variable that you can change through # eventing. # # MAX_VARIABLE set this to a free game variable that you can change through # eventing. # Note that which ever game variables are MIN and MAX if REPETITION is set # to false make sure they are 3 apart (6,9) otherwise you will be caught # in an infinite loop. For a little safety I put in a breaker, that will # inform you of your mistake. # Note #2 the same problem can occur possibly if you fill REWARD HASH # with the EXACT same reward multiple times. So make each reward unique # will ya. Can also be fixed by setting REPETITION to true. # # BGM is the Background Music of the Scene. Jazz up this scene with some # music. # # SOUND is a sound that will be played when you pick your reward. Feel the # happiness of being rewarded ring in your ears. # # Repetition set this to false so that each reward is different from the # others. Or you might find that you were going to get the same reward no # matter which you picked. But if it is on it may increase your chance # or decrease you chance from getting a great reward. # # TEXT well the three settings for this are pretty simple test it out. # # REWARDS well this is where you input each of your rewards. It is best # explained below in the module please read carefully and everything should # go smoothly. # # - Have fun with it. # #=========================================================================== $imported = {} if $imported == nil $imported["SSRRewardScene"] = true module Sky module Reward NEXT_SCENE = "Scene_Map.new" #Set to the Scene you want to go to when this one is exited. BACK_IMAGE = "" #Background Image for this menu. Must be in the #Pictures folder. Set to "" by default for a normal #Menu look. Set it to background image name for custom #Menu. SHOW_TITLE = false #If set to false when BACK_IMAGE is being used #the Choose Your Reward! Will not show up. #this allows more customization. MIN_VARIABLE = 1 #Game Variable for MIN setting, Set to Variable 1 MAX_VARIABLE = 2 #Game Variable for MAX setting, Set to Variable 2 #========================================================== # Max setting allows Rewards in that range to be received. # Down in the Rewards Hash you set rewards starting with 0 up to whatever # If Min is set to 3 and Max is set to 6 only items 3 to 6 can be obtained # when the Reward Scene is called. #========================================================== BGM = "" #BGM played when menu starts. #BGM must be located in Audio/BGM folder SOUND = "" #Sound played when selected reward is revealed. #Sound must be located in Audio/ME folder #Leave sounds empty and no sound will play. REPETITION = true #Allows multiple of the same reward to appear at once #So two or more hidden rewards can end up being the same. TEXT = "Party Obtained " #When you get your reward this message will pop up. TEXT_SIZE = 20 #The size of the message font. By default it is 20. TEXT_FONT = "Calibri" #The font of the reward message. RPG Maker VX #by default is Verdana. REWARDS = { # Set Icons as such. #"Icons" => [icon_id(currency),icon_id(weapon),icon_id(armor),icon_id(items)] # Set rewards as such, Types are Currency, Weapon, Armor, and Items. # if Type is Currency value is amount of currency(Gold), # if Type is anything else value is the id of that item.(number in database) # reward_id => ["Type",value,amount] # amount is how many of reward item. Unless the reward item is Currency. "Icons" => [85,1,32,64], # Currency icon is icon 85, Weapon icon is icon 1 # Armor icon is icon 32, Item icon is icon 64 0 => ["Currency", 200], # Reward is 200 G 1 => ["Weapon", 1,2], # Reward is 2 Clubs 2 => ["Armor", 2,3], # Reward is 3 Scale Shields 3 => ["Item", 3,10], # Reward is 10 Full Potions 4 => ["Currency", 10000], # Reward is 10000 G 5 => ["Armor", 9, 1], # Reward is 1 Iron Helm 6 => ["Item", 3, 2], # Reward is 2 Full Potions 7 => ["Weapon",2,1], # Reward is 1 Long Sword 8 => ["Weapon",11,7], # Reward is 7 Wrapped Bows 9 => ["Item",1,99], # Reward is 99 Potions } end #========================================== # # Do not edit anything below this point # unless you have Ruby scripting knowledge. # You have been warned. # #========================================== end class Scene_Reward < Scene_Base include Sky #Allows Scene_Reward Class to automatically access Sky Module include Reward #Allows Scene_Reward Class to automatically access Reward Module #=========================================================================== # # create_menu_background(alias) # ---------------------- # # if BACK_IMAGE is defined a custom background can be used # instead of creating the normal menu background. # #=========================================================================== alias ssr_rs_background create_menu_background def create_menu_background if BACK_IMAGE == "" ssr_rs_background else @back_image = Sprite.new @back_image.bitmap = Cache.picture(BACK_IMAGE) end end #=========================================================================== # # start # ----- # # Does everything needed to startup the scene. # #=========================================================================== def start @viewport = Viewport.new(0,0,Graphics.width,Graphics.height) Audio.BGM_play("Audio/BGM/" + BGM) if BGM != "" create_menu_background create_sprites create_windows draw_rewards initialize_variables randomize_rewards end #=========================================================================== # # initialize # ---------- # # creates all local variables used in this scene. # #=========================================================================== def initialize_variables @vert = 80.0 @draw_text = ""; @text = "" @down = true; @show = false @count = 0; @index = 1; @i = 0; @loop_break = 0; @choice = -1 @rewards = {} end #=========================================================================== # # dispose # ------- # # disposes of all images created during this scene # as well as stop sounds and move on to the next scene. # #=========================================================================== def dispose @back_image.dispose unless @back_image == nil or @back_image.disposed? @arrow.dispose @item_1.dispose @item_2.dispose @item_3.dispose @item_4.dispose @title.dispose @reward_window.dispose @cards.dispose Audio.me_stop Audio.bgm_stop $scene = eval(NEXT_SCENE) end #=========================================================================== # # create_windows # -------------- # # creates and defines each window used in this scene. # #=========================================================================== def create_windows @title = Window_Base.new(0,0,544,90) @title.contents.font.size = 60 @title.contents.font.name = "Calibri" @title.opacity = 0 @title.contents.draw_text(0,0,544,64,"Choose your Reward!",1) @title.contents_opacity = 0 unless BACK_IMAGE == "" or SHOW_TITLE @reward_window = Window_Base.new(0,260,544,176) @reward_window.opacity = 0 @reward_window.contents.font.size = 20 @cards = Window_Base.new(0,134,544,142) @cards.opacity = 0 @cards.contents.font.size = 12 @cards.contents.font.name = "Calibri" end #=========================================================================== # # randomizize_rewards # ------------------- # # takes four random rewards from REWARDS Hash. # #=========================================================================== def randomize_rewards while @rewards.size < 4 do number = -1 while number < $game_variables[MIN_VARIABLE] do call_exception if $game_variables[MIN_VARIABLE] > $game_variables[MAX_VARIABLE] number = rand($game_variables[MAX_VARIABLE]+1) end @rewards[@rewards.size] = REWARDS[number] unless @rewards.has_value?(REWARDS[number]) and !REPETITION @loop_break += 1 if @loop_break == 180 call_exception end end end #=========================================================================== # # call_exception # -------------- # # breaks infinite loop and displays error message. # #=========================================================================== def call_exception raise Exception.new("You were saved from an infinite loop error. Please set " + "Min and Max Variables to a difference of 3 or more " + "and make sure that you don't have multiples of the same" + "reward. Refer to Sky and Reward Modules instructions.") end #=========================================================================== # # draw_rewards # -----------_ # # sets up sprited images # #=========================================================================== def draw_rewards @item_1.bitmap = Cache.picture("card_blue_1") @item_2.bitmap = Cache.picture("card_red_1") @item_3.bitmap = Cache.picture("card_green_1") @item_4.bitmap = Cache.picture("card_yellow_1") for i in 1..4 x = (i-1) * (90) + (36 * i) eval("@item_" + i.to_s + ".x = #{x}") eval("@item_" + i.to_s + ".y = 150") end @arrow.bitmap = Cache.picture("reward_arrow") @arrow.y = 90 @arrow.x = 68 end #=========================================================================== # # create_sprites # -------------- # # creates five new sprites used for this scene. # #=========================================================================== def create_sprites @item_1 = Sprite.new @item_2 = Sprite.new @item_3 = Sprite.new @item_4 = Sprite.new @arrow = Sprite.new end #=========================================================================== # # spin(number) # ------------ # # animates the four reward sprites # also reward is given to player here # # number: specifies which image to animate. 1 to 4 # #=========================================================================== def spin(number) color = number == 1 ? "blue" : number == 2 ? "red" : number == 3 ? "green" : "yellow" if @count == 20 eval("@item_" + number.to_s + '.bitmap = Cache.picture("card_'+ color +'_2")') elsif @count == 13 eval("@item_" + number.to_s + '.bitmap = Cache.picture("card_'+ color +'_3")') elsif @count == 6 eval("@item_" + number.to_s + '.bitmap = Cache.picture("card_'+ color +'_4")') elsif @count == 0 eval("@item_" + number.to_s + '.bitmap = Cache.picture("card_'+ color +'_1")') eval("@item_"+ number.to_s + ".opacity = 100") draw_card(number) elsif @count == -1 if number = @index Audio.me_play("Audio/ME/" + SOUND) if SOUND != "" $game_party.gain_gold(@rewards[@index-1][1]) if (@rewards[@index-1][0]).downcase == "currency" $game_party.gain_item($data_weapons[@rewards[@index-1][1]],@rewards[@index-1][2]) if @rewards[@index-1][0].downcase == "weapon" $game_party.gain_item($data_armors[@rewards[@index-1][1]],@rewards[@index-1][2]) if @rewards[@index-1][0].downcase == "armor" $game_party.gain_item($data_items[@rewards[@index-1][1]],@rewards[@index-1][1],2) if @rewards[@index-1][0].downcase == "item" rewarded_item = @rewards[@index-1][0].downcase == "currency" ? (@rewards[@index-1][1]).to_s + " #{Vocab.gold}" : @rewards[@index-1][0].downcase == "weapon" ? @rewards[@index-1][2].to_s + " " + $data_weapons[@rewards[@index-1][1]].name.to_s : @rewards[@index-1][0].downcase == "armor" ? @rewards[@index-1][2].to_s + " " + $data_armors[@rewards[@index-1][1]].name.to_s : @rewards[@index-1][2].to_s + " " + $data_items[@rewards[@index-1][1]].name.to_s rewarded_item += (@rewards[@index-1][2] == nil or @rewards[@index-1][2] == 1) ? "." : "s." @text = TEXT + rewarded_item end end end #=========================================================================== # # draw_card(number) # ----------------- # # reveals the reward hidden by each image. # # number: specifies which reward is being revealed. 1 to 4 # #=========================================================================== def draw_card(number) x = (number * 36)+(90*(number-1)) + 17 icon = @rewards[number-1][0].downcase == "currency" ? REWARDS["Icons"][0] : @rewards[number-1][0].downcase == "weapon" ? REWARDS["Icons"][1] : @rewards[number-1][0].downcase == "armor" ? REWARDS["Icons"][2] : REWARDS["Icons"][3] @cards.contents.draw_icon(icon,x,43) rewarded_item = @rewards[number-1][0].downcase == "currency" ? (@rewards[number-1][1]).to_s + " #{Vocab.gold}" : @rewards[number-1][0].downcase == "weapon" ? @rewards[number-1][2].to_s + " " + $data_weapons[@rewards[number-1][1]].name.to_s : @rewards[number-1][0].downcase == "armor" ? @rewards[number-1][2].to_s + " " + $data_armors[@rewards[number-1][1]].name.to_s : @rewards[number-1][2].to_s + " " + $data_items[@rewards[number-1][1]].name.to_s rewarded_item += (@rewards[number-1][2] == nil or @rewards[number-1][2] == 1) ? "." : "s." @cards.contents.draw_text(x - 17,67,66,16,rewarded_item,1) end #=========================================================================== # # update_cursor # ------------- # # animates the cursor # #=========================================================================== def update_cursor if @down @vert += (11/16.0) @down = false if @arrow.y == 100 else @vert -= (11/16.0) @down = true if @arrow.y == 90 end @arrow.y = @vert.to_i @arrow.x = ((@index - 1) * 90) + (36 * @index) + 32 end #=========================================================================== # # update # ------ # # updates each frame of the scene. # #=========================================================================== def update @count -= 1 if @choice != -1 and @count > -3 update_cursor unless @count != 0 or @choice != -1 spin(@choice) unless @choice == -1 or @show if @show and @count > -3 for i in 1..4 spin(i) unless @choice == i end end if Input.trigger?( Input::C ) @count = 21 unless @count != 0 or @choice != -1 @choice = @index unless @choice != -1 if @draw_text == @text and @i > 0 and !@show @show = true @count = 21 elsif @show and @count == -3 dispose end Sound.play_decision unless SOUND != "" or @count != 21 elsif Input.trigger?( Input::B ) dispose if (@draw_text == @text and @i > 0) elsif Input.trigger?( Input::RIGHT ) unless @count != 0 Sound.play_cursor @index = @index < 4 ? (@index + 1) : 1 end elsif Input.trigger?( Input::LEFT ) unless @count != 0 Sound.play_cursor @index = @index > 1 ? (@index - 1) : 4 end end if @choice != -1 if @i % 2 == 0 and @draw_text != @text @draw_text += @text[@i/2,1] @reward_window.contents.clear @reward_window.contents.draw_text(0,0,512,TEXT_SIZE+4,@draw_text) end @i += 1 unless @draw_text == @text end end end Demo:http://www.mediafire.com/?t2036i4ej6zwnp6
×