• Anmelden

bluerob

Ankömmling

  • »bluerob« ist der Autor dieses Themas

Motto: Leb dein Leben

  • Nachricht senden

1

Montag, 15. Februar 2010, 18:29

Skilltree

Gibt es irgendein Skript, wodurch ich einen Fertigkeitsbaum in mein Spiel einfügen kann, wie z.B. bei Diablo 2?
Das wäre sau geil :)
Ein neuer Tag, neues Glück, sieh nach vorne, nie zurück, denn gestern war heute noch morgen

2

Montag, 15. Februar 2010, 18:33

Es gibt eine Eventlösung dazu.
Eine Anleitung wie man sowas umsetzt findest du hier in Scientia .

bluerob

Ankömmling

  • »bluerob« ist der Autor dieses Themas

Motto: Leb dein Leben

  • Nachricht senden

3

Montag, 15. Februar 2010, 18:36

Jap das hab ich mir schon durchgelesen und auch schon ausprobiert.
Werde diese Art auch benutzen, nur ein Skript wodurch ein richtiges Fenster entsteht wäre einfach super geil =)
Ein neuer Tag, neues Glück, sieh nach vorne, nie zurück, denn gestern war heute noch morgen

Reborn

hat beim Stromkonzern schon Rabatt

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

4

Montag, 15. Februar 2010, 21:36

Was meinst du mit Fertigkeitsbaum? Kannst du das vielleicht mal verbildlichen? Dann kann man dir auch leichter helfen.
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

bluerob

Ankömmling

  • »bluerob« ist der Autor dieses Themas

Motto: Leb dein Leben

  • Nachricht senden

5

Dienstag, 16. Februar 2010, 00:13

So etwas mein ich =)

Bild


Halt ein Skript, dass ich im Spiel eine solche Anzeige bekomme um zu skillen
Ein neuer Tag, neues Glück, sieh nach vorne, nie zurück, denn gestern war heute noch morgen

Reborn

hat beim Stromkonzern schon Rabatt

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

6

Dienstag, 16. Februar 2010, 13:25

Sowas ist scheiße zu Coden, weil man es speziell mcahen muss, also fals ich dir sowas schreiben soll brauche ich noch genauere Angaben wie:
Anzahl und die Anordnung. Eine Grafik dazu währe auch ganz nützlich.
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

7

Dienstag, 16. Februar 2010, 14:54

Man könnte doch die Fertigkeiten einfahc in ner Liste auf listen..

Spoiler
Bild
zum Lesen den Text mit der Maus markieren


sieht zwar net so schlön, aber der spieler könnte auch aussuchen welchen skill er "levelt"...

Reborn

hat beim Stromkonzern schon Rabatt

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

8

Mittwoch, 17. Februar 2010, 19:34

Hab jetzt mal was geskriptet ist noch nicht ganz fertig, aber sag erstmal ob es dir gefällt (Alles über Main einfügen!!!):

Skilltree-Script by Hindi v.1.0
Spoiler: Game_Temp

Ruby Quellcode

1
2
3
4
5
6
7
8
class Game_Temp
  attr_accessor(:skill_points)
  alias_method(:old_initialize, :initialize)
  def initialize()
    @skill_points = []
    old_initialize()
  end
end
zum Lesen den Text mit der Maus markieren

Spoiler: Game_Actor

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Game_Actor
  attr_accessor :skill_lvls
  alias_method(:old_initialize, :initialize)
  def initialize(actor_id)
    @skill_lvls = []
    old_initialize(actor_id)
  end
 
  def learn_skill(skill_id)
    if skill_id > 0 and not skill_learn?(skill_id)
      @skill_lvls = [] if @skill_lvls.nil?
      @skills.push(skill_id)
      @skill_lvls[skill_id] = 0
      @skills.sort!
    end
  end
end
zum Lesen den Text mit der Maus markieren

Spoiler: Game_Actors

Ruby Quellcode

1
2
3
class Game_Actors
  attr_accessor(:data)
end
zum Lesen den Text mit der Maus markieren

Spoiler: Window_Skilltree

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
class Window_Skilltree < Window_Selectable
  attr_reader(:data)
  attr_accessor(:points)
  def initialize(actor_id)
    super(0, 64, 640, 416)
    @actor_id = actor_id
    self.index = 0
    @window_help = Window_Help.new
    @column_max = 2
    refresh()
  end
 
  def skill
    return @data[self.index]
  end
 
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @actor = $game_actors[@actor_id]
    if $game_temp.skill_points[@actor_id].nil?
      $game_temp.skill_points[@actor_id] = 0
      @points = 0
    else
      @points = $game_temp.skill_points[@actor_id]
    end
    @data = []
    for i in 0...@actor.skills.size
      skill = $data_skills[@actor.skills[i]]
      if skill != nil
        @data.push(skill)
      end
    end
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
    update_help()
  end
 
  def draw_item(index)
    skill = @data[index]
    self.contents.font.color = normal_color
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(skill.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
    self.contents.draw_text(x + 232, y, 48, 32, @actor.skill_lvls[skill.id].to_s, 2)
  end
 
  def update()
    update_help()
    @window_help.update()
    super()
  end
 
  def update_help()
    @window_help.set_text("Verfügbare Punkte: " + @points.to_s)
  end
 
  def dispose()
    @window_help.dispose()
    super()
  end
end
zum Lesen den Text mit der Maus markieren

Spoiler: Scene_Skilltree

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
class Scene_Skilltree  
  def main()
    # Execute transition
    Graphics.transition()
    # Main loop
    loop do
      $game_actors.data.each do |i|
        next if i.nil?
        @actor_id = i.id
        @cancle = false
        # Window Skilltree
        @window_skilltree = Window_Skilltree.new(@actor_id)
        until @cancle == true
          # Update game screen
          Graphics.update()
          # Update input information
          Input.update()
          # Frame update
          update()
        end
        @window_skilltree.dispose()
      end
      $scene = Scene_Map.new
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
  end
 
  def change_item()
    $game_system.se_play($data_system.decision_se)
    index = @window_skilltree.index
    skill = @window_skilltree.data[index]
    if $game_actors[@actor_id].skill_lvls[skill.id].nil?
      $game_actors[@actor_id].skill_lvls[skill.id] = 0
    end
    $game_actors[@actor_id].skill_lvls[skill.id] += 1
    $game_temp.skill_points[@actor_id] -= 1
    @window_skilltree.refresh()
  end
 
  def back_to_map()
    $game_system.se_play($data_system.decision_se)
    @cancle = true
  end
 
  def change_item_allowed()
    if $game_temp.skill_points[@actor_id] == 0
      return false
    end
    return true
  end
 
  def update()
    @window_skilltree.update()
    if Input.trigger?(Input::C)
      if change_item_allowed()
        change_item()
      else
        $game_system.se_play($data_system.buzzer_se)
      end
    end
    if Input.trigger?(Input::B)
      back_to_map()
    end
  end
end
zum Lesen den Text mit der Maus markieren

Spoiler: Scene_Battle

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
class Scene_Battle
  def battle_end(result)
    # Clear in battle flag
    $game_temp.in_battle = false
    # Clear entire party actions flag
    $game_party.clear_actions
    # Remove battle states
    for actor in $game_party.actors
      actor.remove_states_battle
    end
    # Clear enemies
    $game_troop.enemies.clear
    # Call battle callback
    if $game_temp.battle_proc != nil
      $game_temp.battle_proc.call(result)
      $game_temp.battle_proc = nil
    end
    if result == 0
      $game_actors.data.each do |i|
        next if i.nil?
        if $game_temp.skill_points[i.id].nil?
          $game_temp.skill_points[i.id] = 0
        end
        $game_temp.skill_points[i.id] += 5
      end
    end
    # Switch to map screen
    $scene = Scene_Skilltree.new
  end
end
zum Lesen den Text mit der Maus markieren


(die vielen Scripts sind nur übersichtshalber)

Aufrufbar mit:

Ruby Quellcode

1
$scene = Scene_Skilltree.new

Es mein Script wird aber auch Automatisch nach einem Kampf aufgerufen.

Mehr Skillpunkte bekommst du z.B. mit:

Ruby Quellcode

1
$game_temp.skill_points[actor_id] = 5


Was alles schon funktioniert, es fehtl eigentlich nur noch, dass der Schaden erhöt wird.
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

bluerob

Ankömmling

  • »bluerob« ist der Autor dieses Themas

Motto: Leb dein Leben

  • Nachricht senden

9

Mittwoch, 17. Februar 2010, 23:16

Okay danke!
Werds jetzt gleich mla ausprobieren.

Sorry, dass ich jetzt erst antworte. Bin die Tage nicht dazu gekommen zu schreiben :(

Edit:

Zitat

Aufrufbar mit:

Ruby Quellcode

1
$scene = Scene_Skilltree.new

Es mein Script wird aber auch Automatisch nach einem Kampf aufgerufen.
Das versteh ich nicht...Kannst du es mir kurz erklären, teste es dann sofort =)
Bin schon gespannt
Ein neuer Tag, neues Glück, sieh nach vorne, nie zurück, denn gestern war heute noch morgen

10

Donnerstag, 18. Februar 2010, 07:42

3. Seite im Eventeditor, Script, Das eintragen: $scene = "Scene_Skilltree.new", Ok

bluerob

Ankömmling

  • »bluerob« ist der Autor dieses Themas

Motto: Leb dein Leben

  • Nachricht senden

11

Donnerstag, 18. Februar 2010, 14:47

Ähm so wie das bei mir angezeigt wird kann man leider nichts genaues sagen.
Also ich finde das Fenster gut und auch die Anzeige wie viele Skillpkt man hat, aber jetzt so ein Skilltree ist ja nicht drin.

Wenn es dir nicht zu viel Arbeit macht kannst du ja vlt eifnach mal irgendwie ein Beispiel reinschreiben.
Irgendwie Skills wie "Feuerball" und "Kettenblitz" oder so. Falls es funktioniert kannst du daneben auch noch ein Bildchen packen.
Das Bild müsste nicht dazu passen, kann irgendwas sein, z.B. beim Feuerball ein Apfel oder so.

Finds aber echt cool das du sowas schreiben kannst!
Wo hast du das gelernt?
Ein neuer Tag, neues Glück, sieh nach vorne, nie zurück, denn gestern war heute noch morgen

Reborn

hat beim Stromkonzern schon Rabatt

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

12

Donnerstag, 18. Februar 2010, 19:04

Das kann das Script schon und ich bin grad noch dabei den Namen von jeweiligen Actor daneben zu schreiben, damit man weis, von welchem Actor es gerade die Skills sind.
Du musst einfach ein Event mit dem Befehl "Change Skills" erstellen (und bei learn und nicht forgot den Punkt reinmachen). Dann siehst du den Skillnamen auch mit nem Bild.

Hier ersetzte Window_Skilltree mit dem alten Script und für Window_Help erstellst du ein neues, dann siehst du auch noch den Namen des zu dem Skill dazugehörigem Actors.

Spoiler: Window_Help

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Window_Help < Window_Base  
  def set_text2(text)
    if @sprite.nil?
      @sprite = Sprite.new
      @sprite.bitmap = Bitmap.new(self.width, self.height)
      @sprite.z = 101
    end
    @sprite.x = self.x
    @sprite.y = self.y + 15
    @sprite.bitmap.clear
    @sprite.bitmap.draw_text(4, 0, self.width - 40, 32 , text, 2)
  end
 
  def dispose()
    @sprite.bitmap.dispose() unless @sprite.nil?
    super()
  end
end
zum Lesen den Text mit der Maus markieren

Spoiler: Window_Skilltree

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
class Window_Skilltree < Window_Selectable
  attr_reader(:data)
  attr_accessor(:points)
  def initialize(actor_id)
    super(0, 64, 640, 416)
    @actor_id = actor_id
    self.index = 0
    @window_help = Window_Help.new
    @column_max = 2
    refresh()
  end
 
  def skill
    return @data[self.index]
  end
 
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @actor = $game_actors[@actor_id]
    if $game_temp.skill_points[@actor_id].nil?
      $game_temp.skill_points[@actor_id] = 0
      @points = 0
    else
      @points = $game_temp.skill_points[@actor_id]
    end
    @data = []
    for i in 0...@actor.skills.size
      skill = $data_skills[@actor.skills[i]]
      if skill != nil
        @data.push(skill)
      end
    end
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
    update_help()
  end
 
  def draw_item(index)
    skill = @data[index]
    self.contents.font.color = normal_color
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(skill.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
    self.contents.draw_text(x + 232, y, 48, 32, @actor.skill_lvls[skill.id].to_s, 2)
  end
 
  def update()
    update_help()
    @window_help.update()
    super()
  end
 
  def update_help()
    @window_help.set_text("Verfügbare Punkte: " + @points.to_s)
    @window_help.set_text2(@actor.name)
  end
 
  def dispose()
    @window_help.dispose()
    super()
  end
end
zum Lesen den Text mit der Maus markieren
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Reborn« (18. Februar 2010, 19:02)


bluerob

Ankömmling

  • »bluerob« ist der Autor dieses Themas

Motto: Leb dein Leben

  • Nachricht senden

13

Donnerstag, 18. Februar 2010, 20:01

Ok hat jetzt geklappt =)
Doch ist ganz cool.
Wäre es Möglich irgendwie das noch zu unterteilen in z.B. feuer und eis-Skills?
Also das da eifnach eine Überschrift ist?

Feuer

-Feuerball
-Flammenatem

Eis

-Eisgeschoss
-Eisblitz
Ein neuer Tag, neues Glück, sieh nach vorne, nie zurück, denn gestern war heute noch morgen

Reborn

hat beim Stromkonzern schon Rabatt

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

14

Donnerstag, 18. Februar 2010, 20:26

Ey du stelslt fragen xD, ja also möglich ist es, nur mit dem scheiß kompliziertem Window_Selction von RGSS komme ich überhaupt net zurecht. Ich kanns mal versuchen, doch versprechen tuh ich nix :D

EDIT:
Nein es ist doch nicht möglich, da in der Database nicht präzise genug festgelegt wird, was für eine Eigenschaft der jeweilige Skill hat.
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

bluerob

Ankömmling

  • »bluerob« ist der Autor dieses Themas

Motto: Leb dein Leben

  • Nachricht senden

15

Donnerstag, 18. Februar 2010, 20:26

Okay danke :D

Nicht schlimm wenns nicht klappt ;)
Ein neuer Tag, neues Glück, sieh nach vorne, nie zurück, denn gestern war heute noch morgen

Neo-Bahamut

Himmelsgleicher

Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.

  • Nachricht senden

16

Donnerstag, 18. Februar 2010, 20:55

Zitat

Nein es ist doch nicht möglich, da in der Database nicht präzise genug festgelegt wird, was für eine Eigenschaft der jeweilige Skill hat.
Natürlich, du kannst doch bei "Element" diverse Elemente auswählen :o
Spoiler: Wurstinator
zum Lesen den Text mit der Maus markieren

Spoiler: Lazer-Wurst
zum Lesen den Text mit der Maus markieren

Spoiler: Hallowurst
zum Lesen den Text mit der Maus markieren

Reborn

hat beim Stromkonzern schon Rabatt

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

17

Donnerstag, 18. Februar 2010, 21:20

Ja stimmt habs grad gefunden, hab nämlich unter $data_skills gesuch is aba in $data_system drine^^ Wenni ch mal Zeit habe mach ich das noch rein.
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

Social Bookmarks