• Anmelden

Kardor

Knappe

  • »Kardor« ist der Autor dieses Themas

Motto: RTP? - Frontview KS? ich finds gut ^^

  • Nachricht senden

1

Dienstag, 11. August 2009, 15:51

[Suche] Party change Script

Hi trotz durchforsten der Suchanfragen hab ich leider nichts passendes gefunden,
oder es schlichtweg übersehen, falls dem so ist tut mir das sehr leid.

Ich suche derzeit ein Script zum austauschen von Partymitgliedern ich habe bereits versucht das über events zu lösen was mir aber nicht gelungen ist.
Da ich Ruby auf keinem Auge peil, dachte ich mir ich stelle hier mal ne Anfrage rein.

Das Script sollte folgende Dinge ermöglichen bzw. verweigern:

-> Austausch des Hauptcharakters nicht möglich
-> Max. 3 Charaktere
-> Zugang über das Ingame Menü (Gegenstände, Speichern usw.)
-> Einfaches Hinzufügen von neuen Auswahlmöglichkeiten
-> Einfaches Handling (keine Rubykentnisse vorhanden)

Wenn jemand weiss wo ich sowas bekomme wäre ich sehr dankbar für die Info.
In Entwicklung: Conjurer - Shadows of the Past
Vorstellung Conjurer
Meinungen und konstruktive Kritik sind immer erwünscht.

Wer bin ich? Und wenn ja wie viele?

Ich kann nicht viel zum Dank anbieten, ausser meiner ehrlichen Meinung
und meiner Zeit zB. als Tester.

manni1238

Schlitzohr

Motto: Headshot! Voll ins Knie!!!

  • Nachricht senden

2

Dienstag, 11. August 2009, 15:55

also soll das sonn skript sein, mit dem man über das menü die position von charakteren in der gruppe austauschen kann?

Kardor

Knappe

  • »Kardor« ist der Autor dieses Themas

Motto: RTP? - Frontview KS? ich finds gut ^^

  • Nachricht senden

3

Dienstag, 11. August 2009, 16:38

Ehm nein,
in meinem Spiel werde ich 8 Charaktere haben, davon werden aber nur jeweils 3 in der Party sein,
um jetzt die Party zu ändern zB weil man den Heiler mitnehmen möchte, bräuchte ich ein Script mit dem man das im Menü bewerkstelligen kann.
Also den Austausch von Chars.
In Entwicklung: Conjurer - Shadows of the Past
Vorstellung Conjurer
Meinungen und konstruktive Kritik sind immer erwünscht.

Wer bin ich? Und wenn ja wie viele?

Ich kann nicht viel zum Dank anbieten, ausser meiner ehrlichen Meinung
und meiner Zeit zB. als Tester.

4

Dienstag, 11. August 2009, 16:46

Schau mal hier: Teamwechsel
Da steht im ersten Beitrag das Script. Damit der Hauptcharakter nicht ausgetauscht werden kann, solltest du den Rest des Themas lesen.
Für den Zugang übers Menü gibt es ein Tutorial um einen Menüpunkt zu ergänzen, oder du liest dieses Thema hier.
Ich hoffe das hilft dir :)

Kardor

Knappe

  • »Kardor« ist der Autor dieses Themas

Motto: RTP? - Frontview KS? ich finds gut ^^

  • Nachricht senden

5

Dienstag, 11. August 2009, 17:11

Helfen tut mir das schon aber ich check nicht wie das mit den zusätzlichen einträgen gemeint ist.
Muss ich das zusätzlich in die Zeile eintragen, oder muss ich das was da normalerweise steht eins nach unten verschieben, oder muss ich es überschreiben?

Ich hab 0% Verständniss von Ruby sowas geht einfach über meine Fähigkeiten raus^^
Naja das mit dem Party Button hat soweit mal geklappt wobei ich div. Syntax Errors hatte... hab einfach mal fröhlich einträge gelöscht oder neu geschrieben.
Kommt kein Error mehr und es stürzt nicht ab in so fern...

Das nächste ist wie verbinde ich das Party script dann mit dem Menü punkt?
In Entwicklung: Conjurer - Shadows of the Past
Vorstellung Conjurer
Meinungen und konstruktive Kritik sind immer erwünscht.

Wer bin ich? Und wenn ja wie viele?

Ich kann nicht viel zum Dank anbieten, ausser meiner ehrlichen Meinung
und meiner Zeit zB. als Tester.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Kardor« (11. August 2009, 17:26)


6

Dienstag, 11. August 2009, 17:51

Nun, wenn da steht einfügen in diese Zeile, dann ist gemeint, in die Zeile gehen, das was da steht durch drücken der Enter-Taste eine Zeile tiefer setzen und in den Freiraum dann das schreiben was angegebn ist.
Zum Menüpunkt, in Scene_Menu gibt es die Methode 'update_command' dort in Zeile 123 etwa beginnt die Abfrage welcher Befehl ausgewählt wurde, es geht nach dem Index. Je nachdem an welche Stelle du deinen neuen Menüpunkt eingefügt hast, musst du das ändern, ich hoffe du verstehst was ich meine.
Die Abfrage lautet:

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
case @command_window.index
when 0
  #was passiert wenn der erste Befehl ausgewählt wurde
when 1
  #was passiert wenn der zweite Befehl ausgewählt wurde
when 2
  #was passiert wenn der dritte Befehl ausgewählt wurde
when 3
  #was passiert wenn der vierte Befehl ausgewählt wurde
when 4
  #was passiert wenn der fünfte Befehl ausgewählt wurde
# ...
end

Du fügst dann bei dem entsprechenden Index den Befehl ein um die Scene zu wechseln:

Ruby Quellcode

1
2
3
4
# Auswahl SE abspielen (optional)
$game_system.se_play($data_system.decision_se)
# Scene wechseln zu Scene_Party
$scene = Scene_Party.new
und es sollte gehen.

Kardor

Knappe

  • »Kardor« ist der Autor dieses Themas

Motto: RTP? - Frontview KS? ich finds gut ^^

  • Nachricht senden

7

Dienstag, 11. August 2009, 18:48

Hmm okay habs jetzt mal eingebaut.
Allerdings bekomme ich bei dem Party Script einen Syntax Fehler in Zeile 267 und 266 (wenn ich 267 entferne).

Spoiler

Ruby 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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
#//////////////////////////////////////////Teamwechsel//////////////////////////////////////
#~~~~~~~~~~~~~~~~~~~~by Caesar~~~~~~~~~~~~~~~~~
#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
class Scene_Party
  def main
    @left = $game_party.actors.collect { |actor| actor.id}
    @right = $game_temp.selectable_actors - $game_party.actors.collect{|i| i.id}
    @window_actor = Window_ActorInfo.new
    @help_window = Window_Help.new
    @help_window.set_text(remove_actor_text, 1)
    @window_left = Window_Command.new(320, @left.collect{
        |i| $data_actors[i].name})
    @window_left.y = 64
    @window_left.height = 268
    @window_right = Window_Command.new(320, @right.collect{
        |i| $data_actors[i].name})
    @window_right.x = 320
    @window_right.y = 64
    @window_right.height = 268
    set_inactive(@window_right)
    @old_index = -1
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      break unless $scene == self
    end
    Graphics.freeze
    @window_actor.dispose
    @help_window.dispose
    @window_left.dispose
    @window_right.dispose
  end
  #---------------
  def update
    @window_actor.update
    @help_window.update
    @window_left.update
    @window_right.update
    #::::::::::::::
    if Input.trigger?(Input::B)
      if @left.size <= 0
        $game_system.se_play($data_system.buzzer_se)
        @help_window.set_text(no_actors_text, 1)
      elsif @left.size > 4
        $game_system.se_play($data_system.buzzer_se)
        @help_window.set_text(too_many_actors_text, 1)
      else
        $game_party.actors.clear
        @left.each {|i| $game_party.add_actor(i)}
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Map.new
      end
    end
    #:::::::::::::::::
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      if @window_left.active
        unless @window_left.index == 0 then
        @right.push(@left.delete_at(@window_left.index))
        @old_index = -1
        if @left.size <= 0
          @help_window.set_text(remove_actor_text, 1)
          set_inactive(@window_left)
          set_active(@window_right)
        end
      end
      else
        @left.push(@right.delete_at(@window_right.index))
        @old_index = -1
        if @right.size <= 0
          @help_window.set_text(add_actor_text, 1)
          set_inactive(@window_right)
          set_active(@window_left)
        end
      end
      @window_left.commands = @left.collect{|i| $data_actors[i].name}
      @window_right.commands = @right.collect{|i| $data_actors[i].name}
    end
    #::::::::::::::::::
    if Input.trigger?(Input::LEFT) and @window_right.active
      if @left.size > 0
        @old_index = -1
        @help_window.set_text(remove_actor_text, 1)
        $game_system.se_play($data_system.cursor_se)
        set_inactive(@window_right)
        set_active(@window_left)
      else
        $game_system.se_play($data_system.buzzer_se)
      end
    end
    #:::::::::::::::::
    if Input.trigger?(Input::RIGHT) and @window_left.active
      if @right.size > 0
        @old_index = -1
        @help_window.set_text(add_actor_text, 1)
        $game_system.se_play($data_system.cursor_se)
        set_inactive(@window_left)
        set_active(@window_right)
      else
        $game_system.se_play($data_system.buzzer_se)
      end
    end
    #::::::::::::::::::
    if Input.repeat?(Input::L) and @window_left.active
      unless @window_left.index == 1 then
      @left.swap_up!(@window_left.index)
      @window_left.swap_up
    end
    #::::::::::::::::::
    if Input.repeat?(Input::R) and @window_left.active
      @left.swap_down!(@window_left.index)
      unless @window_left.index == 0 then
      @window_left.swap_down
    end
  end
  #::::::::::::::::::
    index = @window_left.active ? @window_left.index : @window_right.index
    if index != @old_index
      @old_index = index
      update_actor_info
    end
  end
  #--------------------
  def update_actor_info
    if @window_left.active
      index = @window_left.index
      @window_actor.actor = $game_actors[@left[index]] if index != -1
    else
      index = @window_right.index
      @window_actor.actor = $game_actors[@right[index]] if index != -1
    end
  end
  #--------------------
  def set_active(window)
    window.active = true
    window.opacity = 255
    window.contents_opacity = 255
  end
  #--------------------
  def set_inactive(window)
    window.active = false
    window.opacity = 160
    window.contents_opacity = 160
  end
  #--------------------
  def add_actor_text
    "Helden dem Team hinzufügen"
  end
  #--------------------
  def remove_actor_text
    "Helden aus dem Team entfernen"
  end
  #--------------------
  def too_many_actors_text
    "Es sind zu viele Helden im Team!"
  end
  #--------------------
  def no_actors_text
    "Im Team muss sich mindestens ein Held befinden!"
  end
end
#==================
class Window_ActorInfo < Window_Base
  attr_reader :actor
  #----------------
  def initialize(actor=nil)
    super(0, 332, 640, 148)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  #-----------------
  def refresh
    self.contents.clear
    return if @actor.nil?
    x = 140
    draw_actor_graphic(@actor, x - 40, 80)
    draw_actor_name(@actor, x, 0)
    draw_actor_class(@actor, x + 144, 0)
    draw_actor_level(@actor, x, 32)
    draw_actor_state(@actor, x + 90, 32)
    draw_actor_exp(@actor, x, 64)
    draw_actor_hp(@actor, x + 236, 32)
    draw_actor_sp(@actor, x + 236, 64)
  end
  #-----------------
  def actor=(actor)
    @actor = actor
    refresh
  end
end
#=========================
class Window_Command < Window_Selectable
  attr_reader :commands
  #--------------
  def commands=(commands)
    if commands.size != @commands.size
      @item_max = commands.size
      self.contents = Bitmap.new(width - 32, @item_max * 32) if @item_max > 0
      @index -= 1 if @index >= @item_max
      @index = 0 if @item_max == 1
    end
    @commands = commands
    refresh
  end
  #---------------
  def swap_up
    $game_system.se_play($data_system.cursor_se)
    @commands = @commands.swap_up(@index)
    if @index > 0
      @index -= 1
      refresh
    end
  end
  #-----------------
  def swap_down
    $game_system.se_play($data_system.cursor_se)
    @commands = @commands.swap_down(@index)
    if @index < @commands.size-1
      @index += 1
      refresh
    end
  end
end
#========================
class Array
  def swap_up(index)
    arr = dup
    return arr unless index > 0
    arr[index] = self[index-1]
    arr[index-1] = self[index]
    return arr
  end
  #------------------
  def swap_down(index)
    arr = dup
    return arr unless index < size-1
    arr[index] = self[index+1]
    arr[index+1] = self[index]
    return arr
  end
  #----------------
  def swap_up!(index)
    return unless index > 0
    temp = self[index]
    self[index] = self[index-1]
    self[index-1] = temp
  end
  #----------------
  def swap_down!(index)
    return unless index < size-1
    temp = self[index]
    self[index] = self[index+1]
    self[index+1] = temp
  end
end
#========================
class Game_Temp
  attr_accessor :selectable_actors
  #--------------
  alias actors_init initialize
  def initialize
    actors_init
    @selectable_actors = (1...$data_actors.size).to_a
  end
end
zum Lesen den Text mit der Maus markieren


Ka. Was da los ist. Sorry wegen der Umstände.
In Entwicklung: Conjurer - Shadows of the Past
Vorstellung Conjurer
Meinungen und konstruktive Kritik sind immer erwünscht.

Wer bin ich? Und wenn ja wie viele?

Ich kann nicht viel zum Dank anbieten, ausser meiner ehrlichen Meinung
und meiner Zeit zB. als Tester.

8

Dienstag, 11. August 2009, 20:44

Als du die Veränderungen vornamst damit Mitglied#1 nicht gewechselt werden kann, hast du da auch die 'end's in die angegebenen Zeilen gesetzt?
Ich denke da liegt der Fehler, weil im Code von dir scheinen diese zu fehlen soweit ich sehe.
Beispiel:

Ruby Quellcode

105
106
107
108
109
110
111
    #::::::::::::::::::
    if Input.repeat?(Input::L) and @window_left.active
      unless @window_left.index == 1 then
       @left.swap_up!(@window_left.index)
       @window_left.swap_up
      end # <- das fehlt bei dir
    end
Überprüf mal die Zeilen 105 bis 118

Kardor

Knappe

  • »Kardor« ist der Autor dieses Themas

Motto: RTP? - Frontview KS? ich finds gut ^^

  • Nachricht senden

9

Dienstag, 11. August 2009, 20:54

Ahh okay das hat tatsächlich an einer Stelle gefehlt.
Danke dir.
Die andere Sache ist, wenn ich das Party Menü öffne zeigt er mir alle Charaktere die in der DB sind
und ich kann 4 Personen mitnehmen anstatt nur dreien.

Wie kann man da was machen?

Besten Dank im Voraus.
In Entwicklung: Conjurer - Shadows of the Past
Vorstellung Conjurer
Meinungen und konstruktive Kritik sind immer erwünscht.

Wer bin ich? Und wenn ja wie viele?

Ich kann nicht viel zum Dank anbieten, ausser meiner ehrlichen Meinung
und meiner Zeit zB. als Tester.

10

Dienstag, 11. August 2009, 21:03

Geh mal in Zeile 46 etwa. Dort müsste stehen

Ruby Quellcode

1
elsif @left.size > 4
Änder die 4 in eine 3 und es sollten nur noch 3 Mitglieder akzeptiert werden. :)


Edit Ach so, noch zum anderen:
Ganz unten im Script findest du diesen Code:

Ruby Quellcode

1
2
3
4
5
6
7
8
9
class Game_Temp
  attr_accessor :selectable_actors
  #--------------
  alias actors_init initialize
  def initialize
    actors_init
    @selectable_actors = (1...$data_actors.size).to_a
  end
end
Dort werden alle Helden der DB eingefügt, du kannst das auch ändern, das nur bestimmte Helden einfügbar sind, änder einfach diese Zeile

Ruby Quellcode

1
@selectable_actors = (1...$data_actors.size).to_a
in diese

Ruby Quellcode

1
@selectable_actors = [1,2,3,6,8,9,11] 
Wobei du alle IDs eintragen musst die innerhalb des Spiels getauscht werden, ich hab jetzt nur Beispielzahlen eingefügt.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Playm« (11. August 2009, 21:10)


Kardor

Knappe

  • »Kardor« ist der Autor dieses Themas

Motto: RTP? - Frontview KS? ich finds gut ^^

  • Nachricht senden

11

Dienstag, 11. August 2009, 21:35

Danke dir Playm, jetzt funktionierts eigentlich, nurnoch ein letztes Problem.

Wenn nur der Hauptchar als Actor eingetragen ist (der ja nicht entfernt werden kann) stürzt mein Maker ab, mit der Meldung Failed to create Bitmap.
Ne Idee deswegen?
Hatte einen anderen Char hinzugefügt (im Script) und es ging.

Was muss ich eigentlich für einen Befehl verwenden wenn ich einen neuen Char erhalte so dass dieser zu Verfügung steht?
In Entwicklung: Conjurer - Shadows of the Past
Vorstellung Conjurer
Meinungen und konstruktive Kritik sind immer erwünscht.

Wer bin ich? Und wenn ja wie viele?

Ich kann nicht viel zum Dank anbieten, ausser meiner ehrlichen Meinung
und meiner Zeit zB. als Tester.

12

Dienstag, 11. August 2009, 22:14

Theoretisch müsste es so gehen:

Ruby Quellcode

1
2
3
4
# Helden zur Auswahl hinzufügen
$game_temp.selectable_actors.push(neue_ID)
# Helden aus der Auswahl entfernen
$game_temp.selectable_actors.delete(Helden_ID)
Über CallScript kannst du so das beeinflussen.

Zur ersten Frage: Könntest du den genauen Fehlertext posten? Was steht in der Fehlermeldung genau drin?

Kardor

Knappe

  • »Kardor« ist der Autor dieses Themas

Motto: RTP? - Frontview KS? ich finds gut ^^

  • Nachricht senden

13

Dienstag, 11. August 2009, 22:32

Der genaue Fehler ist
Script 'Window_Command' line 18: RGSSError occured.
failed to create bitmap
In Entwicklung: Conjurer - Shadows of the Past
Vorstellung Conjurer
Meinungen und konstruktive Kritik sind immer erwünscht.

Wer bin ich? Und wenn ja wie viele?

Ich kann nicht viel zum Dank anbieten, ausser meiner ehrlichen Meinung
und meiner Zeit zB. als Tester.

14

Dienstag, 11. August 2009, 23:05

Es ist nicht vorgesehen das kein Held zur Auswahl steht, aber das ist natürlich änderbar.

So man muss einiges ändern:
Am Anfang des Scriptes findest du die Zeile

Ruby Quellcode

1
2
@window_right = Window_Command.new(320, @right.collect{
        |i| $data_actors[i].name})

Diese ersetzt du (löschen und dafür das folgende einfügen) durch das hier:

Ruby Quellcode

1
2
3
4
5
6
    if @right.size == 0
      @window_right = Window_Command.new(320,[""])
    else
      @window_right = Window_Command.new(320, @right.collect{
        |i| $data_actors[i].name})
    end

Dann gehst du in die update Methode, etwa Zeile 45 fügst du unter @window_right.update das hier ein:

Ruby Quellcode

1
@window_right.cursor_rect.empty if @right.size == 0

Das siet dann so aus:

Ruby Quellcode

1
2
3
4
5
6
7
  def update
    @window_actor.update
    @help_window.update
    @window_left.update
    @window_right.update
    @window_right.cursor_rect.empty if @right.size == 0
    #::::::::::::::
Danach sollte es gehen. :)

Kardor

Knappe

  • »Kardor« ist der Autor dieses Themas

Motto: RTP? - Frontview KS? ich finds gut ^^

  • Nachricht senden

15

Mittwoch, 12. August 2009, 01:22

ES GEHT!!!!! :yahoo!:

Danke danke danke danke danke danke dir vielmals!!!
Ich hoffe das ich mich irgendwann bei dir revanchieren kann.

Im Spoiler ist das Script mit allen Änderungen, bis jetzt keine Fehler^^.
Spoiler

Ruby 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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
#//////////////////////////////////////////Teamwechsel//////////////////////////////////////
#~~~~~~~~~~~~~~~~~~~~by Caesar~~~~~~~~~~~~~~~~~
#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
class Scene_Party
  def main
    @left = $game_party.actors.collect { |actor| actor.id}
    @right = $game_temp.selectable_actors - $game_party.actors.collect{|i| i.id}
    @window_actor = Window_ActorInfo.new
    @help_window = Window_Help.new
    @help_window.set_text(remove_actor_text, 1)
    @window_left = Window_Command.new(320, @left.collect{
        |i| $data_actors[i].name})
    @window_left.y = 64
    @window_left.height = 268
    if @right.size == 0
      @window_right = Window_Command.new(320,[""])
    else
      @window_right = Window_Command.new(320, @right.collect{
        |i| $data_actors[i].name})
    end
    @window_right.x = 320
    @window_right.y = 64
    @window_right.height = 268
    set_inactive(@window_right)
    @old_index = -1
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      break unless $scene == self
    end
    Graphics.freeze
    @window_actor.dispose
    @help_window.dispose
    @window_left.dispose
    @window_right.dispose
  end
  #---------------
  def update
    @window_actor.update
    @help_window.update
    @window_left.update
    @window_right.update
    @window_right.cursor_rect.empty if @right.size == 0
    #::::::::::::::
    if Input.trigger?(Input::B)
      if @left.size <= 0
        $game_system.se_play($data_system.buzzer_se)
        @help_window.set_text(no_actors_text, 1)
      elsif @left.size > 3
        $game_system.se_play($data_system.buzzer_se)
        @help_window.set_text(too_many_actors_text, 1)
      else
        $game_party.actors.clear
        @left.each {|i| $game_party.add_actor(i)}
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Map.new
      end
    end
    #:::::::::::::::::
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      if @window_left.active
        unless @window_left.index == 0 then
        @right.push(@left.delete_at(@window_left.index))
        @old_index = -1
        if @left.size <= 0
          @help_window.set_text(remove_actor_text, 1)
          set_inactive(@window_left)
          set_active(@window_right)
        end
      end
      else
        @left.push(@right.delete_at(@window_right.index))
        @old_index = -1
        if @right.size <= 0
          @help_window.set_text(add_actor_text, 1)
          set_inactive(@window_right)
          set_active(@window_left)
        end
      end
      @window_left.commands = @left.collect{|i| $data_actors[i].name}
      @window_right.commands = @right.collect{|i| $data_actors[i].name}
    end
    #::::::::::::::::::
    if Input.trigger?(Input::LEFT) and @window_right.active
      if @left.size > 0
        @old_index = -1
        @help_window.set_text(remove_actor_text, 1)
        $game_system.se_play($data_system.cursor_se)
        set_inactive(@window_right)
        set_active(@window_left)
      else
        $game_system.se_play($data_system.buzzer_se)
      end
    end
    #:::::::::::::::::
    if Input.trigger?(Input::RIGHT) and @window_left.active
      if @right.size > 0
        @old_index = -1
        @help_window.set_text(add_actor_text, 1)
        $game_system.se_play($data_system.cursor_se)
        set_inactive(@window_left)
        set_active(@window_right)
      else
        $game_system.se_play($data_system.buzzer_se)
      end
    end
    #::::::::::::::::::
    if Input.repeat?(Input::L) and @window_left.active
      unless @window_left.index == 1 then
      @left.swap_up!(@window_left.index)
      @window_left.swap_up
    end
      end
    #::::::::::::::::::
    if Input.repeat?(Input::R) and @window_left.active
      @left.swap_down!(@window_left.index)
      unless @window_left.index == 0 then
      @window_left.swap_down
    end
  end
  #::::::::::::::::::
    index = @window_left.active ? @window_left.index : @window_right.index
    if index != @old_index
      @old_index = index
      update_actor_info
    end
  end
  #--------------------
  def update_actor_info
    if @window_left.active
      index = @window_left.index
      @window_actor.actor = $game_actors[@left[index]] if index != -1
    else
      index = @window_right.index
      @window_actor.actor = $game_actors[@right[index]] if index != -1
    end
  end
  #--------------------
  def set_active(window)
    window.active = true
    window.opacity = 255
    window.contents_opacity = 255
  end
  #--------------------
  def set_inactive(window)
    window.active = false
    window.opacity = 160
    window.contents_opacity = 160
  end
  #--------------------
  def add_actor_text
    "Helden dem Team hinzufügen"
  end
  #--------------------
  def remove_actor_text
    "Helden aus dem Team entfernen"
  end
  #--------------------
  def too_many_actors_text
    "Es sind zu viele Helden im Team!"
  end
  #--------------------
  def no_actors_text
    "Im Team muss sich mindestens ein Held befinden!"
  end
end
#==================
class Window_ActorInfo < Window_Base
  attr_reader :actor
  #----------------
  def initialize(actor=nil)
    super(0, 332, 640, 148)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  #-----------------
  def refresh
    self.contents.clear
    return if @actor.nil?
    x = 140
    draw_actor_graphic(@actor, x - 40, 80)
    draw_actor_name(@actor, x, 0)
    draw_actor_class(@actor, x + 144, 0)
    draw_actor_level(@actor, x, 32)
    draw_actor_state(@actor, x + 90, 32)
    draw_actor_exp(@actor, x, 64)
    draw_actor_hp(@actor, x + 236, 32)
    draw_actor_sp(@actor, x + 236, 64)
  end
  #-----------------
  def actor=(actor)
    @actor = actor
    refresh
  end
end
#=========================
class Window_Command < Window_Selectable
  attr_reader :commands
  #--------------
  def commands=(commands)
    if commands.size != @commands.size
      @item_max = commands.size
      self.contents = Bitmap.new(width - 32, @item_max * 32) if @item_max > 0
      @index -= 1 if @index >= @item_max
      @index = 0 if @item_max == 1
    end
    @commands = commands
    refresh
  end
  #---------------
  def swap_up
    $game_system.se_play($data_system.cursor_se)
    @commands = @commands.swap_up(@index)
    if @index > 0
      @index -= 1
      refresh
    end
  end
  #-----------------
  def swap_down
    $game_system.se_play($data_system.cursor_se)
    @commands = @commands.swap_down(@index)
    if @index < @commands.size-1
      @index += 1
      refresh
    end
  end
end
#========================
class Array
  def swap_up(index)
    arr = dup
    return arr unless index > 0
    arr[index] = self[index-1]
    arr[index-1] = self[index]
    return arr
  end
  #------------------
  def swap_down(index)
    arr = dup
    return arr unless index < size-1
    arr[index] = self[index+1]
    arr[index+1] = self[index]
    return arr
  end
  #----------------
  def swap_up!(index)
    return unless index > 0
    temp = self[index]
    self[index] = self[index-1]
    self[index-1] = temp
  end
  #----------------
  def swap_down!(index)
    return unless index < size-1
    temp = self[index]
    self[index] = self[index+1]
    self[index+1] = temp
  end
end
#========================
class Game_Temp
  attr_accessor :selectable_actors
  #--------------
  alias actors_init initialize
  def initialize
    actors_init
    @selectable_actors = [3]
  end
end
zum Lesen den Text mit der Maus markieren


Nochmals ein DANKE an dich Playm
In Entwicklung: Conjurer - Shadows of the Past
Vorstellung Conjurer
Meinungen und konstruktive Kritik sind immer erwünscht.

Wer bin ich? Und wenn ja wie viele?

Ich kann nicht viel zum Dank anbieten, ausser meiner ehrlichen Meinung
und meiner Zeit zB. als Tester.

Social Bookmarks