• Anmelden

1

Samstag, 26. September 2009, 20:29

Diese verdammte Animation will nicht wie wir wollen!!??

Servus..

Evrey ( mein RGSS held ), hat mir ein Script geschrieben. Jedoch haben wir schnell einen fehler festgestellt.. nunja.. mehrere ^^

Hier iss ma das Script:
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
class Spriteset_Map
  attr_reader(:viewport1,:viewport2,:viewport3)
end
 
class Scene_Map
  alias_method(:evrey_scene_map_update,:update) if (!method_defined?(:evrey_scene_map_update))
  def update()
    if (@schwertanis.nil?())
      @schwertanis = []
    else
      @schwertanis.size.times() \
      {|i|
        if (@schwertanis[i].update())
          @schwertanis[i].dispose()
          @schwertanis[i] = nil
        end
      }
      @schwertanis.compact!()
    end
    evrey_scene_map_update()
  end
  def add_sword_ani(*args)
    @schwertanis = [] if (@schwertanis.nil?())
    args.each() \
    {|arg|
      @schwertanis.push(AKS_ANIM.new(1))
    }
  end
end
 
 
 
class AKS_ANIM
  @frame
  @step
  @w_x
  @swordani
  def initialize(frame=$equip[$held["EQUIP"][4]]["ANIMAS"][$geoplug_num][1])
    directing = $game_player.direction
    @frame    = frame
    @step     = 0
    view      = $scene.spriteset.viewport1
    @swordani = Sprite.new(view)
    @swordani.x = $game_player.screen_x
    @swordani.y = $game_player.screen_y
    @swordani.bitmap = RPG::Cache.picture("./BAs/" + $equip[$held["EQUIP"][4]]["NAME"] + "_#{$geoplug_num}.png")
    @w_x = @swordani.bitmap.width / $equip[$held["EQUIP"][4]]["ANIMAS"][$geoplug_num][0]
    w_y = @swordani.bitmap.height / 8
    @swordani.x -= @w_x/2
    @swordani.y -= w_y/2+48
    #@swordani.src_rect = Rect.new(0,0,@w_x,w_y)
    arr=[nil,5,4,3,6,nil,2,7,0,1]
    @swordani.ox = 0
    @swordani.oy = arr[directing]*w_y
    @swordani.visible = true
    @swordani.z = ![7,8,9].include?(directing) ? $game_player.screen_z + 32 : $game_player.screen_z - 32
  end
 
  def update()
    if (Graphics.frame_count()%@frame==0)
      @swordani.ox += @w_x
      @step        += 1
    end
    return(@step >= $equip[$held["EQUIP"][4]]["ANIMAS"][$geoplug_num][0])
  end
 
  def dispose()
    @swordani.bitmap.clear()
    @swordani.dispose()
  end
end
zum Lesen den Text mit der Maus markieren


Unsere problemliste:

1.) Die Animation wird einmal angezeigt. Ruft man sie nochmal auf.. erscheint nix.. sie iss weg.. Sie wird für immer und ewig ( bis zu nem Spiel restart ) nichtmehr angezeigt.

2.) Iwie wird die Animation nicht im Rect angezeigt. Also garned angezeigt.. machen wir das rect weg.. wird sie komplett angezeigt.
hier zwei Screens:
Hier mit Rect: INGAME SCREEN, SCHLAG MIT RECT
Hier ohne Rect: INGAME SCREEN, SCHLAG OHNE RECT


Evrey und ich raufen uns schon die Haare aus, weil wir keinen Fehler finden.. BITTE HELFT UNS danken herzlichst fürs lesen ^^
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Neo-Bahamut

Himmelsgleicher

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

  • Nachricht senden

2

Samstag, 26. September 2009, 22:38

Zitat

Evrey ( mein RGSS held ), hat mir ein Script geschrieben. Jedoch haben wir schnell einen fehler festgestellt.. nunja.. mehrere ^^
Die 3 Wörter lese ich häufig im Zusammenhang :O


Naja, um zu helfen muss ich wissen, was das Skript bringt und wie man es benutzt, damit ich selber testen kann :3
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

3

Sonntag, 27. September 2009, 00:21

Lösch mal Zeile 69, damit könntest du zumindest das 1. Problem eventuell lösen.

4

Sonntag, 27. September 2009, 01:17

Zeile 69 hat nix gebracht.. Aber zeile 68 löschen hat problem 1 gelöst..


Fehlt noch problem 2...

@Neo:
Die Animation wird via

Quellcode

1
2
3
4
5
$scene.add_sword_ani(frames)
 
also
 
$scene.add_sword_ani($equip[$held["EQUIP"][4]]["ANIMAS"][$geoplug_num][1])

aufgerufen. Sie soll eine Animation ( wie ein Charset, nur mit 8 Richtungen ) einmal durchlaufen lassen.

Dies ist die framezahl der Animation, pro Richtung:

Quellcode

1
$equip[$held["EQUIP"][4]]["ANIMAS"][$geoplug_num][0]

Dies ist die Dauer der Animation:

Quellcode

1
$equip[$held["EQUIP"][4]]["ANIMAS"][$geoplug_num][1]


Nur funzt hier iwie das rect nicht..
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Neo-Bahamut

Himmelsgleicher

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

  • Nachricht senden

5

Sonntag, 27. September 2009, 10:52

Alles, was ich jetzt mehr weiß ist, dass eine ziemliche Arrayverschachtelung übergeben wird Oo
Was für ein Wert ist denn in
$equip[$held["EQUIP"][4]]["ANIMAS"][$geoplug_num] ?

(jetzt mit Beispielen bitte :3)
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

Evrey

Oberschurke im Ruhestand

Motto: "Satzzeichen sind keine Rudeltiere." - Chesra

  • Nachricht senden

6

Sonntag, 27. September 2009, 11:49

NB... hättest du dir den Code auch nur ein BISSCHEN angeschaut, wüsstest du, dass ein Integer übergeben wird... Beispielsweise 1...
  • :medal: Werbung

    Bild

    Cpp Quellcode

    1
    
    #define TRUE FALSE //Happy debugging suckers
    (Einfach nur wundervoll.)
  • :palette: 1plus3 :cake:

    Bild
  • :fires: Nuuuhminaaah

    Bild
  • :medal: compétences

    mes compétences
    :heart_full: :heart_full: :heart_full: :heart_full: :heart_full: max.
    :ruler-triangle: Maps machen :heart_full: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :media-player: Musik machen :heart_full: :heart-half: :heart-empty: :heart-empty: :heart-empty:
    :cup: Scripts machen :heart_full: :heart_full: :heart_full: :heart_full: :heart-break:
    :paper: Story ausdenken :heart_full: :heart_full: :heart_full: :heart-empty: :heart-empty:
    :cut: Pixeln und so :heart-empty: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :game: Events proggen :heart_full: :heart_full: :heart_full: :heart_full: :heart_full:
    (Dieser Tab ist rein satirisch.)
  • :folder-open: mes projets

    • :addressbook: Silentium
      :book: Name: Silentium
      :rmxp: Maker: Eigenbau (C++, x86-SSE/AVX-Assembly, Ruby/Lua)

      :paper: Story
      :game: NPCs
      :cup: Scripts
      :drill: Ressis
      :ruler-triangle: Maps
      :compile: Gesamt
      (3+4)% 42 69% 0815 -17.438 103.38% ± 6.3mm²

      (Die Tabelle erfüllt lediglich satirische Zwecke.)
    • :compile: Onyx
      Eine in C++ implementierte, modulare, plattformunabhängige, virtuelle Maschine. Die Test-Version ist bereits halb fertig. Ab dann gibt es vielleicht mehr Infos. Sie soll die auf dem ersten Blick LISP-artige und eigens dafür konstruierte Sprache Obsidian ausführen können. Experimentell wird auch ein Lua-Compiler für Onyx gebaut. Ziel ist eine leistungsfähige, virtuelle Maschine für beliebige Scriptsprachen. Theoretisch gesehen müsste man bloß noch einen kompatiblen Compiler schreiben, der Quellcode jener Sprache in Onyx-Assembly, oder direkt in Onyx-Bytecode übersetzt. Ob die jemand nutzen wird, ist eine andere Frage und nur ein sekundäres... nein, eher tertiäres Ziel dieser VM. Primär dient es mir lediglich dazu, mein Verständnis von Hardware, ISA, und Assembly zu vertiefen, sowie eigene Grenzen auszutesten.

      :exclamation: Warnung!
      Das Entwickeln einer virtuellen Maschine oder Programmiersprache (im wahnsinnigsten Fall beides) ist eine höchst komplizierte Tätigkeit, aus der viel Frust und Hirnmatsche hervor gehen. Sollte sich dennoch ein ähnlich wahnsinniger finden, der sowas zusammen schustern will, so lege ich ihm/ihr die folgenden Bücher ans Herz:
      • Compiler - Das Drachenbuch [978-3-8273-7097-6]
        Dieses Buch schlachtet ausführlich und leicht verständlich die Grundlagen bis hoch zu den Experten-Techniken des Compilerbaus aus. Es fängt mit der Automaten-Theorie und formalen Sprachen an, arbeitet sich durch Analysetechniken vor, und landet schließlich bei Techniken wie Optimierung und Register-Zuweisung. Das Buch wiegt 3Kg oder 4Kg. Hab's mal gewogen. Ist also nicht gerade die Lektüre für unterwegs.

      • Computerarchitektur [3-8273-7016-7]
        Hier werden leicht verständlich die wichtigsten Entwicklungen der Rechnerarchitekturen erklärt (Gut, das Buch ist in die Jahre gekommen, aber der Weg zu heute ist ein winziger Schritt, den man sich nach diesem Buch selbst erdenken kann). Hauptbestandteil des Buchs ist eine relativ umfassende Betrachtung der Funktionsweise dreier gänzlich unterschiedlicher, aber dominierender Prozessor-Typen am Beispiel des Pentium II, UltraSPARC II, sowie picoJava. Die meisten Elemente dieses Buchs sind zwar für die Konstruktion einer virtuellen Maschine irrelevant, oder aufgrund der Tatsache, dass die VM Software ist und z.B. Byte-Grenzen hat, sogar zu Leistungseinbußen führen kann, doch ist ein hinreichendes Verständnis dieser Maschinen, mit denen wir arbeiten, äußerst hilfreich für die Überlegungen, wie die VM arbeiten soll.

      Es kann sehr hilfreich und inspirierend sein, den Code quelloffener, virtueller Maschinen anderer Sprachen zu überfliegen. Meine Lieblings-Quelle war und ist stets die VM von Lua. Sie ist schlank, verständlich, in C implementiert, und basiert im Gegensatz zu vielen anderen Scriptsprachen-VMs auf einer Register-Maschine statt einer Stapelmaschine. Es wäre natürlich vorteilhaft, die entsprechende Sprache zu verstehen, in der man auch die eigene VM implementieren will. Weiterhin ist es äußerst vorteilhaft, eine leistungsstarke und bequeme Sprache wie C++ zu beherrschen, um die VM zu implementieren. Und bevor irgendwer auf die Idee kommt: Assembly ist NICHT als dominierende Sprache für den Bau einer VM geeignet. Wer die Frage des "Warum?" nicht beantworten kann, sollte zunächst die gewählte Sprache und Assembly hinreichend verstehen lernen, und es dann erneut mit der Frage versuchen. Es lohnt sich dennoch, Assembly zu lernen. Allein schon, um erneut das Verständnis zu vertiefen, zumal ihr mehr oder weniger gezwungen seid, auch für eure VM eine Assembler-Sprache zu entwickeln (Außer natürlich ihr schreibt eure Test-Programme Bit für Bit ;3).
  • :locale: enfin

    Je ne peux pas parler français.
    C'est tout ce que Goodle et les restes de cours de français.
Signaturstand: 24.07.2013

Neo-Bahamut

Himmelsgleicher

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

  • Nachricht senden

7

Sonntag, 27. September 2009, 11:58

Achso...
also wird einfach eine Animation da angezeigt, wo der Spieler ist?

/edit: Ne... ich verstehs immer noch nicht D:
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

Evrey

Oberschurke im Ruhestand

Motto: "Satzzeichen sind keine Rudeltiere." - Chesra

  • Nachricht senden

8

Sonntag, 27. September 2009, 12:08

Zitat

1.) Die Animation wird einmal angezeigt.
Ja, es WIRD eine Animation angezeigt, schön zu lesen, dass du jetzt auf den Stand der Fragestellung im ersten Post bist. Hör lieber auf, sinnlos zu spammen, sondern helf mit oder lass es sein...
Und das Problem hier ist nur der src_rect des Animationssprites. Er zeigt nichts an. Die Koordinaten sind so gewählt, dass der Rect (eigentlich) über dem Spieler ist, und das genau einen Frame der Animation groß.
Was die Array-Verkettung betrifft, die ist egal. Übergeben wird ein Integer (Fixnum); Espérs Programmierstil.
  • :medal: Werbung

    Bild

    Cpp Quellcode

    1
    
    #define TRUE FALSE //Happy debugging suckers
    (Einfach nur wundervoll.)
  • :palette: 1plus3 :cake:

    Bild
  • :fires: Nuuuhminaaah

    Bild
  • :medal: compétences

    mes compétences
    :heart_full: :heart_full: :heart_full: :heart_full: :heart_full: max.
    :ruler-triangle: Maps machen :heart_full: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :media-player: Musik machen :heart_full: :heart-half: :heart-empty: :heart-empty: :heart-empty:
    :cup: Scripts machen :heart_full: :heart_full: :heart_full: :heart_full: :heart-break:
    :paper: Story ausdenken :heart_full: :heart_full: :heart_full: :heart-empty: :heart-empty:
    :cut: Pixeln und so :heart-empty: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :game: Events proggen :heart_full: :heart_full: :heart_full: :heart_full: :heart_full:
    (Dieser Tab ist rein satirisch.)
  • :folder-open: mes projets

    • :addressbook: Silentium
      :book: Name: Silentium
      :rmxp: Maker: Eigenbau (C++, x86-SSE/AVX-Assembly, Ruby/Lua)

      :paper: Story
      :game: NPCs
      :cup: Scripts
      :drill: Ressis
      :ruler-triangle: Maps
      :compile: Gesamt
      (3+4)% 42 69% 0815 -17.438 103.38% ± 6.3mm²

      (Die Tabelle erfüllt lediglich satirische Zwecke.)
    • :compile: Onyx
      Eine in C++ implementierte, modulare, plattformunabhängige, virtuelle Maschine. Die Test-Version ist bereits halb fertig. Ab dann gibt es vielleicht mehr Infos. Sie soll die auf dem ersten Blick LISP-artige und eigens dafür konstruierte Sprache Obsidian ausführen können. Experimentell wird auch ein Lua-Compiler für Onyx gebaut. Ziel ist eine leistungsfähige, virtuelle Maschine für beliebige Scriptsprachen. Theoretisch gesehen müsste man bloß noch einen kompatiblen Compiler schreiben, der Quellcode jener Sprache in Onyx-Assembly, oder direkt in Onyx-Bytecode übersetzt. Ob die jemand nutzen wird, ist eine andere Frage und nur ein sekundäres... nein, eher tertiäres Ziel dieser VM. Primär dient es mir lediglich dazu, mein Verständnis von Hardware, ISA, und Assembly zu vertiefen, sowie eigene Grenzen auszutesten.

      :exclamation: Warnung!
      Das Entwickeln einer virtuellen Maschine oder Programmiersprache (im wahnsinnigsten Fall beides) ist eine höchst komplizierte Tätigkeit, aus der viel Frust und Hirnmatsche hervor gehen. Sollte sich dennoch ein ähnlich wahnsinniger finden, der sowas zusammen schustern will, so lege ich ihm/ihr die folgenden Bücher ans Herz:
      • Compiler - Das Drachenbuch [978-3-8273-7097-6]
        Dieses Buch schlachtet ausführlich und leicht verständlich die Grundlagen bis hoch zu den Experten-Techniken des Compilerbaus aus. Es fängt mit der Automaten-Theorie und formalen Sprachen an, arbeitet sich durch Analysetechniken vor, und landet schließlich bei Techniken wie Optimierung und Register-Zuweisung. Das Buch wiegt 3Kg oder 4Kg. Hab's mal gewogen. Ist also nicht gerade die Lektüre für unterwegs.

      • Computerarchitektur [3-8273-7016-7]
        Hier werden leicht verständlich die wichtigsten Entwicklungen der Rechnerarchitekturen erklärt (Gut, das Buch ist in die Jahre gekommen, aber der Weg zu heute ist ein winziger Schritt, den man sich nach diesem Buch selbst erdenken kann). Hauptbestandteil des Buchs ist eine relativ umfassende Betrachtung der Funktionsweise dreier gänzlich unterschiedlicher, aber dominierender Prozessor-Typen am Beispiel des Pentium II, UltraSPARC II, sowie picoJava. Die meisten Elemente dieses Buchs sind zwar für die Konstruktion einer virtuellen Maschine irrelevant, oder aufgrund der Tatsache, dass die VM Software ist und z.B. Byte-Grenzen hat, sogar zu Leistungseinbußen führen kann, doch ist ein hinreichendes Verständnis dieser Maschinen, mit denen wir arbeiten, äußerst hilfreich für die Überlegungen, wie die VM arbeiten soll.

      Es kann sehr hilfreich und inspirierend sein, den Code quelloffener, virtueller Maschinen anderer Sprachen zu überfliegen. Meine Lieblings-Quelle war und ist stets die VM von Lua. Sie ist schlank, verständlich, in C implementiert, und basiert im Gegensatz zu vielen anderen Scriptsprachen-VMs auf einer Register-Maschine statt einer Stapelmaschine. Es wäre natürlich vorteilhaft, die entsprechende Sprache zu verstehen, in der man auch die eigene VM implementieren will. Weiterhin ist es äußerst vorteilhaft, eine leistungsstarke und bequeme Sprache wie C++ zu beherrschen, um die VM zu implementieren. Und bevor irgendwer auf die Idee kommt: Assembly ist NICHT als dominierende Sprache für den Bau einer VM geeignet. Wer die Frage des "Warum?" nicht beantworten kann, sollte zunächst die gewählte Sprache und Assembly hinreichend verstehen lernen, und es dann erneut mit der Frage versuchen. Es lohnt sich dennoch, Assembly zu lernen. Allein schon, um erneut das Verständnis zu vertiefen, zumal ihr mehr oder weniger gezwungen seid, auch für eure VM eine Assembler-Sprache zu entwickeln (Außer natürlich ihr schreibt eure Test-Programme Bit für Bit ;3).
  • :locale: enfin

    Je ne peux pas parler français.
    C'est tout ce que Goodle et les restes de cours de français.
Signaturstand: 24.07.2013

Neo-Bahamut

Himmelsgleicher

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

  • Nachricht senden

9

Sonntag, 27. September 2009, 12:14

Zitat

Ja, es WIRD eine Animation angezeigt, schön zu lesen, dass du jetzt auf den Stand der Fragestellung im ersten Post bist. Hör lieber auf, sinnlos zu spammen, sondern helf mit oder lass es sein...
Ich weiß nicht was du hast. Wie wärs denn mal mit "Danke, dass du versuchst uns zu helfen"?

Meine Frage war, wo die Animation angezeigt wird. Wenn es über dem Spieler ist, warum nehmt ihr nicht die vom Maker standardmäßig eingebaute Funktion?
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

10

Sonntag, 27. September 2009, 12:18

also...

Die Animation in meinem beispiel ist ein schwert. Da der Held in 8 Richtungen laufen kann. Hat auch die Animation 8 Richtungen.
Jede Animationsrichtung hat, damit es eine animation wird, auch frames. Im Beispielsfall 9 frames pro Richtung.

$equip[$held["EQUIP"][4]]["ANIMAS"][$geoplug_num][0]

Dieser Array/Hash sagt nun. Das dieses Script weiß, wieviele Frames die Animation der momentan angelegte Waffe des Helden hat.

$held[] == Der Heldenhash
$held["EQUIP"] == greit auf das Equipment des Helden zu
$held["EQUIP"][4] == greift iim Heldenequip auf die 1. Waffe zu

$equip == Der Equipmenthash
$eqip["equipname"] == greift auf einen gegenstand zu
$equip["equipname"]["ANIMAS"] == fragt nach der Animation des Gegenstands
$equip["equipname"]["ANIMAS"][$geoplug] == Sagt der Animation, welches Update die Waffe hat
$equip["equipname"]["ANIMAS"][$geoplug][0] == Sagt der Animation, wieviele Frames pro Richtung die Gegenstandsanimation hat.

Zusammengefügt sieht das so aus:
$equip[$held["EQUIP"][4]]["ANIMAS"][$geoplug_num][0]


So..
Jetzt muss die Animation aber noch wissen, wie schnell sie die Animation abspielen muss.
Dazu wird ganz am Ende im Array der 2. Wert abgefragt.
Also:
$equip[$held["EQUIP"][4]]["ANIMAS"][$geoplug_num][1]

Dieser Array/Hash, wird nun in den call der Animation gepackt, und dient dort als Int für die frameanzahl ( Zeit inder die animation abgespielt wird ).


@Neo: Bin dankbar für deine Hilfe ^^

@Evrey: Das ned mein programmierstil... Ich umgehe nur so die Database ^^. Und werd später alles noch als lokalhashs/arrays umschreiben.
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Chaosgod Espér« (27. September 2009, 12:42)


Neo-Bahamut

Himmelsgleicher

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

  • Nachricht senden

11

Sonntag, 27. September 2009, 12:40

Ah, okay.
Und die Animation hat (Frameanzahl x 8) Felder?
(also alle Frames für eine RIchtung in derselben Spalte)
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

12

Sonntag, 27. September 2009, 12:44

korrekt ^^

und da die frames unbekannt sind.. brauchte ich einen array um darin zu deklarieren, wieviele frames jede animation hat. Mit dem 2. Update hat die Waffe 14 Frames...
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Neo-Bahamut

Himmelsgleicher

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

  • Nachricht senden

13

Sonntag, 27. September 2009, 13:26

So, habs jetzt einfach neugschrieben, da Evreys Code so komische Sachen drinhatte xD
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
class Spriteset_Map
  alias_method :nb_alias_skript_sword_ani_spriteset_map_initialize, :initialize
  alias_method :nb_alias_skript_sword_ani_spriteset_map_update, :update
  alias_method :nb_alias_skript_sword_ani_spriteset_map_dispose, :dispose
 
  def initialize
	@sword_animations = Spriteset_Map::Swordani.new
	nb_alias_skript_sword_ani_spriteset_map_initialize
  end
 
  def update
	@sword_animations.playersprite ||= @character_sprites.last
	@sword_animations.update
	nb_alias_skript_sword_ani_spriteset_map_update
  end
 
  def dispose
	@sword_animations.dispose
	nb_alias_skript_sword_ani_spriteset_map_dispose
  end
 
  def add_sword_animation(frames, duration)
	@sword_animations.add(frames, duration)
  end
 
end
 
 
class Spriteset_Map::Swordani
 
  attr_accessor :playersprite
 
  def initialize
	@array = []
  end
 
  def update
	@viewport ||= @playersprite.viewport
	@array.each {|i| i.update(@playersprite); @array.delete(i) if i.disposed?}
  end
 
  def dispose
	@array.each {|i| i.dispose}
  end
 
  def add(frames, duration)
	filename = "#{$equip[$held['EQUIP'][4]]['NAME']}_#{$geoplug_num}"
	bitmap = RPG::Cache.sword_animation(filename, $game_player.direction)
	@array << Spriteset_Map::Swordani::Animation.new(@viewport, frames, duration, bitmap)
  end
 
end
 
 
class Spriteset_Map::Swordani::Animation < Sprite
  def initialize(viewport, frames, duration, bitmap)
	super(viewport)
	@duration, @frameduration = duration, duration/frames
	@frame = 0
	self.bitmap = bitmap
	@framewidth = bitmap.width/frames
	self.src_rect = Rect.new(0, 0, @framewidth, self.bitmap.height)
  end
 
  def update(playersprite)
	super()
	@frame += 1
	if @frame >= @duration
  	dispose
  	return
	end
	if (@frame%@frameduration) == 0
  	self.src_rect.x += @framewidth
	end
	self.x = playersprite.x+(playersprite.bitmap.width/4-@framewidth)/2
	self.y = playersprite.y+(playersprite.bitmap.height/4-self.bitmap.height)/2
	self.z = playersprite.z
  end
end
 
 
class Scene_Map
  def add_sword_ani(frames, duration = frames*4)
	return if !$scene.is_a?(Scene_Map)
	@spriteset.add_sword_animation(frames, duration)
  end
end
 
class Interpreter
  def add_sword_ani(*args)
	$scene.add_sword_ani(*args)
  end
end
 
module RPG::Cache
  def self.sword_animation(filename, direction)
	path = "Graphics/Pictures/BAs/" + filename
	key = [filename, direction-1]
	if !@cache.include?(key) or @cache[key].disposed?
  	source = Bitmap.new(path)
  	bitmap = Bitmap.new(source.width, source.height/8)
  	bitmap.blt(0, 0, source, Rect.new(0, (direction-1)*bitmap.height, bitmap.width, bitmap.height))
  	@cache[key] = bitmap
	end
	@cache[key]
  end
end
zum Lesen den Text mit der Maus markieren


Aufrufen mit

Ruby Quellcode

1
$scene.add_sword_ani(frameanzahl[, animationsdauer])
oder einfach nur

Ruby Quellcode

1
add_sword_ani(frameanzahl[, animationsdauer])
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

14

Sonntag, 27. September 2009, 13:36

framezahl[, animationsdauer]

o.O

also.. ich dachte mir so du meinst des sorum:
$scene.add_sword_ani(framezahl, animationsdauer)
$scene.add_sword_ani($equip[$held["EQUIP"][4]]["ANIMAS"][$geoplug_num][0], $equip[$held["EQUIP"][4]]["ANIMAS"][$geoplug_num][1])


Und da bekomm ich nen Error "divided by 0" in Zeile 72:

Quellcode

1
if (@frame%@frameduration) == 0
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Neo-Bahamut

Himmelsgleicher

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

  • Nachricht senden

15

Sonntag, 27. September 2009, 14:20

:O
Das kann eigentlich nur Passieren, wenn die Dauer der Animation weniger Frames hat, als es Frames gibt.
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

16

Sonntag, 27. September 2009, 14:21

öhm..

mit dauer war eigentlich was andres gemeint XD...

Dauer = wenn ich 60 eingebe.. wird die Animation so langsam abgespielt.. das sie 60 frames benötigt um durchzulaufen..

Das brauche ich später für einen bullet Time Effekt ^^
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Chaosgod Espér« (27. September 2009, 14:26)


Neo-Bahamut

Himmelsgleicher

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

  • Nachricht senden

17

Sonntag, 27. September 2009, 14:51

Ja... wenn du zB 60 bei Duration und 6 bei Frames eingibst, wird jeder Frame 10 Frames (also 0,25 Sekunden) angezeigt.
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

18

Sonntag, 27. September 2009, 14:58

ok.. sieht so aus als hätten Evrey und ich es geschafft seinen Code zum laufen zu bekommen ( blödes *.ox/oy -.- )

danke dennoch für die hilfe ^^
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Social Bookmarks