Jump to content
Rpg²S Forum

Keroro

Utenti
  • Posts

    646
  • Joined

  • Last visited

Posts posted by Keroro

  1. Avevi scritto che ti dava errore su @effect_sprites.update, che non ti trovava il metodo update.

    Non ho la minima idea di che accozzaglia di script hai usato né ho intenzione di scoprirlo

    Puoi provare a sostituire la riga con

    @effect_sprites.update unless @effect_sprites.nil?

    In questo modo chiama il metodo update solo se @effect_sprites esiste

  2. A me la finestra abilità non è mai piaciuta XD

    Questa è una buona occasione per rifarla tutta, anche se sono tentato di fare delle scelte piuttosto vincolanti che si adattano al gameplay del mio gioco ma poi non distribuirei il codice u.u

    Il problema è che è fatta alla cavolo, la descrizione dell'abilità è in alto, le abilità in basso, a sinistra un mostra scelta schifoso, e a destra una finestra di status che sta lì non si sa il perché.

    Potrei aggiungere la visualizzazione dell'attacco primario all'interno della finestra di status, un'altra barra sopra farebbe confusione con la finestra di descrizione delle abilità. ma non saprei cosa mettere nel mostra scelta per renderlo armonico, per questo chiedevo uno schizzo u.u

  3. Descrizione

    Sostituisce 'Attacco' nel menù del Battle System con una skill definita dall'utente

     

    Autore

    Keroro

     

    Esempio

    http://img215.imageshack.us/img215/6640/awesome2.png

     

    Istruzioni

    Copiare lo script in una nuova scheda in Materials.

    Si può usare in due modi, staticamente o dinamicamente.

     

    Staticamente potete aggiungere una nuova linea nell'hash Attack del modulo Awesome.

     

    Dinamicamente potete definire quale attacco userà l'eroe tramite:

    Awesome::set_attack(actor_id, skill_id)

     

    Un esempio di uso dinamico è in questo evento

    http://img59.imageshack.us/img59/8904/awesomepj.png

     

     

    Script

     

    #===============================================================================
    # Awesome Attack
    # By Keroro - cris87@gmail.com
    # Version 1.0
    # Last Date Updated. 2012.04.02
    #===============================================================================
    #
    # Sostituisce "Attacco" nel BS con una Skill definita dall'utente
    #
    #===============================================================================
    
    module Awesome
     Attack = {
    #Actor ID => Skill ID
    1 => 51,
    2 => 3
     }
     Default_Attack = 1
     def self.set_attack(actor_id,skill_id)
    Attack[actor_id] = skill_id
     end
    end
    
    #===============================================================================
    # Window_ActorCommand
    #===============================================================================
    class Window_ActorCommand < Window_Command
     #-----------------------------------------------------
     # Cambia la voce nel menù del BS
     #-----------------------------------------------------
     def add_attack_command
    Awesome::Attack[@actor.id] = Awesome::Default_Attack \
      unless Awesome::Attack[@actor.id]
    add_command($data_skills[Awesome::Attack[@actor.id]].name, :attack, \
    		  @actor.attack_usable?)
     end
    end
    
    #===============================================================================
    # Scene_Battle
    #===============================================================================
    class Scene_Battle < Scene_Base
     #-----------------------------------------------------
     # Usa la skill, codice basato sul metodo on_skill_ok
     #-----------------------------------------------------
     def command_attack
    @skill = $data_skills[Awesome::Attack[battleManager.actor.id]]
    BattleManager.actor.input.set_skill(@skill.id)
    BattleManager.actor.last_skill.object = @skill
    if !@skill.need_selection?
      @skill_window.hide
      next_command
    elsif @skill.for_opponent?
      select_enemy_selection
    else
      select_actor_selection
    end
     end
    end
    

  4. Direttamente da Scene_MenuBase

    def create_background
       @background_sprite = Sprite.new
       @background_sprite.bitmap = SceneManager.background_bitmap
       @background_sprite.color.set(16, 16, 16, 128)
     end

    Non ho mai visto il Neo Save System in opera quindi non saprei ricostruirlo, sii più dettagliato nelle richieste e allega script o foto u_u

  5. La domanda è probabilmente stupida ma...

    Posso usare le risorse VX in VX-Ace o è cambiato qualcosa?

    Dove posso trovare dei template?

    C'è qualcuno che mi insegnerebbe a pixellare tileset?

  6. Di recente ho giocato ad un videogame commerciale che ha un'intro lunghissima e prima di giocare ti fa salvare due volte (la prima dopo che crei il personaggio, la seconda prima di iniziare a giocare), se non che appena prima del secondo salvataggio si scaricano le pile -.- e devo ribeccarmi altri 5 minuti di intro >_>

    Quindi attenzione, il rischio di annoiare un giocatore è alto...

  7. L'ho chiamata Quest per comodità: è la prima associazione mentale quando penso a più condizione necessarie per l'attivazione

    Può essere usata per un gran numero di applicazioni diverse dalle quest perché è un gestore di switch personalizzabili

  8. Penso che così ci si complichi la vita, per fare eventi attivabili da condizioni multiple preferisco di gran lunga usare un hash ;)
    Ecco del codice buttato giù in 10 minuti :3

    #=========================
    # Keroro Basic Quest
    #=========================
    class Quest
    	attr_reader :quest
    	def initialize
    		@quest = {}
    	end
    	def add(symbol)
    		@quest[symbol] = false
    	end
    	def completed?
    		quest.empty? || !quest.value?(false)
    	end
    	def clear(symbol)
    		return unless @quest.key?(symbol)
    		@quest[symbol] = true
    	end
    end
    
    $quest1 = Quest.new
    $quest1.add(:leva1)
    $quest1.add(:condizione1)
    #-----
    $quest1.clear(:condizione1)
    p $quest1.completed?
    $quest1.clear(:leva1)
    p $quest1.completed?
    
  9. Un altro modo per scomporre un numero in cifre è sfruttando le espressioni regolari, ha il vantaggio di essere indipendente dal numero di cifre.

    Ho creato quindi una funzioncina che restituisce un array (la posizione 0 è la cifra più significativa), per provarlo potete metterlo in materials e abilitare la console nel test.

    #=========================
    # Keroro Int to Chars
    #=========================
    def to_chars(number)
     number.to_s.scan(/./)
    end
    # Example
    numero = to_chars(102321345)
    p numero
    p numero[7]
    # End Example
    

     

    diventa poi molto semplice stampare un numero con una immagine personalizzata

    Immaginando di aver già scritto

    def draw_letter(x,y,letter)

    (non entro nel merito, non ancora ho dato un'occhiata al caching e alle bitmap)

    Allora per scrivere un singolo numero potremmo fare:

    def draw_number(x,y,number)
     cifre = to_chars(number)
     for i in cifre.size
         draw_letter(x+i*16,y,cifre[i])
     end
    end

  10. Sisì tranquillo, erano solo idee per il futuro ^_^

    L'unico modo per arrivarci è tramite piccoli passi :3

    Primo passo; l'eroe al posto di attaccare esegue una skill pre-scelta tramite variabile globale.

    Secondo passo: la variabile globale bassamente diventa un array globale per poter personalizzare personaggio per personaggio

    Terzo (futuro?) passo: il sistema legge direttamente dentro l'actor senza bisogno di variabili esterne, o seleziona una skill tramite criterio di utilità (es. la skill più forte per i pm che mi restano).

     

    Pubblico quindi il secondo passo ;O

    #============================
    # My Awesome Attack - Keroro
    #============================
    
    #Array di skill, l'indice è l'actor_id
    $my_awesome_attack = []
    $my_awesome_attack[1] = 51 #assegna Fuoco all'actor 1
    
    #Cambio il nome nel menù
    class Window_ActorCommand < Window_Command
     def add_attack_command
    $my_awesome_attack[@actor.id] = 1 unless $my_awesome_attack[@actor.id]
    add_command($data_skills[$my_awesome_attack[@actor.id]].name, :attack, \
    		  @actor.attack_usable?)
     end
    
    end
    
    #Usa la skill, basandosi sul metodo preesistente on_skill_ok
    class Scene_Battle < Scene_Base
     def command_attack
    @skill = $data_skills[$my_awesome_attack[battleManager.actor.id]]
    BattleManager.actor.input.set_skill(@skill.id)
    BattleManager.actor.last_skill.object = @skill
    if !@skill.need_selection?
      @skill_window.hide
      next_command
    elsif @skill.for_opponent?
      select_enemy_selection
    else
      select_actor_selection
    end
     end
    end
    
    

     

    Ditemi che ne pensate, se volete migliorarlo siete i benvenuti ^^

  11. Un uso semplice è il controllo tasti.

    I simboli delle lettere vanno da :VK_A a VK_Z (per altri tasti guardare lo script)

    Questi simboli vanno passati come argomento alle funzioni predefinite del modulo Input (press?, repeat? e trigger?)

    http://img85.imageshack.us/img85/8207/inputp.png

    Se premi il tasto A si attiva la condizione

  12. Senza entrare nel merito dello script, di cui esistono versioni di autori e qualità diversa, mi permetto di fare qualche appunto:

    Usare un case per una variabile booleana è eccessivo, basta un if.

    Si può rendere lo script molto più corto, esistono già le funzioni per caricare file e creare nuovi oggetti!

     

     

    class Scene_Title < Scene_Base
     def start
    if $intro
    	  DataManager.setup_new_game
    	  DataManager.load_normal_database
    	  DataManager.create_game_objects
    	  SceneManager.clear
    	  $game_party.setup_starting_members
    	  $game_map.setup(1)
    	  $game_player.moveto(1, 1)
    	  $game_player.refresh
    	  Graphics.freeze
    	  $game_map.autoplay
    	  $game_map.update
    	  SceneManager.goto(Scene_Map)
      else
    	  SceneManager.goto(Scene_Title_Screen)
    end
     end
    
     def terminate
    SceneManager.snapshot_for_background
    Graphics.fadeout(Graphics.frame_rate)
     end
    end
    

  13. E' l'idea a scegliere il tool e non il tool a scegliere l'idea.

     

    Ho passato 10 anni da rpgmaker-scettico perché il tool non offriva quello di cui avevo bisogno.

    RpgMaker 2000 è perfetto se ti intendi di pixel art (o hai voglia di rippare) e non hai un gameplay complesso.

    Il 2003 è più o meno identico.

    Esistono poi tre tool che usano un linguaggio di scripting: XP, VX, VX-Ace.

    Ha senso usare questi tool solo se il gameplay non è implementabile con i primi due, perché fare la grafica per una finestra grande quasi il doppio è trenta volte più sbatti.

    Dal punto di visita dello scripting:

    XP venuto prima è male organizzato (=per fare una tua modifica devi intervenire su mille fronti), per programmare decentemente ti conviene installare un sdk creato dai fan.

    VX è organizzato meglio, la finestra è leggermente più piccola ed i frame rate diventano decenti, è un buon prodotto che i linuxisti definirebbero stable.

    VX-Ace è molto meglio, ruby 1.9.x e organizzazione degli script ancora più semplice, è un terreno vergine perché non ha ancora il parco script del VX.

     

    Io adoro la grafica pucciosa e per implementare il progetto che ho su carta ho scelto il VX-Ace per le potenzialità inespresse e per il Character&Face Generator Integrato.

     

    Sul discorso che su rpgmaker 2000/2003 ci sono molti giochi belli mentre per XP,VX si contano sulla punta delle dita sono pienamente d'accordo ed è dovuto al fatto che il 99.9% degli utenti usa scripts altrui senza neanche provare a modificarli e questo crea un effetto fotocopia più sgradevole di quello che avveniva sul 2000/2003 quando si parlava di pappa pronta.

    Sicuramente i nuovi giochi sono meno buggati ma si vede quanto manca l'anima.

×
×
  • Create New...