Jump to content
Rpg²S Forum

Ferduk444

Utenti
  • Posts

    12
  • Joined

  • Last visited

Posts posted by Ferduk444

  1. Ho risolto alla maniera di Sylaer, però in una maniera più complicata: ho creato una nuova funzione "def animazioni" è ho utilizzato il comando return in quella così da non far "rileggere" l'intero def update. Così funziona... Quello tuo purtroppo mi sono accorto che lo avevi postato, troppo tardi quindi non l'ho provato... Grazie comunque. :sisi:
  2. Fidati che non è quello il problema... Comunque penso che fino alla fine creerò un'animazione con il chara del pg che attacca e userò quello senza complicarmi la vita ulterirmente. Sarà faticoso convertire il character in animazione, xò penso sia la soluzione migliore... Sempre che qualcuno non abbia un'illuminazione e mi dia IL consiglio xD
  3. Niente da fare... :biggrin: Però questo mi ha aiutato a capire qual è il vero problema: la grafica viene aggiornata una sola volta alla fine della funzione "def update", non man mano che viene "letta" dal programma. Infatti utilizzando il comando "return", funzionava ma poi, dato che non continuava a leggere quello che stava scritto dopo, non tornava la graphics originale del personaggio. L'ultima idea che ho avuto è stata quella di creare una funzione "def wait(frame)" simile a quella dello script di Alato della scena PreTitle e funziona solo per il comando "@pattern", ovvero cambia la posizione del pg, ma la grafica rimane quella originale...

    Non ho più idee dopo questo. Ma gli altri BS in tempo reale come cacchio funzionano? Quello XAS Hero so come funziona e, non volendo impazzire, non ho intenzione di studiarmelo; altri che ho visto non ho ben capito come funzionino realmente. Sto procedendo bene nella classe Game_Player, giusto?

    So che ti sto istigando a mandarmi a quel paese quindi ti ringrazio di non averlo ancora fatto xD

  4. Non funziona: il problema non è che non cambia la grafica, ma è che non ha il tempo di far vedere il primo cambiamento prima che si verifichi il secondo... :( sto impazzeno. Comunque avevo già provato col comando refresh quando non avevo capito quale fosse il problema. Ti ringrazio ancora ma nanche questo va, purtroppo. Qualche altra idea?

     

    Visto che sono in vena di imparare, a che serve il comando "break"?

  5. Ma lo script che ho postato non contiene errori, giusto? Quindi non capisco perché non funzioni... Quando premo il tasto "L", che come avrete capito è quello che serve ad attaccare, mi cambia la posizione del personaggio (il comando "@pattern = 1"), ma la grafica, che dovrebbe diventare quella del pg cn la spada in mano, riamne quella di Arshes normale. Penso sia dovuto appunto al fatto che manca quel frame di diferenza che separi il primo cambio di chara dal secondo... Le ho provate tutte... Visto che l'ho postato lo script, puoi provare tu a farlo funzionare in un tuo progetto? usando al posto di "001-Fighter01_spada1" magari "002-Fighter02" senza postare immagini che mi scazza. Te lo chiedo come favore perché sono un poveraccio e non ho neanche un rens xD. Ti ringrazio in anticipo e anche dell'aiuto dato fino ad adesso. :sisi:
  6. Non funziona: forse bisogna mettere quei comandi in delle stringhe particolari? O magari non vanno bene per la classe in cui sto laorando (Game_Player)?

     

    Questo è quello che ho fatto:

     

    class Game_Player < Game_Character
     alias update_animation update
     def update
       if $game_switches[sWITCHES_MIE::TASTIERA] == true
         if Input.trigger?(Input::L)
           if $game_party.actors[0].weapon_id == 1
             Audio.se_play("Audio/SE/094-Attack06", 100, 100)
             @character_name = "001-Fighter01_spada1"
             @pattern = 1
             for i in 1...1
               Graphics.update
             end
             @character_name = "001-Fighter01"
             @direction_fix = false
             @original_pattern = 0
           end
         end
       end unless $game_system.map_interpreter.running?
       update_animation
     end
    end
    

  7. Ho provato e, dopo tanti disperati tentativi, non ne sono veniuto a capo: facendo come dice Sylaer, funziona, ma ho pensato che se il comanodo "return" fa ricaricare la funzione update da capo, se il "@wait_count = 1" viene richiamato se viene premuto un tasto (es: if Input.trigger?(Input::L)), una volta ricaricata la funzione update bisognerà ripremere il tasto. Non so se sono stato chiaro, quindi posto qui giù la parte di script interessata. (non è l'intero script, è solo la funzione "def update" nella classe "Game_Player")

     

    C'è un altro modo per far attendere 1 frame prima di proseguire? Per favore ditemi di si :sisi:

     

     

    if @wait_count > 0

    @wait_count -= 1

    return

    end

    if Input.trigger?(Input::L)

    if $game_party.actors[0].weapon_id == 1

    Audio.se_play("Audio/SE/094-Attack06", 100, 100)

    @character_name = "001-Fighter01_spada1"

    end

    @pattern = 0

    @wait_count = 1

    @pattern = 1

    @wait_count = 1

    @pattern = 2

    @wait_count = 1

    @pattern = 3

    @wait_count = 1

    @character_name = "001-Fighter01"

    @direction_fix = false

    @original_pattern = 0

    end

     

  8. Ciao a tutti!

    Mi potete dire come fare per visualizzare in una scena simile ad item solo un tipo di oggetti

    ad esempio accessory e non visualizzarla in Scene_Item?

    La scena la ho già creata mi servirebbe solo la stringa giusta per quella funzione.

    Grazie in anticipo :smile:

     

     

    class Scene_Documenti

    #===============================================

    def main

    @background = Sprite.new

    @background.bitmap = RPG::Cache.picture ("Documenti")

    @background.z = 1

    @spritesetmap = Spriteset_Map.new

    @documenti_window = Window_Documenti.new

    @background1 = Sprite.new

    @background1.bitmap = RPG::Cache.picture ("Bestiario_XP")

    @background1.z = @background.z + 1000

    @doc_window = Window_Doc.new

    @doc_window.active = false

    @doc_window.visible = false

    @background1.visible = false

    Graphics.transition

    loop do

    Graphics.update

    Input.update

    update

    if $scene != self

    break

    end

    end

    Graphics.freeze

    @background.dispose

    @spritesetmap.dispose

    @documenti_window.dispose

    @doc_window.dispose

    end

    #===============================================

    def update

    @documenti_window.update

    @doc_window.update

    if @documenti_window.active

    update_documenti

    return

    end

    if @doc_window.active

    update_doc

    return

    end

    end

    #===============================================

    def update_documenti

    if Input.trigger?(Input::B)

    $game_system.se_play($data_system.cancel_se)

    $scene = Scene_Menu.new(3)

    return

    end

    if Input.trigger?(Input::C)

    @item = @documenti_window.item

    unless @item.is_a?(RPG::Item)

    $game_system.se_play($data_system.buzzer_se)

    return

    end

    unless $game_party.item_can_use?(@item.id)

    $game_system.se_play($data_system.buzzer_se)

    return

    end

    $game_system.se_play($data_system.decision_se)

    if @item.scope = 7

    @documenti_window.active = false

    @doc_window.x = 160

    @doc_window.y = 175

    @background1.visible = true

    @doc_window.visible = true

    @doc_window.active = true

    if @item.scope == 4 || @item.scope == 6

    @doc_window.index = -1

    else

    @doc_window.index = 0

    end

    else

    if @item.common_event_id > 0

    $game_temp.common_event_id = @item.common_event_id

    $game_system.se_play(@item.menu_se)

    $scene = Scene_Documenti.new

    return

    end

    end

    return

    end

    end

    #============================================================

    def update_doc

    if Input.trigger?(Input::B)

    $game_system.se_play($data_system.cancel_se)

    unless $game_party.item_can_use?(@item.id)

    @documenti_window.refresh

    end

    @documenti_window.active = true

    @doc_window.visible = false

    @doc_window.active = false

    @background1.visible = false

    return

    end

    if Input.trigger?(Input::C)

    if $game_party.item_number(@item.id) == 0

    $game_system.se_play($data_system.buzzer_se)

    return

    end

    if @doc_window.index == -1

    used = false

    for i in $game_party.actors

    used |= i.item_effect(@item)

    end

    end

    if @target_window.index >= 0

    target = $game_party.actors[0]#[@doc_window.index]

    used = target.item_effect(@item)

    end

    if used

    $game_system.se_play(@item.menu_se)

    if @item.consumable

    $game_party.lose_item(@item.id, 1)

    @documenti_window.draw_item(@documenti_window.index)

    end

    @doc_window.refresh

    if $game_party.all_dead?

    $scene = Scene_Gameover.new

    return

    end

    if @item.common_event_id > 0

    $game_temp.common_event_id = @item.common_event_id

    $scene = Scene_Documenti.new

    return

    end

    end

    unless used

    $game_system.se_play($data_system.buzzer_se)

    end

    return

    end

    end

    end

     

     

    P.S.

    le finestre le ho già create

×
×
  • Create New...