• Anmelden

Vortex Lord

Ankömmling

  • »Vortex Lord« ist der Autor dieses Themas

Motto: El psy congroo! Tempus edax rerum

  • Nachricht senden

1

Dienstag, 25. Juni 2013, 12:24

Suche ein - Actor bezogenes Anzeigen von Equipment script

Guten Tag Ladies and Gentleman,

Ich hänge mal wieder an so'ner Sache und komme ohne Hilfe leider nich groß weiter <.<
Ich möchte mein Hud entsprechend erweitern, und bekomms mit den bitmaps nich gebacken.


Ich suche ein Script welches die 5 aktuell ausgerüsteten Icons (Waffenicon bis hin zum Acessoireicon) von
Actor A und gegebenfalls auch von Actor B >gleichzeitig< auf einer beliebigen Position anzeigt.

Maximal 10 einstellbare X,Y positionen - 5 für jeden Actor.
Sowie ein Switch um Actor A Display zu aktivieren und ein Switch um Actor B Display zu aktivieren.


Kennt hier vielleicht jemand ein passendes Script ?
ich danke schonmal im vorraus!

Voudisteppi2

Ankömmling

Motto: Ich lass es mal sein mit dem Motto.. In mehreren Jahren guck ich hier drauf und denke, wie naiv ich doch früher gewesen bin... Edit: Mein Gott, bin ich naiv gewesen!

  • Nachricht senden

2

Freitag, 28. Juni 2013, 16:42

Das folgende Skript müsste dein Problem lösen:

Spoiler

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
class Spriteset_Map
  alias initialize_i initialize
  alias dispose_i dispose
  alias update_i update
  def initialize
    initialize_i
    #--------------------------------------------------------
 
    # Hier bitte die Werte nach Wunsch konfigurieren:
    @manuell = 1
    @spiegeln = 0 # Setze auf 1, um zuerst den letzten Charakter zu laden
    @anzahl = 4 # Anzahl der Charaktere, dessen Equip angezeigt werden sollen (kann ruhig 4 bleiben, gilt nur als absolute Drosselung)
    @a = 2 #Switchnummern fuer die Charaktere
    @b = 3
    @c = 4
    @d = 5
 
    # Wichtig: falls @manuell auf 0 gesetzt ist, wird die folgende Variable nicht beachtet
    @koordinaten = [
                    [[0,0],[0,32],[0,64],[0,96],[0,128]], # Pro Kaestchen X, Y-Koordinaten nach folgendem Schema: Waffe-Schild-Helm-Ruestung-Ring
                    [[32,0],[32,32],[32,64],[32,96],[32,128]], # Falls es weniger als 4 Charaktere sind, wird der Rest nicht beachtet  
                    [[64,0],[64,32],[64,64],[64,96],[64,128]],
                    [[96,0],[96,32],[96,64],[96,96],[96,128]]
                    ]
 
    # Wichtig: falls @manuell auf 1 gesetzt ist, werden alle kommenden Variablen nicht beachtet
      @x = 200 # X-Koordinate des ersten Icons
      @y = 200 # Y-Koordinate des ersten Icons
 
      # Keine negativen Werte!
      @xAbstand = 10 # Breitenabstand der Icons zueinander, minimum 24, um ueberlappen zu verhindern
      @yAbstand = 24 # Hoehenabstand der Icons zueinander
 
      # Keine negativen Werte! Dafuer @spiegeln auf 1 setzen!
      @xLAbstand = 32 # Charakterleistenabstand (Breite) zueinander
      @yLAbstand = 0 # Charakterleistenabstand (Hoehe) zueinander
    #--------------------------------------------------------
    @switches = [$game_switches[@a], $game_switches[@b], $game_switches[@c], $game_switches[@d]]
    makeBitmap
    @sprite_i = Sprite.new
    @sprite_i.bitmap = @bitmap
    if @manuell ==1
      @sprite_i.x = 0
      @sprite_i.y = 0
    else
      @sprite_i.x = @x
      @sprite_i.y = @y
    end
    @sprite_i.z = 750
  end
 
  def makeBitmap
      if @manuell == 1
       @bitmap = Bitmap.new(640,480)
      else
       @bitmap = Bitmap.new(((@xAbstand*4)+24)+(@anzahl*@xLAbstand), ((@yAbstand*4)+24)+(@anzahl*@yLAbstand))
     end
     k = 0
     for j in 0..@anzahl-1
      i = 0
      while @switches[k] == false && k < 4
        k = k + 1
      end
      if $game_party.actors[(k - (3*@spiegeln)).abs] != nil
      if $game_party.actors[(k - (3*@spiegeln)).abs].weapon_id != 0
        icon = $data_weapons[$game_party.actors[(k - (3*@spiegeln)).abs].weapon_id].icon_name
        if @manuell == 1
          @bitmap.blt(@koordinaten[k][i][0],@koordinaten[k][i][1], RPG::Cache.icon(icon), Rect.new(0, 0, 24, 24))
        else
          @bitmap.blt((i*@xAbstand)+(j*@xLAbstand), (i*@yAbstand)+(j*@yLAbstand), RPG::Cache.icon(icon), Rect.new(0, 0, 24, 24))
        end
      end
      for i in 1..4
        case i
        when 1
          next if $game_party.actors[(k - (3*@spiegeln)).abs].armor1_id == 0
          icon = $data_armors[$game_party.actors[(k - (3*@spiegeln)).abs].armor1_id].icon_name
        when 2
          next if $game_party.actors[(k - (3*@spiegeln)).abs].armor2_id == 0
          icon = $data_armors[$game_party.actors[(k - (3*@spiegeln)).abs].armor2_id].icon_name
        when 3
          next if $game_party.actors[(k - (3*@spiegeln)).abs].armor3_id == 0
          icon = $data_armors[$game_party.actors[(k - (3*@spiegeln)).abs].armor3_id].icon_name
        when 4
          next if $game_party.actors[(k - (3*@spiegeln)).abs].armor4_id == 0
          icon = $data_armors[$game_party.actors[(k - (3*@spiegeln)).abs].armor4_id].icon_name
        end
        if @manuell == 1
          @bitmap.blt(@koordinaten[k][i][0],@koordinaten[k][i][1], RPG::Cache.icon(icon), Rect.new(0, 0, 24, 24))
        else
          @bitmap.blt((i*@xAbstand)+(j*@xLAbstand), (i*@yAbstand)+(j*@yLAbstand), RPG::Cache.icon(icon), Rect.new(0, 0, 24, 24))
        end
      end
      k = k + 1
      end
    end
  end
 
  def dispose
    dispose_i
    @sprite_i.dispose
  end
 
  def update
    update_i
    if @sprite_i != nil
      if @switches[0] != $game_switches[@a] || @switches[1] != $game_switches[@b] || @switches[2] != $game_switches[@c] || @switches[3] != $game_switches[@d]
        @switches = [$game_switches[@a], $game_switches[@b], $game_switches[@c], $game_switches[@d]]
        makeBitmap
        @sprite_i.bitmap = @bitmap
      end
    end
  end
end
zum Lesen den Text mit der Maus markieren


Einfach irgendwo über Main einfügen, Hauptsache unter Spriteset_Map.

Ich hab noch spaßeshalber neben der Koordinateneingabe eine "schnellere", aber auch "beschränktere" Eingabemethode entwickelt (setze @manuell auf 0).
Dies erlaubt es dir mit gerade mal 6 Variablen etwas ordentliches hinzuklatschen, es kann gut nerven jede Koordinate einzeln einzugeben. :thumbsup:

Edit: Mir fällt gerade auf, dass du noch Switches haben wolltest :-| ... bis ich mich (irgendwann) dazu bewege, das zu ändern, empfehle ich dir, den restlichen, nicht brauchbaren Icons eine negative Koordinate zu geben :pardon:

HexaEdit: Ok nun können auch einzelne Chars ausgeblendet werden. :WinkeWinke:

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Voudisteppi2« (29. Juni 2013, 13:31)


Vortex Lord

Ankömmling

  • »Vortex Lord« ist der Autor dieses Themas

Motto: El psy congroo! Tempus edax rerum

  • Nachricht senden

3

Samstag, 29. Juni 2013, 11:06

Perfekt, genau so wie ich es mir vorgestellt habe :rolleyes:

Vielen vielen Dank! :thumbsup:

Voudisteppi2

Ankömmling

Motto: Ich lass es mal sein mit dem Motto.. In mehreren Jahren guck ich hier drauf und denke, wie naiv ich doch früher gewesen bin... Edit: Mein Gott, bin ich naiv gewesen!

  • Nachricht senden

4

Samstag, 29. Juni 2013, 13:33

Ich habe es nochmals überarbeitet.
Mir ist aufgefallen, dass die Icons sich nicht in "Realtime" aktualisieren können.
D.h. du kannst jetzt einfach durch das Ändern eines Switches per Event eine Leiste sofort ausblenden, falls du z.B. den Fokus während eines AKS-Kampfes auf einen anderen Charakter verschieben willst.

Social Bookmarks