Ergebnis 1 bis 16 von 16

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

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Du kannst einem Item ein Common Event einfach über die Database zuweisen. Ein Script musst du nicht verwenden. Ich hoffe, das meintest du.

  2. #2
    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.

  3. #3
    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.

  4. #4
    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?

  5. #5
    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.

  6. #6
    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..) ?

  7. #7
    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.

  8. #8
    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).

  9. #9
    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.

  10. #10
    Achso, vielen Dank Burrito!

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

    :-|

  11. #11
    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

  12. #12
    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)

Berechtigungen

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