Fähigkeit mit variabler Wirkung + Per RGSS Angreifer herausfinden
Hallo mal wieder,
ich glaub, ich hab in dem Bereich in den letzten Tagen drei oder vier Themen erstellt... Naja, was soll's...
Fähigkeit mit variabler Wirkung:
Ich suche ein Skript oder sonst eine Möglichkeit, eine Fähigkeit zu erstellen, die eine variable Wirkung hat, abhängig von einer der $game_variables.
Das kann z.B. eine Heilfähigkeit sein, die um einen bestimmten Wert heilt, oder eine Angriffsfähigkeit, die Schaden in Höhe des Wertes der Variablen zufügt.
Ich hab es mit common events versucht, bin dabei aber auf folgendes Problem gestoßen:
Ich benutze ein modifiziertes KS, dass die SP als HP verwendet: Bei jedem Angriff werden die SP des Getroffenen geschädigt, erst wenn die SP auf 0 sind, können die HP verletzt werden.
Jetzt das Problem: Der Befehl zum einfachen Senken der SP oder HP eines Gegners (auf der dritten Seite ganz oben) zeigt den Schaden im Kampf nicht an, die SP oder HP werden einfach gesenkt.
Und der Befehl, dem Gegner Schaden zuzufügen (auf der dritten Seite der achte von oben), zeigt zwar den Schaden an, nagt aber logischerweise direkt an den HP.
Jetzt gibt es vermutlich drei Lösungsansätze:
1. Der Befehl zum Senken der SP oder HP muss den Schaden anzeigen
2. Der Schadens-Austeil-Befehl zieht zuerst die SP ab, erst wenn diese zum Zeitpunkt eines Angriffes schon auf 0 sind, zieht er HP ab
3. Ein komplett neues Skript
Per RGSS Angreifer herausfinden:
Wie kann man in Game_Battler 3 herausfinden, wer der Angreifer ist? Ich sehe öfters Dinge wie "attacker.hit" oder Ähnliches... Kann man das auch einfach in "attacker.name" oder so etwas umformen, damit ich eine ganz normale if-Abfrage ("if attacker.name == Bla") erstellen kann?
EDIT: Ich glaub's ja nicht, ich hab das Problem scheinbar lösen können: "if $game_party.actors[0] == attacker"
Ich hoffe, das stimmt so... Aber es scheint zu funktionieren.
Ich hoffe, da kann mir jemand helfen! Danke schon mal im Voraus!
ich glaub, ich hab in dem Bereich in den letzten Tagen drei oder vier Themen erstellt... Naja, was soll's...
Fähigkeit mit variabler Wirkung:
Ich suche ein Skript oder sonst eine Möglichkeit, eine Fähigkeit zu erstellen, die eine variable Wirkung hat, abhängig von einer der $game_variables.
Das kann z.B. eine Heilfähigkeit sein, die um einen bestimmten Wert heilt, oder eine Angriffsfähigkeit, die Schaden in Höhe des Wertes der Variablen zufügt.
Ich hab es mit common events versucht, bin dabei aber auf folgendes Problem gestoßen:
Ich benutze ein modifiziertes KS, dass die SP als HP verwendet: Bei jedem Angriff werden die SP des Getroffenen geschädigt, erst wenn die SP auf 0 sind, können die HP verletzt werden.
Jetzt das Problem: Der Befehl zum einfachen Senken der SP oder HP eines Gegners (auf der dritten Seite ganz oben) zeigt den Schaden im Kampf nicht an, die SP oder HP werden einfach gesenkt.
Und der Befehl, dem Gegner Schaden zuzufügen (auf der dritten Seite der achte von oben), zeigt zwar den Schaden an, nagt aber logischerweise direkt an den HP.
Jetzt gibt es vermutlich drei Lösungsansätze:
1. Der Befehl zum Senken der SP oder HP muss den Schaden anzeigen
2. Der Schadens-Austeil-Befehl zieht zuerst die SP ab, erst wenn diese zum Zeitpunkt eines Angriffes schon auf 0 sind, zieht er HP ab
3. Ein komplett neues Skript
Per RGSS Angreifer herausfinden:
Wie kann man in Game_Battler 3 herausfinden, wer der Angreifer ist? Ich sehe öfters Dinge wie "attacker.hit" oder Ähnliches... Kann man das auch einfach in "attacker.name" oder so etwas umformen, damit ich eine ganz normale if-Abfrage ("if attacker.name == Bla") erstellen kann?
EDIT: Ich glaub's ja nicht, ich hab das Problem scheinbar lösen können: "if $game_party.actors[0] == attacker"
Ich hoffe, das stimmt so... Aber es scheint zu funktionieren.
Ich hoffe, da kann mir jemand helfen! Danke schon mal im Voraus!
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Lycosa« (23. Januar 2010, 19:09)
Ich kann dir versichern, das wird nicht so funktinoieren^^...
Aber jetzt erstmal von vorne:
Kannst dir eins von beiden aussuchen, wenn du die Klasse nimmst, kannst du es nur im Call Script aufrufen und zwar so:
Wenn du das Modul nimmst, dann so:
Wenn du es dir anderst vorgestellt hast, dann musst du es genauer schildern...
Zu deiner 2. Fragen:
Was willst du damit bezwecken???
Du könntest höchstens abfragen wer als letztes angegriffen hat, ansonsten sehe ich keinen weiteren Sinn der für dich von Nützen währe.
Aber jetzt erstmal von vorne:
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 |
class Interpreter def refresh_skills(id, val) $data_skills[id].atk_f = val end end module Refresh def self.skills(id, val) $data_skills[id].akt_f = val end end |
Kannst dir eins von beiden aussuchen, wenn du die Klasse nimmst, kannst du es nur im Call Script aufrufen und zwar so:
|
|
Ruby Quellcode |
1 |
refresh_skills(id, val) |
Wenn du das Modul nimmst, dann so:
|
|
Ruby Quellcode |
1 |
Refresh.skills(id, val) |
Wenn du es dir anderst vorgestellt hast, dann musst du es genauer schildern...
Zu deiner 2. Fragen:
Was willst du damit bezwecken???
Du könntest höchstens abfragen wer als letztes angegriffen hat, ansonsten sehe ich keinen weiteren Sinn der für dich von Nützen währe.
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?
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
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
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Ich könnte noch diese Variante anbieten :)
Die einzelnen Werte (also def hit für "Hit Rate") stehen in der Helpdatei unter RPG::Skill.
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class RPG::Skill # "Hit Rate" des Skills mit der ID 2 und 3 sind gleich Variable 99 def hit case id when 2 return $game_variables[99] when 3 return $game_variables[99] else return @hit end end end |
Die einzelnen Werte (also def hit für "Hit Rate") stehen in der Helpdatei unter RPG::Skill.
Ich hab mir mindestens 1000x die scheiß Scene_Battle durchgelesen und hab nix gefunden xD How ever xD nimm das von Neo 
Mir ist grad aufgefallen, das .hit eigentlich ne Variable ist, wird sie dann einfach von der definition überschrieben, oder hab ich grad nen bug gefunden?

Mir ist grad aufgefallen, das .hit eigentlich ne Variable ist, wird sie dann einfach von der definition überschrieben, oder hab ich grad nen bug gefunden?
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?
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
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
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
hit ist keine Variable, hit ist eine Methode.
Das ist das Original.
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 |
class RPG::Skill def hit @hit end def hit=(i) @hit = i end end |
Das ist das Original.
Danke, ihr zwei!
@Hindi: Ich setze eine Variable gleich dem Schaden, der von einem gewissen Charakter im ganzen Kampf bisher verursacht wurde - Je mehr Schaden er verursacht, desto stärker wird die Fähigkeit, die ich in Problem 1 beschrieben habe
.
@Neo-Bahamut: Entweder ich bin zu blöd, das richtig einzustellen, oder es funktioniert irgendwie nicht.
Ich hab die ID und die Variable richtig eingestellt... Es stört das Skript doch nicht, dass sich die Variable im Kampf noch ändert, oder?
Auf jeden Fall verursacht das Skript immer genau 1 Schaden. Muss ich bei der Fähigkeit selbst irgendetwas Bestimmtes einstellen?
Wäre es auch möglich, den ersten oder zweiten Lösungsansatz, den ich beschrieben habe, zu benutzen? Dann könnte ich nämlich ziemlich alles andere mit common events selber machen
.
@Hindi: Ich setze eine Variable gleich dem Schaden, der von einem gewissen Charakter im ganzen Kampf bisher verursacht wurde - Je mehr Schaden er verursacht, desto stärker wird die Fähigkeit, die ich in Problem 1 beschrieben habe
.@Neo-Bahamut: Entweder ich bin zu blöd, das richtig einzustellen, oder es funktioniert irgendwie nicht.
Ich hab die ID und die Variable richtig eingestellt... Es stört das Skript doch nicht, dass sich die Variable im Kampf noch ändert, oder?
Auf jeden Fall verursacht das Skript immer genau 1 Schaden. Muss ich bei der Fähigkeit selbst irgendetwas Bestimmtes einstellen?
Wäre es auch möglich, den ersten oder zweiten Lösungsansatz, den ich beschrieben habe, zu benutzen? Dann könnte ich nämlich ziemlich alles andere mit common events selber machen
. Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Wie sieht denn dein Code jetzt aus?
Außerdem hat dein Script so einen Bug Neo.... Denn so wie du es geschrieben hast, würde es jetzt für alle Monster mit dem Skill den damag machen, den die Variable enthätl....
Aba mal nochmal ne Frage. Was bringt dies heir:
Ich werd daraus einfach nicht schlau. Ich weis zwar das = eine Zuweisung ist, aber ka xD, kannst du das mal plz ausführen?
Aba mal nochmal ne Frage. Was bringt dies heir:
|
|
Ruby Quellcode |
1 |
def hit=(i) |
Ich werd daraus einfach nicht schlau. Ich weis zwar das = eine Zuweisung ist, aber ka xD, kannst du das mal plz ausführen?
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?
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
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
Bei mir sieht das so aus:
Ich hab einfach bei den Skripten ein neues Skript erstellt, das irgendwie benannt und da das hier drin stehen:
In der Datenbank hat die Fähigkeit 82 nur bei "power" den Wert 15, sonst ist bis auf "hit rate" (die ist auf 100) alles auf 0.
Die Fähigkeit fügt genau den Schaden zu, den sie auch ohne Skript zufügen würde: 15.
Was mache ich falsch?
EDIT: Wäre es auch möglich, die oberen beiden Befehle oben auf der rechten Seite ("change enemy hp/sp") so zu ändern, dass im Kampf der verursachte Schaden an den SP/HP angezeigt wird (so, als ob der Gegner ganz normal angegriffen worden wäre)?
Das würde das Problem hier lösen und auch einige weitere Dinge für mich stark vereinfachen!
Ich hab einfach bei den Skripten ein neues Skript erstellt, das irgendwie benannt und da das hier drin stehen:
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 |
class RPG::Skill def hit case id when 82 return $game_variables[170] else return @hit end end end |
In der Datenbank hat die Fähigkeit 82 nur bei "power" den Wert 15, sonst ist bis auf "hit rate" (die ist auf 100) alles auf 0.
Die Fähigkeit fügt genau den Schaden zu, den sie auch ohne Skript zufügen würde: 15.
Was mache ich falsch?
EDIT: Wäre es auch möglich, die oberen beiden Befehle oben auf der rechten Seite ("change enemy hp/sp") so zu ändern, dass im Kampf der verursachte Schaden an den SP/HP angezeigt wird (so, als ob der Gegner ganz normal angegriffen worden wäre)?
Das würde das Problem hier lösen und auch einige weitere Dinge für mich stark vereinfachen!
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
So solls doch sein oder nicht? Oo -> "Ich suche ein Skript oder sonst eine Möglichkeit, eine Fähigkeit zu erstellen, die eine variable Wirkung hat, abhängig von einer der $game_variables. "
Zitat
Außerdem hat dein Script so einen Bug Neo.... Denn so wie du es geschrieben hast, würde es jetzt für alle Monster mit dem Skill den damag machen, den die Variable enthätl....
Was soll ich da ausführen? Ist halt ein Methodenname :o
Zitat
Ich werd daraus einfach nicht schlau. Ich weis zwar das = eine Zuweisung ist, aber ka xD, kannst du das mal plz ausführen?
@ Lycosa:
Ich habs mal gemacht, dass bei "Deal Damage" erst die SP, dann die HP abgezogen wird:
|
|
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 |
class Interpreter # Deal Damage def command_338 # Get adjusted value (resolving references and setting sign) value = operate_value(0, @parameters[2], @parameters[3]) # Process with iterator iterate_battler(@parameters[0], @parameters[1]) do |battler| # If battler exists if battler.exist? battler.hp -= [0, value-battler.sp].max battler.sp -= value # If in battle if $game_temp.in_battle # Set damage pop display battler.damage = value battler.damage_pop = true end end end # Continue return true end end |

