Ergebnis 1 bis 16 von 16

Thema: Simple Frage: Items rufen zugewiesene Commonevents nicht aus!

  1. #1

    Simple Frage: Items rufen zugewiesene Commonevents nicht aus!

    Hallihallo,
    ich möchte gleich mal ohne Umschweife zum Thema kommen:

    Ich möchte per Item-Shortcut Skript ein Item aufrufen, welches ein Common Event auslöst. (Beispielsweise später für ne Taschenlampe oder so..)

    Nun, das Shortcut-Skript funktioniert soweit, die Items erfüllen soweit ihren Zweck, spielen auch testweise die Target Animations ab und so weiter. Das einzige, was nicht funktioniert ist das Aufrufen eines Common Events. >.<

    Es scheint sich um ein Skriptfehler zu handeln, da das Event beim benutzen des Items über das Menü einwandfrei funktioniert!

    Worauf muss ich eventuell achten?

    Mein Problem müsste nun eigentlich ausreichend geschildert sein. Falls es doch noch Unklarheiten gibt, fragt mich doch bitte.

    Ich hoffe, dass mir recht schnell geholfen wird und bedanke mich schoneinmal im Voraus.

    Chrizzio.

  2. #2
    Du kannst einem Item ein Common Event einfach über die Database zuweisen. Ein Script musst du nicht verwenden. Ich hoffe, das meintest du.

  3. #3
    Ich habe dem Item ja das Common Event über die Database zugewiesen.
    Wenn man das Item nun benutzt soll das Common Event aufgerufen werden, was ja auch (wenn mans übers Menü aufruft) auch funktioniert.

    Ich möchte allerdings das Item mit einem Skript per Taste ausführen. Das funktioniert auch fast gänzlich - mit Ausnahme des Common Events! Das wird, wenn das Item per Shortcut aufgerufen wird einfach ignoriert oder so.

    Man drückt die Taste "B" -> Das Skript sorgt dafür, dass, wenn man "B" drückt das Item "Taschenlampe" benutzt wird -> Das Item Taschenlampe (sofern vorhanden) ruft ein Common Event hervor ...

    So sollte das in der Theorie laufen, in der Praxis sieht dies aber nicht so aus, da der letzte Schritt (das Common Event) nicht ausgeführt wird.

  4. #4
    Kannst du mal den entsprechenden Code vom Script posten?

    Die einfachste Lösung wäre aber wohl nach dem Druck auf B (bei deinem Beispiel) einfach einen Switch für das Common Event einzuschalten. Na gut, ich weiß natürlich nicht was das Common Event machen soll.

  5. #5
    Das Skript hab ich einfach dem RMXP Skript Explorer entnommen.



    Was das Common Event schlussendlich machen soll, behalte ich mir ja noch vor. Ich habe testweise ausprobiert durch das Common Event Bilder anzeigen zu lassen, einen Text auszugeben oder den Bildschirm einzufärben. Das ganze hat wie immer funktioniert, wenn man das Item über das Menü "benutzt" hat.

    Btw.
    Zitat Zitat
    Die einfachste Lösung wäre aber wohl nach dem Druck auf B (bei deinem Beispiel) einfach einen Switch für das Common Event einzuschalten.
    Ja, daran hab ich natürlich als erstes gedacht. Doch, - ja halt mich ruhig für einen Noob, ich bin einer! - wie funktioniert das?

  6. #6
    Zitat Zitat
    Ja, daran hab ich natürlich als erstes gedacht. Doch, - ja halt mich ruhig für einen Noob, ich bin einer! - wie funktioniert das?
    Ah, das haben sie beim XP rausgenommen, sehe ich gerade. Beim 2K konnte man einem Gegenstand einen Switch zuweisen. Dann weiß ich leider auch keinen Rat.

  7. #7
    Schade.

    Nun, aber ich muss ja nicht unbedingt den Umweg über das Item gehen, sondern kann einfach das Common Event durch das drücken der entsprechenden Taste aufrufen. Es wird dann einfach geprüft, ob das Item in der Tasche ist.

    Kann ich (ohne Ruby-Skript) beliebige Tasten etwas bewirken lassen? (Ich mein damit nicht die Standardtasten WSAD, Shift, C und Q (und solche, die ich nun vergessen haben sollte..) ?

  8. #8
    Ja, das geht.
    Du benötigst einen Conitional Branch, der parallel überprüft, ob eine Taste gedrückt wird. Ich empfehle C, weil das den selben Input wie Enter verwendet, also kann man ein Event durch Enter-Druck auslösen lassen.

  9. #9
    chrizzio. möchte aber spezielle Gegenstände über Shortcuts benutzen lassen. Es gibt auf jeden Fall ein Script zum Abfragen der Tastatur. Am besten du schaust mal auf den großen, englischsprachigen XP-Seiten nach (ich kenne die Links leider nicht auswändig).

  10. #10
    Sollte das wirklich das ganze Shortcutscript sein, so kann ich dir ganz genau sagen, warum der Common Event nicht ausgeführt wird.
    Dieses Script führt einfach die item_effect methode auf das Ziel aus, welche sich darum kümmert, dass die entsprechenden Statuswerte des Ziels entsprechend den Itemeinstellungen verändert werden (z.B. HP heilen, Stautswerte erhöhen, usw). Das Abarbeiten von Common Events wird aber nicht von dieser Methode behandelt. Dafür brauchst du die Interpreter Klasse.

  11. #11
    Achso, vielen Dank Burrito!

    Zum Glück verfüge ich über keinerlei Ruby Kenntnisse und kann das Problem nun auch locker beheben...

    :-|

  12. #12
    Du könntest folgendes versuchen. Ist aber in keinster Weise getestet, mach also ein Backup vom funktionierenden Skript.
    Code:
    class Shortcut
      def initialize
        @shortcuts = [[65,1],[83,2]]
        @GetKey = Win32API.new 'user32', 'GetAsyncKeyState', 'l', 'l'
      end
      def update
    
       if $game_system.map_interpreter.running?
         return
       end
    
       if @wait == nil
        for i in 0...@shortcuts.size
        @item = $data_items[@shortcuts[i][1]]
         if @GetKey.call(@shortcuts[i][0]) != 0 and
         $game_party.item_number(@item.id) > 0 and
         $game_party.actors[0].item_effect(@item) == true and
         $game_party.item_can_use?(@item.id) == true
           $game_system.se_play(@item.menu_se)
           $game_party.lose_item(@item.id, 1)
           $game_player.animation_id = @item.animation2_id
           common_event_id = @item.common_event_id
           if common_event_id > 0
             common_event = $data_common_events[@common_event_id]
             $game_system.map_interpreter.setup(common_event.list, 0)
           else
             @wait = 30
           end
         end
       end
      else @wait = @wait > 0 ? @wait - 1 : nil end
     end
    end

  13. #13
    Okay, ich habs nun mit deinem Skript ausprobiert.
    Leider scheint es immer noch nicht zu funktionieren.

    Geändert von chrizzio. (12.10.2007 um 16:02 Uhr)

  14. #14
    Da steht, dass bei Scene_Map in Zeile 60 ein Fehler auftritt.
    Ohne zu wissen was in dieser Zeile (und vielleicht noch in den umliegenden) steht kann man dir da nur schwer helfen (da sich durch evtl. Modifikationen deine Scene_Map von den anderen unterscheiden kann).

  15. #15
    Ja, die Fehlermeldung hab ich selber behoben (war von einer anderen Modifikation, die ich nun aber samt der Zeile 60 rausgeworfen hab.)

    Ich hab die Meldung auch 2 Minuten vor deinem Post aus meinem vorherigen Post rauseditiert. .. Guck doch noch einmal meinen letzten Post an.

  16. #16
    funktionierts vielleicht wenn du in dem script was ausgeführt wird wenn du die taste drückst das hier noch einfügst?

    Zitat Zitat
    $game_temp.common_event_id = 1
    Das hab ich von jemanden bekommen. Damit rufe ich common events auf. Ich hab den Befehl allerdings in einem Event mit dem Befehl "Script aufrufen" in verwendung.
    Ich bin noch nich sehr gut informiert in Ruby aber soweit ich das logisch nachvollziehn kann sollte das funktionieren.
    Die "1" ist dabei die ID des Common Events. Ach ja, und beim Common-Event ist die Startvorraussetzung auf nichts gestellt, also weder "parallel" noch "Auto Start".
    Ich hoffe ich konnte helfen.

    Ich poste hier mal dein Script mit dem eintrag von mir.
    Hab das nicht getestet aber ich denke das funkt.
    Was ich verändert habe ist blau:

    Zitat Zitat
    #=======Item Shortcut Skript=======#
    #===========by Monsta==========#
    #=====Version 1.0=== 30.7.2006 ===#
    #=======www.Monsta.aw3.de======#

    class Shortcut
    def initialize
    @shortcuts = [[65,1],[83,2]]
    @GetKey = Win32API.new 'user32', 'GetAsyncKeyState', 'l', 'l'
    end
    def update
    if @wait == nil
    for i in 0...@shortcuts.size
    @item = $data_items[@shortcuts[i][1]]
    if @GetKey.call(@shortcuts[i][0]) != 0 and
    $game_party.item_number(@item.id) > 0 and
    $game_party.actors[0].item_effect(@item) == true and
    $game_party.item_can_use?(@item.id) == true
    $game_system.se_play(@item.menu_se)
    $game_party.lose_item(@item.id, 1)
    $game_player.animation_id = @item.animation2_id
    $game_temp.common_event_id = 1
    @wait = 30
    end
    end
    else @wait = @wait > 0 ? @wait - 1 : nil end
    end
    end

    class Scene_Title
    def initialize
    $shortcut = Shortcut.new
    end
    end

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •