PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [RMXP] Skriptänderung für das Kampfsystem gesucht/Skript für Farben in Itembeschr.



Lagbeard
22.08.2016, 19:51
Hallo, ich würde gerne das standart Kampfsystem des RPG Makers XP modifizieren: Am Anfang des Kampfes sollen die Befehle "Attack" und "Defend" nicht verfügbar sein, sodass man nur zwischen "Skill" und "Item" wählen kann. Leider habe ich keine Ahnung von Ruby, daher würde ich gerne wissen, ob diese Modifikationen durch Skriptänderungen möglich sind (und wenn ja, wie).

Zusätzlich suche ich nach einer Skripterweiterung, mit der ich einzelne Worte in der Itembeschreibung einfärben kann. Durch einges herumsuchen habe ich eines gefunden, jedoch kann dies nur den gesamten TeXt einfärben. Kennt da jemand vielleicht eines?

Soweit meine Fragen,
Lg, Lagbeard

Cepanks
22.08.2016, 20:40
Meinst du mit "Am Anfang des Kampfes" den Anfang einer Runde oder tatsächlich den Anfang des kompletten Kampfes - also, dass die Befehle in der ersten Runde nicht verfügbar sein sollen, in späteren aber schon?

Lagbeard
22.08.2016, 20:45
Sie sollen generell nicht verfügbar sein. Ich finde die Differenzierung zwischen Angriff/Verteidigen/Skill nicht flüssig. Ich würde es daher begrüßen, wenn ich nur Skills ermögliche und diesen dann die Funktionen zuweise, die ich haben möchte. Ich möchte sie daher auch nicht ausschalten oder eingrauen - Sie sollen verschwinden.

Cepanks
22.08.2016, 21:06
Okay, das ist dann leichter machbar. :)

Im Scriptslot Scene_Battle1 wird ziemlich am Anfag der Methode main das Fenster erstellt.

s1 = $data_system.words.attack
s2 = $data_system.words.skill
s3 = $data_system.words.guard
s4 = $data_system.words.item
@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
@actor_command_window.y = 160
@actor_command_window.back_opacity = 160
@actor_command_window.active = false
@actor_command_window.visible = false
Hier müsstest du die entsprechenden Elemente für "Attack" und "Defend" entfernen => @actor_command_window = Window_Command.new(160, [s2, s4])

Dann geht es weiter mit den Aktionen, die für die entsprechenden Befehle ausgeführt werden. Das passiert in der Methode update_phase3_basic_command in Scene_Battle3

# Branch by actor command window cursor position
case @actor_command_window.index
when 0 # attack
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Set action
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 0
# Start enemy selection
start_enemy_select
when 1 # skill
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Set action
@active_battler.current_action.kind = 1
# Start skill selection
start_skill_select
when 2 # guard
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Set action
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 1
# Go to command input for next actor
phase3_next_actor
when 3 # item
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Set action
@active_battler.current_action.kind = 2
# Start item selection
start_item_select
end

Der XP verwendet hierfür die ID, die der Befehl innerhalb des Auswahlfensters hat (beginnend bei 0). Da wir nur noch "Skill" und "Item" haben, sind das jetzt die Einträge mit den IDs 0 und 1. Wir müssen das case-Statement also entsprechend umbauen:

# Branch by actor command window cursor position
case @actor_command_window.index
when 0 # skill
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Set action
@active_battler.current_action.kind = 1
# Start skill selection
start_skill_select
when 1 # item
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Set action
@active_battler.current_action.kind = 2
# Start item selection
start_item_select
end

Lagbeard
22.08.2016, 21:20
Hui, alles klar, Danke :)