Jump to content
Rpg²S Forum

Keroro

Utenti
  • Posts

    646
  • Joined

  • Last visited

Posts posted by Keroro

  1. Il test che proponi è fatto davvero male!!!!

    Il primo comando sarà sempre più veloce (prova a mettere il terzo al posto del primo) perché riassegni l'oggetto 'a' (quindi il garbage collector deve anche eliminare il vecchio Time)

     

    Con l'ordine normale ho questi valori

    2.411138 #class_eval

    3.108178 #define method

    2.423138 #classico

    3.234185 #send

    3.084177 #mixed

     

    Con il terzo al posto del primo ho questi

    2.372135 #classico

    3.115179 #define method

    2.473141 #class eval

    3.281188 #send

    3.151180 #mixed

     

    Naturalmente i valori oscillano, ma dai test che ho fatto il metodo che io chiamo classico (la semplice ridefinizione) è sempre più veloce di eval, a parità di posizione!

  2. Per i motivi basta che cerchi su google "eval evil" o "eval bad".

    La quasi totalità dei programmatori ruby ritiene che eval vada usato solo quando strettamente necessario.

    Ed in questo caso non fai che valutare stringhe statiche quindi è ancora meno necessario del solito.

    Il primo:

    eval "class Window_Base; def update_tone; end; end" unless RM2K::CHANGE_SKIN_TONE

    è banalmente sostituibile con

    unless RM2K::CHANGE_SKIN_TONE
     class Window_Base
    def update_tone
    end
     end
    end

    Il secondo come dice king artur.

     

    Se tutti usassero eval non si capirebbe più una mazza negli script, sono stringhe valutate in real time, molto meglio che l'errore spunti in fase di caricamento.

  3. Grazie giver :)

     

    Aver imparato in un giorno ad usare i livelli, i pattern, la gomma e la maschera di livello mi sembra un grande passo avanti XD

    Il mio obiettivo attuale è imparare ad usare photoshop/gimp per creare panorami e questo sembra il tutorial adatto.

    @Guardian. Per la pixel art sono negato, quel tutorial l'ho seguito anni fa, tante ore buttate nel nulla.. (Ieri sera ho installato graphic gales e sono venute fuori delle robe orribili XD)

    Tornando in tema, ho capito che il bordo lo devo piazzare copia-incollando e spostandolo, adesso cerco con quale strumento è possibile ruotarlo, l'unica cosa che non mi torna è: basta solo la gomma per far amalgamare il bordo?

  4. Sì, il magic reflex, ho ricontrollato per scrupolo e stavolta l'ho trovato, non so perché quando l'ho cercato prima non mi aveva trovato nulla XD

     

    Ricapitolando: Gli utenti della versione inglese (e italiana) secondo l'enterbrain necessitano di questa lunghissima patch:

    class Game_Picture
     #--------------------------------------------------------------------------
     # * Erase Picture
     #--------------------------------------------------------------------------
     alias vxace_sp1_erase erase
     def erase
    vxace_sp1_erase
    @origin = 0
     end
    end

  5. Visto che col giapponese faccio schifo (ci vorrebbe Dragon7), ho pensato di commentare guardando il codice:

    La patch di Holy copia gli script inglesi versione 301 in cui quasi tutto è stato corretto.

    Quello che manca sono questi due metodi.

    Il primo resetta il l'origine di una picture quando questa viene cancellata, evita che quando ne carichi un'altra essa abbia il centro spostato.

    La seconda invece è un mistero perché patcha un metodo, invoke_magic_reflection di Scene_Battle che NON è presente nella versione inglese @_@

    Probabilmente hanno deciso di fare le cose in altri modi, per ora è mistero.

     

    #------------------------------------------------------------------------------
    class Game_Picture
     #--------------------------------------------------------------------------
     # ● ピクチャの消去
     #--------------------------------------------------------------------------
     alias vxace_sp1_erase erase
     def erase
    	vxace_sp1_erase
    	@origin = 0
     end
    end
    
    #------------------------------------------------------------------------------
    class Scene_Battle
     #--------------------------------------------------------------------------
     # ● 魔法反射の発動
     #--------------------------------------------------------------------------
     alias vxace_sp1_invoke_magic_reflection invoke_magic_reflection
     def invoke_magic_reflection(target, item)
    	@subject.magic_reflection = true
    	vxace_sp1_invoke_magic_reflection(target, item)
    	@subject.magic_reflection = false
     end
    end

     

     

    Quindi la patch nel post precedente serve per chi ha una versione japponese senza traduzione di Holy.

    C'è anche la dll aggiornata alla 1.01a che risolve questi problemi:

    • Risolto un bug che tagliava il lato destro di un testo scritto in italic
    • Risolto un bug che non faceva funzionare il sistema di salvataggio/caricamento quando erano inclusi nel nome del file caratteri al di fuori degli ascii codes (caratteri a due byte, katakana) (ndK a noi non ce ne frega nulla)
    • Risolto un bug che dà un TypeError quando si compara l'oggetto con Color, Tone e Rect (non si capisce bene, o.o).

    Di questi secondo me bisognerebbe controllare se l'ultimo è stato risolto nella dll inglese.

     

    AGGIORNAMENTO:

    La patch è stata rilasciata il 16 Marzo 2012, il giorno dopo l'uscita di RPG MAKER VX ACE in inglese,

    Pare che l'unico bug irrisolto nella versione inglese sia quello dell'origine della picture.

  6. Il 301 include qualche fix:

    http://tkool.jp/supp...ace_update.html

     

     

    #==============================================================================
    # ■ VXAce_SP1
    #------------------------------------------------------------------------------
    #  プリセットスクリプトの不具合を修正します。ユーザー定義のスクリプト素材は、
    # 原則としてこのセクションより下に配置してください。
    #==============================================================================
    
    #------------------------------------------------------------------------------
    # 【修正内容】
    #------------------------------------------------------------------------------
    # ●イベントコマンド[ステートの変更]にて、同じステートの付加と解除を同時に実
    #   行した際、二回目以降の付加が失敗する不具合を修正しました。
    # ●イベントコマンド[アニメーションの表示]にて、表示中のアニメーションがマッ
    #   プのスクロールに同期しない不具合を修正しました。
    # ●自動戦闘の行動が正常に選択されない不具合を修正しました。
    # ●装備できなくなった装備品が外れたことにより、さらに別の装備品が装備できなく
    #   なったとき、その装備品が増殖してしまう不具合を修正しました。
    # ●イベントコマンド[ピクチャの消去]を実行した後に余分な負荷がかかる不具合を
    #   修正しました。
    # ●移動ルートのオプション[移動できない場合は飛ばす]にチェックを入れた状態で
    #   トリガー[プレイヤーから接触]のイベントに接触すると、イベントが実行中であ
    #   っても起動予約がされてしまう不具合を修正しました。
    # ●魔法反射されたスキルに対してステート有効度が反映されない不具合を修正しまし
    #  た。
    # ●フォントのデフォルト設定にて太字または斜体を有効にしていても、ステータス画
    #   面を切り替えたとき等に無効な状態に戻ってしまう不具合を修正しました。
    #------------------------------------------------------------------------------
    class Game_Battler
     attr_accessor :magic_reflection
     #--------------------------------------------------------------------------
     # ● 敵対関係の判定
     #--------------------------------------------------------------------------
     alias vxace_sp1_opposite? opposite?
     def opposite?(battler)
    vxace_sp1_opposite?(battler) || battler.magic_reflection
     end
    end
    #------------------------------------------------------------------------------
    class Game_Actor
     #--------------------------------------------------------------------------
     # ● 装備できない装備品を外す
     #	 item_gain : 外した装備品をパーティに戻す
     #--------------------------------------------------------------------------
     alias vxace_sp1_release_unequippable_items release_unequippable_items
     def release_unequippable_items(item_gain = true)
    loop do
      last_equips = equips.dup
      vxace_sp1_release_unequippable_items(item_gain)
      return if equips == last_equips
    end
     end
     #--------------------------------------------------------------------------
     # ● 自動戦闘時の戦闘行動を作成
     #--------------------------------------------------------------------------
     def make_auto_battle_actions
    @actions.size.times do |i|
      @actions[i] = make_action_list.max_by {|action| action.value }
    end
     end
    end
    #------------------------------------------------------------------------------
    class Game_Player
     #--------------------------------------------------------------------------
     # ● マップイベントの起動
     #	 triggers : トリガーの配列
     #	 normal   : プライオリティ[通常キャラと同じ]かそれ以外か
     #--------------------------------------------------------------------------
     alias vxace_sp1_start_map_event start_map_event
     def start_map_event(x, y, triggers, normal)
    return if $game_map.interpreter.running?
    vxace_sp1_start_map_event(x, y, triggers, normal)
     end
    end
    #------------------------------------------------------------------------------
    class Game_Picture
     #--------------------------------------------------------------------------
     # ● ピクチャの消去
     #--------------------------------------------------------------------------
     alias vxace_sp1_erase erase
     def erase
    vxace_sp1_erase
    @origin = 0
     end
    end
    #------------------------------------------------------------------------------
    class Game_Interpreter
     #--------------------------------------------------------------------------
     # ● ステートの変更
     #--------------------------------------------------------------------------
     alias vxace_sp1_command_313 command_313
     def command_313
    vxace_sp1_command_313
    $game_party.clear_results
     end
    end
    #------------------------------------------------------------------------------
    class Sprite_Character
     #--------------------------------------------------------------------------
     # ● 位置の更新
     #--------------------------------------------------------------------------
     alias vxace_sp1_update_position update_position
     def update_position
    move_animation(@character.screen_x - x, @character.screen_y - y)
    vxace_sp1_update_position
     end
     #--------------------------------------------------------------------------
     # ● アニメーションの移動
     #--------------------------------------------------------------------------
     def move_animation(dx, dy)
    if @animation && @animation.position != 3
      @ani_ox += dx
      @ani_oy += dy
      @ani_sprites.each do |sprite|
    	sprite.x += dx
    	sprite.y += dy
      end
    end
     end
    end
    #------------------------------------------------------------------------------
    class Sprite_Picture
     #--------------------------------------------------------------------------
     # ● 転送元ビットマップの更新
     #--------------------------------------------------------------------------
     alias vxace_sp1_update_bitmap update_bitmap
     def update_bitmap
    if @picture.name.empty?
      self.bitmap = nil
    else
      vxace_sp1_update_bitmap
    end
     end
    end
    #------------------------------------------------------------------------------
    class Window_Base
     #--------------------------------------------------------------------------
     # ● フォント設定のリセット
     #--------------------------------------------------------------------------
     alias vxace_sp1_reset_font_settings reset_font_settings
     def reset_font_settings
    vxace_sp1_reset_font_settings
    contents.font.bold = Font.default_bold
    contents.font.italic = Font.default_italic
     end
    end
    #------------------------------------------------------------------------------
    class Scene_Battle
     #--------------------------------------------------------------------------
     # ● 魔法反射の発動
     #--------------------------------------------------------------------------
     alias vxace_sp1_invoke_magic_reflection invoke_magic_reflection
     def invoke_magic_reflection(target, item)
    @subject.magic_reflection = true
    vxace_sp1_invoke_magic_reflection(target, item)
    @subject.magic_reflection = false
     end
    end

  7. Lo script ha diversi imprecisioni/errori:

     

    Il primo è che nel modulo Font ridefinisci la keyword method inserita in ruby 1.9.x (quindi togli funzionalità).

    Font.method(:simbolo) #equivale a invocare il metodo Font.simbolo

    Documentazione

    Ti consiglio quindi di usare un altro nome per metodi e variabili, magari più esplicativi.

     

    Il secondo è che pur avendo messo un alias, non lo chiami! Quindi sovrascrivi il main togliendo funzionalità!

    rgss_main in rpgmaker vx ace rende possibile il reset tramite F12.

    Quindi elimina

    alias main_rgss rgss_main
    def rgss_main
     Graphics.resize_screen(640,480)
     SceneManager.run
    end

    E sostituiscilo con:

    Graphics.resize_screen(640,480)

    Metterlo en plein air è il modo migliore di farlo eseguire all'inizio.

    I

  8. Ci sono tanti modi, =begin/=end è utile per il debug, puoi anche usare la keyword __END__ per segnalare all'interprete di non leggere oltre.

     

    Il testo racchiuso tra due / / è una espressione regolare, in cui star (*) è un quantificatore da 0 a molti.

    Esempio:

    Espressioni regolari

    stringa = "bbbccaaaabc"
    espr = /a+/
    p stringa.scan(espr)
    

     

     

    Commenti

    #==============================================================================
    # ** ABC Class
    #------------------------------------------------------------------------------
    #  This is a super class of blah.
    #  blahablasvsaf
    #  fasfoapf
    #==============================================================================
    
    
    class ABC
     def a
     end
    =begin
     #Da rivedere
     def b
    #do something
     end
    =end
    end
    
    __END__
    Questa linea e le successive non vengono analizzate
    Il tag code del forum sbarella, non ci badare
    
    Cancella queste quattro righe, compreso END, per avviare il testing
    
    
    class Test_ABC
    
    end
    
    a = Test_ABC.new
    

  9. Tutti i metodi tranne il movimento a 8 direzioni potrebbero vivere in un modulo o classe Town senza appesantire Game_Player, dato che accedi alle coordinate tramite $game_player.screen_x, pensaci per una nuova versione :)
×
×
  • Create New...