-
Wie der Titel schon sagt kommt hier alles über Skripte rein an Fragen.
WS
D.N.S
-
Ich stell dann mal hier die entjungfern Frage. :P
Bin mir jetzt nicht 100% sicher ob das hier rein gehöhrt oder im Event Thread.
Also es geht darum das ich einen "Status" brauche, der durch einen Skill ausgelöst wird.
Er soll mir 6 runden lang pro Runde XXX MP geben bzw für die HP version 6 Runden lang XXX HP
Wenn mir jemand einen Skript dafür empfehlen/machen könnte oder mir erklären würde wie
das mit dem VX maker geht so einen Status in der Datenbase zu machen (blick da echt nicht durch 2k3 ging das alles so einfach)
dem wäre ich sehr verbunden
Grüße Klex
-
Wenn du das Tankentei SBS benutzt, gibt es extra ein Addon für Status. Da kann man seine eigenen Statuse machen.
-
Kurz und knapp: Wie bekomme ich die Punkte "Status" und "Equip" aus dem Menü gänzlich raus?
Dankeschön im Vorraus
-
@aka Scorp :
In Scene_Menu bei
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, false) # Disable save
end
end
muss du einfach s3, s4 entfernen so das dann da steht :
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s5, s6])
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, false) # Disable save
end
end
heißt, dassu die Line @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6]) veränderst
mfg, Antares
-
Mal Antares Version als Screen gepostet zum besseren Verständnis.
Makierte einfach löschen.
(http://e.imagehost.org/0776/Skript.jpg)
Grüße Klex
-
naja s3 = Vocab::equip
s4 = Vocab::status
zu löschen ist eig nit nötig...wichtig is nur das untendrunter in der vari-folge... ;)
-
Die 2 Punkte sind nun zwar gelöscht. Aber wenn ich auf Save oder Beenden gehe, dann kommt das von EQ und Status. Wie bekomme ich dass die Punkte auch zur richtigen Funktion führen?
Mfg
-
in der update methode muss das auch noch raus genommen werden
(scheiß system)
-
Was genau müsste ich denn da tun? Ich kenne mich mit Scripten 0 aus :)
-
mach
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s5, s6])
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(2, false) # Disable save
end
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 4
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1 # Skill, equipment, status
start_actor_selection
when 2 # Save
$scene = Scene_File.new(true, false, false)
when 3 # End Game
$scene = Scene_End.new
end
end
end
#--------------------------------------------------------------------------
# * Update Actor Selection
#--------------------------------------------------------------------------
def update_actor_selection
if Input.trigger?(Input::B)
Sound.play_cancel
end_actor_selection
elsif Input.trigger?(Input::C)
$game_party.last_actor_index = @status_window.index
Sound.play_decision
case @command_window.index
when 1 # skill
$scene = Scene_Skill.new(@status_window.index)
end
end
end
muss das aussehn
oder du wartest noch ein bischen dann ist mein neues menü system fertig
-
@Hanmac:
Hab ich nicht genau das gepostet???O_ô
-
jain
dies ist nur eine kleine hilfe
ein richtiges menü system (was anders aufgebaut ist) habe ich noch nicht raus gegeben
-
@Antares
Du hast fast das gleiche gepostet. Du hast nur den ersten Teil gepostet:
@command_window = Window_Command.new(160, [s1, s2, s5, s6])
aber man muss noch was aus dem Update Teil verändern, dies hat Hanmac gezeigt:
when 0 # Item
$scene = Scene_Item.new
when 1,2,3 # Skill, equipment, status
start_actor_selection
when 4 # Save
$scene = Scene_File.new(true, false, false)
when 5 # End Game
$scene = Scene_End.new[/color]
zu dem hier:
when 0 # Item
$scene = Scene_Item.new
when 1 # Skill, equipment, status
start_actor_selection
when 2 # Save
$scene = Scene_File.new(true, false, false)
when 3 # End Game
$scene = Scene_End.new
mfg. eugene
-
@eugene222:
und du hast vergessen zu bedenken das bei dem wenn die party leer ist es den save und den game_end grau anzeigt
sowie könnte es einen fehler geben wenn das menü geöffnet wird auf einer karte die kein save erlaubt
-
Ich versteh nicht was du meinst. Ich hab Antares versucht zu erwähnen wo der unterschied zwischem seinem und dem von dir geposteten ist. Ich hab da nix selber überlegt. Vielleicht erläuterst du mir das nochmal, damit ich es nun verstehe.
mfg. eugene
-
#...
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(2, false) # Disable save
end
#...
da sich die positionen ändern, müssen auch die disabled geändert werden.
sonst färbt das falsch und es könnte sogar abstürzen
-
Ja ok.. bin immer noch verwirrt, aber hab das jetz wenigsten verstanden was du meinst.
-
Hey Leute,
Kann mir jemand bitte schnell den Link geben, zu dem Skript wo man die
aktuelle Map als Battlehintergrund sieht?? Hab den Skript in der SuFu irgendwie
nicht gefunden. Danke schonmal
Grüße Klex
-
http://www.rmxp.org/forums/index.php?topic=46044.0
Hier stell BB_Type auf 1
mfg. eugene
-
Ich hab da mal auch ne Frage. Ich bin nicht der beste Skripter und versuch etwas für Klex auf die Beine zu stellen. Nur leider hab ich ein Problem. Ich habe 5 Ifs hintereinander die so aussehen:
if $game_variables[$V1] <= -100
self.contents.font.color = text_color(18)
self.contents.draw_text(385,40+5 , 120, WLH, 'Feindlich')
end
if $game_variables[$V1] > -100
self.contents.font.color = text_color(17)
self.contents.draw_text(385,40+5 ,120, WLH, 'Neutral')
end
if $game_variables[$V1] > =100
self.contents.font.color = text_color(24)
self.contents.draw_text(385,40+5 , 120, WLH, 'Freundlich')
end
if $game_variables[$V1] >= 200
self.contents.font.color = text_color(03)
self.contents.draw_text(385,40+5 , 120, WLH, 'Wohlwollend')
end
if $game_variables[$V1] >= 300
self.contents.font.color = text_color(11)
self.contents.draw_text(385,40+5 , 120, WLH, 'Ehfürchtig')
end
Wenn die Variable -100 oder weniger ist, wird Feindlich ganz normal angezeigt.
Neutral wird auch ganz normal angezeigt.
Aber wenn ich die Variable so hoch ist, das Freundlich angezeigt werden soll, oder höher, überlappt dies alles Neutral.
Das sieht dann halt so aus. Es steht Neutral, auf Neutral Freundlich, auf Freundlich Wohlwollend.
Ich weiß nicht wie ich das weg bekomme. Ich hoffe, dass mir schnell geholfen wird, denn ich
muss es heute schon fertig haben.
mfg. eugene
-
Ich hab zwar keine Ahnung von Ruby, bzw. von dem (enter name) *immer Namen vergess*. xD
Aber ich denke ich weiß, welchen Fehler du gemacht hast.
Du hast ja normal, wenn die Variable über -100 ist, ne?
Und wenn sie 100 erreicht hat, ist sie ja immer noch über -100.
Du musst also alles, was nur einen bestimmten Bereich haben soll auch nur einen bestimmten Bereich zuordnen.
Also normal zwischen -99 und 99.
Hoffe du weißt was ich meine.
-
Ja dies ist ja halt das Problem, ich kann dies keinem Bereich zuordnen. Ich weiß nicht wie das geht. Aber weil ich ja 5 Ifs habe, sollte dies ja kein Problem seien, sind ja keine Else eingebaut. Das Problem ist nur, dass der Text irgentwie schon vorher gespeichert wird. Aber wenn es doch die Möglichkeit gebe:
Bereich: -99 - 99, würde dies vielleicht klappen.
-
Gibts denn da kein Bindungswort wie "and" oder Bindungszeichen? oO
Aber es ist ein Problem. (5 Ifs)
Es sind ja dann zur Zeit mehrere IF-Anweisungen erfüllt:
Variable größer -100? Ja - Normal erfüllt.
Variable größer -100? Ja - Normal; Variable größer gleich 100? Ja - Normal und Freundlich erfüllt.
Variable größer -100? Ja - Normal; Variable größer gleich 100? Ja - Normal und Freundlich; Variable größer gleich 200? Ja - Normal, Freundlich und Wohlwollend erfüllt.
etc.
-
Also, durch die Hilfe, von Hanmac hab ich dies hinbekommen, habs wieder mit elsifs gemacht. Es hat früher geklappt, weil ich statt dem draw text immer dies hatte:
$F1 = "Neutral" usw...
naja es klappt nun danke an alle.
-
Gelöscht
-
kannste doch auch als skill machen. gibst deinem skill ein ce in dem
die werte des gegners in variablen gespeichert werden. und dann mit
dem befehl \v in einer nachricht abzulesen ist.
-
Kann mir vlt. einer das VX und XP Chars gleichzeitig benutzen-Skript erklären?
Ich bekomms net hin^^
-
Futura, schick mir mal ein Link, ich werd versuchen dir dann zu helfen.
-
http://rpgvx.de/index.php?show=wrapper&ID=7&sourceID=59
Hier, da ist er
-
Ist an sich ganz leicht. Setze einfach vor dem Namen der Datei das hier: #
Ist so ähnlich wie bei den anderen normalen VX Charas, da muss ja ein $ davor. Bei den XP Charas setzt du die # davor.
mfg. eugene
-
Mal ne Frage. Gibt es ein Skript, mit dem man die Memorize Funktion des 2K's, also die Funktion, dass die BGM gemerkt wird und dann später wieder aufrufbar ist, wiederbringt?
MFG
Claine
-
Moin Leute,
Ich hab da mal ein Problem mit dem Battle Back Skript
#==============================================================================
# ¦ VX-RGSS2-7 Change Battle Background [Ver.1.0.0] by Claimh
#------------------------------------------------------------------------------
# English Translation By: Elemental Crisis [http://www.rpgcrisis.net]
#------------------------------------------------------------------------------
# Changes the battle background.
#==============================================================================
module BattleBack
# Select Battle Background Type
# 0:Current map with wave effect for battle background (Default VX Style).
# 1:Current map used as battle background.
# 2:Uses a picture for battle background.
BB_TYPE = 2
# Display Battle Floor
BT_FLOOR = false
# Picture (Only required if BB_TYPE = 2)
M_B_BACK = {
# Map ID => "Picture File Name(Graphics/System)"
27 => "Beach01",
36 => "Mine01",
89 => "sea02",
91 => "sea02",
92 => "sea02",
44 => "Monster01",
45 => "Kaputteshaus01",
46 => "Kaputteshaus01",
47 => "Kaputteshaus01",
48 => "Kaputteshaus01",
49 => "Höhle02",
50 => "Höhle01",
55 => "Höhle01",
51 => "Berg"
100 => "Beach01",
}
end
#==============================================================================
# ¦ Spriteset_Battle
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# ? Creating Battle Back Sprite
#--------------------------------------------------------------------------
def create_battleback
case BattleBack::BB_TYPE
when 0
source = $game_temp.background_bitmap
bitmap = Bitmap.new(640, 480)
bitmap.stretch_blt(bitmap.rect, source, source.rect)
bitmap.radial_blur(90, 12)
@battleback_sprite = Sprite.new(@viewport1)
@battleback_sprite.bitmap = bitmap
@battleback_sprite.ox = 320
@battleback_sprite.oy = 240
@battleback_sprite.x = 272
@battleback_sprite.y = 176
@battleback_sprite.wave_amp = 8
@battleback_sprite.wave_length = 240
@battleback_sprite.wave_speed = 120
when 1
source = $game_temp.background_bitmap
bitmap = Bitmap.new(640, 480)
bitmap.stretch_blt(bitmap.rect, source, source.rect)
@battleback_sprite = Sprite.new(@viewport1)
@battleback_sprite.bitmap = bitmap
@battleback_sprite.ox = 320
@battleback_sprite.oy = 240
@battleback_sprite.x = 272
@battleback_sprite.y = 176
when 2
@battleback_sprite = BattleBackSprite.new(@viewport1)
end
end
#--------------------------------------------------------------------------
# ? Creating Battle Floor Sprite
#--------------------------------------------------------------------------
alias create_battlefloor_mbb create_battlefloor
def create_battlefloor
create_battlefloor_mbb if BattleBack::BT_FLOOR
end
#--------------------------------------------------------------------------
# ? Delete Battle Floor Sprite
#--------------------------------------------------------------------------
alias dispose_battlefloor_mbb dispose_battlefloor
def dispose_battlefloor
dispose_battlefloor_mbb if BattleBack::BT_FLOOR
end
#--------------------------------------------------------------------------
# ? Update Battle Floor Sprite
#--------------------------------------------------------------------------
alias update_battlefloor_mbb update_battlefloor
def update_battlefloor
update_battlefloor_mbb if BattleBack::BT_FLOOR
end
end
#==============================================================================
# ¦ BattleBackSprite
#==============================================================================
class BattleBackSprite < Sprite
# Background Screen Size
WIDTH = 544.00 #original = 544
HEIGHT = 416.00 #original = 416
#--------------------------------------------------------------------------
# ? Object Initialization
# viewport : viewport
#--------------------------------------------------------------------------
def initialize(viewport = nil)
super(viewport)
self.bitmap = Cache.system(BattleBack::M_B_BACK[$game_map.map_id])
# Zoom is carried out according to picture size.
@x_zoom = WIDTH / self.bitmap.width
@y_zoom = HEIGHT / self.bitmap.height
@zoom = @x_zoom > @y_zoom ? @x_zoom : @y_zoom
# Zoom is carried out.
self.zoom_x = @zoom
self.zoom_y = @zoom
# Made into central display.
self.ox = self.bitmap.width / 2
self.oy = self.bitmap.height / 2
self.x = (self.bitmap.width / 2) * @zoom
self.y = (self.bitmap.height / 2) * @zoom
end
end
Wenn ich jetzt das Spiel starte kommt folgende Fehlermeldung. (siehe angehängtes Bild)
Wenn ich aber die 100 Map aus dem Skript wegnehme läuft wieder alles normal.
Sobald ich aber eine map hinzufüge, die eine 3 Stellige Map ID hat, kackt der Skript ab.
Könnte man das irgendwie ändern? Weil nur 99 Maps zu haben is jetzt nicht so mein Ding.
Vielen dank schon mal im Vorraus.
Grüße Klex
[gelöscht durch Administrator]
-
Also wie ich es sehe, ist in Reihe 37 (Die auf die der Fehler hinweist)
damit belegt, dass schon ein Bild definiert wird. und zwar "Beach 01"
Vllt überschreibst du etwas? oO
Ich hab mir das Skript jetzt nicht so genau angesehen und weiß nicht wie es
funktioniert. Aber in Reihe 37 steht:
100 => "Beach01"
Darum nehme ich an, dass der BGefehl den du geben willst, schon irgendwie mit der 100
verbunden ist, und es einen crash gibt
Sk!p
-
Wenn ich überall eine 0 drannhänge
also Bsp. 089 / 023 / 014
kommt auch die gleiche Fehlermeldung
nur statt Zeile 37 diesmal 25
Grüße Klex
-
Also hab da ma ne Frage zu Scripten:
Wie kann ichs machen das ich bei Scene_Item Equip und Status bei abbruch nit mehr ins normale menü komme sondern direkt zurück zur Map? wers genau erklärt haben will hier:
http://rpgvx.de/forum.php?topic=2465.0 (http://rpgvx.de/forum.php?topic=2465.0)
-
hy hab frage:
ich füge neue save methoden hinzu
soll ich das in das Haubt modul
in ein save modul
oder in eine save klasse (als self. methode)
(das sind sachen wie auto und quick save)
-
Hey Hanmac, nur leider, sagt mir das ganze nichts.
Haupt Modul?
Save Modul?
Save Klasse?
Ich würde dir helfen, nur weiß ich nicht, wo die Unterschiede liegen und obs Vorteile und Nachteile gibt.
mfg. eugene
-
Hi, ich wollte mal fragen ob man die anzahl der auszrüsten teil ändern kann?
also das man z.B. noch Hosen auswählen kann oder Handschuhe ?
so das jedes item ein eig. slot halt hat.
danke im voraus :)
-
Der einfachste weg ist, einen nicht zu brauchenden Eintrag einfach abzuändern.
Wenn man keinen Helm braucht, schreibt man einfach Hose hin, und bringt
die Hosen ins Spiel. Ist ja egal ob in der Database dann Helm steht, im Spiel ist
es eine Hose, weils ja da steht.
Solltest du aber auch keinen Eintrag verzichten wollen, solltest du dich vllt
mal an einen Scripter wenden.
Sk!p
-
@oshi
Es gibt so ein Skript von KGC, ich such es dir mal raus.
http://www.mediafire.com/download.php?jxouo3iebco
Lad dir das runter, das Skript heißt KGC_EquipExtension.
mfg eugene
-
@Klex:
kA, ob es noch aktuell ist, aber du hast nach 51 => "Berg" ein Komma vergessen.
@Hanmac:
Was ist ein "Haubt modul" und eine self.-Methode wird Klassenmethode genannt.
Zur Frage: Als Module. Klassen werden mit Absicht auf Instanzierung und der Möglichkeit mehrere Klasseninstanzen z.B. mit verschiedenen Werten der Attribute zu haben - ein Modul hingegen nicht. Siehe Modul-Artikel der RubyWiki (http://wiki.ruby-portal.de/Modul).
-
EE OO
Was machst du denn hier?!
Ich seh Geister verdammt xD
Sk!p
-
Ma ne Frage:
Wie muss ich das Window_Base Script so umschreiben, dass ich anstatt den faces von den facesets im Menü die Charaktergrafik hab...
-
Hi ich hab mal eben 2 Fragen:
1. Wie genau ändere ich bei dem Good vs. Evil Skript die Gesinnung. (zb. Gut zu Neutral usw...)
2. Giebt es ein Skript oder eine Möglichkeit das Maximum an Leuten, die im Kampf und im Menü in der Gruppe sind, zu erhöhen?
Gruß & Danke im Voraus: Samael
PS: Guten Rutsch
-
Hi,
also ich hätte da eine Bitte: Ich möchte im Menu einen neuen Eintrag machen (das bring ich, jetzt kommt der Teil den ich nicht bring xD) wo ich einen Held auswählen kann (der Held-ID sollte in einer Var festgehalten werden) und wo der Rest dann über ein Common-Event läuft. D.h. es soll das Common-Event gestartet werden.
Wär schön wenn hier jemand ne Lösung hätte.
mfg Ryu
-
Hi,
ich hab nun ein problem mit den Anti-Autoschatten skript: Es funktioniert nicht. Wo, Wie, Wann, Warum könnt ihr hier (http://rpgvx.de/forum.php?topic=216.msg35847#new) nachlesen.
mfg Ryu
Ryu bitte keine Doppelposts > Forenregeln
~Sk!p
-
is doch leicht xD
ich machs dir bis morgen ok?
is jetzt auf deinen ersten post bezogen ne
EDIT
es werden immer die ersten 4 actors aus der db angezeigt.
is egal ob die inner gruppe sind oder nich.
kannst es dir ja mal anschauen.
wenn was anders is als es sein sollte, bitte nich hauen.
http://www.speedshare.org/download.php?id=47FA3C0E3
-
Hi ich bins mal wieder^^
Ich hab inzwischen so ziemlich jeden Skript angeguckt und keiner macht das was ich suche...
Kennt ihr ein Skript, das entweder es mir erlaubt bis zu in etwa 20 Charaktere in einer Gruppe zu haben, so das sie mir mit dem Hinterherlaufskript folgen, sie im Kampf nutzbar sind und auch im Menü angezeigt Werden (Fill. mit Pfeilen zum Scrollen oder so) und fill. auch im Save Menü.
Oder ein Skript, das mir erlaubt zwischen diesen ca. 20 Gruppenmitglieder nach Finalfantasy Art zu Wechseln?
Hoffe ihr versteht was ich meine, da ich im verlauf meines Games auch Riesenschlachten Machen will, mit gut 20 Soldaten auf der eigenen und auch auf gegnerischer Seite.
Gruß: Samael
-
Samael, KGC hat dafür extra ein Skript gemacht, damit sie dir hinterger laufen, heißt Catepillar. Und wie das mit den Party Swichten heißt, weiß ich net, aber es gibt eine Demo mit allen Skripten von KGC.
Unzwar hier: http://www.mediafire.com/download.php?jxouo3iebco
-
Aso verzeihug!!!
Ich hab heutmorgen nur beiläufig durchgeblättert, das muss mir entgangen sein.
Schuldigung nochma!!!
Gruß und großes SRY: Samael
-
Warum denn verzeihung, du hast schließlich eine berechtigte Frage gestellt.
mfg. eugene
-
Bin fast zufrieden mit dem KGC_LargeParty Skript.
Nur kann mir einer sagen, wie ich das weg bekomme mit dem Gruppewächseln Menü?
Wel da ich nu meine 20 Chars auf einmal nutzen kann brauch ich das net mehr.
Aber das Menü, will ich trozdem nicht im Spiel lassen.
Was muss ich da Löschen?
-
Wenn du nur das Skript nimmst, müsste so ein Menu auch nicht da sein.
-
Ich habs raugelöscht und nun startet das game nichtmer... habs dann rückgängig gemacht.
Was muss ich denn genau löschen?
-
kopier einfach die Skripts die du brauchst rüber in dein gAME, dann sollte es klappen.
-
OK hatt geklappt!!!
Vielen Dank!
-
Hi ich suche das Side battle view Script von Dervulfman kann mir das jemand schicken??
Danke schon mal
hoffe war nicht im falschen forum :/
-
Wenn du es kennst, und sogar weißt, von wem es ist.
Dann Google doch einfach mal danach? oO
Ist jetzt nicht böse gemeint, aber man kann auch mal eine
kleinigkeit selbst machen.
Sk!p
-
Ja Sk!p das habe ich schon gemacht, aber habe ja nix gefunden ...
-
Morgen allerseits!
Ich hab' da ein kleines Problem mit dem "KGC Battlecount-Script". oô
Da isses schonmal:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ ? Battle-Related Counters - KGC_BattleCount2 ? VX ?
#_/ ? Last Update: 2008/04/13 ?
#_/ ? Original Version by KGC ?
#_/ ? Version 2 by Mr. Anonymous ?
#_/-----------------------------------------------------------------------------
#_/ This script processes a number of battle-related counters, such as Battle
#_/ Count, Victory Count, Escape Count, and more. Due to the nature of this
#_/ script, it's use is up to the creator.
#_/=============================================================================
#_/ ? Event Commands ?
#_/ These commands are used in "Script" function in the third page of event
#_/ commands under "Advanced".
#_/
#_/ * reset_battle_count
#_/ Resets the battle counter.
#_/
#_/ * get_defeat_count(EnemyID, VariableID)
#_/ Retrieves the amount of a specified defeated enemy and stores it in the
#_/ given variable.
#_/
#_/ * get_dead_count(ActorID, VariableID)
#_/ Retrieves the amount of times a specified actor has "died" and stores it
#_/ in the given variable.
#_/
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#==============================================================================#
# ? Customization ? #
#==============================================================================#
module KGC
module BattleCount
# Note: The value to the right of each of these is the in-game variable you
# desire to have these counters stored in.
# ? Battles Counter ?
# Retrieves the current battle count and stores it in the given variable.
BATTLE_COUNT = 16
# ? Victories Counter ?
# Retrieves the current amount of victories and stores it in the given
# variable.
VICTORY_COUNT = 17
# ? Escapes Counter ?
# Retrieves the amount of escapes and stores it in the given variable.
ESCAPE_COUNT =18
# ? Losses Counter ?
# Retrieves the amount of loses and stores it in the given variable.
LOSE_COUNT = 19
# ? Total Defeated Enemies Counter ?
# Retrieves the total amount of defeated enemies and stores it in the given
# variable.
TOTAL_DEFEAT_COUNT = 20
# ? Total Deaths Counter ?
# Retrieves the total amount of times the party has died (by member) and
# stores it in the given variable.
TOTAL_DEAD_COUNT = 21
end
end
#------------------------------------------------------------------------------#
$imported = {} if $imported == nil
$imported["BattleCount"] = false
#==============================================================================#
# ? KGC::Commands ? #
#==============================================================================#
module KGC
module Commands
module_function
#--------------------------------------------------------------------------
# ? Reset Battle Count
#--------------------------------------------------------------------------
def reset_battle_count
$game_system.reset_battle_count
end
#--------------------------------------------------------------------------
# ? Aquire Battle Count
#--------------------------------------------------------------------------
def get_battle_count=(count)
$game_variables[KGC::BattleCount::BATTLE_COUNT] = count
return count
end
#--------------------------------------------------------------------------
# ? Aquire Victory Count
#--------------------------------------------------------------------------
def get_victory_count=(count)
$game_variables[KGC::BattleCount::VICTORY_COUNT] = count
return count
end
#--------------------------------------------------------------------------
# ? Aquire Escape Count
#--------------------------------------------------------------------------
def get_escape_count=(count)
$game_variables[KGC::BattleCount::ESCAPE_COUNT] = count
return count
end
#--------------------------------------------------------------------------
# ? Aquire Lose Count
#--------------------------------------------------------------------------
def get_lose_count=(count)
$game_variables[KGC::BattleCount::LOSE_COUNT] = count
return count
end
#--------------------------------------------------------------------------
# ? Aquire Specified Defeated Enemy
# enemy_id : Enemy ID
# variable_id : Variable ID
#--------------------------------------------------------------------------
def get_defeat_count(enemy_id, variable_id = 0)
count = $game_system.defeat_count(enemy_id)
$game_variables[variable_id] = count if variable_id > 0
return count
end
#--------------------------------------------------------------------------
# ? Aquire Total Defeat Count
#--------------------------------------------------------------------------
def get_total_defeat_count=(count)
$game_variables[KGC::BattleCount::TOTAL_DEFEAT_COUNT] = count
return count
end
#--------------------------------------------------------------------------
# ? Aquire Dead Count
# actor_id : Actor ID
# variable_id : Variable ID
#--------------------------------------------------------------------------
def get_dead_count(actor_id, variable_id = 0)
count = $game_system.dead_count(actor_id)
$game_variables[variable_id] = count if variable_id > 0
return count
end
#--------------------------------------------------------------------------
# ? Aquire Total Dead Count
#--------------------------------------------------------------------------
def get_total_dead_count=(count)
$game_variables[KGC::BattleCount::TOTAL_DEAD_COUNT] = count
return count
end
end
end
class Game_Interpreter
include KGC::Commands
end
#==================================End Class===================================#
#==============================================================================
# ¦ Game_System
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# ? Open Global Variables
#--------------------------------------------------------------------------
attr_writer :defeat_count # Defeat Count
attr_writer :dead_count # Dead Count
#--------------------------------------------------------------------------
# ? Initialize
#--------------------------------------------------------------------------
alias initialize_KGC_BattleCount initialize
def initialize
initialize_KGC_BattleCount
reset_battle_count
end
#--------------------------------------------------------------------------
# ? Reset
#--------------------------------------------------------------------------
def reset_battle_count
battle_count = 0
victory_count = 0
escape_count = 0
lose_count = 0
@defeat_count = []
@dead_count = []
end
#--------------------------------------------------------------------------
# ? Reset Battle Count
#--------------------------------------------------------------------------
def battle_count
reset_battle_count if $game_variables[KGC::BattleCount::BATTLE_COUNT] == nil
return $game_variables[KGC::BattleCount::BATTLE_COUNT]
end
#--------------------------------------------------------------------------
# ? Reset Victory Count
#--------------------------------------------------------------------------
def victory_count
reset_battle_count if $game_variables[KGC::BattleCount::VICTORY_COUNT] == nil
return $game_variables[KGC::BattleCount::VICTORY_COUNT]
end
#--------------------------------------------------------------------------
# ? Reset Escape Count
#--------------------------------------------------------------------------
def escape_count
reset_battle_count if $game_variables[KGC::BattleCount::ESCAPE_COUNT] == nil
return $game_variables[KGC::BattleCount::ESCAPE_COUNT]
end
#--------------------------------------------------------------------------
# ? Reset Lose Count
#--------------------------------------------------------------------------
def lose_count
reset_battle_count if $game_variables[KGC::BattleCount::LOSE_COUNT] == nil
return $game_variables[KGC::BattleCount::LOSE_COUNT]
end
#--------------------------------------------------------------------------
# ? Reset Defeat Count
# enemy_id : Enemy ID
#--------------------------------------------------------------------------
def defeat_count(enemy_id)
reset_battle_count if @defeat_count == nil
@defeat_count[enemy_id] = 0 if @defeat_count[enemy_id] == nil
return @defeat_count[enemy_id]
end
#--------------------------------------------------------------------------
# ? Add defeat Count
# enemy_id : Enemy ID
#--------------------------------------------------------------------------
def add_defeat_count(enemy_id)
reset_battle_count if @defeat_count == nil
@defeat_count[enemy_id] = 0 if @defeat_count[enemy_id] == nil
@defeat_count[enemy_id] += 1
$game_variables[KGC::BattleCount::TOTAL_DEFEAT_COUNT] = @defeat_count[-1]
end
#--------------------------------------------------------------------------
# ? Calculate Total Defeat Count
#--------------------------------------------------------------------------
def total_defeat_count
n = 0
for i in 1...$data_enemies.size
n += defeat_count(i)
end
return n
end
#--------------------------------------------------------------------------
# ? Reset Dead Count
# actor_id : Actor ID
#--------------------------------------------------------------------------
def dead_count(actor_id)
reset_battle_count if @dead_count == nil
@dead_count[actor_id] = 0 if @dead_count[actor_id] == nil
return @dead_count[actor_id]
end
#--------------------------------------------------------------------------
# ? Add Dead Count
# actor_id : Actor ID
#--------------------------------------------------------------------------
def add_dead_count(actor_id)
reset_battle_count if @dead_count == nil
@dead_count[actor_id] = 0 if @dead_count[actor_id] == nil
@dead_count[actor_id] += 1
$game_variables[KGC::BattleCount::TOTAL_DEAD_COUNT] = @dead_count[-1]
end
#--------------------------------------------------------------------------
# ? Calculate Total Dead Count
#--------------------------------------------------------------------------
def total_dead_count
n = 0
for i in 1...$data_actors.size
n += dead_count(i)
end
return n
end
end
#==================================End Class===================================#
#==============================================================================
# ¦ Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ? Add Battle Count
#--------------------------------------------------------------------------
alias post_start_KGC_BattleCount post_start
def post_start
$game_variables[KGC::BattleCount::BATTLE_COUNT] += 1
post_start_KGC_BattleCount
end
#--------------------------------------------------------------------------
# ? Define Battle Count
#--------------------------------------------------------------------------
def battle_count
return $game_variables[KGC::BattleCount::BATTLE_COUNT]
end
#--------------------------------------------------------------------------
# ? Battle End
# result : Battle Result (0:Victory 1:Escape 2:Lose)
#--------------------------------------------------------------------------
alias battle_end_KGC_BattleCount battle_end
def battle_end(result)
#unless @battle_count_added
case result
when 0 # Victory
$game_variables[KGC::BattleCount::VICTORY_COUNT] += 1
when 1 # Escape
$game_variables[KGC::BattleCount::ESCAPE_COUNT] += 1
when 2 # Lose
$game_variables[KGC::BattleCount::LOSE_COUNT] += 1
end
# Add Dead Enemy
$game_troop.dead_members.each { |enemy|
$game_system.add_defeat_count(enemy.enemy.id)
}
#@battle_count_added = true
#end
battle_end_KGC_BattleCount(result)
end
#--------------------------------------------------------------------------
# ? Execute Action
#--------------------------------------------------------------------------
alias execute_action_KGC_BattleCount execute_action
def execute_action
last_exist_actors = $game_party.existing_members
execute_action_KGC_BattleCount
# Add Dead Actor
dead_actors = last_exist_actors - $game_party.existing_members
dead_actors.each { |actor|
$game_system.add_dead_count(actor.id)
}
end
end
#==================================End Class===================================#
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ The original untranslated version of this script can be found here:
# http://f44.aaa.livedoor.jp/~ytomy/tkool/rpgtech/php/tech.php?tool=VX&cat=tech_vx/base_function&tech=battle_count
#_/=============================================================================
#_/ Version2 brought to you by Mr. Anonymous.
# http://mraprojects.wordpress.com
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
Das Script schleicht sich immer in mein Menü... X_x
(Damit ärgere ich mich im Moment sowieso genug rum >_>")
Aber zu meiner eigentlichen Frage:
Kann mir jemand verraten, wie ich das Script "abschalte"?
Ich würde es gerne nur per Event wieder "anschalten" können.^^
Falls sich jemand berufen sieht, sich das mal anzusehen,
wäre ich auf jeden Fall sehr dankbar!
MfG,
Duke
-
Also meiner Meinung nach würde es gehn wenn man das komplette Script in einen Switch schaltet, den Man ingame an und ausschalten kann per event...
Bin jetz kein Profiscripter und weiß auch nit obs so möglich is... aber ich würds so machen :
Das komplette Script einfach mit
If $game_switches[1] = true
script blablabla
end
einschließen ..
-
Hallo allerseits,
Also ich habe eine Frage zum "Actor Profile Information"-Script. Dieses Skript dient dazu, dass wenn man im Status-Menü eines Charakters
"Enter" drücken kann und dann in ein Menü mit zusätzlichen Informationen über den Actor kommt.
Actor Profile Information-Script:
#===============================================================
# ? Actor Profile Information - CC_ExtendedActorInfo ? VX ?
# ? Version 1.0.0 by Claimh ?
# ? Translation by Mr. Anonymous ?
#------------------------------------------------------------------------------
# This script adds a character profile screen for extended actor information.
# This screen is called from the status screen by pressing the "C" button
# (by default). This information displayed on this screen is customized in
# this script itself below (in the Customization block).
#==============================================================================
module Chara_Review
#==============================================================================#
# ? Customization ? #
#==============================================================================#
# If you have more than 8 actors in your game, you may add additional lines
# to each of these fields.
#----------------------------------------------------------------------------
# Call Screen Input Key
#----------------------------------------------------------------------------
# This allows you to change the button/key pressed to call the extended
# actor information screen from the status screen. (Default: C)
CHENGE_KEY = Input::C
#--------------------------------------------------------------------------
# ? Customize Age
#--------------------------------------------------------------------------
CHARA_AGE = {
# Age is the first field to the right of the profile image.
# ActorID => "Age"
5 => "20",
6 => "22",
7 => "24",
8 => "16"
}
#--------------------------------------------------------------------------
# ? Customize Actor's Origin
#--------------------------------------------------------------------------
CHARA_FROM = {
# "From" or Origin is the second field to the right of the profile image.
# ActorID => "Place"
5 => "Rei",
6 => "Tsuin",
7 => "Tsuin",
8 => "Kouin"
}
#--------------------------------------------------------------------------
# ? Customize Height
#--------------------------------------------------------------------------
CHARA_H = {
# Height is the third field to the right of the profile image.
# ActorID => "Height"
5 => "5 Feet 8 Inches",
6 => "4 Feet 9 Inches",
7 => "5 Feet 1 Inch",
8 => "5 Feet 4 Inches"
}
#--------------------------------------------------------------------------
# ? Customize Weight
#--------------------------------------------------------------------------
CHARA_W = {
# Weight is the fourth field to the right of the profile image.
# ActorID => "Weight"
5 => "125 Pounds",
6 => "87 Pounds",
7 => "93 Pounds",
8 => "96 Pounds"
}
#--------------------------------------------------------------------------
# ? Customize Profile Information
#--------------------------------------------------------------------------
CHARA_INFO = {
# Profile Information is displayed beneath the actor's graphic file.
# ActorID => "Information Text"
5 => "Ryoku, is a brave strong warrior who always needs to save Kione. He is
a man with great holy powers. In time portals he gets his Jikoku Sword with slots
for the Jikoku Crystals to fit into. All the girls love Ryoku, for no real reason.",
6 => "No one knows much about him, but he knows alot about them. Because
of his weight and size he is able to move swiftly, but is also deadly with his
hands. He seems to have a connection with Munaca, only talking to and helping her.",
7 => "Munaca, is a some what shy girl with wind powers. She seems to know
the mystery guy, she is confused about him and wants to know what goes on in
his head. Her wind powers also get stronger when the people are in danger.",
8 => "Kione, is a girl with the ability to manipulate water, she also loves
the mystery guy who doesn`t even care about her. She is able to heal people,
but isn`t very strong. She always near the mystery guy... Why does she bother."
}
#--------------------------------------------------------------------------
# ? Customize Face/Profile Image
#--------------------------------------------------------------------------
# Image Type Toggle
# This toggle allows to use either the default Face graphic that is set up
# in the Actor tab in the database, or a custom image of your choosing.
# true = Custom images are used.
# false = The actor's face graphic is used.
BSTUP = false
# Custom Profile Graphics ("Graphics/Face" directory)(If BSTUP = true)
BSTUP_FILE = {
# ActorID => "Profile Image" (Without image format extension)
# You may also add more images for actors after the fourth line, if needed.
5 => "actor1",
6 => "actor1",
7 => "actor1",
8 => "actor1"
}
#----------------------------------------------------------------------------
# END Customization
#----------------------------------------------------------------------------
end
#==============================================================================
# ? Window_Charactor
#------------------------------------------------------------------------------
# ? Define Window
#==============================================================================
class Window_Charactor < Window_Base
#--------------------------------------------------------------------------
# ? Initialize Profile Window
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 544, 416)
self.contents = Bitmap.new(width - 32, height - 32)
refresh(actor)
end
#--------------------------------------------------------------------------
# ? Determine BSTUP Type
#--------------------------------------------------------------------------
def refresh(actor)
self.contents.clear
return if actor.nil?
if Chara_Review::BSTUP
refresh_bstup(actor) # If BSTUP = true
else
refresh_face(actor) # If BSTUP = false
end
end
#--------------------------------------------------------------------------
# ? Draw Parameters and Profile Image (BSTUP)
#--------------------------------------------------------------------------
def refresh_bstup(actor)
draw_face_picture(Chara_Review::BSTUP_FILE[actor.id], 0, 0)
self.contents.font.color = system_color
self.contents.draw_text(280, 30, 80, WLH, "Name:")
self.contents.draw_text(280, 60, 80, WLH, "Age:")
self.contents.draw_text(280, 90, 80, WLH, "From:")
self.contents.draw_text(280, 120, 80, WLH, "Height:")
self.contents.draw_text(280, 150, 80, WLH, "Weight:")
self.contents.font.color = normal_color
draw_actor_name(actor, 380, 30)
self.contents.draw_text(380, 60, 80, WLH, Chara_Review::CHARA_AGE[actor.id])
self.contents.draw_text(380, 90, 180, WLH, Chara_Review::CHARA_FROM[actor.id])
self.contents.draw_text(380, 120 , 200, WLH, Chara_Review::CHARA_H[actor.id])
self.contents.draw_text(380, 150, 250, WLH, Chara_Review::CHARA_W[actor.id])
draw_enter_text(20, 300, 500, WLH, Chara_Review::CHARA_INFO[actor.id])
end
#--------------------------------------------------------------------------
# ? Draw Parameters and Profile Image (FACE)
#--------------------------------------------------------------------------
def refresh_face(actor)
draw_actor_face(actor, 8, 32)
self.contents.font.color = system_color
self.contents.draw_text(200, 30, 80, WLH, "")
self.contents.draw_text(200, 60, 80, WLH, "Age:")
self.contents.draw_text(200, 90, 80, WLH, "From:")
self.contents.draw_text(200, 120, 80, WLH, "Height:")
self.contents.draw_text(200, 150, 80, WLH, "Weight:")
self.contents.font.color = normal_color
draw_actor_name(actor, 300, 30)
self.contents.draw_text(300, 60, 80, WLH, Chara_Review::CHARA_AGE[actor.id])
self.contents.draw_text(300, 90, 180, WLH, Chara_Review::CHARA_FROM[actor.id])
self.contents.draw_text(300, 120 , 200, WLH, Chara_Review::CHARA_H[actor.id])
self.contents.draw_text(300, 150, 250, WLH, Chara_Review::CHARA_W[actor.id])
draw_enter_text(20, 200, 500, WLH, Chara_Review::CHARA_INFO[actor.id])
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
# ? Draw Entered Text
#--------------------------------------------------------------------------
def draw_enter_text(x, y, width, height, text)
info_box = text.split(/\n/)
for i in 0...info_box.size
self.contents.draw_text( x, y+i*WLH, width, WLH, info_box)
break if (y+i*WLH) > (self.height-WLH)
end
end
#--------------------------------------------------------------------------
# ? Draw Face Graphic(Graphics/Face)
#--------------------------------------------------------------------------
def draw_face_picture(file_name, x, y)
bitmap = Cache.face(file_name)
cw = bitmap.width
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x, y, bitmap, src_rect)
end
end
#==============================================================================
# ? Scene_Charactor
#------------------------------------------------------------------------------
# ? Define Methods
#==============================================================================
class Scene_Charactor < Scene_Base
#--------------------------------------------------------------------------
# ? Initialize Actor
# actor_index : Actor ID
#--------------------------------------------------------------------------
def initialize(actor_index = 0)
@actor_index = actor_index
end
#--------------------------------------------------------------------------
# ? Create Menu Background
#--------------------------------------------------------------------------
def start
super
create_menu_background
@actor = $game_party.members[@actor_index]
@status_window = Window_Charactor.new(@actor)
end
#--------------------------------------------------------------------------
# ? Dispose Status Window
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@status_window.dispose
end
#--------------------------------------------------------------------------
# ? Return Scene
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Status.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Next Actor
#--------------------------------------------------------------------------
def next_actor
@actor_index += 1
@actor_index %= $game_party.members.size
$scene = Scene_Charactor.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Previous Actor
#--------------------------------------------------------------------------
def prev_actor
@actor_index += $game_party.members.size - 1
@actor_index %= $game_party.members.size
$scene = Scene_Charactor.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Actor Profile Screne Inputs
#--------------------------------------------------------------------------
def update
update_menu_background
@status_window.update
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::R)
Sound.play_cursor
next_actor
elsif Input.trigger?(Input::L)
Sound.play_cursor
prev_actor
end
super
end
end
#==============================================================================
# ? Scene_Status
#==============================================================================
class Scene_Status
#--------------------------------------------------------------------------
# ? Update Actor
#--------------------------------------------------------------------------
alias update_chara update
def update
if Input.trigger?(Chara_Review::CHENGE_KEY)
Sound.play_decision
$scene = Scene_Charactor.new(@actor_index)
end
update_chara
end
end
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ The original untranslated version of this script can be found here:
#http://www4.plala.or.jp/findias/codecrush/material/rgss2/menu/1-menu_chara/menu_char_top.htmll
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
Also wie man sieht kann man hier bestimmte Informationen über die Actor eingeben, wie zum Beispiel Herkunft, Alter usw.
Ich wollte in mein Spiel einfügen, dass die Werte wie zum Beispiel "Alter" in einer game_variable gespeichert werden und dass
man diese dann im Spiel über Änderung einer Variable im Spiel verändern kann. Also wenn ich zum Beispiel Variable "alter1" im
Spiel auf 20 setze wird es in dem Menü dann das Alter auch als 20 angezeigt.
Das Skript scheint nicht sehr kompliziert zu sein, aber da ich selbst nicht wirklicht gut Skripten kann, würde ich mich echt freuen,
wenn mir da jemand eine Lösung finden könnte.
-
self.contents.draw_text(300, 60, 80, WLH, Chara_Review::CHARA_AGE[actor.id])
daraus machste
self.contents.draw_text(300, 60, 80, WLH, $game_variables[deinevariablennummer])
-
Hab dann auch mal wieder ne Frage...
Also ich hab es nun geschafft per Script ne Message anzeigen zu lassen... nur wie geht das mit dem Zeilenumbruch... weil bei mir zeigt sich dann iwie immer son quadrat Oo
-
\n
-
erst einmal danke shinji, dass du vesucht hast zu helfen, aber mit deiner lösung hat es leider nicht richtig geklappt. Nehmen wir mal als beispiel ich habe zwei actor. Ich speichere das alter der helden als variablen alter1 und alter2. Dann vergeht im spiel 1 monat und einer der helden wird 1 jahr älter und ich addiere 1 zur variable alter1. Das selbe mache ich mit dem zweiten helden und der variablen alter2 nach noch einem monat vergangener zeit. So jetzt möchte ich, dass sich die verschiedenen alterswerte der helden im zusätzlichen menü des skriptes auch verändert und nicht gleichbleibt. Bei Shinjis lösung konnte ich zwar das alter im menü über die variable verändern, aber jeder actor hatte das selbe alter und ich hätte halt gerne gehabt, dass das alter von jedem actor in einer unterschiedlichen variable gespeichert wird und das wenn ich dann die variable eines actors verändere ändert sich im menü nur das alter eines actors. Das skript habe ich in meinem letzten post gepostet. Ich hoffe shinji oder sonst jemand kann bei diesem problem helfen.
EDIT:
Hier das Skript ohne Smileys:
#===============================================================
# ? Actor Profile Information - CC_ExtendedActorInfo ? VX ?
# ? Version 1.0.0 by Claimh ?
# ? Translation by Mr. Anonymous ?
#------------------------------------------------------------------------------
# This script adds a character profile screen for extended actor information.
# This screen is called from the status screen by pressing the "C" button
# (by default). This information displayed on this screen is customized in
# this script itself below (in the Customization block).
#==============================================================================
module Chara_Review
#==============================================================================#
# ? Customization ? #
#==============================================================================#
# If you have more than 8 actors in your game, you may add additional lines
# to each of these fields.
#----------------------------------------------------------------------------
# Call Screen Input Key
#----------------------------------------------------------------------------
# This allows you to change the button/key pressed to call the extended
# actor information screen from the status screen. (Default: C)
CHENGE_KEY = Input::C
#--------------------------------------------------------------------------
# ? Customize Age
#--------------------------------------------------------------------------
CHARA_AGE = {
# Age is the first field to the right of the profile image.
# ActorID => "Age"
5 => "20",
6 => "22",
7 => "24",
8 => "16"
}
#--------------------------------------------------------------------------
# ? Customize Actor's Origin
#--------------------------------------------------------------------------
CHARA_FROM = {
# "From" or Origin is the second field to the right of the profile image.
# ActorID => "Place"
5 => "Rei",
6 => "Tsuin",
7 => "Tsuin",
8 => "Kouin"
}
#--------------------------------------------------------------------------
# ? Customize Height
#--------------------------------------------------------------------------
CHARA_H = {
# Height is the third field to the right of the profile image.
# ActorID => "Height"
5 => "5 Feet 8 Inches",
6 => "4 Feet 9 Inches",
7 => "5 Feet 1 Inch",
8 => "5 Feet 4 Inches"
}
#--------------------------------------------------------------------------
# ? Customize Weight
#--------------------------------------------------------------------------
CHARA_W = {
# Weight is the fourth field to the right of the profile image.
# ActorID => "Weight"
5 => "125 Pounds",
6 => "87 Pounds",
7 => "93 Pounds",
8 => "96 Pounds"
}
#--------------------------------------------------------------------------
# ? Customize Profile Information
#--------------------------------------------------------------------------
CHARA_INFO = {
# Profile Information is displayed beneath the actor's graphic file.
# ActorID => "Information Text"
5 => "Ryoku, is a brave strong warrior who always needs to save Kione. He is
a man with great holy powers. In time portals he gets his Jikoku Sword with slots
for the Jikoku Crystals to fit into. All the girls love Ryoku, for no real reason.",
6 => "No one knows much about him, but he knows alot about them. Because
of his weight and size he is able to move swiftly, but is also deadly with his
hands. He seems to have a connection with Munaca, only talking to and helping her.",
7 => "Munaca, is a some what shy girl with wind powers. She seems to know
the mystery guy, she is confused about him and wants to know what goes on in
his head. Her wind powers also get stronger when the people are in danger.",
8 => "Kione, is a girl with the ability to manipulate water, she also loves
the mystery guy who doesn`t even care about her. She is able to heal people,
but isn`t very strong. She always near the mystery guy... Why does she bother."
}
#--------------------------------------------------------------------------
# ? Customize Face/Profile Image
#--------------------------------------------------------------------------
# Image Type Toggle
# This toggle allows to use either the default Face graphic that is set up
# in the Actor tab in the database, or a custom image of your choosing.
# true = Custom images are used.
# false = The actor's face graphic is used.
BSTUP = false
# Custom Profile Graphics ("Graphics/Face" directory)(If BSTUP = true)
BSTUP_FILE = {
# ActorID => "Profile Image" (Without image format extension)
# You may also add more images for actors after the fourth line, if needed.
5 => "actor1",
6 => "actor1",
7 => "actor1",
8 => "actor1"
}
#----------------------------------------------------------------------------
# END Customization
#----------------------------------------------------------------------------
end
#==============================================================================
# ? Window_Charactor
#------------------------------------------------------------------------------
#==============================================================================
class Window_Charactor < Window_Base
#--------------------------------------------------------------------------
# ? Initialize Profile Window
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 544, 416)
self.contents = Bitmap.new(width - 32, height - 32)
refresh(actor)
end
#--------------------------------------------------------------------------
# ? Determine BSTUP Type
#--------------------------------------------------------------------------
def refresh(actor)
self.contents.clear
return if actor.nil?
if Chara_Review::BSTUP
refresh_bstup(actor) # If BSTUP = true
else
refresh_face(actor) # If BSTUP = false
end
end
#--------------------------------------------------------------------------
# ? Draw Parameters and Profile Image (BSTUP)
#--------------------------------------------------------------------------
def refresh_bstup(actor)
draw_face_picture(Chara_Review::BSTUP_FILE[actor.id], 0, 0)
self.contents.font.color = system_color
self.contents.draw_text(280, 30, 80, WLH, "Name:")
self.contents.draw_text(280, 60, 80, WLH, "Age:")
self.contents.draw_text(280, 90, 80, WLH, "From:")
self.contents.draw_text(280, 120, 80, WLH, "Height:")
self.contents.draw_text(280, 150, 80, WLH, "Weight:")
self.contents.font.color = normal_color
draw_actor_name(actor, 380, 30)
self.contents.draw_text(380, 60, 80, WLH, Chara_Review::CHARA_AGE[actor.id])
self.contents.draw_text(380, 90, 180, WLH,Chara_Review::CHARA_FROM[actor.id])
self.contents.draw_text(380, 120 , 200, WLH, Chara_Review::CHARA_H[actor.id])
self.contents.draw_text(380, 150, 250, WLH, Chara_Review::CHARA_W[actor.id])
draw_enter_text(20, 300, 500, WLH, Chara_Review::CHARA_INFO[actor.id])
end
#--------------------------------------------------------------------------
# ? Draw Parameters and Profile Image (FACE)
#--------------------------------------------------------------------------
def refresh_face(actor)
draw_actor_face(actor, 8, 32)
self.contents.font.color = system_color
self.contents.draw_text(200, 30, 80, WLH,"Name:")
self.contents.draw_text(200, 60, 80, WLH, "Age:")
self.contents.draw_text(200, 90, 80, WLH, "From:")
self.contents.draw_text(200, 120, 80, WLH, "Height:")
self.contents.draw_text(200, 150, 80, WLH, "Weight:")
self.contents.font.color = normal_color
draw_actor_name(actor, 300, 30)
self.contents.draw_text(300, 60, 80, WLH, Chara_Review::CHARA_AGE[actor.id])
self.contents.draw_text(300, 90, 180, WLH, Chara_Review::CHARA_FROM[actor.id])
self.contents.draw_text(300, 120 , 200, WLH, Chara_Review::CHARA_H[actor.id])
self.contents.draw_text(300, 150, 250, WLH, Chara_Review::CHARA_W[actor.id])
draw_enter_text(20, 200, 500, WLH, Chara_Review::CHARA_INFO[actor.id])
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
# ? Draw Entered Text
#--------------------------------------------------------------------------
def draw_enter_text(x, y, width, height, text)
info_box = text.split(/\n/)
for i in 0...info_box.size
self.contents.draw_text( x, y+i*WLH, width, WLH, info_box)
break if (y+i*WLH) > (self.height-WLH)
end
end
#--------------------------------------------------------------------------
# ? Draw Face Graphic(Graphics/Face)
#--------------------------------------------------------------------------
def draw_face_picture(file_name, x, y)
bitmap = Cache.face(file_name)
cw = bitmap.width
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x, y, bitmap, src_rect)
end
end
#==============================================================================
# ? Scene_Charactor
#------------------------------------------------------------------------------
# ? Define Methods
#==============================================================================
class Scene_Charactor < Scene_Base
#--------------------------------------------------------------------------
# ? Initialize Actor
# actor_index : Actor ID
#--------------------------------------------------------------------------
def initialize(actor_index = 0)
@actor_index = actor_index
end
#--------------------------------------------------------------------------
# ? Create Menu Background
#--------------------------------------------------------------------------
def start
super
create_menu_background
@actor = $game_party.members[@actor_index]
@status_window = Window_Charactor.new(@actor)
end
#--------------------------------------------------------------------------
# ? Dispose Status Window
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@status_window.dispose
end
#--------------------------------------------------------------------------
# ? Return Scene
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Status.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Next Actor
#--------------------------------------------------------------------------
def next_actor
@actor_index += 1
@actor_index %= $game_party.members.size
$scene = Scene_Charactor.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Previous Actor
#--------------------------------------------------------------------------
def prev_actor
@actor_index += $game_party.members.size - 1
@actor_index %= $game_party.members.size
$scene = Scene_Charactor.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Actor Profile Screne Inputs
#--------------------------------------------------------------------------
def update
update_menu_background
@status_window.update
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::R)
Sound.play_cursor
next_actor
elsif Input.trigger?(Input::L)
Sound.play_cursor
prev_actor
end
super
end
end
#==============================================================================
# ? Scene_Status
#==============================================================================
class Scene_Status
#--------------------------------------------------------------------------
# ? Update Actor
#--------------------------------------------------------------------------
alias update_chara update
def update
if Input.trigger?(Chara_Review::CHENGE_KEY)
Sound.play_decision
$scene = Scene_Charactor.new(@actor_index)
end
update_chara
end
end
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ The original untranslated version of this script can be found here:
#http://www4.plala.or.jp/findias/codecrush/material/rgss2/menu/1-menu_chara/menu_char_top.htmll
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
-
dann mach bitte die smilies aus, die zerfetzen das ganze script^^
edit: so hier...
musst jetzt halt das alter manuell immer anpassen und jeder actor ist zu beginn 0 jahre alt.
benutz dafür folgende callscripts:
$game_actors[5].age = 20 # actor 5 ist nun 20 jahre alt
$game_actors[5].age += 20 # actor 5 ist nun 40 jahre alt
$game_actors[5].age - = 10 # actor 5 ist nun 30 jahre alt
$game_actors[5].age /= 2 # actor 5 ist nun 15 jahre alt
$game_actors[5].age *= 4 # actor 5 ist nun 60 jahre alt
etc.
#===============================================================
# ? Actor Profile Information - CC_ExtendedActorInfo ? VX ?
# ? Version 1.0.0 by Claimh ?
# ? Translation by Mr. Anonymous ?
#------------------------------------------------------------------------------
# This script adds a character profile screen for extended actor information.
# This screen is called from the status screen by pressing the "C" button
# (by default). This information displayed on this screen is customized in
# this script itself below (in the Customization block).
#==============================================================================
module Chara_Review
#==============================================================================#
# ? Customization ? #
#==============================================================================#
# If you have more than 8 actors in your game, you may add additional lines
# to each of these fields.
#----------------------------------------------------------------------------
# Call Screen Input Key
#----------------------------------------------------------------------------
# This allows you to change the button/key pressed to call the extended
# actor information screen from the status screen. (Default: C)
CHENGE_KEY = Input::C
#--------------------------------------------------------------------------
# ? Customize Age
#--------------------------------------------------------------------------
CHARA_AGE = {
# Age is the first field to the right of the profile image.
# ActorID => "Age"
5 => "20",
6 => "22",
7 => "24",
8 => "16"
}
#--------------------------------------------------------------------------
# ? Customize Actor's Origin
#--------------------------------------------------------------------------
CHARA_FROM = {
# "From" or Origin is the second field to the right of the profile image.
# ActorID => "Place"
5 => "Rei",
6 => "Tsuin",
7 => "Tsuin",
8 => "Kouin"
}
#--------------------------------------------------------------------------
# ? Customize Height
#--------------------------------------------------------------------------
CHARA_H = {
# Height is the third field to the right of the profile image.
# ActorID => "Height"
5 => "5 Feet 8 Inches",
6 => "4 Feet 9 Inches",
7 => "5 Feet 1 Inch",
8 => "5 Feet 4 Inches"
}
#--------------------------------------------------------------------------
# ? Customize Weight
#--------------------------------------------------------------------------
CHARA_W = {
# Weight is the fourth field to the right of the profile image.
# ActorID => "Weight"
5 => "125 Pounds",
6 => "87 Pounds",
7 => "93 Pounds",
8 => "96 Pounds"
}
#--------------------------------------------------------------------------
# ? Customize Profile Information
#--------------------------------------------------------------------------
CHARA_INFO = {
# Profile Information is displayed beneath the actor's graphic file.
# ActorID => "Information Text"
5 => "Ryoku, is a brave strong warrior who always needs to save Kione. He is
a man with great holy powers. In time portals he gets his Jikoku Sword with slots
for the Jikoku Crystals to fit into. All the girls love Ryoku, for no real reason.",
6 => "No one knows much about him, but he knows alot about them. Because
of his weight and size he is able to move swiftly, but is also deadly with his
hands. He seems to have a connection with Munaca, only talking to and helping her.",
7 => "Munaca, is a some what shy girl with wind powers. She seems to know
the mystery guy, she is confused about him and wants to know what goes on in
his head. Her wind powers also get stronger when the people are in danger.",
8 => "Kione, is a girl with the ability to manipulate water, she also loves
the mystery guy who doesn`t even care about her. She is able to heal people,
but isn`t very strong. She always near the mystery guy... Why does she bother."
}
#--------------------------------------------------------------------------
# ? Customize Face/Profile Image
#--------------------------------------------------------------------------
# Image Type Toggle
# This toggle allows to use either the default Face graphic that is set up
# in the Actor tab in the database, or a custom image of your choosing.
# true = Custom images are used.
# false = The actor's face graphic is used.
BSTUP = false
# Custom Profile Graphics ("Graphics/Face" directory)(If BSTUP = true)
BSTUP_FILE = {
# ActorID => "Profile Image" (Without image format extension)
# You may also add more images for actors after the fourth line, if needed.
5 => "actor1",
6 => "actor1",
7 => "actor1",
8 => "actor1"
}
#----------------------------------------------------------------------------
# END Customization
#----------------------------------------------------------------------------
end
#==============================================================================
# ? Window_Charactor
#------------------------------------------------------------------------------
#==============================================================================
class Window_Charactor < Window_Base
#--------------------------------------------------------------------------
# ? Initialize Profile Window
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 544, 416)
self.contents = Bitmap.new(width - 32, height - 32)
refresh(actor)
end
#--------------------------------------------------------------------------
# ? Determine BSTUP Type
#--------------------------------------------------------------------------
def refresh(actor)
self.contents.clear
return if actor.nil?
if Chara_Review::BSTUP
refresh_bstup(actor) # If BSTUP = true
else
refresh_face(actor) # If BSTUP = false
end
end
#--------------------------------------------------------------------------
# ? Draw Parameters and Profile Image (BSTUP)
#--------------------------------------------------------------------------
def refresh_bstup(actor)
draw_face_picture(Chara_Review::BSTUP_FILE[actor.id], 0, 0)
self.contents.font.color = system_color
self.contents.draw_text(280, 30, 80, WLH, "Name:")
self.contents.draw_text(280, 60, 80, WLH, "Age:")
self.contents.draw_text(280, 90, 80, WLH, "From:")
self.contents.draw_text(280, 120, 80, WLH, "Height:")
self.contents.draw_text(280, 150, 80, WLH, "Weight:")
self.contents.font.color = normal_color
draw_actor_name(actor, 380, 30)
self.contents.draw_text(380, 60, 80, WLH, Chara_Review::CHARA_AGE[actor.id])
self.contents.draw_text(380, 90, 180, WLH,Chara_Review::CHARA_FROM[actor.id])
self.contents.draw_text(380, 120 , 200, WLH, Chara_Review::CHARA_H[actor.id])
self.contents.draw_text(380, 150, 250, WLH, Chara_Review::CHARA_W[actor.id])
draw_enter_text(20, 300, 500, WLH, Chara_Review::CHARA_INFO[actor.id])
end
#--------------------------------------------------------------------------
# ? Draw Parameters and Profile Image (FACE)
#--------------------------------------------------------------------------
def refresh_face(actor)
if num = 1
draw_actor_face(actor, 8, 32)
self.contents.font.color = system_color
self.contents.draw_text(200, 30, 80, WLH,"Name:")
self.contents.draw_text(200, 60, 80, WLH, "Age:")
self.contents.draw_text(200, 90, 80, WLH, "From:")
self.contents.draw_text(200, 120, 80, WLH, "Height:")
self.contents.draw_text(200, 150, 80, WLH, "Weight:")
self.contents.font.color = normal_color
draw_actor_name(actor, 300, 30)
draw_actor_age(actor,300,60)
self.contents.draw_text(300, 90, 180, WLH, Chara_Review::CHARA_FROM[actor.id])
self.contents.draw_text(300, 120 , 200, WLH, Chara_Review::CHARA_H[actor.id])
self.contents.draw_text(300, 150, 250, WLH, Chara_Review::CHARA_W[actor.id])
draw_enter_text(20, 200, 500, WLH, Chara_Review::CHARA_INFO[actor.id])
end
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
# ? Draw Entered Text
#--------------------------------------------------------------------------
def draw_enter_text(x, y, width, height, text)
info_box = text.split(/\n/)
for i in 0...info_box.size
self.contents.draw_text( x, y+i*WLH, width, WLH, info_box)
break if (y+i*WLH) > (self.height-WLH)
end
end
#--------------------------------------------------------------------------
# ? Draw Face Graphic(Graphics/Face)
#--------------------------------------------------------------------------
def draw_face_picture(file_name, x, y)
bitmap = Cache.face(file_name)
cw = bitmap.width
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x, y, bitmap, src_rect)
end
def draw_actor_age(actor, x, y)
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 108, WLH, actor.age)
end
end
#==============================================================================
# ? Scene_Charactor
#------------------------------------------------------------------------------
# ? Define Methods
#==============================================================================
class Scene_Charactor < Scene_Base
#--------------------------------------------------------------------------
# ? Initialize Actor
# actor_index : Actor ID
#--------------------------------------------------------------------------
def initialize(actor_index = 0)
@actor_index = actor_index
end
#--------------------------------------------------------------------------
# ? Create Menu Background
#--------------------------------------------------------------------------
def start
super
create_menu_background
@actor = $game_party.members[@actor_index]
@status_window = Window_Charactor.new(@actor)
end
#--------------------------------------------------------------------------
# ? Dispose Status Window
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@status_window.dispose
end
#--------------------------------------------------------------------------
# ? Return Scene
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Status.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Next Actor
#--------------------------------------------------------------------------
def next_actor
@actor_index += 1
@actor_index %= $game_party.members.size
$scene = Scene_Charactor.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Previous Actor
#--------------------------------------------------------------------------
def prev_actor
@actor_index += $game_party.members.size - 1
@actor_index %= $game_party.members.size
$scene = Scene_Charactor.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Actor Profile Screne Inputs
#--------------------------------------------------------------------------
def update
update_menu_background
@status_window.update
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::R)
Sound.play_cursor
next_actor
elsif Input.trigger?(Input::L)
Sound.play_cursor
prev_actor
end
super
end
end
# edit by shinji
class Game_Actor < Game_Battler
attr_accessor :age
#--------------------------------------------------------------------------
# * Setup
# actor_id : actor ID
#--------------------------------------------------------------------------
def setup(actor_id)
actor = $data_actors[actor_id]
@actor_id = actor_id
@name = actor.name
@age = 0
@character_name = actor.character_name
@character_index = actor.character_index
@face_name = actor.face_name
@face_index = actor.face_index
@class_id = actor.class_id
@weapon_id = actor.weapon_id
@armor1_id = actor.armor1_id
@armor2_id = actor.armor2_id
@armor3_id = actor.armor3_id
@armor4_id = actor.armor4_id
@level = actor.initial_level
@exp_list = Array.new(101)
make_exp_list
@exp = @exp_list[@level]
@skills = []
for i in self.class.learnings
learn_skill(i.skill_id) if i.level <= @level
end
clear_extra_values
recover_all
end
def age
return @age
end
end
#==============================================================================
# ? Scene_Status
#==============================================================================
class Scene_Status
#--------------------------------------------------------------------------
# ? Update Actor
#--------------------------------------------------------------------------
alias update_chara update
def update
if Input.trigger?(Chara_Review::CHENGE_KEY)
Sound.play_decision
$scene = Scene_Charactor.new(@actor_index)
end
update_chara
end
end
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ The original untranslated version of this script can be found here:
#http://www4.plala.or.jp/findias/codecrush/material/rgss2/menu/1-menu_chara/menu_char_top.htmll
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
-
Hallo, ich bins mal wieder,
Also ich wollte mal fragen ob es ein Skript gibt, oder überhaupt eine Möglichkeit das Fenster im Kampf zu höher machen, wo alle Actor mit HP und MP angezeigt werden. Ich benutze nämlich mit dem "Large Party"-Skript 5 Actor kann in dem Kampfmenü die Anzeige des 5. Actors nicht sehen.
Für alle die es nicht so richtig verstanden haben hab ich noch einen Screenshot gemacht und das Fenster was ich gerne höher machen will rot markiert:
http://img502.imageshack.us/my.php?image=kampfot2.jpg
Hoffe das jemand eine Lösung dafür finden kann, weil das echt stört wenn man im Kampf die Anzeigen von allen Actor nicht gleichzeitig sehen kann.
-
Also gehen tuts auf jeden Fall. Ich hab leider noch nicht so viel Ahnung von RGSS aber was man machen muss (denke ich) weiß ich trotzdem. Du müsstest von der Anzeige die Koordinaten finden und diese ändern. Vielleicht findest du ja irgendwo die Koordinaten. (Sind meist mit den Variablen X und Y gekennzeichnet - wie beim Koordinatensystem^^)
-
Also Frost im Prinzip hast du recht, aber ich bin schon auf die Idee gekommen und hab so etwas leider nicht finden können.
Unter Scene_Battle gibt es diese Stelle die für die Fenster im Kampf zuständig ist:
#--------------------------------------------------------------------------
# * Create Information Display Viewport
#--------------------------------------------------------------------------
def create_info_viewport
@info_viewport = Viewport.new(0, 288, 544, 128)
@info_viewport.z = 100
@status_window = Window_BattleStatus.new
@party_command_window = Window_PartyCommand.new
@actor_command_window = Window_ActorCommand.new
@status_window.viewport = @info_viewport
@party_command_window.viewport = @info_viewport
@actor_command_window.viewport = @info_viewport
@status_window.x = 128
@actor_command_window.x = 544
@info_viewport.visible = false
end
Hab schon versucht jeden Wert zu ändern, aber das bewirkt im Prinzip nur, dass die Fenster verschoben werden, oder von manchen Fenstern die Breite erhöht wird. Also ich glaube die Fenster haben eine bestimmte Standarthöhe und man muss da noch einen Befehl hinzufügen der das Fenster größer als
Standart macht.
-
ich gib dir nen tipp,
schau dir mal window_battlestatus an :)
-
So hab das probiert was du gesagt hast aber des hat leider nicht funktioniert. Das lag aber daran dass mein "Large Party" Script das Battle Fenster verwaltet.
Also wenn ich da height erhöhe und dann und dann den y-Wert des Fensters erhöhe damit es nach oben gezogen wird und ich unten den 5. Actor sehe sieht das ganze folgendermaßen aus:
http://img401.imageshack.us/my.php?image=kampffensterwu8.jpg
Hab mal hier den Teil vom Large Party Script gepostet der die Window verwaltet.
#==============================================================================
# ** Window_BattleStatus
#------------------------------------------------------------------------------
# This window displays the status of all party members on the battle screen.
#==============================================================================
class Window_BattleStatus < Window_Selectable
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias dargor_large_party_initialize initialize
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
dargor_large_party_initialize
height = 128 + (24 * ($game_party.members.size-4))
self.contents = Bitmap.new(width - 32, height - 32)
self.height = 128
refresh
end
#--------------------------------------------------------------------------
# * Update cursor
#--------------------------------------------------------------------------
def update_cursor
if @index < 0
self.cursor_rect.empty
return
end
# Get top row
row = @index / @column_max
if row < self.top_row
self.top_row = row
end
# Reset Top Row if at bottom of list
if row > self.top_row + (self.page_row_max - 1)
self.top_row = row - (self.page_row_max - 1)
end
y = @index / @column_max * 24 - self.oy
# Draw the cursor
self.cursor_rect.set(0, y, contents.width, 24)
end
#--------------------------------------------------------------------------
# * Get Top Row
#--------------------------------------------------------------------------
def top_row
return self.oy / 24
end
#--------------------------------------------------------------------------
# * Set Top Row
# row : row shown on top
#--------------------------------------------------------------------------
def top_row=(row)
if row < 0
row = 0
end
if row > row_max - 1
row = row_max - 1
end
self.oy = row * 24
end
#--------------------------------------------------------------------------
# * Get Number of Rows Displayable on 1 Page
#--------------------------------------------------------------------------
def page_row_max
return 4
end
end
-
So leute hab mal ne Frage:
Und zwar, weiß jmd wie ich es per Script oder per Event lösen kann, das Dauerhast in der oberen linken Ecke des Screens die Variable[1] angezeigt wird? wirklich permanent! mit Script wärs mir am liebsten
Oder gibt es eine Möglichkeit permanent das Gold anzeigen zu lassen? auch auf der Map?
Hab die sufu benutzt aber nix gefunden :(
-
Kann jemand so nett sein und das woratana nms reinstellen? Iwie funkt die rpgrevolution-Seite nicht.
Wäre echt nice^^ weil ich kann es sonst nirgends finden
Thx im Vorraus,
Grüße
-
Aber sicher kann das jemand tun. Guckst du hier.
<a href="http://www.mediafire.com/?mnt3ii0zojd">Klick Mich</a>
@ Woratana
I Hope Its Okay For U, That I Give Him Ur Great Script This
Way. Die Link To Your File Is Down, So Nobody Can Use It ;)
Sk!p
-
Hey Leute weiß jmd wie man per Script die Actorgrafiken ändert? is wichtig das per script zu machen... also bitte keine bemerkungen "machs doch per event" ;)
-
hey leute =]
hab da ne kleine frage zu Deadlydans Titel:
und zwar ist das am Titelbildschirm alles n wenig zu weit oben und ich find irgenwdie nich genau heraus,
wie man das tiefer setzen könnte! Wäre nett wenn mir das jemand zeigen/erklären könnte! ^.^
-
Hallo allerseits,
Also ich habe eine Frage zum "Actor Profile Information"-Script. Dieses Skript dient dazu, dass wenn man im Status-Menü eines Charakters
"Enter" drücken kann und dann in ein Menü mit zusätzlichen Informationen über den Actor kommt.
Actor Profile Information-Script:
#===============================================================
# ? Actor Profile Information - CC_ExtendedActorInfo ? VX ?
# ? Version 1.0.0 by Claimh ?
# ? Translation by Mr. Anonymous ?
#------------------------------------------------------------------------------
# This script adds a character profile screen for extended actor information.
# This screen is called from the status screen by pressing the "C" button
# (by default). This information displayed on this screen is customized in
# this script itself below (in the Customization block).
#==============================================================================
module Chara_Review
#==============================================================================#
# ? Customization ? #
#==============================================================================#
# If you have more than 8 actors in your game, you may add additional lines
# to each of these fields.
#----------------------------------------------------------------------------
# Call Screen Input Key
#----------------------------------------------------------------------------
# This allows you to change the button/key pressed to call the extended
# actor information screen from the status screen. (Default: C)
CHENGE_KEY = Input::C
#--------------------------------------------------------------------------
# ? Customize Age
#--------------------------------------------------------------------------
CHARA_AGE = {
# Age is the first field to the right of the profile image.
# ActorID => "Age"
5 => "20",
6 => "22",
7 => "24",
8 => "16"
}
#--------------------------------------------------------------------------
# ? Customize Actor's Origin
#--------------------------------------------------------------------------
CHARA_FROM = {
# "From" or Origin is the second field to the right of the profile image.
# ActorID => "Place"
5 => "Rei",
6 => "Tsuin",
7 => "Tsuin",
8 => "Kouin"
}
#--------------------------------------------------------------------------
# ? Customize Height
#--------------------------------------------------------------------------
CHARA_H = {
# Height is the third field to the right of the profile image.
# ActorID => "Height"
5 => "5 Feet 8 Inches",
6 => "4 Feet 9 Inches",
7 => "5 Feet 1 Inch",
8 => "5 Feet 4 Inches"
}
#--------------------------------------------------------------------------
# ? Customize Weight
#--------------------------------------------------------------------------
CHARA_W = {
# Weight is the fourth field to the right of the profile image.
# ActorID => "Weight"
5 => "125 Pounds",
6 => "87 Pounds",
7 => "93 Pounds",
8 => "96 Pounds"
}
#--------------------------------------------------------------------------
# ? Customize Profile Information
#--------------------------------------------------------------------------
CHARA_INFO = {
# Profile Information is displayed beneath the actor's graphic file.
# ActorID => "Information Text"
5 => "Ryoku, is a brave strong warrior who always needs to save Kione. He is
a man with great holy powers. In time portals he gets his Jikoku Sword with slots
for the Jikoku Crystals to fit into. All the girls love Ryoku, for no real reason.",
6 => "No one knows much about him, but he knows alot about them. Because
of his weight and size he is able to move swiftly, but is also deadly with his
hands. He seems to have a connection with Munaca, only talking to and helping her.",
7 => "Munaca, is a some what shy girl with wind powers. She seems to know
the mystery guy, she is confused about him and wants to know what goes on in
his head. Her wind powers also get stronger when the people are in danger.",
8 => "Kione, is a girl with the ability to manipulate water, she also loves
the mystery guy who doesn`t even care about her. She is able to heal people,
but isn`t very strong. She always near the mystery guy... Why does she bother."
}
#--------------------------------------------------------------------------
# ? Customize Face/Profile Image
#--------------------------------------------------------------------------
# Image Type Toggle
# This toggle allows to use either the default Face graphic that is set up
# in the Actor tab in the database, or a custom image of your choosing.
# true = Custom images are used.
# false = The actor's face graphic is used.
BSTUP = false
# Custom Profile Graphics ("Graphics/Face" directory)(If BSTUP = true)
BSTUP_FILE = {
# ActorID => "Profile Image" (Without image format extension)
# You may also add more images for actors after the fourth line, if needed.
5 => "actor1",
6 => "actor1",
7 => "actor1",
8 => "actor1"
}
#----------------------------------------------------------------------------
# END Customization
#----------------------------------------------------------------------------
end
#==============================================================================
# ? Window_Charactor
#------------------------------------------------------------------------------
# ? Define Window
#==============================================================================
class Window_Charactor < Window_Base
#--------------------------------------------------------------------------
# ? Initialize Profile Window
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 544, 416)
self.contents = Bitmap.new(width - 32, height - 32)
refresh(actor)
end
#--------------------------------------------------------------------------
# ? Determine BSTUP Type
#--------------------------------------------------------------------------
def refresh(actor)
self.contents.clear
return if actor.nil?
if Chara_Review::BSTUP
refresh_bstup(actor) # If BSTUP = true
else
refresh_face(actor) # If BSTUP = false
end
end
#--------------------------------------------------------------------------
# ? Draw Parameters and Profile Image (BSTUP)
#--------------------------------------------------------------------------
def refresh_bstup(actor)
draw_face_picture(Chara_Review::BSTUP_FILE[actor.id], 0, 0)
self.contents.font.color = system_color
self.contents.draw_text(280, 30, 80, WLH, "Name:")
self.contents.draw_text(280, 60, 80, WLH, "Age:")
self.contents.draw_text(280, 90, 80, WLH, "From:")
self.contents.draw_text(280, 120, 80, WLH, "Height:")
self.contents.draw_text(280, 150, 80, WLH, "Weight:")
self.contents.font.color = normal_color
draw_actor_name(actor, 380, 30)
self.contents.draw_text(380, 60, 80, WLH, Chara_Review::CHARA_AGE[actor.id])
self.contents.draw_text(380, 90, 180, WLH, Chara_Review::CHARA_FROM[actor.id])
self.contents.draw_text(380, 120 , 200, WLH, Chara_Review::CHARA_H[actor.id])
self.contents.draw_text(380, 150, 250, WLH, Chara_Review::CHARA_W[actor.id])
draw_enter_text(20, 300, 500, WLH, Chara_Review::CHARA_INFO[actor.id])
end
#--------------------------------------------------------------------------
# ? Draw Parameters and Profile Image (FACE)
#--------------------------------------------------------------------------
def refresh_face(actor)
draw_actor_face(actor, 8, 32)
self.contents.font.color = system_color
self.contents.draw_text(200, 30, 80, WLH, "")
self.contents.draw_text(200, 60, 80, WLH, "Age:")
self.contents.draw_text(200, 90, 80, WLH, "From:")
self.contents.draw_text(200, 120, 80, WLH, "Height:")
self.contents.draw_text(200, 150, 80, WLH, "Weight:")
self.contents.font.color = normal_color
draw_actor_name(actor, 300, 30)
self.contents.draw_text(300, 60, 80, WLH, Chara_Review::CHARA_AGE[actor.id])
self.contents.draw_text(300, 90, 180, WLH, Chara_Review::CHARA_FROM[actor.id])
self.contents.draw_text(300, 120 , 200, WLH, Chara_Review::CHARA_H[actor.id])
self.contents.draw_text(300, 150, 250, WLH, Chara_Review::CHARA_W[actor.id])
draw_enter_text(20, 200, 500, WLH, Chara_Review::CHARA_INFO[actor.id])
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
# ? Draw Entered Text
#--------------------------------------------------------------------------
def draw_enter_text(x, y, width, height, text)
info_box = text.split(/\n/)
for i in 0...info_box.size
self.contents.draw_text( x, y+i*WLH, width, WLH, info_box)
break if (y+i*WLH) > (self.height-WLH)
end
end
#--------------------------------------------------------------------------
# ? Draw Face Graphic(Graphics/Face)
#--------------------------------------------------------------------------
def draw_face_picture(file_name, x, y)
bitmap = Cache.face(file_name)
cw = bitmap.width
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x, y, bitmap, src_rect)
end
end
#==============================================================================
# ? Scene_Charactor
#------------------------------------------------------------------------------
# ? Define Methods
#==============================================================================
class Scene_Charactor < Scene_Base
#--------------------------------------------------------------------------
# ? Initialize Actor
# actor_index : Actor ID
#--------------------------------------------------------------------------
def initialize(actor_index = 0)
@actor_index = actor_index
end
#--------------------------------------------------------------------------
# ? Create Menu Background
#--------------------------------------------------------------------------
def start
super
create_menu_background
@actor = $game_party.members[@actor_index]
@status_window = Window_Charactor.new(@actor)
end
#--------------------------------------------------------------------------
# ? Dispose Status Window
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@status_window.dispose
end
#--------------------------------------------------------------------------
# ? Return Scene
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Status.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Next Actor
#--------------------------------------------------------------------------
def next_actor
@actor_index += 1
@actor_index %= $game_party.members.size
$scene = Scene_Charactor.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Previous Actor
#--------------------------------------------------------------------------
def prev_actor
@actor_index += $game_party.members.size - 1
@actor_index %= $game_party.members.size
$scene = Scene_Charactor.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Actor Profile Screne Inputs
#--------------------------------------------------------------------------
def update
update_menu_background
@status_window.update
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::R)
Sound.play_cursor
next_actor
elsif Input.trigger?(Input::L)
Sound.play_cursor
prev_actor
end
super
end
end
#==============================================================================
# ? Scene_Status
#==============================================================================
class Scene_Status
#--------------------------------------------------------------------------
# ? Update Actor
#--------------------------------------------------------------------------
alias update_chara update
def update
if Input.trigger?(Chara_Review::CHENGE_KEY)
Sound.play_decision
$scene = Scene_Charactor.new(@actor_index)
end
update_chara
end
end
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ The original untranslated version of this script can be found here:
#http://www4.plala.or.jp/findias/codecrush/material/rgss2/menu/1-menu_chara/menu_char_top.htmll
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
Also wie man sieht kann man hier bestimmte Informationen über die Actor eingeben, wie zum Beispiel Herkunft, Alter usw.
Ich wollte in mein Spiel einfügen, dass die Werte wie zum Beispiel "Alter" in einer game_variable gespeichert werden und dass
man diese dann im Spiel über Änderung einer Variable im Spiel verändern kann. Also wenn ich zum Beispiel Variable "alter1" im
Spiel auf 20 setze wird es in dem Menü dann das Alter auch als 20 angezeigt.
Das Skript scheint nicht sehr kompliziert zu sein, aber da ich selbst nicht wirklicht gut Skripten kann, würde ich mich echt freuen,
wenn mir da jemand eine Lösung finden könnte.
Ich möcht das Skript auch verwenden, aber wenn ich das SPiel starte steht was von Fehler in Line 259 Syntax Error occured oda so. HELP
-
@Im not jesus
In Zeile 158 findest du diesen Ausschnitt:
@menu_item[1].blend_type = 0
@menu_item[1].bitmap = Cache.system ( DeadlyDan_Title::IMAGE_CONTINUE[0] )
@menu_item[1].x = ( ( Graphics.width / 2 ) - ( @menu_item[1].bitmap.width / 2 ) )
@menu_item[1].y = ( ( Graphics.height / 2 ) - ( @menu_item[1].bitmap.height / 2 ) )
@menu_item[0].blend_type = 0
@menu_item[0].bitmap = Cache.system ( DeadlyDan_Title::IMAGE_NEW[0] )
@menu_item[0].x = ( ( Graphics.width / 2 ) - ( @menu_item[0].bitmap.width / 2 ) )
@menu_item[0].y = ( ( Graphics.height / 2 ) - ( @menu_item[0].bitmap.height / 2 ) ) - ( @menu_item[1].bitmap.height + padding )
@menu_item[2].blend_type = 0
@menu_item[2].bitmap = Cache.system ( DeadlyDan_Title::IMAGE_QUIT[0] )
@menu_item[2].x = ( ( Graphics.width / 2 ) - ( @menu_item[2].bitmap.width / 2 ) )
@menu_item[2].y = ( ( Graphics.height / 2 ) - ( @menu_item[2].bitmap.height / 2 ) ) + ( @menu_item[1].bitmap.height + padding )
Furch das veränderen der y Koordinate kannst du, die Bilder tiefer beziehungsweise höher stellen. Und die x Koordinate bestimmt die Horizontale Position. Ich hab hie rein kleines Beispiel gemacht und die Bilder tiefergelegt.
@menu_item[1].blend_type = 0
@menu_item[1].bitmap = Cache.system ( DeadlyDan_Title::IMAGE_CONTINUE[0] )
@menu_item[1].x = ( ( Graphics.width / 2 ) - ( @menu_item[1].bitmap.width / 2 ) )
@menu_item[1].y = ( 330 )
@menu_item[0].blend_type = 0
@menu_item[0].bitmap = Cache.system ( DeadlyDan_Title::IMAGE_NEW[0] )
@menu_item[0].x = ( ( Graphics.width / 2 ) - ( @menu_item[0].bitmap.width / 2 ) )
@menu_item[0].y = (300 )
@menu_item[2].blend_type = 0
@menu_item[2].bitmap = Cache.system ( DeadlyDan_Title::IMAGE_QUIT[0] )
@menu_item[2].x = ( ( Graphics.width / 2 ) - ( @menu_item[2].bitmap.width / 2 ) )
@menu_item[2].y = (360)
Wenn du es selber veränderst achte darauf, dass Dan die Bilder anders angeordnet hat also nicht wie man in den Spoiler sehen kann sondern, 0,1,2.
MfG
Deity
-
Also mein Problem handelt von BGMs. Ich möchte gerne bewirken,dass wenn ich (nur einige) BGMs abspiele,sie dann erst nach dem Ende weitere Events durchlassen und der Spieler auch sich bei dem Ablauf der Musik sich nicht bewegen kann. Dies soll aber, wie es schon in den Klammern stand, nich für ALLE BGMs gelten sondern nur die,die so sein müssen, also die die nicht, normal starten und die,die ich mit dem Skript brauche,dann mit dem Skriptevent. Ich weiß nicht,ob es so ein Skript schon gibt, aber sowas kann ich selber leider nicht vollbringen, da ich 0 Ahnung von Ruby und besonders dem Ruby Game Scripting System hab. Warum ich das brauche? Hier ist ein Beispiel:
Jemand spielt Klavier vor ein paar Leuten und sie sollen zuhören bis da halt das Stück zu Ende ist.
Es gibt natürlich eine Eventmöglichkeit: Ich rechne die ganze Länge in Frames um. Dann benutze ich den Wait-Befehl im Move Route-Event. Aber das Maximale ist 999 Frames. Deswegen rechne ich so,dass ich immer 999 Frames dazu rechne, bis der Rest kommt?????? Das ist mir zu aufwendig,da in meinem Spiel dies öfters wohl passieren wird deswegen möchte ich es als einfaches Skript haben, da ich mir sonst den Kopf zerbrechen würde.
Mfg RPGSasuke
-
Du kannst auch mehrere Wait-events reinstellen ;) also z.b 3 mal wait(999frames)
-
So ich wollt bei meinem Menü das Speichern ausblenden und der Post auf Seite 1 hat mir nicht viel gebracht da ich ein anderes Menü hab und es bei dem nich geklappt hat. Vllt bin ich ja nur zu dumm aber wär nett wenn mir jemand hilft.
=begin
BigEd781' Final Fantasy IX Menu
Credit to PainHurt at rpgmakervx.net for most of the graphics
=end
module FF9_Config
# set this to 'true' if you would like to use a cusotm background image
USE_CUSTOM_BACK = true
# the name of the custom background image, without the file extension (no .png)
BACK_NAME = 'StoneBackground'
# if you set this to 'true', you must be using the enhanced
# Window class script that I posted: You can get that script here:
# http://www.rpgmakervx.net/index.php?showtopic=8042&hl=
# this will make the provided FF9 windowskin look really good.
USE_TILED_WINDOW = false
# When this is set to 'true', the menu cirsor will animate back and forth.
# When set to 'false', it will stay in place
ANIMATE_CURSOR = true
# When set to 'true', four background panels are always drawn.
# When set to 'false', a panel is only drawn for each party member
DRAW_FOR_ALL = true
# the name of the font used in the menu.
# use 'Font.default_name' for the default font. Try 'Centaur' for a nice, smaller font.
DEFAULT_FONT = Font.default_name
# set this to true to enable the font above for all windows.
# also sets the back_opacity to 255 for all windows.
# I recommend setting this to 'true' to maintain a consistent look.
USE_FOR_ALL = true
# the icon id for your gold window portion of the menu, 194 by default.
GOLD_ICON_ID = 194
end
if FF9_Config::USE_FOR_ALL
Font.default_name = FF9_Config::DEFAULT_FONT
class Window_Base < Window
alias :eds_pre_ff9_menu_base_initialize :initialize
def initialize(*args)
eds_pre_ff9_menu_base_initialize(*args)
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.back_opacity = 255
end
end
end
class Window_Base < Window
CAPTION_COLOR = Color.new(255,255,255)#(228, 228, 228)
CAPTION_HEIGHT = 12
X_OFFSET = 16
Y_OFFSET = -5
alias :eds_pre_window_caption_intialize :initialize
def initialize(*args)
eds_pre_window_caption_intialize(*args)
@caption_sprite = Sprite_Base.new(self.viewport)
create_caption_bitmap(1, CAPTION_HEIGHT)
@caption_sprite.x = self.x + X_OFFSET
@caption_sprite.y = self.y + Y_OFFSET
@caption_sprite.z = self.z + 1
end
def x=(value)
super
@caption_sprite.x = value + X_OFFSET unless @caption_sprite.nil?
end
def y=(value)
super
@caption_sprite.y = value + Y_OFFSET unless @caption_sprite.nil?
end
def z=(value)
super
@caption_sprite.z = value + 1 unless @caption_sprite.nil?
end
def caption=(text)
return unless text.is_a?(String)
return if text.empty?
@caption = text
width = @caption_sprite.bitmap.text_size(@caption).width
create_caption_bitmap(width, CAPTION_HEIGHT)
draw_caption
end
def create_caption_bitmap(w, h)
@caption_sprite.bitmap = Bitmap.new(w, h)
@caption_sprite.bitmap.font.size = 12
@caption_sprite.bitmap.font.color = CAPTION_COLOR
@caption_sprite.bitmap.font.bold = true
end
def draw_caption
unless @caption.nil?
h = @caption_sprite.bitmap.height
w = @caption_sprite.bitmap.width
rect = Rect.new( 0, h / 2, w, h / 4 )
@caption_sprite.bitmap.fill_rect(rect, Color.new(0, 0, 0, 96))
@caption_sprite.bitmap.draw_text(@caption_sprite.src_rect, @caption)
end
end
alias :eds_pre_caption_window_dispose :dispose
def dispose
eds_pre_caption_window_dispose
@caption_sprite.dispose
end
def find_window_width(text)
return Bitmap.new(544, 416).text_size(text).width + 32
end
end
class Window_TimeGold < Window_Base
def initialize(x, y)
width = find_window_width("9999999")
width = 140 if width < 140
super(x, y, width, WLH + 58)
self.back_opacity = 255
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
self.caption = "TIME & #{Vocab.gold}"
@time_icon = Cache.picture('Timer')
@intern_frame_count = 0
refresh
end
def draw_time
sec = (Graphics.frame_count / 60) % 60
min = (Graphics.frame_count / 3600) % 60
hrs = Graphics.frame_count / 216000
self.contents.font.color = Color.new(255, 255, 255)
time = "%02d:%02d:%02d" % [hrs, min, sec]
self.contents.draw_text(0, 0, self.contents.width, WLH, time, 2)
end
def refresh
self.contents.clear
self.contents.blt(0, 0, @time_icon, @time_icon.rect)
draw_icon(FF9_Config::GOLD_ICON_ID, 2, WLH)
draw_currency_value($game_party.gold, 0, WLH, self.contents.width)
draw_time
end
def draw_currency_value(value, x, y, width)
gold_text = Vocab.gold
cx = contents.text_size(gold_text[0,1]).width
self.contents.font.color = normal_color
self.contents.draw_text(x, y, width - cx - 2, WLH, value, 2)
self.contents.font.color = system_color
# just print the first character of Vocab::gold
self.contents.draw_text(x, y, width, WLH, gold_text[0,1], 2)
end
def update
super
@intern_frame_count += 1
return if (@intern_frame_count % 60) != 0
refresh
end
def find_window_width(text)
return Bitmap.new(544, 416).text_size(text).width + 80
end
end
class Window_MenuLocation < Window_Base
def initialize(x, y)
@map_name = load_data("Data/MapInfos.rvdata")[$game_map.map_id].name
width = find_window_width(@map_name)
super(x, y, width, WLH + 32)
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
self.back_opacity = 255
self.caption = "LOCATION"
refresh
end
def refresh
self.contents.clear
self.contents.draw_text(0, 0, self.contents.width, WLH, @map_name, 1)
end
def find_window_width(text)
return Bitmap.new(544, 416).text_size(text).width + 48
end
end
class Window_Command < Window_Selectable
alias :eds_pre_ff9_menu_win_command_init :initialize
def initialize(*args)
@font_name = Font.default_name
eds_pre_ff9_menu_win_command_init(*args)
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.name = @font_name
for i in 0...@item_max
draw_item(i)
end
end
def font_name=(name)
@font_name = name
end
end
class Window_Uses < Window_Base
def initialize(right, y, item)
@remaining_text = "Remaining: #{$game_party.item_number(item)}"
w = 160
x = right ? (544 - w) : 0
super(x, y, w, WLH + 32)
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
refresh
end
def item=(item)
return unless item.is_a?(RPG::Item)
@remaining_text = "Remaining: #{$game_party.item_number(item)}"
refresh
end
def visible=(value)
super
refresh if value
end
def refresh
self.contents.clear
self.contents.draw_text(self.contents.rect, @remaining_text, 1)
end
end
class Window_SkillUses < Window_Base
def initialize(right, y, actor, skill)
@remaining_text = make_info_string(actor, skill)
w = 182
x = right ? (544 - w) : 0
super(x, y, w, WLH + 32)
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
refresh
end
def make_info_string(actor, skill)
return if actor.nil? || skill.nil?
cost = actor.calc_mp_cost(skill)
return "Unlimited" if cost < 1
return "Remaining: #{actor.mp / cost}"
end
def set_skill(actor, skill)
return if actor.nil? || skill.nil?
return unless skill.is_a?(RPG::Skill)
@remaining_text = make_info_string(actor, skill)
refresh
end
def visible=(value)
super
refresh if value
end
def refresh
self.contents.clear
self.contents.draw_text(self.contents.rect, @remaining_text, 1)
end
end
class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 452, 352)
@bg_image = Cache.picture('FF9_MenuBar')
@arrow_image = Cache.picture('Pointer')
create_arrow_sprites
@sprite_last_draw_x = 0
@sprite_inc_x = 1
@intern_frame_count = 0
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
self.opacity = 0
self.z = 99
self.active = false
self.index = -1
refresh
end
#--------------------------------------------------------------------------
# * create_arrow_sprites
#--------------------------------------------------------------------------
def create_arrow_sprites
@arrow_sprites = []
for i in 0..3
@arrow_sprites << Sprite.new
@arrow_sprites[i].bitmap = Bitmap.new(@arrow_image.width + 7, @arrow_image.height)
@arrow_sprites[i].x = self.x
@arrow_sprites[i].y = (i * 80) + self.y + 40
@arrow_sprites[i].z = 999
end
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.members.size
draw_background_windows if FF9_Config::DRAW_FOR_ALL
for actor in $game_party.members
x = 104
y = actor.index * 80
y_offset = 6
draw_background_window(0, y) unless FF9_Config::DRAW_FOR_ALL
draw_actor_face(actor, 19, y + 4, 73)
draw_actor_name(actor, x, y + y_offset)
draw_actor_class(actor, x + 125, y + y_offset) if actor.states.empty?
draw_actor_level(actor, x, y + WLH * 1)
draw_actor_state(actor, x + 125, y + y_offset)
draw_actor_hp(actor, x, ((y) + (WLH * 2) - 5))
draw_actor_mp(actor, x + 125, ((y) + (WLH * 2) - 5))
end
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def update_cursor
if @index < 0
#refactor into update arrow method
@arrow_sprites.each { |sprite| sprite.bitmap.clear }
return
end
@intern_frame_count += 1
return unless (@intern_frame_count % 5) == 0
if @sprite_last_draw_x >= 7
@sprite_inc_x = -1
elsif @sprite_last_draw_x <= 0
@sprite_inc_x = 1
end
update_arrow_sprites
end
#--------------------------------------------------------------------------
# * update_arrow_sprites
#--------------------------------------------------------------------------
def update_arrow_sprites
@arrow_sprites.each { |sprite| sprite.bitmap.clear }
if @index == 99 # all selected
return unless (@intern_frame_count % 10) == 0
draw_arrow_sprites(@arrow_sprites, false)
else
draw_arrow_sprites([@arrow_sprites[@index]], FF9_Config::ANIMATE_CURSOR)
end
end
#--------------------------------------------------------------------------
# * draw_arrow_sprites
#--------------------------------------------------------------------------
def draw_arrow_sprites(sprites, animated=true)
for sprite in sprites
image_x = animated ? @sprite_last_draw_x + @sprite_inc_x : 0
@sprite_last_draw_x = image_x
sprite.bitmap.blt(image_x, 0, @arrow_image, @arrow_image.rect)
end
end
#--------------------------------------------------------------------------
# * y=
#--------------------------------------------------------------------------
def y=(value)
super
unless @arrow_sprites.nil?
for i in 0..3
@arrow_sprites[i].y = (i * 80) + value + 40
end
end
end
#--------------------------------------------------------------------------
# * x=
#--------------------------------------------------------------------------
def x=(value)
super
unless @arrow_sprites.nil?
@arrow_sprites.each { |sprite| sprite.x = value }
end
end
#--------------------------------------------------------------------------
# * draw_background_windows
#--------------------------------------------------------------------------
def draw_background_windows
self.contents.blt(0, 0, @bg_image, @bg_image.rect)
self.contents.blt(0, 80, @bg_image, @bg_image.rect)
self.contents.blt(0, 160, @bg_image, @bg_image.rect)
self.contents.blt(0, 240, @bg_image, @bg_image.rect)
end
#--------------------------------------------------------------------------
# * draw_background_window (single)
#--------------------------------------------------------------------------
def draw_background_window(x, y)
self.contents.blt(x, y, @bg_image, @bg_image.rect)
end
#--------------------------------------------------------------------------
# * visible
#--------------------------------------------------------------------------
def visible=(value)
super
@arrow_sprites.each { |sprite| sprite.visible = value }
end
#--------------------------------------------------------------------------
# * dispose
#--------------------------------------------------------------------------
alias :eds_pre_ff9_win_stat_dispose :dispose
def dispose
eds_pre_ff9_win_stat_dispose
@arrow_sprites.each { |sprite| sprite.dispose }
end
def enable_cursor?(rect=nil)
# for compatibility with the improved command window
return false
end
end
class Scene_Menu
#--------------------------------------------------------------------------
# * create_menu_background (only if USE_CUSTOM_BACK == true)
#--------------------------------------------------------------------------
if FF9_Config::USE_CUSTOM_BACK
def create_menu_background
@menuback_sprite = Sprite.new
@menuback_sprite.bitmap = Cache.picture(FF9_Config::BACK_NAME)
@menuback_sprite.color.set(16, 16, 16, 128)
update_menu_background
end
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
# just changed the width of the window here
@command_window = Window_Command.new(132, [s1, s2, s3, s4, s5, s6])
@command_window.index = @menu_index
@command_window.stretch = false if FF9_Config::USE_TILED_WINDOW
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, true) # Disable save
end
# new stuff here
@command_window.font_name = FF9_Config::DEFAULT_FONT
@command_window.x = 528 - @command_window.width
@command_window.y = 16
@command_window.back_opacity = 255
end
#--------------------------------------------------------------------------
# * This method is intended to fix some compatibility problems
# that scripts run into when they change the command window
# in some way. So, we let them override "create_command_window"
# and we simply don't call it from the "start" method.
# Instead, we call this method which does some extra checking.
#--------------------------------------------------------------------------
def eds_create_command_window
create_command_window
old_commands = @command_window.commands
return if old_commands == [ Vocab::item,
Vocab::skill,
Vocab::equip,
Vocab::status,
Vocab::save,
Vocab::game_end ]
# so we know that the default command window is not being used
# we don't want to create another window, so we manually resize it
# before the player can see.
long = ''
# dynamically size the width based on the longest command
old_commands.each { |command| long = command if command.length > long.length }
# set the index to -1 so that the rectangle disappears.
# if we don't do this, you can see the selection rectangle resize.
@command_window.index = -1
@command_window.width = @command_window.contents.text_size(long).width + 42
@command_window.contents = Bitmap.new( @command_window.width - 32,
@command_window.height - 32 )
@command_window.font_name = FF9_Config::DEFAULT_FONT
@command_window.x = 528 - @command_window.width
@command_window.y = 16
@command_window.back_opacity = 255
@command_window.refresh
@command_window.index = @menu_index
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def start
super
create_menu_background
#call this method for compatibility
eds_create_command_window
@gold_window = Window_TimeGold.new(372, 342)
@gold_window.y -= @gold_window.height
@gold_window.x = 528 - @gold_window.width
@status_window = Window_MenuStatus.new(0, 12)
@location_window = Window_MenuLocation.new(0, 0)
@location_window.x = 528 - @location_window.width
@location_window.y = 398 - @location_window.height
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_menu_terminate :terminate
def terminate
eds_pre_ff9_menu_scene_menu_terminate
@location_window.dispose
end
end
class Scene_Item < Scene_Base
#--------------------------------------------------------------------------
# * start
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_start :start
def start
eds_pre_ff9_menu_scene_item_start
@target_window.y = 58
@uses_window = Window_Uses.new(true, @help_window.height, nil)
@uses_window.visible = false
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
# - right-align flag ignored
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_win_stat_show_target_window :show_target_window
def show_target_window(right)
@uses_window.item = @item_window.item
@uses_window.visible = true
@item_window.visible = false
@item_window.active = false
@target_window.visible = true
@target_window.active = true
@viewport.rect.set(0, 0, 544, 416)
@viewport.ox = 0
end
#--------------------------------------------------------------------------
# * hide_target_window
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_hide_target_window :hide_target_window
def hide_target_window
eds_pre_ff9_menu_scene_item_hide_target_window
@uses_window.visible = false unless @uses_window.nil?
@item_window.visible = true
end
#--------------------------------------------------------------------------
# * determine_target
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_determine_target :determine_target
def determine_target
eds_pre_ff9_menu_scene_item_determine_target
@uses_window.item = @item_window.item
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_terminate :terminate
def terminate
eds_pre_ff9_menu_scene_item_terminate
@uses_window.dispose
end
end
class Scene_Skill < Scene_Base
#--------------------------------------------------------------------------
# * start
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_skill_start :start
def start
eds_pre_ff9_menu_scene_skill_start
@target_window.y = 58
@uses_window = Window_SkillUses.new(true, @help_window.height, nil, nil)
@uses_window.visible = false
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
# - right-align flag ignored
#--------------------------------------------------------------------------
def show_target_window(right)
@uses_window.set_skill($game_party.members[@actor_index], @skill_window.skill)
@uses_window.visible = true
@status_window.visible = false
@skill_window.visible = false
@skill_window.active = false
@target_window.visible = true
@target_window.active = true
@viewport.rect.set(0, 0, 544, 416)
@viewport.ox = 0
end
#--------------------------------------------------------------------------
# * hide_target_window
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_skill_hide_target_window :hide_target_window
def hide_target_window
eds_pre_ff9_menu_scene_skill_hide_target_window
@uses_window.visible = false unless @uses_window.nil?
@skill_window.visible = true
@status_window.visible = true
end
#--------------------------------------------------------------------------
# * determine_target
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_skill_determine_target :determine_target
def determine_target
eds_pre_ff9_menu_scene_skill_determine_target
@uses_window.set_skill($game_party.members[@actor_index], @skill_window.skill)
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_terminate :terminate
def terminate
eds_pre_ff9_menu_scene_item_terminate
@uses_window.dispose
end
end
-
@Seph
Ich glaube das müsste gehen, da es bei mir funktioniert hat :)
=begin
BigEd781' Final Fantasy IX Menu
Credit to PainHurt at rpgmakervx.net for most of the graphics
=end
module FF9_Config
# set this to 'true' if you would like to use a cusotm background image
USE_CUSTOM_BACK = true
# the name of the custom background image, without the file extension (no .png)
BACK_NAME = 'StoneBackground'
# if you set this to 'true', you must be using the enhanced
# Window class script that I posted: You can get that script here:
# http://www.rpgmakervx.net/index.php?showtopic=8042&hl=
# this will make the provided FF9 windowskin look really good.
USE_TILED_WINDOW = false
# When this is set to 'true', the menu cirsor will animate back and forth.
# When set to 'false', it will stay in place
ANIMATE_CURSOR = true
# When set to 'true', four background panels are always drawn.
# When set to 'false', a panel is only drawn for each party member
DRAW_FOR_ALL = true
# the name of the font used in the menu.
# use 'Font.default_name' for the default font. Try 'Centaur' for a nice, smaller font.
DEFAULT_FONT = Font.default_name
# set this to true to enable the font above for all windows.
# also sets the back_opacity to 255 for all windows.
# I recommend setting this to 'true' to maintain a consistent look.
USE_FOR_ALL = true
# the icon id for your gold window portion of the menu, 194 by default.
GOLD_ICON_ID = 194
end
if FF9_Config::USE_FOR_ALL
Font.default_name = FF9_Config::DEFAULT_FONT
class Window_Base < Window
alias :eds_pre_ff9_menu_base_initialize :initialize
def initialize(*args)
eds_pre_ff9_menu_base_initialize(*args)
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.back_opacity = 255
end
end
end
class Window_Base < Window
CAPTION_COLOR = Color.new(255,255,255)#(228, 228, 228)
CAPTION_HEIGHT = 12
X_OFFSET = 16
Y_OFFSET = -5
alias :eds_pre_window_caption_intialize :initialize
def initialize(*args)
eds_pre_window_caption_intialize(*args)
@caption_sprite = Sprite_Base.new(self.viewport)
create_caption_bitmap(1, CAPTION_HEIGHT)
@caption_sprite.x = self.x + X_OFFSET
@caption_sprite.y = self.y + Y_OFFSET
@caption_sprite.z = self.z + 1
end
def x=(value)
super
@caption_sprite.x = value + X_OFFSET unless @caption_sprite.nil?
end
def y=(value)
super
@caption_sprite.y = value + Y_OFFSET unless @caption_sprite.nil?
end
def z=(value)
super
@caption_sprite.z = value + 1 unless @caption_sprite.nil?
end
def caption=(text)
return unless text.is_a?(String)
return if text.empty?
@caption = text
width = @caption_sprite.bitmap.text_size(@caption).width
create_caption_bitmap(width, CAPTION_HEIGHT)
draw_caption
end
def create_caption_bitmap(w, h)
@caption_sprite.bitmap = Bitmap.new(w, h)
@caption_sprite.bitmap.font.size = 12
@caption_sprite.bitmap.font.color = CAPTION_COLOR
@caption_sprite.bitmap.font.bold = true
end
def draw_caption
unless @caption.nil?
h = @caption_sprite.bitmap.height
w = @caption_sprite.bitmap.width
rect = Rect.new( 0, h / 2, w, h / 4 )
@caption_sprite.bitmap.fill_rect(rect, Color.new(0, 0, 0, 96))
@caption_sprite.bitmap.draw_text(@caption_sprite.src_rect, @caption)
end
end
alias :eds_pre_caption_window_dispose :dispose
def dispose
eds_pre_caption_window_dispose
@caption_sprite.dispose
end
def find_window_width(text)
return Bitmap.new(544, 416).text_size(text).width + 32
end
end
class Window_TimeGold < Window_Base
def initialize(x, y)
width = find_window_width("9999999")
width = 140 if width < 140
super(x, y, width, WLH + 58)
self.back_opacity = 255
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
self.caption = "TIME & #{Vocab.gold}"
@time_icon = Cache.picture('Timer')
@intern_frame_count = 0
refresh
end
def draw_time
sec = (Graphics.frame_count / 60) % 60
min = (Graphics.frame_count / 3600) % 60
hrs = Graphics.frame_count / 216000
self.contents.font.color = Color.new(255, 255, 255)
time = "%02d:%02d:%02d" % [hrs, min, sec]
self.contents.draw_text(0, 0, self.contents.width, WLH, time, 2)
end
def refresh
self.contents.clear
self.contents.blt(0, 0, @time_icon, @time_icon.rect)
draw_icon(FF9_Config::GOLD_ICON_ID, 2, WLH)
draw_currency_value($game_party.gold, 0, WLH, self.contents.width)
draw_time
end
def draw_currency_value(value, x, y, width)
gold_text = Vocab.gold
cx = contents.text_size(gold_text[0,1]).width
self.contents.font.color = normal_color
self.contents.draw_text(x, y, width - cx - 2, WLH, value, 2)
self.contents.font.color = system_color
# just print the first character of Vocab::gold
self.contents.draw_text(x, y, width, WLH, gold_text[0,1], 2)
end
def update
super
@intern_frame_count += 1
return if (@intern_frame_count % 60) != 0
refresh
end
def find_window_width(text)
return Bitmap.new(544, 416).text_size(text).width + 80
end
end
class Window_MenuLocation < Window_Base
def initialize(x, y)
@map_name = load_data("Data/MapInfos.rvdata")[$game_map.map_id].name
width = find_window_width(@map_name)
super(x, y, width, WLH + 32)
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
self.back_opacity = 255
self.caption = "LOCATION"
refresh
end
def refresh
self.contents.clear
self.contents.draw_text(0, 0, self.contents.width, WLH, @map_name, 1)
end
def find_window_width(text)
return Bitmap.new(544, 416).text_size(text).width + 48
end
end
class Window_Command < Window_Selectable
alias :eds_pre_ff9_menu_win_command_init :initialize
def initialize(*args)
@font_name = Font.default_name
eds_pre_ff9_menu_win_command_init(*args)
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.name = @font_name
for i in 0...@item_max
draw_item(i)
end
end
def font_name=(name)
@font_name = name
end
end
class Window_Uses < Window_Base
def initialize(right, y, item)
@remaining_text = "Remaining: #{$game_party.item_number(item)}"
w = 160
x = right ? (544 - w) : 0
super(x, y, w, WLH + 32)
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
refresh
end
def item=(item)
return unless item.is_a?(RPG::Item)
@remaining_text = "Remaining: #{$game_party.item_number(item)}"
refresh
end
def visible=(value)
super
refresh if value
end
def refresh
self.contents.clear
self.contents.draw_text(self.contents.rect, @remaining_text, 1)
end
end
class Window_SkillUses < Window_Base
def initialize(right, y, actor, skill)
@remaining_text = make_info_string(actor, skill)
w = 182
x = right ? (544 - w) : 0
super(x, y, w, WLH + 32)
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
refresh
end
def make_info_string(actor, skill)
return if actor.nil? || skill.nil?
cost = actor.calc_mp_cost(skill)
return "Unlimited" if cost < 1
return "Remaining: #{actor.mp / cost}"
end
def set_skill(actor, skill)
return if actor.nil? || skill.nil?
return unless skill.is_a?(RPG::Skill)
@remaining_text = make_info_string(actor, skill)
refresh
end
def visible=(value)
super
refresh if value
end
def refresh
self.contents.clear
self.contents.draw_text(self.contents.rect, @remaining_text, 1)
end
end
class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 452, 352)
@bg_image = Cache.picture('FF9_MenuBar')
@arrow_image = Cache.picture('Pointer')
create_arrow_sprites
@sprite_last_draw_x = 0
@sprite_inc_x = 1
@intern_frame_count = 0
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
self.opacity = 0
self.z = 99
self.active = false
self.index = -1
refresh
end
#--------------------------------------------------------------------------
# * create_arrow_sprites
#--------------------------------------------------------------------------
def create_arrow_sprites
@arrow_sprites = []
for i in 0..3
@arrow_sprites << Sprite.new
@arrow_sprites[i].bitmap = Bitmap.new(@arrow_image.width + 7, @arrow_image.height)
@arrow_sprites[i].x = self.x
@arrow_sprites[i].y = (i * 80) + self.y + 40
@arrow_sprites[i].z = 999
end
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.members.size
draw_background_windows if FF9_Config::DRAW_FOR_ALL
for actor in $game_party.members
x = 104
y = actor.index * 80
y_offset = 6
draw_background_window(0, y) unless FF9_Config::DRAW_FOR_ALL
draw_actor_face(actor, 19, y + 4, 73)
draw_actor_name(actor, x, y + y_offset)
draw_actor_class(actor, x + 125, y + y_offset) if actor.states.empty?
draw_actor_level(actor, x, y + WLH * 1)
draw_actor_state(actor, x + 125, y + y_offset)
draw_actor_hp(actor, x, ((y) + (WLH * 2) - 5))
draw_actor_mp(actor, x + 125, ((y) + (WLH * 2) - 5))
end
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def update_cursor
if @index < 0
#refactor into update arrow method
@arrow_sprites.each { |sprite| sprite.bitmap.clear }
return
end
@intern_frame_count += 1
return unless (@intern_frame_count % 5) == 0
if @sprite_last_draw_x >= 7
@sprite_inc_x = -1
elsif @sprite_last_draw_x <= 0
@sprite_inc_x = 1
end
update_arrow_sprites
end
#--------------------------------------------------------------------------
# * update_arrow_sprites
#--------------------------------------------------------------------------
def update_arrow_sprites
@arrow_sprites.each { |sprite| sprite.bitmap.clear }
if @index == 99 # all selected
return unless (@intern_frame_count % 10) == 0
draw_arrow_sprites(@arrow_sprites, false)
else
draw_arrow_sprites([@arrow_sprites[@index]], FF9_Config::ANIMATE_CURSOR)
end
end
#--------------------------------------------------------------------------
# * draw_arrow_sprites
#--------------------------------------------------------------------------
def draw_arrow_sprites(sprites, animated=true)
for sprite in sprites
image_x = animated ? @sprite_last_draw_x + @sprite_inc_x : 0
@sprite_last_draw_x = image_x
sprite.bitmap.blt(image_x, 0, @arrow_image, @arrow_image.rect)
end
end
#--------------------------------------------------------------------------
# * y=
#--------------------------------------------------------------------------
def y=(value)
super
unless @arrow_sprites.nil?
for i in 0..3
@arrow_sprites[i].y = (i * 80) + value + 40
end
end
end
#--------------------------------------------------------------------------
# * x=
#--------------------------------------------------------------------------
def x=(value)
super
unless @arrow_sprites.nil?
@arrow_sprites.each { |sprite| sprite.x = value }
end
end
#--------------------------------------------------------------------------
# * draw_background_windows
#--------------------------------------------------------------------------
def draw_background_windows
self.contents.blt(0, 0, @bg_image, @bg_image.rect)
self.contents.blt(0, 80, @bg_image, @bg_image.rect)
self.contents.blt(0, 160, @bg_image, @bg_image.rect)
self.contents.blt(0, 240, @bg_image, @bg_image.rect)
end
#--------------------------------------------------------------------------
# * draw_background_window (single)
#--------------------------------------------------------------------------
def draw_background_window(x, y)
self.contents.blt(x, y, @bg_image, @bg_image.rect)
end
#--------------------------------------------------------------------------
# * visible
#--------------------------------------------------------------------------
def visible=(value)
super
@arrow_sprites.each { |sprite| sprite.visible = value }
end
#--------------------------------------------------------------------------
# * dispose
#--------------------------------------------------------------------------
alias :eds_pre_ff9_win_stat_dispose :dispose
def dispose
eds_pre_ff9_win_stat_dispose
@arrow_sprites.each { |sprite| sprite.dispose }
end
def enable_cursor?(rect=nil)
# for compatibility with the improved command window
return false
end
end
class Scene_Menu
#--------------------------------------------------------------------------
# * create_menu_background (only if USE_CUSTOM_BACK == true)
#--------------------------------------------------------------------------
if FF9_Config::USE_CUSTOM_BACK
def create_menu_background
@menuback_sprite = Sprite.new
@menuback_sprite.bitmap = Cache.picture(FF9_Config::BACK_NAME)
@menuback_sprite.color.set(16, 16, 16, 128)
update_menu_background
end
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s6 = Vocab::game_end
# just changed the width of the window here
@command_window = Window_Command.new(132, [s1, s2, s3, s4,s6])
@command_window.index = @menu_index
@command_window.stretch = false if FF9_Config::USE_TILED_WINDOW
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
# new stuff here
@command_window.font_name = FF9_Config::DEFAULT_FONT
@command_window.x = 528 - @command_window.width
@command_window.y = 16
@command_window.back_opacity = 255
end
#--------------------------------------------------------------------------
# * This method is intended to fix some compatibility problems
# that scripts run into when they change the command window
# in some way. So, we let them override "create_command_window"
# and we simply don't call it from the "start" method.
# Instead, we call this method which does some extra checking.
#--------------------------------------------------------------------------
def eds_create_command_window
create_command_window
old_commands = @command_window.commands
return if old_commands == [ Vocab::item,
Vocab::skill,
Vocab::equip,
Vocab::status,
Vocab::game_end ]
# so we know that the default command window is not being used
# we don't want to create another window, so we manually resize it
# before the player can see.
long = ''
# dynamically size the width based on the longest command
old_commands.each { |command| long = command if command.length > long.length }
# set the index to -1 so that the rectangle disappears.
# if we don't do this, you can see the selection rectangle resize.
@command_window.index = -1
@command_window.width = @command_window.contents.text_size(long).width + 42
@command_window.contents = Bitmap.new( @command_window.width - 32,
@command_window.height - 32 )
@command_window.font_name = FF9_Config::DEFAULT_FONT
@command_window.x = 528 - @command_window.width
@command_window.y = 16
@command_window.back_opacity = 255
@command_window.refresh
@command_window.index = @menu_index
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def start
super
create_menu_background
#call this method for compatibility
eds_create_command_window
@gold_window = Window_TimeGold.new(372, 342)
@gold_window.y -= @gold_window.height
@gold_window.x = 528 - @gold_window.width
@status_window = Window_MenuStatus.new(0, 12)
@location_window = Window_MenuLocation.new(0, 0)
@location_window.x = 528 - @location_window.width
@location_window.y = 398 - @location_window.height
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_menu_terminate :terminate
def terminate
eds_pre_ff9_menu_scene_menu_terminate
@location_window.dispose
end
end
class Scene_Item < Scene_Base
#--------------------------------------------------------------------------
# * start
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_start :start
def start
eds_pre_ff9_menu_scene_item_start
@target_window.y = 58
@uses_window = Window_Uses.new(true, @help_window.height, nil)
@uses_window.visible = false
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
# - right-align flag ignored
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_win_stat_show_target_window :show_target_window
def show_target_window(right)
@uses_window.item = @item_window.item
@uses_window.visible = true
@item_window.visible = false
@item_window.active = false
@target_window.visible = true
@target_window.active = true
@viewport.rect.set(0, 0, 544, 416)
@viewport.ox = 0
end
#--------------------------------------------------------------------------
# * hide_target_window
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_hide_target_window :hide_target_window
def hide_target_window
eds_pre_ff9_menu_scene_item_hide_target_window
@uses_window.visible = false unless @uses_window.nil?
@item_window.visible = true
end
#--------------------------------------------------------------------------
# * determine_target
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_determine_target :determine_target
def determine_target
eds_pre_ff9_menu_scene_item_determine_target
@uses_window.item = @item_window.item
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_terminate :terminate
def terminate
eds_pre_ff9_menu_scene_item_terminate
@uses_window.dispose
end
end
class Scene_Skill < Scene_Base
#--------------------------------------------------------------------------
# * start
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_skill_start :start
def start
eds_pre_ff9_menu_scene_skill_start
@target_window.y = 58
@uses_window = Window_SkillUses.new(true, @help_window.height, nil, nil)
@uses_window.visible = false
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
# - right-align flag ignored
#--------------------------------------------------------------------------
def show_target_window(right)
@uses_window.set_skill($game_party.members[@actor_index], @skill_window.skill)
@uses_window.visible = true
@status_window.visible = false
@skill_window.visible = false
@skill_window.active = false
@target_window.visible = true
@target_window.active = true
@viewport.rect.set(0, 0, 544, 416)
@viewport.ox = 0
end
#--------------------------------------------------------------------------
# * hide_target_window
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_skill_hide_target_window :hide_target_window
def hide_target_window
eds_pre_ff9_menu_scene_skill_hide_target_window
@uses_window.visible = false unless @uses_window.nil?
@skill_window.visible = true
@status_window.visible = true
end
#--------------------------------------------------------------------------
# * determine_target
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_skill_determine_target :determine_target
def determine_target
eds_pre_ff9_menu_scene_skill_determine_target
@uses_window.set_skill($game_party.members[@actor_index], @skill_window.skill)
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_terminate :terminate
def terminate
eds_pre_ff9_menu_scene_item_terminate
@uses_window.dispose
end
end
MfG
Deity
-
alles klar, ich werds testen und adde später dazu, obs geklappt hat!
danke schonmal!
-
@Seph
Ich glaube das müsste gehen, da es bei mir funktioniert hat :)
=begin
BigEd781' Final Fantasy IX Menu
Credit to PainHurt at rpgmakervx.net for most of the graphics
=end
module FF9_Config
# set this to 'true' if you would like to use a cusotm background image
USE_CUSTOM_BACK = true
# the name of the custom background image, without the file extension (no .png)
BACK_NAME = 'StoneBackground'
# if you set this to 'true', you must be using the enhanced
# Window class script that I posted: You can get that script here:
# [url]http://www.rpgmakervx.net/index.php?showtopic=8042&hl=[/url]
# this will make the provided FF9 windowskin look really good.
USE_TILED_WINDOW = false
# When this is set to 'true', the menu cirsor will animate back and forth.
# When set to 'false', it will stay in place
ANIMATE_CURSOR = true
# When set to 'true', four background panels are always drawn.
# When set to 'false', a panel is only drawn for each party member
DRAW_FOR_ALL = true
# the name of the font used in the menu.
# use 'Font.default_name' for the default font. Try 'Centaur' for a nice, smaller font.
DEFAULT_FONT = Font.default_name
# set this to true to enable the font above for all windows.
# also sets the back_opacity to 255 for all windows.
# I recommend setting this to 'true' to maintain a consistent look.
USE_FOR_ALL = true
# the icon id for your gold window portion of the menu, 194 by default.
GOLD_ICON_ID = 194
end
if FF9_Config::USE_FOR_ALL
Font.default_name = FF9_Config::DEFAULT_FONT
class Window_Base < Window
alias :eds_pre_ff9_menu_base_initialize :initialize
def initialize(*args)
eds_pre_ff9_menu_base_initialize(*args)
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.back_opacity = 255
end
end
end
class Window_Base < Window
CAPTION_COLOR = Color.new(255,255,255)#(228, 228, 228)
CAPTION_HEIGHT = 12
X_OFFSET = 16
Y_OFFSET = -5
alias :eds_pre_window_caption_intialize :initialize
def initialize(*args)
eds_pre_window_caption_intialize(*args)
@caption_sprite = Sprite_Base.new(self.viewport)
create_caption_bitmap(1, CAPTION_HEIGHT)
@caption_sprite.x = self.x + X_OFFSET
@caption_sprite.y = self.y + Y_OFFSET
@caption_sprite.z = self.z + 1
end
def x=(value)
super
@caption_sprite.x = value + X_OFFSET unless @caption_sprite.nil?
end
def y=(value)
super
@caption_sprite.y = value + Y_OFFSET unless @caption_sprite.nil?
end
def z=(value)
super
@caption_sprite.z = value + 1 unless @caption_sprite.nil?
end
def caption=(text)
return unless text.is_a?(String)
return if text.empty?
@caption = text
width = @caption_sprite.bitmap.text_size(@caption).width
create_caption_bitmap(width, CAPTION_HEIGHT)
draw_caption
end
def create_caption_bitmap(w, h)
@caption_sprite.bitmap = Bitmap.new(w, h)
@caption_sprite.bitmap.font.size = 12
@caption_sprite.bitmap.font.color = CAPTION_COLOR
@caption_sprite.bitmap.font.bold = true
end
def draw_caption
unless @caption.nil?
h = @caption_sprite.bitmap.height
w = @caption_sprite.bitmap.width
rect = Rect.new( 0, h / 2, w, h / 4 )
@caption_sprite.bitmap.fill_rect(rect, Color.new(0, 0, 0, 96))
@caption_sprite.bitmap.draw_text(@caption_sprite.src_rect, @caption)
end
end
alias :eds_pre_caption_window_dispose :dispose
def dispose
eds_pre_caption_window_dispose
@caption_sprite.dispose
end
def find_window_width(text)
return Bitmap.new(544, 416).text_size(text).width + 32
end
end
class Window_TimeGold < Window_Base
def initialize(x, y)
width = find_window_width("9999999")
width = 140 if width < 140
super(x, y, width, WLH + 58)
self.back_opacity = 255
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
self.caption = "TIME & #{Vocab.gold}"
@time_icon = Cache.picture('Timer')
@intern_frame_count = 0
refresh
end
def draw_time
sec = (Graphics.frame_count / 60) % 60
min = (Graphics.frame_count / 3600) % 60
hrs = Graphics.frame_count / 216000
self.contents.font.color = Color.new(255, 255, 255)
time = "%02d:%02d:%02d" % [hrs, min, sec]
self.contents.draw_text(0, 0, self.contents.width, WLH, time, 2)
end
def refresh
self.contents.clear
self.contents.blt(0, 0, @time_icon, @time_icon.rect)
draw_icon(FF9_Config::GOLD_ICON_ID, 2, WLH)
draw_currency_value($game_party.gold, 0, WLH, self.contents.width)
draw_time
end
def draw_currency_value(value, x, y, width)
gold_text = Vocab.gold
cx = contents.text_size(gold_text[0,1]).width
self.contents.font.color = normal_color
self.contents.draw_text(x, y, width - cx - 2, WLH, value, 2)
self.contents.font.color = system_color
# just print the first character of Vocab::gold
self.contents.draw_text(x, y, width, WLH, gold_text[0,1], 2)
end
def update
super
@intern_frame_count += 1
return if (@intern_frame_count % 60) != 0
refresh
end
def find_window_width(text)
return Bitmap.new(544, 416).text_size(text).width + 80
end
end
class Window_MenuLocation < Window_Base
def initialize(x, y)
@map_name = load_data("Data/MapInfos.rvdata")[$game_map.map_id].name
width = find_window_width(@map_name)
super(x, y, width, WLH + 32)
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
self.back_opacity = 255
self.caption = "LOCATION"
refresh
end
def refresh
self.contents.clear
self.contents.draw_text(0, 0, self.contents.width, WLH, @map_name, 1)
end
def find_window_width(text)
return Bitmap.new(544, 416).text_size(text).width + 48
end
end
class Window_Command < Window_Selectable
alias :eds_pre_ff9_menu_win_command_init :initialize
def initialize(*args)
@font_name = Font.default_name
eds_pre_ff9_menu_win_command_init(*args)
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.name = @font_name
for i in 0...@item_max
draw_item(i)
end
end
def font_name=(name)
@font_name = name
end
end
class Window_Uses < Window_Base
def initialize(right, y, item)
@remaining_text = "Remaining: #{$game_party.item_number(item)}"
w = 160
x = right ? (544 - w) : 0
super(x, y, w, WLH + 32)
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
refresh
end
def item=(item)
return unless item.is_a?(RPG::Item)
@remaining_text = "Remaining: #{$game_party.item_number(item)}"
refresh
end
def visible=(value)
super
refresh if value
end
def refresh
self.contents.clear
self.contents.draw_text(self.contents.rect, @remaining_text, 1)
end
end
class Window_SkillUses < Window_Base
def initialize(right, y, actor, skill)
@remaining_text = make_info_string(actor, skill)
w = 182
x = right ? (544 - w) : 0
super(x, y, w, WLH + 32)
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
refresh
end
def make_info_string(actor, skill)
return if actor.nil? || skill.nil?
cost = actor.calc_mp_cost(skill)
return "Unlimited" if cost < 1
return "Remaining: #{actor.mp / cost}"
end
def set_skill(actor, skill)
return if actor.nil? || skill.nil?
return unless skill.is_a?(RPG::Skill)
@remaining_text = make_info_string(actor, skill)
refresh
end
def visible=(value)
super
refresh if value
end
def refresh
self.contents.clear
self.contents.draw_text(self.contents.rect, @remaining_text, 1)
end
end
class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 452, 352)
@bg_image = Cache.picture('FF9_MenuBar')
@arrow_image = Cache.picture('Pointer')
create_arrow_sprites
@sprite_last_draw_x = 0
@sprite_inc_x = 1
@intern_frame_count = 0
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
self.opacity = 0
self.z = 99
self.active = false
self.index = -1
refresh
end
#--------------------------------------------------------------------------
# * create_arrow_sprites
#--------------------------------------------------------------------------
def create_arrow_sprites
@arrow_sprites = []
for i in 0..3
@arrow_sprites << Sprite.new
@arrow_sprites[i].bitmap = Bitmap.new(@arrow_image.width + 7, @arrow_image.height)
@arrow_sprites[i].x = self.x
@arrow_sprites[i].y = (i * 80) + self.y + 40
@arrow_sprites[i].z = 999
end
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.members.size
draw_background_windows if FF9_Config::DRAW_FOR_ALL
for actor in $game_party.members
x = 104
y = actor.index * 80
y_offset = 6
draw_background_window(0, y) unless FF9_Config::DRAW_FOR_ALL
draw_actor_face(actor, 19, y + 4, 73)
draw_actor_name(actor, x, y + y_offset)
draw_actor_class(actor, x + 125, y + y_offset) if actor.states.empty?
draw_actor_level(actor, x, y + WLH * 1)
draw_actor_state(actor, x + 125, y + y_offset)
draw_actor_hp(actor, x, ((y) + (WLH * 2) - 5))
draw_actor_mp(actor, x + 125, ((y) + (WLH * 2) - 5))
end
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def update_cursor
if @index < 0
#refactor into update arrow method
@arrow_sprites.each { |sprite| sprite.bitmap.clear }
return
end
@intern_frame_count += 1
return unless (@intern_frame_count % 5) == 0
if @sprite_last_draw_x >= 7
@sprite_inc_x = -1
elsif @sprite_last_draw_x <= 0
@sprite_inc_x = 1
end
update_arrow_sprites
end
#--------------------------------------------------------------------------
# * update_arrow_sprites
#--------------------------------------------------------------------------
def update_arrow_sprites
@arrow_sprites.each { |sprite| sprite.bitmap.clear }
if @index == 99 # all selected
return unless (@intern_frame_count % 10) == 0
draw_arrow_sprites(@arrow_sprites, false)
else
draw_arrow_sprites([@arrow_sprites[@index]], FF9_Config::ANIMATE_CURSOR)
end
end
#--------------------------------------------------------------------------
# * draw_arrow_sprites
#--------------------------------------------------------------------------
def draw_arrow_sprites(sprites, animated=true)
for sprite in sprites
image_x = animated ? @sprite_last_draw_x + @sprite_inc_x : 0
@sprite_last_draw_x = image_x
sprite.bitmap.blt(image_x, 0, @arrow_image, @arrow_image.rect)
end
end
#--------------------------------------------------------------------------
# * y=
#--------------------------------------------------------------------------
def y=(value)
super
unless @arrow_sprites.nil?
for i in 0..3
@arrow_sprites[i].y = (i * 80) + value + 40
end
end
end
#--------------------------------------------------------------------------
# * x=
#--------------------------------------------------------------------------
def x=(value)
super
unless @arrow_sprites.nil?
@arrow_sprites.each { |sprite| sprite.x = value }
end
end
#--------------------------------------------------------------------------
# * draw_background_windows
#--------------------------------------------------------------------------
def draw_background_windows
self.contents.blt(0, 0, @bg_image, @bg_image.rect)
self.contents.blt(0, 80, @bg_image, @bg_image.rect)
self.contents.blt(0, 160, @bg_image, @bg_image.rect)
self.contents.blt(0, 240, @bg_image, @bg_image.rect)
end
#--------------------------------------------------------------------------
# * draw_background_window (single)
#--------------------------------------------------------------------------
def draw_background_window(x, y)
self.contents.blt(x, y, @bg_image, @bg_image.rect)
end
#--------------------------------------------------------------------------
# * visible
#--------------------------------------------------------------------------
def visible=(value)
super
@arrow_sprites.each { |sprite| sprite.visible = value }
end
#--------------------------------------------------------------------------
# * dispose
#--------------------------------------------------------------------------
alias :eds_pre_ff9_win_stat_dispose :dispose
def dispose
eds_pre_ff9_win_stat_dispose
@arrow_sprites.each { |sprite| sprite.dispose }
end
def enable_cursor?(rect=nil)
# for compatibility with the improved command window
return false
end
end
class Scene_Menu
#--------------------------------------------------------------------------
# * create_menu_background (only if USE_CUSTOM_BACK == true)
#--------------------------------------------------------------------------
if FF9_Config::USE_CUSTOM_BACK
def create_menu_background
@menuback_sprite = Sprite.new
@menuback_sprite.bitmap = Cache.picture(FF9_Config::BACK_NAME)
@menuback_sprite.color.set(16, 16, 16, 128)
update_menu_background
end
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s6 = Vocab::game_end
# just changed the width of the window here
@command_window = Window_Command.new(132, [s1, s2, s3, s4,s6])
@command_window.index = @menu_index
@command_window.stretch = false if FF9_Config::USE_TILED_WINDOW
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
# new stuff here
@command_window.font_name = FF9_Config::DEFAULT_FONT
@command_window.x = 528 - @command_window.width
@command_window.y = 16
@command_window.back_opacity = 255
end
#--------------------------------------------------------------------------
# * This method is intended to fix some compatibility problems
# that scripts run into when they change the command window
# in some way. So, we let them override "create_command_window"
# and we simply don't call it from the "start" method.
# Instead, we call this method which does some extra checking.
#--------------------------------------------------------------------------
def eds_create_command_window
create_command_window
old_commands = @command_window.commands
return if old_commands == [ Vocab::item,
Vocab::skill,
Vocab::equip,
Vocab::status,
Vocab::game_end ]
# so we know that the default command window is not being used
# we don't want to create another window, so we manually resize it
# before the player can see.
long = ''
# dynamically size the width based on the longest command
old_commands.each { |command| long = command if command.length > long.length }
# set the index to -1 so that the rectangle disappears.
# if we don't do this, you can see the selection rectangle resize.
@command_window.index = -1
@command_window.width = @command_window.contents.text_size(long).width + 42
@command_window.contents = Bitmap.new( @command_window.width - 32,
@command_window.height - 32 )
@command_window.font_name = FF9_Config::DEFAULT_FONT
@command_window.x = 528 - @command_window.width
@command_window.y = 16
@command_window.back_opacity = 255
@command_window.refresh
@command_window.index = @menu_index
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def start
super
create_menu_background
#call this method for compatibility
eds_create_command_window
@gold_window = Window_TimeGold.new(372, 342)
@gold_window.y -= @gold_window.height
@gold_window.x = 528 - @gold_window.width
@status_window = Window_MenuStatus.new(0, 12)
@location_window = Window_MenuLocation.new(0, 0)
@location_window.x = 528 - @location_window.width
@location_window.y = 398 - @location_window.height
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_menu_terminate :terminate
def terminate
eds_pre_ff9_menu_scene_menu_terminate
@location_window.dispose
end
end
class Scene_Item < Scene_Base
#--------------------------------------------------------------------------
# * start
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_start :start
def start
eds_pre_ff9_menu_scene_item_start
@target_window.y = 58
@uses_window = Window_Uses.new(true, @help_window.height, nil)
@uses_window.visible = false
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
# - right-align flag ignored
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_win_stat_show_target_window :show_target_window
def show_target_window(right)
@uses_window.item = @item_window.item
@uses_window.visible = true
@item_window.visible = false
@item_window.active = false
@target_window.visible = true
@target_window.active = true
@viewport.rect.set(0, 0, 544, 416)
@viewport.ox = 0
end
#--------------------------------------------------------------------------
# * hide_target_window
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_hide_target_window :hide_target_window
def hide_target_window
eds_pre_ff9_menu_scene_item_hide_target_window
@uses_window.visible = false unless @uses_window.nil?
@item_window.visible = true
end
#--------------------------------------------------------------------------
# * determine_target
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_determine_target :determine_target
def determine_target
eds_pre_ff9_menu_scene_item_determine_target
@uses_window.item = @item_window.item
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_terminate :terminate
def terminate
eds_pre_ff9_menu_scene_item_terminate
@uses_window.dispose
end
end
class Scene_Skill < Scene_Base
#--------------------------------------------------------------------------
# * start
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_skill_start :start
def start
eds_pre_ff9_menu_scene_skill_start
@target_window.y = 58
@uses_window = Window_SkillUses.new(true, @help_window.height, nil, nil)
@uses_window.visible = false
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
# - right-align flag ignored
#--------------------------------------------------------------------------
def show_target_window(right)
@uses_window.set_skill($game_party.members[@actor_index], @skill_window.skill)
@uses_window.visible = true
@status_window.visible = false
@skill_window.visible = false
@skill_window.active = false
@target_window.visible = true
@target_window.active = true
@viewport.rect.set(0, 0, 544, 416)
@viewport.ox = 0
end
#--------------------------------------------------------------------------
# * hide_target_window
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_skill_hide_target_window :hide_target_window
def hide_target_window
eds_pre_ff9_menu_scene_skill_hide_target_window
@uses_window.visible = false unless @uses_window.nil?
@skill_window.visible = true
@status_window.visible = true
end
#--------------------------------------------------------------------------
# * determine_target
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_skill_determine_target :determine_target
def determine_target
eds_pre_ff9_menu_scene_skill_determine_target
@uses_window.set_skill($game_party.members[@actor_index], @skill_window.skill)
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_terminate :terminate
def terminate
eds_pre_ff9_menu_scene_item_terminate
@uses_window.dispose
end
end
MfG
Deity
Hat leider net geklappt, liegt vllt an einem meine anderen Scripte :/
Aber trotzdem danke für die Hilfe.
-
@Seph
Hast du vielleicht andere Menübasierendescripte, die hinter diesem Script eingefügt wurden? Da das letzte Script meistens die größte Wirkung hat solltest du das mal überprüfen.
MfG
Deity
-
Hab nur das Tankentai ATB addon dass im Menü ein neues Feld hinzufügt für die ATB-EInstellugnen. Keine Ahnung obs daran liegt.
-
Hier bitte schön ich habe es an den ATB angepasst. Einzige Vorraussetzung für das funktionieren,
das Script hier muss hinter ATB Addon ( ATB 1.1b) eingefügt werden.
=begin
BigEd781' Final Fantasy IX Menu
Credit to PainHurt at rpgmakervx.net for most of the graphics
=end
module FF9_Config
# set this to 'true' if you would like to use a cusotm background image
USE_CUSTOM_BACK = true
# the name of the custom background image, without the file extension (no .png)
BACK_NAME = 'StoneBackground'
# if you set this to 'true', you must be using the enhanced
# Window class script that I posted: You can get that script here:
# http://www.rpgmakervx.net/index.php?showtopic=8042&hl=
# this will make the provided FF9 windowskin look really good.
USE_TILED_WINDOW = false
# When this is set to 'true', the menu cirsor will animate back and forth.
# When set to 'false', it will stay in place
ANIMATE_CURSOR = true
# When set to 'true', four background panels are always drawn.
# When set to 'false', a panel is only drawn for each party member
DRAW_FOR_ALL = true
# the name of the font used in the menu.
# use 'Font.default_name' for the default font. Try 'Centaur' for a nice, smaller font.
DEFAULT_FONT = Font.default_name
# set this to true to enable the font above for all windows.
# also sets the back_opacity to 255 for all windows.
# I recommend setting this to 'true' to maintain a consistent look.
USE_FOR_ALL = true
# the icon id for your gold window portion of the menu, 194 by default.
GOLD_ICON_ID = 194
end
if FF9_Config::USE_FOR_ALL
Font.default_name = FF9_Config::DEFAULT_FONT
class Window_Base < Window
alias :eds_pre_ff9_menu_base_initialize :initialize
def initialize(*args)
eds_pre_ff9_menu_base_initialize(*args)
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.back_opacity = 255
end
end
end
class Window_Base < Window
CAPTION_COLOR = Color.new(255,255,255)#(228, 228, 228)
CAPTION_HEIGHT = 12
X_OFFSET = 16
Y_OFFSET = -5
alias :eds_pre_window_caption_intialize :initialize
def initialize(*args)
eds_pre_window_caption_intialize(*args)
@caption_sprite = Sprite_Base.new(self.viewport)
create_caption_bitmap(1, CAPTION_HEIGHT)
@caption_sprite.x = self.x + X_OFFSET
@caption_sprite.y = self.y + Y_OFFSET
@caption_sprite.z = self.z + 1
end
def x=(value)
super
@caption_sprite.x = value + X_OFFSET unless @caption_sprite.nil?
end
def y=(value)
super
@caption_sprite.y = value + Y_OFFSET unless @caption_sprite.nil?
end
def z=(value)
super
@caption_sprite.z = value + 1 unless @caption_sprite.nil?
end
def caption=(text)
return unless text.is_a?(String)
return if text.empty?
@caption = text
width = @caption_sprite.bitmap.text_size(@caption).width
create_caption_bitmap(width, CAPTION_HEIGHT)
draw_caption
end
def create_caption_bitmap(w, h)
@caption_sprite.bitmap = Bitmap.new(w, h)
@caption_sprite.bitmap.font.size = 12
@caption_sprite.bitmap.font.color = CAPTION_COLOR
@caption_sprite.bitmap.font.bold = true
end
def draw_caption
unless @caption.nil?
h = @caption_sprite.bitmap.height
w = @caption_sprite.bitmap.width
rect = Rect.new( 0, h / 2, w, h / 4 )
@caption_sprite.bitmap.fill_rect(rect, Color.new(0, 0, 0, 96))
@caption_sprite.bitmap.draw_text(@caption_sprite.src_rect, @caption)
end
end
alias :eds_pre_caption_window_dispose :dispose
def dispose
eds_pre_caption_window_dispose
@caption_sprite.dispose
end
def find_window_width(text)
return Bitmap.new(544, 416).text_size(text).width + 32
end
end
class Window_TimeGold < Window_Base
def initialize(x, y)
width = find_window_width("9999999")
width = 140 if width < 140
super(x, y, width, WLH + 58)
self.back_opacity = 255
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
self.caption = "TIME & #{Vocab.gold}"
@time_icon = Cache.picture('Timer')
@intern_frame_count = 0
refresh
end
def draw_time
sec = (Graphics.frame_count / 60) % 60
min = (Graphics.frame_count / 3600) % 60
hrs = Graphics.frame_count / 216000
self.contents.font.color = Color.new(255, 255, 255)
time = "%02d:%02d:%02d" % [hrs, min, sec]
self.contents.draw_text(0, 0, self.contents.width, WLH, time, 2)
end
def refresh
self.contents.clear
self.contents.blt(0, 0, @time_icon, @time_icon.rect)
draw_icon(FF9_Config::GOLD_ICON_ID, 2, WLH)
draw_currency_value($game_party.gold, 0, WLH, self.contents.width)
draw_time
end
def draw_currency_value(value, x, y, width)
gold_text = Vocab.gold
cx = contents.text_size(gold_text[0,1]).width
self.contents.font.color = normal_color
self.contents.draw_text(x, y, width - cx - 2, WLH, value, 2)
self.contents.font.color = system_color
# just print the first character of Vocab::gold
self.contents.draw_text(x, y, width, WLH, gold_text[0,1], 2)
end
def update
super
@intern_frame_count += 1
return if (@intern_frame_count % 60) != 0
refresh
end
def find_window_width(text)
return Bitmap.new(544, 416).text_size(text).width + 80
end
end
class Window_MenuLocation < Window_Base
def initialize(x, y)
@map_name = load_data("Data/MapInfos.rvdata")[$game_map.map_id].name
width = find_window_width(@map_name)
super(x, y, width, WLH + 32)
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
self.back_opacity = 255
self.caption = "LOCATION"
refresh
end
def refresh
self.contents.clear
self.contents.draw_text(0, 0, self.contents.width, WLH, @map_name, 1)
end
def find_window_width(text)
return Bitmap.new(544, 416).text_size(text).width + 48
end
end
class Window_Command < Window_Selectable
alias :eds_pre_ff9_menu_win_command_init :initialize
def initialize(*args)
@font_name = Font.default_name
eds_pre_ff9_menu_win_command_init(*args)
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.name = @font_name
for i in 0...@item_max
draw_item(i)
end
end
def font_name=(name)
@font_name = name
end
end
class Window_Uses < Window_Base
def initialize(right, y, item)
@remaining_text = "Remaining: #{$game_party.item_number(item)}"
w = 160
x = right ? (544 - w) : 0
super(x, y, w, WLH + 32)
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
refresh
end
def item=(item)
return unless item.is_a?(RPG::Item)
@remaining_text = "Remaining: #{$game_party.item_number(item)}"
refresh
end
def visible=(value)
super
refresh if value
end
def refresh
self.contents.clear
self.contents.draw_text(self.contents.rect, @remaining_text, 1)
end
end
class Window_SkillUses < Window_Base
def initialize(right, y, actor, skill)
@remaining_text = make_info_string(actor, skill)
w = 182
x = right ? (544 - w) : 0
super(x, y, w, WLH + 32)
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
refresh
end
def make_info_string(actor, skill)
return if actor.nil? || skill.nil?
cost = actor.calc_mp_cost(skill)
return "Unlimited" if cost < 1
return "Remaining: #{actor.mp / cost}"
end
def set_skill(actor, skill)
return if actor.nil? || skill.nil?
return unless skill.is_a?(RPG::Skill)
@remaining_text = make_info_string(actor, skill)
refresh
end
def visible=(value)
super
refresh if value
end
def refresh
self.contents.clear
self.contents.draw_text(self.contents.rect, @remaining_text, 1)
end
end
class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 452, 352)
@bg_image = Cache.picture('FF9_MenuBar')
@arrow_image = Cache.picture('Pointer')
create_arrow_sprites
@sprite_last_draw_x = 0
@sprite_inc_x = 1
@intern_frame_count = 0
self.stretch = false if FF9_Config::USE_TILED_WINDOW
self.contents.font.name = FF9_Config::DEFAULT_FONT
self.opacity = 0
self.z = 99
self.active = false
self.index = -1
refresh
end
#--------------------------------------------------------------------------
# * create_arrow_sprites
#--------------------------------------------------------------------------
def create_arrow_sprites
@arrow_sprites = []
for i in 0..3
@arrow_sprites << Sprite.new
@arrow_sprites[i].bitmap = Bitmap.new(@arrow_image.width + 7, @arrow_image.height)
@arrow_sprites[i].x = self.x
@arrow_sprites[i].y = (i * 80) + self.y + 40
@arrow_sprites[i].z = 999
end
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.members.size
draw_background_windows if FF9_Config::DRAW_FOR_ALL
for actor in $game_party.members
x = 104
y = actor.index * 80
y_offset = 6
draw_background_window(0, y) unless FF9_Config::DRAW_FOR_ALL
draw_actor_face(actor, 19, y + 4, 73)
draw_actor_name(actor, x, y + y_offset)
draw_actor_class(actor, x + 125, y + y_offset) if actor.states.empty?
draw_actor_level(actor, x, y + WLH * 1)
draw_actor_state(actor, x + 125, y + y_offset)
draw_actor_hp(actor, x, ((y) + (WLH * 2) - 5))
draw_actor_mp(actor, x + 125, ((y) + (WLH * 2) - 5))
end
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def update_cursor
if @index < 0
#refactor into update arrow method
@arrow_sprites.each { |sprite| sprite.bitmap.clear }
return
end
@intern_frame_count += 1
return unless (@intern_frame_count % 5) == 0
if @sprite_last_draw_x >= 7
@sprite_inc_x = -1
elsif @sprite_last_draw_x <= 0
@sprite_inc_x = 1
end
update_arrow_sprites
end
#--------------------------------------------------------------------------
# * update_arrow_sprites
#--------------------------------------------------------------------------
def update_arrow_sprites
@arrow_sprites.each { |sprite| sprite.bitmap.clear }
if @index == 99 # all selected
return unless (@intern_frame_count % 10) == 0
draw_arrow_sprites(@arrow_sprites, false)
else
draw_arrow_sprites([@arrow_sprites[@index]], FF9_Config::ANIMATE_CURSOR)
end
end
#--------------------------------------------------------------------------
# * draw_arrow_sprites
#--------------------------------------------------------------------------
def draw_arrow_sprites(sprites, animated=true)
for sprite in sprites
image_x = animated ? @sprite_last_draw_x + @sprite_inc_x : 0
@sprite_last_draw_x = image_x
sprite.bitmap.blt(image_x, 0, @arrow_image, @arrow_image.rect)
end
end
#--------------------------------------------------------------------------
# * y=
#--------------------------------------------------------------------------
def y=(value)
super
unless @arrow_sprites.nil?
for i in 0..3
@arrow_sprites[i].y = (i * 80) + value + 40
end
end
end
#--------------------------------------------------------------------------
# * x=
#--------------------------------------------------------------------------
def x=(value)
super
unless @arrow_sprites.nil?
@arrow_sprites.each { |sprite| sprite.x = value }
end
end
#--------------------------------------------------------------------------
# * draw_background_windows
#--------------------------------------------------------------------------
def draw_background_windows
self.contents.blt(0, 0, @bg_image, @bg_image.rect)
self.contents.blt(0, 80, @bg_image, @bg_image.rect)
self.contents.blt(0, 160, @bg_image, @bg_image.rect)
self.contents.blt(0, 240, @bg_image, @bg_image.rect)
end
#--------------------------------------------------------------------------
# * draw_background_window (single)
#--------------------------------------------------------------------------
def draw_background_window(x, y)
self.contents.blt(x, y, @bg_image, @bg_image.rect)
end
#--------------------------------------------------------------------------
# * visible
#--------------------------------------------------------------------------
def visible=(value)
super
@arrow_sprites.each { |sprite| sprite.visible = value }
end
#--------------------------------------------------------------------------
# * dispose
#--------------------------------------------------------------------------
alias :eds_pre_ff9_win_stat_dispose :dispose
def dispose
eds_pre_ff9_win_stat_dispose
@arrow_sprites.each { |sprite| sprite.dispose }
end
def enable_cursor?(rect=nil)
# for compatibility with the improved command window
return false
end
end
class Scene_Menu
#--------------------------------------------------------------------------
# * create_menu_background (only if USE_CUSTOM_BACK == true)
#--------------------------------------------------------------------------
if FF9_Config::USE_CUSTOM_BACK
def create_menu_background
@menuback_sprite = Sprite.new
@menuback_sprite.bitmap = Cache.picture(FF9_Config::BACK_NAME)
@menuback_sprite.color.set(16, 16, 16, 128)
update_menu_background
end
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = N02::ATB_CUSTOMIZE_NAME
s6 = Vocab::game_end
# just changed the width of the window here
@command_window = Window_Command.new(132, [s1, s2, s3, s4, s5, s6])
@command_window.index = @menu_index
@command_window.stretch = false if FF9_Config::USE_TILED_WINDOW
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
# new stuff here
@command_window.font_name = FF9_Config::DEFAULT_FONT
@command_window.x = 528 - @command_window.width
@command_window.y = 16
@command_window.back_opacity = 255
end
#--------------------------------------------------------------------------
# * This method is intended to fix some compatibility problems
# that scripts run into when they change the command window
# in some way. So, we let them override "create_command_window"
# and we simply don't call it from the "start" method.
# Instead, we call this method which does some extra checking.
#--------------------------------------------------------------------------
def eds_create_command_window
create_command_window
old_commands = @command_window.commands
return if old_commands == [ Vocab::item,
Vocab::skill,
Vocab::equip,
Vocab::status,
Vocab::game_end ]
# so we know that the default command window is not being used
# we don't want to create another window, so we manually resize it
# before the player can see.
long = ''
# dynamically size the width based on the longest command
old_commands.each { |command| long = command if command.length > long.length }
# set the index to -1 so that the rectangle disappears.
# if we don't do this, you can see the selection rectangle resize.
@command_window.index = -1
@command_window.width = @command_window.contents.text_size(long).width + 42
@command_window.contents = Bitmap.new( @command_window.width - 32,
@command_window.height - 32 )
@command_window.font_name = FF9_Config::DEFAULT_FONT
@command_window.x = 528 - @command_window.width
@command_window.y = 16
@command_window.back_opacity = 255
@command_window.refresh
@command_window.index = @menu_index
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
#--------------------------------------------------------------------------
def start
super
create_menu_background
#call this method for compatibility
eds_create_command_window
@gold_window = Window_TimeGold.new(372, 342)
@gold_window.y -= @gold_window.height
@gold_window.x = 528 - @gold_window.width
@status_window = Window_MenuStatus.new(0, 12)
@location_window = Window_MenuLocation.new(0, 0)
@location_window.x = 528 - @location_window.width
@location_window.y = 398 - @location_window.height
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_menu_terminate :terminate
def terminate
eds_pre_ff9_menu_scene_menu_terminate
@location_window.dispose
end
end
class Scene_Item < Scene_Base
#--------------------------------------------------------------------------
# * start
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_start :start
def start
eds_pre_ff9_menu_scene_item_start
@target_window.y = 58
@uses_window = Window_Uses.new(true, @help_window.height, nil)
@uses_window.visible = false
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
# - right-align flag ignored
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_win_stat_show_target_window :show_target_window
def show_target_window(right)
@uses_window.item = @item_window.item
@uses_window.visible = true
@item_window.visible = false
@item_window.active = false
@target_window.visible = true
@target_window.active = true
@viewport.rect.set(0, 0, 544, 416)
@viewport.ox = 0
end
#--------------------------------------------------------------------------
# * hide_target_window
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_hide_target_window :hide_target_window
def hide_target_window
eds_pre_ff9_menu_scene_item_hide_target_window
@uses_window.visible = false unless @uses_window.nil?
@item_window.visible = true
end
#--------------------------------------------------------------------------
# * determine_target
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_determine_target :determine_target
def determine_target
eds_pre_ff9_menu_scene_item_determine_target
@uses_window.item = @item_window.item
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_terminate :terminate
def terminate
eds_pre_ff9_menu_scene_item_terminate
@uses_window.dispose
end
end
class Scene_Skill < Scene_Base
#--------------------------------------------------------------------------
# * start
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_skill_start :start
def start
eds_pre_ff9_menu_scene_skill_start
@target_window.y = 58
@uses_window = Window_SkillUses.new(true, @help_window.height, nil, nil)
@uses_window.visible = false
end
#--------------------------------------------------------------------------
# * OVERWRITTEN
# - right-align flag ignored
#--------------------------------------------------------------------------
def show_target_window(right)
@uses_window.set_skill($game_party.members[@actor_index], @skill_window.skill)
@uses_window.visible = true
@status_window.visible = false
@skill_window.visible = false
@skill_window.active = false
@target_window.visible = true
@target_window.active = true
@viewport.rect.set(0, 0, 544, 416)
@viewport.ox = 0
end
#--------------------------------------------------------------------------
# * hide_target_window
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_skill_hide_target_window :hide_target_window
def hide_target_window
eds_pre_ff9_menu_scene_skill_hide_target_window
@uses_window.visible = false unless @uses_window.nil?
@skill_window.visible = true
@status_window.visible = true
end
#--------------------------------------------------------------------------
# * determine_target
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_skill_determine_target :determine_target
def determine_target
eds_pre_ff9_menu_scene_skill_determine_target
@uses_window.set_skill($game_party.members[@actor_index], @skill_window.skill)
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
alias :eds_pre_ff9_menu_scene_item_terminate :terminate
def terminate
eds_pre_ff9_menu_scene_item_terminate
@uses_window.dispose
end
end
MfG
Deity
-
Thx, funktioniert. Gute Arbeit :D
-
hey leutz bin neu hier und weis jetzt nicht so recht ob das was ich fragen willl hier rein gehört xD
allsoooo
ich suche ein script was es mir erlaubt mehr sachen an mein cahr zu binden wie ringe amulet und so weiter
allso normal kann man 5 sachen an einem char binden aber ich hätte gern noch 5 weiterre slots für ringe ohrringe und amulet
ich hoffe ihr wisst was ich meine allso wenn jemand weiss wie es geht bitte schreiben wenn möglich gleich mit script ^^
und anleitung wie ich es einbaun kann
danke schön
mfg N0rtekcriss
-
Könnte sein, dass das doch zu Requests gehört aber trotzdem hier die Antwort.
Dieser Script ist meiner Meinung nach, genau das richtige solange du ein bischen Englisch kannst.
KGC EquipExtension erlaubt es dir weitere Plätze im Equipment bereich zu erschaffen. Der hacken ist, dass du durch eine Abfrage nichtmehr auf ein Equipment zurückgreifen kannst. Das heisst du kannst nicht abfragen ob "Player 1" ein "Long Sword" an hat.
Ich erlaube es mir mal das Script direkt zu posten.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ? Skill CP System - KGC_SkillCPSystem ? VX ?
#_/ ? Last Update: 2008/09/06 ?
#_/ ? Translated and Extended Updates by Mr. Anonymous ?
#_/ ? KGC Site: ?
#_/ ? http://f44.aaa.livedoor.jp/~ytomy/ ?
#_/ ? Translator's Blog: ?
#_/ ? http://mraprojects.wordpress.com ?
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ This script has two functions equipment-related functions.
#_/ The first function is the ability to create moire 'slots' for equipment,
#_/ such as separating Boots and Gauntlets from mere 'accessories'.
#_/ It is possible to also create additional equipment slots. See the customize
#_/ block for more details.
#_/
#_/ The second function is an "EP" (Equipment Point) System, which allows you
#_/ to designate how many 'points' an item costs to successfully equip. A
#_/ character's total EP expenditure is increased upon leveling up.
#_/ This introduces more strategy-oriented character customization.
#_/----------------------------------------------------------------------------
#_/ ? Instructions For Usage ?
#_/ To make use of these functions, you must insert the tag into the desired
#_/ item's "Notes" box located in the Armor tab of the database. For example,
#_/ you want the Leather Boots to be bound to the "Legs" slot and cost
#_/ 2 EP to equip. Insert <equipkind Legs>, press enter, then add <EP 2>
#_/
#_/ ? Tags ?
#_/ <equipkind EquipType>
#_/ Where EquipType = The name of the type of equipment. See EXTRA_EQUIP_KIND
#_/ below.
#_/ <EP Amount>
#_/ Where Amount = The desired amount of EP the item requires to equip.
#_/
#_/
#_/ ? Script Commands ?
#_/ These commands are used in "Script" function in the third page of event
#_/ commands under "Advanced".
#_/
#_/ * set_actor_equip_type(ActorID, [EquipType])
#_/ Allows you to manually specify an actor's equipment slots. a
#_/ Ex. set_actor_equip_type(2, [0, 2, 3, 3, 3])
#_/ If "nil"(without quotations) is appointed to EquipType, the default
#_/ EQUIP_TYPE (see below) is used. Trust me, it's useful!
#_/
#_/ * change_actor_equipment(ActorID, equipslot_index, ItemID)
#_/ Allows you to change the equipment of a specified actor.
#_/ equipslot_index works by finding the equipment slot number, which is
#_/ different from EQUIP_TYPE. Setting ItemID to 0 will remove the item.
#_/ With the default setup, we see:
#_/ 0=Weapon 1=Shield 2=Headgear 3=Armor 4=Accessory 5=Legs 6=Arms
#_/
#_/ So, for an example:
#_/ change_actor_equipment(1, 3, 15)
#_/ Would change Ralph's(Actor01 in the database) armor to Chainmail(By default)
#_/
#_/
#_/============================================================================
#_/ Installation: This script must be inserted below KCG_ExtendedEquipScene
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#=============================================================================#
# ? Customization ? #
#=============================================================================#
module KGC
module EquipExtension
# ? Extended Equipment Classification Names ?
# You may designate the names of additional equipment slots here.
# Each time you designate a new equipment slot, it is assigned a number.
# The first four equipment types (Shield, Helmet, Armor, and Accessory) are
# given as 1, 2, 3, 4, respectively. Then the values below are assigned in
# order. By default "Legs" and "Arms" would be 4 and 5. It is possible
# to add additional slots.
# Example: EXTRA_EQUIP_KIND = ["Legs", "Arms", "Skill Book"]
EXTRA_EQUIP_KIND = ["Legs", "Arms"]
# ? Equipment Placement ?
# This allows you to arrange the equip slots as you see fit on the equipment
# menu. Note the order listed below.
# ** Equipment Classification Summary **
# 0.Shield 1.Headgear 2.Armor 3.Accessory 4. "Legs" 5."Arms"
# Note that these can be changed as desired. By default, we've enabled two
# accessory slots at the end, instead of one. If you plan on adding extra
# equip slots, the category's cooresponding number must be inserted in the
# brackets [] below.
EQUIP_TYPE = [0, 1, 2, 5, 4, 3, 3]
# ? EP (Equip Point) System ?
# These settings are for the Equipment Point Limit System.
# This toggle allows you to use the EP system if set to true.
# If set to false, the EP system will be disabled.
USE_EP_SYSTEM = true
# VOCAB_EP appears once a character gains EP from battle. (Not Tested)
VOCAB_EP = "EP"
# VOCAB_EP_A appears above the EP gauge.
VOCAB_EP_A = "EP"
# This toggle allows you to display the EP gauge in the actor status window.
SHOW_STATUS_EP = true
# ? Default EP Cost ?
# Allows you to change the default amount an item costs to equip in EP.
# (When not otherwise specified.)
DEFAULT_EP_COST = 1
# This toggle allows you to hide the EP cost of an item if its cost is 0.
# true = hide
# false = show
HIDE_ZERO_EP_COST = true
# ? EP Values & Level Gain ?
# Maximum EP that can be spent equipping items.
EP_MAX = 20
# Characters begin with this amount of EP.
EP_MIN = 5
# ? EP Level Gain
# This is the formula for the amount of EP gained upon leveling up.
# The result of this formula is automatically converted to an integer.
EP_CALC_EXP = "level * 0.3 + 4"
# ? Individual Actor EP Level Gain
PERSONAL_EP_CALC_EXP = [] # <- Do not alter or remove!
# Below here, you may specify formulas for individual actors that dictates
# the amount of EP they recieve upon leveling up. Like EP_CALC_EXP, the
# result is converted to an integer.
# Format: PERSONAL_EP_CALC_EXP[ActorID] = "Formula"
# The format is just like EP_CALC_EXP, except each actor is defined after
# PERSONAL_EP_CALC_EXP in brackets [].
# Any actor not specified uses the EP_CALC_EXP formula.
# Example:
# PERSONAL_EP_CALC_EXP[1] = "level * 0.5 + 5"
# ? Insert Personal EP Calculations Below Here ?
PERSONAL_EP_CALC_EXP[1] = "level * 0.5 + 5"
# ? Insert Personal EP Calculations Above Here ?
# ? EP Gauge Colorization ?
# Allows you to change the color of the EP gauges.
# The color can also be determined by a red, green, and blue values.
# Example: GAUGE_NORMAL_START_COLOR = Color.new(255, 0, 0) <- This is red.
# This method of color assignment is much like Tint Screen event command.
#
# This affects the color of number that represents EP cost.
EP_COST_COLOR = 23
# This is the fill color for the early phase of the guage.
EP_GAUGE_START_COLOR = 28
# This is the fill color for the late phase of the guage. (When full)
EP_GAUGE_END_COLOR = 29
end
end
#=============================================================================#
# ? End Customization ? #
#=============================================================================#
#=================================================#
# IMPORT #
#=================================================#
$imported = {} if $imported == nil
$imported["EquipExtension"] = true
#=================================================#
module KGC::EquipExtension
# Unless the EP system is used...
unless USE_EP_SYSTEM
SHOW_STATUS_EP = false
HIDE_ZERO_EP_COST = true
end
#==============================================================================
# ? KGC::EquipExtension::Regexp
#==============================================================================
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
# Note Field Tag Strings #
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
# Whatever word(s) are after the separator ( | ) in the following lines are
# what are used to determine what is searched for in the "Note" section of
# an item or armor.
# Regular expressions defined
module Regexp
# Base Item Module
module BaseItem
# EP Tag String
EP_COST = /<EP\s*(\d+)>/i
# Item Type Tag String
# Special note: I cannot get this tag to work right. If anyone knows how
# this works or if it's bugged, please let me know.
EQUIP_TYPE = /<(?:EQUIP_TYPE|equiptype)\s*(\d+(?:\s*,\s*\d+)*)>/
end
# Base Armor Module
module Armor
# Armor Type Tag String
EQUIP_KIND = /<(?:EQUIP_KIND|equipkind)\s*(.+)>/i
end
end
end
#=================================================#
#==============================================================================
# ? KGC::Commands
#==============================================================================
module KGC
module Commands
module_function
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
def restore_equip
(1...$data_actors.size).each { |i|
actor = $game_actors[i]
actor.restore_equip
}
end
#--------------------------------------------------------------------------
# ? ?????????????
# actor_id : ???? ID
# equip_type : ?????
#--------------------------------------------------------------------------
def set_actor_equip_type(actor_id, equip_type = nil)
actor = $game_actors[actor_id]
return if actor == nil
actor.equip_type = equip_type
end
#--------------------------------------------------------------------------
# ? ??????????
# actor_id : ???? ID
# index : ???? (0~)
# item_id : ?? or ?? ID (0 ???)
#--------------------------------------------------------------------------
def change_actor_equipment(actor_id, index, item_id)
actor = $game_actors[actor_id]
return if actor == nil
actor.change_equip_by_id(index, item_id)
end
end
end
class Game_Interpreter
include KGC::Commands
end
#=================================================#
#==============================================================================
# ¦ Vocab
#==============================================================================
module Vocab
# EP
def self.ep
return KGC::EquipExtension::VOCAB_EP
end
# EP (?)
def self.ep_a
return KGC::EquipExtension::VOCAB_EP_A
end
# ?????
def self.extra_armor(index)
return KGC::EquipExtension::EXTRA_EQUIP_KIND[index]
end
end
#=================================================#
#==============================================================================
# ¦ RPG::BaseItem
#==============================================================================
class RPG::BaseItem
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def create_equip_extension_cache
@__ep_cost = KGC::EquipExtension::DEFAULT_EP_COST
@__equip_type = []
self.note.split(/[\r\n]+/).each { |line|
case line
when KGC::EquipExtension::Regexp::BaseItem::EP_COST
# ?? EP
@__ep_cost = $1.to_i
when KGC::EquipExtension::Regexp::BaseItem::EQUIP_TYPE
# ?????
@__equip_type = []
$1.scan(/\d+/) { |num|
@__equip_type << num.to_i
}
end
}
# EP ???????????? EP = 0
@__ep_cost = 0 unless KGC::EquipExtension::USE_EP_SYSTEM
end
#--------------------------------------------------------------------------
# ? ?? EP
#--------------------------------------------------------------------------
def ep_cost
create_equip_extension_cache if @__ep_cost == nil
return @__ep_cost
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def equip_type
create_equip_extension_cache if @__equip_type == nil
return @__equip_type
end
end
#=================================================#
#==============================================================================
# ¦ RPG::Armor
#==============================================================================
class RPG::Armor < RPG::BaseItem
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def create_equip_extension_cache
super
@__kind = -1
self.note.split(/[\r\n]+/).each { |line|
if line =~ KGC::EquipExtension::Regexp::Armor::EQUIP_KIND
# ????
e_index = KGC::EquipExtension::EXTRA_EQUIP_KIND.index($1)
next if e_index == nil
@__kind = e_index + 4
end
}
end
unless $@
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
alias kind_KGC_EquipExtension kind
def kind
create_equip_extension_cache if @__kind == nil
return (@__kind == -1 ? kind_KGC_EquipExtension : @__kind)
end
end
end
#=================================================#
#==============================================================================
# ¦ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_writer :equip_type # ?????
#--------------------------------------------------------------------------
# ? ??????
# actor_id : ???? ID
#--------------------------------------------------------------------------
alias setup_KGC_EquipExtension setup
def setup(actor_id)
actor = $data_actors[actor_id]
@extra_armor_id = []
setup_KGC_EquipExtension(actor_id)
restore_equip
end
#--------------------------------------------------------------------------
# ? MaxEP ??
#--------------------------------------------------------------------------
def maxep
calc_exp = KGC::EquipExtension::PERSONAL_EP_CALC_EXP[self.id]
if calc_exp == nil
calc_exp = KGC::EquipExtension::EP_CALC_EXP
end
n = Integer(eval(calc_exp))
return [[n, ep_limit].min, KGC::EquipExtension::EP_MIN].max
end
#--------------------------------------------------------------------------
# ? EP ??
#--------------------------------------------------------------------------
def ep
n = 0
equips.compact.each { |item| n += item.ep_cost }
return [maxep - n, 0].max
end
#--------------------------------------------------------------------------
# ? EP ????
#--------------------------------------------------------------------------
def ep_limit
return KGC::EquipExtension::EP_MAX
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def equip_type
if @equip_type.is_a?(Array)
return @equip_type
else
return KGC::EquipExtension::EQUIP_TYPE
end
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def armor_number
return equip_type.size
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def extra_armor_number
return [armor_number - 4, 0].max
end
#--------------------------------------------------------------------------
# ? ?? ID ??????
#--------------------------------------------------------------------------
def extra_armor_id
@extra_armor_id = [] if @extra_armor_id == nil
return @extra_armor_id
end
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
alias armors_KGC_EquipExtension armors
def armors
result = armors_KGC_EquipExtension
# 5??????????
extra_armor_number.times { |i|
armor_id = extra_armor_id[i]
result << (armor_id == nil ? nil : $data_armors[armor_id])
}
return result
end
#--------------------------------------------------------------------------
# ? ????? (?????????)
# equip_type : ????
# item : ?? or ?? (nil ??????)
# test : ?????? (???????????????????)
#--------------------------------------------------------------------------
alias change_equip_KGC_EquipExtension change_equip
def change_equip(equip_type, item, test = false)
change_equip_KGC_EquipExtension(equip_type, item, test)
# ????????????
if extra_armor_number > 0
item_id = item == nil ? 0 : item.id
case equip_type
when 5..armor_number # ?????
@extra_armor_id = [] if @extra_armor_id == nil
@extra_armor_id[equip_type - 5] = item_id
end
end
restore_battle_skill if $imported["SkillCPSystem"]
restore_passive_rev if $imported["PassiveSkill"]
end
#--------------------------------------------------------------------------
# ? ?????
# item : ?????? or ??
# ??/???????????????????????
#--------------------------------------------------------------------------
alias discard_equip_KGC_EquipExtension discard_equip
def discard_equip(item)
last_armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
discard_equip_KGC_EquipExtension(item)
curr_armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
return unless item.is_a?(RPG::Armor) # ?????
return if last_armors != curr_armors # ???????
# ????????
extra_armor_number.times { |i|
if extra_armor_id[i] == item.id
@extra_armor_id[i] = 0
break
end
}
restore_battle_skill if $imported["SkillCPSystem"]
restore_passive_rev if $imported["PassiveSkill"]
end
#--------------------------------------------------------------------------
# ? ?? ID ???
# class_id : ????? ID
#--------------------------------------------------------------------------
alias class_id_equal_KGC_EquipExtension class_id=
def class_id=(class_id)
class_id_equal_KGC_EquipExtension(class_id)
return if extra_armor_number == 0 # ????????
# ?????????????
for i in 5..armor_number
change_equip(i, nil) unless equippable?(equips[i])
end
end
#--------------------------------------------------------------------------
# ? EP ???????
# equip_type : ????
# item : ?? or ??
#--------------------------------------------------------------------------
def ep_condition_clear?(equip_type, item)
return true if item == nil # nil ?????? OK
curr_item = equips[equip_type]
offset = (curr_item != nil ? curr_item.ep_cost : 0)
return false if self.ep < (item.ep_cost - offset) # EP ??
return true
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def restore_equip
return if @__last_equip_type == equip_type
# ??????·????????
last_equips = equips
last_hp = self.hp
last_mp = self.mp
if $imported["SkillCPSystem"]
last_battle_skill_ids = battle_skill_ids.clone
end
# ?????
last_equips.each_index { |i| change_equip(i, nil) }
# ???·????????
last_equips.compact.each { |item| equip_legal_slot(item) }
self.hp = last_hp
self.mp = last_mp
if $imported["SkillCPSystem"]
last_battle_skill_ids.each_with_index { |s, i| set_battle_skill(i, s) }
end
@__last_equip_type = equip_type.clone
Graphics.frame_reset
end
#--------------------------------------------------------------------------
# ? ?????????????
# item : ?? or ??
#--------------------------------------------------------------------------
def equip_legal_slot(item)
if item.is_a?(RPG::Weapon)
if @weapon_id == 0
# ?? 1
change_equip(0, item)
elsif two_swords_style && @armor1_id == 0
# ?? 2 (??????)
change_equip(1, item)
end
elsif item.is_a?(RPG::Armor)
if !two_swords_style && item.kind == equip_type[0] && @armor1_id == 0
# ????? (????????)
change_equip(1, item)
else
# ??????????
list = [-1, @armor2_id, @armor3_id, @armor4_id]
list += extra_armor_id
# ?????????????????
equip_type.each_with_index { |kind, i|
if kind == item.kind && list[i] == 0
change_equip(i + 1, item)
break
end
}
end
end
end
end
#=================================================#
#==============================================================================
# ¦ Window_Base
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# ? EP ???????
# actor : ????
#--------------------------------------------------------------------------
def ep_color(actor)
return knockout_color if actor.maxep > 0 && actor.ep == 0
return normal_color
end
#--------------------------------------------------------------------------
# ? EP ????? 1 ???
#--------------------------------------------------------------------------
def ep_gauge_color1
color = KGC::EquipExtension::EP_GAUGE_START_COLOR
return (color.is_a?(Integer) ? text_color(color) : color)
end
#--------------------------------------------------------------------------
# ? EP ????? 2 ???
#--------------------------------------------------------------------------
def ep_gauge_color2
color = KGC::EquipExtension::EP_GAUGE_END_COLOR
return (color.is_a?(Integer) ? text_color(color) : color)
end
#--------------------------------------------------------------------------
# ? EP ???
# actor : ????
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_ep(actor, x, y, width = 120)
draw_actor_ep_gauge(actor, x, y, width)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, WLH, Vocab::ep_a)
self.contents.font.color = ep_color(actor)
xr = x + width
if width < 120
self.contents.draw_text(xr - 40, y, 40, WLH, actor.ep, 2)
else
self.contents.draw_text(xr - 90, y, 40, WLH, actor.ep, 2)
self.contents.font.color = normal_color
self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxep, 2)
end
self.contents.font.color = normal_color
end
#--------------------------------------------------------------------------
# ? EP ??????
# actor : ????
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_ep_gauge(actor, x, y, width = 120)
gw = width * actor.ep / [actor.maxep, 1].max
gc1 = ep_gauge_color1
gc2 = ep_gauge_color2
self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
end
#--------------------------------------------------------------------------
# ? ?? EP ???
# item : ?? or ??
# rect : ??????
# enabled : ????
#--------------------------------------------------------------------------
def draw_equipment_ep_cost(item, rect, enabled = true)
return if item == nil
# ?? EP 0 ????????
return if KGC::EquipExtension::HIDE_ZERO_EP_COST && item.ep_cost == 0
color = KGC::EquipExtension::EP_COST_COLOR
self.contents.font.color = (color.is_a?(Integer) ?
text_color(color) : color)
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(rect, item.ep_cost, 2)
end
end
#=================================================#
#==============================================================================
# ¦ Window_Equip
#==============================================================================
class Window_Equip < Window_Selectable
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@data = @actor.equips.clone
@item_max = [@data.size, @actor.armor_number + 1].min
create_contents
# ???????
self.contents.font.color = system_color
if @actor.two_swords_style
self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)
self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
else
self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
name = armor_slot_name(@actor.equip_type[0])
self.contents.draw_text(4, WLH * 1, 92, WLH, name)
end
for i in 1...@actor.armor_number
name = armor_slot_name(@actor.equip_type[i])
self.contents.draw_text(4, WLH * (i + 1), 92, WLH, name)
end
# ??????
rect = Rect.new(92, 0, self.width - 128, WLH)
@item_max.times { |i|
rect.y = WLH * i
draw_item_name(@data[i], rect.x, rect.y)
draw_equipment_ep_cost(@data[i], rect)
}
end
#--------------------------------------------------------------------------
# ? ?????????
# kind : ??
#--------------------------------------------------------------------------
def armor_slot_name(kind)
case kind
when 0..3
return eval("Vocab.armor#{kind + 1}")
else
return Vocab.extra_armor(kind - 4)
end
end
unless $imported["ExtendedEquipScene"]
#--------------------------------------------------------------------------
# ? ????? 1 ????????
#--------------------------------------------------------------------------
def cursor_pagedown
return if Input.repeat?(Input::R)
super
end
#--------------------------------------------------------------------------
# ? ????? 1 ???????
#--------------------------------------------------------------------------
def cursor_pageup
return if Input.repeat?(Input::L)
super
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
super
return unless self.active
if Input.repeat?(Input::RIGHT)
cursor_pagedown
elsif Input.repeat?(Input::LEFT)
cursor_pageup
end
end
end
end
#=================================================#
#==============================================================================
# ¦ Window_EquipItem
#==============================================================================
class Window_EquipItem < Window_Item
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
@item_enabled = []
super
@data.each { |item| @item_enabled << enable?(item) }
end
#--------------------------------------------------------------------------
# ? ????????????????
# item : ????
#--------------------------------------------------------------------------
def include?(item)
return true if item == nil
if @equip_type == 0
return false unless item.is_a?(RPG::Weapon)
else
return false unless item.is_a?(RPG::Armor)
return false unless item.kind == @equip_type - 1
end
return @actor.equippable?(item)
end
#--------------------------------------------------------------------------
# ? ??????????????????
# item : ????
#--------------------------------------------------------------------------
def enable?(item)
return false unless @actor.equippable?(item) # ????
return false unless @actor.ep_condition_clear?(@equip_type, item) # EP ??
return true
end
#--------------------------------------------------------------------------
# ? ?????
# index : ????
#--------------------------------------------------------------------------
def draw_item(index)
super(index)
rect = item_rect(index)
item = @data[index]
# ??????????
cw = self.contents.text_size(sprintf(":%2d", 0)).width
rect.width -= cw + 4
draw_equipment_ep_cost(item, rect, enable?(item))
end
#--------------------------------------------------------------------------
# ? ????????
# equip_type : ????
#--------------------------------------------------------------------------
def simple_refresh(equip_type)
# ???????????
last_equip_type = @equip_type
@equip_type = equip_type
@data.each_with_index { |item, i|
# ????????????????
if enable?(item) != @item_enabled[i]
draw_item(i)
@item_enabled[i] = enable?(item)
end
}
# ???????
@equip_type = last_equip_type
end
end
#=================================================#
#==============================================================================
# ¦ Window_EquipStatus
#==============================================================================
class Window_EquipStatus < Window_Base
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
alias refresh_KGC_EquipExtension refresh
def refresh
refresh_KGC_EquipExtension
draw_actor_ep(@actor, 120, 0, 56) if KGC::EquipExtension::USE_EP_SYSTEM
end
end
#=================================================#
#==============================================================================
# ¦ Window_Status
#==============================================================================
class Window_Status < Window_Base
if KGC::EquipExtension::SHOW_STATUS_EP
#--------------------------------------------------------------------------
# ? ???????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
alias draw_basic_info_KGC_EquipExtension draw_basic_info
def draw_basic_info(x, y)
draw_basic_info_KGC_EquipExtension(x, y)
draw_actor_ep(@actor, x + 160, y + WLH * 4)
end
end
#--------------------------------------------------------------------------
# ? ??????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
def draw_equipments(x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, WLH, Vocab::equip)
item_number = [@actor.equips.size, @actor.armor_number + 1].min
item_number.times { |i|
draw_item_name(@actor.equips[i], x + 16, y + WLH * (i + 1))
}
end
end
#=================================================#
#==============================================================================
# ¦ Window_ShopStatus
#==============================================================================
class Window_ShopStatus < Window_Base
#--------------------------------------------------------------------------
# ? ?????????????????
# actor : ????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
def draw_actor_parameter_change(actor, x, y)
return if @item.is_a?(RPG::Item)
enabled = actor.equippable?(@item)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x, y, 200, WLH, actor.name)
if @item.is_a?(RPG::Weapon)
item1 = weaker_weapon(actor)
elsif actor.two_swords_style and @item.kind == 0
item1 = nil
else
index = actor.equip_type.index(@item.kind)
item1 = (index != nil ? actor.equips[1 + index] : nil)
end
if enabled
if @item.is_a?(RPG::Weapon)
atk1 = item1 == nil ? 0 : item1.atk
atk2 = @item == nil ? 0 : @item.atk
change = atk2 - atk1
else
def1 = item1 == nil ? 0 : item1.def
def2 = @item == nil ? 0 : @item.def
change = def2 - def1
end
self.contents.draw_text(x, y, 200, WLH, sprintf("%+d", change), 2)
end
draw_item_name(item1, x, y + WLH, enabled)
end
end
#=================================================#
#==============================================================================
# ¦ Scene_Equip
#==============================================================================
class Scene_Equip < Scene_Base
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
EQUIP_TYPE_MAX = KGC::EquipExtension::EXTRA_EQUIP_KIND.size + 5
#--------------------------------------------------------------------------
# ? ?????????
# actor_index : ??????????
# equip_index : ????????
#--------------------------------------------------------------------------
alias initialize_KGC_EquipExtension initialize
def initialize(actor_index = 0, equip_index = 0)
initialize_KGC_EquipExtension(actor_index, equip_index)
unit = ($imported["LargeParty"] ?
$game_party.all_members : $game_party.members)
actor = unit[actor_index]
@equip_index = [@equip_index, actor.armor_number].min
end
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
alias create_item_windows_KGC_EquipExtension create_item_windows
def create_item_windows
create_item_windows_KGC_EquipExtension
kind = equip_kind(@equip_index)
EQUIP_TYPE_MAX.times { |i|
@item_windows[i].visible = (kind == i)
}
end
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
def update_item_windows
kind = equip_kind(@equip_window.index)
for i in 0...EQUIP_TYPE_MAX
@item_windows[i].visible = (kind == i)
@item_windows[i].update
end
@item_window = @item_windows[kind]
@item_window.simple_refresh(@equip_window.index)
end
#--------------------------------------------------------------------------
# ? ?????????
# index : ?????????
#--------------------------------------------------------------------------
def equip_kind(index)
if index == 0
return 0
else
return @actor.equip_type[index - 1] + 1
end
end
unless $imported["ExtendedEquipScene"]
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def update_status_window
if @equip_window.active
@status_window.set_new_parameters(nil, nil, nil, nil)
elsif @item_window.active
temp_actor = Marshal.load(Marshal.dump(@actor))
temp_actor.change_equip(@equip_window.index, @item_window.item, true)
new_atk = temp_actor.atk
new_def = temp_actor.def
new_spi = temp_actor.spi
new_agi = temp_actor.agi
@status_window.set_new_parameters(new_atk, new_def, new_spi, new_agi)
end
@status_window.update
end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias update_item_selection_KGC_EquipExtension update_item_selection
def update_item_selection
if Input.trigger?(Input::C)
# ????????
index = @equip_window.index
item = @item_window.item
unless item == nil ||
(@actor.equippable?(item) && @actor.ep_condition_clear?(index, item))
Sound.play_buzzer
return
end
end
update_item_selection_KGC_EquipExtension
end
end
#=================================================#
#==============================================================================
# ¦ Scene_File
#==============================================================================
class Scene_File < Scene_Base
#--------------------------------------------------------------------------
# ? ???????????
# file : ??????????????? (??????)
#--------------------------------------------------------------------------
alias read_save_data_KGC_EquipExtension read_save_data
def read_save_data(file)
read_save_data_KGC_EquipExtension(file)
KGC::Commands.restore_equip
Graphics.frame_reset
end
end
MfG
Deity
-
Kann mir jemand nen skript geben der macht das eine uhr im spiel ist?
-
also für eine Interne SPielzeit Uhr haben
wir das das Simple Day and Night Script
von hellMinor
http://rpgvx.de/forum.php?topic=271.0
für eine Externe Uhr mit Lokalzeit wüsst ich jetzt nichts,
aber das gehört eher in die Script Request als hier.
Dieser Thread ist wohl eher wenn man Probleme mit Scripten hat
und nicht sucht.
-
@gilbse
Ich muss dich jetzt mal ganz direkt fragen was du eigentlich willst.
Im allgemeinen Schnelle-Hilfe-Threat hast du bereits nach einer Uhr gefragt wenn ich mich nicht irre,
und man hat dir ein Top-Skript zur verfügung gestellt.
Du hast nach einer erklärung gefragt, du hast sie bekommen.
Die wurde alles auf dem Presentierteller gereicht.
Also warum stellst du die selbe anfrage noch einmal in einem anderen Threat?!
Sk!p
-
brauche hilfe bei der 6ten zeile ich finmd da nix was nicht passt xD aber der bring mir immer nen PIMm ^^ wenn ich das spiel staten will [ Script ´Input` 238: No MethodERROR occurred.undefined method ´[]` for nil:NilClass]
ich raff das echt nicht xDDDDD
REG_KVALUES = {0=>32,1=>13,2=>27,3=>96,4=>16,5=>90,6=>88,7=>67,8=>86,9=>66,
10=>65,11=>83,12=>68,13=>81,14=>87}
def convert_keys(key)
keys = []
reg_key = 'HKEY_CURRENT_USER\\Software\\Enterbrain\\RGSS'
data = Registry.read_entry(reg_key, 'ButtonAssign')[10].scan(/./)
15.times {|i| keys.push(REG_KVALUES) if key == data.unpack('C')[0]}
keys
end
module_function :convert_keys
-
soweit ich das verstehe,
versteht das Script folgende Zeile nicht
keys = []
ist auch logisch, da anscheinen nichts angegeben ist, versucht er vergeblich etwas
zu lesen das nicht existiert, in [] kommen meißten zahlen oder befehle wie auch namen
aber da nix drinne steht versucht er das[] selber zu analysieren, es macht halt für den Script keinen Sinn
da ich aber nicht weiß was das ganze bezwecken soll
kann ich jetzt nichts anderes sagen als es sinnvoll zu füllen
aber ich glaube, es ist besser wenn du das ganz Script einmal zeigst.
Damit auch ein paar Akzeptable Hilfen angeboten werden können
-
ok hier ist das ganze script
#=============================================================================
# *** AWorks Input Module(AIM)
#=============================================================================
# Created by AWorks
# Version: 3.00 BETA
# Last Modification: 30/11/2008 (day/month/year)
#=============================================================================
#==== Special Thanks ====
# * Poccil(Peter O.)
# - For his researchs on modifing ruby objects with C
# * ERZENGEL
# - For his help in editing ruby strings with C
#=============================================================================
#==== Description ====
# This script simulates the RGSS module "Input". It is not the original module,
# but it has all the original module functions and some new.
#=============================================================================
#==== Requeriments ====
# * AWorks DLL BETA
#=============================================================================
#==== Version History ====
# * Version 1.00
# - New methods: Input.reiterate?; Input.activated?; Input.press_all;
# Input.trigger_all; Input.repeat_all; Input.reiterate_all
# - New Keys: LOWER_LEFT; LOWER_RIGHT; UPPER_LEFT; UPPER_RIGHT
# * Version 1.10
# - New methods: Input.event; Input.free_key; Input.free_all_keys
# * Version 1.11
# - Changed the variables: @repeat_time, @reiterate_time, @reiterate and
# @update_keys to constants variables for easy editing.
# * Version 1.12(Now in Aleworks Input Module Compability Patch 1)
# - Compability with the event commands: Asing Key and Condition Branch
# * Version 1.20
# - Little lag reduction
# - New methods: Input.release?; Input.release_all
# * Version 1.21
# - Major bug fixed, when using arrays in Input.press?, Input.trigger?,
# Input.reiterate? and Input.release?
# - Removed UPDATE_KEYS and REITERATE
# * Version 2.00
# - Little lag reduction
# - Rewrited some code
# - No more need of Win32::Registry, but need Aleworks Library
# - Key Combos
# - New Class: Input::Key_Combo
# - New Methods: Input.add_combo; Input.combo; Input.combos; Input.combos;
# Input.delete_combo; Input.delete_ended_combos
# - Mouse Input
# - New Methods: Input.mouse_double_click?; Input.mouse_x?; Input.mouse_y?;
# Input.mouse_dragging?; Input.mouse_drag_rect?; Input.mouse_drag_coor?
# - New Constants: MOUSE_INPUT; MOUSE_DOUBLE_CLICK_TIME;
# MOUSE_DOUBLE_CLICK_PIX; MOUSE_DRAG_PIX; MOUSE_PRIMARY; MOUSE_SECONDARY
# * Version 2.01
# - Input.mouse_x? and Input.mouse_y? will now return nil if the mouse pointer
# is out of the game screen.
# * Version 2.02
# - Fixed error in Input.press?
# * Version 2.03
# - Fixed error of the Array Input feature
# - Updated Input.dir4 and Input.dir8
# - New Constants: REAL_DIRS
# * Version 2.04
# - Fixed error direction input error.
# * Version 3.00 BETA
# - Complete rewrite of the script, now it uses AWorks.dll for input updating
#=============================================================================
#=============================================================================
# ** Module Input
#=============================================================================
module Input
@keys = []
@pressed = []
Mouse_Left = 1
MOUSE_PRIMARY = 1
Mouse_Right = 2
MOUSE_SECONDARY = 2
Mouse_Middle = 4
Back= 8
Tab = 9
Enter = 13
Shift = 16
Ctrl = 17
Alt = 18
Esc = 0x1B
LEFT=0x25
UP=0x26
RIGHT=0X27
DOWN=0x28
LT = 0x25
UPs = 0x26
RT = 0x27
DN = 0x28
Space = 32
Numberkeys = {}
Numberkeys[0] = 48 # => 0
Numberkeys[1] = 49 # => 1
Numberkeys[2] = 50 # => 2
Numberkeys[3] = 51 # => 3
Numberkeys[4] = 52 # => 4
Numberkeys[5] = 53 # => 5
Numberkeys[6] = 54 # => 6
Numberkeys[7] = 55 # => 7
Numberkeys[8] = 56 # => 8
Numberkeys[9] = 57 # => 9
Numberpad = {}
Numberpad[0] = 45
Numberpad[1] = 35
Numberpad[2] = 40
Numberpad[3] = 34
Numberpad[4] = 37
Numberpad[5] = 12
Numberpad[6] = 39
Numberpad[7] = 36
Numberpad[8] = 38
Numberpad[9] = 33
Letters = {}
Letters["A"] = 65
Letters["B"] = 66
Letters["C"] = 67
Letters["D"] = 68
Letters["E"] = 69
Letters["F"] = 70
Letters["G"] = 71
Letters["H"] = 72
Letters["I"] = 73
Letters["J"] = 74
Letters["K"] = 75
Letters["L"] = 76
Letters["M"] = 77
Letters["N"] = 78
Letters["O"] = 79
Letters["P"] = 80
Letters["Q"] = 81
Letters["R"] = 82
Letters["S"] = 83
Letters["T"] = 84
Letters["U"] = 85
Letters["V"] = 86
Letters["W"] = 87
Letters["X"] = 88
Letters["Y"] = 89
Letters["Z"] = 90
Fkeys = {}
Fkeys[1] = 112
Fkeys[2] = 113
Fkeys[3] = 114
Fkeys[4] = 115
Fkeys[5] = 116
Fkeys[6] = 117
Fkeys[7] = 118
Fkeys[8] = 119
Fkeys[9] = 120
Fkeys[10] = 121
Fkeys[11] = 122
Fkeys[12] = 123
Collon = 186 # => \ |
Equal = 187 # => = +
Comma = 188 # => , <
Underscore = 189 # => - _
Dot = 190 # => . >
Backslash = 191 # => / ?
Lb = 219
Rb = 221
Quote = 222 # => '"
#===========================================================================
# ** Module Registry
#===========================================================================
module Registry
module_function
RegCloseKey = Win32API.new('advapi32', 'RegCloseKey', 'L', 'L')
RegOpenKeyExA = Win32API.new('advapi32', 'RegOpenKeyExA', 'LPLLP', 'L')
RegQueryValueExA = Win32API.new('advapi32', 'RegQueryValueExA','LPLPPP','L')
HKEYS = {'HKEY_CLASSES_ROOT' => 0x80000000,'HKEY_CURRENT_USER' =>0x80000001,
'HKEY_LOCAL_MACHINE' => 0x80000002, 'HKEY_USERS' => 0x80000003,
'HKEY_CURRENT_CONFIG' => 0x80000005}
#-------------------------------------------------------------------------
# * Read an Entry
#-------------------------------------------------------------------------
def read_entry(key, entry)
key.sub!(/(.*?)\\/, '')
if HKEYS[$1] != nil
hkey = HKEYS[$1]
else
return nil
end
opened, type, size = [0].pack('V'), [0].pack('V'), [0].pack('V')
RegOpenKeyExA.call(hkey, key, 0, 131097, opened)
opened = (opened + [0].pack('V')).unpack('V')[0]
RegQueryValueExA.call(opened, entry, 0, type, 0, size)
data = ' ' * (size + [0].pack('V')).unpack('V')[0]
RegQueryValueExA.call(opened, entry, 0, type, data, size)
RegCloseKey.call(opened)
data = data[0, (size + [0].pack('V')).unpack('V')[0]]
type = (type += [0].pack('V')).unpack('V')[0]
case type
when 1
data.chop
when 2
data.chop.gsub(/%([^%]+)%/) { ENV[$1] || $& }
when 3
data
when 4
(data += [0].pack('V')).unpack('V')[0]
when 5
data.unpack('N')[0]
when 7
data.split(/\0/)
when 11
(data.unpack('VV')[1] << 32) | data[0]
else
nil
end
end
end
#---------------------------------------------------------------------------
# * Variables definition
#---------------------------------------------------------------------------
@time = Array.new(256, 0)
@press = Array.new(256, false)
@trigger = Array.new(256, false)
@repeat = Array.new(256, false)
@release = Array.new(256, false)
@dirs = [0, 0]
#---------------------------------------------------------------------------
# * API declaration
#---------------------------------------------------------------------------
InputInitialize = Win32API.new("Input", 'InputInitialize', 'LLLLLL', '')
InputUpdate = Win32API.new("Input", 'InputUpdate', '', '')
#---------------------------------------------------------------------------
# * convert_keys (internal method)
#---------------------------------------------------------------------------
REG_KVALUES = {0=>32,1=>13,2=>27,3=>96,4=>16,5=>90,6=>88,7=>67,8=>86,9=>66,
10=>65,11=>83,12=>68,13=>81,14=>87}
def convert_keys(key)
keys =
reg_key = 'HKEY_CURRENT_USER\\Software\\Enterbrain\\RGSS'
data = Registry.read_entry(reg_key, 'ButtonAssign')[10, 25].scan(/./)
15.times {|i| keys.push(REG_KVALUES[i]) if key == data[i].unpack('C')[0]}
keys
end
module_function :convert_keys
#---------------------------------------------------------------------------
# * Keys Constants definitions
#---------------------------------------------------------------------------
LOWER_LEFT = 97
LOWER_RIGHT = 99
UPPER_LEFT = 103
UPPER_RIGHT = 105
DOWN = [98, 40]
LEFT = [100, 37]
RIGHT = [ 102, 39]
UP = [104, 38]
A = convert_keys(11)
B = [45] + convert_keys(12)
C = convert_keys(13)
X = convert_keys(14)
Y = convert_keys(15)
Z = convert_keys(16)
L = [33] + convert_keys(17)
R = [34] + convert_keys(18)
SHIFT = 16
CTRL = 17
ALT = 18
F5 = 116
F6 = 117
F7 = 118
F8 = 119
F9 = 120
#---------------------------------------------------------------------------
# * Initialize Input DLL
#---------------------------------------------------------------------------
InputInitialize.call(@time.object_id, @press.object_id, @trigger.object_id,
@repeat.object_id, @release.object_id, @dirs.object_id)
#---------------------------------------------------------------------------
# * Keys input state update
#---------------------------------------------------------------------------
def Input.update
InputUpdate.call
end
#---------------------------------------------------------------------------
# * Press?
#---------------------------------------------------------------------------
def Input.press?(vk)
@press.indexes(*vk.to_a).include?(true)
end
#---------------------------------------------------------------------------
# * Pressed
#---------------------------------------------------------------------------
def Input.pressed
array = Array.new
@press.each_index {|i| array.push(i) if @press[i]}
array
end
#---------------------------------------------------------------------------
# * Trigger?
#---------------------------------------------------------------------------
def Input.trigger?(vk)
@trigger.indexes(*vk.to_a).include?(true)
end
#---------------------------------------------------------------------------
# * Triggered
#---------------------------------------------------------------------------
def Input.triggered
array = Array.new
@trigger.each_index {|i| array.push(i) if @trigger[i]}
array
end
def Input.triggerd?(what)
if triggered.include?(what)
return true
end
end
def Input.pressed?(what)
if pressed.include?(what)
return true
end
end
#---------------------------------------------------------------------------
# * Repeat?
#---------------------------------------------------------------------------
def Input.repeat?(vk)
@repeat.indexes(*vk.to_a).include?(true)
end
#---------------------------------------------------------------------------
# * Repeated
#---------------------------------------------------------------------------
def Input.repeated
array = Array.new
@repeat.each_index {|i| array.push(i) if @repeat[i]}
array
end
#---------------------------------------------------------------------------
# * Release?
#---------------------------------------------------------------------------
def Input.release?(vk)
@release.indexes(*vk.to_a).include?(true)
end
#---------------------------------------------------------------------------
# * Released
#---------------------------------------------------------------------------
def Input.released
array = Array.new
@release.each_index {|i| array.push(i) if @release[i]}
array
end
#---------------------------------------------------------------------------
# * 4 Directions
#---------------------------------------------------------------------------
def Input.dir4
@dirs[0]
end
#---------------------------------------------------------------------------
# * 8 Directions
#---------------------------------------------------------------------------
def Input.dir8
@dirs[1]
end
end
-
So wie ich das sehe, und ich habe wenig bzw. keine ahnung von Skripten,
versucht er eine Taste abzufragen und danach eine Taster die man drücken muss
um ein Event auszulösen.
Dar keine Taste definiert ist, fährt er sich fest.
Sk!p
-
Freunde ich brauch mal wieder hilfe XD
Bin auch der suche nach einen script was es mir erlaubt
größere charsets zu benutzen ich meine für den spiel verlauf allso zum laufen und so weiter
was ich genau meine ist das
(http://www11.file-upload.net/thumb/10.03.09/gyxohk.jpg)
ich hoffe ihr könnt mir helfen ^^
MFG N0rtekCriss
-
Schneid dein Charset doch zusammen und pack das "abgeschnitene" in ein neues Charset ??
-
geht eben nicht weil die vorlagen bissel zu gross sind und wenn ich die anpasse mit gimp dan verschwimmen die farben schaut einfach nur scheisse aus
-
-.- gib mal her das Charset ich schneid es zu.
Leute wir sind hier im Skript-Threat.
Was hat das zuschneiden von Grafiken mit Skripten zu tun?
Bleibt bitte beim Thema.
~Sk!p
-
Ich würde gerne in einem Common Event die aktuellen MP eines Actors in eine Variable ablegen.
Leider Funktioniert:
@>Control Variables[0008:] = [Actor]'s MP
nicht
Wie kann ich in diesem Fall die aktuellen MP des Actors an eine Variable weitergeben?
-
Ich glaube der fehler tritt auf, weil Game Interpreter einen fehler hat.
Versuch es mit diesem Script und dann sollte es eigenlich einwandfrei funktionieren.
Game Intepreter (http://rpgvx.de/forum.php?topic=2507.0)
MfG
Deity
-
Viele Dank, jetzt funktioniert es!
-
moin leutz
ich such mal wieder was ^
ich such nen script was maps nach den kammpf auf der karte verschwinden lest
aber nach einerger zeit wieder kommen und man kann wieder gegen den mop kämpfen gibnt es so was am besten noch verbunden mit den RPG Tankentai system oder so in art halt nen rewsporn script für mops
wer es hat bitte posten oder schicken ^^ und wenn es über event geht bitte genaue anleitung genaue anleitung zum script dann auch bitte
Mfg N0rtekCriss
-
ich such nen script was maps nach den kammpf auf der karte verschwinden lest
Ich denke du meinst da nich Maps sondern Mobs^^ (wär auch komisch wenn nach nem Fight die ganze Map weg is xD)
Nun spontan hätte ich jetzt gesagt, per Switch Mob nach dem Battle despawnen lassen und per Common Event nen Parallel Process samt Timer laufen lassen der nach wielange auch immer den Mob switch wieder enabled. Zumindest erscheint mir das jetz logisch aber ich werd das gleich ma antesten^^
Glaub aber nich dass du extra n script dafür brauchst
EDIT: lol vergiss was ich gesagt hab, kann ja nich gehn, hast ja in sofern nur eine Instanz vom timer, d.h. mehr als ein Mob dürfte net auf der Map sein :S also doch n script^^
-
moin leutz
ich such mal wieder was ^
ich such nen script was maps nach den kammpf auf der karte verschwinden lest
aber nach einerger zeit wieder kommen und man kann wieder gegen den mop kämpfen gibnt es so was am besten noch verbunden mit den RPG Tankentai system oder so in art halt nen rewsporn script für mops
wer es hat bitte posten oder schicken ^^ und wenn es über event geht bitte genaue anleitung genaue anleitung zum script dann auch bitte
Mfg N0rtekCriss
@N0rtekCriss
Abgesehen davon, dass wir uns im falschen Thread unterhalten ^^
Wenn du auf kein Script warten willst, hätte ich da eine kleine Lösung.
Du benutzt theoretisch nur 1 Event und es ist ziemmlich simpel, allerdings, musst du das für jeden Gegner "neu" machen. Das "neu" ist in diesem Sinne in Klammern, weil man eigentlich nur die Respawnzeit verändern muss. Also;
Seite 1
1.Aussehen des gegners bestimmen
2.Route so wählen, dass der Gegner z.B. zum Spieler läuft.
3.Trigger auf Event berühren stellen
4.Event Comand: Kampf Starten
Wenn gewonnen, Self Switch A = ON
Seite 2
1.Keine Grafik für das Event
2.Trigger auf Parallelen Prozess umstellen
3.Waitbefehl setzen ( Respawnzeit )
4.Self Switch A = OFF
Hier habe ich nichmal eine kleine Demo.
Demo (http://www.yfw24.de/userdaten/51331798/download/yay/enemyvanish.rar)
MfG
Deity
-
Hm, na gut, dass das mit dem Wait Befehl funzen könnte, hätte ich nich gedacht^^
Aber deine Demo bugt ein wenig, denn wenn man aus dem Kampf flüchtet beginnt auf der Map gleich n neuer Kampf :S
-
Ya das Einfachste ist meistens auch das Beste. Simply the best^^
Zu meiner Verteidigung ^^ das ist kein Bug, es ist weil ich das Monster ein bischen zu schnell eingestellt habe. Und da sich der Self Switch nur bei einem Sieg aktiviert agiert das Monster direkt nach dem Kampf. Setz ihn langsammer und es wird klappen.
P.S. Der Gegner oben Rechts ist etwas schöner beziehungsweise er verschwindet viel schöner.
MfG
Deity
-
@ Deity
danke danke ^^ geht alles
ich danke dir ^^
Mfg N0rtekCriss
-
Könntet ihr mir mit dem Tankenkai Battle Skript helfen??? Ich will Minkoffs Animated Battler verwenden (für Chars und Gegner), hab auch brav alle Skripte rüber getan und verändert, Gegner ID eingegeben und so. Wenn ich dann den Kampf starte kommt schon meine erste Frage:
1)Wie kann ich bestimmen wie die Figuren heißen sollen die ich als Chars verwenden will???
Dann habe ich für probegründe einfach mal den Char Actor1_1 (weils so verlangt war) benannt. Dann gestartet und dann kam das zweite Problem:
2)Wieso muss man 2 mal den gleichen Gegner mit verschiedenen Namen haben??? Ich musste einen mit normalen Namen und einen mit _1 am Ende haben.
Nachdem das dann auch für die besagte Probe gemacht wurde kommt das nächste Problem:
3)Der Char ist falsch positioniert (also man sieht nur die Hälfte vom stehenden und dann ein STück von ner anderen Reihe) außerdem ist der Gegner, obwohl ich ihn soweit es ging nach unten getan habe zu hoch und ich seh ihn nicht.
So, außerdem scheint er nicht die richtigen Reihen zu verwenden wo ich also gleich zu den letzten 2 Problemen komme:
4)Wieso verwendet er die falschen Reihen (wenn er zaubert ist er z.B. in der tot Anzeige, also liegt am Boden)???
5)Kann mir einer erklären welche Reihe was genau macht??? Da ist ein Bild im Anhang. Die mit dem Schwertkämpfer sind die, die ich noch nicht herausgefunden habe.
[gelöscht durch Administrator]
-
Ich benutze Nightlights Isolated von hellMinor und will jetzt noch zusätzlich DeadlyDan Image Title V1.00
Jedoch bekomme ich folgende Fehlermeldung:
(http://img3.imagebanana.com/img/ysrn68mc/hilfe.png)
In zeile 167 im Nightlights Script steht folgendes:" $data_mapinfos[@map_id]"
Danke im vorraus für jegliche Hilfe!
-
@Prince, wenn es mit dem Minkoffs net klappt, such ein anderes KS. Es gibt ein RTAB für den VX, welches für diese Battler gemacht wurde, nimm das doch einfach. Das SKS von Enu ist kopliziert, und nur die wenigsten verstehen es. Wenn du trozdem dabei bleiben wills, frag mal bei RPG Revolution nach, vielleicht kann dir dort jemand weiterhelfen.
mfg. eugene
@Colonios
Wenn du das Nighlight Skript über dem Title Skript hast, setzt es dadrunter, fals du es schon drunter hast setz es dadrüber. Vielleicht klappt es dann.
mfg. eugene
-
Es gibt ein RTAB für den VX, welches für diese Battler gemacht wurde, nimm das doch einfach.
Wo gibt es das???
-
Warte, gleich hast du ein Link.
Wie gesagt. ein bissl google hät geholfen:
http://www.creationasylum.net/index.php?showtopic=21781
-
Danke eugene222 Ich werds gleich mal anschaun und poste dann das Ergebnis als Edit.
MfG
Habs ma angeschaut und ich liebe es xD
-
@Colonios
Wenn du das Nighlight Skript über dem Title Skript hast, setzt es dadrunter, fals du es schon drunter hast setz es dadrüber. Vielleicht klappt es dann.
mfg. eugene
Hat geklappt, hammer!
Danke!!!
-
Hoi Leute!
Nun, ich hoffe meine Anfrage erweist sich nicht als zu kompliziert. Es geht um Tankentai's SideView KS, welcher ja mittlerweile jeder hier kennen dürfte.
-> http://rpgvx.de/forum.php?topic=1626.140 (http://rpgvx.de/forum.php?topic=1626.140)
Das KS benutzt unter anderem ein Script-AddOn namens "Enemy Gauge AddOn" welches, wenn ich mich nicht irre, dazu dient oben am Schirm ein Window mit HP des Gegners anzuzeigen, sowie einen Cursor auf das momentan ausgewählte Monster zu platzieren.
Nun wollte ich wissen, ob man das AddOn fürs Standard KS solo isolieren könnte, da ich das KS an sich ganz brauchbar finde. Meiner Meinung nach fehlen nur ein paar essenzielle Dinge, darunt halt eben auch das Fehlen eines Gegner-HP Fensters (das bei Tankentai find ich optimal) und eines Cursors welchem einem zeigt, welchen Mob man gerade gewählt hat.
Da ich nicht genügend Ahnung von scripten habe um mir das Enemy Gauge AddOn Script passend zu zerlegen, wäre es nett wenn mir da einer weiterhelfen könnte. Würden sicherlich auch noch andere in der Community verwenden können.
Recht nette Grüße,
- Baha
P.S.: Hier noch mal der Script Teil den ich meine:
#==============================================================================
# ¦ module n01
#------------------------------------------------------------------------------
# ???????????????????? Ver1.1
#==============================================================================
module N01
# Display the state of the battler.
WORD_STATE_DISPLAY = true
# Name to display when there is no abnormal state.
WORD_NORMAL_STATE = "Normal"
# Displays the HP gauge.
HP_DISPLAY = true
# Displays the HP gauge for actors.
ACTOR_DISPLAY = true
# Do not display the HP gauge and states for the following enemies. ex.[1,2,3]
ENEMY_NON_DISPLAY = []
# Do not display the following states as abnormal. ex.[1,2,3]
STATE_NON_DISPLAY = []
end
#-------------------------------??????-----------------------------------
#==============================================================================
# ¦ Window_Help
#------------------------------------------------------------------------------
# ?????????????????????????????????????
#==============================================================================
class Window_Help < Window_Base
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def set_text_n01add(member)
self.contents.clear
self.contents.font.color = normal_color
if !member.actor? && N01::ENEMY_NON_DISPLAY.include?(member.enemy_id)
return self.contents.draw_text(4, 0, self.width - 40, WLH, member.name, 1)
elsif member.actor? && !N01::ACTOR_DISPLAY
return self.contents.draw_text(4, 0, self.width - 40, WLH, member.name, 1)
end
if N01::WORD_STATE_DISPLAY && N01::HP_DISPLAY
self.contents.draw_text(0, 0, 180, WLH, member.name, 1)
draw_actor_hp(member, 182, 0, 120)
text = "["
for state in member.states
next if N01::STATE_NON_DISPLAY.include?(state.id)
text += " " if text != "["
text += state.name
end
text += N01::WORD_NORMAL_STATE if text == "["
text += "]"
text = "" if text == "[]"
self.contents.draw_text(315, 0, 195, WLH, text, 0)
elsif N01::WORD_STATE_DISPLAY
text = member.name + " ["
for state in member.states
next if N01::STATE_NON_DISPLAY.include?(state.id)
text += " " if text != member.name + " ["
text += state.name
end
text += N01::WORD_NORMAL_STATE if text == member.name + " ["
text += "]"
text = "" if text == "[]"
self.contents.draw_text(4, 0, self.width - 40, WLH, text, 1)
elsif N01::HP_DISPLAY
self.contents.draw_text(4, 0, 240, WLH, member.name, 1)
draw_actor_hp(member, 262, 0, 120)
end
end
end
#==============================================================================
# ¦ Scene_Battle
#------------------------------------------------------------------------------
# ?????????????????
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
def start_target_selection(actor = false)
members = $game_party.members if actor
members = $game_troop.members unless actor
# ????????????
@cursor = Sprite.new
@cursor.bitmap = Cache.character("cursor")
@cursor.src_rect.set(0, 0, 32, 32)
@cursor_flame = 0
@cursor.x = -200
@cursor.y = -200
@cursor.ox = @cursor.width
@cursor.oy = @cursor.height
# ??????????????????????
@help_window.visible = false if @help_window != nil
@help_window2 = Window_Help.new if @help_window2 == nil
# ???????????
@actor_command_window.active = false
@skill_window.visible = false if @skill_window != nil
@item_window.visible = false if @item_window != nil
# ??????????????????????????????
@index = 0
@max_index = members.size - 1
# ??????????????????????????????
unless actor
members.size.times do
break if members[@index].exist?
@index += 1
end
end
@help_window2.set_text_n01add(members[@index])
select_member(actor)
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def cursor_up(members, actor)
Sound.play_cursor
members.size.times do
@index += members.size - 1
@index %= members.size
break if actor
break if members[@index].exist?
end
@help_window2.set_text_n01add(members[@index])
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def cursor_down(members, actor)
Sound.play_cursor
members.size.times do
@index += 1
@index %= members.size
break if actor
break if members[@index].exist? && !actor
end
@help_window2.set_text_n01add(members[@index])
end
end
-
Hallo Bahamut, ich habe in Erinnerung, dass es solch ein Skript schon gibt. Ich glaube es war von Star oder wie der heißt. Ich werd versuchen, dieses ausfindig zu machen, wenn ich mich täusche, und es solch ein Skript nicht gibt, werd ich versuchen das von Enu für das Standart KS umzuschreiben.
mfg. eugene
-
Holla Eugene!
In Ordnung, dann werde ich auch nochmal danach googeln :D Echt nett von dir! *embrace*
Gruß,
- Baha
-
Hier auf der Seite hab ich das mal gesehn. Ist leider Japanisch.
http://strrgssvx.blog.shinobi.jp
-
Das sollte an sich kein problem sein ;D Werde ich mir gleich ansehen, vielen Dank für die Hilfestellung!
Recht netten Gruß,
- Baha
EDIT:
Irgendwie geht mir das Standard-KS trotz der Verbesserungen mit der Zeit gehörig aufn Senkel^^ Glaub' ich werd evtl. doch die ganze Version von Tankentai nehmen, so schlecht isses ja nich ;D
-
Hi @ all,
meine Frage : Was ist ein Call Skript und was kann ich damit alles tun?
ich würde nämlich gerne den 2 player skript nutzen aber weiss nicht wie ich ein call skript erstelle...
PS. nutze den deutsch patch
lg - philotheking
-
@philotheking :
Hey Hey
sry für die dämliche Frage aber...du kannst doch englisch oder?:D
call script = rufe Script
Schlussfolgerung, du rufst damit ein Script auf,
normaler Weise steht in dem eingebauten Script irgendwo,
was du bei einem Event in "call script" ("Script ausführen" beim deutsch patch) hineinschreiben musst, damit es aufgerufen wird.
Nu musst du beim Event nur noch die Bedingungen einstellen,
wann das Script gerufen werden soll und *tada* es funzt. (im Besten Fall)
Ich hoffe ich konnte dir helfen
(ansonsten erklär ichs nochmal "langsam" ^^*)
mfG. Papilion
-
Was er sagen wollte:
In deiner Eventliste ist ein Befehl: Script/Skript.
Wenn du das anklickst, dann erscheint eine Box in der du alles mögliche eingeben kannst.
Da schreibst du das Callscript rein. Das sind meist befehle die IN dem Skript selbst stehen (In grün, einfach durchlesen)
Meist steht da etwas wie:
Call the Alchemy Pot with:
# $scene = Scene_AlchemyPot.new
In diesem Fall müsstest du in dieser Box: $scene = Scene_AlchemyPot.new eintippen.
Wenn dann das Event aktiviert wird, wird der Skript ausgeführt.
Les dir einfach mal durch was in Grün (meist ganz oben) im Skript steht.
lg
DaRv
-
hey leute.
also kennst jemand vllt ein savesystem script wie bei breath of fire 3.?
also für di dies nicht kennen.
man kann nur auf einer worldmap speciher in keinem dungeon oder dorf/stadt.
und man kann auf der world map auf soetwas wie rasten drücken also man kann dann zelten un speicher.
so etwas in der art suche ich.
-
@Tobii09
Für diese funktionen braucht man kein Script. Dafür genügen die Event befehle probier es aus und wenn du nicht weiter kommst kann ich dir gerne helfen.
MfG
Deity
-
hey leute.
kann mir jemand vielleicht den link zu nem partychange skript geben oder das skript gleich hier geben?
dankee.
-
Meiner Meinung nach eines der Besten. Das LargeParty-Script von KGC.
Script (http://paste-it.net/public/pbc899c/)
Kyoshiro
-
hast du das vllt auch als demo??
-
Wenn du englisch verstehst und ein wenig Zeit investierst, wirst du es auch ohne schaffen ;) Einfach ausprobieren, und wenn was nicht geht, sind wir ja da.
-
Kann mir jemand sagen, ob man das Sidetext Script ( http://rpgvx.de/forum.php?topic=609.0 ), so umschreiben kann, das die Schrift nicht mehr verschwindet sondern an dem Ort wo es auftaucht dann bleibt?
-
okee ich habs jetzt aba noch ne frage ::
(http://img3.imagebanana.com/img/tje97j9/thumb/help.bmp.png) (http://img3.imagebanana.com/view/tje97j9/help.bmp.png)
was soll'n das A:: B:: un sowas darstellen / bedeuten?
-
Soweit ich weiß sind das Tasten, die etwas bewirken, wenn man sie drückt - also entsprechendes Partymitlgied hinzufügen, entfernen etc. Ich hatte mal ne englische Demo davon gesehen, weiß aber nicht mehr, wo. Du kannst ja mal nach KGC Scripts Demo oder so googlen.
-
ok ok.
aba nochwas:D..
hier steht Party anch spiel beenden aba ich wills woanders und das gleiche auch im battle da steht das nach Fliehen hier n beispiel kann mir jemand helfen? ::
(http://img3.imagebanana.com/img/oab9hmuc/thumb/Unbenannt.bmp.png) (http://img3.imagebanana.com/view/oab9hmuc/Unbenannt.bmp.png)
-
@Tobi09
Falls du andere Scripts, verwendest die auf das Menü zgreifen musst du es dort verändern ansonsten würde ich dir empfehlen , einfach dieses verändere Menü Script unter dem Party Script einzufügen.
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
# This class performs the menu screen processing.
#==============================================================================
class Scene_Menu < Scene_Base
#--------------------------------------------------------------------------
# * Object Initialization
# menu_index : command cursor's initial position
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
create_command_window
@gold_window = Window_Gold.new(0, 360)
@status_window = Window_MenuStatus.new(160, 0)
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@command_window.dispose
@gold_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
update_menu_background
@command_window.update
@gold_window.update
@status_window.update
if @command_window.active
update_command_selection
elsif @status_window.active
update_actor_selection
end
end
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
s7= "Partychange"
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s7, s6])
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, false) # Disable save
end
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 4
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1,2,3 # Skill, equipment, status
start_actor_selection
when 4 # Save
$scene = Scene_File.new(true, false, false)
when 5 # End Game
$scene = Scene_PartyForm.new
when 6 # Sphärobrett
$scene = Scene_End.new
end
end
end
#--------------------------------------------------------------------------
# * Start Actor Selection
#--------------------------------------------------------------------------
def start_actor_selection
@command_window.active = false
@status_window.active = true
if $game_party.last_actor_index < @status_window.item_max
@status_window.index = $game_party.last_actor_index
else
@status_window.index = 0
end
end
#--------------------------------------------------------------------------
# * End Actor Selection
#--------------------------------------------------------------------------
def end_actor_selection
@command_window.active = true
@status_window.active = false
@status_window.index = -1
end
#--------------------------------------------------------------------------
# * Update Actor Selection
#--------------------------------------------------------------------------
def update_actor_selection
if Input.trigger?(Input::B)
Sound.play_cancel
end_actor_selection
elsif Input.trigger?(Input::C)
$game_party.last_actor_index = @status_window.index
Sound.play_decision
case @command_window.index
when 1 # skill
$scene = Scene_Skill.new(@status_window.index)
when 2 # equipment
$scene = Scene_Equip.new(@status_window.index)
when 3 # status
$scene = Scene_Status.new(@status_window.index)
end
end
end
end
MfG
Deity
-
okay.ehm das skript is so perfect aba jetzt hab ich das selbe problem immernoch im battle:DD
(http://img3.imagebanana.com/img/8lmkvkut/thumb/Unbenannt.bmp.png) (http://img3.imagebanana.com/view/8lmkvkut/Unbenannt.bmp.png)
-
hallo.Ich kapier das mit den skripten nich imma wenn ich einen einfüge
dann steht da wenn ich das spiel starte error.
Könnte mir das jemand villeicht erklären?
-
1. Was für ein Skript?
2. Wo fügst du es ein?
3. Konfigurierst du das Skript anständig?
Leute Beschreibt eure Probleme doch mal was genauer.
Hier kann keiner Gedanken lesen x.x
Sk!p
-
Es geht bei keinem Skript.
Natürlich bei den anderen Skripten.
Konfigurieren?Wie macht man das?
-
Nimm mir das jetzt wirklich nicht übel aber ich habe damit gebeten einen
TEXT zu schreiben. WELCHES Skript hast du versucht einzufügen und WO?
Ich weiß nicht ob es dir klar ist aber die Script-Base besteht aus ca. 50 Einträgen zwischen
welche du es auch immer geschmissen haben kannst. das ist eine Chance von über 500% das du
schon alleine durch das einfügen Mist baust.
Wenn du also doch bitte eine fernünftige Antwort haben willst, dann schreibe auch etwas, woraus man auf
eine Antwort schließen kann und imitier nicht das überdrehte Anti-Ferhalten mit dem ich demonstrieren wollte
wie dumm sowas ist x.x Bitte.
Sk!p
-
Also ich hab versucht Kylocks Time system in den Skript
Editor einzufügen.Dann hab ich das Spiel gestartet aber es kam Error.
Wie konfiguriert man Skripts?
-
Och mensch, ich dachte ich schaffe es ohne ein Bild aber ihr Jungs macht es euch
selbst schwer.
So hier bitte sehr. DAS ist die Script Base.
(http://www1.picfront.org/picture/l5U9nKwlo30/img/ScriptBase.png) (http://picfront.de/d/l5U9nKwlo30/ScriptBase.png)
97 Zeilen, in denen man ein Skript eintragen kann.
Und jetzt beantworte mir doch bitte die Frage, WO du es dort eingefügt hast.
Das würde das ganze echt einfach ein wenig einfacher machen.
Bevor das nicht geklärt ist, bringt es auch nichts dir zu sagen wie du ein Skript individuell
konfigurierst
-
In dem freien kästchen unter main.
-
Ah, jetzt kommen wir doch weiter^^
Also ich weiß nicht wirklich ob es unter Main eingefügt wird.
Ich hötte es über Main/Unter MAterials eingefügt.
Dort sind generell die Skripte abgelegt, auf die nicht permanent zugegriffen wird.
Haste mal versucht es dorthin zu packen?
Zur konfiguration des Skriptes.
Die meisten Skripte müssen erst den Einstellungen des Benutzers angepasst werde, es ist selten, kann aber vorkommen.
Je nach Skript werden evntl. Bestimmte Werte oder auch Namen abgefragt die einfach Leer sind im Skript
Ein Skript versucht diese Zu lesen, findet keinen Wert, mit dem weiter gearbeitet werden kann, und Zeigt einen Fehler an.
Die Konfiguration eines Skriptes erkennt man meistens an den Info Daten (In Grün geschrieben) oder
veränderbaren werden, welche in so nem Violett hervorgehoben sind.
Oder man hält sich an die F.A.Q welche ebenfalls in Grün (meist) übder dem Skript abgebildet ist.
Sk!p
P.S ein paar längere Beiträge schaden nicht ;) Denk drüber nach
-
Ich hät noch ne frage, ich krieg nich hin, das kylocks time system und day night system zusammen laufen und das an
einer genauen Uhrzeit dunkel wird.
-
noch ne neue frage .
ich hab jetzt bei den kaduki charas diagonal sets gefunden.
also für alle acht richtungen .
kann mir jemand das richtige skript geben wo ich acuh diese charas benutzten kann?
-
Ich suche ein KGC script aber da ich kein Japanisch kann, frage ich, ob jemand bitte den Tiles script raussuchen kann?
Link:http://f44.aaa.livedoor.jp/~ytomy/tkool/rpgtech/techlist_vx.html (http://f44.aaa.livedoor.jp/~ytomy/tkool/rpgtech/techlist_vx.html)
Der script bewirkt das man mehr als nur die Tiles von A-E hat.
lg
InCome
-
Ehm ich hab iwie bei Cache n problem :
(http://img3.imagebanana.com/img/0ob034l/thumb/Unbenannt.bmp.png) (http://img3.imagebanana.com/view/0ob034l/Unbenannt.bmp.png)
-
*seufz* Kann das nicht etwas genauer erklärt werden? Welche Scripts hast du in deinem Projekt? Was steht in dem Abschnitt des Skripts, in dem der Fehler auftritt?
-
@Tobii: was hast du getan bevor der Fehler auftrat?
da hat das sript versucht nil (was ja nichts ist) in einen string umzuwandeln (was nur bedingt geht)
und zu den 8 richtungen: http://f44.aaa.livedoor.jp/~ytomy/tkool/rpgtech/php/tech.php?tool=VX&cat=tech_vx/map&tech=dash_8dir_move
@InCome: die links unten in der status sind englisch genau so wie die gruppe
aber das ist der link: http://f44.aaa.livedoor.jp/~ytomy/tkool/rpgtech/php/tech.php?tool=VX&cat=tech_vx/map&tech=tileset_extension
-
Ich verstehe den skript nicht so wirklich:
Skript:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ? ???????? - KGC_TilesetExtension ? VX ?
#_/ ? Last update : 2008/07/13 ?
#_/----------------------------------------------------------------------------
#_/ ????????4?????????????????????
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#==============================================================================
# ? ???????? - Customize ?
#==============================================================================
module KGC
module TilesetExtension
# ? ??????????????????
# ?????????????????????
TILE_IMAGE_PREFIX = "Tile"
# ? ???????????
# [SET <????>] ??????
TILE_PRESET = {} # ? ?????????!
# ????????????????
# ?????
TILE_PRESET["????"] = {
"A1"=>"A1-Maou",
"A2"=>"A2-Maou",
"B"=>"B-Maou",
"D"=>"D-Maou",
}
# ??????????? [SET ????] ?????
# ? 4????·????????? (?????)
# ????????????????????????4???????
# ?????????????????
# nil ??????????????????
# ? ??????????????????????
DEBUG_INFO_BUTTON = Input::F7
end
end
#???????????????????????????????????????
$imported = {} if $imported == nil
$imported["TilesetExtension"] = true
if $data_mapinfos == nil
$data_mapinfos = load_data("Data/MapInfos.rvdata")
end
# ????? (4?????????)
module DirectionFlag
DOWN = 0x01
LEFT = 0x02
RIGHT = 0x04
UP = 0x08
end
module KGC::TilesetExtension
# ??????????????
EX_RVDATA = "TilesetEx.rvdata"
# ????
module Regexp
# ??
INHERIT = /\[INHERIT\]/i
# ?????
PRESET = /\[SET ([\w\-]+)\]/i
end
# ????????????????
DEFAULT_FILENAME = {
"A1"=>"TileA1",
"A2"=>"TileA2",
"A3"=>"TileA3",
"A4"=>"TileA4",
"A5"=>"TileA5",
"B"=>"TileB",
"C"=>"TileC",
"D"=>"TileD",
"E"=>"TileE"
}
@@__filename = DEFAULT_FILENAME.dup
module_function
#--------------------------------------------------------------------------
# ? ???????????????????
# map_id : ??? ID
#--------------------------------------------------------------------------
def init_tileset_filename(map_id)
@@__filename = get_converted_tileset_filename(map_id)
end
#--------------------------------------------------------------------------
# ? ?????????????????
# map_id : ??? ID
#--------------------------------------------------------------------------
def get_converted_tileset_filename(map_id)
info = $data_mapinfos[map_id]
name = info.original_name
filename = DEFAULT_FILENAME.dup
if name =~ Regexp::INHERIT
# ????????????
parent_id = $data_mapinfos[map_id].parent_id
if parent_id > 0
filename = get_converted_tileset_filename(parent_id)
end
end
# ????????????
return convert_tileset_filename(filename, name)
end
#--------------------------------------------------------------------------
# ? ????????????
# filename : ????? (Hash)
# map_name : ????
#--------------------------------------------------------------------------
def convert_tileset_filename(filename, map_name)
name_buf = filename.dup
# ???????
presets = map_name.scan(Regexp::PRESET)
presets.each { |s|
if TILE_PRESET.has_key?(s[0])
TILE_PRESET[s[0]].each { |k, v|
name_buf[k] = TILE_IMAGE_PREFIX + v
}
end
}
# ??
DEFAULT_FILENAME.keys.each { |key|
if map_name =~ /\[#{key} ([\w\-]+)\]/
name_buf[key] = TILE_IMAGE_PREFIX + $1
end
}
return name_buf
end
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
def get_tileset_filename
return @@__filename
end
end
#???????????????????????????????????????
#==============================================================================
# ? KGC::Commands
#==============================================================================
module KGC
module Commands
module_function
#--------------------------------------------------------------------------
# ? ???????????
# x : ???? X ??
# y : ???? Y ??
# variable_id : ???????????????? ID
#--------------------------------------------------------------------------
def get_terrain_tag(x, y, variable_id = 0)
tag = $game_map.terrain_tag(x, y) # ??????????
if variable_id > 0
$game_variables[variable_id] = tag # ??????????
end
return tag
end
#--------------------------------------------------------------------------
# ? ?????? ID ??????????
# event_id : ???? ID
# variable_id : ???????????????? ID
#--------------------------------------------------------------------------
def get_event_terrain_tag(event_id, variable_id = 0)
event = $game_map.events.values.find { |e| e.id == event_id }
if event == nil
# ????????????? 0
tag = 0
else
tag = $game_map.terrain_tag(event.x, event.y)
end
# ??????????
if variable_id > 0
$game_variables[variable_id] = tag
end
return tag
end
#--------------------------------------------------------------------------
# ? ???????????????
# variable_id : ???????????????? ID
#--------------------------------------------------------------------------
def get_player_terrain_tag(variable_id = 0)
tag = $game_map.terrain_tag($game_player.x, $game_player.y)
# ??????????
if variable_id > 0
$game_variables[variable_id] = tag
end
return tag
end
end
end
class Game_Interpreter
include KGC::Commands
end
#???????????????????????????????????????
#==============================================================================
# ¦ RPG::MapInfo
#==============================================================================
class RPG::MapInfo
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def name
return @name.gsub(/\[.*\]/) { "" }
end
#--------------------------------------------------------------------------
# ? ???????????
#--------------------------------------------------------------------------
def original_name
return @name
end
end
#???????????????????????????????????????
#==============================================================================
# ? RPG::Tileset
#------------------------------------------------------------------------------
# ?????????????????????
#==============================================================================
class RPG::Tileset
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
TABLE_SIZE = 8192 # ??·????????????
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_accessor :version # ???????
attr_accessor :passages # 4 ???????
attr_accessor :terrain_tags # ????
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def initialize
@version = 1
@passages = Table.new(TABLE_SIZE)
@terrain_tags = Table.new(TABLE_SIZE)
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Game_Map
#==============================================================================
class Game_Map
LAYERS = [2, 1, 0]
#--------------------------------------------------------------------------
# ? ??????
# map_id : ??? ID
#--------------------------------------------------------------------------
alias setup_KGC_TilesetExtension setup
def setup(map_id)
@map_id = map_id
init_tileset_filename
setup_KGC_TilesetExtension(map_id)
end
#--------------------------------------------------------------------------
# ? ?????????????????
#--------------------------------------------------------------------------
def init_tileset_filename
KGC::TilesetExtension.init_tileset_filename(@map_id)
end
#--------------------------------------------------------------------------
# ? ????????????
# x : X ??
# y : Y ??
#--------------------------------------------------------------------------
def passage(x, y)
LAYERS.each { |i|
tile_id = @map.data[x, y, i]
return 0 if tile_id == nil
return $data_tileset.passages[tile_id]
}
return 0
end
#--------------------------------------------------------------------------
# ? ???????????
# x : X ??
# y : Y ??
#--------------------------------------------------------------------------
def terrain_tag(x, y)
LAYERS.each { |i|
tile_id = @map.data[x, y, i] # ??? ID ???
return 0 if tile_id == nil # ??? ID ???? : ????
tag = $data_tileset.terrain_tags[tile_id] # ???????
return tag if tag > 0 # ????????????
}
return 0
end
#--------------------------------------------------------------------------
# ? ??????????
# x : X ??
# y : Y ??
# d : ????
#--------------------------------------------------------------------------
def passable_dir?(x, y, d)
# ?? (0,2,4,6,8,10) ?? ????? (0,1,2,4,8,0) ???
flag = (1 << (d / 2 - 1)) & 0x0F
LAYERS.each { |i| # ?????????????
tile_id = @map.data[x, y, i] # ??? ID ???
return false if tile_id == nil # ??? ID ???? : ????
pass = $data_tileset.passages[tile_id] # ??????????????
return false if pass & flag != 0x00 # ??????????????
}
return true
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Game_Character
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# ? ??????
# x : X ??
# y : Y ??
# d : ???? (???: 10)
#--------------------------------------------------------------------------
def passable?(x, y, d = 10)
nx = moved_x(x, d)
ny = moved_y(y, d)
nx = $game_map.round_x(nx) # ????????
ny = $game_map.round_y(ny) # ????????
return false unless $game_map.valid?(nx, ny) # ?????
return true if @through or debug_through? # ???? ON?
return false unless map_passable?(x, y, d) # ??????????
return false unless map_passable?(nx, ny, 10 - d) # ?????????
return false if collide_with_characters?(nx, ny) # ??????????
return true # ???
end
#--------------------------------------------------------------------------
# ? ???? X ????
# x : X ??
# d : ????
# ???? X ????????
#--------------------------------------------------------------------------
def moved_x(x, d)
return x + (d == 6 ? 1 : d == 4 ? -1 : 0)
end
#--------------------------------------------------------------------------
# ? ???? Y ????
# y : Y ??
# d : ????
# ???? Y ????????
#--------------------------------------------------------------------------
def moved_y(y, d)
return y + (d == 2 ? 1 : d == 8 ? -1 : 0)
end
#--------------------------------------------------------------------------
# ? ?????????
# x : X ??
# y : Y ??
# d : ????
# ???????????????????????
#--------------------------------------------------------------------------
def map_passable?(x, y, d)
return $game_map.passable?(x, y) && $game_map.passable_dir?(x, y, d)
end
#--------------------------------------------------------------------------
# ? ????
# turn_ok : ????????????
#--------------------------------------------------------------------------
def move_down(turn_ok = true)
if passable?(@x, @y, 2) # ????
turn_down
@y = $game_map.round_y(@y+1)
@real_y = (@y-1)*256
increase_steps
@move_failed = false
else # ?????
turn_down if turn_ok
check_event_trigger_touch(@x, @y+1) # ???????????
@move_failed = true
end
end
#--------------------------------------------------------------------------
# ? ????
# turn_ok : ????????????
#--------------------------------------------------------------------------
def move_left(turn_ok = true)
if passable?(@x, @y, 4) # ????
turn_left
@x = $game_map.round_x(@x-1)
@real_x = (@x+1)*256
increase_steps
@move_failed = false
else # ?????
turn_left if turn_ok
check_event_trigger_touch(@x-1, @y) # ???????????
@move_failed = true
end
end
#--------------------------------------------------------------------------
# ? ????
# turn_ok : ????????????
#--------------------------------------------------------------------------
def move_right(turn_ok = true)
if passable?(@x, @y, 6) # ????
turn_right
@x = $game_map.round_x(@x+1)
@real_x = (@x-1)*256
increase_steps
@move_failed = false
else # ?????
turn_right if turn_ok
check_event_trigger_touch(@x+1, @y) # ???????????
@move_failed = true
end
end
#--------------------------------------------------------------------------
# ? ????
# turn_ok : ????????????
#--------------------------------------------------------------------------
def move_up(turn_ok = true)
if passable?(@x, @y, 8) # ????
turn_up
@y = $game_map.round_y(@y-1)
@real_y = (@y+1)*256
increase_steps
@move_failed = false
else # ?????
turn_up if turn_ok
check_event_trigger_touch(@x, @y-1) # ???????????
@move_failed = true
end
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def move_lower_left
unless @direction_fix
@direction = (@direction == 6 ? 4 : @direction == 8 ? 2 : @direction)
end
if (passable?(@x, @y, 2) && passable?(@x, @y+1, 4)) ||
(passable?(@x, @y, 4) && passable?(@x-1, @y, 2))
@x -= 1
@y += 1
increase_steps
@move_failed = false
else
@move_failed = true
end
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def move_lower_right
unless @direction_fix
@direction = (@direction == 4 ? 6 : @direction == 8 ? 2 : @direction)
end
if (passable?(@x, @y, 2) && passable?(@x, @y+1, 6)) ||
(passable?(@x, @y, 6) && passable?(@x+1, @y, 2))
@x += 1
@y += 1
increase_steps
@move_failed = false
else
@move_failed = true
end
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def move_upper_left
unless @direction_fix
@direction = (@direction == 6 ? 4 : @direction == 2 ? 8 : @direction)
end
if (passable?(@x, @y, 8) && passable?(@x, @y-1, 4)) ||
(passable?(@x, @y, 4) && passable?(@x-1, @y, 8))
@x -= 1
@y -= 1
increase_steps
@move_failed = false
else
@move_failed = true
end
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def move_upper_right
unless @direction_fix
@direction = (@direction == 4 ? 6 : @direction == 2 ? 8 : @direction)
end
if (passable?(@x, @y, 8) && passable?(@x, @y-1, 6)) ||
(passable?(@x, @y, 6) && passable?(@x+1, @y, 8))
@x += 1
@y -= 1
increase_steps
@move_failed = false
else
@move_failed = true
end
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Game_Player
#==============================================================================
class Game_Player < Game_Character
#--------------------------------------------------------------------------
# ? ?????????
# x : X ??
# y : Y ??
# d : ????
# ???????????????????????
#--------------------------------------------------------------------------
alias map_passable_KGC_TilesetExtension? map_passable?
def map_passable?(x, y, d)
return false unless map_passable_KGC_TilesetExtension?(x, y)
return $game_map.passable_dir?(x, y, d)
end
if $TEST && KGC::TilesetExtension::DEBUG_INFO_BUTTON != nil
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
alias update_KGC_TilesetExtension update
def update
update_KGC_TilesetExtension
if Input.trigger?(KGC::TilesetExtension::DEBUG_INFO_BUTTON)
show_passage_and_terrain_tag
end
end
#--------------------------------------------------------------------------
# ? ?????????????·???????
#--------------------------------------------------------------------------
def show_passage_and_terrain_tag
passage = $game_map.passage(x, y)
tag = $game_map.terrain_tag(x, y)
# ????????
s = "????: "
s += "?" if passage & DirectionFlag::DOWN == 0x00
s += "?" if passage & DirectionFlag::LEFT == 0x00
s += "?" if passage & DirectionFlag::RIGHT == 0x00
s += "?" if passage & DirectionFlag::UP == 0x00
s += " ????: #{tag}"
p s
end
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Sprite_Character
#==============================================================================
class Sprite_Character < Sprite_Base
#--------------------------------------------------------------------------
# ? ????????????????????????
# tile_id : ??? ID
#--------------------------------------------------------------------------
def tileset_bitmap(tile_id)
filename = KGC::TilesetExtension.get_tileset_filename
set_number = tile_id / 256
return Cache.system(filename["B"]) if set_number == 0
return Cache.system(filename["C"]) if set_number == 1
return Cache.system(filename["D"]) if set_number == 2
return Cache.system(filename["E"]) if set_number == 3
return nil
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Spriteset_Map
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def create_tilemap
filename = KGC::TilesetExtension.get_tileset_filename
@tilemap = Tilemap.new(@viewport1)
@tilemap.bitmaps[0] = Cache.system(filename["A1"])
@tilemap.bitmaps[1] = Cache.system(filename["A2"])
@tilemap.bitmaps[2] = Cache.system(filename["A3"])
@tilemap.bitmaps[3] = Cache.system(filename["A4"])
@tilemap.bitmaps[4] = Cache.system(filename["A5"])
@tilemap.bitmaps[5] = Cache.system(filename["B"])
@tilemap.bitmaps[6] = Cache.system(filename["C"])
@tilemap.bitmaps[7] = Cache.system(filename["D"])
@tilemap.bitmaps[8] = Cache.system(filename["E"])
@tilemap.map_data = $game_map.data
@tilemap.passages = $game_map.passages
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Scene_Title
#==============================================================================
class Scene_Title < Scene_Base
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
alias load_database_KGC_TilesetExtension load_database
def load_database
load_database_KGC_TilesetExtension
load_tileset
end
#--------------------------------------------------------------------------
# ? ??????????????
#--------------------------------------------------------------------------
def load_tileset
begin
$data_tileset = load_data("Data/#{KGC::TilesetExtension::EX_RVDATA}")
rescue
$data_tileset = RPG::Tileset.new
end
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Scene_File
#==============================================================================
class Scene_File < Scene_Base
#--------------------------------------------------------------------------
# ? ???????????
# file : ??????????????? (??????)
#--------------------------------------------------------------------------
alias read_save_data_KGC_TilesetExtension read_save_data
def read_save_data(file)
read_save_data_KGC_TilesetExtension(file)
$game_map.init_tileset_filename
Graphics.frame_reset
end
end
Ich hab schon vieles versucht aber nie kommt dann das andere Tile?!
Die Fragen:
-Wie muss ich also die neuen Tiles nennen???
-Wie und wo muss ich sie überall einfügen???
-Was muss ich am Skript ändern???
-Sehe ich das neue Tile im Editor (jeweilige Karte)???
-Muss ich meine Karte umbennenen???
-Also im Grund genommen wie funktioniert das ganze???
Googletranslate übersetztung:
http://translate.google.de/translate?prev=hp&hl=de&js=n&u=http%3A%2F%2Ff44.aaa.livedoor.jp%2F~ytomy%2Ftkool%2Frpgtech%2Fphp%2Ftech.php%3Ftool%3DVX%26cat%3Dtech_vx%2Fmap%26tech%3Dtileset_extension%0D%0A&sl=ja&tl=de (http://translate.google.de/translate?prev=hp&hl=de&js=n&u=http%3A%2F%2Ff44.aaa.livedoor.jp%2F~ytomy%2Ftkool%2Frpgtech%2Fphp%2Ftech.php%3Ftool%3DVX%26cat%3Dtech_vx%2Fmap%26tech%3Dtileset_extension%0D%0A&sl=ja&tl=de)
-
Hey,
Ich bin gerade auf der Suche nach etwas
in der Datenbank habe ich so etwas nicht finden können
und wüsste leider auch nicht selbst, wie man so etwas machen könnte
also schlagt mich, wenn sowas doch hier irgendwo schon ist^^
Ich brauche eine Art Tauschbasar, statt des Shops.
Also eine Person bietet mir "Item-A" Im Tausch gegen "Ressource-C, Ressource-D und Edelstein-F"
Wenn ich ihm aber Ress-A und Ress-B Gebe, gibt er mir Item-B und so weiter.
Als Beispiel:
ich gehe in eine Bäckerei und möchte ein Brötchen, dafür will er aber Teig und Ei, will ich Kuchen, dann verlangt er aber 2 mal Teig 3 Eier und ne Pflaume.
Okay ein Bäcker ist ein doofes Beispiel aber ihr versteht hoffentlich wie ich das meine^^
Gibt es so etwas?
Wenn nicht, habt ihr eine Idee, wie man so etwas machen könnte?
Ich hoffe ihr könnt mir helfen
und meine Frage ist nicht allzu blöd -.-
mfG. Papilion
-
Deine Frage ist nicht blöd aber sie past nicht in Hilfe zu Scripts =)
Als erstes erstellst du halt den Bäcker der die Zutaten in Form von 2-3Abfragen überprüft.
Hast du die benötigten "Zutaten", so gibt es eine Frage ob man dir ein "Brötchen" backen soll.
Reintheoretisch kannst du so viele "Rezepte" auf nur eienr Eventseite abfragen wie du möchtest.
So kannst du auch die Anderen Probleme lösen wie z.B. Quests mit varierbaren Ausgängen, also jenachdem welche Items man einer Person bringt etc.
Ich hoffe ich hab das Problem richtig verstanden und konnte dir helfen
MfG
Deity
-
Naja ich hab es zu Scripts getan, weil ich es mir in Form eines Menüs vorgestellt hatte
und ich nicht weiß, ob und wenn ja wie man es mit Events machen kann^^
Aber so sollte es glaube ich auch gehen.
Hmpf klingt irgendwie ganz simpel,
ich werde es einfach mal so ausprobieren!
Aber falls doch noch jemand Ein Script dafür findet
oder eine andere idee hat, würde ich mich aber trotzdem noch darüber freuen^^
Weil das mit dem abfragen natürlich auch ne Idee ist
aber irgendwie stell ich mir das noch etwas umständlich vor
na ja wie gesagt, ich probiere es einfach mal aus!
danke dir!
Papilion
-
Ich hab noch ne Frage: Wie mache ich eine MessageBack nur bei einem mit dem ich reden will???
Ist ein Kaiser...
edit:
Ich will das der Hauptheld nicht nur Level 99 werden kann sondern 1.000 und der endgegner sogar 10.000. Geht das ürgentwie????
lg
InCome
-
Zu Frage 1: Importiere statt dem Standard-Textboxhintergrund (dieses graue Teil) ein eigenes (unter gleichem Namen, also "MessageBack") unter System. Dann beim Dialog statt nromaler Textbox mit "grauem" Hintergrund anzeigen.
-
Ich brauch bei diesem Script bitte ne genaue Erklärung:
http://www.rpgrevolution.com/forums/index.php?showtopic=11744
Danke im Voraus
-
Ist das nicht der script von KGC???
Wenn ja dann hab ich den oben schon gpostet
Dafür brauch ich auch noch ne Erklärung...
...sorry ich schreib grad mit iPot touch ist nich so einfach
Auch sorry wenn spammen ist/wollt nur Fragen obs der ist.
-
oh mann...
sorry aber...
das hauptscript einfach über main im scripteditor einfügen (nicht im Main-script sondern schon als eigenes)
immer wenn ihr nun das tileset ändern woll müsst ihr den jeweiligen befehl ausführen
$game_map.tile_a1 = 'Name des neuen Tile A1'
$game_map.tile_a2 = 'Name des neuen Tile A2'
$game_map.tile_a3 = 'Name des neuen Tile A3'
$game_map.tile_a4 = 'Name des neuen Tile A4'
$game_map.tile_a5 = 'Name des neuen Tile A5'
$game_map.tile_b = 'Name des neuen Tile B'
$game_map.tile_c = 'Name des neuen Tile C'
$game_map.tile_d = 'Name des neuen Tile D'
$game_map.tile_e = 'Name des neuen Tile E'
solche kleinen scriptbefehle kann man auf der 3ten eventseite ganz unten benutzen/eingeben
am besten ihr benutzt diese befehle während eines teleports
und nein das script ist von ERZENGEL
es gibt ein TilesetExpansion-Script von KGC und man kann die beiden nicht miteinander verwenden
-
Kann mir jemand den script von KGC erklären???
lg
InCome
-
cool danke^^
-
okay ich hab meinen fehler schon gefunden^^
aber jetzt hab ich n video gefunden und ehm weiß jemand welches skript hier für die animierten gegner benutzt wurde?
und wenn ja kann mir das jemand geben?
http://www.youtube.com/watch?v=01JjfFaGob8 (http://www.youtube.com/watch?v=01JjfFaGob8)
-
Das einzige Animated-Battlers-Script, das ich kenne, ist Minkoff's Animated Battlers. Der Thread auf RPG-Revolution.com ist aber wegen urheberrechtlichen Fragen...weg. Du müsstest Google bemühen, Stichwort "Animated Battlers VX".
-
@InCome
Nein, wenn du nicht weißt wie es funktioniert, dann lass es. Hast du gelernt, auch mal alleine
ein bisschen zu lesen und nicht immer andere Leute deine Arbeit machen lassen? Ich sag dir jetzt
schon, dass wenn du nicht weißt wie es funktioniert, du es auch nicht benutzen solltest. Sowieso
ist das eh nur Müll, und solche Skripts brauch keiner, da diese zu kompliziert sind (Ausnahme das
von Erzengel). Das was EB zur Verfügung gestellt hat (A-E) sollte auch reichen, da man die Standart
Sachen einfach wegmachen kann, so wie z.B die von Mack. Naja ich werds dir nicht erklären,
aber vielleicht macht es jemand anderes für dich.
mfg. eugene
-
das kenn ich auch abaer meine frage war nach dem in dem video:DD
-
@Tobii09
Also, er benutzt, wie es aussieht das Takentei SKS von Enu, er hat dabei das Enemy-Animation Addon, d.h. mit dem Addon, brauch man für die Gegner auch so eine Chargrafik, wie für den Helden, und es wird animiert. Dieses Addon hab ich, und kann ich dir geben wenn du es brauchst
mfg, eugene
*edit*
#==============================================================================
# ¦ Enemy Animated Battlers for RPG Tankentai Sideview Battle System
# 1.17.09
#------------------------------------------------------------------------------
# Script by Kylock
# Updated by Mr. Bubble
# Visual Guide at:
# http://www.rpgrevolution.com/forums/index.php?s=&showtopic=18304&view=findpost&p=212499
#==============================================================================
# Easy to implement interface to specify animated battlers for enemies. Note
# enemy batters must be formatted THE SAME as your character battlers. Also,
# you must have 2 copies of your enemy battler:
# <game folder>\Graphics\Battlers\$<enemy name>.png
# <game folder>\Graphics\Characters\$<enemy name>.png
#
# If you are using this script with the Kaduki's Battlers setup, enemies must
# have "_1", "_2" and "_3" files in the Characters folder similar to the
# Kaduki actors. See inside Kaduki demo's Characters folder for an example.
#
# If used with IAB, enemies must have a 4x11 "_1" file in the Characters
# folder. See inside IAB demo's Characters folder for an example.
#
# When you set up your "troops" for the encounter, you may need to tweak the
# positioning of the enemy as the sprites look funny and the actual placement
# may be slightly off. A few battle tests should be sufficient.
# Enemy shadows may also look odd. You may adjust or change the shadow using
# the respective settings within this script.
#
# All settings in this add-on can also be done within the Configuration script.
#==============================================================================
module K_ENEMY_BATTLERS
ENEMY_ID = [31,32,33] # list of enemies with batter sprites(ex. [1,24])
end
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ? Enemy Screen Positioning Adjustment
#--------------------------------------------------------------------------
# Postive Y-values move the battler down. Negatives move the shadow up.
# If the battler is offscreen, it is suggested to use this to function.
#
# return [ 0, 0] <- [X-coordinate?Y-coordinate]
alias bubs_eab_position_plus position_plus
def position_plus
case @enemy_id
when 33 # Animated Slime
return [0, 0]
end
bubs_eab_position_plus
end
#--------------------------------------------------------------------------
# ? Enemy Shadow
#--------------------------------------------------------------------------
# Define a separate shadow image file for an enemy battler.
#
# return "shadow01" <- Image file name in .Graphics/Characters
# return "" <- No shadow used.
alias bubs_eab_shadow shadow
def shadow
case @enemy_id
when 31, 32, 33 # Ralph, Mercenary, Animated Slime
return "shadow00"
end
bubs_eab_shadow
end
#--------------------------------------------------------------------------
# ? Enemy Shadow Adjustment
#--------------------------------------------------------------------------
# Postive Y-values move the shadow down. Negatives move the shadow up.
#
# return [ X-Coordinate, Y-Coordinate]
alias bubs_eab_shadow_plus shadow_plus
def shadow_plus
case @enemy_id
when 33 # Animated Slime
return [ 0, 1]
when 31, 32 # Ralph, Mercenary
return [ 0, 5]
end
bubs_eab_shadow_plus
end
#--------------------------------------------------------------------------
# ? Enemy Animated Battler Settings
#--------------------------------------------------------------------------
alias keb_anime_on anime_on
def anime_on
for x in K_ENEMY_BATTLERS::ENEMY_ID
return true if @enemy_id == x
end
keb_anime_on
end
#--------------------------------------------------------------------------
# ? Enemy Invert Settings
#--------------------------------------------------------------------------
alias keb_action_mirror action_mirror
def action_mirror
for x in K_ENEMY_BATTLERS::ENEMY_ID
return true if @enemy_id == x
end
keb_action_mirror
end
end
-
Hallo Leute,
Werde wohl in nächster Zeit ein paar mehr spezielle Anfragen habe, doch im Moment würde
ich gerne wissen, wie man es per skript machen kann, nur das Charakterbild der Hauptperson
zu ändern. Das Problem ist, per Event ändert es auch die Grafik, da ich aber zu viele
Grafiken zu diesem Zeitpunkt zur auswahl habe, die der Spieler besitzen kann, brauche ich
nur das Faceset geändert (am besten, dass er gar keines mehr hat)
Tippe ja im Game_Actor auf @face_name = face_name / @face_index = face_index
bin mir da aber nicht sicher.
Grüße Klex
-
Hallo Zusammen,
ich möchte mein komplettes kampfsystem ändern kann mir da evtl einer bei helfen
-
Das ist eine sehr wage Ausdrucksweise 'Alles ändern'
Ein paar mehr Details was genau du machen möchtest, müsstest du uns
schon geben.
Sk!p
-
Hallo,
@ Skip ich meine damit das ich nicht so zufallskämpfe habe sondern ich weiss nicht wenn einer Terranigma kennt so ein battle system würde ich gern skripten nur weiss ich nicht wie :(
Und noch ne andere Frage wie kann ich Die Hp und mp leisten verändern weiss nich ob das zu Battle system gehört auf jedenfall schon einmal danke im vorraus
LG Yojiri
-
Hallo,
@ Skip ich meine damit das ich nicht so zufallskämpfe habe sondern ich weiss nicht wenn einer Terranigma kennt so ein battle system würde ich gern skripten nur weiss ich nicht wie :(
Und noch ne andere Frage wie kann ich Die Hp und mp leisten verändern weiss nich ob das zu Battle system gehört auf jedenfall schon einmal danke im vorraus
LG Yojiri
´
Hmm, da kann ich nur sagen du könntest probieren, das Requiem ABS 5.0 zu benutzen
Ja, das Battlesystem von Terranigma ist schon bisschen ZU anders als im VX(Ohne Skripts) aber mit ein Bisschen rumprobieren mit dem Action Battle System von den Requiem Scripts könnte man schon ein bisschen mehr actionreicheres machen. Ich meine ja, du könntest mit den Switches so rummachen, dass zum beispiel der Spieler erst so paar Gegner tötet und wenn alle getötet sind, wird der Boss dann halt angreifbar, sonst kann nur ER dich angreifen. So hab das zumindest ich bei meinem letzten Projekt gemacht ;) Das sollte mit solchen befehlen funktionieren: Der Gegner ist ein Boss und gleichzeitig Objekt. Bei den Nebengegnern kannst du dann von mir aus den ''Die Switch X'' befehl machen wobei du dann X mit Switch ersetzt blablabla und machst das beim Boss nach den Comments Conditional Branches. Lässt den einfach auf Autorun das die ganze Zeit checken und wenn du fertig bist, sollte beim ergebnis der Folge-Conditional Branches ein Switch anschalten, der auf der zweiten Seite gleiche Befehle hat, halt nur nich ''Object'', stattdessen würde ich ''Die Erase'' oder so machen naja wenn du wissen willst wovon ich rede: ^^ Naja hier der Link zum Requiem ABS 5.0 Thread: http://rpgvx.de/forum.php?topic=3193.0 (http://rpgvx.de/forum.php?topic=3193.0)
-
Hallo Leute,
Werde wohl in nächster Zeit ein paar mehr spezielle Anfragen habe, doch im Moment würde
ich gerne wissen, wie man es per skript machen kann, nur das Charakterbild der Hauptperson
zu ändern. Das Problem ist, per Event ändert es auch die Grafik, da ich aber zu viele
Grafiken zu diesem Zeitpunkt zur auswahl habe, die der Spieler besitzen kann, brauche ich
nur das Faceset geändert (am besten, dass er gar keines mehr hat)
Tippe ja im Game_Actor auf @face_name = face_name / @face_index = face_index
bin mir da aber nicht sicher.
Grüße Klex
Du kannst per Event auch nur das Faceset ändern... Dritter reiter, "Change Actor Graphic" und dann nur auf das "Face" doppelklicken, neues Gesicht auswählen, fertig! Ganz ohne Script ;)
Oder was meintest du sonst?
MfG
-
Hallo Leute,
Werde wohl in nächster Zeit ein paar mehr spezielle Anfragen habe, doch im Moment würde
ich gerne wissen, wie man es per skript machen kann, nur das Charakterbild der Hauptperson
zu ändern. Das Problem ist, per Event ändert es auch die Grafik, da ich aber zu viele
Grafiken zu diesem Zeitpunkt zur auswahl habe, die der Spieler besitzen kann, brauche ich
nur das Faceset geändert (am besten, dass er gar keines mehr hat)
Tippe ja im Game_Actor auf @face_name = face_name / @face_index = face_index
bin mir da aber nicht sicher.
Grüße Klex
Wenn du garkein Faceset haben willst kannst du es doch in der Database einfach ausmachen bzw nichts auswählen. Dazu braucht man eigenlich auch kein Script.
MfG
Deity
-
Das Problem ist, das wie ich schon sagte der Charakter zu dem Zeitpunkt, wo
er "kein" Faceset mehr haben soll, bzw ich es wechsle, ca 50 verschiedene Möglichkeiten des Aussehens hat.
(Ganz danach was der Spieler an Equip findet). Wenn ich jetzt
"Change Actor Graphic" klicke, ändert es meines wissen nach auch die Grafik mit.
Hab nähmlich keine Lust 50 mal "Wenn Held equipt = Equip 1" Dann Grafik 1.
Und in der DB geht das auch nicht, da der Held am Anfang ein Faceset hat
-
Das verstehe ich jetzt nur so halb...
Wenn du über den Befehl im Eventdas Face änderst, dann bleibt das Charset 100% beim alten. Dass musst du in der linken Box seperat ändern ;) Und wenn du 50 verschiedene gesichter hast und pro Waffe ein Gesicht machen willst, dann musst du das wohl über 50 Conditional Branches machen... ^^ Ist ne menge Arbeit, wäre aber die genausoviel aufwand mit dem Script, nur dass es ja dann wer anders macht :P
MfG
-
Ich will ja nicht 50 verschiede faces, ich möchte nur 1 Faces, welches ich im nachhinein einstellen kann ohne
das sich das Charset ändert. Das Problem ist, hab schon die 150 conditional branche für das charste per event,
habe aber das face vergessen und keine Lust in jedes reinzugehen und das Face auf aus zu stellen.
Grüße Klex
-
Jetzt habe ich verstanen, was du meinst ^^
Ok... Ich bin mir nicht sicher, ob man das mit nem Script lösen kann... Ich würde an deiner stelle schonmal anfangen, das manuell zu machen... ^^ sry
MfG
-
Ich hab ein Problem mit dem Tactical Battle System:
Wenn ich im Kampf angreife kommt diese Fehlermeldung:
(http://www.abload.de/img/unbenannt6d9l.jpg) (http://www.abload.de/image.php?img=unbenannt6d9l.jpg)
Was mach ich Falsch???^^
-
Hast du irgendwo das Wort "turn" übersetzt oder verändert? Wenn ja, müsste das der Auslöser sein.
-
hab das problem hinbekommen^^
hab aber ein neues Problem: :-(
Die Gegner bewegen sich nicht xD
-
Hallo Commix,
ich bin neu und hab ne Frage ^^.
Weiss nicht ob ich jetzt hier richtig bin, wenn nicht bitte verschieben ;).
Also folgendes.
Ich möchte in meinem VX bei Battles gern andere Aussagen anzeigen lassen!
Zu Erklärung:
Wenn ich einen Zufallskampf habe erscheint immer die englische Meldung das das Monster erscheint!
Ich möchte es aber gern so verändern das dann dortsteht: "Monster1" erscheint!
oder "monster1" greift an!
Wo stell ich das im VX ein??? oO
Liebe Grüße
-
Muss den Skipreditor öffnen, und links oben hast du ein Script, dass nennt sich Vocab oder so, und dort kannst du alle Meldungen einstellen.
mfg Urahara-sama
-
AHHHH ^^
Es funktioniert!
Vielen Dank!!!!!
LG
-
Hallo Leute,
Ich würde gerne wissen, wie man es per skript machen kann, nur das Charakterbild der Hauptperson
zu ändern. Das Problem ist, per Event ändert es auch die Grafik, da ich aber zu viele
Grafiken zu diesem Zeitpunkt zur auswahl habe, die der Spieler besitzen kann, brauche ich
nur das Faceset geändert (am besten, dass er gar keines mehr hat). (Und nein, es ist für
mich keine Lösung einfach in der Datenbank keines einzustellen.
Tippe ja im Game_Actor auf @face_name = face_name / @face_index = face_index
bin mir da aber nicht sicher.
Grüße Klex
Brauch da immernoch Hilfe^^
-
Hallo, mein erster Beitrag hier und schon ein Problem^^
Also, ich hab mir mal das Mog Menü Yui gezogen, finds auch ganz gut und wills in mein spiel einbauen. Hab das Skript in mein RPG kopiert und die Grafiken kopiert und habe nun folgendes Problem:
(http://img41.imageshack.us/my.php?image=mogmenu.png)
Ich benutz zusätzlich Tankentai SKS Script und das Script mit dem EXP-Balken nach jedem Kampf. Ich hab die Menüeinträge dieser beiden Scripts entfernt, weil ich die zusätzlichen Grafiken für das Mogmenü erst später machen werd (wenn ichs überhaupt hinkriege, das Menü entsprechend zu erweitern^^). Hmm, OnScreenShop und BGM-Unchange-Script können damit eigentlich nix zu tun haben. Jemand eine Idee? Bin mir sicher die Lösung ist einfach, aber sowas seh ich meist nicht^^
http://img41.imageshack.us/my.php?image=mogmenu.png (http://img41.imageshack.us/my.php?image=mogmenu.png)
hier ist der link zum bild, das bild wird in der vorschau nich angezeigt, weiß nich ob das normal ist, deswegen geh ich auf nummer sicher^^
Oh Moment, mir fällt gerade ein, dass ich das Mog Menü Aya status Fenster benutze, aber diese beiden Scripts ergänzen sich doch nur, oder?
-
WAS genau ist jetzt dein Problem? xD
Ich entnehme diesem Post nur dass du Einträge aus dem Menü entfernt hast und sie
Später wieder einfügen wolltest wenn du es hinbekommst.
Aber ich vermisse irgendwo das Problem an der ganzen Sache ^^
Sk!p
-
WAS genau ist jetzt dein Problem? xD
Ich entnehme diesem Post nur dass du Einträge aus dem Menü entfernt hast und sie
Später wieder einfügen wolltest wenn du es hinbekommst.
Aber ich vermisse irgendwo das Problem an der ganzen Sache ^^
Sk!p
Also wie ich sehe wird das Bild nicht angezeigt, aber wenigstens der link ist da^^. Also mein Problem ist, dass beim Öffnen des Menüs (mogmenü) zusätzlich dieses normale menüfenster angezeigt wird, wo man die Menüpunkte Item, Status, Ausrüstung und all sowas hat. das mit den Menüpunkten der anderen Scripts hab ich geschrieben, da diese Scripte ja auch das Menü beeinflussen, indem sie ihre eigenen Unterpunkte (wie z.b. ATB-Optionen) mit reinsetzen. Das hab ich aber deaktiviert, soweit ich weiß. Deswegen versteh ich nicht, warum das Mogmenü zwar richtig angezeigt, das normale Menü aber mit drübergelegt wird.
Ich schwafel gern rum, hoffe diesmal wars verständlich^^
Danke schonmal für jeden Lösungsvorschlag,
MfG,
Alpha
EDIT:
Hab das Script mit der anzeige der EXP nach jedem Kampf gelöscht, jetzt funktioniert das Mogmenü korrekt. Naja, allerdings ist mir jetzt ein anderes Problem aufgefallen: Wenn ich im Mogmenü im Equip-Untermenü war und dann das Menü verlasse, wird beim nächsten kampf das Hintergrundbild und der "Equip" Schriftzug eingeblendet. Sie verschwinden zwar nach kurzer Zeit von allein, aber ärgerlich ist es trotzdem.
-
Hey,
ich suche 2 scripts.
Einmal ein Menü dass mehr als 4 chars unterstützt (werden warscheinlich 12)
Und dann ein script mit dem ich mehrere Rüstitems nutzen kann (nichtnur helm/rüstung sondern auch schuhe, handschuhe, schulterblätter. Und statt nur schmuck: kette, 2 mal ringe und schmuck)
Ich bezweifle dass es ein script gibt dass genau meine Wünsche erfüllt, aber gibt bestimmt eins das nah drannkommt.
Die Suche konnte mir leider nicht helfen, ich hoffe einer von euch kennt da was O.o
mfg
-
Für deine zweite Frage, habe ich hier etwas.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ? Skill CP System - KGC_SkillCPSystem ? VX ?
#_/ ? Last Update: 2008/09/06 ?
#_/ ? Translated and Extended Updates by Mr. Anonymous ?
#_/ ? KGC Site: ?
#_/ ? http://f44.aaa.livedoor.jp/~ytomy/ ?
#_/ ? Translator's Blog: ?
#_/ ? http://mraprojects.wordpress.com ?
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ This script has two functions equipment-related functions.
#_/ The first function is the ability to create moire 'slots' for equipment,
#_/ such as separating Boots and Gauntlets from mere 'accessories'.
#_/ It is possible to also create additional equipment slots. See the customize
#_/ block for more details.
#_/
#_/ The second function is an "EP" (Equipment Point) System, which allows you
#_/ to designate how many 'points' an item costs to successfully equip. A
#_/ character's total EP expenditure is increased upon leveling up.
#_/ This introduces more strategy-oriented character customization.
#_/----------------------------------------------------------------------------
#_/ ? Instructions For Usage ?
#_/ To make use of these functions, you must insert the tag into the desired
#_/ item's "Notes" box located in the Armor tab of the database. For example,
#_/ you want the Leather Boots to be bound to the "Legs" slot and cost
#_/ 2 EP to equip. Insert <equipkind Legs>, press enter, then add <EP 2>
#_/
#_/ ? Tags ?
#_/ <equipkind EquipType>
#_/ Where EquipType = The name of the type of equipment. See EXTRA_EQUIP_KIND
#_/ below.
#_/ <EP Amount>
#_/ Where Amount = The desired amount of EP the item requires to equip.
#_/
#_/
#_/ ? Script Commands ?
#_/ These commands are used in "Script" function in the third page of event
#_/ commands under "Advanced".
#_/
#_/ * set_actor_equip_type(ActorID, [EquipType])
#_/ Allows you to manually specify an actor's equipment slots. a
#_/ Ex. set_actor_equip_type(2, [0, 2, 3, 3, 3])
#_/ If "nil"(without quotations) is appointed to EquipType, the default
#_/ EQUIP_TYPE (see below) is used. Trust me, it's useful!
#_/
#_/ * change_actor_equipment(ActorID, equipslot_index, ItemID)
#_/ Allows you to change the equipment of a specified actor.
#_/ equipslot_index works by finding the equipment slot number, which is
#_/ different from EQUIP_TYPE. Setting ItemID to 0 will remove the item.
#_/ With the default setup, we see:
#_/ 0=Weapon 1=Shield 2=Headgear 3=Armor 4=Accessory 5=Legs 6=Arms
#_/
#_/ So, for an example:
#_/ change_actor_equipment(1, 3, 15)
#_/ Would change Ralph's(Actor01 in the database) armor to Chainmail(By default)
#_/
#_/
#_/============================================================================
#_/ Installation: This script must be inserted below KCG_ExtendedEquipScene
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#=============================================================================#
# ? Customization ? #
#=============================================================================#
module KGC
module EquipExtension
# ? Extended Equipment Classification Names ?
# You may designate the names of additional equipment slots here.
# Each time you designate a new equipment slot, it is assigned a number.
# The first four equipment types (Shield, Helmet, Armor, and Accessory) are
# given as 1, 2, 3, 4, respectively. Then the values below are assigned in
# order. By default "Legs" and "Arms" would be 4 and 5. It is possible
# to add additional slots.
# Example: EXTRA_EQUIP_KIND = ["Legs", "Arms", "Skill Book"]
EXTRA_EQUIP_KIND = ["Rücken", "Füße"]
# ? Equipment Placement ?
# This allows you to arrange the equip slots as you see fit on the equipment
# menu. Note the order listed below.
# ** Equipment Classification Summary **
# 0.Shield 1.Headgear 2.Armor 3.Accessory 4. "Legs" 5."Arms"
# Note that these can be changed as desired. By default, we've enabled two
# accessory slots at the end, instead of one. If you plan on adding extra
# equip slots, the category's cooresponding number must be inserted in the
# brackets [] below.
EQUIP_TYPE = [0, 1, 2, 5, 4, 3]
# ? EP (Equip Point) System ?
# These settings are for the Equipment Point Limit System.
# This toggle allows you to use the EP system if set to true.
# If set to false, the EP system will be disabled.
USE_EP_SYSTEM = false
# VOCAB_EP appears once a character gains EP from battle. (Not Tested)
VOCAB_EP = "EP"
# VOCAB_EP_A appears above the EP gauge.
VOCAB_EP_A = "EP"
# This toggle allows you to display the EP gauge in the actor status window.
SHOW_STATUS_EP = true
# ? Default EP Cost ?
# Allows you to change the default amount an item costs to equip in EP.
# (When not otherwise specified.)
DEFAULT_EP_COST = 1
# This toggle allows you to hide the EP cost of an item if its cost is 0.
# true = hide
# false = show
HIDE_ZERO_EP_COST = true
# ? EP Values & Level Gain ?
# Maximum EP that can be spent equipping items.
EP_MAX = 20
# Characters begin with this amount of EP.
EP_MIN = 5
# ? EP Level Gain
# This is the formula for the amount of EP gained upon leveling up.
# The result of this formula is automatically converted to an integer.
EP_CALC_EXP = "level * 0.3 + 4"
# ? Individual Actor EP Level Gain
PERSONAL_EP_CALC_EXP = [] # <- Do not alter or remove!
# Below here, you may specify formulas for individual actors that dictates
# the amount of EP they recieve upon leveling up. Like EP_CALC_EXP, the
# result is converted to an integer.
# Format: PERSONAL_EP_CALC_EXP[ActorID] = "Formula"
# The format is just like EP_CALC_EXP, except each actor is defined after
# PERSONAL_EP_CALC_EXP in brackets [].
# Any actor not specified uses the EP_CALC_EXP formula.
# Example:
# PERSONAL_EP_CALC_EXP[1] = "level * 0.5 + 5"
# ? Insert Personal EP Calculations Below Here ?
PERSONAL_EP_CALC_EXP[1] = "level * 0.5 + 5"
# ? Insert Personal EP Calculations Above Here ?
# ? EP Gauge Colorization ?
# Allows you to change the color of the EP gauges.
# The color can also be determined by a red, green, and blue values.
# Example: GAUGE_NORMAL_START_COLOR = Color.new(255, 0, 0) <- This is red.
# This method of color assignment is much like Tint Screen event command.
#
# This affects the color of number that represents EP cost.
EP_COST_COLOR = 23
# This is the fill color for the early phase of the guage.
EP_GAUGE_START_COLOR = 28
# This is the fill color for the late phase of the guage. (When full)
EP_GAUGE_END_COLOR = 29
end
end
#=============================================================================#
# ? End Customization ? #
#=============================================================================#
#=================================================#
# IMPORT #
#=================================================#
$imported = {} if $imported == nil
$imported["EquipExtension"] = true
#=================================================#
module KGC::EquipExtension
# Unless the EP system is used...
unless USE_EP_SYSTEM
SHOW_STATUS_EP = false
HIDE_ZERO_EP_COST = true
end
#==============================================================================
# ? KGC::EquipExtension::Regexp
#==============================================================================
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
# Note Field Tag Strings #
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
# Whatever word(s) are after the separator ( | ) in the following lines are
# what are used to determine what is searched for in the "Note" section of
# an item or armor.
# Regular expressions defined
module Regexp
# Base Item Module
module BaseItem
# EP Tag String
EP_COST = /<EP\s*(\d+)>/i
# Item Type Tag String
# Special note: I cannot get this tag to work right. If anyone knows how
# this works or if it's bugged, please let me know.
EQUIP_TYPE = /<(?:EQUIP_TYPE|equiptype)\s*(\d+(?:\s*,\s*\d+)*)>/
end
# Base Armor Module
module Armor
# Armor Type Tag String
EQUIP_KIND = /<(?:EQUIP_KIND|equipkind)\s*(.+)>/i
end
end
end
#=================================================#
#==============================================================================
# ? KGC::Commands
#==============================================================================
module KGC
module Commands
module_function
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
def restore_equip
(1...$data_actors.size).each { |i|
actor = $game_actors[i]
actor.restore_equip
}
end
#--------------------------------------------------------------------------
# ? ?????????????
# actor_id : ???? ID
# equip_type : ?????
#--------------------------------------------------------------------------
def set_actor_equip_type(actor_id, equip_type = nil)
actor = $game_actors[actor_id]
return if actor == nil
actor.equip_type = equip_type
end
#--------------------------------------------------------------------------
# ? ??????????
# actor_id : ???? ID
# index : ???? (0~)
# item_id : ?? or ?? ID (0 ???)
#--------------------------------------------------------------------------
def change_actor_equipment(actor_id, index, item_id)
actor = $game_actors[actor_id]
return if actor == nil
actor.change_equip_by_id(index, item_id)
end
end
end
class Game_Interpreter
include KGC::Commands
end
#=================================================#
#==============================================================================
# ¦ Vocab
#==============================================================================
module Vocab
# EP
def self.ep
return KGC::EquipExtension::VOCAB_EP
end
# EP (?)
def self.ep_a
return KGC::EquipExtension::VOCAB_EP_A
end
# ?????
def self.extra_armor(index)
return KGC::EquipExtension::EXTRA_EQUIP_KIND[index]
end
end
#=================================================#
#==============================================================================
# ¦ RPG::BaseItem
#==============================================================================
class RPG::BaseItem
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def create_equip_extension_cache
@__ep_cost = KGC::EquipExtension::DEFAULT_EP_COST
@__equip_type = []
self.note.split(/[\r\n]+/).each { |line|
case line
when KGC::EquipExtension::Regexp::BaseItem::EP_COST
# ?? EP
@__ep_cost = $1.to_i
when KGC::EquipExtension::Regexp::BaseItem::EQUIP_TYPE
# ?????
@__equip_type = []
$1.scan(/\d+/) { |num|
@__equip_type << num.to_i
}
end
}
# EP ???????????? EP = 0
@__ep_cost = 0 unless KGC::EquipExtension::USE_EP_SYSTEM
end
#--------------------------------------------------------------------------
# ? ?? EP
#--------------------------------------------------------------------------
def ep_cost
create_equip_extension_cache if @__ep_cost == nil
return @__ep_cost
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def equip_type
create_equip_extension_cache if @__equip_type == nil
return @__equip_type
end
end
#=================================================#
#==============================================================================
# ¦ RPG::Armor
#==============================================================================
class RPG::Armor < RPG::BaseItem
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def create_equip_extension_cache
super
@__kind = -1
self.note.split(/[\r\n]+/).each { |line|
if line =~ KGC::EquipExtension::Regexp::Armor::EQUIP_KIND
# ????
e_index = KGC::EquipExtension::EXTRA_EQUIP_KIND.index($1)
next if e_index == nil
@__kind = e_index + 4
end
}
end
unless $@
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
alias kind_KGC_EquipExtension kind
def kind
create_equip_extension_cache if @__kind == nil
return (@__kind == -1 ? kind_KGC_EquipExtension : @__kind)
end
end
end
#=================================================#
#==============================================================================
# ¦ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_writer :equip_type # ?????
#--------------------------------------------------------------------------
# ? ??????
# actor_id : ???? ID
#--------------------------------------------------------------------------
alias setup_KGC_EquipExtension setup
def setup(actor_id)
actor = $data_actors[actor_id]
@extra_armor_id = []
setup_KGC_EquipExtension(actor_id)
restore_equip
end
#--------------------------------------------------------------------------
# ? MaxEP ??
#--------------------------------------------------------------------------
def maxep
calc_exp = KGC::EquipExtension::PERSONAL_EP_CALC_EXP[self.id]
if calc_exp == nil
calc_exp = KGC::EquipExtension::EP_CALC_EXP
end
n = Integer(eval(calc_exp))
return [[n, ep_limit].min, KGC::EquipExtension::EP_MIN].max
end
#--------------------------------------------------------------------------
# ? EP ??
#--------------------------------------------------------------------------
def ep
n = 0
equips.compact.each { |item| n += item.ep_cost }
return [maxep - n, 0].max
end
#--------------------------------------------------------------------------
# ? EP ????
#--------------------------------------------------------------------------
def ep_limit
return KGC::EquipExtension::EP_MAX
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def equip_type
if @equip_type.is_a?(Array)
return @equip_type
else
return KGC::EquipExtension::EQUIP_TYPE
end
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def armor_number
return equip_type.size
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def extra_armor_number
return [armor_number - 4, 0].max
end
#--------------------------------------------------------------------------
# ? ?? ID ??????
#--------------------------------------------------------------------------
def extra_armor_id
@extra_armor_id = [] if @extra_armor_id == nil
return @extra_armor_id
end
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
alias armors_KGC_EquipExtension armors
def armors
result = armors_KGC_EquipExtension
# 5??????????
extra_armor_number.times { |i|
armor_id = extra_armor_id[i]
result << (armor_id == nil ? nil : $data_armors[armor_id])
}
return result
end
#--------------------------------------------------------------------------
# ? ????? (?????????)
# equip_type : ????
# item : ?? or ?? (nil ??????)
# test : ?????? (???????????????????)
#--------------------------------------------------------------------------
alias change_equip_KGC_EquipExtension change_equip
def change_equip(equip_type, item, test = false)
change_equip_KGC_EquipExtension(equip_type, item, test)
# ????????????
if extra_armor_number > 0
item_id = item == nil ? 0 : item.id
case equip_type
when 5..armor_number # ?????
@extra_armor_id = [] if @extra_armor_id == nil
@extra_armor_id[equip_type - 5] = item_id
end
end
restore_battle_skill if $imported["SkillCPSystem"]
restore_passive_rev if $imported["PassiveSkill"]
end
#--------------------------------------------------------------------------
# ? ?????
# item : ?????? or ??
# ??/???????????????????????
#--------------------------------------------------------------------------
alias discard_equip_KGC_EquipExtension discard_equip
def discard_equip(item)
last_armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
discard_equip_KGC_EquipExtension(item)
curr_armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
return unless item.is_a?(RPG::Armor) # ?????
return if last_armors != curr_armors # ???????
# ????????
extra_armor_number.times { |i|
if extra_armor_id[i] == item.id
@extra_armor_id[i] = 0
break
end
}
restore_battle_skill if $imported["SkillCPSystem"]
restore_passive_rev if $imported["PassiveSkill"]
end
#--------------------------------------------------------------------------
# ? ?? ID ???
# class_id : ????? ID
#--------------------------------------------------------------------------
alias class_id_equal_KGC_EquipExtension class_id=
def class_id=(class_id)
class_id_equal_KGC_EquipExtension(class_id)
return if extra_armor_number == 0 # ????????
# ?????????????
for i in 5..armor_number
change_equip(i, nil) unless equippable?(equips[i])
end
end
#--------------------------------------------------------------------------
# ? EP ???????
# equip_type : ????
# item : ?? or ??
#--------------------------------------------------------------------------
def ep_condition_clear?(equip_type, item)
return true if item == nil # nil ?????? OK
curr_item = equips[equip_type]
offset = (curr_item != nil ? curr_item.ep_cost : 0)
return false if self.ep < (item.ep_cost - offset) # EP ??
return true
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def restore_equip
return if @__last_equip_type == equip_type
# ??????·????????
last_equips = equips
last_hp = self.hp
last_mp = self.mp
if $imported["SkillCPSystem"]
last_battle_skill_ids = battle_skill_ids.clone
end
# ?????
last_equips.each_index { |i| change_equip(i, nil) }
# ???·????????
last_equips.compact.each { |item| equip_legal_slot(item) }
self.hp = last_hp
self.mp = last_mp
if $imported["SkillCPSystem"]
last_battle_skill_ids.each_with_index { |s, i| set_battle_skill(i, s) }
end
@__last_equip_type = equip_type.clone
Graphics.frame_reset
end
#--------------------------------------------------------------------------
# ? ?????????????
# item : ?? or ??
#--------------------------------------------------------------------------
def equip_legal_slot(item)
if item.is_a?(RPG::Weapon)
if @weapon_id == 0
# ?? 1
change_equip(0, item)
elsif two_swords_style && @armor1_id == 0
# ?? 2 (??????)
change_equip(1, item)
end
elsif item.is_a?(RPG::Armor)
if !two_swords_style && item.kind == equip_type[0] && @armor1_id == 0
# ????? (????????)
change_equip(1, item)
else
# ??????????
list = [-1, @armor2_id, @armor3_id, @armor4_id]
list += extra_armor_id
# ?????????????????
equip_type.each_with_index { |kind, i|
if kind == item.kind && list[i] == 0
change_equip(i + 1, item)
break
end
}
end
end
end
end
#=================================================#
#==============================================================================
# ¦ Window_Base
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# ? EP ???????
# actor : ????
#--------------------------------------------------------------------------
def ep_color(actor)
return knockout_color if actor.maxep > 0 && actor.ep == 0
return normal_color
end
#--------------------------------------------------------------------------
# ? EP ????? 1 ???
#--------------------------------------------------------------------------
def ep_gauge_color1
color = KGC::EquipExtension::EP_GAUGE_START_COLOR
return (color.is_a?(Integer) ? text_color(color) : color)
end
#--------------------------------------------------------------------------
# ? EP ????? 2 ???
#--------------------------------------------------------------------------
def ep_gauge_color2
color = KGC::EquipExtension::EP_GAUGE_END_COLOR
return (color.is_a?(Integer) ? text_color(color) : color)
end
#--------------------------------------------------------------------------
# ? EP ???
# actor : ????
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_ep(actor, x, y, width = 120)
draw_actor_ep_gauge(actor, x, y, width)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, WLH, Vocab::ep_a)
self.contents.font.color = ep_color(actor)
xr = x + width
if width < 120
self.contents.draw_text(xr - 40, y, 40, WLH, actor.ep, 2)
else
self.contents.draw_text(xr - 90, y, 40, WLH, actor.ep, 2)
self.contents.font.color = normal_color
self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxep, 2)
end
self.contents.font.color = normal_color
end
#--------------------------------------------------------------------------
# ? EP ??????
# actor : ????
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_ep_gauge(actor, x, y, width = 120)
gw = width * actor.ep / [actor.maxep, 1].max
gc1 = ep_gauge_color1
gc2 = ep_gauge_color2
self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
end
#--------------------------------------------------------------------------
# ? ?? EP ???
# item : ?? or ??
# rect : ??????
# enabled : ????
#--------------------------------------------------------------------------
def draw_equipment_ep_cost(item, rect, enabled = true)
return if item == nil
# ?? EP 0 ????????
return if KGC::EquipExtension::HIDE_ZERO_EP_COST && item.ep_cost == 0
color = KGC::EquipExtension::EP_COST_COLOR
self.contents.font.color = (color.is_a?(Integer) ?
text_color(color) : color)
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(rect, item.ep_cost, 2)
end
end
#=================================================#
#==============================================================================
# ¦ Window_Equip
#==============================================================================
class Window_Equip < Window_Selectable
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@data = @actor.equips.clone
@item_max = [@data.size, @actor.armor_number + 1].min
create_contents
# ???????
self.contents.font.color = system_color
if @actor.two_swords_style
self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)
self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
else
self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
name = armor_slot_name(@actor.equip_type[0])
self.contents.draw_text(4, WLH * 1, 92, WLH, name)
end
for i in 1...@actor.armor_number
name = armor_slot_name(@actor.equip_type[i])
self.contents.draw_text(4, WLH * (i + 1), 92, WLH, name)
end
# ??????
rect = Rect.new(92, 0, self.width - 128, WLH)
@item_max.times { |i|
rect.y = WLH * i
draw_item_name(@data[i], rect.x, rect.y)
draw_equipment_ep_cost(@data[i], rect)
}
end
#--------------------------------------------------------------------------
# ? ?????????
# kind : ??
#--------------------------------------------------------------------------
def armor_slot_name(kind)
case kind
when 0..3
return eval("Vocab.armor#{kind + 1}")
else
return Vocab.extra_armor(kind - 4)
end
end
unless $imported["ExtendedEquipScene"]
#--------------------------------------------------------------------------
# ? ????? 1 ????????
#--------------------------------------------------------------------------
def cursor_pagedown
return if Input.repeat?(Input::R)
super
end
#--------------------------------------------------------------------------
# ? ????? 1 ???????
#--------------------------------------------------------------------------
def cursor_pageup
return if Input.repeat?(Input::L)
super
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
super
return unless self.active
if Input.repeat?(Input::RIGHT)
cursor_pagedown
elsif Input.repeat?(Input::LEFT)
cursor_pageup
end
end
end
end
#=================================================#
#==============================================================================
# ¦ Window_EquipItem
#==============================================================================
class Window_EquipItem < Window_Item
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
@item_enabled = []
super
@data.each { |item| @item_enabled << enable?(item) }
end
#--------------------------------------------------------------------------
# ? ????????????????
# item : ????
#--------------------------------------------------------------------------
def include?(item)
return true if item == nil
if @equip_type == 0
return false unless item.is_a?(RPG::Weapon)
else
return false unless item.is_a?(RPG::Armor)
return false unless item.kind == @equip_type - 1
end
return @actor.equippable?(item)
end
#--------------------------------------------------------------------------
# ? ??????????????????
# item : ????
#--------------------------------------------------------------------------
def enable?(item)
return false unless @actor.equippable?(item) # ????
return false unless @actor.ep_condition_clear?(@equip_type, item) # EP ??
return true
end
#--------------------------------------------------------------------------
# ? ?????
# index : ????
#--------------------------------------------------------------------------
def draw_item(index)
super(index)
rect = item_rect(index)
item = @data[index]
# ??????????
cw = self.contents.text_size(sprintf(":%2d", 0)).width
rect.width -= cw + 4
draw_equipment_ep_cost(item, rect, enable?(item))
end
#--------------------------------------------------------------------------
# ? ????????
# equip_type : ????
#--------------------------------------------------------------------------
def simple_refresh(equip_type)
# ???????????
last_equip_type = @equip_type
@equip_type = equip_type
@data.each_with_index { |item, i|
# ????????????????
if enable?(item) != @item_enabled[i]
draw_item(i)
@item_enabled[i] = enable?(item)
end
}
# ???????
@equip_type = last_equip_type
end
end
#=================================================#
#==============================================================================
# ¦ Window_EquipStatus
#==============================================================================
class Window_EquipStatus < Window_Base
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
alias refresh_KGC_EquipExtension refresh
def refresh
refresh_KGC_EquipExtension
draw_actor_ep(@actor, 120, 0, 56) if KGC::EquipExtension::USE_EP_SYSTEM
end
end
#=================================================#
#==============================================================================
# ¦ Window_Status
#==============================================================================
class Window_Status < Window_Base
if KGC::EquipExtension::SHOW_STATUS_EP
#--------------------------------------------------------------------------
# ? ???????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
alias draw_basic_info_KGC_EquipExtension draw_basic_info
def draw_basic_info(x, y)
draw_basic_info_KGC_EquipExtension(x, y)
draw_actor_ep(@actor, x + 160, y + WLH * 4)
end
end
#--------------------------------------------------------------------------
# ? ??????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
def draw_equipments(x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, WLH, Vocab::equip)
item_number = [@actor.equips.size, @actor.armor_number + 1].min
item_number.times { |i|
draw_item_name(@actor.equips[i], x + 16, y + WLH * (i + 1))
}
end
end
#=================================================#
#==============================================================================
# ¦ Window_ShopStatus
#==============================================================================
class Window_ShopStatus < Window_Base
#--------------------------------------------------------------------------
# ? ?????????????????
# actor : ????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
def draw_actor_parameter_change(actor, x, y)
return if @item.is_a?(RPG::Item)
enabled = actor.equippable?(@item)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x, y, 200, WLH, actor.name)
if @item.is_a?(RPG::Weapon)
item1 = weaker_weapon(actor)
elsif actor.two_swords_style and @item.kind == 0
item1 = nil
else
index = actor.equip_type.index(@item.kind)
item1 = (index != nil ? actor.equips[1 + index] : nil)
end
if enabled
if @item.is_a?(RPG::Weapon)
atk1 = item1 == nil ? 0 : item1.atk
atk2 = @item == nil ? 0 : @item.atk
change = atk2 - atk1
else
def1 = item1 == nil ? 0 : item1.def
def2 = @item == nil ? 0 : @item.def
change = def2 - def1
end
self.contents.draw_text(x, y, 200, WLH, sprintf("%+d", change), 2)
end
draw_item_name(item1, x, y + WLH, enabled)
end
end
#=================================================#
#==============================================================================
# ¦ Scene_Equip
#==============================================================================
class Scene_Equip < Scene_Base
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
EQUIP_TYPE_MAX = KGC::EquipExtension::EXTRA_EQUIP_KIND.size + 5
#--------------------------------------------------------------------------
# ? ?????????
# actor_index : ??????????
# equip_index : ????????
#--------------------------------------------------------------------------
alias initialize_KGC_EquipExtension initialize
def initialize(actor_index = 0, equip_index = 0)
initialize_KGC_EquipExtension(actor_index, equip_index)
unit = ($imported["LargeParty"] ?
$game_party.all_members : $game_party.members)
actor = unit[actor_index]
@equip_index = [@equip_index, actor.armor_number].min
end
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
alias create_item_windows_KGC_EquipExtension create_item_windows
def create_item_windows
create_item_windows_KGC_EquipExtension
kind = equip_kind(@equip_index)
EQUIP_TYPE_MAX.times { |i|
@item_windows[i].visible = (kind == i)
}
end
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
def update_item_windows
kind = equip_kind(@equip_window.index)
for i in 0...EQUIP_TYPE_MAX
@item_windows[i].visible = (kind == i)
@item_windows[i].update
end
@item_window = @item_windows[kind]
@item_window.simple_refresh(@equip_window.index)
end
#--------------------------------------------------------------------------
# ? ?????????
# index : ?????????
#--------------------------------------------------------------------------
def equip_kind(index)
if index == 0
return 0
else
return @actor.equip_type[index - 1] + 1
end
end
unless $imported["ExtendedEquipScene"]
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def update_status_window
if @equip_window.active
@status_window.set_new_parameters(nil, nil, nil, nil)
elsif @item_window.active
temp_actor = Marshal.load(Marshal.dump(@actor))
temp_actor.change_equip(@equip_window.index, @item_window.item, true)
new_atk = temp_actor.atk
new_def = temp_actor.def
new_spi = temp_actor.spi
new_agi = temp_actor.agi
@status_window.set_new_parameters(new_atk, new_def, new_spi, new_agi)
end
@status_window.update
end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias update_item_selection_KGC_EquipExtension update_item_selection
def update_item_selection
if Input.trigger?(Input::C)
# ????????
index = @equip_window.index
item = @item_window.item
unless item == nil ||
(@actor.equippable?(item) && @actor.ep_condition_clear?(index, item))
Sound.play_buzzer
return
end
end
update_item_selection_KGC_EquipExtension
end
end
#=================================================#
#==============================================================================
# ¦ Scene_File
#==============================================================================
class Scene_File < Scene_Base
#--------------------------------------------------------------------------
# ? ???????????
# file : ??????????????? (??????)
#--------------------------------------------------------------------------
alias read_save_data_KGC_EquipExtension read_save_data
def read_save_data(file)
read_save_data_KGC_EquipExtension(file)
KGC::Commands.restore_equip
Graphics.frame_reset
end
end
Grüße Klex
-
Für deine zweite Frage, habe ich hier etwas.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ? Skill CP System - KGC_SkillCPSystem ? VX ?
#_/ ? Last Update: 2008/09/06 ?
#_/ ? Translated and Extended Updates by Mr. Anonymous ?
#_/ ? KGC Site: ?
#_/ ? [url]http://f44.aaa.livedoor.jp/~ytomy/ [/url] ?
#_/ ? Translator's Blog: ?
#_/ ? [url]http://mraprojects.wordpress.com[/url] ?
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ This script has two functions equipment-related functions.
#_/ The first function is the ability to create moire 'slots' for equipment,
#_/ such as separating Boots and Gauntlets from mere 'accessories'.
#_/ It is possible to also create additional equipment slots. See the customize
#_/ block for more details.
#_/
#_/ The second function is an "EP" (Equipment Point) System, which allows you
#_/ to designate how many 'points' an item costs to successfully equip. A
#_/ character's total EP expenditure is increased upon leveling up.
#_/ This introduces more strategy-oriented character customization.
#_/----------------------------------------------------------------------------
#_/ ? Instructions For Usage ?
#_/ To make use of these functions, you must insert the tag into the desired
#_/ item's "Notes" box located in the Armor tab of the database. For example,
#_/ you want the Leather Boots to be bound to the "Legs" slot and cost
#_/ 2 EP to equip. Insert <equipkind Legs>, press enter, then add <EP 2>
#_/
#_/ ? Tags ?
#_/ <equipkind EquipType>
#_/ Where EquipType = The name of the type of equipment. See EXTRA_EQUIP_KIND
#_/ below.
#_/ <EP Amount>
#_/ Where Amount = The desired amount of EP the item requires to equip.
#_/
#_/
#_/ ? Script Commands ?
#_/ These commands are used in "Script" function in the third page of event
#_/ commands under "Advanced".
#_/
#_/ * set_actor_equip_type(ActorID, [EquipType])
#_/ Allows you to manually specify an actor's equipment slots. a
#_/ Ex. set_actor_equip_type(2, [0, 2, 3, 3, 3])
#_/ If "nil"(without quotations) is appointed to EquipType, the default
#_/ EQUIP_TYPE (see below) is used. Trust me, it's useful!
#_/
#_/ * change_actor_equipment(ActorID, equipslot_index, ItemID)
#_/ Allows you to change the equipment of a specified actor.
#_/ equipslot_index works by finding the equipment slot number, which is
#_/ different from EQUIP_TYPE. Setting ItemID to 0 will remove the item.
#_/ With the default setup, we see:
#_/ 0=Weapon 1=Shield 2=Headgear 3=Armor 4=Accessory 5=Legs 6=Arms
#_/
#_/ So, for an example:
#_/ change_actor_equipment(1, 3, 15)
#_/ Would change Ralph's(Actor01 in the database) armor to Chainmail(By default)
#_/
#_/
#_/============================================================================
#_/ Installation: This script must be inserted below KCG_ExtendedEquipScene
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#=============================================================================#
# ? Customization ? #
#=============================================================================#
module KGC
module EquipExtension
# ? Extended Equipment Classification Names ?
# You may designate the names of additional equipment slots here.
# Each time you designate a new equipment slot, it is assigned a number.
# The first four equipment types (Shield, Helmet, Armor, and Accessory) are
# given as 1, 2, 3, 4, respectively. Then the values below are assigned in
# order. By default "Legs" and "Arms" would be 4 and 5. It is possible
# to add additional slots.
# Example: EXTRA_EQUIP_KIND = ["Legs", "Arms", "Skill Book"]
EXTRA_EQUIP_KIND = ["Rücken", "Füße"]
# ? Equipment Placement ?
# This allows you to arrange the equip slots as you see fit on the equipment
# menu. Note the order listed below.
# ** Equipment Classification Summary **
# 0.Shield 1.Headgear 2.Armor 3.Accessory 4. "Legs" 5."Arms"
# Note that these can be changed as desired. By default, we've enabled two
# accessory slots at the end, instead of one. If you plan on adding extra
# equip slots, the category's cooresponding number must be inserted in the
# brackets [] below.
EQUIP_TYPE = [0, 1, 2, 5, 4, 3]
# ? EP (Equip Point) System ?
# These settings are for the Equipment Point Limit System.
# This toggle allows you to use the EP system if set to true.
# If set to false, the EP system will be disabled.
USE_EP_SYSTEM = false
# VOCAB_EP appears once a character gains EP from battle. (Not Tested)
VOCAB_EP = "EP"
# VOCAB_EP_A appears above the EP gauge.
VOCAB_EP_A = "EP"
# This toggle allows you to display the EP gauge in the actor status window.
SHOW_STATUS_EP = true
# ? Default EP Cost ?
# Allows you to change the default amount an item costs to equip in EP.
# (When not otherwise specified.)
DEFAULT_EP_COST = 1
# This toggle allows you to hide the EP cost of an item if its cost is 0.
# true = hide
# false = show
HIDE_ZERO_EP_COST = true
# ? EP Values & Level Gain ?
# Maximum EP that can be spent equipping items.
EP_MAX = 20
# Characters begin with this amount of EP.
EP_MIN = 5
# ? EP Level Gain
# This is the formula for the amount of EP gained upon leveling up.
# The result of this formula is automatically converted to an integer.
EP_CALC_EXP = "level * 0.3 + 4"
# ? Individual Actor EP Level Gain
PERSONAL_EP_CALC_EXP = [] # <- Do not alter or remove!
# Below here, you may specify formulas for individual actors that dictates
# the amount of EP they recieve upon leveling up. Like EP_CALC_EXP, the
# result is converted to an integer.
# Format: PERSONAL_EP_CALC_EXP[ActorID] = "Formula"
# The format is just like EP_CALC_EXP, except each actor is defined after
# PERSONAL_EP_CALC_EXP in brackets [].
# Any actor not specified uses the EP_CALC_EXP formula.
# Example:
# PERSONAL_EP_CALC_EXP[1] = "level * 0.5 + 5"
# ? Insert Personal EP Calculations Below Here ?
PERSONAL_EP_CALC_EXP[1] = "level * 0.5 + 5"
# ? Insert Personal EP Calculations Above Here ?
# ? EP Gauge Colorization ?
# Allows you to change the color of the EP gauges.
# The color can also be determined by a red, green, and blue values.
# Example: GAUGE_NORMAL_START_COLOR = Color.new(255, 0, 0) <- This is red.
# This method of color assignment is much like Tint Screen event command.
#
# This affects the color of number that represents EP cost.
EP_COST_COLOR = 23
# This is the fill color for the early phase of the guage.
EP_GAUGE_START_COLOR = 28
# This is the fill color for the late phase of the guage. (When full)
EP_GAUGE_END_COLOR = 29
end
end
#=============================================================================#
# ? End Customization ? #
#=============================================================================#
#=================================================#
# IMPORT #
#=================================================#
$imported = {} if $imported == nil
$imported["EquipExtension"] = true
#=================================================#
module KGC::EquipExtension
# Unless the EP system is used...
unless USE_EP_SYSTEM
SHOW_STATUS_EP = false
HIDE_ZERO_EP_COST = true
end
#==============================================================================
# ? KGC::EquipExtension::Regexp
#==============================================================================
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
# Note Field Tag Strings #
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
# Whatever word(s) are after the separator ( | ) in the following lines are
# what are used to determine what is searched for in the "Note" section of
# an item or armor.
# Regular expressions defined
module Regexp
# Base Item Module
module BaseItem
# EP Tag String
EP_COST = /<EP\s*(\d+)>/i
# Item Type Tag String
# Special note: I cannot get this tag to work right. If anyone knows how
# this works or if it's bugged, please let me know.
EQUIP_TYPE = /<(?:EQUIP_TYPE|equiptype)\s*(\d+(?:\s*,\s*\d+)*)>/
end
# Base Armor Module
module Armor
# Armor Type Tag String
EQUIP_KIND = /<(?:EQUIP_KIND|equipkind)\s*(.+)>/i
end
end
end
#=================================================#
#==============================================================================
# ? KGC::Commands
#==============================================================================
module KGC
module Commands
module_function
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
def restore_equip
(1...$data_actors.size).each { |i|
actor = $game_actors[i]
actor.restore_equip
}
end
#--------------------------------------------------------------------------
# ? ?????????????
# actor_id : ???? ID
# equip_type : ?????
#--------------------------------------------------------------------------
def set_actor_equip_type(actor_id, equip_type = nil)
actor = $game_actors[actor_id]
return if actor == nil
actor.equip_type = equip_type
end
#--------------------------------------------------------------------------
# ? ??????????
# actor_id : ???? ID
# index : ???? (0~)
# item_id : ?? or ?? ID (0 ???)
#--------------------------------------------------------------------------
def change_actor_equipment(actor_id, index, item_id)
actor = $game_actors[actor_id]
return if actor == nil
actor.change_equip_by_id(index, item_id)
end
end
end
class Game_Interpreter
include KGC::Commands
end
#=================================================#
#==============================================================================
# ¦ Vocab
#==============================================================================
module Vocab
# EP
def self.ep
return KGC::EquipExtension::VOCAB_EP
end
# EP (?)
def self.ep_a
return KGC::EquipExtension::VOCAB_EP_A
end
# ?????
def self.extra_armor(index)
return KGC::EquipExtension::EXTRA_EQUIP_KIND[index]
end
end
#=================================================#
#==============================================================================
# ¦ RPG::BaseItem
#==============================================================================
class RPG::BaseItem
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def create_equip_extension_cache
@__ep_cost = KGC::EquipExtension::DEFAULT_EP_COST
@__equip_type = []
self.note.split(/[\r\n]+/).each { |line|
case line
when KGC::EquipExtension::Regexp::BaseItem::EP_COST
# ?? EP
@__ep_cost = $1.to_i
when KGC::EquipExtension::Regexp::BaseItem::EQUIP_TYPE
# ?????
@__equip_type = []
$1.scan(/\d+/) { |num|
@__equip_type << num.to_i
}
end
}
# EP ???????????? EP = 0
@__ep_cost = 0 unless KGC::EquipExtension::USE_EP_SYSTEM
end
#--------------------------------------------------------------------------
# ? ?? EP
#--------------------------------------------------------------------------
def ep_cost
create_equip_extension_cache if @__ep_cost == nil
return @__ep_cost
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def equip_type
create_equip_extension_cache if @__equip_type == nil
return @__equip_type
end
end
#=================================================#
#==============================================================================
# ¦ RPG::Armor
#==============================================================================
class RPG::Armor < RPG::BaseItem
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def create_equip_extension_cache
super
@__kind = -1
self.note.split(/[\r\n]+/).each { |line|
if line =~ KGC::EquipExtension::Regexp::Armor::EQUIP_KIND
# ????
e_index = KGC::EquipExtension::EXTRA_EQUIP_KIND.index($1)
next if e_index == nil
@__kind = e_index + 4
end
}
end
unless $@
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
alias kind_KGC_EquipExtension kind
def kind
create_equip_extension_cache if @__kind == nil
return (@__kind == -1 ? kind_KGC_EquipExtension : @__kind)
end
end
end
#=================================================#
#==============================================================================
# ¦ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_writer :equip_type # ?????
#--------------------------------------------------------------------------
# ? ??????
# actor_id : ???? ID
#--------------------------------------------------------------------------
alias setup_KGC_EquipExtension setup
def setup(actor_id)
actor = $data_actors[actor_id]
@extra_armor_id = []
setup_KGC_EquipExtension(actor_id)
restore_equip
end
#--------------------------------------------------------------------------
# ? MaxEP ??
#--------------------------------------------------------------------------
def maxep
calc_exp = KGC::EquipExtension::PERSONAL_EP_CALC_EXP[self.id]
if calc_exp == nil
calc_exp = KGC::EquipExtension::EP_CALC_EXP
end
n = Integer(eval(calc_exp))
return [[n, ep_limit].min, KGC::EquipExtension::EP_MIN].max
end
#--------------------------------------------------------------------------
# ? EP ??
#--------------------------------------------------------------------------
def ep
n = 0
equips.compact.each { |item| n += item.ep_cost }
return [maxep - n, 0].max
end
#--------------------------------------------------------------------------
# ? EP ????
#--------------------------------------------------------------------------
def ep_limit
return KGC::EquipExtension::EP_MAX
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def equip_type
if @equip_type.is_a?(Array)
return @equip_type
else
return KGC::EquipExtension::EQUIP_TYPE
end
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def armor_number
return equip_type.size
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def extra_armor_number
return [armor_number - 4, 0].max
end
#--------------------------------------------------------------------------
# ? ?? ID ??????
#--------------------------------------------------------------------------
def extra_armor_id
@extra_armor_id = [] if @extra_armor_id == nil
return @extra_armor_id
end
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
alias armors_KGC_EquipExtension armors
def armors
result = armors_KGC_EquipExtension
# 5??????????
extra_armor_number.times { |i|
armor_id = extra_armor_id[i]
result << (armor_id == nil ? nil : $data_armors[armor_id])
}
return result
end
#--------------------------------------------------------------------------
# ? ????? (?????????)
# equip_type : ????
# item : ?? or ?? (nil ??????)
# test : ?????? (???????????????????)
#--------------------------------------------------------------------------
alias change_equip_KGC_EquipExtension change_equip
def change_equip(equip_type, item, test = false)
change_equip_KGC_EquipExtension(equip_type, item, test)
# ????????????
if extra_armor_number > 0
item_id = item == nil ? 0 : item.id
case equip_type
when 5..armor_number # ?????
@extra_armor_id = [] if @extra_armor_id == nil
@extra_armor_id[equip_type - 5] = item_id
end
end
restore_battle_skill if $imported["SkillCPSystem"]
restore_passive_rev if $imported["PassiveSkill"]
end
#--------------------------------------------------------------------------
# ? ?????
# item : ?????? or ??
# ??/???????????????????????
#--------------------------------------------------------------------------
alias discard_equip_KGC_EquipExtension discard_equip
def discard_equip(item)
last_armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
discard_equip_KGC_EquipExtension(item)
curr_armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
return unless item.is_a?(RPG::Armor) # ?????
return if last_armors != curr_armors # ???????
# ????????
extra_armor_number.times { |i|
if extra_armor_id[i] == item.id
@extra_armor_id[i] = 0
break
end
}
restore_battle_skill if $imported["SkillCPSystem"]
restore_passive_rev if $imported["PassiveSkill"]
end
#--------------------------------------------------------------------------
# ? ?? ID ???
# class_id : ????? ID
#--------------------------------------------------------------------------
alias class_id_equal_KGC_EquipExtension class_id=
def class_id=(class_id)
class_id_equal_KGC_EquipExtension(class_id)
return if extra_armor_number == 0 # ????????
# ?????????????
for i in 5..armor_number
change_equip(i, nil) unless equippable?(equips[i])
end
end
#--------------------------------------------------------------------------
# ? EP ???????
# equip_type : ????
# item : ?? or ??
#--------------------------------------------------------------------------
def ep_condition_clear?(equip_type, item)
return true if item == nil # nil ?????? OK
curr_item = equips[equip_type]
offset = (curr_item != nil ? curr_item.ep_cost : 0)
return false if self.ep < (item.ep_cost - offset) # EP ??
return true
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def restore_equip
return if @__last_equip_type == equip_type
# ??????·????????
last_equips = equips
last_hp = self.hp
last_mp = self.mp
if $imported["SkillCPSystem"]
last_battle_skill_ids = battle_skill_ids.clone
end
# ?????
last_equips.each_index { |i| change_equip(i, nil) }
# ???·????????
last_equips.compact.each { |item| equip_legal_slot(item) }
self.hp = last_hp
self.mp = last_mp
if $imported["SkillCPSystem"]
last_battle_skill_ids.each_with_index { |s, i| set_battle_skill(i, s) }
end
@__last_equip_type = equip_type.clone
Graphics.frame_reset
end
#--------------------------------------------------------------------------
# ? ?????????????
# item : ?? or ??
#--------------------------------------------------------------------------
def equip_legal_slot(item)
if item.is_a?(RPG::Weapon)
if @weapon_id == 0
# ?? 1
change_equip(0, item)
elsif two_swords_style && @armor1_id == 0
# ?? 2 (??????)
change_equip(1, item)
end
elsif item.is_a?(RPG::Armor)
if !two_swords_style && item.kind == equip_type[0] && @armor1_id == 0
# ????? (????????)
change_equip(1, item)
else
# ??????????
list = [-1, @armor2_id, @armor3_id, @armor4_id]
list += extra_armor_id
# ?????????????????
equip_type.each_with_index { |kind, i|
if kind == item.kind && list[i] == 0
change_equip(i + 1, item)
break
end
}
end
end
end
end
#=================================================#
#==============================================================================
# ¦ Window_Base
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# ? EP ???????
# actor : ????
#--------------------------------------------------------------------------
def ep_color(actor)
return knockout_color if actor.maxep > 0 && actor.ep == 0
return normal_color
end
#--------------------------------------------------------------------------
# ? EP ????? 1 ???
#--------------------------------------------------------------------------
def ep_gauge_color1
color = KGC::EquipExtension::EP_GAUGE_START_COLOR
return (color.is_a?(Integer) ? text_color(color) : color)
end
#--------------------------------------------------------------------------
# ? EP ????? 2 ???
#--------------------------------------------------------------------------
def ep_gauge_color2
color = KGC::EquipExtension::EP_GAUGE_END_COLOR
return (color.is_a?(Integer) ? text_color(color) : color)
end
#--------------------------------------------------------------------------
# ? EP ???
# actor : ????
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_ep(actor, x, y, width = 120)
draw_actor_ep_gauge(actor, x, y, width)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, WLH, Vocab::ep_a)
self.contents.font.color = ep_color(actor)
xr = x + width
if width < 120
self.contents.draw_text(xr - 40, y, 40, WLH, actor.ep, 2)
else
self.contents.draw_text(xr - 90, y, 40, WLH, actor.ep, 2)
self.contents.font.color = normal_color
self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxep, 2)
end
self.contents.font.color = normal_color
end
#--------------------------------------------------------------------------
# ? EP ??????
# actor : ????
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_ep_gauge(actor, x, y, width = 120)
gw = width * actor.ep / [actor.maxep, 1].max
gc1 = ep_gauge_color1
gc2 = ep_gauge_color2
self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
end
#--------------------------------------------------------------------------
# ? ?? EP ???
# item : ?? or ??
# rect : ??????
# enabled : ????
#--------------------------------------------------------------------------
def draw_equipment_ep_cost(item, rect, enabled = true)
return if item == nil
# ?? EP 0 ????????
return if KGC::EquipExtension::HIDE_ZERO_EP_COST && item.ep_cost == 0
color = KGC::EquipExtension::EP_COST_COLOR
self.contents.font.color = (color.is_a?(Integer) ?
text_color(color) : color)
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(rect, item.ep_cost, 2)
end
end
#=================================================#
#==============================================================================
# ¦ Window_Equip
#==============================================================================
class Window_Equip < Window_Selectable
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@data = @actor.equips.clone
@item_max = [@data.size, @actor.armor_number + 1].min
create_contents
# ???????
self.contents.font.color = system_color
if @actor.two_swords_style
self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)
self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
else
self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
name = armor_slot_name(@actor.equip_type[0])
self.contents.draw_text(4, WLH * 1, 92, WLH, name)
end
for i in 1...@actor.armor_number
name = armor_slot_name(@actor.equip_type[i])
self.contents.draw_text(4, WLH * (i + 1), 92, WLH, name)
end
# ??????
rect = Rect.new(92, 0, self.width - 128, WLH)
@item_max.times { |i|
rect.y = WLH * i
draw_item_name(@data[i], rect.x, rect.y)
draw_equipment_ep_cost(@data[i], rect)
}
end
#--------------------------------------------------------------------------
# ? ?????????
# kind : ??
#--------------------------------------------------------------------------
def armor_slot_name(kind)
case kind
when 0..3
return eval("Vocab.armor#{kind + 1}")
else
return Vocab.extra_armor(kind - 4)
end
end
unless $imported["ExtendedEquipScene"]
#--------------------------------------------------------------------------
# ? ????? 1 ????????
#--------------------------------------------------------------------------
def cursor_pagedown
return if Input.repeat?(Input::R)
super
end
#--------------------------------------------------------------------------
# ? ????? 1 ???????
#--------------------------------------------------------------------------
def cursor_pageup
return if Input.repeat?(Input::L)
super
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
super
return unless self.active
if Input.repeat?(Input::RIGHT)
cursor_pagedown
elsif Input.repeat?(Input::LEFT)
cursor_pageup
end
end
end
end
#=================================================#
#==============================================================================
# ¦ Window_EquipItem
#==============================================================================
class Window_EquipItem < Window_Item
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
@item_enabled = []
super
@data.each { |item| @item_enabled << enable?(item) }
end
#--------------------------------------------------------------------------
# ? ????????????????
# item : ????
#--------------------------------------------------------------------------
def include?(item)
return true if item == nil
if @equip_type == 0
return false unless item.is_a?(RPG::Weapon)
else
return false unless item.is_a?(RPG::Armor)
return false unless item.kind == @equip_type - 1
end
return @actor.equippable?(item)
end
#--------------------------------------------------------------------------
# ? ??????????????????
# item : ????
#--------------------------------------------------------------------------
def enable?(item)
return false unless @actor.equippable?(item) # ????
return false unless @actor.ep_condition_clear?(@equip_type, item) # EP ??
return true
end
#--------------------------------------------------------------------------
# ? ?????
# index : ????
#--------------------------------------------------------------------------
def draw_item(index)
super(index)
rect = item_rect(index)
item = @data[index]
# ??????????
cw = self.contents.text_size(sprintf(":%2d", 0)).width
rect.width -= cw + 4
draw_equipment_ep_cost(item, rect, enable?(item))
end
#--------------------------------------------------------------------------
# ? ????????
# equip_type : ????
#--------------------------------------------------------------------------
def simple_refresh(equip_type)
# ???????????
last_equip_type = @equip_type
@equip_type = equip_type
@data.each_with_index { |item, i|
# ????????????????
if enable?(item) != @item_enabled[i]
draw_item(i)
@item_enabled[i] = enable?(item)
end
}
# ???????
@equip_type = last_equip_type
end
end
#=================================================#
#==============================================================================
# ¦ Window_EquipStatus
#==============================================================================
class Window_EquipStatus < Window_Base
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
alias refresh_KGC_EquipExtension refresh
def refresh
refresh_KGC_EquipExtension
draw_actor_ep(@actor, 120, 0, 56) if KGC::EquipExtension::USE_EP_SYSTEM
end
end
#=================================================#
#==============================================================================
# ¦ Window_Status
#==============================================================================
class Window_Status < Window_Base
if KGC::EquipExtension::SHOW_STATUS_EP
#--------------------------------------------------------------------------
# ? ???????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
alias draw_basic_info_KGC_EquipExtension draw_basic_info
def draw_basic_info(x, y)
draw_basic_info_KGC_EquipExtension(x, y)
draw_actor_ep(@actor, x + 160, y + WLH * 4)
end
end
#--------------------------------------------------------------------------
# ? ??????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
def draw_equipments(x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, WLH, Vocab::equip)
item_number = [@actor.equips.size, @actor.armor_number + 1].min
item_number.times { |i|
draw_item_name(@actor.equips[i], x + 16, y + WLH * (i + 1))
}
end
end
#=================================================#
#==============================================================================
# ¦ Window_ShopStatus
#==============================================================================
class Window_ShopStatus < Window_Base
#--------------------------------------------------------------------------
# ? ?????????????????
# actor : ????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
def draw_actor_parameter_change(actor, x, y)
return if @item.is_a?(RPG::Item)
enabled = actor.equippable?(@item)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x, y, 200, WLH, actor.name)
if @item.is_a?(RPG::Weapon)
item1 = weaker_weapon(actor)
elsif actor.two_swords_style and @item.kind == 0
item1 = nil
else
index = actor.equip_type.index(@item.kind)
item1 = (index != nil ? actor.equips[1 + index] : nil)
end
if enabled
if @item.is_a?(RPG::Weapon)
atk1 = item1 == nil ? 0 : item1.atk
atk2 = @item == nil ? 0 : @item.atk
change = atk2 - atk1
else
def1 = item1 == nil ? 0 : item1.def
def2 = @item == nil ? 0 : @item.def
change = def2 - def1
end
self.contents.draw_text(x, y, 200, WLH, sprintf("%+d", change), 2)
end
draw_item_name(item1, x, y + WLH, enabled)
end
end
#=================================================#
#==============================================================================
# ¦ Scene_Equip
#==============================================================================
class Scene_Equip < Scene_Base
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
EQUIP_TYPE_MAX = KGC::EquipExtension::EXTRA_EQUIP_KIND.size + 5
#--------------------------------------------------------------------------
# ? ?????????
# actor_index : ??????????
# equip_index : ????????
#--------------------------------------------------------------------------
alias initialize_KGC_EquipExtension initialize
def initialize(actor_index = 0, equip_index = 0)
initialize_KGC_EquipExtension(actor_index, equip_index)
unit = ($imported["LargeParty"] ?
$game_party.all_members : $game_party.members)
actor = unit[actor_index]
@equip_index = [@equip_index, actor.armor_number].min
end
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
alias create_item_windows_KGC_EquipExtension create_item_windows
def create_item_windows
create_item_windows_KGC_EquipExtension
kind = equip_kind(@equip_index)
EQUIP_TYPE_MAX.times { |i|
@item_windows[i].visible = (kind == i)
}
end
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
def update_item_windows
kind = equip_kind(@equip_window.index)
for i in 0...EQUIP_TYPE_MAX
@item_windows[i].visible = (kind == i)
@item_windows[i].update
end
@item_window = @item_windows[kind]
@item_window.simple_refresh(@equip_window.index)
end
#--------------------------------------------------------------------------
# ? ?????????
# index : ?????????
#--------------------------------------------------------------------------
def equip_kind(index)
if index == 0
return 0
else
return @actor.equip_type[index - 1] + 1
end
end
unless $imported["ExtendedEquipScene"]
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def update_status_window
if @equip_window.active
@status_window.set_new_parameters(nil, nil, nil, nil)
elsif @item_window.active
temp_actor = Marshal.load(Marshal.dump(@actor))
temp_actor.change_equip(@equip_window.index, @item_window.item, true)
new_atk = temp_actor.atk
new_def = temp_actor.def
new_spi = temp_actor.spi
new_agi = temp_actor.agi
@status_window.set_new_parameters(new_atk, new_def, new_spi, new_agi)
end
@status_window.update
end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias update_item_selection_KGC_EquipExtension update_item_selection
def update_item_selection
if Input.trigger?(Input::C)
# ????????
index = @equip_window.index
item = @item_window.item
unless item == nil ||
(@actor.equippable?(item) && @actor.ep_condition_clear?(index, item))
Sound.play_buzzer
return
end
end
update_item_selection_KGC_EquipExtension
end
end
#=================================================#
#==============================================================================
# ¦ Scene_File
#==============================================================================
class Scene_File < Scene_Base
#--------------------------------------------------------------------------
# ? ???????????
# file : ??????????????? (??????)
#--------------------------------------------------------------------------
alias read_save_data_KGC_EquipExtension read_save_data
def read_save_data(file)
read_save_data_KGC_EquipExtension(file)
KGC::Commands.restore_equip
Graphics.frame_reset
end
end
Grüße Klex
danke. Dazu hab ich aber noch ne Frage und zwar wie kann ich bestimmen dass ein Rüstitem z.B. schuhe sind?
In der Datenbank kann ich immernoch nur zwischen den 4 Standart Typen wählen (hab auch schon neugestartet)
-
(http://f.imagehost.org/0198/Antwort.jpg) (http://f.imagehost.org/view/0198/Antwort)
Grüße Klex
-
Danke Klex, klappt alles.
Einmal ein Menü dass mehr als 4 chars unterstützt (werden warscheinlich 12)
Frage besteht immernoch
EDIT:
Also 12 Leute kann ich jetzt im team haben (kann man unter Game_Party einstellen). Man sieht in dem menüfenster nur die ersten 4, man kann aber die anderen auswählen. (hier ist der 5. ausgesucht):
(http://img3.imagebanana.com/img/vijtz6af/Daaa.PNG)
-
hab das problem hinbekommen^^
hab aber ein neues Problem: :-(
Die Gegner bewegen sich nicht xD
Das Problem hab ich immer noch :P
-
Hab mal ein wenig durchgeguckt, hab aber auch kein Plan wieso das so ist. Aber ne Alternative wär. den Modus auf Team umzustellen.
-
wie den modus ??? :P
-
Wenn du das GTBS benutzt unter "Game_System"
alias gtbs_GS_init initialize
def initialize
@cust_battle = "TEAM" (Zeile 22)
@tactics_actors = []
@tactics_enemies = []
@tactics_neutral = []
@tactics_dead = []
@battle_events = {}
@acted = []
@scroll_cursor = true
@ai_level = 2
@move_color = "BLUE"
@help_skill_color = "GREEN"
@attack_skill_color = "YELLOW"
@attack_color = "RED"
@tbs_enabled = true
gtbs_GS_init
end
-
Ich werds mal ausprobieren :P
Danke^^
-
Brauch immernoch Hilfe beim menü script ^^.
Ich will dass ich bei dem ESC Menü 12 Leute statt nur 4 sehen kann. Aber irgendwie will es nichtmal klappen die Face Grafiken kleiner anzuzeigen.
def draw_face(face_name, face_index, x, y, size = 96)
bitmap = Cache.face(face_name)
rect = Rect.new(0, 0, 0, 0)
rect.x = face_index % 4 * 96 + (96 - size) / 2
rect.y = face_index / 4 * 96 + (96 - size) / 2
rect.width = size
rect.height = size
self.contents.blt(x, y, bitmap, rect)
bitmap.dispose
end
Bloß wenn ich size verändere passiert GARNICHTS. Warscheinlich bin ich da eh ganz falsch, hat wer ne Idee?
-
Ich hab jetzt das Script eingedeutscht, aber bei der Auswahl erscheint immer Yes/No ???
Und ich finde die Zeile nicht, wo ich das Ändern kann :D
-
Auswahl von was?
-
zb. wenn ich mit dem setzen der Charactäre fertig bin,
dann kommte ein Text: Bist du Fertig? und drunter kommt: Yes No
Und ich weiß nicht, wo ich das Yes/No in Ja/Nein umstellen kann ???
-
Window_Battle
Z. 354/362
Das müssten die richtigen sein.
-
Ich hätte noch eine Frage^^
Wo kann ich den Text im Startmenü ändern (dort wo wait und attack und so steht)
ICh finds nich :D
-
da musst du bei terms das ändern
-
kann mir jemand sagen wie man eine andere Script-Sprache in ruby einbetten kann?
-
beim TBS gibts kein Terms^^
-
kennt jemand ein script welches html oder java im maker ermöglicht?
-
Nach vielen Seiten im Internet und einem Selbstversuch mit unserem Informatikkurs haben wir es nicht geschafft ein Programm eine andere Scriptsprache zu verstehen. Ich hab ein bischen gegooglet und auch für RGSS gibt es bislang keine Möglichkeit dafür ausser für die Windowmessagebefehle wie z.B. woratan sie schon eingebaut hat.
(Forenbefehle /url] etc)
Vielleicht irre ich mich hoffe aber trotzdem, dass ich dir helfen konnte.
MfG
Deity (http://...)
-
Naja mir gehts eigendlich um den befehl alert im java. Das macht das man wenn man z.B. darüber geht ein [desc=so wie hier ;)]Fenster[/desc]aufgeht in dem was steht.
Meine idee war (da ich ein event menü habe) und ich das mousescript benutze so ein befehl nem gegenstand gebe und ihn dann beschreibe.
Leide wess och net wie ich das ib ruby machen kann. Hastdu ne ahnung?
-
Leider nicht, dazu sind meine RGSS Kenntnisse zu bescheiden. Aber ich denke es ist möglich.
MfG
Deity
-
Ich hab ne Frage zum Lighteffects script:
Wenn ich mein Spiel starte kommt diese Fehlermeldung:
(http://www.abload.de/thumb/unbenanntuyco.jpg) (http://www.abload.de/image.php?img=unbenanntuyco.jpg)
-
So wies aussieht blockiert ein anderes script dein lichtscript.
Welche verwendest du noch?
-
habs rausbekommen^^
Es war Tileset reloaded von Onkel Hell.
-
Naja mir gehts eigendlich um den befehl alert im java. Das macht das man wenn man z.B. darüber geht ein [desc=so wie hier ;)]Fenster[/desc]aufgeht in dem was steht.
Meine idee war (da ich ein event menü habe) und ich das mousescript benutze so ein befehl nem gegenstand gebe und ihn dann beschreibe.
Leide wess och net wie ich das ib ruby machen kann. Hastdu ne ahnung?
brauche immernoch hilfe
-
Ich hätte noch eine Frage^^
Wo kann ich den Text im Startmenü ändern (dort wo wait und attack und so steht)
ICh finds nich :D
Brauch immer noch Hilfe^^
-
Script-Base: Vocab
-
Ich hätte noch eine Frage^^
Wo kann ich den Text im Startmenü ändern (dort wo wait und attack und so steht)
ICh finds nich :D
Brauch immer noch Hilfe^^
Window_Battle, Zeile 50-59, die ab Zeile 35 musst du mitändern! ;)
-
Naja mir gehts eigendlich um den befehl alert im java. Das macht das man wenn man z.B. darüber geht ein [desc=so wie hier ;)]Fenster[/desc]aufgeht in dem was steht.
Meine idee war (da ich ein event menü habe) und ich das mousescript benutze so ein befehl nem gegenstand gebe und ihn dann beschreibe.
Leide wess och net wie ich das ib ruby machen kann. Hastdu ne ahnung?
brauche immernoch hilfe
-
Soviel wie ich das daraus sehen kann mit meinen fast nicht vorhandenen RGSS-Kenntnissen kannst du den Skript NICHT manuell ein/ausschalten, denn da scheint weder ein Switch zu sein der das (de)aktivieren kann, noch irgendwas anderes.. :X
btw, nach 13 std. musst du noch nicht pushen ;]
-
Hallo Leute,
hab mal ne Frage zum Scene_Battle Skript.
Ich möchte gern die Fluchtrate ändern, bin aber nicht sicher wie.
Ab der Zeile 549 wird doch die Fluchtwahrscheinlichkeit abgefragt, oder?
Irgendwie verstehe ich nicht wie die Wahrscheinlichkeit dort berechnet wird.
Hat sich damit schon einmal jemand auseinandergesetzt?
vorab Danke für eure Hilfe.
-
Hi Toria,
also kp ob es bei deinem Skript eine Änderung an der Fluchtrate gibt, aber normal wird sie so berechnet:
(laut Maker:)
150 - 100 × den Durchschnitt der Initiative des Feindes ÷ den Durchschnitt der Initiative der Heldengruppe.
Außerdem steigt für jeden gescheiterten Fluchtversuch die Fluchtrate um 10%.
Bei einem Überraschungsangriff gelingt immer die Flucht.
Vielleicht hilft dir das ja schon ein wenig.
MfG RaZZoR
-
Ja,das hat schon geholfen.
Danke RaZZoR!
-
Habidere^^
Ich habe auch mal eine Frage:
Warum spuckt er bei diesem Script eine "Nicht senden"-Meldung aus?
#==============================================================================
# Test mit Tilemap (Resize)
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
alias melektaus_spriteset_map_initialize initialize
def initialize
melektaus_spriteset_map_initialize
t = @tilemap.map_data
p_tablesize(t)
t.resize(t.xsize, t.ysize, t.zsize)
p_tablesize(t)
# "Nicht Senden"-Meldung
end
#--------------------------------------------------------------------------
def p_tablesize(table)
x = table.xsize
y = table.ysize
z = table.zsize
p "#{x}, #{y}, #{z}"
end
#--------------------------------------------------------------------------
end
#==============================================================================
Auch wenn keine Änderungen (nur testweise) durch den [desc=Table.resize(xsize, ysize, zsize)
Change the size of the array. All data from before the size change is retained.
Table.xsize
Table.ysize
Table.zsize
Gets the sizes of each of the array's dimensions.]Resize[/desc]-Befehl vorgenommen werden, will es trotzdem nicht klappen -.-
Gibt es vielleicht eine Lösung, die Tilemap-Table-Größe zu verändern (bzw einfach nur den [desc=Table.resize(xsize, ysize, zsize)
Change the size of the array. All data from before the size change is retained.
Table.xsize
Table.ysize
Table.zsize
Gets the sizes of each of the array's dimensions.]Resize[/desc]-Befehl zu nutzen) ohne dass ein "Nicht senden"-Fehler kommt?
Ich hoffe es kann mir jemand helfen.
EDIT: Hat sich erledigt, habs jetzt über die Game_Map-Klasse mit einer eigenen Funktion gelöst:
#==============================================================================
# Game_Map
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
def setup(map_id)
@map_id = map_id
@map = load_data(sprintf("Data/Map%03d.rvdata", @map_id))
@map = rebuild(@map, 17, 13)
@display_x = 0
@display_y = 0
@passages = $data_system.passages
referesh_vehicles
setup_events
setup_scroll
setup_parallax
@need_refresh = false
end
#--------------------------------------------------------------------------
def rebuild(map, width, height)
new_map = RPG::Map.new(width, height)
new_map.data = Table.new(width, height, 3)
for x in 0...width
for y in 0...height
for z in 0...3
value = map.data[x, y, z]
value = 0 if value == nil
new_map.data[x, y, z] = value
end
end
end
return new_map
end
#--------------------------------------------------------------------------
end
#==============================================================================
MfG,
MelekTaus
-
Hallo
Ich bin neu und kenne mich deshalb nicht so gut aus mit dem RPG-VX Maker. Also ich suche einen Skript mit dem man die Überblendung (von Map 1 zu Map2) wegmachen kann. Sodass kein Übergang mehr Stattfindet.
1000 THX im voraus!
-
So ein Script gib es nach meinem Wissen nicht... Wieso willst du die Überblendung weg haben?
-
Doch sowas gibts!?!
Ein Freund von hat sowas ... Obwohl ... nach längerem Überlegen ... vielleicht hat der den Skript selber gemacht?!
Trotzdem Danke!
-
Es gibt so einen Skript ;)
Guck mal unter Instant Transfer, da findest du den Code
Klicke hier^^ (http://www.rpgvx.net/index.php/topic,1134.0.html)
-
Hallo,
ich wollte fragen ob jemand von euch einen Jahreszeiten skript kennt.
Ich wäre sehr dankbar.
-
Da gibts meines Wissens kein Script zu...
Du kannst das per Events in kombination mit Onkel Hells Tile substitution lösen! Guck dir mal das Tutorial zu verschiedenen Tageszeiten mit CEs an (CE = Common Event).
Dann lässt du einfach die Tage zählen und richtest danach die Jahreszeiten ;)
MfG
-
Hi, ich denk mal, meine Frage passt hier ganz gut rein:
Es geht um das Monster Album Script (http://www.rpgvx.net/index.php/topic,1746.0.html). Wie kann ich einstellen, dass dort, wo das Bild des Monsters angezeigt wird, ein von mir festgelegtes Hintergrundbild angezeigt wird anstelle einer schwarzen Fläche? Wollte den Thread nich unnötig ausgraben, daher stell ich die Frage hier...
MfG,
Alpha
-
moin hätt acuh ma wieder ne frage hier... weiß wer wie ichs schaff die standart bewegung nach oben und unten auszuschalten? also wenn ich pfeiltaste hoch drücke, das der char sich nicht nach oben bewegt? weil hab per common event mit conditional key input up was eingebaut und wenn ich nach oben dann drück bewegt der sich auch... und das soll er nicht.. weiß da jmd ne lösung? danke schonma
mfG Sartekk
-
@AlphaCentauri
Es gibt mitlerwile mir 4 bekannte Monster Album Scripts, daher solltest du uns vielleicht den Namen und einen Link dazu posten. Danach könnte ich es gerne versuchen.
@Sartek
Ich hoffe es hilft dir. Einfach über Main einfügen :D
module D_Settings
SWITCH_ID = 1 # Die SwitchID, die die Bewegung nach oben und unten verbietet.
# Einfach die gewählte SwitchID aktivieren, damit der Spieler
# nicht nach oben und unten bewegen kann. (Edited: by Phi, Wirtten: by Deity)
end
include D_Settings
class Game_Player
#--------------------------------------------------------------------------
# * Processing of Movement via input from the Directional Buttons
#--------------------------------------------------------------------------
def move_by_input
return unless movable?
return if $game_map.interpreter.running?
case Input.dir4
when 2;
if $game_switches[SWITCH_ID] != true
move_down
end
when 4
move_left
when 6
move_right
when 8
if $game_switches[SWITCH_ID] != true
move_up
end
end
end
end
MfG
Deity
-
Danke Deity klappt super :) nun hab ich aber die nächst frage und ne schnelle antwort wär super...
Bastel mir grad nen Script und ich kriegs einfach nit hin vom Script aus dieses Scheiß Name Input Process starten zu lassen >_<
Das Script läuft unter class Name_Commander < Scene_Base
pls schnell hilfe :(
das game hängt sich dann einfach auf und es bleibt im vorherigen script_command_window stehn...
-
Habe die Name_Commander-Klasse ein wenig umgeschrieben^^
#==============================================================================
# Name_Commander
#==============================================================================
class Name_Commander < Scene_Name
#--------------------------------------------------------------------------
def initialize(name_actor_id, name_max_char)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$game_temp.name_actor_id = name_actor_id
$game_temp.name_max_char = name_max_char
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
def terminate
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
super
$register_name = true
$scene = Charmaker.new
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
end
#==============================================================================
Wenn du die Name_Commander-Scene in der Charmaker-Scene aufrufen willst, dann:
#==============================================================================
# $scene = Name_Commander(actor_id, max_char)
# z.B.: $scene = Name_Commander(1, 10)
#==============================================================================
MfG, MelekTaus
-
So. Tach die Herren und Damen!
Ich habe folgende Problematik, die sicher auch im Interesse des ganzen Forums wäre.
Ich möchte das FFXII Menü (http://www.rpgvx.net/index.php/topic,3216.0.html) aus dem Forum haben, aber leider ist es in spanisch und weißt mich auf Fehler hin.
Bitte saugt euch einfach schnell das Menü und schaut selber nach was für Fehler das Teil hat.
Sollte es wirklich Jemand auf die Reihe kriegen, das Script für mich und alle anderen zu debuggn,
so kann er sich einen dicken Credits Eintrag sicher sein!
lg, fuzzy
-
Ich hab gehört es gäbe ein Skript das die Monster Bilder bewegen lässt aber ich kann es nicht finden ... kann mir das einer bitte posten ?
-
EDIT:
-Erledigt-
So. Tach die Herren und Damen!
Mein Drama um das FFX2 Menü dreht erneut eine Runde.
Diesmal wäre es so, dass das Menü umgedeutscht ist und funkt.
Nur:
Der Fehler:
Im Skill_Skript kann man die Typen von Magie angeben.
Dazu muss man die Skills per Skriptbefehl ins Menü einordnen lassen.
Doch das geht bei mir nicht (nach sehr langen und nervigen ausprobieren..)
Vermutung:
Das FFX2 Menü benützt Magiearten.
Mein Sideview KS nicht.
Ich vermute das beide auf Scene_Skills oder sowas zugreifen.
Zudem kommt noch ein weitere Fehler:
Ich habe eine Save&Load Skript, welches mir ermöglicht mehrere Saveslots und Screens zur verfügung zu haben.
Nun ist es (warum auch immer) so, dass ich nur über Eventbefehl speichern kann, aber nicht das Spiel laden kann.
Ich bitte sehr um eure Hilfe!
Ich kann erneut nur einen Creditseintrag anbieten, da ich RGSS2 mäßig voll die Wurst bin.
Lg,
fuzzy
-
Also ich versuch grad mein Script zu verallgemeinern und will auf die skills to learn in der database classes zugreifen... mein Script sieht so aus:
class Testi < Scene_Base
def start
super
gain
end
def learn_skill(skill_id)
unless skill_learn?($data_skills[skill_id])
@skills.push(skill_id)
@skills.sort!
end
end
def gain
@char = $game_actors[1]
@level = @char.level
for i in @char.class.learnings
learn_skill(i.skill_id) if i.level <= @level
end
end
def skill_learn?(skill)
return @skills.include?(skill.id)
end
end
jedoch kommt andauernd n Script error "undefined method ìnclude?"
weiß wer wieso und hätt jmd lösungsvorschläge???
-
Ich hoffe ich funk dir nicht dazwischen Sartek.
da ich befürchte das ich ohne Fehler kaum ne avi/swf Datei als Intro einfügen kann versuche ich es auf den direkten weg.
Es braucht eigentlich nicht viel.
ein Hintergrund Bild, ein runterscrollender Text und Hintergrundmusik.
Wie ich ein Bitmap Objekt erstelle ist mir klar, das Problem sind die Classen, welche ist das, die VOR dem Mainmenü kommt?
-
Guten Abend.
ich würde gern ein nettes kleines Extra in mein Spiel einbauen. Nur leider bin ich ne totale Null was das Scripten angeht. Ich möchte das wenn die ganze Gruppe besiegt ist, das dann nicht der Game Over Skreen kommt sondern man an einen Ort transferiert wird wo man die Möglichkeit bekommt gegen denn Tod zu kämpfen um wieder belebt zu werden und da weiter zu machen wo man gestorben ist. Kann mir da wer helfen, falls so etwas überhaupt möglich ist. Ich bedanke mich schon mal in voraus.
mfG BSD
-
Klar geht das... im Script "Scene_Battle" Zeile 679 anstatt
$scene = Scene_Gameover.new
machste
$game_player.reserve_transfer(map_id, x, y, direction)
wobei map_id die ID der gewünschten Map, X die X-Koordinate, y die Y-Koordinate und direction die Richtung( in welcher der Actor dann stehen soll) ist
-
Viele dank Sartek nur leider geht es nicht. Wie gesagt hab ich Null ahnung. Könntest du mir vieleicht ein Beispiel geben damit ich genau weis wie das aussehen muss?
MfG BSD
-
Naja kp ob das hier reingehört aber egal.
Es gibt ja hier den ein oder anderen Skripter und mich würd interessieren wo ihr das gelernt hab. Ich hab zwar die ein oder anderen Grundkenntnisse im Bereich vom Konfigurieren oder so Kleinigkeiten am Skript verändern, aber so ein eigenes Skript krieg ich nicht auf die Beine. Deshalb wollt ich wissen ob ihr ein gutes Tut kennt, welches für den Maker halt sein sollte und nicht Ruby allgeimein xD.
Schonmal danke, mfg eugene
-
Also ich kann schon das ein oder Andere Scripten... nur halt für eigene zwecke... mit dem verallgemeinern hab ichs nit so :D kann nur so machen, das der jenige für den ichs mach was damit anfangen kann :D aber auhc nit alles... Das beste Tut wie ich finde ist die Script-database vom standart RTP ;D Wenn ud dir genug zeit nimmst um dir die ganzen Standart-Scripts anzuschauen, wirst du das eine oder andere lernen... genauso wie bei anderen Scripts... Anschauen und analysieren udn so bringt viel ;) Ansonsten würde ich dir das hier mal enpfehlen
http://www.rpg-studio.de/scientia/Ruby/RGSS (http://www.rpg-studio.de/scientia/Ruby/RGSS)
-
@eugene222
Ich würde dir schlicht sagen, learning by doing. Versuch einfache Veränderrungen in simplen Scripts, wie dem Scene_Title vorzunehmen und steigere dich so mehr und mehr in kompliziertere Scripts.
Eine Seite, könnte ich dir noch empfehlen, die mir hell gegeben hat. Dort habe ich eine Menge über Strings ( im Zusammenhang mit Scripten ^^) gelenrt. Aber andere Classes sind da auch erklärt.
MfG
Deity
-
Ok vielen Dank an beide, dann versuch ichs es mir selber bei zu bringen.
-
Hallo...
ich habe ein problem ... und zwar ... wie kann ich über ein event einen skript ein- und ausschalten?!
thx im voraus *johny*
*EDIT*
Hallo nochmal ...
wenn ich gerade dabei bin ... ich habe alles abgesucht und nix gefunden ... ich suche ein paar skripts ... wenn mir jemand den namen sagen könnte (oder am besten link) oder auch sagen das es sowas nicht gibt ... wäre sehr hilfreich...
also ich suche skripte:
- einen skript zum erstellen eines "benutzers" ... oder profil
- einen skript ... eine art drop and drag system
- einen skript ... oder so ... etwas als textverarbeitung
100000 THX im voraus!
-
Das kommt auf das Skript an welches du ein und ausschalten willst.
Zu den anderen Fragen kann ich dir nicht antworten.
-
Also ich habe eine Frage...
Wie kann ich per Call Script befehl abfragen, ob der Player vor hinter oder neben einem Event steht?
Also ich habs versucht so zu lösen:
if $game_player.pos?($game_map.events[@event_id].x -1,$game_map.events[@event_id].y )
jedoch kommt leider immer ein Script Error "wrong number of arguments (2 for 0)"
Weiß jemand wie ich das anders machen, oder so verändern kann, damit der Script error nicht kommt?
und noch ne Frage: Wie kann ich per Script die Direction des Players abfragen?
-
if $game_player.pos?($game_map.events[@event_id].x -1,$game_map.events[@event_id].y )
hmm.. da sollte "wrong number of arguments (2 for 0)" nicht auftreten,
außer es wurde an der Methode in der Game_Character-Klasse
rumgespielt ;D oder ein Script hat diese Methode verändert.
und noch ne Frage: Wie kann ich per Script die Direction des Players abfragen?
$game_player.direction == 2 # Down
$game_player.direction == 4 # Left
$game_player.direction == 6 # Right
$game_player.direction == 8 # Up
MfG, MelekTaus
-
Guten Abend liebe Community!
Da ich wieder an meinen Menü arbeite, würde es mich interessieren, ob man
nicht irgendwie flash einbauen könnte.
Gibt es für sowas einen Script zum nutzen von swf datein?
MFG Saschb2b
-
Hallo,
ich wollte wissen wie ich ein icon anzeigen lassen kann per sprite
also hiermit (hab ich schon gelernt) kann ich ein bild anzeigen lassen
@bg.bitmap = Cache.picture(IMG_NAME)
bei nem icon hab ich mir gedacht:
@bg.bitmap = Cache.system("IconSet")[ICON_NUM]
aber [] geht nicht, sowenig wie () und der ersten klammer kann ich auch keine weiteren paramter geben.
jetzt häng ich etwas aufm schlauch.
viel skripting erfahrung hab ich noch nicht, hab mich bisher nie viel für ruby intressiert....
-
Hallo,
ich wollte wissen wie ich ein icon anzeigen lassen kann per sprite
also hiermit (hab ich schon gelernt) kann ich ein bild anzeigen lassen
@bg.bitmap = Cache.picture(IMG_NAME)
bei nem icon hab ich mir gedacht:
@bg.bitmap = Cache.system("IconSet")[ICON_NUM]
aber [] geht nicht, sowenig wie () und der ersten klammer kann ich auch keine weiteren paramter geben.
jetzt häng ich etwas aufm schlauch.
viel skripting erfahrung hab ich noch nicht, hab mich bisher nie viel für ruby intressiert....
Um ein icon in einem [desc=Also nur in einem Window, das aus Window_Base entsteht!]!Window![/desc] lautet der Befehl;
draw_icon(icon_index, x, y, enabled = true)
Wobei;
icon_index = ID des Icons ist,
x, y = X- und Y-Koordinaten für das Icon sind,
enabled = true = Ob das Icon aktiv/inaktiv ist (transparenz des Icons).
Falls du es in einer anderen Class verwenden möchtest, empfehle ich dir unter Window_Base > draw_icon nachzuschauen, wie man ein einzigen Teil des Iconsets anzeigt.
Hoffe konnte dir helfen.
MfG
Deity
-
Wie Deity schon sagte: in der Klasse Window_Base nachschauen^^
Du brauchst die draw_icon-Methode von der Window_Base-Klasse,
die du am besten der Sprite_Base-Klasse übergibst.
Dazu musst du sie nicht mal kopieren und einfügen:
#==============================================================================
# Sprite_Base::draw_icon(icon_index, x, y, [enabled])
#------------------------------------------------------------------------------
# Beispiel zur Verwendung:
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# sprite = Sprite_Base.new
# sprite.draw_icon($data_items[1].icon_index, 0, 0)
#==============================================================================
class Sprite_Base
#--------------------------------------------------------------------------
def draw_icon(icon_index, x, y, enabled = true)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
window = Window_Base.new(0, 0, 56, 56)
window.draw_icon(icon_index, 0, 0, enabled)
self.bitmap = Bitmap.new(24, 24) if self.bitmap.nil?
self.bitmap.blt(x, y, window.contents, window.contents.rect)
window.dispose
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
end
#==============================================================================
MfG, MelekTaus
-
ma ne frage und brauche shcnelle antwort... wie kann ich überprüfen, welchen Namen ein Event hat... natürlich per Script... also mit $game_map.events[@event_id].name funktionierts nit :/
-
@Sartek: Diese Frage habe ich mir auch die letzten Tage gestellt und es ist
@event.name
in der class "Game_Event" - was anderes hab ich nicht gefunden.
Wo wir gerade bei dem Thema sind: Ich habe diesen Code angefertigt:
class Game_Event
alias se_start start
def start
se_start
print(@event.name) #=> Name vom Event
Audio.se_play(@event.name[,100[,100]]) if @event.name != nil
end
end
Aber das mit dem SE geht nicht :/ Kann mir da wer helfen?
-
wenn ich mich nicht irre sollte es bei SE's so sein
Sound.play_dateiname
EDIT by Colo:
Ähm... in einem Code werden alle Befehle außerkraft gesetzt bis der Code beendet wird... Hab das Color=Red mal entfernt ;)
MfG
-
@Herendil
Um ein Se am sichersten abzuspielen, würde ich folgenden Code benutzen:
Audio.se_play("Audio/SE/DATEINAME", 100, 100)
Die beiden Zahlen stllen die Lautsärke und die Länge des SE's ein.
Und wenn ich was bermerken darf, gibt es @event.name meines Wissens nicht ^^
Hoffe konnte dir weiterhelfen.
MfG
Deity
-
Irgendwie kann ich da so keine Variablen einfügen, sondern halt nur den Dateinnamen direkt einfügen... (in die ""). Ist das normal? Eigendlich müsste das ja gehen...
-
du kannst das auch mit Variable machen... aber dann musste die vorher auch exakt definieren... z.b so:
x= "Dateiname"
Audio.se_play("Audio/SE/"x ,100 ,100)
-
Nope das geht nicht! Es wird ein Error ausgeworfen!
-
Oh Sry das mit der Variable muss ich übersehen haben.
Um es mir einer Variable zu benutzen, würde ich das hier empfehlen:
X = "Dateiname"
Audio.se_play("Audio/SE/"+X.to_s, 100, 100)
Ich denke ich brauch das für dich nicht näher zu erläutern ^^
MfG
Deity
-
Vielen Dank.
-
Da ich durch die Skript-Tutoriale nicht wirklich auf mein Problem gestossen bin, frage ich mal hier:
- Wenn ich ein Skript in meinem Spiel haben will, muss ich es dann zuerst einfach nur über Main Process einfügen, oder die einzelnen Classes zu den verschiedenen Kategorien sortieren?
Jedenfalls: Es tauchen immer Fehlermeldungen auf, bevor ich das Spiel überhaupt starten konnte. Beheben kann ich diese schon gar nicht.
Wie genau könnte man also vorgehen, so dass es zu möglichst keiner Fehlermeldung kommt (oder ist das bei jedem individuell?)?
-
@Franky
Man fügt ein Script über Main ein, das ist richtig.
Leider kann man sehr schwer sagen, warum ein Script Fehlermeldungen gibt, da es einfach zu viele Ursachen geben kann.
Wenn du also ein Script übernehmen willst, musst du immer genau achten, ob der Autor des Scriptes besonderheiten beim Verwenden erwähnt hat, sprich bei TenkaiKS, dass man die nötigen Skills,Statuse etc. übernehmen muss.
Eine weitere Ursache wäre, dass Scripte von verschiedenen Autoren, sich manchmal nicht vertragen und deshalb Fehlermeldungen verursachen.
Die Ursache, die mir jetzt noch spontan einfällt, ist dass der Benutzer sprich du bei den Settings entwas verändert hast, dass man vllt nicht "anfassen" sollte wie den namen eienr Array etc.
Wenn du denkst, dass es am Script liegen kann, so setze dieses in ein ganz neues/ leeres Projekt ein und überprüfe es noch ein mal.
Hoffe konnte dir helfen.
MfG
Deity
-
@Sartek: Diese Frage habe ich mir auch die letzten Tage gestellt und es ist
Code:
@event.name
in der class "Game_Event" - was anderes hab ich nicht gefunden.
Wo wir gerade bei dem Thema sind: Ich habe diesen Code angefertigt:
Code:
class Game_Event
alias se_start start
def start
se_start
print(@event.name) #=> Name vom Event
Audio.se_play(@event.name[,100[,100]]) if @event.name != nil
end
end
Aber das mit dem SE geht nicht :/ Kann mir da wer helfen?
Ok gibt es auch ne Möglichkeit das @event.name in andere classes zu ziehen? mit attr_accessor oder so?
-
Gibt es irgendwo eine Liste mit Skripten, die so sortiert sind, dass man sieht, welche Skripts parallel laufen können, ohne dass es zu einem Fehler kommt? Denn gerade die "besondereren" Scripts, wie Quest Log/Anti Lag/Monster Album funktionieren nicht.
Liegt es vielleicht an den KGC-Scripts (welche seltsamerweise von Anfang an dabei waren)?
Muss man die alle löschen, um andere Scripts fehlerfrei laufen lassen zu können?
-
Hey Jungs :)
Ich bin in den letzten zügen von meiner Eventsammlung und feile nur noch an kleinigkeiten. Ihr könnt mir echt wahnsinnig helfen, wenn ihr eine Lösung zu meinem Problem habt.
Schnelle Frage: Ich will Speichern und Laden ohne Save-Screen (also quasi ein Auto-Save/Load) per Script-Befehl. Also sowas wie dieser Befehl $save.("Filename")
oder $load.("Filename")
Ist das möglich? Ich hab mir schon Scene_File angeschaut, blicke auch durch, aber meine RGSS kenntnisse sind einfach zu gering...
Danke im Voraus!
MfG
-
Hey Jungs :)
Ja das gibt es. Ich finde zwar das Topic auf RRR nicht, aber es gäbe da eines von Wora (Credits an ihn!)
#=======================================================================
# ? [VX] ? Quick Save / Load / Delete ? ?
# * Save/Load/Delete save file you want with call script *
#-------------------------------------------------------------------
# ? by Woratana [woratana@hotmail.com]
# ? Thaiware RPG Maker Community
# ? Released on: 22/05/2008
# ? Version: 1.0
#=======================================================================
#==================================================================
# ** FEATURES **
#-----------------------------------------------------------------
# - Call script to save/load/delete any save slot
# - Compatible with most of the scripts that edited Scene_File
#==================================================================
# ** HOW TO USE **
#-----------------------------------------------------------------
# - To do a quick save, call script:
# $save.do(slot)
# For example: $save.do(1)
# * Script above will save in slot 1
#
# - To do a quick save on last slot that you use quick save, call script:
# $save.redo
#-----------------------------------------------------------------
# - To do a quick load, call script:
# $load.do(slot)
#
# - To do a quick load on last slot that you use quick load, call script:
# $load.redo
#-----------------------------------------------------------------
# - To do a quick delete save file, call script:
# $save.del(slot)
#-----------------------------------------------------------------
# +[ TIP ]+
# If you want to use value in variable for slot, type this for slot:
# $game_variables[variable_id]
# For example: $save.do ($game_variables[1])
#===========================================================================
#--------------------------
# ** START SETUP PART
#--------------------------
QUICK_LOAD_FADE_SCREEN = true # (true/false)
# Do you want screen to fade when using Quick Load?
#--------------------------
# ** END SETUP PART
#--------------------------
$worale = {} if $worale.nil?
$worale["QuickSave"] = true
#-------------------------------
# Quick Save
#-------------------------------
class Quick_Save
def do(slot = 0)
return if slot == 0
$game_system.last_qsave_slot = slot
save = Scene_File.new(false,false,false,1,slot)
end
def redo
save = Scene_File.new(false,false,false,1, $game_system.last_qsave_slot)
end
def del(slot = 0)
return if slot == 0
delete = Scene_File.new(false,false,false,3,slot)
end
end
$save = Quick_Save.new
#-------------------------------
# Quick Load
#-------------------------------
class Quick_Load
def do(slot = 0)
return if slot == 0
$game_system.last_qload_slot = slot
save = Scene_File.new(false,false,false,2,slot)
end
def redo
save = Scene_File.new(false,false,false,2, $game_system.last_qsave_slot)
end
end
$load = Quick_Load.new
#------------------------------------
# Game System: Store Variables
#------------------------------------
class Game_System
attr_accessor :last_qsave_slot, :last_qload_slot
alias wor_qsave_gamsys_ini initialize
def initialize
wor_qsave_gamsys_ini
@last_qsave_slot = 1
@last_qload_slot = 1
end
end
#------------------------------------
# Scene File: Save/Load/Delete File
#------------------------------------
class Scene_File < Scene_Base
alias wor_qsave_scefil_ini initialize
def initialize(saving, from_title, from_event, skip = 0, slot = 0)
filename = make_filename(slot - 1) if slot >= 0
if skip == 1 and slot > 0
file = File.open(filename, "wb")
write_save_data(file)
file.close
return
elsif skip == 2 and slot > 0
return if not FileTest.exist?(filename)
file = File.open(filename, "rb")
read_save_data(file)
file.close
$scene = Scene_Map.new
if QUICK_LOAD_FADE_SCREEN
RPG::BGM.fade(1)
Graphics.fadeout(1)
Graphics.wait(1)
end
@last_bgm.play
@last_bgs.play
elsif skip == 3 and slot > 0
File.delete(filename) if FileTest.exist?(filename)
else
wor_qsave_scefil_ini(saving, from_title, from_event)
end
end
end
(Steinigt mich, wenn das exklusiv für RRR war :/ )
-
Hi,
ich habe ein Problem mit dem Illumino Skript von hell:
Ich habe als erstes ein Common Event erstellt, das ein Bild über dem Spieler anzeigt,
sodass es dann so aussieht als ob man eine eingeschränkte Sichtweite hat.(Praktisch ein Bild mit nem Kreis in der mitte)
Das funktioniert auch, aber wenn ich jetzt auf einer Map ein LE per Illumino einsetzte verträgt sich das nicht mit dem anderen Bild.
Hoffe, dass ihr das so halbwegs verstanden habt.
MfG
-
Sehr gut, dass ist genau das, was ich brauche! Danke Herendil!
MfG
-
Endlich bin ich dahintergekommen, was die meisten Fehlermeldungen bedeuten:
Man muss einfach einen neuen Spielstand anlegen... dort funktioniert alles.
Naja, aufwendig.
-
Bräuchte Hilfe bei nem kleinen Condition-Script.. und zwar soll abgefragt werden, ob die Waffe mindestens 2 mal im Inventar vorhanden ist...
Wie müsste ich das machen?
-
ich weiß nicht obs hier rein passt aber hab da mal ne frage...
Wie kann man Schilde weglassen...sodass die auch bei ausrüstung nicht mehr zu sehen sind?
-
Wie bekomme ich es hin, dass es mehr Menüpunkte im Menü gibt?
Als Beispiel: Script Questlog und Script Monsteralbum und Script Erfolge
Es erscheint immer nur ein Menüpunkt, je nach Reihenfolge der Scripts. Die anderen müssen durch Items aufgerufen werden.
Ist es möglich alle 3 in das Menü zu packen?
~Das braucht erstmal kein eigenes Thema ;)
MfG, Colo
-
Hab ma wieder ne frage zum Scripten :/ und zwar wollt ich ma fragen obs möglich is bei commands den Namen abzufragen... z.B so:
@weap_array = []
w1 = "Schwert"
if $game_party.has_item?($data_weapons[10],true)
@weap_array.push(w1)
end
@command_window = Window_Command.new(160, @weap_array)
end
def update_command_selection
case @command_window.index
when "Schwert"
$game_actors[1].change_equip_by_id(0, 1)
...
ist das irgendwie möglich?
-
Frage:
Ich habe folgendes Skript zum Anzeigen von Zeit und Ort:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ? Play Time And Location Window - MRA_LocationPlayTimeWindow ? VX ?
#_/ ? Last Update: 2008/09/16 ?
#_/ ? Created by Mr. Anonymous ?
#_/ ? Creator's Blog: ?
#_/ ? http://mraprojects.wordpress.com ?
#_/----------------------------------------------------------------------------
#_/ This script adds a location and playtime window into the menu.
#_/============================================================================
#_/ Install: Insert above main.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#=============================================================================#
# ? Customization ? #
#=============================================================================#
module MRA
module LocationPlayTimeWindow
# ? Full Size Location and Play Time Windows Toggle ?
# This toggle allows you to enable/disable the full-size Location and Play
# Time windows that display the below-specified messages above the values.
# true = Full Sized windows in effect.
# false = Compact windows in effect.
FULL_SIZE_WINDOWS = false
# ? Use Combined PlatTime/Location Window ?
USE_COMBINED_WINDOW = false
# ? Show Time Window ?
SHOW_TIME = true
# ? Show Location Window ?
SHOW_LOCATION = true
# ? Location Window Text ?
LOC_TEXT = "Ort:"
# ? PlayTime Window Text ?
PT_TEXT = "Zeit gespielt:"
end
end
#==============================================================================
# ¦ Game_Map
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
# ? Open Global Variable
#--------------------------------------------------------------------------
attr_reader :map_id
#--------------------------------------------------------------------------
# ? Convert and Load Map Name
#--------------------------------------------------------------------------
def map_name
$map_name = load_data("Data/MapInfos.rvdata")
$map_name[@map_id].name
end
end
#==================================End Class===================================#
#==============================================================================
# ¦ Window_MapName
#------------------------------------------------------------------------------
# Create the window containing the current map's name.
#==============================================================================
if MRA::LocationPlayTimeWindow::USE_COMBINED_WINDOW == false
if MRA::LocationPlayTimeWindow::SHOW_LOCATION == true
#--------------------------------------------------------------------------
# ? Initialize
#--------------------------------------------------------------------------
class Window_Mapname < Window_Base
def initialize(x, y)
if MRA::LocationPlayTimeWindow::FULL_SIZE_WINDOWS == true
super(x, y + 6, 160, WLH + 64)
else
super(x, y + 92, 160, WLH + 22)
end
refresh
end
#--------------------------------------------------------------------------
# ? Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
if MRA::LocationPlayTimeWindow::FULL_SIZE_WINDOWS == true
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 120, 32, MRA::LocationPlayTimeWindow::LOC_TEXT)
self.contents.font.color = normal_color
self.contents.draw_text(4, 32, 120, 32, $game_map.map_name.to_s, 2)
else
self.contents.draw_text(4, -8, 120, 30, $game_map.map_name.to_s, 2)
end
end
end
end
end
#==================================End Class===================================#
#==============================================================================
# ¦ Window_Time
#------------------------------------------------------------------------------
# Create the window containing the running playtime.
#==============================================================================
if MRA::LocationPlayTimeWindow::USE_COMBINED_WINDOW == false
if MRA::LocationPlayTimeWindow::SHOW_TIME == true
#--------------------------------------------------------------------------
# ? Initialize
#--------------------------------------------------------------------------
class Window_Time < Window_Base
def initialize(x, y)
if MRA::LocationPlayTimeWindow::FULL_SIZE_WINDOWS == true
super(x, y + 2, 160, WLH + 64)
else
super(x, y + 46, 160, WLH + 22)
end
refresh
end
#--------------------------------------------------------------------------
# ? Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
if MRA::LocationPlayTimeWindow::FULL_SIZE_WINDOWS == true
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 120, 32, MRA::LocationPlayTimeWindow::PT_TEXT)
end
@total_seconds = Graphics.frame_count / Graphics.frame_rate
hours = @total_seconds / 60 / 60
minutes = @total_seconds / 60 % 60
seconds = @total_seconds % 60
text = sprintf("%02d:%02d:%02d", hours, minutes, seconds)
self.contents.font.color = normal_color
if MRA::LocationPlayTimeWindow::FULL_SIZE_WINDOWS == true
self.contents.draw_text(4, 32, 120, 32, text, 2)
else
self.contents.draw_text(4, -8, 120, 30, text, 2)
end
end
#--------------------------------------------------------------------------
# ? Update
#--------------------------------------------------------------------------
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_seconds
refresh
end
end
end
end
end
#==============================================================================
# ¦ Window_TimeMapName
#------------------------------------------------------------------------------
# Create the window containing the current play time and map's name.
#==============================================================================
if MRA::LocationPlayTimeWindow::USE_COMBINED_WINDOW == true
#--------------------------------------------------------------------------
# ? Initialize
#--------------------------------------------------------------------------
class Window_TimeMapname < Window_Base
def initialize(x, y)
super(x, y + 4, 160, WLH + 64)
refresh
end
#--------------------------------------------------------------------------
# ? Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(-2, -12, 120, 32, MRA::LocationPlayTimeWindow::LOC_TEXT)
self.contents.draw_text(-2, 18, 120, 32, MRA::LocationPlayTimeWindow::PT_TEXT)
self.contents.font.color = normal_color
self.contents.draw_text(4, 3, 120, 32, $game_map.map_name.to_s, 2)
@total_seconds = Graphics.frame_count / Graphics.frame_rate
hours = @total_seconds / 60 / 60
minutes = @total_seconds / 60 % 60
seconds = @total_seconds % 60
text = sprintf("%02d:%02d:%02d", hours, minutes, seconds)
self.contents.draw_text(4, 33, 120, 32, text, 2)
end
#--------------------------------------------------------------------------
# ? Update
#--------------------------------------------------------------------------
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_seconds
refresh
end
end
end
end
#==================================End Class===================================#
#==============================================================================
# ¦ Scene_Menu
#------------------------------------------------------------------------------
# Update Scene_Menu class to include the new windows.
#==============================================================================
#--------------------------------------------------------------------------
# ? Start Processing
#--------------------------------------------------------------------------
class Scene_Menu < Scene_Base
alias start_MRA_LocationPlayTimeWindow start
def start
if MRA::LocationPlayTimeWindow::USE_COMBINED_WINDOW == false
if MRA::LocationPlayTimeWindow::SHOW_TIME
@playtime_window = Window_Time.new(0, 270)
@playtime_window.openness = 0
@playtime_window.open
end
if MRA::LocationPlayTimeWindow::SHOW_LOCATION
@mapname_window = Window_Mapname.new(0, 178)
@mapname_window.openness = 0
@mapname_window.open
end
else
@timemapname_window = Window_TimeMapname.new(0, 270)
@timemapname_window.openness = 0
@timemapname_window.open
end
=begin
if $imported["PlaceMission"]
@info_window = Window_Information.new
@info_window.back_opacity = 160
@info_window.x = 160
@info_window.y = 264
end
=end
start_MRA_LocationPlayTimeWindow
end
#--------------------------------------------------------------------------
# ? Termination Processing
#--------------------------------------------------------------------------
alias terminate_MRA_LocationPlayTimeWindow terminate
def terminate
if MRA::LocationPlayTimeWindow::USE_COMBINED_WINDOW == false
if MRA::LocationPlayTimeWindow::SHOW_TIME
@playtime_window.dispose
end
if MRA::LocationPlayTimeWindow::SHOW_LOCATION
@mapname_window.dispose
end
else
@timemapname_window.dispose
end
#@info_window.dispose if @info_window != nil
terminate_MRA_LocationPlayTimeWindow
end
#--------------------------------------------------------------------------
# ? Frame Update
#--------------------------------------------------------------------------
alias update_MRA_LocationPlayTimeWindow update
def update
if MRA::LocationPlayTimeWindow::USE_COMBINED_WINDOW == false
if MRA::LocationPlayTimeWindow::SHOW_TIME
@playtime_window.update
end
if MRA::LocationPlayTimeWindow::SHOW_LOCATION
@mapname_window.update
end
else
@timemapname_window.update
end
#@info_window.update if @info_window != nil
update_MRA_LocationPlayTimeWindow
end
end
#==================================End Class===================================#
Nun tritt folgender Fehler auf, wenn ich im ersten Menü vor Spielbeginn auf "Fortsetzen" gehe. Dort erscheinen alle Speicherdaten zum Auswählen. Wenn ich nun wieder mit Esc zurück ins Vorherige Menü gehe, kommt folgender Fehler:
(http://i38.tinypic.com/2j35k7m.jpg)
-
Jo Leuts,
hab da nen Prob mit dem Script wo man die Lebensanzeigen beim Kaduki KS ändern kann.
und zwar zeigt er bei mir da einen Fehler an.
(http://yourpg.de/images/Fehler.jpg)
Dieser Fehler befindet sich dann in diesem Code
def name_bitmap(actor)
bitmap = Bitmap.new(100, 24)
bitmap.font.size = 16
bitmap.draw_text_f(0, 0, 100, 24, actor.name)
return bitmap
end
Und der Fehler trit in dieser Zeile auf bitmap.draw_text_f(0, 0, 100, 24, actor.name)
Ich hoffe ihr könnt mir da bitte irgendwie weiterhelfen.
MfG †-.-Dennvo-.-†
-
Ich besitze den FULL Tastatur Script, nur leider fehlt mir der Comment um abzufragen ob eine Taste X gedrückt bzw gehalten wird.
Außerdem fehlt mir der Credit. Wäre euch echt dankbar über diese beiden Hilfen!
Hier noch der Script.
Er ist in 2 Teile geteilt
Zum einen in eine Erweiterung zur Main
#==============================================================================
# ** Main
#------------------------------------------------------------------------------
# After defining each class, actual processing begins here.
#==============================================================================
unless $keybd
$keybd = Win32API.new 'user32.dll', 'keybd_event', ['i', 'i', 'l', 'l'], 'v'
$keybd.call 0xA4, 0, 0, 0
$keybd.call 13, 0, 0, 0
$keybd.call 13, 0, 2, 0
$keybd.call 0xA4, 0, 2, 0
end
$keybd = true
Und zum Anderen als Materials Zusatz:
class W32API
attr_reader :tasten #Der Hash der Tastennamen in Hexa-Code umwandelt
attr_reader :retasten #Der Hash der Hexa-Code in Tastennamen umwandelt
def initialize()
@key_push = Win32API.new('user32', "GetAsyncKeyState", 'i', 'i')
$key_press = Win32API.new('user32', "keybd_event", 'iiii', '')
@tasten = Hash.new(
#--------------------------Maus
"l mouse" => 0x01, #Linke Maustaste
"r mouse" => 0x02, #Rechte Maustaste
"m mouse" => 0x04, #Mittlere Maustaste
#--------------------------Special
"back" => 0x08, #Backspace
"tab" => 0x09, #Tabulator-Taste
"enter" => 0x0D, #Enter
"shift" => 0x10, #Eine der Shift-Tasten
"strg" => 0x11, #Alt Gr-Taste oder eine der Strg-Tasten
"alt" => 0x12, #Eine alt oder die Num-Block-Taste5 mit num lock
"umschalt" => 0x14, #Umschalttaste
"esc" => 0x1B, #Escape
"space" => 0x20, #Leertaste
#--------------------------Extra-Block
"bild oben" => 0x21,
"bild unten" => 0x22,
"ende" => 0x23,
"pos1" => 0x24,
#--------------------------Pfeil
"left" => 0x25,
"links" => 0x25, #-
"up" => 0x26,
"hoch" => 0x26, #-
"oben" => 0x26, #-
"right" => 0x27,
"rechts" => 0x27, #-
"down" => 0x28,
"unten" => 0x28, #-
#--------------------------Extra-Block
"snapshot" => 0x2C,
"einfg" => 0x2D,
"entf" => 0x2E,
#--------------------------Zahlen
"0" => 0x30,
"1" => 0x31,
"2" => 0x32,
"3" => 0x33,
"4" => 0x34,
"5" => 0x35,
"6" => 0x36,
"7" => 0x37,
"8" => 0x38,
"9" => 0x39,
#--------------------------Alphabet
"a" => 0x41,
"b" => 0x42,
"c" => 0x43,
"d" => 0x44,
"e" => 0x45,
"f" => 0x46,
"g" => 0x47,
"h" => 0x48,
"i" => 0x49,
"j" => 0x4A,
"k" => 0x4B,
"l" => 0x4C,
"m" => 0x4D,
"n" => 0x4E,
"o" => 0x4F,
"p" => 0x50,
"q" => 0x51,
"r" => 0x52,
"s" => 0x53,
"t" => 0x54,
"u" => 0x55,
"v" => 0x56,
"w" => 0x57,
"x" => 0x58,
"y" => 0x59,
"z" => 0x5A,
#--------------------------Special
"l windows" => 0x5B, #linke "Windows-Taste"
"r windows" => 0x5C, #rechte "Windows-Taste"
#--------------------------Num-Block
"num 0" => 0x60,
"num 1" => 0x61,
"num 2" => 0x62,
"num 3" => 0x63,
"num 4" => 0x64,
"num 5" => 0x65,
"num 6" => 0x66,
"num 7" => 0x67,
"num 8" => 0x68,
"num 9" => 0x69,
"num *" => 0x6A,
"num +" => 0x6B,
"num -" => 0x6D,
"num ," => 0x6E,
"num /" => 0x6F,
#--------------------------F-Zeichen
"F1" => 0x70,
"F2" => 0x71,
"F3" => 0x72,
"F4" => 0x73,
"F5" => 0x74,
"F6" => 0x75,
"F7" => 0x76,
"F8" => 0x77,
"F9" => 0x78,
"F10" => 0x79,
"F11" => 0x7A,
"F12" => 0x7B,
#--------------------------Num-Block
"num lock" => 0x90,
#--------------------------Extra-Block
"scroll" => 0x91,
#--------------------------Special
"l shift" => 0xA0,
"r shift" => 0xA1,
"l strg" => 0xA2,
"r strg" => 0xA3,
"l alt" => 0xA4,
"alt gr" => 0xA5,
#--------------------------Sonderzeichen
"ü" => 0xBA,
"+" => 0xBB,
"," => 0xBC,
"-" => 0xBD,
"." => 0xBE,
"#" => 0xBF,
"ö" => 0xC0,
#--------------------------Special
"menü" => 0xD5,
#--------------------------Sonderzeichen
"ß" => 0xDB,
"^" => 0xDC,
"´" => 0xDD,
"ä" => 0xDE,
"<" => 0xE2
)
@tasten = @tasten[1]
@retasten = @tasten.invert
@nmomw = 1
@nmoma = -1
end
#-----------------------------------------------------------------------------
####Rückgabe Wandelt einen String in die Zeichen um, die durch
# drücken der Shift-Taste herauskommen
####Parameter
#str :Der umzuwandelnde String
#-----------------------------------------------------------------------------
def shift_string(str)
str = str.tr(('a'..'z').to_a.join+'^1234567890ß´äöü+#<,.-',
('A'..'Z').to_a.join+'°!"§$%&/()=?`ÄÖÜ*\'>;:_')
return(str)
end
#-----------------------------------------------------------------------------
####Rückgabe Wandelt einen String in die Zeichen um, die durch
# drücken der Alt Gr-Taste herauskommen
####Parameter
#str :Der umzuwandelnde String
#-----------------------------------------------------------------------------
def altgr_string(str)
str = str.tr('237890ßqe+<m', '²³{[]}\@€~|µ')
return(str)
end
#-----------------------------------------------------------------------------
####Rückgabe True, wenn die Taste gerade angefangen wird zu drücken.
####Parameter
#taste :Der Name der zu überprüfenden Taste
#-----------------------------------------------------------------------------
def an?(taste)
if(@tasten[taste])
iff = @key_push.call(@tasten[taste])
if(iff < 0)
ret=true
else
ret=false
end
return(ret)
else
return(false)
end
end
#-----------------------------------------------------------------------------
####Rückgabe True, wenn die Taste gedrückt ist.
####Parameter
#taste :Der Name der zu überprüfenden Taste
#-----------------------------------------------------------------------------
def press?(taste)
if(@tasten[taste])
iff = @key_push.call(@tasten[taste])
if(iff != 0 and iff != 1)
ret=true
else
ret=false
end
return(ret)
else
return(false)
end
end
#-----------------------------------------------------------------------------
####Rückgabe True, wenn die Taste gedrückt ist.
####Parameter
#taste :Der Hexadezimale Code der zu überprüfenden Taste
#-----------------------------------------------------------------------------
def pressc?(taste)
if(@retasten[taste])
iff = @key_push.call(taste)
if(iff != 0 and iff != 1)
ret=true
else
ret=false
end
return(ret)
else
return(false)
end
end
#-----------------------------------------------------------------------------
#Drückt eine Taste Extrem kurz (Wird von anderen
# Scripten nicht erfasst, aber von Windows ;) )
####Parameter
#taste :Gibt die Taste an, die gedrückt werden soll
#-----------------------------------------------------------------------------
def keypress(taste)
keydown(taste)
keyup(taste)
end
#-----------------------------------------------------------------------------
#Drückt eine Taste ab jetzt
####Parameter
#taste :Gibt die Taste an, die gedrückt werden soll
#-----------------------------------------------------------------------------
def keydown(taste)
if(@tasten[taste])
$key_press.call(@tasten[taste], 0, 0x0, 0)
end
end
#-----------------------------------------------------------------------------
#Macht eine gedrückte Taste hoch
####Parameter
#taste :Gibt die Taste an, die gehoben werden soll
#-----------------------------------------------------------------------------
def keyup(taste)
if(@tasten[taste])
$key_press.call(@tasten[taste], 0, 0x2, 0)
end
end
end
$api = W32API.new
Vielen Dank im Voraus!
Saschb2b
-
So habe mein Prob nun geschaft selber zu lösen.
Für die die es Interesiert und das selbe Problem haben hier die Lösung.
Geht einfach in die Zeile 144 und nimmt dann ersetzt diese dann durch diese Zeile hier
bitmap.draw_text(0, 0, 100, 24, actor.name)
Im Grunde musste man einfach nur das _f hinter dem text wegnehmen, aber naja.
MfG †-.-Dennvo-.-†
-
Hey Ho Community..
Hab ein Problem mit Woratanas Minimap script...
Funktioneirt fast alles wunderbar...
Das einzige was blöd ist, es sollte eigentlich events auf der Map anzeigen könne, tut es aber irgendwie nit :/
Kann mir das jemand erklärn? hier das Script:
#==============================================================================
# ** MiniMap V1.0
# MiniMap.rb von Woratana (04.10.2008)
#------------------------------------------------------------------------------
# http://www.rpg-studio.de/scriptdb/node/178
# http://www.rpg-studio.de/forum/index.php?page=Thread&threadID=31236
# http://www.rpgrevolution.com/forums/?showtopic=17207
#==============================================================================
#===============================================================
# ? [VX] ? MiniMap ? ?
# * Plug N Play Minimap (Don't need image~) *
#--------------------------------------------------------------
# ? by Woratana [woratana@hotmail.com]
# ? Thaiware RPG Maker Community
# ? Released on: 09/06/2008
# ? Version: 1.0
#--------------------------------------------------------------
# ? Credit: KGC for XP MiniMap Script,
# this script can't be done without his MiniMap.
#--------------------------------------------------------------
module MiniMap
#===========================================================================
# [START] MINIMAP SCRIPT SETUP PART
#---------------------------------------------------------------------------
SWITCH_NO_MINIMAP = 10 # Turn ON this switch to NOT SHOW minimap
MAP_RECT = [410, 20, 150, 150] # Minimap size and position
# [X, Y, Width, Height]
# You can change it in game, by call script:
# $game_system.minimap = [X, Y, Width, Height]
MAP_Z = 0 # Minimap's Z-coordinate
# Increase this number if there is problem that minimap show below some objects.
GRID_SIZE = 7 # Minimap's grid size. Recommend to use more than 3.
MINIMAP_BORDER_COLOR = Color.new(0, 0, 255, 160) # Minimap's border color
# Color.new(Red, Green, Blue, Opacity)
MINIMAP_BORDER_SIZE = 2 # Minimap's border size
FOREGROUND_COLOR = Color.new(224, 224, 255, 160) # Passable tile color
BACKGROUND_COLOR = Color.new(0, 0, 0, 160) # Unpassable tile color
USE_OUTLINE_PLAYER = true # Draw outline around player in minimap?
PLAYER_OUTLINE_COLOR = Color.new(0, 0, 0, 192) # Player Outline color
USE_OUTLINE_EVENT = true # Draw outline around events in minimap?
EVENT_OUTLINE_COLOR = Color.new(0, 255, 255, 192) # Player Outline color
PLAYER_COLOR = Color.new(255, 0, 0, 192) # Player color
#---------------------------------------------------------------------------
OBJECT_COLOR = {} # Don't change or delete this line!
#===============================================================
# * SETUP EVENT KEYWORD & COLOR
#---------------------------------------------------------------
# ** Template:
# OBJECT_COLOR['keyword'] = Color.new(Red, Green, Blue, Opacity)
#-------------------------------------------------------------
# * 'keyword': Word you want to put in event's comment to show this color
# ** Note: 'keyword' is CASE SENSITIVE!
# * Color.new(...): Color you want
# You can put between 0 - 255 in each argument (Red, Green, Blue, Opacity)
#-------------------------------------------------------------
OBJECT_COLOR['npc'] = Color.new(30,144,255,160)
OBJECT_COLOR['treasure'] = Color.new(0,255,255,160)
OBJECT_COLOR['enemy'] = Color.new(139,35,35,160)
OBJECT_COLOR['merchant'] = Color.new(255,255,0,160)
#===========================================================================
# * [OPTIONAL] TAGS:
#---------------------------------------------------------------------------
# Change keyword for disable minimap & keyword for show event on minimap~
#-----------------------------------------------------------------------
TAG_NO_MINIMAP = '[NOMAP]' # Tag for disable minimap
TAG_EVENT = 'MMEV' # Tag for show event on minimap
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# [END] MINIMAP SCRIPT SETUP PART
#===========================================================================
def self.refresh
if $scene.is_a?(Scene_Map)
$scene.spriteset.minimap.refresh
end
end
def self.update_object
if $scene.is_a?(Scene_Map)
$scene.spriteset.minimap.update_object_list
end
end
end
#==============================================================================
# ¦ RPG::MapInfo
#==============================================================================
class RPG::MapInfo
def name
return @name.gsub(/\[.*\]/) { }
end
def original_name
return @name
end
def show_minimap?
return !@name.include?(MiniMap::TAG_NO_MINIMAP)
end
end
#==============================================================================
# ¦ Game_System
#==============================================================================
class Game_System
attr_accessor :minimap
alias wora_minimap_gamsys_ini initialize
def initialize
wora_minimap_gamsys_ini
@minimap = MiniMap::MAP_RECT
end
def show_minimap
return !$game_switches[MiniMap::SWITCH_NO_MINIMAP]
end
end
#==============================================================================
# ¦ Game_Map
#==============================================================================
class Game_Map
alias wora_minimap_gammap_setup setup
def setup(map_id)
wora_minimap_gammap_setup(map_id)
@db_info = load_data('Data/MapInfos.rvdata') if @db_info.nil?
@map_info = @db_info[map_id]
end
def show_minimap?
return @map_info.show_minimap?
end
end
#==============================================================================
# ¦ Game_Event
#==============================================================================
class Game_Event < Game_Character
def mm_comment?(comment, return_comment = false )
if !@list.nil?
for i in 0...@list.size - 1
next if @list.code != 108
if @list.parameters[0].include?(comment)
return @list.parameters[0] if return_comment
return true
end
end
end
return '' if return_comment
return false
end
end
#==============================================================================
# ¦ Game_MiniMap
#------------------------------------------------------------------------------
class Game_MiniMap
def initialize(tilemap)
@tilemap = tilemap
refresh
end
def dispose
@border.bitmap.dispose
@border.dispose
@map_sprite.bitmap.dispose
@map_sprite.dispose
@object_sprite.bitmap.dispose
@object_sprite.dispose
@position_sprite.bitmap.dispose
@position_sprite.dispose
end
def visible
return @map_sprite.visible
end
def visible=(value)
@map_sprite.visible = value
@object_sprite.visible = value
@position_sprite.visible = value
@border.visible = value
end
def refresh
@mmr = $game_system.minimap
map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3])
grid_size = [MiniMap::GRID_SIZE, 1].max
@x = 0
@y = 0
@size = [map_rect.width / grid_size, map_rect.height / grid_size]
@border = Sprite.new
@border.x = map_rect.x - MiniMap::MINIMAP_BORDER_SIZE
@border.y = map_rect.y - MiniMap::MINIMAP_BORDER_SIZE
b_width = map_rect.width + (MiniMap::MINIMAP_BORDER_SIZE * 2)
b_height = map_rect.height + (MiniMap::MINIMAP_BORDER_SIZE * 2)
@border.bitmap = Bitmap.new(b_width, b_height)
@border.bitmap.fill_rect(@border.bitmap.rect, MiniMap::MINIMAP_BORDER_COLOR)
@border.bitmap.clear_rect(MiniMap::MINIMAP_BORDER_SIZE, MiniMap::MINIMAP_BORDER_SIZE,
@border.bitmap.width - (MiniMap::MINIMAP_BORDER_SIZE * 2),
@border.bitmap.height - (MiniMap::MINIMAP_BORDER_SIZE * 2))
@map_sprite = Sprite.new
@map_sprite.x = map_rect.x
@map_sprite.y = map_rect.y
@map_sprite.z = MiniMap::MAP_Z
bitmap_width = $game_map.width * grid_size + map_rect.width
bitmap_height = $game_map.height * grid_size + map_rect.height
@map_sprite.bitmap = Bitmap.new(bitmap_width, bitmap_height)
@map_sprite.src_rect = map_rect
@object_sprite = Sprite.new
@object_sprite.x = map_rect.x
@object_sprite.y = map_rect.y
@object_sprite.z = MiniMap::MAP_Z + 1
@object_sprite.bitmap = Bitmap.new(bitmap_width, bitmap_height)
@object_sprite.src_rect = map_rect
@position_sprite = Sprite_Base.new
@position_sprite.x = map_rect.x + @size[0] / 2 * grid_size
@position_sprite.y = map_rect.y + @size[1] / 2 * grid_size
@position_sprite.z = MiniMap::MAP_Z + 2
bitmap = Bitmap.new(grid_size, grid_size)
# Player's Outline
if MiniMap::USE_OUTLINE_PLAYER and MiniMap::GRID_SIZE >= 3
bitmap.fill_rect(bitmap.rect, MiniMap::PLAYER_OUTLINE_COLOR)
brect = Rect.new(bitmap.rect.x + 1, bitmap.rect.y + 1, bitmap.rect.width - 2,
bitmap.rect.height - 2)
bitmap.clear_rect(brect)
else
brect = bitmap.rect
end
bitmap.fill_rect(brect, MiniMap::PLAYER_COLOR)
@position_sprite.bitmap = bitmap
draw_map
update_object_list
draw_object
update_position
end
def draw_map
bitmap = @map_sprite.bitmap
bitmap.fill_rect(bitmap.rect, MiniMap::BACKGROUND_COLOR)
map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3])
grid_size = [MiniMap::GRID_SIZE, 1].max
$game_map.width.times do |i|
$game_map.height.times do |j|
if !$game_map.passable?(i, j)
next
end
rect = Rect.new(map_rect.width / 2 + grid_size * i,
map_rect.height / 2 + grid_size * j,
grid_size, grid_size)
if grid_size >= 3
if !$game_map.passable?(i, j)
rect.height -= 1
rect.x += 1
rect.width -= 1
rect.width -= 1
rect.y += 1
rect.height -= 1
end
end
bitmap.fill_rect(rect, MiniMap::FOREGROUND_COLOR)
end
end
end
def update_object_list
@object_list = {}
$game_map.events.values.each do |e|
comment = e.mm_comment?(MiniMap::TAG_EVENT, true)
if comment != ''
type = comment.gsub(/#{MiniMap::TAG_EVENT}/){}.gsub(/\s+/){}
@object_list[type] = [] if @object_list[type].nil?
@object_list[type] << e
end
end
end
def draw_object
bitmap = @object_sprite.bitmap
bitmap.clear
map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3])
grid_size = [MiniMap::GRID_SIZE, 1].max
rect = Rect.new(0, 0, grid_size, grid_size)
mw = map_rect.width / 2
mh = map_rect.height / 2
@object_list.each do |key, events|
color = MiniMap::OBJECT_COLOR[key]
next if events.nil? or color.nil?
events.each do |obj|
if !obj.character_name.empty?
rect.x = mw + obj.real_x * grid_size / 256
rect.y = mh + obj.real_y * grid_size / 256
# Event's Outline
if MiniMap::USE_OUTLINE_EVENT and MiniMap::GRID_SIZE >= 3
bitmap.fill_rect(rect, MiniMap::EVENT_OUTLINE_COLOR)
brect = Rect.new(rect.x + 1, rect.y + 1, rect.width - 2,
rect.height - 2)
bitmap.clear_rect(brect)
else
brect = bitmap.rect
end
bitmap.fill_rect(brect, color)
end
end
end
end
def update
if @mmr != $game_system.minimap
dispose
refresh
end
draw_object
update_position
if @map_sprite.visible
@map_sprite.update
@object_sprite.update
@position_sprite.update
end
end
def update_position
map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3])
grid_size = [MiniMap::GRID_SIZE, 1].max
sx = $game_player.real_x * grid_size / 256
sy = $game_player.real_y * grid_size / 256
@map_sprite.src_rect.x = sx
@map_sprite.src_rect.y = sy
@object_sprite.src_rect.x = sx
@object_sprite.src_rect.y = sy
end
end
#==============================================================================
# ¦ Spriteset_Map
#------------------------------------------------------------------------------
class Spriteset_Map
attr_reader :minimap
alias wora_minimap_sprsetmap_ini initialize
alias wora_minimap_sprsetmap_dis dispose
alias wora_minimap_sprsetmap_upd update
def initialize
wora_minimap_sprsetmap_ini
if $game_map.show_minimap?
@minimap = Game_MiniMap.new(@tilemap)
$game_system.show_minimap = true if $game_system.show_minimap.nil?
@minimap.visible = $game_system.show_minimap
end
end
def dispose
@minimap.dispose if !@minimap.nil?
wora_minimap_sprsetmap_dis
end
def update
if !@minimap.nil?
if $game_system.show_minimap
@minimap.visible = true
@minimap.update
else
@minimap.visible = false
end
end
wora_minimap_sprsetmap_upd
end
end
#==============================================================================
# ¦ Scene_Map
#------------------------------------------------------------------------------
class Scene_Map < Scene_Base
attr_reader :spriteset
end
-
Hallo,
verstehe nicht, wie das mit den Questmaps in diesem Questlog-Skript funktioniert:
#==============================================================================
# Simple Quest-Log
#
# Version : 1.3a - 04.04.08
# Created by : hellMinor
# Do NOT redistribute without my permission
# Description : A simple script for a Quest-Log
#
#==============================================================================
#==============================================================================
# F.A.Q.
#==============================================================================
# The Global Questlog-Name is $questlog
# To open the Questlog from the menu just do $scene = Scene_Questlog.new
# To open the Questlog from an event $scene = Scene_Questlog.new(false)
#
# To add a quest make a new call script with this Template :
# $questlog.addQuest("Unique ID","Quest Title","Quest Description","State")
#
# To update a Quest description make a new call script with this Template :
# $questlog.updateQuest("unique ID","Quest Description","State")
#
# To move a Quest to Completed Quests make new call script with this Template :
# $questlog.completeQuest("Unique ID")
#
# To delete a Quest from the Active-Questlog make a call script with this
# Template :
# $questlog.deleteQuest("Unique ID")
#
# You can get the current state of a Quest with this Template :
# $questlog.getQuestState("Unique ID")
# This may be useful in a conditional branch if you want to react with a
# special Quest-State
#
# If u want to add a Questmap, create a folder named Questmaps in your
# Graphics folder. The name of the Questmap must be the same as the Quest
# in the Game. Be sure that you set the correct MAP_FORMAT.
# A Quest-Map should have a size of 265*200 px !
# I.E. : If your Quest is named QuestYXZ , the picture in the Questmap folder
# has to be QuestYXZ.png if your map is a .png
#==============================================================================
# Setup
#==============================================================================
QUESTLOGNAME = "Questlog" # Questlog Menu name
QUEST_MENU_ITEM_1 = "Active Quests" # Active Quest name
QUEST_MENU_ITEM_2 = "Completed Quests" # Completed Quest name
SIZE_VAR = 20 # Character Size
MAP_FORMAT = "png" # Quest-Map Ending
#==============================================================================
class Questlog
#==============================================================================
def addQuest(id,header,description,state = "")
$activelog << [id,header,description,state]
end
#------------------------------------------------------------------------------
def updateQuest(id,description,state = "")
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$activelog[i][2] = description
$activelog[i][3] = state
break
end
end
end
#------------------------------------------------------------------------------
def completeQuest(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$completedlog << $activelog[i]
$activelog.delete_at(i)
break
end
end
end
#------------------------------------------------------------------------------
def deleteQuest(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$activelog.delete_at(i)
break
end
end
end
#------------------------------------------------------------------------------
def getQuestState(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
return $activelog[i][3]
break
end
end
end
end
#==============================================================================
class Scene_Questlog < Scene_Base
#==============================================================================
def initialize(from_menu = true)
@from_menu = from_menu
end
def start
super
create_menu_background
@help_window = Window_Help.new
@help_window.set_text(QUESTLOGNAME,1)
s1 = QUEST_MENU_ITEM_1
s2 = QUEST_MENU_ITEM_2
@select_window = Window_Command.new(544,[s1,s2],2,1)
@select_window.y = 55
@select_window.active = true
end
#------------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@help_window.dispose
@select_window.dispose
end
#------------------------------------------------------------------------------
def kill_questwindows
@quest_window.dispose
end
#------------------------------------------------------------------------------
def return_scene
if @from_menu
$scene = Scene_Menu.new
else
$scene = Scene_Map.new
end
end
#------------------------------------------------------------------------------
def update
super
update_menu_background
@help_window.update
if @select_window.active
@select_window.update
update_select_selection
elsif @quest_window.active
@quest_window.update
update_quest_selection
end
end
#------------------------------------------------------------------------------
def update_select_selection
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
case @select_window.index
when 0
$oldlog = false
@quest_window = Window_Quest.new(0,110,272,(24*11)+42)
@select_window.active = false
@quest_window.active = true
when 1
$oldlog = true
@quest_window = Window_Quest.new(0,110,272,(24*11)+42)
@select_window.active = false
@quest_window.active = true
end
end
end
#------------------------------------------------------------------------------
def update_quest_selection
if Input.trigger?(Input::B)
Sound.play_cancel
kill_questwindows
@select_window.active = true
end
end
end
#==============================================================================
class Scene_Title < Scene_Base
#==============================================================================
alias create_game_objects_additions create_game_objects
def create_game_objects
create_game_objects_additions
$questlog = Questlog.new
$activelog = Array.new
$completedlog = Array.new
end
end
#==============================================================================
class Window_Help < Window_Base
#==============================================================================
def initialize(x = 0,y = 0, width = 544, height = WLH+32)
super(x, y, width, height)
end
end
#==============================================================================
class Window_Description < Window_Base
#==============================================================================
def initialize(x = 0,y = 0, width = 544, height = WLH+32)
super(x, y, width, height)
@text = nil
@contents_x = 0
@contents_y = 0
@line_count = 0 # Line count drawn up until now
update
end
#------------------------------------------------------------------------------
def new_line
@contents_x = 0
@contents_y += WLH
@line_count += 1
@line_show_fast = false
end
#------------------------------------------------------------------------------
def finish_message
@text = nil
@line_count = 0
@contents_x = 0
@contents_y = 0
end
#------------------------------------------------------------------------------
def write_text(str)
if str != nil || str != ""
create_contents
update_msg(str)
end
end
#------------------------------------------------------------------------------
def update_msg(str)
str.each_line{|str2|iterator(str2)}
finish_message
end
#------------------------------------------------------------------------------
def iterator(str2)
contents.font.size = SIZE_VAR
contents.draw_text(@contents_x, @contents_y, str2.size*40, WLH, str2.delete("\n"))
c_width = contents.text_size(str2).width
@contents_x += c_width
new_line
end
end
#==============================================================================
class Window_Quest < Window_Selectable
#==============================================================================
def initialize(x, y, width, height)
super(x, y, width, height)
@column_max = 1
self.index = 0
@quest_helper = Window_Description.new(271,110,273,(24*11)+42)
refresh
end
#------------------------------------------------------------------------------
def refresh
@data = []
if !$oldlog
for i in (0..$activelog.size-1)
@data.push($activelog[i])
end
else
for i in (0..$completedlog.size-1)
@data.push($completedlog[i])
end
end
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#------------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
item = @data[index][1]
if item != nil
rect.width -= 4
self.contents.draw_text(rect.x, rect.y, 172, WLH, item)
end
end
#------------------------------------------------------------------------------
alias update_addition update
def update
update_addition
update_description(@index)
update_selection
end
#------------------------------------------------------------------------------
def update_selection
if Input.trigger?(Input::B)
Sound.play_cancel
@quest_helper.dispose
if @quest_map != nil
@quest_map_bitmap.bitmap.dispose
@quest_map_bitmap.dispose
@quest_map.dispose
@quest_map_viewport.dispose
@quest_map = nil
end
end
end
#------------------------------------------------------------------------------
def update_description(id)
if defined?(@data[id][2])
@quest_helper.write_text(@data[id][2])
if @quest_map == nil
if Cache.questmaps(@data[id][1]).is_a?(Bitmap)
self.height /= 3
@quest_map = Window_Description.new(0,210,272,(24*7)+38)
@quest_map_bitmap = Sprite.new
@quest_map_viewport = Viewport.new(3,213,268,(24*7)+35)
@quest_map_bitmap.viewport = @quest_map_viewport
@quest_map_bitmap.bitmap = Cache.questmaps(@data[id][1])
@quest_map_bitmap.viewport.z = 150
end
else
if Cache.questmaps(@data[id][1]).is_a?(Bitmap)
@quest_map_bitmap.bitmap = Cache.questmaps(@data[id][1])
else
self.height *= 3
@quest_map_bitmap.bitmap.dispose
@quest_map_bitmap.dispose
@quest_map.dispose
@quest_map_viewport.dispose
@quest_map = nil
end
end
end
end
end
#==============================================================================
class Scene_File < Scene_Base
#==============================================================================
alias write_save_data_adds write_save_data
def write_save_data(file)
write_save_data_adds(file)
Marshal.dump($activelog, file)
Marshal.dump($completedlog, file)
Marshal.dump($questlog, file)
end
alias read_save_data_adds read_save_data
def read_save_data(file)
read_save_data_adds(file)
$activelog = Marshal.load(file)
$completedlog = Marshal.load(file)
$questlog = Marshal.load(file)
end
end
#==============================================================================
module Cache
#==============================================================================
def self.questmaps(filename)
begin
load_bitmap("Graphics/Questmaps/", filename)
rescue
return nil
end
end
end
end
Habe alles genau so gemacht, wie es dort steht.
Ich habe den Questmaps-Ordner unter Graphics.
Ich habe ein Bild eingefügt, dass den selben Namen hat, wie die Quest. (z.B. heisst es bei mir: "Plage", die Questmap heisst dann "Plage.png")
Ich habe auch die Grösse der Map ganz genau auf 265 x 200 gebracht!
Trotzdem wird nichts angezeigt (ich weiss ja noch nicht mal, wo es angezeigt wird)!
Was mache ich falsch?
Dazu kommt noch ein anderes Problem (unabhängig vom ersten):
(http://i35.tinypic.com/2jb8y36.jpg)
Das Skript dort ist das Sidetext-Skript, welches einen Text am Rand anzeigen soll.
Das Event ist ein Parallel Process und soll nach Ablauf der Zeit, den Text anzeigen lassen, jedoch passiert gar nichts. (es kommt keine Fehlermeldung, es passiert einfach nur nichts).
Was ist hier falsch?
Das einzigste Skript, was daran beteiligt sein könnte, ist das mit den Map-Namen. Habe es mit Cut entfernt und erneut probiert... nichts passiert.
Habe darauf noch probiert ein Player Touch Event einzufügen, dass nur den Call Skript Befehl ausführt: Nichts passiert.
Hier noch das Skript:
#==============================================================================
# ** [STR14] Sidetext (von star) (Version 0.7)
#------------------------------------------------------------------------------
# Ermöglicht zusätzlichen Text an der linken Seite anzuzeigen.
#==============================================================================
if false
# Das folgenden wird in ein Call Skript geschrieben
s = $game_temp.sidetext
i = s.index(nil)
i = s.size if (i == nil)
t = "Sidetext" # Text, der angezeigt werden soll
f = true # Buchstaben haben Rand? (aus = false)
w = 120 # Anzeigedauer (in Frames)
c = Color.new(64,32,128) # Farbe des Randes (rot, grün, blau)
s[i] = Sprite_Sidetext.new(t,f,w,c)
#
end
#==============================================================================
# ¦ Sprite_Sidetext
#==============================================================================
class Sprite_Sidetext < Sprite
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def initialize(text, frame = false, wait = 120, c = Color.new(64,32,128))
super()
self.x = 16
num = $game_temp.sidetext.index(nil)
num = $game_temp.sidetext.size if (num == nil)
y = 80 + (num * 24)
self.y = y
self.z = 200
bitmap = Bitmap.new(32, 24)
w = bitmap.text_size(text).width
bitmap.dispose
bitmap = Bitmap.new(w, 24)
if frame
bitmap.draw_text_f(0, 0, w, 24, text, 0, c)
else
bitmap.draw_text(0, 0, w, 24, text)
end
self.bitmap = bitmap
self.opacity = 0
@wait = wait
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
if @wait > 0
self.opacity += 24
return if self.opacity != 255
@wait -= 1
else
self.x += 4
self.opacity -= 8
dispose if self.opacity == 0
end
end
end
#==============================================================================
# ¦ Game_Temp
#==============================================================================
class Game_Temp
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_accessor :sidetext
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias initialize_str14 initialize
def initialize
initialize_str14
@sidetext = []
end
end
#==============================================================================
# ¦ Spriteset_Map
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# ? S???????
#--------------------------------------------------------------------------
def create_sidetext
$game_temp.sidetext = []
end
#--------------------------------------------------------------------------
# ? S???????
#--------------------------------------------------------------------------
def dispose_sidetext
for i in 0...$game_temp.sidetext.size
$game_temp.sidetext[i].dispose if $game_temp.sidetext[i] != nil
end
$game_temp.sidetext = []
end
#--------------------------------------------------------------------------
# ? S???????
#--------------------------------------------------------------------------
def update_sidetext
for i in 0...$game_temp.sidetext.size
if $game_temp.sidetext[i] != nil
$game_temp.sidetext[i].update
if $game_temp.sidetext[i].disposed?
$game_temp.sidetext[i] = nil
end
end
end
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
alias create_parallax_str14 create_parallax
def create_parallax
create_parallax_str14
create_sidetext
end
alias dispose_str14 dispose
def dispose
dispose_sidetext
dispose_str14
end
alias update_str14 update
def update
update_str14
update_sidetext
end
end
#==============================================================================
# ¦ Spriteset_Battle
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# ? S???????
#--------------------------------------------------------------------------
def create_sidetext
$game_temp.sidetext = []
end
#--------------------------------------------------------------------------
# ? S???????
#--------------------------------------------------------------------------
def dispose_sidetext
for i in 0...$game_temp.sidetext.size
$game_temp.sidetext[i].dispose if $game_temp.sidetext[i] != nil
end
$game_temp.sidetext = []
end
#--------------------------------------------------------------------------
# ? S???????
#--------------------------------------------------------------------------
def update_sidetext
for i in 0...$game_temp.sidetext.size
if $game_temp.sidetext[i] != nil
$game_temp.sidetext[i].update
if $game_temp.sidetext[i].disposed?
$game_temp.sidetext[i] = nil
end
end
end
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
alias create_battleback_str14 create_battleback
def create_battleback
create_battleback_str14
create_sidetext
end
alias dispose_str14 dispose
def dispose
dispose_sidetext
dispose_str14
end
alias update_str14 update
def update
update_str14
update_sidetext
end
end
#==============================================================================
# ¦ Bitmap
#==============================================================================
class Bitmap
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def draw_text_f(x, y, width, height, str, align = 0, color = Color.new(64,32,128))
shadow = self.font.shadow
b_color = self.font.color.dup
font.shadow = false
font.color = color
draw_text(x + 1, y, width, height, str, align)
draw_text(x - 1, y, width, height, str, align)
draw_text(x, y + 1, width, height, str, align)
draw_text(x, y - 1, width, height, str, align)
font.color = b_color
draw_text(x, y, width, height, str, align)
font.shadow = shadow
end
def draw_text_f_rect(r, str, align = 0, color = Color.new(64,32,128))
draw_text_f(r.x, r.y, r.width, r.height, str, align = 0, color)
end
end
-
Kenne mich mit Scripts absolut 0 aus und bin froh wen sie funtionieren (muss mir mal C++ angucken)
Habe ein Problem in diesem Minimap script er zeigt mir da einen Fehler in Zeile 267 an
das wäre dieser Teil hier:
def update_object_list
@object_list = {}
$game_map.events.values.each do |e|
comment = e.mm_comment?(MiniMap::TAG_EVENT, true)
if comment != ''
type = comment.gsub(/#{MiniMap::TAG_EVENT}/){}.gsub(/\s+/){}
@object_list[type] = [] if @object_list[type].nil?
@object_list[type] << e
end
end
end
def draw_object
bitmap = @object_sprite.bitmap
bitmap.clear
map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3])
grid_size = [MiniMap::GRID_SIZE, 1].max
rect = Rect.new(0, 0, grid_size, grid_size)
mw = map_rect.width / 2
mh = map_rect.height / 2
Startbildschirm kommt und dan kommt wen ich auf neues spiel gehe diese Fehlermeldung:
Script 'Minimap' line 267: NoMethodError occurred
undefined method `mm_comment?' for <#Game_Event:0x174d0a8>
hier nochmal das komplette script
#==============================================================================
# ** MiniMap V1.0
# MiniMap.rb von Woratana (04.10.2008)
#------------------------------------------------------------------------------
# http://www.rpg-studio.de/scriptdb/node/178
# http://www.rpg-studio.de/forum/index.php?page=Thread&threadID=31236
# http://www.rpgrevolution.com/forums/?showtopic=17207
#==============================================================================
#===============================================================
# ? [VX] ? MiniMap ? ?
# * Plug N Play Minimap (Don't need image~) *
#--------------------------------------------------------------
# ? by Woratana [woratana@hotmail.com]
# ? Thaiware RPG Maker Community
# ? Released on: 09/06/2008
# ? Version: 1.0
#--------------------------------------------------------------
# ? Credit: KGC for XP MiniMap Script,
# this script can't be done without his MiniMap.
#--------------------------------------------------------------
module MiniMap
#===========================================================================
# [START] MINIMAP SCRIPT SETUP PART
#---------------------------------------------------------------------------
SWITCH_NO_MINIMAP = 10 # Turn ON this switch to NOT SHOW minimap
MAP_RECT = [410, 20, 150, 150] # Minimap size and position
# [X, Y, Width, Height]
# You can change it in game, by call script:
# $game_system.minimap = [X, Y, Width, Height]
MAP_Z = 0 # Minimap's Z-coordinate
# Increase this number if there is problem that minimap show below some objects.
GRID_SIZE = 7 # Minimap's grid size. Recommend to use more than 3.
MINIMAP_BORDER_COLOR = Color.new(0, 0, 255, 160) # Minimap's border color
# Color.new(Red, Green, Blue, Opacity)
MINIMAP_BORDER_SIZE = 2 # Minimap's border size
FOREGROUND_COLOR = Color.new(224, 224, 255, 160) # Passable tile color
BACKGROUND_COLOR = Color.new(0, 0, 0, 160) # Unpassable tile color
USE_OUTLINE_PLAYER = true # Draw outline around player in minimap?
PLAYER_OUTLINE_COLOR = Color.new(0, 0, 0, 192) # Player Outline color
USE_OUTLINE_EVENT = true # Draw outline around events in minimap?
EVENT_OUTLINE_COLOR = Color.new(0, 255, 255, 192) # Player Outline color
PLAYER_COLOR = Color.new(255, 0, 0, 192) # Player color
#---------------------------------------------------------------------------
OBJECT_COLOR = {} # Don't change or delete this line!
#===============================================================
# * SETUP EVENT KEYWORD & COLOR
#---------------------------------------------------------------
# ** Template:
# OBJECT_COLOR['keyword'] = Color.new(Red, Green, Blue, Opacity)
#-------------------------------------------------------------
# * 'keyword': Word you want to put in event's comment to show this color
# ** Note: 'keyword' is CASE SENSITIVE!
# * Color.new(...): Color you want
# You can put between 0 - 255 in each argument (Red, Green, Blue, Opacity)
#-------------------------------------------------------------
OBJECT_COLOR['npc'] = Color.new(30,144,255,160)
OBJECT_COLOR['treasure'] = Color.new(0,255,255,160)
OBJECT_COLOR['enemy'] = Color.new(139,35,35,160)
OBJECT_COLOR['merchant'] = Color.new(255,255,0,160)
#===========================================================================
# * [OPTIONAL] TAGS:
#---------------------------------------------------------------------------
# Change keyword for disable minimap & keyword for show event on minimap~
#-----------------------------------------------------------------------
TAG_NO_MINIMAP = '[NOMAP]' # Tag for disable minimap
TAG_EVENT = 'MMEV' # Tag for show event on minimap
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# [END] MINIMAP SCRIPT SETUP PART
#===========================================================================
def self.refresh
if $scene.is_a?(Scene_Map)
$scene.spriteset.minimap.refresh
end
end
def self.update_object
if $scene.is_a?(Scene_Map)
$scene.spriteset.minimap.update_object_list
end
end
end
#==============================================================================
# ¦ RPG::MapInfo
#==============================================================================
class RPG::MapInfo
def name
return @name.gsub(/\[.*\]/) { }
end
def original_name
return @name
end
def show_minimap?
return !@name.include?(MiniMap::TAG_NO_MINIMAP)
end
end
#==============================================================================
# ¦ Game_System
#==============================================================================
class Game_System
attr_accessor :minimap
alias wora_minimap_gamsys_ini initialize
def initialize
wora_minimap_gamsys_ini
@minimap = MiniMap::MAP_RECT
end
def show_minimap
return !$game_switches[MiniMap::SWITCH_NO_MINIMAP]
end
end
#==============================================================================
# ¦ Game_Map
#==============================================================================
class Game_Map
alias wora_minimap_gammap_setup setup
def setup(map_id)
wora_minimap_gammap_setup(map_id)
@db_info = load_data('Data/MapInfos.rvdata') if @db_info.nil?
@map_info = @db_info[map_id]
end
def show_minimap?
return @map_info.show_minimap?
end
end
#==============================================================================
# ¦ Game_MiniMap
#------------------------------------------------------------------------------
class Game_MiniMap
def initialize(tilemap)
@tilemap = tilemap
refresh
end
def dispose
@border.bitmap.dispose
@border.dispose
@map_sprite.bitmap.dispose
@map_sprite.dispose
@object_sprite.bitmap.dispose
@object_sprite.dispose
@position_sprite.bitmap.dispose
@position_sprite.dispose
end
def visible
return @map_sprite.visible
end
def visible=(value)
@map_sprite.visible = value
@object_sprite.visible = value
@position_sprite.visible = value
@border.visible = value
end
def refresh
@mmr = $game_system.minimap
map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3])
grid_size = [MiniMap::GRID_SIZE, 1].max
@x = 0
@y = 0
@size = [map_rect.width / grid_size, map_rect.height / grid_size]
@border = Sprite.new
@border.x = map_rect.x - MiniMap::MINIMAP_BORDER_SIZE
@border.y = map_rect.y - MiniMap::MINIMAP_BORDER_SIZE
b_width = map_rect.width + (MiniMap::MINIMAP_BORDER_SIZE * 2)
b_height = map_rect.height + (MiniMap::MINIMAP_BORDER_SIZE * 2)
@border.bitmap = Bitmap.new(b_width, b_height)
@border.bitmap.fill_rect(@border.bitmap.rect, MiniMap::MINIMAP_BORDER_COLOR)
@border.bitmap.clear_rect(MiniMap::MINIMAP_BORDER_SIZE, MiniMap::MINIMAP_BORDER_SIZE,
@border.bitmap.width - (MiniMap::MINIMAP_BORDER_SIZE * 2),
@border.bitmap.height - (MiniMap::MINIMAP_BORDER_SIZE * 2))
@map_sprite = Sprite.new
@map_sprite.x = map_rect.x
@map_sprite.y = map_rect.y
@map_sprite.z = MiniMap::MAP_Z
bitmap_width = $game_map.width * grid_size + map_rect.width
bitmap_height = $game_map.height * grid_size + map_rect.height
@map_sprite.bitmap = Bitmap.new(bitmap_width, bitmap_height)
@map_sprite.src_rect = map_rect
@object_sprite = Sprite.new
@object_sprite.x = map_rect.x
@object_sprite.y = map_rect.y
@object_sprite.z = MiniMap::MAP_Z + 1
@object_sprite.bitmap = Bitmap.new(bitmap_width, bitmap_height)
@object_sprite.src_rect = map_rect
@position_sprite = Sprite_Base.new
@position_sprite.x = map_rect.x + @size[0] / 2 * grid_size
@position_sprite.y = map_rect.y + @size[1] / 2 * grid_size
@position_sprite.z = MiniMap::MAP_Z + 2
bitmap = Bitmap.new(grid_size, grid_size)
# Player's Outline
if MiniMap::USE_OUTLINE_PLAYER and MiniMap::GRID_SIZE >= 3
bitmap.fill_rect(bitmap.rect, MiniMap::PLAYER_OUTLINE_COLOR)
brect = Rect.new(bitmap.rect.x + 1, bitmap.rect.y + 1, bitmap.rect.width - 2,
bitmap.rect.height - 2)
bitmap.clear_rect(brect)
else
brect = bitmap.rect
end
bitmap.fill_rect(brect, MiniMap::PLAYER_COLOR)
@position_sprite.bitmap = bitmap
draw_map
update_object_list
draw_object
update_position
end
def draw_map
bitmap = @map_sprite.bitmap
bitmap.fill_rect(bitmap.rect, MiniMap::BACKGROUND_COLOR)
map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3])
grid_size = [MiniMap::GRID_SIZE, 1].max
$game_map.width.times do |i|
$game_map.height.times do |j|
if !$game_map.passable?(i, j)
next
end
rect = Rect.new(map_rect.width / 2 + grid_size * i,
map_rect.height / 2 + grid_size * j,
grid_size, grid_size)
if grid_size >= 3
if !$game_map.passable?(i, j)
rect.height -= 1
rect.x += 1
rect.width -= 1
rect.width -= 1
rect.y += 1
rect.height -= 1
end
end
bitmap.fill_rect(rect, MiniMap::FOREGROUND_COLOR)
end
end
end
def update_object_list
@object_list = {}
$game_map.events.values.each do |e|
comment = e.mm_comment?(MiniMap::TAG_EVENT, true)
if comment != ''
type = comment.gsub(/#{MiniMap::TAG_EVENT}/){}.gsub(/\s+/){}
@object_list[type] = [] if @object_list[type].nil?
@object_list[type] << e
end
end
end
def draw_object
bitmap = @object_sprite.bitmap
bitmap.clear
map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3])
grid_size = [MiniMap::GRID_SIZE, 1].max
rect = Rect.new(0, 0, grid_size, grid_size)
mw = map_rect.width / 2
mh = map_rect.height / 2
@object_list.each do |key, events|
color = MiniMap::OBJECT_COLOR[key]
next if events.nil? or color.nil?
events.each do |obj|
if !obj.character_name.empty?
rect.x = mw + obj.real_x * grid_size / 256
rect.y = mh + obj.real_y * grid_size / 256
# Event's Outline
if MiniMap::USE_OUTLINE_EVENT and MiniMap::GRID_SIZE >= 3
bitmap.fill_rect(rect, MiniMap::EVENT_OUTLINE_COLOR)
brect = Rect.new(rect.x + 1, rect.y + 1, rect.width - 2,
rect.height - 2)
bitmap.clear_rect(brect)
else
brect = bitmap.rect
end
bitmap.fill_rect(brect, color)
end
end
end
end
def update
if @mmr != $game_system.minimap
dispose
refresh
end
draw_object
update_position
if @map_sprite.visible
@map_sprite.update
@object_sprite.update
@position_sprite.update
end
end
def update_position
map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3])
grid_size = [MiniMap::GRID_SIZE, 1].max
sx = $game_player.real_x * grid_size / 256
sy = $game_player.real_y * grid_size / 256
@map_sprite.src_rect.x = sx
@map_sprite.src_rect.y = sy
@object_sprite.src_rect.x = sx
@object_sprite.src_rect.y = sy
end
end
#==============================================================================
# ¦ Spriteset_Map
#------------------------------------------------------------------------------
class Spriteset_Map
attr_reader :minimap
alias wora_minimap_sprsetmap_ini initialize
alias wora_minimap_sprsetmap_dis dispose
alias wora_minimap_sprsetmap_upd update
def initialize
wora_minimap_sprsetmap_ini
if $game_map.show_minimap?
@minimap = Game_MiniMap.new(@tilemap)
$game_system.show_minimap = true if $game_system.show_minimap.nil?
@minimap.visible = $game_system.show_minimap
end
end
def dispose
@minimap.dispose if !@minimap.nil?
wora_minimap_sprsetmap_dis
end
def update
if !@minimap.nil?
if $game_system.show_minimap
@minimap.visible = true
@minimap.update
else
@minimap.visible = false
end
end
wora_minimap_sprsetmap_upd
end
end
#==============================================================================
# ¦ Scene_Map
#------------------------------------------------------------------------------
class Scene_Map < Scene_Base
attr_reader :spriteset
end
-
Also.
Wie setzt man ein neuen punkt im Menu ein .
Also , wenn man ihn anklickt wird ein Common Event gestartet so meine ich.
Wie macht man das ?
-
Neuer Menüpunkt machen?
Schau dir mal mein Tutorial hier an: http://www.rpgvx.net/index.php/topic,3747.0.html (http://www.rpgvx.net/index.php/topic,3747.0.html)
Da wird ja auch ein neuer Menüpunkt gemacht. Wenn nicht dann kann ich dirs hier erklären.
-
Nein , eben dieses Script habe ich schon aber ich will noch ein 2ten.
Aber ich bin so hohl und schafe es nicht lol.
-
Hier mal ein Projekt mit 3 zusätzlichen Menüpunkten.
http://www.file-upload.net/download-1991110/Men-punkt.exe.html (http://www.file-upload.net/download-1991110/Men-punkt.exe.html)
-
Danke .
-
Wie?
Bei mir hats geklappt.
Ich hab auf Download geklickt und dan Doppelklick auf die Datei.
-
Moin moin,
habe kleine Frage und bitte um schnelle Hilfe^^''
Also mein Prob is seid längeren, dass mein active Balken in die Lebensanzeige reinhagt und ich leider nicht weiß, wo ich im Script die Position der active Anzeige ändern kann.
Bitte hilft mir bei meinen Prob denn ich hätte die Anzeige gerne weiter rechts also hinter den MP.
Hab auch nochma ein paar Screens hier, damit ihr wisst, was ich meine.
So sieht es bei mir aus
(http://yourpg.de/images/Fehler1.png)
Und da rechts sollte die Anzeige eigendlich sein
(http://usui.moo.jp/graphics/rpg_sozai/sample/sample_gamen20090317_c.jpg)
Ich hoffe ihr könnt mir helfen
MfG †-.-Dennvo-.-†
-
Ich habe ein Problem mit folgendem Skript:
VXCTB:
#-------------------------------------------------------------------------------
# ? RPG??????????
#-------------------------------------------------------------------------------
# RPG::BaseItem???
class RPG::Skill
# ?????????
include VXCTB::Regexp_Skill
end
# RPG::State???
class RPG::State
# ?????????
include VXCTB::Regexp_Other
end
# RPG::Weapon???
class RPG::Weapon
# ?????????
include VXCTB::Regexp_Other
end
# RPG::Armor???
class RPG::Armor
# ?????????
include VXCTB::Regexp_Other
end
#-------------------------------------------------------------------------------
# ¦ Game_Battler
#-------------------------------------------------------------------------------
class Game_Battler
# CT??????????????
include VXCTB::CTmethod
attr_reader :count # ?????????????
attr_accessor :ct # ?????CT?
#--------------------------------------------------------------------------
# ? ?????????(????)
#--------------------------------------------------------------------------
alias vxctb_initialize initialize
def initialize
# ????
vxctb_initialize
# ?????
@ct = 0
reset_count
end
#--------------------------------------------------------------------------
# ? ??????(????)
#--------------------------------------------------------------------------
alias vxctb_inputable? inputable?
def inputable?
# ?????true????????????????
return false unless vxctb_inputable?
# can_act??true????????????????
return false unless can_act?
return true
end
#--------------------------------------------------------------------------
# ? ?????????(????)
# attacker : ???
#--------------------------------------------------------------------------
alias vxctb_attack_effect attack_effect
def attack_effect(attacker)
# ????
vxctb_attack_effect(attacker)
# CT???????(???????????CT??????????)
@ct -= (need_ct(self) * attacker.correction_ct_damage(attacker) / 100).round if VXCTB::USE_CTDMG
end
#--------------------------------------------------------------------------
# ? ????????(????)
# user : ???????
# skill : ???
#--------------------------------------------------------------------------
alias vxctb_skill_effect skill_effect
def skill_effect(user, skill)
# ????
vxctb_skill_effect(user, skill)
# CT???????(????CT????????)
@ct -= (need_ct(self) * skill.ct_damage / 100).round if VXCTB::USE_CTDMG
end
#--------------------------------------------------------------------------
# ? ????????????? (???????????)(???)
#--------------------------------------------------------------------------
def remove_states_shock
for state in states
if state.release_by_damage
remove_state(state.id)
@removed_states.push(state.id)
# ?????????????????????????
@ct -= need_ct(self) if state.id == VXCTB::CAST_STATE_ID
end
end
end
#--------------------------------------------------------------------------
# ? CT???????????????(????)
#--------------------------------------------------------------------------
def can_act?
# CT??????????????????
# ??????@ct????????????to_i?????????????
return false if @ct.to_i < VXCTB::CAN_ACT
# ??????????????????
return false if state?(VXCTB::CAST_STATE_ID)
# ????
return true
end
#--------------------------------------------------------------------------
# ? ???????????(????)
# ??????????????????????????
#--------------------------------------------------------------------------
def increment_count
@count += 1
end
#--------------------------------------------------------------------------
# ? ????????(????)
# ??????????????????????????
#--------------------------------------------------------------------------
def reset_count
@count = 0
end
end
#-------------------------------------------------------------------------------
# ¦ Game_Actor
#-------------------------------------------------------------------------------
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ? ??????(????)
# actor_id : ???? ID
#--------------------------------------------------------------------------
alias vxctb_setup setup
def setup(actor_id)
# ????
vxctb_setup(actor_id)
#CT??0????
@ct = 0
#??????????????0????
reset_count
end
end
#-------------------------------------------------------------------------------
# ¦ Game_Enemy
#-------------------------------------------------------------------------------
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ? ?????????(????)
# index : ????????????
# enemy_id : ???? ID
#--------------------------------------------------------------------------
alias vxctb_e_initialize initialize
def initialize(index, enemy_id)
vxctb_e_initialize(index, enemy_id) # ????
@ct = 0 #CT??0????
reset_count #?????????0????
end
#--------------------------------------------------------------------------
# ? ????????(???)
# action : ????
#--------------------------------------------------------------------------
def conditions_met?(action)
case action.condition_type
when 1 # ????
n = @count # ??????????????????????????????
a = action.condition_param1
b = action.condition_param2
return false if (b == 0 and n != a)
return false if (b > 0 and (n < 1 or n < a or n % b != a % b))
when 2 # HP
hp_rate = hp * 100.0 / maxhp
return false if hp_rate < action.condition_param1
return false if hp_rate > action.condition_param2
when 3 # MP
mp_rate = mp * 100.0 / maxmp
return false if mp_rate < action.condition_param1
return false if mp_rate > action.condition_param2
when 4 # ????
return false unless state?(action.condition_param1)
when 5 # ???????
return false if $game_party.max_level < action.condition_param1
when 6 # ????
switch_id = action.condition_param1
return false if $game_switches[switch_id] == false
end
return true
end
#--------------------------------------------------------------------------
# ? ???????(????)
#--------------------------------------------------------------------------
alias vxctb_make_action make_action
def make_action
# CT????????????????
return unless can_act?
# ???????????
increment_count
# ????
vxctb_make_action
end
end
#-------------------------------------------------------------------------------
# ¦ Game_BattleAction
#-------------------------------------------------------------------------------
class Game_BattleAction
attr_accessor :casting_skill #???????????????
#--------------------------------------------------------------------------
# ? ?????????(????)
# battler : ????
#--------------------------------------------------------------------------
alias vxctb_initialize initialize
def initialize(battler)
# ???????????????nil(??)???
@casting_skill = nil
# ????
vxctb_initialize(battler)
end
#--------------------------------------------------------------------------
# ? ???(????)
#--------------------------------------------------------------------------
alias vxctb_clear clear
def clear
# ????????(CT????????)??????????
return unless battler.can_act?
# ????
vxctb_clear
end
#--------------------------------------------------------------------------
# ? ???????????(????)
# ??????????? [???????] ??????????????
# ?????????????????????? false ????
#--------------------------------------------------------------------------
alias vxctb_valid? valid?
def valid?
#~ return false if nothing? # ?????
#~ return true if @forcing # ?????
#~ return false unless battler.movable? # ????
#~ if skill? # ???
#~ return false unless battler.skill_can_use?(skill)
#~ elsif item? # ????
#~ return false unless friends_unit.item_can_use?(item)
#~ end
#~ return true
#~ end
# ???????false???
unless vxctb_valid?
# CT????????(100%?CT???????????????????)
battler.ct -= battler.need_ct(battler)
# ?????????????????????
battler.remove_state(VXCTB::CAST_STATE_ID) if battler.state?(VXCTB::CAST_STATE_ID)
# false???
return false
# ???????true???
else
# true???
return true
end
end
end
#-------------------------------------------------------------------------------
# ¦ Scene_Battle
#-------------------------------------------------------------------------------
class Scene_Battle < Scene_Base
# CT????????????
include VXCTB::CTmethod
#--------------------------------------------------------------------------
# ? ????(????)
#--------------------------------------------------------------------------
alias vxctb_start start
def start
# ????
vxctb_start
# ??????????
@order_window = Window_ActionOrder.new
@order_window.z = 101
# ???????????????CT???????
($game_party.members + $game_troop.members).each do |battler|
# ??CT???
battler.ct = rand(VXCTB::CAN_ACT)
end
# ????
ct_countup
end
#--------------------------------------------------------------------------
# ? ????(????)
#--------------------------------------------------------------------------
alias vxctb_terminate terminate
def terminate
# ???????????
@order_window.dispose
# ????
vxctb_terminate
end
#~ #--------------------------------------------------------------------------
#~ # ? ??????
#~ #--------------------------------------------------------------------------
#~ def update
#~ super
#~ update_basic(true)
#~ update_info_viewport # ?????????????
#~ if $game_message.visible
#~ @info_viewport.visible = false
#~ @message_window.visible = true
#~ end
#~ unless $game_message.visible # ??????????
#~ return if judge_win_loss # ????
#~ update_scene_change
#~ if @target_enemy_window != nil
#~ update_target_enemy_selection # ????????
#~ elsif @target_actor_window != nil
#~ update_target_actor_selection # ????????
#~ elsif @skill_window != nil
#~ update_skill_selection # ?????
#~ elsif @item_window != nil
#~ update_item_selection # ??????
#~ elsif @party_command_window.active
#~ update_party_command_selection # ??????????
#~ elsif @actor_command_window.active
#~ update_actor_command_selection # ??????????
#~ else
#~ process_battle_event # ??????????
#~ process_action # ????
#~ process_battle_event # ??????????
#~ end
#~ end
#~ end
#--------------------------------------------------------------------------
# ? ?????????????(????)
#--------------------------------------------------------------------------
alias vxctb_start_party_command_selection start_party_command_selection
def start_party_command_selection(skip = false)
if skip
if $game_temp.in_battle
@status_window.refresh
@status_window.index = @actor_index = -1
@active_battler = nil
@info_viewport.visible = true
@message_window.visible = false
@party_command_window.active = false
@party_command_window.index = 0
@actor_command_window.active = false
$game_party.clear_actions
if $game_troop.surprise or not $game_party.inputable?
start_main
end
@status_window.index = @actor_index = -1
next_actor
end
else
#????
vxctb_start_party_command_selection
end
end
#--------------------------------------------------------------------------
# ? ?????????????(????)
#--------------------------------------------------------------------------
alias vxctb_start_actor_command_selection start_actor_command_selection
def start_actor_command_selection
# ????
vxctb_start_actor_command_selection
# ????????????
@active_battler.action.basic = 3 if @active_battler.action.basic == 1
end
#--------------------------------------------------------------------------
# ? ?????????????(????)
#--------------------------------------------------------------------------
alias vxctb_update_actor_command_selection update_actor_command_selection
def update_actor_command_selection
if Input.trigger?(Input::UP) || Input.trigger?(Input::DOWN)
# ??????????????????????
@order_window.delete_temp_table(@active_battler.name)
@order_window.delete_temp_table(@active_battler.name + "-Casting")
case @actor_command_window.index
# ???????
when 0
# ????CT???
delay_ct = need_ct(@active_battler) * VXCTB::COST_ATK / 100
# ??????????
delay_ct = correction_delay(delay_ct, @active_battler)
# ?????(??)
@order_window.set_temp_table(@active_battler.name, delay_ct)
# ??????
when 1
# ????????CT???
delay_ct = need_ct(@active_battler) * VXCTB::COST_ATK / 100
# ??????????
delay_ct = correction_delay(delay_ct, @active_battler)
# ?????(??)
@order_window.set_temp_table(@active_battler.name, delay_ct)
# ?????
when 2
# ??CT???
delay_ct = need_ct(@active_battler) * VXCTB::COST_GRD / 100
# ??????????
delay_ct = correction_delay(delay_ct, @active_battler)
# ?????(??)
@order_window.set_temp_table(@active_battler.name, delay_ct)
# ???????
when 3
# ????CT???
delay_ct = need_ct(@active_battler) * VXCTB::COST_ITEM / 100
# ??????????
delay_ct = correction_delay(delay_ct, @active_battler)
# ?????(??)
@order_window.set_temp_table(@active_battler.name, delay_ct)
end
# ???????????????
@order_window.refresh
end
# ????????
@order_window.move_page
# ????
vxctb_update_actor_command_selection
end
#--------------------------------------------------------------------------
# ? ????????(????)
#--------------------------------------------------------------------------
alias vxctb_start_skill_selection start_skill_selection
def start_skill_selection
# ????
vxctb_start_skill_selection
# ?????
order_skill(@skill_window.skill)
end
#--------------------------------------------------------------------------
# ? ????????(????)
#--------------------------------------------------------------------------
alias vxctb_update_skill_selection update_skill_selection
def update_skill_selection
# ??????????????????????
@order_window.delete_temp_table(@active_battler.name)
@order_window.delete_temp_table(@active_battler.name + "-Casting")
# ?????
order_skill(@skill_window.skill)
# ????????
@order_window.move_page
#????
vxctb_update_skill_selection
end
#--------------------------------------------------------------------------
# ? ?????(????)
#--------------------------------------------------------------------------
alias vxctb_process_escape process_escape
def process_escape
# ?????????????????????
$game_party.members.each{ |actor|
# ????????
delay_ct = need_ct(actor) * VXCTB::COST_ESCAPE / 100
# ????????
delay_ct = correction_delay(delay_ct, actor)
# ?????CT????
actor.ct -= delay_ct
}
# ????
ct_countup
# ????
vxctb_process_escape
end
#--------------------------------------------------------------------------
# ? ??????(???)
#--------------------------------------------------------------------------
def make_action_orders
# ????????????????????
@action_battlers = []
# ????CT???????????
$game_troop.members.each do |enemy|
@action_battlers.push(enemy) if enemy.ct >= VXCTB::CAN_ACT
end
# ????CT????????????
$game_party.members.each do |actor|
@action_battlers.push(actor) if actor.ct >= VXCTB::CAN_ACT
end
# ???????????????????
@action_battlers.each { |battler| battler.action.make_speed }
# ?????????????????
@action_battlers.sort! { |a, b| b.action.speed - a.action.speed }
end
#--------------------------------------------------------------------------
# ? ???????(???)
#--------------------------------------------------------------------------
def process_action
# CT???????
ct_countup
return if judge_win_loss
return if $game_temp.next_scene != nil
set_next_active_battler
if @active_battler == nil
turn_end
return
end
return if @active_battler.dead?
@message_window.clear
wait(5)
@active_battler.white_flash = true
# ??????????
if @active_battler.state?(VXCTB::CAST_STATE_ID)
# ?????????
@active_battler.action.kind = 1
# @active_battler.action.skill_id???????????ID???
@active_battler.action.skill_id = @active_battler.action.casting_skill
end
# ??????
unless @active_battler.action.forcing
@active_battler.action.prepare
end
if @active_battler.action.valid?
execute_action
end
unless @active_battler.action.forcing
@message_window.clear
remove_states_auto
display_current_state
end
@active_battler.white_flash = false
@message_window.clear
end
#--------------------------------------------------------------------------
# ? ?????(???)
#--------------------------------------------------------------------------
def turn_end
$game_troop.turn_ending = true
$game_party.slip_damage_effect
$game_troop.slip_damage_effect
$game_party.do_auto_recovery
$game_troop.preemptive = false
$game_troop.surprise = false
process_battle_event
$game_troop.turn_ending = false
# ????????????????????????
start_party_command_selection(true)
end
#--------------------------------------------------------------------------
# ? ???????????????(???)
# ????????? [???????] ????????????????
# ??????????????????????????????????
# ????????????????????? (index ? nil, ?????
# ?????????????) ????????????
#--------------------------------------------------------------------------
def set_next_active_battler
loop do
# ????????????????
if $game_troop.forcing_battler != nil
# ???????????????????
@action_battlers.delete($game_temp.forcing_battler)
# ????????????
@action_battlers.unshift($game_temp.forcing_battler)
# ??????????????
$game_troop.forcing_battler = nil
# ?????
else
# ????????
@active_battler = @action_battlers.shift
end
# ??????????????????
return if @active_battler == nil
return if @active_battler.index != nil
end
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def remove_states_auto
last_st = @active_battler.states
@active_battler.remove_states_auto
if @active_battler.states != last_st
wait(5)
display_state_changes(@active_battler)
wait(30)
@message_window.clear
end
end
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
def display_current_state
state_text = @active_battler.most_important_state_text
unless state_text.empty?
wait(5)
text = @active_battler.name + state_text
@message_window.add_instant_text(text)
wait(45)
@message_window.clear
end
end
#--------------------------------------------------------------------------
# ? ??????? : ??(????)
#--------------------------------------------------------------------------
alias vxctb_execute_action_attack execute_action_attack
def execute_action_attack
# ????CT???
delay_ct = need_ct(@active_battler) * VXCTB::COST_ATK / 100
# ??????????
delay_ct = correction_delay(delay_ct, @active_battler)
# CT??
@active_battler.ct -= delay_ct
#????
vxctb_execute_action_attack
# ???????????????
@order_window.refresh
end
#--------------------------------------------------------------------------
# ? ??????? : ??(????)
#--------------------------------------------------------------------------
alias vxctb_execute_action_guard execute_action_guard
def execute_action_guard
# ??CT???
delay_ct = need_ct(@active_battler) * VXCTB::COST_GRD / 100
# ??????????
delay_ct = correction_delay(delay_ct, @active_battler)
# CT??
@active_battler.ct -= delay_ct
# ????
vxctb_execute_action_guard
# ???????????????
@order_window.refresh
end
#--------------------------------------------------------------------------
# ? ??????? : ??(????)
#--------------------------------------------------------------------------
alias vxctb_execute_action_escape execute_action_escape
def execute_action_escape
# ??CT???
delay_ct = need_ct(@active_battler) * VXCTB::COST_ESCAPE / 100
# ??????????
delay_ct = correction_delay(delay_ct, @active_battler)
# CT??
@active_battler.ct -= delay_ct
# ????
vxctb_execute_action_escape
# ???????????????
@order_window.refresh
end
#--------------------------------------------------------------------------
# ? ??????? : ??(????)
#--------------------------------------------------------------------------
alias vxctb_execute_action_wait execute_action_wait
def execute_action_wait
# ??CT???
delay_ct = need_ct(@active_battler) * VXCTB::COST_NOTHING / 100
# ??????????
delay_ct = correction_delay(delay_ct, @active_battler)
# CT??
@active_battler.ct -= delay_ct
# ????
vxctb_execute_action_wait
# ???????????????
@order_window.refresh
end
#--------------------------------------------------------------------------
# ? ??????? : ???(???)
#--------------------------------------------------------------------------
def execute_action_skill
# skill???????????????????????????
skill = @active_battler.action.skill if @active_battler.action.skill != nil
# ???????????????????????
if @active_battler.state?(VXCTB::CAST_STATE_ID)
# ????????????????????
@active_battler.remove_state(VXCTB::CAST_STATE_ID)
# ???????????????
skill= $data_skills[@active_battler.action.casting_skill]
# ????????????????
else
# ???????????CT???
cast_ct = need_ct(@active_battler) * skill.cast / 100
# ?????????????
cast_ct = correction_cast(cast_ct, @active_battler)
# Skill??????????1?????
if cast_ct > 0
# ????????????CT??
@active_battler.ct -= cast_ct
# ??????????????
@active_battler.add_state(VXCTB::CAST_STATE_ID)
# ???ID??
@active_battler.action.casting_skill = skill.id
end
end
# ????????????????
unless @active_battler.state?(VXCTB::CAST_STATE_ID)
# ???????CT???
delay_ct = need_ct(@active_battler) * skill.delay / 100
# ??????????
delay_ct = correction_delay(delay_ct, @active_battler)
# CT??
@active_battler.ct -= delay_ct
# ??????
# text????????????
text = @active_battler.name + skill.message1
# ???????????????????1???
@message_window.add_instant_text(text)
# ????????2???????
unless skill.message2.empty?
# 10????????
wait(10)
# ???????????????????2???
@message_window.add_instant_text(skill.message2)
end
# ?????
targets = @active_battler.action.make_targets
# ?????????
display_animation(targets, skill.animation_id)
# ?????MP??????MP??????
@active_battler.mp -= @active_battler.calc_mp_cost(skill)
# ???????
$game_temp.common_event_id = skill.common_event_id
# ????????????
for target in targets
# ????????
target.skill_effect(@active_battler, skill)
# ???????
display_action_effects(target, skill)
end
end
# ???????????????
@order_window.refresh
end
#--------------------------------------------------------------------------
# ? ??????? : ????(????)
#--------------------------------------------------------------------------
alias vxctb_execute_action_item execute_action_item
def execute_action_item
# ????CT???
delay_ct = need_ct(@active_battler) * VXCTB::COST_ITEM / 100
# ??????????
delay_ct = correction_delay(delay_ct, @active_battler)
# CT??
@active_battler.ct -= delay_ct
# ????
vxctb_execute_action_item
# ???????????????
@order_window.refresh
end
#--------------------------------------------------------------------------
# ? CT????(???????)(????)
#--------------------------------------------------------------------------
def ct_countup
# ????CT?????
add_ct = VXCTB::CAN_ACT
# ???????????????
action_battler = 0
# ???????????????????
action_num = 0
# ???????????
($game_party.members + $game_troop.members).each do |battler|
# ????????
if battler.dead? == true
# CT?0????
battler.ct = 0
# ??????????
next
end
# CT?0???????0???(?????????????)
battler.ct = 0 if battler.ct < 0
# add_ct?(????CT - ????CT)????????CT????
# ????????add_ct????
add_ct = [add_ct, VXCTB::CAN_ACT - battler.ct].min
end
# ??CT??0?????????????????????????????
return if add_ct <= 0
# ???????????
($game_party.members + $game_troop.members).each do |battler|
# ???????????????????
next if battler.dead?
# ????????????????????
action_battler += 1
# ?????????????????????
action_num += battler.count
# ?????CT????
battler.ct += add_ct
# CT????????????????????
next if battler.ct < VXCTB::CAN_ACT
# ?????????????????????
next if battler.state?(VXCTB::CAST_STATE_ID)
# ?????????????????
battler.increment_count
end
# 0?????
action_battler = 1 if action_battler <= 0
# ?????????????????????????????????
# ???0????????????
$game_troop.increase_turn if action_num % action_battler == 0
# ??????????????????
@order_window.refresh
end
#--------------------------------------------------------------------------
# ? ?????????????(????)
# skill : ????????
#--------------------------------------------------------------------------
def order_skill(skill = @skill_window.skill)
# ????nil???????
unless skill || @active_battler.skill_can_use?(skill.id)
# ????????CT???
delay_ct = need_ct(@active_battler) * VXCTB::COST_ATK / 100
# ??????????
delay_ct = correction_delay(delay_ct, @active_battler)
# ?????(??)
@order_window.set_temp_table(@active_battler.name, delay_ct)
# ???????(?????????????????????)
else
# ????????CT???
delay_ct = need_ct(@active_battler) * skill.delay / 100
# ??????????
delay_ct = correction_delay(delay_ct, @active_battler)
# ???????????CT???
cast_ct = need_ct(@active_battler) * skill.cast / 100
# ?????????????
cast_ct = correction_cast(cast_ct, @active_battler)
# ???????CT????????
if cast_ct > 0
# ?????(???????)
@order_window.set_temp_table(@active_battler.name + "-Casting",
cast_ct)
# ???????CT????????
else
# ?????(??)
@order_window.set_temp_table(@active_battler.name, cast_ct)
end
end
# ???????????????
@order_window.refresh
end
end
Das Ziel des Skripts ist es einfach beim Kampf ein Fenster anzuzeigen, in dem man die Reihenfolge der Angreifer sehen kann, genau so wie
man es zum Beispiel aus FFX kennt.
Mein Problem ist jetzt nur, dass wenn ich im Kampf den Befehl "Force Action" benutze, um einen Charakter oder Gegner einen bestimmten
Angriff ausführen zu lassen bekomme ich folgende Fehlermeldung:
Script 'VXCTB' line 540: NoMethodError occurred.
undefined method `forcing_battler' for #<Game_Temp:0x2f276f8>
Ich würde das Skript schon gerne benutzen, aber ich verstehe leider nicht viel von Skripten. Wäre echt nett, wenn jemand eine Lösung dafür finden könnte.
Das Skript ist eigentlich 3-Teilig doch die Seite hat sich irgendwie geweigert die beiden mit reinzunehmen. Ich habe jetzt
nur den Teil gepostet, der den Error enthält.
EDIT: Ich glaube ich habe das Problem gerade gelöst, obwohl die Methode bisschen dumm war. Ich habe einfach folgenden
Teil aus dem Skript geschnitten:
def set_next_active_battler
loop do
# ????????????????
if $game_troop.forcing_battler != nil
# ???????????????????
@action_battlers.delete($game_troop.forcing_battler)
# ????????????
@action_battlers.unshift($game_troop.forcing_battler)
# ??????????????
$game_troop.forcing_battler = nil
# ?????
else
# ????????
@active_battler = @action_battlers.shift
end
# ??????????????????
return if @active_battler == nil
return if @active_battler.index != nil
end
end
Ich muss noch 1-2 Test machen, ob auch wirklich alles funktioniert. Ich melde mich dann wenn es fertig ist.
-
Ok und wieder konnte ch das Problem alleine lösen, ja man könnte meinen ich wäre blind, tja genau das habe ich mir auch gerade gedacht.
Naja trotzdem danke an jedem der sich Gedanken drüber gemacht hat und so^^
MfG †-.-Dennvo-.-†
-
hab auch ma nomma ne frage hier... wie kann man einen unterordner für pictures erstellen?
Pics anzeigen geht ja so:
@menu_sprite = Sprite.new
@menu_sprite.bitmap = Cache.picture("Main_Menu_1")
wie kann ich machen dass z.B. in ordner Pictures noch ein Unterordner z.B. namens "menü" ist und von dort dann die Bilder rausgenmmen werden?
-
Hallöle :)
Ich habe ein kleines Problemchen damit, bei Hells D&N-Skript die Zeit starten zu lassen.
Ich habe den Befehl zum starten exakt kopiert, sogar mit mehreren unterschiedlichen Events ausprobiert
inkl. einem mit Conditional Branch ob die Zeit läuft und scheinbar startet die Zeit trotz des "zeit_start"
Skriptbefehls nicht. Weiß da wer Abhilfe?
Gruß,
Domi :)
P.S: Kyos Videotut habe ich schon zu Rate gezogen, da scheints ja mit Zeit_start zu funktionieren :(
-
@Sartek
Guk dir mal "Cache" an. Dort sind die Methoden geschreiben, die du in deinem Beispiel benutzt.
Schreibe einfach eine, die den gewünschten Ordner als Zielornder für die Suche benutzt.
@Domi
Hab es gerade ausprobiert, und es klappt. :O
Also auch ohne die Anführungszeichen etc, in call script benutzt?
Ansonsten würde ich dir empfehlen die Scripts die du benutzt durchzugehen, und zu schauen ob es etwas mit D&N kooperiert oder eben nicht. Besonders auf Zeitscripts achten. :P
MfG
Deity
-
Ich habe das auch schon probiert und es geht^^ Aber ich weiß was wohl den Problem ist.
Also entweder:
Du hast Anführungszeichen genommen
oder
DU hast den Tagesablauf auf langsam eingestellt, und du müsstest 3 Stunden für einen Wechsel warten.
Du scrollst runter bis zu dem Zeitpunkt wo die ganzen Commands sind. Also zeit_stop und so was. Und über der Überschrift ,,Interpreter Commands" findest du das:
$fadingtime = 3
$per_second = 1
so ist das standardmäßig, und dann dauert es etwa 10 Minuten bis der Wechsel kommt^^
also einfach ändern auf:
$fadingtime = 3
$per_second = 60
also das $per_second =1
ändern zu $per_second =60
erhöhen, verschnellt den ganzen vorgang
P.S.: Du musst am Beginn des SP+piels kein Autorun oder Parallel Event mit Zeit_start machen. Der Skript läuft automatisch nach spielstart los, ohne jedes start event. Lediglich stoppen und ändern muss eventet werden mit den script calls.
-
Danke Jungs, aber das war mir schon alles bewusst, habs mittlerweile auch raus:
Ich hab das Skript einfach an der falschen stelle gehabt ;)
-
Habe in der SuFu nix gefunden, hier mein Problem:
Habe mit dem Script KGC_CustomMenuCommand n bizzl rumprobiert und versucht neben den KGc Scripts noch den Questlog von hellminor ins Menü zu tun, also habe ich den Skript mal umgewurschtelt, der bei diesem Costum Menü alle anderen Menüs öffnet, also sah das ganze so aus:
when 7 # Questlog
index_list[:Questlog] = commands.size
commands << $scene = Scene_Questlog.new
WEnn ich jetzt ins Menü gehe, öffent der mir direkt den Questlog, beende ich den Questlog wird wieder direkt der Questlog geöffnet, es ist also n Autostart sobald ich das Menü anmache...
-
Ich habe auch eine Scriptfrage...
Und zwar würd ich gerne mal wissen wie mach ich es, also folgendes:
Ich habe ein Window erstellt... nun möchte ich in dieses Window die Animation eines Characters anzeigen lassen...
Wie mache ich das?
Bis jetzt sieht es so aus:
class Karten_Anzeige_Window < Window_Base
def initialize(card_name)
super(0, 0, 544, 416)
@card_name = card_name
refresh
end
def refresh
self.contents.clear
draw_card(0,0)
draw_charset(0,200)
end
def draw_card(x, y, size = 150)
bitmap = Cache.geißel_k(@card_name)
rect = Rect.new(0, 0, 150, 150)
self.contents.blt(x, y, bitmap, rect)
bitmap.dispose
end
def draw_charset(x, y)
return if @card_name == nil
bitmap = Cache.geißel_kchar("$"+@card_name)
sign = @card_name[/^[\!\$]./]
if sign != nil and sign.include?('$')
cw = bitmap.width / 3
ch = bitmap.height / 4
else
cw = bitmap.width / 12
ch = bitmap.height / 8
end
n = 0
src_rect = Rect.new(32,0, 32, 32)
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end
end
-
Hey Leute,
Wollte mal fragen, ob es ein Script gibt, das mir erlaubt den namen meiner Währung belibig oft zu ändern?
oder vlt kann mir jemand auch sowas machen were echt nett^^
Lg
Vesskin
-
Also im Prinzip müsste der Code hier gehen:
module Vocab
def self.gold
if $gold_name != nil
return $gold_name
else
return $data_system.terms.gold
end
end
end
Du kannst dann halt den Namen mit
$gold_name = "Name"
umbenennen. Wenn du magst, kannst du mir Credits geben :P
-
Ah vielen dank es klappt^^
dein name ist Notiert!^^
-
also, ich habe Falco´s Nebel Skript verwendet.
#====================================================================#
# #*****************# Fog effect V1.0 Falcao script #
# #*** By Falcao ***# Allow fog effects graphics on map #
# #*****************# #
# RMVX Instalation: Copy and paste the # #
# makerpalace.onlinegoo.com script to your porject # #
#====================================================================#
#--------------------------------------------------------------------
# * How to use
#
# Call the script using the following command
#
# $game_map.fog("Fog Name", Opacity, Zoom , Scroll_x, Scroll_y)
#
# Example: using standar configuration
# $game_map.fog("sombra2",50,2,1,1)
#
# Fog Graphics must be in folder Pictures
#
# Author notes:
# This script can be used in comercial or non-comercial games
# Credits to Falcao
#
#---------------------------------------------------------------------
module Falcao
# Scrool fog graphics whith the screen change (true or false)
DinamicScroll = true
end
class Game_Map
attr_accessor :fog_name
attr_accessor :fog_opacity
attr_accessor :fog_zoom
attr_accessor :fog_sx
attr_accessor :fog_sy
attr_reader :fog_ox
attr_reader :fog_oy
alias falcaofogSini initialize
def initialize
@fog_start = true
falcaofogSini
end
alias falcao_setup setup
def setup(map_id)
falcao_setup(map_id)
setup_fog
end
def setup_fog
if @fog_start
@fog_name = ""
@fog_opacity = 0
@fog_zoom = 0
@fog_sx = 0
@fog_sy = 0
@fog_ox = 0
@fog_oy = 0
@fog_start = false
end
end
alias falcaofog_update update
def update
falcaofog_update
update_fog
end
def update_fog
@fog_ox -= @fog_sx / 8.0
@fog_oy -= @fog_sy / 8.0
end
def fog(name,opacity,zoom,scroll_x,scroll_y)
@fog_name = name
@fog_opacity = opacity
@fog_zoom = zoom
@fog_sx = scroll_x
@fog_sy = scroll_y
end
end
class Spriteset_Map
alias falcaofogini initialize
def initialize
create_fog
falcaofogini
end
def create_fog
@fog = Plane.new(@viewport1)
@fog.z = 3000
end
alias falcaofog_dispose dispose
def dispose
falcaofog_dispose
dispose_fog
end
def dispose_fog
@fog.dispose
end
alias falcaofogSupdate update
def update
falcaofogSupdate
update_fog
end
def update_fog
if @fog_name != $game_map.fog_name
@fog_name = $game_map.fog_name
if @fog.bitmap != nil
@fog.bitmap.dispose
@fog.bitmap = nil
end
if @fog_name != ""
@fog.bitmap = Cache.picture(@fog_name)
end
Graphics.frame_reset
end
@fog.zoom_x = $game_map.fog_zoom
@fog.zoom_y = $game_map.fog_zoom
@fog.opacity = $game_map.fog_opacity
if Falcao::DinamicScroll == true
@fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
@fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
else
@fog.ox = 4 + $game_map.fog_ox
@fog.oy = 4 + $game_map.fog_oy
end
end
end
und habe den Nebel auch an bekommen, und alles funktioniert wunderbar...nur....wie geht der Nebel wieder aus? xD
In der Wohnung sollte ja kein Nebel sein, wa?^^
-
du machst n script event , mit den selben befehl, nur dass du bei "fog name" die nichts hinschreibst das es dann so aussieht:
$game_map.fog("sombra2",50,2,1,1) <-an
$game_map.fog("",50,2,1,1) <-aus
-
stimmt!^vielen dank^^
hatte schon $game_map.fog=false und $game_map.fog(false) und so probiert, aber das ist auch richtig, vielen Dank!
-
nicht zu danken^^ wow hab bei nem SCRIPT problem geholfen, wobei ich mich 0% von scripts so verstehe :P
-
Hey ho wollte ma fragen:
Wie muss ich def draw_character_battler(character_name, character_index, x, y)
return if character_name == nil
bitmap = Cache.character(character_name)
sign = character_name[/^[\!\$]./]
if sign != nil and sign.include?('$')
cw = bitmap.width / 3
ch = bitmap.height / 4
else
cw = bitmap.width / 12
ch = bitmap.height / 8 - 4
end
n = character_index
src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end
verändern, damit die angezeigten Chargraphics nach oben schaun?
-
Frage :
Hab ein Problem mit diesem Script es zeigt immer an : Syntaxfehler in Linie 3
EDIT : Habs gelöst
-
Jungs, ich hab mal ne Frage: Kann man per Call Script nur bestimmte Variablen aus einem Save-Slot laden?
Danke für Tipps und Ratschläge!
MfG
-
Hallo,
ich habe eine kleine Frage zu einem Skript, welches ich vor kurzem gefunden habe und da mir hier schon ein paar mal geholfen wurde, hoffe ich, dass vielleicht jemand die Lösung für mein Problem kennt.
Es geht um das folgende Skript:
Actor Battler Graphics:
#==============================================================================
# ** Actor Battler Graphics
#------------------------------------------------------------------------------
# by DerVVulfman
# version 1.0
# 03-25-2008
# RGSS2
#==============================================================================
#
# INTRODUCTION:
#
# This system permits you to include 'Actor Battler' graphics that were not
# included in the RPGMaker VX system. This script mimics many of the lost
# features, and includes a new one: Actor Battler Centering.
#
#------------------------------------------------------------------------------
#
# USAGE:
#
# --Positioning--
# A nice feature to this system is the ability to adjust the left/right &
# up/down position of your battlers.
#
# Actually, the vertical up/down position can be adjusted by changing the
# value of the SCREEN_Y variable. The left/right positioning is a little
# different.
#
# The CENTER_X value is a true/false value that sets whether the battlers
# line up from the left and space themselves out in the manner of the de-
# fault RPGMaker XP or whether the system calculates and centers them ac-
# ross the screen.
#
# The DEFAULT_X value establishes how many actors are typically shown in
# the battlefield. While this is the default value, the maximum value used
# can be changed with a script call.
#
# Finally, the TRANSPARENT value is another true/false value that you can
# use to make the battlers lightly transparent until they're about to per-
# form an attack. Another feature from RPGMaker XP.
#
# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
#
# --The Actor List--
# This system DOES require you to edit the configuration system to list all
# of the 'actor' battlers that you are using. It is assumed that these
# battlers will be in the 'Graphics\Battlers' folder with the rest of the
# enemy battlers.
#
# Each value in the ACTOR array holds two values: filename and hue. This
# not only allows you to add battle graphics for your heroes, but adjusts
# the character's hue as well. If you do not include the hue setting, it
# goes to the default setting of '0'.
#
#------------------------------------------------------------------------------
#
# SCRIPT CALLS:
#
# There's only two script calls that you need to know.
#
# --Changing Battlers--
# Given that this system allows you to use 'Actor' battlers, you may find a
# need to 'change' the battler in-game. Unfortunately, this cannot be done
# with a pre-rendered map event, so I had to make a script call:
#
# $game_actors[ID].set_battler("filename", hue)
#
# By using this call, you can change the graphic and hue of a battler while
# the game is running.
#
# As an example: $game_actors[1].set_battler("Ylva")
#
# ...would set actor #1's battler to use "Ylva.png" as the graphic desired.
# You may note that the 'hue' was not included in this call. The default
# value of '0' was used.
#
# NOTE: Just calling $game_actors[2].set_battler() would erase the battler
# from actor #2, rendering it invisible on the battlefield.
#
# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
#
# --Changing Position Value--
# This script allows you to have the battlers centered in the battlefield
# and spaced out evenly. Under most circumstances, you have four members
# in your party. But what if you want to increase the number of members
# to 5 or 6?
#
# Now, this system does not increase the number of members in your party,
# but it is already set up to adjust the spacing of your members in the
# battlefield. With a simple script call:
#
# $game_system.actorbattler_max = 7
#
# You can make the system space the battlers on the field with the under-
# standing that up to 7 members are in the party.
#
#------------------------------------------------------------------------------
#
# EDITS AND MODIFICATIONS:
#
# This system Aliases the following methods:
# * initialize (RPG::Actor)
# * initialize (Game_Temp)
# * initialize (Game_System)
# * initialize (Game_Actor)
# * update (Sprite_Battler)
# * start (Scene_Battle)
# * start_party_command_selection (Scene_Battle)
# * process_victory (Scene_Battle)
# * execute_action (Scene_Battle)
#
# This system redefines the following methods:
# * use_sprite? (Game_Actor)
# * create_actors (Spriteset_Battle)
# * update_actors (Spriteset_Battle)
#
#
#------------------------------------------------------------------------------
#
# TERMS AND CONDITIONS:
#
# Free to use, even in commercial projects. Just note that I need some form
# of due credit... even a mere mention in some end titles.
#
#==============================================================================
#==============================================================================
# ** Actor_Battler Module
#------------------------------------------------------------------------------
# A module containing configurable data for the Actor Battler Graphic system.
#==============================================================================
module Actor_Battler
# Actor battler array
ACTOR = Array.new # Do not touch -_^
#========================================================================
# ** C O N F I G U R A T I O N S Y S T E M ** #
#========================================================================
# --Positioning--
# Actor Battler positioning system
#
CENTER_X = false # If true, centers actors rather than default lineup.
DEFAULT_X = 4 # Default party Max
SCREEN_Y = 325 # Vertical height of battlers
TRANSPARENT = false # If true, makes lightly transparent until attacking.
# --Actor List--
# Add your actor battlers here
#
# Actor# Filename, Hue (optional)
ACTOR[1] = ["$_Actor9"]
ACTOR[2] = ["021-Hunter02battler"]
ACTOR[3] = ["010-Lancer02"]
ACTOR[4] = ["Ylva", 0]
ACTOR[5] = ["$_Actor9"]
ACTOR[6] = ["$_Actor9"]
ACTOR[7] = ["$_Actor9"]
ACTOR[9] = ["$_Actor9"]
#========================================================================
# ** E N D O F C O N F I G U R A T I O N ** #
#========================================================================
end
#==============================================================================
# ** RPG Module
#------------------------------------------------------------------------------
# A module containing RPGVX Data Structures.
#==============================================================================
module RPG
#============================================================================
# ** Actor
#----------------------------------------------------------------------------
# Data class for actors
#============================================================================
class Actor
#------------------------------------------------------------------------
# * Alias Listings
#------------------------------------------------------------------------
alias actorbattler_init initialize
#------------------------------------------------------------------------
# * Object Initialization
#------------------------------------------------------------------------
def initialize
# Perform the original call
actorbattler_init
@battler_name = ""
@battler_hue = 0
end
end
end
#==============================================================================
# ** Game_Temp
#------------------------------------------------------------------------------
# This class handles temporary data that is not included with save data.
# The instance of this class is referenced by $game_temp.
#==============================================================================
class Game_Temp
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :battle_main_phase # battle flag: main phase
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias actorbattler_initialize initialize
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
# Perform the original call
actorbattler_initialize
# Set the main phase flag to false
@battle_main_phase = false
end
end
#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
# This class handles system-related data. Also manages vehicles and BGM, etc.
# The instance of this class is referenced by $game_system.
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :actorbattler_max # Max. size for centered battlers
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias actorbattler_initialize initialize
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
# Perform the original call
actorbattler_initialize
# Set 'Centered' battler max to 4 (default)
@actorbattler_max = Actor_Battler::DEFAULT_X
end
end
#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
# This class handles actors. It's used within the Game_Actors class
# ($game_actors) and referenced by the Game_Party class ($game_party).
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :screen_x # battle screen X coordinate
attr_accessor :screen_y # battle screen Y coordinate
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias actorbattler_init initialize
#--------------------------------------------------------------------------
# * Object Initialization
# actor_id : actor ID
#--------------------------------------------------------------------------
def initialize(actor_id)
# Perform the original call
actorbattler_init(actor_id)
# Apply battler graphic
@battler_name = Actor_Battler::ACTOR[actor_id][0]
# Apply battler hue if exists, else default of '0'
if Actor_Battler::ACTOR[actor_id][1] != nil
@battler_hue = Actor_Battler::ACTOR[actor_id][1]
else
@battler_hue = 0
end
end
#--------------------------------------------------------------------------
# * Change Battler
# battler_name : new battler graphic filename
# battler_hue : new battler hue setting (default = 0)
#--------------------------------------------------------------------------
def set_battler(battler_name = "", battler_hue = 0)
@battler_name = battler_name
@battler_hue = battler_hue
end
#--------------------------------------------------------------------------
# * Use Sprites?
#--------------------------------------------------------------------------
def use_sprite?
return true
end
#--------------------------------------------------------------------------
# * Get Battle Screen X-Coordinate
#--------------------------------------------------------------------------
def screen_x
if self.index != nil
if Actor_Battler::CENTER_X
# Return after calculating x-coords of centered party members
return self.index * (544 / $game_system.actorbattler_max) +
($game_system.actorbattler_max - $game_party.members.size) *
(272 / $game_system.actorbattler_max) +
(272 / $game_system.actorbattler_max)
else
# Return after calculating x-coords of default-aligned party members
return self.index * 136 + 68
end
else
return 0
end
end
#--------------------------------------------------------------------------
# * Get Battle Screen Y-Coordinate
#--------------------------------------------------------------------------
def screen_y
return Actor_Battler::SCREEN_Y
end
#--------------------------------------------------------------------------
# * Get Battle Screen Z-Coordinate
#--------------------------------------------------------------------------
def screen_z
# Return after calculating z-coordinate by order of members in party
if self.index != nil
return $game_party.members.size - self.index
else
return 0
end
end
end
#==============================================================================
# ** Sprite_Battler
#------------------------------------------------------------------------------
# This sprite is used to display battlers. It observes a instance of the
# Game_Battler class and automatically changes sprite conditions.
#==============================================================================
class Sprite_Battler < Sprite_Base
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias actorbattler_update update
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Perform the original call
actorbattler_update
# If the actor battlers are lightly transparent until they act
if Actor_Battler::TRANSPARENT == true
# If the battler is a visible actor battler
if @battler.is_a?(Game_Actor) and @battler_visible
# Bring opacity level down a bit when not in main phase
if $game_temp.battle_main_phase
self.opacity += 3 if self.opacity < 255
else
self.opacity -= 3 if self.opacity > 207
end
end
end
end
end
#==============================================================================
# ** Spriteset_Battle
#------------------------------------------------------------------------------
# This class brings together battle screen sprites. It's used within the
# Scene_Battle class.
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# * Create Actor Sprite
# Removes the 'empty' battler image used by the default system and
# replaces it. It also observes the actual size of the party and
# not a predetermined 4-party limit.
#--------------------------------------------------------------------------
def create_actors
@actor_sprites = []
for actor in $game_party.members.reverse
@actor_sprites.push(Sprite_Battler.new(@viewport2, actor))
end
end
#--------------------------------------------------------------------------
# * Update Actor Sprite
#--------------------------------------------------------------------------
def update_actors
# Reset actor battler sprites if party size increases
if $game_party.members.size > @actor_sprites.size
dispose_actors
create_actors
end
for sprite in @actor_sprites
sprite.update
end
end
end
#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
# This class performs battle screen processing.
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias actorbattler_s start
alias actorbattler_spcs start_party_command_selection
alias actorbattler_pv process_victory
alias actorbattler_ea execute_action
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
actorbattler_s
$game_temp.battle_main_phase = false
end
#--------------------------------------------------------------------------
# * Start party command selection
#--------------------------------------------------------------------------
def start_party_command_selection
actorbattler_spcs
if $game_temp.in_battle
$game_temp.battle_main_phase = false
end
end
#--------------------------------------------------------------------------
# * Victory Processing
#--------------------------------------------------------------------------
def process_victory
$game_temp.battle_main_phase = false
actorbattler_pv
end
#--------------------------------------------------------------------------
# * Start Execution of Battle Processing
#--------------------------------------------------------------------------
def execute_action
actorbattler_ea
$game_temp.battle_main_phase = true
end
end
Das Skript bewirkt, dass alle Actor im Kampfbildschirm, zusammen mit den Battlern angezeigt werden, ähnlich wie beim "Tankentei Sideview-KS".
Das einzige Problem nur, dass alle Actor starr stehen bleiben, was auf Dauer ein wenig langweilig wirkt. Deswegen wollte ich, dass alle Actor, so wie beim Sideview-KS eine "Stepping-Animation" haben (also auf der Stelle laufen).
Ich habe zuerst versucht, den Teil aus dem "Tankentei Sideview-KS" zu übernehmen, doch soweit ich das richtig verstanden habe, gibt es einen Grundlegenden Unterschied zwischen den beiden Skripten. Unzwar nutzt das Sideview-KS die Charactersets der Actor, wogegen sich das oben aufgeführte Skript die Character als Battler anzeigt. Man muss bei dem "Actor Battler Graphics-Skript" auch eine "Battler-Graphic" seines Helden nutzen. Ich habe einfach eine einzelne Pose eines Characters ausgeschitten und in den Battler-Ordner gepackt und dieser wird beim Skript auch richtig angezeigt, nur halt, dass er keine Stepping Animation hat.
Da das Skript die funktion mit der Stepping-Animation nicht besizt und meine Skript-Fähigkeiten sehr gering sind, wollte ich fragen ob jemand die funktion einbauen könnte, also ungefähr so, dass man im Battler-Ordner eine Pose hat, wo der Actor stehenbleibt (z.B. mit Sicht nach vorne) und die 2 Posen mit den Laufanimation zu der Pose und diese dann als eine "Stepping-Animation" angezeigt werden.
Wäre echt nett, wenn das jemand realisieren könnte, da das Skript im Gegensatz zum Sideview-KS mit allen meinen anderen Skripten kompatibel ist. Ich hoffe jemand kann eine Lösung dafür finden.
-
Huhu Ihr lieben.
Ich habe or ca. einer Woche angefangen mit dem RMVX zu basteln. Ich hatte vor einigen Jahren mal den 2k3er und das wars dann auch schon an Erfahrung. Ich habe gerade ein Video gesehen das mich echt zum staunen gebracht hat: http://www.youtube.com/watch?v=OVNSneroHKo (http://www.youtube.com/watch?v=OVNSneroHKo)
Nun meine Frage: 1. Wie kann man ein Titelintro machen? Ich kann da nur Bilder auswählen. 2. Frage: Wie geht es das man seine Charaktere im Kampf sieht? Bei mir kann ich nur die Gegner sehen. 3. Frage: Wie kann man in einem Kampf bzw. generell mitten im Spiel videos ablaufen lassen? Ich hab da nirgendswo eine "play .avi" funktion oder so gesehen. Tut mir leid wegen den ganzen Fragen, ich frage mich einfach nur wie sowas geht...
-
1. Wie kann man ein Titelintro machen? Was zum *** meinst du damit?
2. Frage: Wie geht es das man seine Charaktere im Kampf sieht? Das ist Kampfsystemabhängig, im Video wird das Sideview System benutzt und zwar das [url]http://www.rpgvx.net/index.php/topic,1626.0.html[/url] ([url]http://www.rpgvx.net/index.php/topic,1626.0.html[/url])
. 3. Frage: Wie kann man in einem Kampf bzw. generell mitten im Spiel videos ablaufen lassen? Dazu brauchst du auch ein Script [url]http://www.rpgrevolution.com/forums/?showtopic=14247[/url] ([url]http://www.rpgrevolution.com/forums/?showtopic=14247[/url])
Des weiteren verweise ich auf die ***** Suchfunktion^^ und die FAQs bzw. Tutorials.
so long.
mfG Derexor
-
mit 1 meine Ich das Titelmenü von dem. Das ist kein Bild sondern da läuft ein Video ;)
-
1. So wie ich das sehe hat der Typ ein Video Bearbeitungsprogramm genommen, sein SPiel aufgenommen, den Titelbildschirm aus dem Video geschnitten, und sein Intro vorgehängt.
2. Ob man sich sieht oder nicht hängt vom KS ab(Kampfsystem) in manchen Kampfsystemen sieht man Charaktere, in manchen nicht. Und der VX verwendet eben traditionell eines wo man sich nicht sieht. hier kann dir mit Skripts geholfen wie sie Derexor schon gepostet hat
3. IM Kampf geht das glaube ich auch nicht mit dem Skript...das funktioniert meines erachtens gar nicht
-
Danke für die Antworten ihr 2. Ich hab mir das mal angesehen. Also das KS wie in dem Video würde ich noch hinkriegen. Aber videos abspielen nicht mehr. Leider ist das eine englische erklärung. Ich habs nicht so mit englisch. Aber das mit den Videos klingt auch sau kompliziert. Hat das zufällig jemand auf deutsch in seinem script drin? vllt benutzt das ja jemand... Ich weiss nicht was ich da eingeben soll usw. Ich hasse englisch =(
-
Hay Haaku.
Zu deinen Fragen:
1. Das ist ein Script von Mog Hunter, das den Title Scene ziemmlich schön gestalten kann.
2. Das im Video verwendete KS ist ein SideviewKS, ich würde schon fast auf das Tenkai SBS tippen.
3. Auch hier ist ein Script benutzt worden, vor einiger Zeit wurde dieses ebenfalls im Scriptbereich gepostet.
Du findest sicher alle Scripts, wenn du die Suchfunktion mit präzisen Suchbegriffen verwendest.
MfG
Deity
-
mini-frage:
Also wie kann ich in dem serialskript:
#------------------------------------------------------------------
# Main
#-------------------------------------------------------------------
# Após o final de cada definição de classe o processo principal
# do jogo é iniciado. Esta é a classe principal do jogo.
#===================================
unless Font.exist?("UmePlus Gothic")
print "Der Font UmePlus wurde nicht gefunden. "
exit
end
def serial()
file = File.open('*/*.key') #aqui no exemplo estou com o arquivo na pasta "Serial"
# e o nome do arquivo é "serial.key", dentro dele está a serial.
content = file.readlines
for line in 0..content.size-1
if content[line].include?([desc=Wie mache ich ein oder? Mit | oder wie?]'*' oder '*'[/desc])#insira a maledeta serial aqui!
$serial = true
else
$serial = false
end
end
end
serial() # Ativa o Serial Code
begin
Graphics.freeze
if $serial == true
$scene = Scene_Title.new
else
print "Serial-Code wurde nicht gefunden oder ist ungültig."
exit
end
$scene.main while $scene != nil
Graphics.transition(30)
rescue Errno::ENOENT
filename = $!.message.sub("Datei nicht gefunden -",
"")
print("Die Datei # {filename} wurde nicht gefunden.")
end
ein oder hinzufügen
lg
-
Soo Kiigelein hat auch ein Problem
und zwar hab ich jetz einen eigene Font im Game
problem ist, das beim g, q und p die unteren striche abgeschnitten werden
und wollte nun wissen in welcher Class das gemacht wird
nach einer längeren sucherei im RGSS fand ich nichtmal ansatzweise nach was ich ausschau halten muss
es wäre nett wenn mir jemand aushelfen könnte
mfg Kiige
-
So auf ansage schreib ich es hier halt nochmal.
Ich nutze folgenden Script
http://www.rpgvx.net/index.php/topic,1130.0.html (http://www.rpgvx.net/index.php/topic,1130.0.html)
Nun hab ich das Problem wenn ich einen Text erscheinen lass das ich folgende Fehlermedlung bekomm
wenn ich versuche einen Kampf zu starten.
Script 'Window_Base' line 37: RGSSError occurrend.
disposed window
Auch wenn ich davor per set_text(7,'') den text leere kommt dieser fehler. Ich brauch diesen Script einfach um
mir bei Monster den Namen anzu zeigen. Alternativen währen auch gut.
Kann sich jemand den Fehler erklären?
Bild des nutzens:
http://img5.imagebanana.com/view/kyl07yl/Screen00006.jpg (http://img5.imagebanana.com/view/kyl07yl/Screen00006.jpg)
MfG Frischling Paragorn =D
-
So ich habe mal wieder eine Frage:
Ich wünsche mir, dass ich durch einen Note bei den Waffen einen eingegebenen zurück erhalten.
Dazu möchte ich das wie folgt machen:
In den Notes steht
Skill_id = n
also bspw.
Skill_id = 1
Den Wert "n" hätte ich dann gerne als Instance Variable
dazu dachte ich es mit
module RPG
class Weapon < BaseItem
def initialize
super
alias usw.
@skill_id = "n"
end
attr_accessor :skill_id
end
end
end
zu machen.
Wie kann ich also "n" hinter dem "Skill_id = " auslesen?
Ich bedanke mich schon jetzt für jede Antwort.
-
Soah nun muss es gehen!
:D
def gimme_skillid(item_id,item_kind = 2)
case item_kind
when 0 #Item
tags = $data_items[item_id].note.split
when 1 #Weapon
tags = $data_weapons[item_id].note.split
when 2 #Armor
tags = $data_armors[item_id].note.split
end
return (tags[tags.index("Skill_id")+2]).to_i if tags.index("Skill_id") != nil
end
Das ganze sollte denke ich nicht in RPG::Weapon gepackt werden, sondern mit dieser Methode genutzt werden.
MfG
Deity
-
Ich habe auch mal eine Frage:
Kann man den Background von einer Map durch einen anderen per
Script wechseln?
-
Denke du meinst das hier:
http://www.rpgvx.net/index.php/topic,4042.0.html
MfG
Deity
-
Ich hab auch mal 'ne Frage, nämlich zu hellMinor'S Questlog vllt. kann einer ja helfen.
Ich habe meine Fenster (Aktueller Quest/Abgeschlossene Quest) von der Größe her verändert, so dass aktueller Quest kleiner und abgeschlossene Quest größer ist. Jetzt mein Problem: Er will mir die Questbeschreibung nicht ganz anzeigen! Er schneidet das rechts immer weg. Was kann ich machen?
(http://i288.photobucket.com/albums/ll180/shyana188/Questlog.jpg)
Wenn's geht, könnte mir dann bitte auch einer sagen, wie ich's schaffe, dass das "Gehe" nicht in der 1. Zeile alleine steht?
Danke schonmal im Voraus.
Gruß Seranii ^.~
-
Denke du meinst das hier:
[url]http://www.rpgvx.net/index.php/topic,4042.0.html[/url]
MfG
Deity
Ja genau!
Vielen Dank!
-
Ich glaube ich bin einfach zu doof (SuFu hab ich nix gefunden), aber wie ist der Befehl um in einem Script ein Fenster zu öffnen in dem steht: Die maximale Anzahl ist schon erreicht.
Hoffe auf Hilfe!
PS: Falls das schon irgendwo steht, ich habe es mit SuFu probiert und nix gefunden (falsche Stichworte?).
-
print ("die max anzahl ist schon erreicht !")
Das ist das einziege was ich weiss.
-
Vielen Dank, aber ich meinte eigentlich ein normales "Rpg-Window".
Ich glaube ich weiß jetzt den Befehl, aber ich wüsste noch gerne wie ich dessen Koordinaten festlege und es nach einiger Zeit wieder schließe.
Edit: Ich habe vielleicht doch den falschen Befehl, bei mir wird angezeigt, dass ich den Text ausgewählt habe.
-
hab ne frage zu nem call script...
und zwar möchte ich über eine Bedingung abfragen, ob neben, über oder unter mir ein passierbares event ist...
Hab bis jetzt hingekriegt, dass ich abfragen kann, ob ein bestimmtes event neben mir passierbar ist, ich brauch es aber so, dass es sich auf events allgemein bezieht
(also ohne event_id):
bisherige Zeile:
$game_player.pos?($game_map.events[EVENT_ID].x, $game_map.events[EVENT_ID].y)
Beispiel:
$game_player.pos?($game_map.events[1].x, $game_map.events[1].y)
damit kann ich abfragen ob (hier) Event 1 neben mir ist und passierbar ist...
ich brauchs aber so, dass ich abfragen kann, ob überhaupt ein event neben mir ist und passierbar ist....
hoffe ich konnte es gut genug erklären... ich brauch das, weil ich ein Drag & Drop System mit Events gemacht hab, aber man die sachen in events "reinwerfen" kann, was man nicht sollte^^
vielen dank für die hilfe^^
-
Hi MicroJumper,
soweit ich mir es denken kann, bedeutet diese Abfrage:
$game_player.pos?($game_map.events[1].x, $game_map.events[1].y)
ob der Character (Player) die Koordinaten des Events besitzt, und nicht ob diese "Stelle" passierbar ist.
$game_player.pos?($game_map.events[1].x, $game_map.events[1].y)
Würde also true zurückgeben, falls der Spieler und das erste Event die selben Koordinaten haben. Für die Passierbarkeit müsstest du wohl nach einer anderen Methode suchen.
Um abzufragen ob ein Event neben dir ist, kannst du dir z.B. das hier anschauen:
Hay InJ,
Mein derzeitig wichtigstes/größtes Problem ist die Abfrage des Ortes von dem Gegner.
Zu deinem jetzigen Problem, habe ich eine Lösung, entweder du benutzt wie schon im IRC gesagt, die Variante mit den Events, sprich du benutzt 4 Variablen, und setzt 2 immer mit den Koordinaten des Events und 2 mit den Koordinaten des Spielers, und addierst bzw. subtrahierst 1,um rauszubekommen, ob die beiden neben ein ander stehen.
Hierfür kannst du nochmal in meinem etwas älterem Tut, unter Anwendung der Variablen ein kleines Beispiel finden, was auf diese Problematik aufbaut.
*Schleichwerbung* => Link zum Tutorial ([url]http://www.rpgvx.net/index.php/topic,3435.0.html[/url])
Die zweite Möglichkeit ist, die zuerst nicht geklappt hat, aber jetzt wunderbar läuft ist eine kleine Erweiterrung für den Game_Interpreter.. Probier einfach mal das hier aus (Benutzung hat sich etwas verändert, aber zum positiven. :)):
=begin
Benutzung: Um eine ABfrage zu starten, ob das Event neben einem anderem Event oder neben einem SPieler steht,
zu starten, musst du unter Conditional Branch, Script, je nach Fall folgendes eingeben:
Bei Abfrage, ob ein Event neben dem Spieler steht:
nexto_to(event_id des events,true)
Bei Abfrage, ob ein Event neben einem anderem Event steht;
next_to(event_id des ersten events, false , event_id des zweiten events)
=end
class Game_Interpreter
def next_to(event_id1 = nil , player = false , event_id2 = nil)
if player == false
if $game_map.events[event_id1] != nil && $game_map.events[event_id2] != nil
if $game_map.events[event_id1].x == $game_map.events[event_id2].x + 1 && $game_map.events[event_id1].y == $game_map.events[event_id2].y || $game_map.events[event_id1].x == $game_map.events[event_id2].x - 1 && $game_map.events[event_id1].y == $game_map.events[event_id2].y || $game_map.events[event_id1].y == $game_map.events[event_id2].y + 1 && $game_map.events[event_id1].x == $game_map.events[event_id2].x || $game_map.events[event_id1].y == $game_map.events[event_id2].y - 1 && $game_map.events[event_id1].x == $game_map.events[event_id2].x
return true
else
return false
end
end
end
if player == true
if $game_player.x == $game_map.events[event_id1].x + 1 && $game_player.y == $game_map.events[event_id1].y || $game_player.x == $game_map.events[event_id1].x - 1 && $game_player.y == $game_map.events[event_id1].y || $game_player.y == $game_map.events[event_id1].y + 1 && $game_player.x == $game_map.events[event_id1].x || $game_player.y == $game_map.events[event_id1].y - 1 && $game_player.x == $game_map.events[event_id1].x
return true
else
return false
end
end
end
end
D.h so viel wie: Wenn der Gegner neben dem "Helden" steht soll er zufällig eine Aktion ausführen. Je nach Aktionspunkten ihm erlaubt sind.
Dazu kann man auch folgende Idee verwenden:
Erstelle ein Label, in dem eine Variable einen Zufallswert, mit dem Maximalwert, der Anzahl der möglichen Aktionen annehmen kann. Dann wird gegukt/abgefragt, welchen Wert die Variable hat, sobald die Variable einen Wert, der Aktion annimmt, wird abgefragt, ob die Anzahl der Punkte genügt. Falls Ja, so wird die aktion ausgeführt,und das Label beendet, ansonsten wird das Label von neu aufgeruffen. Da du willst, dass der Gegner neben dem Spieler ist, musst du vorher eine der oben genannten Möglichkeiten benutzen, um das Label überhaupt starten zu können.
Als Anmerkung: bei manchen Aktionen wie Angriff etc., kannst du noch vorher mit Variablen die Richtung ermitteln, in die das Event schauen muss, um wirklich den Spieler anzuschauen.
Ich hoffe ich hab mich halbwegs verständlich ausgedrückt.
Falls du weitere Fragen hast, helfe ich gern.
MfG
Deity
Man kann das ganze auch mit Eventing machen, was aber bei einer großen Anzahl von Events sehr aufwendig werden kann.
Für die Passierbarkeit fällt mir gerade nichts ein, aber ich antworte falls ich was finde.
MfG
Deity
-
hm ... meine frage past eigendlich super zum aktuellen thema ....
ich will in meinem event ein script aufrufen ...
der mir in der variable @This_X = $game_map.events[1].x
speichert, so weit - so gut. das problem ... ich möchte als array keine 1 sondern sowas wie this
da ich ja IN dem gewünschten event bin.
ich möchte nämlich das das event so allgemein wie möglich ist, das es immer wieder passt egal sogar nach copy&past
zuerst dachte ich mir... ach ist ja nicht so wild da ne 1, 18 oder 22 reinzuschreiben ... doch .... damit funzt es nicht ... die event id lese ich unten rechts ab
da steht dann z.b. 18:<eventname>
somit weis ich das die id 18 ist ... oder?
jedoch scheint das nicht so zu funzen wie ich will ... und zwar scheitert es an einer if/abfrage
und zwar an: $game_variables[1] == @This_X
die variablen id ist auch wirklich 0001 (oder muss ich die um 1 dekrementieren ?)
ach und wo ich grad dabei bin ... durch das @ ist es doch ne lokale variable .... oder?
wenn nein wie mach ich lokale ?
edit -> achja ... die variablen sollten evlt. für die ganze map (nicht das ganze game) gelten ...
edit2 ->
mein problem ist, das ich mich nur ganz wage mit scripten auskenne ... und leider nirgends eine sytax übersicht finden kann (die würde mir schon sehr helfen....)
meine idee wäre nun:
alle events um mein - vom spieler - aktiviertes event herum abzufragen, und zu checken ob der name gleich XX ist ...
wie gesagt ich brauch nur syntax hilfe ....
danke schonmal
-
hmm... wegen meiner frage zu der passierbarkeits abfrage...
ich hab eig. was anderes gemeint...
ich will nicht abfragen, ob EIN BESTIMMTES EVENT neben mir ist sondern ob ÜBERHAUPT EIN EVENT neben mir ist sollte ungefähr so aussehen...
also statt mit event id:
$game_player.pos?($game_map.events[1].x, $game_map.events[1].y)
ohne Event id also alle events iwie...:
$game_player.pos?($game_map.events.x, $game_map.events.y)
Beispiel wie ichs gern hätte:
Bedingung:
Ist irgendein Event neben dem Spieler?
wenn ja:
Abwerfen von Item nicht erlaubt!
wenn nein:
Abwerfen von Item erlaubt!
Ideal wäre dan ungefähr so:
Bedingung:
Ist irgendein Event neben dem Spieler, welches passierbar ist?
wenn ja:
Abwerfen von Item nicht erlaubt!
wenn nein:
Abwerfen von Item erlaubt!
-
=begin
Benutzung: Um eine Abfrage zu starten, ob das Event neben einem anderem Event oder neben einem SPieler steht,
zu starten, musst du unter Conditional Branch, Script, je nach Fall folgendes eingeben:
Bei Abfrage, ob ein Event neben dem Spieler steht:
nexto_to(event_id des events,true)
Bei Abfrage, ob ein Event neben einem anderem Event steht;
next_to(event_id des ersten events, false , event_id des zweiten events)
Bei ABfrage, ob irgendein Event neben dir ist, einfach folgendes eingeben:
some_nearly_events?
Bei Abfrage, ob irgendein passables Event neben dir ist:
some_passable_events_nearly?
=end
class Game_Event
attr_reader :id
end
class Game_Interpreter
def some_nearly_events?
for event in $game_map.events.values
if next_to(event.id,true)
return true
end
end
return false
end
def some_passable_events_nearly?
for event in $game_map.events.values
if next_to(event.id,true) && right_priot(event)
return true
end
end
return false
end
def right_priot(event)
return true if event.priority_type == 0 || event.priority_type == 2
return false
end
def next_to(event_id1 = nil , player = false , event_id2 = nil)
if player == false
if $game_map.events[event_id1] != nil && $game_map.events[event_id2] != nil
if $game_map.events[event_id1].x == $game_map.events[event_id2].x + 1 && $game_map.events[event_id1].y == $game_map.events[event_id2].y || $game_map.events[event_id1].x == $game_map.events[event_id2].x - 1 && $game_map.events[event_id1].y == $game_map.events[event_id2].y || $game_map.events[event_id1].y == $game_map.events[event_id2].y + 1 && $game_map.events[event_id1].x == $game_map.events[event_id2].x || $game_map.events[event_id1].y == $game_map.events[event_id2].y - 1 && $game_map.events[event_id1].x == $game_map.events[event_id2].x
return true
else
return false
end
end
end
if player == true
if $game_player.x == $game_map.events[event_id1].x + 1 && $game_player.y == $game_map.events[event_id1].y || $game_player.x == $game_map.events[event_id1].x - 1 && $game_player.y == $game_map.events[event_id1].y || $game_player.y == $game_map.events[event_id1].y + 1 && $game_player.x == $game_map.events[event_id1].x || $game_player.y == $game_map.events[event_id1].y - 1 && $game_player.x == $game_map.events[event_id1].x
return true
else
return false
end
end
end
end
Habe das alte Script ergänzt und nun macht es genau das was du willst, glaube ich zumindestens. :D
Also es liefert true, wenn iein Event neben dir ist, wenn du in Conditional Branch: some_nearly_events? eingibst und es liefert true, oder
wenn du :some_passably_events_nearly? eingibst liefert er den Wert true, wenn ein Event neben dir ist, welches die Priorität unter oder über dem Spieler haben(Begehbar sind).
MfG
Deity
-
Hallo, ich weiß, dass ich hier wahrscheinlich im falschen topic schreibe (bin mir nicht klar, wo ich sonst schreiben sollte),
dennnoch wollte ich hier fragen, weil ich den Skript nicht aktualisieren will,
ob man im SMS-Skript von Woratana (http://www.rpgvx.net/index.php/topic,797.0.html (http://www.rpgvx.net/index.php/topic,797.0.html))
so verändern könnte , dass man nicht mehr mit den oberen,linken Bereich klickt (http://www4.pic-upload.de/08.02.10/x9rrgwebwnux.png) , sondern eher mit der Mitte (http://www4.pic-upload.de/08.02.10/ny73jaq34xm4.png) .
Damit man es sich besser vorstellen kann : es soll so ausgerichtet sein, dass man mit der Maus dann Events abschießen kann . (Oder schreibe ich doch hier im richtigen topic? Weiß nicht, bin ein wenig ratlos :D .)
Ich bedanke mich im Voraus,
_D3nn!§_
-
hm ... geht bestimmt ... das cursor-bild muss man nur um ein wenig nach links oben verschieben
ich kenn mich jetzt nicht mit scripten aus .... aber das dürfte so schwer nicht sein ... du musst die stelle suchen an der das bild auf maus koordinaten gelegt wird un den maus koordinaten ein wenig hinzuaddieren
(wobei es auch suptrahieren sein könnte .... ists auch eher denke ich....)
-
#==============================================================================
# [VX] SMS - Simple Mouse System
#------------------------------------------------------------------------------
# ? by Woratana [woratana@hotmail.com]
# ? Released on: 14/04/2008 (D-M-Y)
# ? Version: 1.5
#
# ? Credit: DerVVulfman, Near Fantastica, and Freak Boy [Mouse Input Module]
# lambchop, shun, Cybersam, Astro_mech, and Mr.Mo [Super Simple Mouse System]
# - Modern Algebra, Zeriab, Patrick Lester [Path Finding]
# - Near Fantastica, Fuso [Path Finding]
#
# - I will not be able to script this without those people and scripts above
#-----------------------------------------------------------------------------
#====[REQUIRE]=====
# - DerVVulfman's Mouse Input Module
# - Modern Algebra's Path Finding [version 2.0]
#
#====[FEATURE]=====
# - Support to use mouse in many scenes / windows
# - Mouse Pointer
# - Click on map to move player with Path Finding
# - Click on event to go talk/interact with that event
# - Click on event to walk to that event
# - You can choose scene(s) that don't want to use mouse
# - You can turn mouse ON/OFF automatically by call script:
# $scene.no_mouse = (true/false) # True to turn off mouse
#====[MOUSE TAGS]=====
# Put one (or more) of these tags in the event command 'Comment..'
# [mauto] : This event will run automatically after click on it
# [mnone] : This event will not be determine as event when click on it
# (a.k.a. Player will not interact with it)
# [mtop] : Player will always stop at tile above this event when click on it
# [mleft] : Same as [mtop], but left side
# [mright] : Same as [mtop], but right side
# [mdown] : Same as [mtop], but below
#------------------------------------------------------------------------------
module Mouse
#==============================================================================
# MOUSE SETUP PART
#----------------------------------------------------------------------------
Scroll_Delay = 30 # (in Frames)
# Mouse Delay when scroll up or down the list
Path_Finding_Iteration = 0 # (Integer, 0 for no limit)
# How deep you want path finding to process until find the way
# less number will be able to find only easy path, less lag
# high number will be able to find complicated path, possible to increase lag
Scene_No_Mouse = []
# Scene(s) that you don't want to use mouse
# e.g. Scene_No_Mouse = [Scene_File, Scene_Map, Scene_Title]
Auto_Find_Destination = true
# It will automatically find the cloeset destination on map
# when click on unpassable tile.
#==============================================================================
end
#==============================================================================
# ** Mouse Input Module
#==============================================================================
class << Mouse
show_cursor = Win32API.new('user32', 'ShowCursor', 'l', 'l')
show_cursor.call(0)
$mousec = Sprite.new
$mousec.z = 10001
$mousec.x = $mousec.y = 1000
$mouse_icon = $base_cursor = 'foxkeh_cursor'
$mousec.bitmap = Cache.system($base_cursor)
$mouse_duration = -1
$mouse_changed = false
alias wor_mouse_upd_mouse update unless $@
def Mouse.update
wor_mouse_upd_mouse
if $scene.no_mouse
$mousec.visible = false if $mousec.visible
return
else; $mousec.visible = true if !$mousec.visible
end
if $mouse_old_icon.nil? or $mouse_old_icon != $mouse_icon
$mouse_old_icon = $mouse_icon
$mousec.bitmap = Cache.system($mouse_old_icon)
end
if @pos.nil?
$mousec.x = 1000 if $mousec.x != 1000
$mousec.y = 1000 if $mousec.y != 1000
else
$mousec.x = @pos[0] - ($mousec.width / 2) if $mousec.x != @pos[0] - ($mousec.width / 2)
$mousec.y = @pos[1] - ($mousec.height / 2) if $mousec.y != @pos[1] - ($mousec.height / 2)
end
end
def Mouse.map_pos
return nil if @pos == nil
x = ($game_map.display_x / 256) + (@pos[0] / 32)
y = ($game_map.display_y / 256) + (@pos[1] / 32)
return [x, y]
end
end
#==============================================================================
# ** Input
#==============================================================================
class << Input
alias wor_input_upd_mouse update unless $@
alias wor_input_trig_mouse trigger? unless $@
alias wor_input_rep_mouse repeat? unless $@
def Input.update
wor_input_upd_mouse
Mouse.update
end
def Input.trigger?(input)
return wor_input_trig_mouse(input) if Mouse.pos.nil?
if input == Input::B and !$scene.no_mouse
return (wor_input_trig_mouse(input) or Mouse.click?(2))
elsif input == Input::C and !$scene.no_mouse
if $scene.is_a?(Scene_Map) and !$game_message.visible
return wor_input_trig_mouse(input)
else
return (wor_input_trig_mouse(input) or Mouse.click?(1))
end
else
return wor_input_trig_mouse(input)
end
end
def Input.repeat?(input)
if input == Input::B and !$scene.no_mouse
return (wor_input_rep_mouse(input) or Mouse.click?(2))
else
return wor_input_rep_mouse(input)
end
end
end
#==============================================================================
# ** Graphics
#==============================================================================
class << Graphics
alias wor_graph_fadeout_mouse fadeout unless $@
def Graphics.fadeout(frames = 1)
$mousec.visible = false if !$mousec.nil?
wor_graph_fadeout_mouse(frames)
end
end
#==============================================================================
# ** Window_Selectable
#==============================================================================
class Window_Selectable < Window_Base
alias wor_winsel_ini_mouse initialize
alias wor_winsel_upd_mouse update
def initialize(*args)
wor_winsel_ini_mouse(*args)
@scroll_wait = 0
@cursor_wait = 0
end
def update
wor_winsel_upd_mouse
update_mouse if self.active and self.visible
end
def update_mouse
@cursor_wait -= 1 if @cursor_wait > 0
(0..@item_max - 1).each do |i|
irect = item_rect(i)
irx = self.x + 16 + irect.x - self.ox
iry = self.y + 16 + irect.y - self.oy
move_cursor(i) if Mouse.area?(irx, iry, irect.width, irect.height)
end
end
def move_cursor(index)
return if @index == index
@scroll_wait -= 1 if @scroll_wait > 0
row1 = @index / @column_max
row2 = index / @column_max
bottom = self.top_row + (self.page_row_max - 1)
if row1 == self.top_row and row2 < self.top_row
return if @scroll_wait > 0
@index = [@index - @column_max, 0].max
@scroll_wait = Mouse::Scroll_Delay
elsif row1 == bottom and row2 > bottom
return if @scroll_wait > 0
@index = [@index + @column_max, @item_max - 1].min
@scroll_wait = Mouse::Scroll_Delay
else
@index = index
end
return if @cursor_wait > 0
Sound.play_cursor
@cursor_wait += 2
end
end
#==============================================================================
# ** Window_MenuStatus
#==============================================================================
class Window_MenuStatus < Window_Selectable
def item_rect(index)
return Rect.new(0, index * 96, contents.width, 96)
end
end
#==============================================================================
# ** Window_NameInput
#==============================================================================
class Window_NameInput < Window_Base
alias wor_winnam_upd_mouse update
def update
wor_winnam_upd_mouse
if self.active and self.visible
(0..TABLE[@mode].size - 1).each do |i|
irect = item_rect(i)
irx = self.x + 16 + irect.x - self.ox
iry = self.y + 16 + irect.y - self.oy
@index = i if Mouse.area?(irx, iry, irect.width, irect.height)
end
end
end
end
#==============================================================================
# ** Window_PartyCommand
#==============================================================================
class Window_PartyCommand < Window_Command
def update_mouse
(0..@item_max - 1).each do |i|
irect = item_rect(i)
irx = self.viewport.ox + 16 + irect.x - self.ox
iry = 288 + 16 + irect.y - self.oy
self.index = i if Mouse.area?(irx, iry, irect.width, irect.height)
end
end
end
#==============================================================================
# ** Window_ActorCommand
#==============================================================================
class Window_ActorCommand < Window_Command
def update_mouse
(0..@item_max - 1).each do |i|
irect = item_rect(i)
irx = self.viewport.ox + 288 + 16 + irect.x
iry = 288 + 16 + irect.y
self.index = i if Mouse.area?(irx, iry, irect.width, irect.height)
end
end
end
#==============================================================================
# ** Window_Message
#==============================================================================
class Window_Message < Window_Selectable
def update_mouse
(0..@item_max - 1).each do |i|
irect = item_rect(i)
irx = self.x + 16 + irect.x - self.ox
iry = self.y + 16 + irect.y - self.oy + ($game_message.choice_start * WLH)
self.index = i if Mouse.area?(irx, iry, irect.width, irect.height)
end
end
end
#==============================================================================
# ** Scene_Base
#==============================================================================
class Scene_Base
alias wor_scebase_posstr_mouse post_start
alias wor_scebase_preter_mouse pre_terminate
attr_accessor :no_mouse
def post_start
if !$mousec.nil?
$mousec.visible = true
@no_mouse = false
# If this scene is in Scene_No_Mouse
Mouse::Scene_No_Mouse.each do |sce|
if $scene.is_a?(sce)
$mousec.visible = false
@no_mouse = true
end
end
end
wor_scebase_posstr_mouse
end
def pre_terminate
$mousec.visible = false if !$mousec.nil?
wor_scebase_preter_mouse
end
end
#==============================================================================
# ** Scene_File
#==============================================================================
class Scene_File < Scene_Base
alias wor_scefil_upd_mouse update
def update
(0..@item_max - 1).each do |i|
ix = @savefile_windows[i].x
iy = @savefile_windows[i].y
iw = @savefile_windows[i].width
ih = @savefile_windows[i].height
if Mouse.area?(ix, iy, iw, ih)
@savefile_windows[@index].selected = false
@savefile_windows[i].selected = true
@index = i
end
end
wor_scefil_upd_mouse
end
end
#==============================================================================
# ** Scene_Map
#==============================================================================
class Scene_Map < Scene_Base
alias wor_scemap_upd_mouse update
def update
wor_scemap_upd_mouse
if !@no_mouse
# IF left click
if Mouse.click?(1) and !$game_message.visible and
!$game_map.interpreter.running?
mouse_xy = Mouse.map_pos
return if mouse_xy.nil?
old_direction = $game_player.direction
$game_player.turn_toward_pos(mouse_xy[0], mouse_xy[1])
# IF click near player, and there's trigger to event, run event
return if ($game_player.front?(mouse_xy[0],mouse_xy[1]) and
$game_player.check_action_event)
$game_player.clear_path
$game_player.mouse_force_path(mouse_xy[0], mouse_xy[1])
# IF middle click
elsif Mouse.click?(3) and !$game_message.visible and
!$game_map.interpreter.running?
mouse_xy = Mouse.map_pos
return if mouse_xy.nil?
$game_player.clear_path
$game_player.turn_toward_pos(mouse_xy[0], mouse_xy[1])
end
end
end
end
#==============================================================================
# ** Game_Character
#==============================================================================
class Game_Character
def mouse_force_path(x, y, auto_check = ($game_map.events_xy(x, y).size > 0))
ori_x, ori_y = x, y
path_xy = $game_map.find_dest_xy(x, y, @x, @y)
return if path_xy.nil?
x, y = path_xy[0] ,path_xy[1]
# Force_move from MA's path finding
if map_passable?(x,y)
path = $game_map.find_path (self.x, self.y, x, y, false,
Mouse::Path_Finding_Iteration, self)
path.reverse!
# Turn toward destination
newmove = RPG::MoveCommand.new
newmove.code = 45 # Script..
newmove.parameters = ["turn_toward_pos(#{ori_x},#{ori_y})"]
path.push newmove
# Add script to check if there's event trigger
if auto_check
newmove = RPG::MoveCommand.new
newmove.code = 45
newmove.parameters = ['check_action_event']
path.push newmove
end
# Add an end command
path.push (RPG::MoveCommand.new (0))
move_route = RPG::MoveRoute.new
move_route.list = path
move_route.repeat = false
force_move_route (move_route)
end
end
def clear_path
@move_route_index = 0
@move_route = RPG::MoveRoute.new
@move_route.repeat = false
end
def turn_toward_pos(x,y)
sx = distance_x_from_pos(x)
sy = distance_y_from_pos(y)
if sx.abs > sy.abs # Horizontal distance is longer
sx > 0 ? turn_left : turn_right
elsif sx.abs < sy.abs # Vertical distance is longer
sy > 0 ? turn_up : turn_down
end
end
def distance_x_from_pos(x)
sx = @x - x
if $game_map.loop_horizontal?
if sx.abs > $game_map.width / 2
sx -= $game_map.width
end
end
return sx
end
def distance_y_from_pos(y)
sy = @y - y
if $game_map.loop_vertical?
if sy.abs > $game_map.height / 2
sy -= $game_map.height
end
end
return sy
end
def front?(x,y)
case @direction
when 2; return true if (x == @x-1 and y == @y)
when 4; return true if (x == @x and y == @y-1)
when 6; return true if (x == @x and y == @y+1)
when 8; return true if (x == @x+1 and y == @y)
end
return false
end
end
#==============================================================================
# ** Game_Map
#==============================================================================
class Game_Map
# Find Destination for Path Finding
def find_dest_xy(x, y, self_x, self_y)
has_event = false
event_ary = events_xy(x, y)
# Remove Event that has 'mnone'
(event_ary).each do |i|
event_ary.delete(i) if i.comment?('[mnone]')
end
# Return original x, y if there are more than 1 events,
# or the only event has priority type 'Below Character'
if (event_ary.size == 1 and event_ary[0].priority_type != 1) or
event_ary.size > 1
return [x, y]
elsif event_ary.size == 1
# IF there's event, check for reserved direction
has_event = true
if event_ary[0].comment?('[mtop]')
return [x, y-1]
elsif event_ary[0].comment?('[mleft]')
return [x-1, y]
elsif event_ary[0].comment?('[mright]')
return [x+1, y]
elsif event_ary[0].comment?('[mdown]')
return [x, y+1]
elsif event_ary[0].comment?('[mauto]')
event_ary[0].start
return nil
end
end
# Check for passable direction or it's Same X/Y or doesn't allow auto-find
if (event_ary.size != 1 and $game_player.map_passable?(x, y)) or (self_x == x and self_y == y) or
(!Mouse::Auto_Find_Destination and !has_event)
return [x, y]
end
# Find nearest path
nx = (self_x - x)
ny = (self_y - y)
npath_real = []
if (nx.abs < ny.abs and nx != 0) or (ny == 0) # X is closer than Y
npath_real << (nx > 0 ? 'right' : 'left')
else # EQUAL, or Y is closer than X
npath_real << (ny > 0 ? 'up' : 'down')
end
npath_real_tran = move_translate(npath_real, x, y) # Translate word to value
# If the fastest way is possible, return it
if $game_player.map_passable?(npath_real_tran[0][0], npath_real_tran[0][1])
return [npath_real_tran[0][0], npath_real_tran[0][1]]
end
npath = []
# Add other possible ways
npath << 'up' if !npath_real.include?('up')
npath << 'left' if !npath_real.include?('left')
npath << 'down' if !npath_real.include?('down')
npath << 'right' if !npath_real.include?('right')
npath = move_translate(npath, x, y) # Translate other possible ways
(0..npath.size-1).each do |np| # Calculate distance from each point
npath[np] =
[npath[np], (self_x - npath[np][0]).abs + (self_y - npath[np][1]).abs]
end
npath = npath.sort_by {|i| i[1]} # Sort by Distance
# Check to move~
npath.each do |n|
return [n[0][0], n[0][1]] if $game_player.map_passable?(n[0][0], n[0][1])
end
# IF there's no way to go
return nil
end
def move_translate(ary, x, y)
(0..ary.size - 1).each do |n|
if ary[n] == 'up'
ary[n] = [x, y-1]
elsif ary[n] == 'left'
ary[n] = [x-1, y]
elsif ary[n] == 'right'
ary[n] = [x+1, y]
elsif ary[n] == 'down'
ary[n] = [x, y+1]
end
end
return ary
end
end
#==============================================================================
# ** Game_Event
#==============================================================================
class Game_Event < Game_Character
def comment?(comment, return_index = false )
if !@list.nil?
for i in 0...@list.size - 1
next if @list[i].code != 108
(0..@list[i].parameters.size - 1).each do |j|
if @list[i].parameters[j].include?(comment)
return [true, [i,j]] if return_index
return true
end
end
end
end
return [false, nil] if return_index
return false
end
end
Du musst das Script einfach mit dem von Wora ersetzen, und schon wird das Zentrum des Bildes als Maus gewählt. :)
MfG
Deity
-
@ Ðeity :
Danke es funktioniert ! ^^
-
Immer wieder gern. ;)
MfG
Deity
-
Hiho,
ist wahrscheinlich ne ganz simple sache aber ich finds net xD
unzwar hätte ich gern das die Faces im Kampf nicht angezeigt oder auch einfach transparent sind.
(http://img222.imageshack.us/img222/9429/unbenanntyl.png) (http://img222.imageshack.us/i/unbenanntyl.png/)
Also die schwarzumrandeten facesets müssen wech ^^ aber NUR im Kampf im menü müssen sie da bleiben.
Muss ich da iwo was an den Standart Scripten vom Maker ändern, wenn ja wo? Oder brauch ich dafür nen Extra Script?
Da ich ja iwo was an oder mit Scripten ändern muss dacht ich passt hier rein ^^.
thx für jede Hilfe :D
EDIT: Ok Problem gelöst musste an dem Script für das KS was ändern nicht an dem normalen KS Script wie ich erst dachte ^^.
mfg
-
Hey Leute ich hab echt keine ahnung von skripten und so aba ich will unbedingt in meinem RPG das sideview battlesystem haben und weiß echt nicht wie ich das machen sol kann mir einer pls genauestens dabei helfen.
-
Am einfachsten wäre es für dich, erstmal die Demo runterzuladen, und dein Spiel in die Demo zu implementireren, und nicht anders rum. Dabei musst du halt daraufachten, dass keiner der Statuse,Skills und weiteren Voreinstellungen nicht verloren gehen. Hast du das geschaft, ist dein Spiel mit SideView kompartible. :)
Und btw. da gibt es doch eine Anleitung oder nicht?!?
MfG
Deity
-
ja ich check die anleitung aba nciht und welche demo meinst du eigentlcih.
mfgz Vylf
-
Naja fangen wir mal ganz einfach an,
sprechen wir beide von RPG Tankentai Sideview V. 3.3 ?
=> http://www.rpgvx.net/index.php/topic,1626.0.html
Unter Demo kannst du 3 verschiedene Demos runterladen.
Unter Instructions findest du eine "genaue" Anleitung zum Einfügen des Kampfsystems.
MfG
Deity
-
aso okay danke cih schau dann mal nach
lg Vylf
Post zusammen gefügt: März 07, 2010, 01:10:56
so das mit dem sideview hab ich hingekriegt noch mal danke Deity jez will ich mal wissen wie man das mit battle background macht das man in bestimmten gegenden bestimmte backrounds hat, kann mir da einer helfen
MFG Vylf
Post zusammen gefügt: März 08, 2010, 21:40:18
also ich meine wenn ich im wald bin nen bestimmten background im kampf für wald und wenn ich in ner wüste bin dann da wieder nen anderen background und so weiter kann mir da einer helfen fals das mit skripts funzt dann bitte ich um hilfe denn von skripts versteh ich nicht alzuviel danke
MFG Vylf
-
Ich hab folgendes Script - ein Kampfsystem...
http://www.rpg-studio.de/scriptdb/de/RPG-Tankentai-Sideview-Battle-System.html (http://www.rpg-studio.de/scriptdb/de/RPG-Tankentai-Sideview-Battle-System.html)
Ich möchte gerne dieses Kampfsystem benutzen, allerdings mit einer kleinen Veränderung.
Beim Kampf wird immer die Grafik des Charakters geladen. Beim Angriff läuft der Char zum Mob, attackiert den (mit den normalen Animationen) und dreht sich schnell um und rennt schnell zurück. Genau hier, also bei den Angriffen, wenn er da einfach steht oder zum Mob läuft und wieder zrück, werden immer die Grafiken benutzt, die acuh in der normalen Spielwelt benutzt werden.
Kann man das ganze irgendwie trennen? Also fürs Kämpfen andere Grafiken verwenden...
Wenn der Char da steht und auf Befehl wartet
-->gezeigt wird der die normale Grafik, also die Laufanimation wird angezeigt, erzeugt durch zwei Standbildern - einmal rechtes und einmal linkes Bein vorn..
-->diesen Teil will ich ersetzen durch zwei andere Grafiken..
Wenn der Char zum Mob läuft
-->gezeigt wird eben wie der Char zum Mob läuft..
-->das will ich nicht haben, komplett weg damit :)
Dann folgt die Animation der Attacke
-->gezeigt wird eine ganz normale Animation
-->die will ich behalten, kann ich auch so unter Datenbank, Animation manuell ändern..
Hoffe ihr versteht das xD
-
Hallo Allerseits :D
Ich hätte auch mal so ein klizekleines Prob. xD
Ich versuchs so gut wie möglich zu erklären ;)
Es geht um das vor längerem gepostete "Actor Profile Information"-Script (seite 4 dieses Hilfe Threads für die die nicht wissen wo´s zu finden ist)
Und zwar geht es aus irgendeinem unerfindlichen grund bei mir leider überhaupt nicht! An anderen scripts, veränderungen an den Grundeinstellungen etc. kann es nicht liegen da ich es zu erst an einem neuen Projekt testen wollte um sicher zu gehn das ich damit nicht zu viel überschreibe, (bin kein Profiskripter, höchstens Anfänger xD) wie auch immer. Sobald ich das Menü aufrufe, und im Status auf C klicke stürtzt das spiel ab. Ich hab mich lange damit beschäftigt und mir das Skript genau angesehn aber ich komm einfach nicht drauf was der Fehler ist. Von zusätzlich benötigten Fonts, Png Bilder etc. wird auch in den dazugehörigen Posts nichts erwähnt -.- (oder bin ich blind?)
Naja ich würde mich sehr freuen wenn mir da jemand helfen kann :D
PN oder ein Post hier, jenachdem ich les eh alles xD
lg Kvote
Edit: Ich weis das dort scheinbar mehrere Versionen des Skripts gepostet (mit/ohne smileys) sind aber ich hab alle getestet und keins ging Q_Q
-
Du müsstest uns schon den Fehler nennen, also zusätzlich zu der Beschreibung. ^^
Ein Bild des sich öffnenden Fensters würde vllt. auch helfen, weil ich das Script auch mal benutzt habe, weiß ich, dass es funktioniert. Allerdings könnte ich es mir nachdem ich den Fehler kenne nochmal anschauen.
MfG
Deity
-
Hi Kvote20,
hier ein Link zu dem Script ohne Probleme.
http://www.hbgames.org/forums/viewtopic.php?f=11&t=48155
Habe es mit dem Script von Seite 4 versucht aber jedes mal wenn ein Fehler verschwand,
tauchte ein neuer auf.
Mit freundlichen Grüßen
Cloud Crescent
-
Hi, ich bin auch so ein Typ der sich mit den Skripten nicht auskennt.
Ich würde auch gern was daran änmdern und zwar:
Mehr Rüstungen die ein char. tragen kann.
sind ja Rüstung, Helm, Zubehör und Schild schon dort. aber wie bekomme ich da noch mehr Slots hin das der Char. z.B. Noch Schuhe oder Handschuhe oder etc. tragen könnte?
Würde mich da über Hilfe sehr freuen.
-
@Felsendrache
Hier, ich glaube der Script macht sowas.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ? Equipment Extension - KGC_EquipExtension ? VX ?
#_/ ? Last Update: 2008/09/06 ?
#_/ ? Translated and Extended Updates by Mr. Anonymous ?
#_/ ? KGC Site: ?
#_/ ? http://ytomy.sakura.ne.jp/ ?
#_/ ? Translator's Blog: ?
#_/ ? http://mraprojects.wordpress.com ?
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ This script has two functions equipment-related functions.
#_/ The first function is the ability to create moire 'slots' for equipment,
#_/ such as separating Boots and Gauntlets from mere 'accessories'.
#_/ It is possible to also create additional equipment slots. See the customize
#_/ block for more details.
#_/
#_/ The second function is an "EP" (Equipment Point) System, which allows you
#_/ to designate how many 'points' an item costs to successfully equip. A
#_/ character's total EP expenditure is increased upon leveling up.
#_/ This introduces more strategy-oriented character customization.
#_/----------------------------------------------------------------------------
#_/ ? Instructions For Usage ?
#_/ To make use of these functions, you must insert the tag into the desired
#_/ item's "Notes" box located in the Armor tab of the database. For example,
#_/ you want the Leather Boots to be bound to the "Legs" slot and cost
#_/ 2 EP to equip. Insert <equipkind Legs>, press enter, then add <EP 2>
#_/
#_/ ? Tags ?
#_/ <equipkind EquipType>
#_/ Where EquipType = The name of the type of equipment. See EXTRA_EQUIP_KIND
#_/ below.
#_/ <EP Amount>
#_/ Where Amount = The desired amount of EP the item requires to equip.
#_/
#_/
#_/ ? Script Commands ?
#_/ These commands are used in "Script" function in the third page of event
#_/ commands under "Advanced".
#_/
#_/ * set_actor_equip_type(ActorID, [EquipType])
#_/ Allows you to manually specify an actor's equipment slots. a
#_/ Ex. set_actor_equip_type(2, [0, 2, 3, 3, 3])
#_/ If "nil"(without quotations) is appointed to EquipType, the default
#_/ EQUIP_TYPE (see below) is used. Trust me, it's useful!
#_/
#_/ * change_actor_equipment(ActorID, equipslot_index, ItemID)
#_/ Allows you to change the equipment of a specified actor.
#_/ equipslot_index works by finding the equipment slot number, which is
#_/ different from EQUIP_TYPE. Setting ItemID to 0 will remove the item.
#_/ With the default setup, we see:
#_/ 0=Weapon 1=Shield 2=Headgear 3=Armor 4=Accessory 5=Legs 6=Arms
#_/
#_/ So, for an example:
#_/ change_actor_equipment(1, 3, 15)
#_/ Would change Ralph's(Actor01 in the database) armor to Chainmail(By default)
#_/
#_/
#_/============================================================================
#_/ Installation: This script must be inserted below KCG_ExtendedEquipScene
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#=============================================================================#
# ? Customization ? #
#=============================================================================#
module KGC
module EquipExtension
# ? Extended Equipment Classification Names ?
# You may designate the names of additional equipment slots here.
# Each time you designate a new equipment slot, it is assigned a number.
# The first four equipment types (Shield, Helmet, Armor, and Accessory) are
# given as 1, 2, 3, 4, respectively. Then the values below are assigned in
# order. By default "Legs" and "Arms" would be 4 and 5. It is possible
# to add additional slots.
# Example: EXTRA_EQUIP_KIND = ["Legs", "Arms", "Skill Book"]
EXTRA_EQUIP_KIND = ["Legs", "Arms"]
# ? Equipment Placement ?
# This allows you to arrange the equip slots as you see fit on the equipment
# menu. Note the order listed below.
# ** Equipment Classification Summary **
# 0.Shield 1.Headgear 2.Armor 3.Accessory 4. "Legs" 5."Arms"
# Note that these can be changed as desired. By default, we've enabled two
# accessory slots at the end, instead of one. If you plan on adding extra
# equip slots, the category's cooresponding number must be inserted in the
# brackets [] below.
EQUIP_TYPE = [0, 1, 2, 5, 4, 3, 3]
# ? EP (Equip Point) System ?
# These settings are for the Equipment Point Limit System.
# This toggle allows you to use the EP system if set to true.
# If set to false, the EP system will be disabled.
USE_EP_SYSTEM = true
# VOCAB_EP appears once a character gains EP from battle. (Not Tested)
VOCAB_EP = "EP"
# VOCAB_EP_A appears above the EP gauge.
VOCAB_EP_A = "EP"
# This toggle allows you to display the EP gauge in the actor status window.
SHOW_STATUS_EP = true
# ? Default EP Cost ?
# Allows you to change the default amount an item costs to equip in EP.
# (When not otherwise specified.)
DEFAULT_EP_COST = 1
# This toggle allows you to hide the EP cost of an item if its cost is 0.
# true = hide
# false = show
HIDE_ZERO_EP_COST = true
# ? EP Values & Level Gain ?
# Maximum EP that can be spent equipping items.
EP_MAX = 20
# Characters begin with this amount of EP.
EP_MIN = 5
# ? EP Level Gain
# This is the formula for the amount of EP gained upon leveling up.
# The result of this formula is automatically converted to an integer.
EP_CALC_EXP = "level * 0.3 + 4"
# ? Individual Actor EP Level Gain
PERSONAL_EP_CALC_EXP = [] # <- Do not alter or remove!
# Below here, you may specify formulas for individual actors that dictates
# the amount of EP they recieve upon leveling up. Like EP_CALC_EXP, the
# result is converted to an integer.
# Format: PERSONAL_EP_CALC_EXP[ActorID] = "Formula"
# The format is just like EP_CALC_EXP, except each actor is defined after
# PERSONAL_EP_CALC_EXP in brackets [].
# Any actor not specified uses the EP_CALC_EXP formula.
# Example:
# PERSONAL_EP_CALC_EXP[1] = "level * 0.5 + 5"
# ? Insert Personal EP Calculations Below Here ?
PERSONAL_EP_CALC_EXP[1] = "level * 0.5 + 5"
# ? Insert Personal EP Calculations Above Here ?
# ? EP Gauge Colorization ?
# Allows you to change the color of the EP gauges.
# The color can also be determined by a red, green, and blue values.
# Example: GAUGE_NORMAL_START_COLOR = Color.new(255, 0, 0) <- This is red.
# This method of color assignment is much like Tint Screen event command.
#
# This affects the color of number that represents EP cost.
EP_COST_COLOR = 23
# This is the fill color for the early phase of the guage.
EP_GAUGE_START_COLOR = 28
# This is the fill color for the late phase of the guage. (When full)
EP_GAUGE_END_COLOR = 29
end
end
#=============================================================================#
# ? End Customization ? #
#=============================================================================#
#=================================================#
# IMPORT #
#=================================================#
$imported = {} if $imported == nil
$imported["EquipExtension"] = true
#=================================================#
module KGC::EquipExtension
# Unless the EP system is used...
unless USE_EP_SYSTEM
SHOW_STATUS_EP = false
HIDE_ZERO_EP_COST = true
end
#==============================================================================
# ? KGC::EquipExtension::Regexp
#==============================================================================
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
# Note Field Tag Strings #
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
# Whatever word(s) are after the separator ( | ) in the following lines are
# what are used to determine what is searched for in the "Note" section of
# an item or armor.
# Regular expressions defined
module Regexp
# Base Item Module
module BaseItem
# EP Tag String
EP_COST = /<EP\s*(\d+)>/i
# Item Type Tag String
# Special note: I cannot get this tag to work right. If anyone knows how
# this works or if it's bugged, please let me know.
EQUIP_TYPE = /<(?:EQUIP_TYPE|equiptype)\s*(\d+(?:\s*,\s*\d+)*)>/
end
# Base Armor Module
module Armor
# Armor Type Tag String
EQUIP_KIND = /<(?:EQUIP_KIND|equipkind)\s*(.+)>/i
end
end
end
#=================================================#
#==============================================================================
# ? KGC::Commands
#==============================================================================
module KGC
module Commands
module_function
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
def restore_equip
(1...$data_actors.size).each { |i|
actor = $game_actors[i]
actor.restore_equip
}
end
#--------------------------------------------------------------------------
# ? ?????????????
# actor_id : ???? ID
# equip_type : ?????
#--------------------------------------------------------------------------
def set_actor_equip_type(actor_id, equip_type = nil)
actor = $game_actors[actor_id]
return if actor == nil
actor.equip_type = equip_type
end
#--------------------------------------------------------------------------
# ? ??????????
# actor_id : ???? ID
# index : ???? (0~)
# item_id : ?? or ?? ID (0 ???)
#--------------------------------------------------------------------------
def change_actor_equipment(actor_id, index, item_id)
actor = $game_actors[actor_id]
return if actor == nil
actor.change_equip_by_id(index, item_id)
end
end
end
class Game_Interpreter
include KGC::Commands
end
#=================================================#
#==============================================================================
# ¦ Vocab
#==============================================================================
module Vocab
# EP
def self.ep
return KGC::EquipExtension::VOCAB_EP
end
# EP (?)
def self.ep_a
return KGC::EquipExtension::VOCAB_EP_A
end
# ?????
def self.extra_armor(index)
return KGC::EquipExtension::EXTRA_EQUIP_KIND[index]
end
end
#=================================================#
#==============================================================================
# ¦ RPG::BaseItem
#==============================================================================
class RPG::BaseItem
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def create_equip_extension_cache
@__ep_cost = KGC::EquipExtension::DEFAULT_EP_COST
@__equip_type = []
self.note.split(/[\r\n]+/).each { |line|
case line
when KGC::EquipExtension::Regexp::BaseItem::EP_COST
# ?? EP
@__ep_cost = $1.to_i
when KGC::EquipExtension::Regexp::BaseItem::EQUIP_TYPE
# ?????
@__equip_type = []
$1.scan(/\d+/) { |num|
@__equip_type << num.to_i
}
end
}
# EP ???????????? EP = 0
@__ep_cost = 0 unless KGC::EquipExtension::USE_EP_SYSTEM
end
#--------------------------------------------------------------------------
# ? ?? EP
#--------------------------------------------------------------------------
def ep_cost
create_equip_extension_cache if @__ep_cost == nil
return @__ep_cost
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def equip_type
create_equip_extension_cache if @__equip_type == nil
return @__equip_type
end
end
#=================================================#
#==============================================================================
# ¦ RPG::Armor
#==============================================================================
class RPG::Armor < RPG::BaseItem
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def create_equip_extension_cache
super
@__kind = -1
self.note.split(/[\r\n]+/).each { |line|
if line =~ KGC::EquipExtension::Regexp::Armor::EQUIP_KIND
# ????
e_index = KGC::EquipExtension::EXTRA_EQUIP_KIND.index($1)
next if e_index == nil
@__kind = e_index + 4
end
}
end
unless $@
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
alias kind_KGC_EquipExtension kind
def kind
create_equip_extension_cache if @__kind == nil
return (@__kind == -1 ? kind_KGC_EquipExtension : @__kind)
end
end
end
#=================================================#
#==============================================================================
# ¦ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_writer :equip_type # ?????
#--------------------------------------------------------------------------
# ? ??????
# actor_id : ???? ID
#--------------------------------------------------------------------------
alias setup_KGC_EquipExtension setup
def setup(actor_id)
actor = $data_actors[actor_id]
@extra_armor_id = []
setup_KGC_EquipExtension(actor_id)
restore_equip
end
#--------------------------------------------------------------------------
# ? MaxEP ??
#--------------------------------------------------------------------------
def maxep
calc_exp = KGC::EquipExtension::PERSONAL_EP_CALC_EXP[self.id]
if calc_exp == nil
calc_exp = KGC::EquipExtension::EP_CALC_EXP
end
n = Integer(eval(calc_exp))
return [[n, ep_limit].min, KGC::EquipExtension::EP_MIN].max
end
#--------------------------------------------------------------------------
# ? EP ??
#--------------------------------------------------------------------------
def ep
n = 0
equips.compact.each { |item| n += item.ep_cost }
return [maxep - n, 0].max
end
#--------------------------------------------------------------------------
# ? EP ????
#--------------------------------------------------------------------------
def ep_limit
return KGC::EquipExtension::EP_MAX
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def equip_type
if @equip_type.is_a?(Array)
return @equip_type
else
return KGC::EquipExtension::EQUIP_TYPE
end
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def armor_number
return equip_type.size
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def extra_armor_number
return [armor_number - 4, 0].max
end
#--------------------------------------------------------------------------
# ? ?? ID ??????
#--------------------------------------------------------------------------
def extra_armor_id
@extra_armor_id = [] if @extra_armor_id == nil
return @extra_armor_id
end
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
alias armors_KGC_EquipExtension armors
def armors
result = armors_KGC_EquipExtension
# 5??????????
extra_armor_number.times { |i|
armor_id = extra_armor_id[i]
result << (armor_id == nil ? nil : $data_armors[armor_id])
}
return result
end
#--------------------------------------------------------------------------
# ? ????? (?????????)
# equip_type : ????
# item : ?? or ?? (nil ??????)
# test : ?????? (???????????????????)
#--------------------------------------------------------------------------
alias change_equip_KGC_EquipExtension change_equip
def change_equip(equip_type, item, test = false)
change_equip_KGC_EquipExtension(equip_type, item, test)
# ????????????
if extra_armor_number > 0
item_id = item == nil ? 0 : item.id
case equip_type
when 5..armor_number # ?????
@extra_armor_id = [] if @extra_armor_id == nil
@extra_armor_id[equip_type - 5] = item_id
end
end
restore_battle_skill if $imported["SkillCPSystem"]
restore_passive_rev if $imported["PassiveSkill"]
end
#--------------------------------------------------------------------------
# ? ?????
# item : ?????? or ??
# ??/???????????????????????
#--------------------------------------------------------------------------
alias discard_equip_KGC_EquipExtension discard_equip
def discard_equip(item)
last_armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
discard_equip_KGC_EquipExtension(item)
curr_armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
return unless item.is_a?(RPG::Armor) # ?????
return if last_armors != curr_armors # ???????
# ????????
extra_armor_number.times { |i|
if extra_armor_id[i] == item.id
@extra_armor_id[i] = 0
break
end
}
restore_battle_skill if $imported["SkillCPSystem"]
restore_passive_rev if $imported["PassiveSkill"]
end
#--------------------------------------------------------------------------
# ? ?? ID ???
# class_id : ????? ID
#--------------------------------------------------------------------------
alias class_id_equal_KGC_EquipExtension class_id=
def class_id=(class_id)
class_id_equal_KGC_EquipExtension(class_id)
return if extra_armor_number == 0 # ????????
# ?????????????
for i in 5..armor_number
change_equip(i, nil) unless equippable?(equips[i])
end
end
#--------------------------------------------------------------------------
# ? EP ???????
# equip_type : ????
# item : ?? or ??
#--------------------------------------------------------------------------
def ep_condition_clear?(equip_type, item)
return true if item == nil # nil ?????? OK
curr_item = equips[equip_type]
offset = (curr_item != nil ? curr_item.ep_cost : 0)
return false if self.ep < (item.ep_cost - offset) # EP ??
return true
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def restore_equip
return if @__last_equip_type == equip_type
# ??????·????????
last_equips = equips
last_hp = self.hp
last_mp = self.mp
if $imported["SkillCPSystem"]
last_battle_skill_ids = battle_skill_ids.clone
end
# ?????
last_equips.each_index { |i| change_equip(i, nil) }
# ???·????????
last_equips.compact.each { |item| equip_legal_slot(item) }
self.hp = last_hp
self.mp = last_mp
if $imported["SkillCPSystem"]
last_battle_skill_ids.each_with_index { |s, i| set_battle_skill(i, s) }
end
@__last_equip_type = equip_type.clone
Graphics.frame_reset
end
#--------------------------------------------------------------------------
# ? ?????????????
# item : ?? or ??
#--------------------------------------------------------------------------
def equip_legal_slot(item)
if item.is_a?(RPG::Weapon)
if @weapon_id == 0
# ?? 1
change_equip(0, item)
elsif two_swords_style && @armor1_id == 0
# ?? 2 (??????)
change_equip(1, item)
end
elsif item.is_a?(RPG::Armor)
if !two_swords_style && item.kind == equip_type[0] && @armor1_id == 0
# ????? (????????)
change_equip(1, item)
else
# ??????????
list = [-1, @armor2_id, @armor3_id, @armor4_id]
list += extra_armor_id
# ?????????????????
equip_type.each_with_index { |kind, i|
if kind == item.kind && list[i] == 0
change_equip(i + 1, item)
break
end
}
end
end
end
end
#=================================================#
#==============================================================================
# ¦ Window_Base
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# ? EP ???????
# actor : ????
#--------------------------------------------------------------------------
def ep_color(actor)
return knockout_color if actor.maxep > 0 && actor.ep == 0
return normal_color
end
#--------------------------------------------------------------------------
# ? EP ????? 1 ???
#--------------------------------------------------------------------------
def ep_gauge_color1
color = KGC::EquipExtension::EP_GAUGE_START_COLOR
return (color.is_a?(Integer) ? text_color(color) : color)
end
#--------------------------------------------------------------------------
# ? EP ????? 2 ???
#--------------------------------------------------------------------------
def ep_gauge_color2
color = KGC::EquipExtension::EP_GAUGE_END_COLOR
return (color.is_a?(Integer) ? text_color(color) : color)
end
#--------------------------------------------------------------------------
# ? EP ???
# actor : ????
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_ep(actor, x, y, width = 120)
draw_actor_ep_gauge(actor, x, y, width)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, WLH, Vocab::ep_a)
self.contents.font.color = ep_color(actor)
xr = x + width
if width < 120
self.contents.draw_text(xr - 40, y, 40, WLH, actor.ep, 2)
else
self.contents.draw_text(xr - 90, y, 40, WLH, actor.ep, 2)
self.contents.font.color = normal_color
self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxep, 2)
end
self.contents.font.color = normal_color
end
#--------------------------------------------------------------------------
# ? EP ??????
# actor : ????
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_ep_gauge(actor, x, y, width = 120)
gw = width * actor.ep / [actor.maxep, 1].max
gc1 = ep_gauge_color1
gc2 = ep_gauge_color2
self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
end
#--------------------------------------------------------------------------
# ? ?? EP ???
# item : ?? or ??
# rect : ??????
# enabled : ????
#--------------------------------------------------------------------------
def draw_equipment_ep_cost(item, rect, enabled = true)
return if item == nil
# ?? EP 0 ????????
return if KGC::EquipExtension::HIDE_ZERO_EP_COST && item.ep_cost == 0
color = KGC::EquipExtension::EP_COST_COLOR
self.contents.font.color = (color.is_a?(Integer) ?
text_color(color) : color)
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(rect, item.ep_cost, 2)
end
end
#=================================================#
#==============================================================================
# ¦ Window_Equip
#==============================================================================
class Window_Equip < Window_Selectable
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@data = @actor.equips.clone
@item_max = [@data.size, @actor.armor_number + 1].min
create_contents
# ???????
self.contents.font.color = system_color
if @actor.two_swords_style
self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)
self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
else
self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
name = armor_slot_name(@actor.equip_type[0])
self.contents.draw_text(4, WLH * 1, 92, WLH, name)
end
for i in 1...@actor.armor_number
name = armor_slot_name(@actor.equip_type[i])
self.contents.draw_text(4, WLH * (i + 1), 92, WLH, name)
end
# ??????
rect = Rect.new(92, 0, self.width - 128, WLH)
@item_max.times { |i|
rect.y = WLH * i
draw_item_name(@data[i], rect.x, rect.y)
draw_equipment_ep_cost(@data[i], rect)
}
end
#--------------------------------------------------------------------------
# ? ?????????
# kind : ??
#--------------------------------------------------------------------------
def armor_slot_name(kind)
case kind
when 0..3
return eval("Vocab.armor#{kind + 1}")
else
return Vocab.extra_armor(kind - 4)
end
end
unless $imported["ExtendedEquipScene"]
#--------------------------------------------------------------------------
# ? ????? 1 ????????
#--------------------------------------------------------------------------
def cursor_pagedown
return if Input.repeat?(Input::R)
super
end
#--------------------------------------------------------------------------
# ? ????? 1 ???????
#--------------------------------------------------------------------------
def cursor_pageup
return if Input.repeat?(Input::L)
super
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
super
return unless self.active
if Input.repeat?(Input::RIGHT)
cursor_pagedown
elsif Input.repeat?(Input::LEFT)
cursor_pageup
end
end
end
end
#=================================================#
#==============================================================================
# ¦ Window_EquipItem
#==============================================================================
class Window_EquipItem < Window_Item
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
@item_enabled = []
super
@data.each { |item| @item_enabled << enable?(item) }
end
#--------------------------------------------------------------------------
# ? ????????????????
# item : ????
#--------------------------------------------------------------------------
def include?(item)
return true if item == nil
if @equip_type == 0
return false unless item.is_a?(RPG::Weapon)
else
return false unless item.is_a?(RPG::Armor)
return false unless item.kind == @equip_type - 1
end
return @actor.equippable?(item)
end
#--------------------------------------------------------------------------
# ? ??????????????????
# item : ????
#--------------------------------------------------------------------------
def enable?(item)
return false unless @actor.equippable?(item) # ????
return false unless @actor.ep_condition_clear?(@equip_type, item) # EP ??
return true
end
#--------------------------------------------------------------------------
# ? ?????
# index : ????
#--------------------------------------------------------------------------
def draw_item(index)
super(index)
rect = item_rect(index)
item = @data[index]
# ??????????
cw = self.contents.text_size(sprintf(":%2d", 0)).width
rect.width -= cw + 4
draw_equipment_ep_cost(item, rect, enable?(item))
end
#--------------------------------------------------------------------------
# ? ????????
# equip_type : ????
#--------------------------------------------------------------------------
def simple_refresh(equip_type)
# ???????????
last_equip_type = @equip_type
@equip_type = equip_type
@data.each_with_index { |item, i|
# ????????????????
if enable?(item) != @item_enabled[i]
draw_item(i)
@item_enabled[i] = enable?(item)
end
}
# ???????
@equip_type = last_equip_type
end
end
#=================================================#
#==============================================================================
# ¦ Window_EquipStatus
#==============================================================================
class Window_EquipStatus < Window_Base
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
alias refresh_KGC_EquipExtension refresh
def refresh
refresh_KGC_EquipExtension
draw_actor_ep(@actor, 120, 0, 56) if KGC::EquipExtension::USE_EP_SYSTEM
end
end
#=================================================#
#==============================================================================
# ¦ Window_Status
#==============================================================================
class Window_Status < Window_Base
if KGC::EquipExtension::SHOW_STATUS_EP
#--------------------------------------------------------------------------
# ? ???????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
alias draw_basic_info_KGC_EquipExtension draw_basic_info
def draw_basic_info(x, y)
draw_basic_info_KGC_EquipExtension(x, y)
draw_actor_ep(@actor, x + 160, y + WLH * 4)
end
end
#--------------------------------------------------------------------------
# ? ??????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
def draw_equipments(x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, WLH, Vocab::equip)
item_number = [@actor.equips.size, @actor.armor_number + 1].min
item_number.times { |i|
draw_item_name(@actor.equips[i], x + 16, y + WLH * (i + 1))
}
end
end
#=================================================#
#==============================================================================
# ¦ Window_ShopStatus
#==============================================================================
class Window_ShopStatus < Window_Base
#--------------------------------------------------------------------------
# ? ?????????????????
# actor : ????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
def draw_actor_parameter_change(actor, x, y)
return if @item.is_a?(RPG::Item)
enabled = actor.equippable?(@item)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x, y, 200, WLH, actor.name)
if @item.is_a?(RPG::Weapon)
item1 = weaker_weapon(actor)
elsif actor.two_swords_style and @item.kind == 0
item1 = nil
else
index = actor.equip_type.index(@item.kind)
item1 = (index != nil ? actor.equips[1 + index] : nil)
end
if enabled
if @item.is_a?(RPG::Weapon)
atk1 = item1 == nil ? 0 : item1.atk
atk2 = @item == nil ? 0 : @item.atk
change = atk2 - atk1
else
def1 = item1 == nil ? 0 : item1.def
def2 = @item == nil ? 0 : @item.def
change = def2 - def1
end
self.contents.draw_text(x, y, 200, WLH, sprintf("%+d", change), 2)
end
draw_item_name(item1, x, y + WLH, enabled)
end
end
#=================================================#
#==============================================================================
# ¦ Scene_Equip
#==============================================================================
class Scene_Equip < Scene_Base
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
EQUIP_TYPE_MAX = KGC::EquipExtension::EXTRA_EQUIP_KIND.size + 5
#--------------------------------------------------------------------------
# ? ?????????
# actor_index : ??????????
# equip_index : ????????
#--------------------------------------------------------------------------
alias initialize_KGC_EquipExtension initialize
def initialize(actor_index = 0, equip_index = 0)
initialize_KGC_EquipExtension(actor_index, equip_index)
unit = ($imported["LargeParty"] ?
$game_party.all_members : $game_party.members)
actor = unit[actor_index]
@equip_index = [@equip_index, actor.armor_number].min
end
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
alias create_item_windows_KGC_EquipExtension create_item_windows
def create_item_windows
create_item_windows_KGC_EquipExtension
kind = equip_kind(@equip_index)
EQUIP_TYPE_MAX.times { |i|
@item_windows[i].visible = (kind == i)
}
end
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
def update_item_windows
kind = equip_kind(@equip_window.index)
for i in 0...EQUIP_TYPE_MAX
@item_windows[i].visible = (kind == i)
@item_windows[i].update
end
@item_window = @item_windows[kind]
@item_window.simple_refresh(@equip_window.index)
end
#--------------------------------------------------------------------------
# ? ?????????
# index : ?????????
#--------------------------------------------------------------------------
def equip_kind(index)
if index == 0
return 0
else
return @actor.equip_type[index - 1] + 1
end
end
unless $imported["ExtendedEquipScene"]
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def update_status_window
if @equip_window.active
@status_window.set_new_parameters(nil, nil, nil, nil)
elsif @item_window.active
temp_actor = Marshal.load(Marshal.dump(@actor))
temp_actor.change_equip(@equip_window.index, @item_window.item, true)
new_atk = temp_actor.atk
new_def = temp_actor.def
new_spi = temp_actor.spi
new_agi = temp_actor.agi
@status_window.set_new_parameters(new_atk, new_def, new_spi, new_agi)
end
@status_window.update
end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias update_item_selection_KGC_EquipExtension update_item_selection
def update_item_selection
if Input.trigger?(Input::C)
# ????????
index = @equip_window.index
item = @item_window.item
unless item == nil ||
(@actor.equippable?(item) && @actor.ep_condition_clear?(index, item))
Sound.play_buzzer
return
end
end
update_item_selection_KGC_EquipExtension
end
end
#=================================================#
#==============================================================================
# ¦ Scene_File
#==============================================================================
class Scene_File < Scene_Base
#--------------------------------------------------------------------------
# ? ???????????
# file : ??????????????? (??????)
#--------------------------------------------------------------------------
alias read_save_data_KGC_EquipExtension read_save_data
def read_save_data(file)
read_save_data_KGC_EquipExtension(file)
KGC::Commands.restore_equip
Graphics.frame_reset
end
end
-
cool vielen dank hab schon danach gesucht war wohl etwas zu blind um denn zu finden...
werde ihn gleich mal ausprobieren
Post zusammen gefügt: [time]Di 16 Mär 2010 16:20:31 GMT-1[/time]
ok, ich merke ich bin zu blöd um mit skripten um zugehen :(
Mein Englisch ist nicht das Beste und mit Skripten kenn ich mich garnicht aus.
hab ds schon durch einen Übersetzterlaufen lassen. Aber ich hab keinen blassen schimmer
was ich wo einfühgen muss. könnte mir jemand eine etwas verständlicherer Anleitung geben
oder erklären wie das klapp?
Danke schon mal
P.S. diese EP funktion brauch ich nicht ^^
-
@Cloud: Ähm danke danke....nur, nur irgendiwe lädt der Link den du gepostet hast bei mir schon 5 Minuten xD wenns nicht am Link liegt das es so lang dauert versuch ichs einfach weiter.
@Deity: Ich komm wohl erst heut abend dazu einen Screen mit der Meldung zu Posten (bin grad unterwegs und hab nur n Lappi mit) ich stell ihn dann rein
Ich danke mal für die schnellen Antworten und gebe mein bestes das jetz allein weiterzuführen xD
lg Kvote
-
Keine Ahnung warum aber die Site hat Probleme.
Cloud Crescent
-
Einfach abwarten und Tee trinken xD
naja wenn du das Skript auch so hast wär ich dir sehr verbunden wenn du es posten könntest.
Kvote
-
@Felsendrache
Ich habe mal die wichtigen Sachen übersetzt. Ich habe viele Sachen (nicht wichtige) zusammengefasst.
Mein Englisch ist nicht das beste, daher ist die Übersetzung teilweise wie der Googleübersetzer.
Das EP-Zeug habe ich abgestellt.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ? Equipment Extension - KGC_EquipExtension ? VX ?
#_/ ? Last Update: 2008/09/06 ?
#_/ ? Translated and Extended Updates by Mr. Anonymous ?
#_/ ? KGC Site: ?
#_/ ? http://ytomy.sakura.ne.jp/ ?
#_/ ? Translator's Blog: ?
#_/ ? http://mraprojects.wordpress.com ?
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ Dieses Script hat zwei Funktionen (Ep-System ist deaktiviert)
#_/ Die erste Funktion erlaubt dir mehr Slots beim Ausrüsten zu machen.
#_/----------------------------------------------------------------------------
#_/ ? Instructions For Usage ?
#_/ Um diese Funktion zu nutzen, musst du die Note-Box in der Database benutzen.
#_/ Wenn du zum Beispiel eine Hose hast und sie in den Slot Hose soll, musst du dort <equipkind Hose> bzw. den
#_/ Namen des Slots hineinschreiben.
#_/
#_/ ? Tags ?
#_/ <equipkind EquipType>
#_/ EquipType = Ersetze dies durch den Namen der Klasse(Slot). Siehe EXTRA_EQUIP_KIND
#_/
#_/ ? Script Commands ?
#_/ Diese Kommandos müssen bei einem Event als CallScript aufgerufen werden.
#_/
#_/ * set_actor_equip_type(ActorID, [EquipType])
#_/ Erlaubt dir manuell einem Charakter (Actor) Ausrüstungsslots zuzuweisen.
#_/
#_/ Ex. set_actor_equip_type(2, [0, 2, 3, 3, 3])
#_/ Wenn "nil"(ohne "") , wird EQUIP_TYPE (siehe oben) benutzt.
#_/
#_/ * change_actor_equipment(ActorID, equipslot_index, ItemID)
#_/ Erlaubt dir die Ausrüstung von einem spezifischen Charakter (Actor) zu ändern.
#_/ equipslot_index findet die Slot-Nummer, aners als bei
#_/ EQUIP_TYPE. Setze ItemID auf 0 um das Item wegzunehmen.
#_/ Standart:
#_/ 0=Weapon 1=Shield 2=Headgear 3=Armor 4=Accessory 5=Legs 6=Arms
#_/
#_/ zum Beispiel:
#_/ change_actor_equipment(1, 3, 15)
#_/ Würde Ralph's(Actor01 in the database) Waffe zu Chainmail(beim Standart) ändern
#_/
#_/
#_/============================================================================
#_/ Installation: This script must be inserted below KCG_ExtendedEquipScene
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#=============================================================================#
# ? Customization ? #
#=============================================================================#
module KGC
module EquipExtension
# ? Extended Equipment Classification Names ?
# You may designate the names of additional equipment slots here.
# Immer wenn du einen neuen Slot machst, bekommt er eine Nummer.
# Die ersten vier Typen (Shield, Helmet, Armor, and Accessory) haben die
# Nummern 1, 2, 3, 4, . Danach wird durchnummeriert.
# Bei diesem Standart sind "Legs" und "Arms" 4 und 5.
# So fügst du Slots hinzu:.
# Beispiel: EXTRA_EQUIP_KIND = ["Legs", "Arms", "Skill Book"] (also hier unten, nächste Zeile)
EXTRA_EQUIP_KIND = ["Legs", "Arms"]
# ? Equipment Placement ?
# Dies erlaubt dir die Slots im Menü zu ordnen.
# ** Equipment Classification Summary **
# 0.Shield 1.Headgear 2.Armor 3.Accessory 4. "Legs" 5."Arms"
# So ist die Standartbelegung: Wir haben zwei Zubehör Slots statt einem.
# Um einen Slot im Menü hinzuzufügen schreibe seine Nummer hier unten dorthin wo er sein soll
EQUIP_TYPE = [0, 1, 2, 5, 4, 3, 3]
# ? EP (Equip Point) System ?
# Ich habe alle EP-Sachen (hoffentlich) abgestellt
USE_EP_SYSTEM = false
# VOCAB_EP appears once a character gains EP from battle. (Not Tested)
VOCAB_EP = "EP"
# VOCAB_EP_A appears above the EP gauge.
VOCAB_EP_A = "EP"
# This toggle allows you to display the EP gauge in the actor status window.
SHOW_STATUS_EP = false
# ? Default EP Cost ?
# Allows you to change the default amount an item costs to equip in EP.
# (When not otherwise specified.)
DEFAULT_EP_COST = 1
# This toggle allows you to hide the EP cost of an item if its cost is 0.
# true = hide
# false = show
HIDE_ZERO_EP_COST = true
# ? EP Values & Level Gain ?
# Maximum EP that can be spent equipping items.
EP_MAX = 20
# Characters begin with this amount of EP.
EP_MIN = 5
# ? EP Level Gain
# This is the formula for the amount of EP gained upon leveling up.
# The result of this formula is automatically converted to an integer.
EP_CALC_EXP = "level * 0.3 + 4"
# ? Individual Actor EP Level Gain
PERSONAL_EP_CALC_EXP = [] # <- Do not alter or remove!
# Below here, you may specify formulas for individual actors that dictates
# the amount of EP they recieve upon leveling up. Like EP_CALC_EXP, the
# result is converted to an integer.
# Format: PERSONAL_EP_CALC_EXP[ActorID] = "Formula"
# The format is just like EP_CALC_EXP, except each actor is defined after
# PERSONAL_EP_CALC_EXP in brackets [].
# Any actor not specified uses the EP_CALC_EXP formula.
# Example:
# PERSONAL_EP_CALC_EXP[1] = "level * 0.5 + 5"
# ? Insert Personal EP Calculations Below Here ?
PERSONAL_EP_CALC_EXP[1] = "level * 0.5 + 5"
# ? Insert Personal EP Calculations Above Here ?
# ? EP Gauge Colorization ?
# Allows you to change the color of the EP gauges.
# The color can also be determined by a red, green, and blue values.
# Example: GAUGE_NORMAL_START_COLOR = Color.new(255, 0, 0) <- This is red.
# This method of color assignment is much like Tint Screen event command.
#
# This affects the color of number that represents EP cost.
EP_COST_COLOR = 23
# This is the fill color for the early phase of the guage.
EP_GAUGE_START_COLOR = 28
# This is the fill color for the late phase of the guage. (When full)
EP_GAUGE_END_COLOR = 29
end
end
#=============================================================================#
# ? End Customization ? #
#=============================================================================#
#Ab hier nicht rumpfuschen, es sei den du verstehst etwas davon #
#=================================================#
# IMPORT #
#=================================================#
$imported = {} if $imported == nil
$imported["EquipExtension"] = true
#=================================================#
module KGC::EquipExtension
# Unless the EP system is used...
unless USE_EP_SYSTEM
SHOW_STATUS_EP = false
HIDE_ZERO_EP_COST = true
end
#==============================================================================
# ? KGC::EquipExtension::Regexp
#==============================================================================
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
# Note Field Tag Strings #
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
# Whatever word(s) are after the separator ( | ) in the following lines are
# what are used to determine what is searched for in the "Note" section of
# an item or armor.
# Regular expressions defined
module Regexp
# Base Item Module
module BaseItem
# EP Tag String
EP_COST = /<EP\s*(\d+)>/i
# Item Type Tag String
# Special note: I cannot get this tag to work right. If anyone knows how
# this works or if it's bugged, please let me know.
EQUIP_TYPE = /<(?:EQUIP_TYPE|equiptype)\s*(\d+(?:\s*,\s*\d+)*)>/
end
# Base Armor Module
module Armor
# Armor Type Tag String
EQUIP_KIND = /<(?:EQUIP_KIND|equipkind)\s*(.+)>/i
end
end
end
#=================================================#
#==============================================================================
# ? KGC::Commands
#==============================================================================
module KGC
module Commands
module_function
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
def restore_equip
(1...$data_actors.size).each { |i|
actor = $game_actors[i]
actor.restore_equip
}
end
#--------------------------------------------------------------------------
# ? ?????????????
# actor_id : ???? ID
# equip_type : ?????
#--------------------------------------------------------------------------
def set_actor_equip_type(actor_id, equip_type = nil)
actor = $game_actors[actor_id]
return if actor == nil
actor.equip_type = equip_type
end
#--------------------------------------------------------------------------
# ? ??????????
# actor_id : ???? ID
# index : ???? (0~)
# item_id : ?? or ?? ID (0 ???)
#--------------------------------------------------------------------------
def change_actor_equipment(actor_id, index, item_id)
actor = $game_actors[actor_id]
return if actor == nil
actor.change_equip_by_id(index, item_id)
end
end
end
class Game_Interpreter
include KGC::Commands
end
#=================================================#
#==============================================================================
# ¦ Vocab
#==============================================================================
module Vocab
# EP
def self.ep
return KGC::EquipExtension::VOCAB_EP
end
# EP (?)
def self.ep_a
return KGC::EquipExtension::VOCAB_EP_A
end
# ?????
def self.extra_armor(index)
return KGC::EquipExtension::EXTRA_EQUIP_KIND[index]
end
end
#=================================================#
#==============================================================================
# ¦ RPG::BaseItem
#==============================================================================
class RPG::BaseItem
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def create_equip_extension_cache
@__ep_cost = KGC::EquipExtension::DEFAULT_EP_COST
@__equip_type = []
self.note.split(/[\r\n]+/).each { |line|
case line
when KGC::EquipExtension::Regexp::BaseItem::EP_COST
# ?? EP
@__ep_cost = $1.to_i
when KGC::EquipExtension::Regexp::BaseItem::EQUIP_TYPE
# ?????
@__equip_type = []
$1.scan(/\d+/) { |num|
@__equip_type << num.to_i
}
end
}
# EP ???????????? EP = 0
@__ep_cost = 0 unless KGC::EquipExtension::USE_EP_SYSTEM
end
#--------------------------------------------------------------------------
# ? ?? EP
#--------------------------------------------------------------------------
def ep_cost
create_equip_extension_cache if @__ep_cost == nil
return @__ep_cost
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def equip_type
create_equip_extension_cache if @__equip_type == nil
return @__equip_type
end
end
#=================================================#
#==============================================================================
# ¦ RPG::Armor
#==============================================================================
class RPG::Armor < RPG::BaseItem
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def create_equip_extension_cache
super
@__kind = -1
self.note.split(/[\r\n]+/).each { |line|
if line =~ KGC::EquipExtension::Regexp::Armor::EQUIP_KIND
# ????
e_index = KGC::EquipExtension::EXTRA_EQUIP_KIND.index($1)
next if e_index == nil
@__kind = e_index + 4
end
}
end
unless $@
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
alias kind_KGC_EquipExtension kind
def kind
create_equip_extension_cache if @__kind == nil
return (@__kind == -1 ? kind_KGC_EquipExtension : @__kind)
end
end
end
#=================================================#
#==============================================================================
# ¦ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_writer :equip_type # ?????
#--------------------------------------------------------------------------
# ? ??????
# actor_id : ???? ID
#--------------------------------------------------------------------------
alias setup_KGC_EquipExtension setup
def setup(actor_id)
actor = $data_actors[actor_id]
@extra_armor_id = []
setup_KGC_EquipExtension(actor_id)
restore_equip
end
#--------------------------------------------------------------------------
# ? MaxEP ??
#--------------------------------------------------------------------------
def maxep
calc_exp = KGC::EquipExtension::PERSONAL_EP_CALC_EXP[self.id]
if calc_exp == nil
calc_exp = KGC::EquipExtension::EP_CALC_EXP
end
n = Integer(eval(calc_exp))
return [[n, ep_limit].min, KGC::EquipExtension::EP_MIN].max
end
#--------------------------------------------------------------------------
# ? EP ??
#--------------------------------------------------------------------------
def ep
n = 0
equips.compact.each { |item| n += item.ep_cost }
return [maxep - n, 0].max
end
#--------------------------------------------------------------------------
# ? EP ????
#--------------------------------------------------------------------------
def ep_limit
return KGC::EquipExtension::EP_MAX
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def equip_type
if @equip_type.is_a?(Array)
return @equip_type
else
return KGC::EquipExtension::EQUIP_TYPE
end
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def armor_number
return equip_type.size
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def extra_armor_number
return [armor_number - 4, 0].max
end
#--------------------------------------------------------------------------
# ? ?? ID ??????
#--------------------------------------------------------------------------
def extra_armor_id
@extra_armor_id = [] if @extra_armor_id == nil
return @extra_armor_id
end
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
alias armors_KGC_EquipExtension armors
def armors
result = armors_KGC_EquipExtension
# 5??????????
extra_armor_number.times { |i|
armor_id = extra_armor_id[i]
result << (armor_id == nil ? nil : $data_armors[armor_id])
}
return result
end
#--------------------------------------------------------------------------
# ? ????? (?????????)
# equip_type : ????
# item : ?? or ?? (nil ??????)
# test : ?????? (???????????????????)
#--------------------------------------------------------------------------
alias change_equip_KGC_EquipExtension change_equip
def change_equip(equip_type, item, test = false)
change_equip_KGC_EquipExtension(equip_type, item, test)
# ????????????
if extra_armor_number > 0
item_id = item == nil ? 0 : item.id
case equip_type
when 5..armor_number # ?????
@extra_armor_id = [] if @extra_armor_id == nil
@extra_armor_id[equip_type - 5] = item_id
end
end
restore_battle_skill if $imported["SkillCPSystem"]
restore_passive_rev if $imported["PassiveSkill"]
end
#--------------------------------------------------------------------------
# ? ?????
# item : ?????? or ??
# ??/???????????????????????
#--------------------------------------------------------------------------
alias discard_equip_KGC_EquipExtension discard_equip
def discard_equip(item)
last_armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
discard_equip_KGC_EquipExtension(item)
curr_armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
return unless item.is_a?(RPG::Armor) # ?????
return if last_armors != curr_armors # ???????
# ????????
extra_armor_number.times { |i|
if extra_armor_id[i] == item.id
@extra_armor_id[i] = 0
break
end
}
restore_battle_skill if $imported["SkillCPSystem"]
restore_passive_rev if $imported["PassiveSkill"]
end
#--------------------------------------------------------------------------
# ? ?? ID ???
# class_id : ????? ID
#--------------------------------------------------------------------------
alias class_id_equal_KGC_EquipExtension class_id=
def class_id=(class_id)
class_id_equal_KGC_EquipExtension(class_id)
return if extra_armor_number == 0 # ????????
# ?????????????
for i in 5..armor_number
change_equip(i, nil) unless equippable?(equips[i])
end
end
#--------------------------------------------------------------------------
# ? EP ???????
# equip_type : ????
# item : ?? or ??
#--------------------------------------------------------------------------
def ep_condition_clear?(equip_type, item)
return true if item == nil # nil ?????? OK
curr_item = equips[equip_type]
offset = (curr_item != nil ? curr_item.ep_cost : 0)
return false if self.ep < (item.ep_cost - offset) # EP ??
return true
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def restore_equip
return if @__last_equip_type == equip_type
# ??????·????????
last_equips = equips
last_hp = self.hp
last_mp = self.mp
if $imported["SkillCPSystem"]
last_battle_skill_ids = battle_skill_ids.clone
end
# ?????
last_equips.each_index { |i| change_equip(i, nil) }
# ???·????????
last_equips.compact.each { |item| equip_legal_slot(item) }
self.hp = last_hp
self.mp = last_mp
if $imported["SkillCPSystem"]
last_battle_skill_ids.each_with_index { |s, i| set_battle_skill(i, s) }
end
@__last_equip_type = equip_type.clone
Graphics.frame_reset
end
#--------------------------------------------------------------------------
# ? ?????????????
# item : ?? or ??
#--------------------------------------------------------------------------
def equip_legal_slot(item)
if item.is_a?(RPG::Weapon)
if @weapon_id == 0
# ?? 1
change_equip(0, item)
elsif two_swords_style && @armor1_id == 0
# ?? 2 (??????)
change_equip(1, item)
end
elsif item.is_a?(RPG::Armor)
if !two_swords_style && item.kind == equip_type[0] && @armor1_id == 0
# ????? (????????)
change_equip(1, item)
else
# ??????????
list = [-1, @armor2_id, @armor3_id, @armor4_id]
list += extra_armor_id
# ?????????????????
equip_type.each_with_index { |kind, i|
if kind == item.kind && list[i] == 0
change_equip(i + 1, item)
break
end
}
end
end
end
end
#=================================================#
#==============================================================================
# ¦ Window_Base
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# ? EP ???????
# actor : ????
#--------------------------------------------------------------------------
def ep_color(actor)
return knockout_color if actor.maxep > 0 && actor.ep == 0
return normal_color
end
#--------------------------------------------------------------------------
# ? EP ????? 1 ???
#--------------------------------------------------------------------------
def ep_gauge_color1
color = KGC::EquipExtension::EP_GAUGE_START_COLOR
return (color.is_a?(Integer) ? text_color(color) : color)
end
#--------------------------------------------------------------------------
# ? EP ????? 2 ???
#--------------------------------------------------------------------------
def ep_gauge_color2
color = KGC::EquipExtension::EP_GAUGE_END_COLOR
return (color.is_a?(Integer) ? text_color(color) : color)
end
#--------------------------------------------------------------------------
# ? EP ???
# actor : ????
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_ep(actor, x, y, width = 120)
draw_actor_ep_gauge(actor, x, y, width)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, WLH, Vocab::ep_a)
self.contents.font.color = ep_color(actor)
xr = x + width
if width < 120
self.contents.draw_text(xr - 40, y, 40, WLH, actor.ep, 2)
else
self.contents.draw_text(xr - 90, y, 40, WLH, actor.ep, 2)
self.contents.font.color = normal_color
self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxep, 2)
end
self.contents.font.color = normal_color
end
#--------------------------------------------------------------------------
# ? EP ??????
# actor : ????
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_ep_gauge(actor, x, y, width = 120)
gw = width * actor.ep / [actor.maxep, 1].max
gc1 = ep_gauge_color1
gc2 = ep_gauge_color2
self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
end
#--------------------------------------------------------------------------
# ? ?? EP ???
# item : ?? or ??
# rect : ??????
# enabled : ????
#--------------------------------------------------------------------------
def draw_equipment_ep_cost(item, rect, enabled = true)
return if item == nil
# ?? EP 0 ????????
return if KGC::EquipExtension::HIDE_ZERO_EP_COST && item.ep_cost == 0
color = KGC::EquipExtension::EP_COST_COLOR
self.contents.font.color = (color.is_a?(Integer) ?
text_color(color) : color)
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(rect, item.ep_cost, 2)
end
end
#=================================================#
#==============================================================================
# ¦ Window_Equip
#==============================================================================
class Window_Equip < Window_Selectable
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@data = @actor.equips.clone
@item_max = [@data.size, @actor.armor_number + 1].min
create_contents
# ???????
self.contents.font.color = system_color
if @actor.two_swords_style
self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)
self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
else
self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
name = armor_slot_name(@actor.equip_type[0])
self.contents.draw_text(4, WLH * 1, 92, WLH, name)
end
for i in 1...@actor.armor_number
name = armor_slot_name(@actor.equip_type[i])
self.contents.draw_text(4, WLH * (i + 1), 92, WLH, name)
end
# ??????
rect = Rect.new(92, 0, self.width - 128, WLH)
@item_max.times { |i|
rect.y = WLH * i
draw_item_name(@data[i], rect.x, rect.y)
draw_equipment_ep_cost(@data[i], rect)
}
end
#--------------------------------------------------------------------------
# ? ?????????
# kind : ??
#--------------------------------------------------------------------------
def armor_slot_name(kind)
case kind
when 0..3
return eval("Vocab.armor#{kind + 1}")
else
return Vocab.extra_armor(kind - 4)
end
end
unless $imported["ExtendedEquipScene"]
#--------------------------------------------------------------------------
# ? ????? 1 ????????
#--------------------------------------------------------------------------
def cursor_pagedown
return if Input.repeat?(Input::R)
super
end
#--------------------------------------------------------------------------
# ? ????? 1 ???????
#--------------------------------------------------------------------------
def cursor_pageup
return if Input.repeat?(Input::L)
super
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
super
return unless self.active
if Input.repeat?(Input::RIGHT)
cursor_pagedown
elsif Input.repeat?(Input::LEFT)
cursor_pageup
end
end
end
end
#=================================================#
#==============================================================================
# ¦ Window_EquipItem
#==============================================================================
class Window_EquipItem < Window_Item
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
@item_enabled = []
super
@data.each { |item| @item_enabled << enable?(item) }
end
#--------------------------------------------------------------------------
# ? ????????????????
# item : ????
#--------------------------------------------------------------------------
def include?(item)
return true if item == nil
if @equip_type == 0
return false unless item.is_a?(RPG::Weapon)
else
return false unless item.is_a?(RPG::Armor)
return false unless item.kind == @equip_type - 1
end
return @actor.equippable?(item)
end
#--------------------------------------------------------------------------
# ? ??????????????????
# item : ????
#--------------------------------------------------------------------------
def enable?(item)
return false unless @actor.equippable?(item) # ????
return false unless @actor.ep_condition_clear?(@equip_type, item) # EP ??
return true
end
#--------------------------------------------------------------------------
# ? ?????
# index : ????
#--------------------------------------------------------------------------
def draw_item(index)
super(index)
rect = item_rect(index)
item = @data[index]
# ??????????
cw = self.contents.text_size(sprintf(":%2d", 0)).width
rect.width -= cw + 4
draw_equipment_ep_cost(item, rect, enable?(item))
end
#--------------------------------------------------------------------------
# ? ????????
# equip_type : ????
#--------------------------------------------------------------------------
def simple_refresh(equip_type)
# ???????????
last_equip_type = @equip_type
@equip_type = equip_type
@data.each_with_index { |item, i|
# ????????????????
if enable?(item) != @item_enabled[i]
draw_item(i)
@item_enabled[i] = enable?(item)
end
}
# ???????
@equip_type = last_equip_type
end
end
#=================================================#
#==============================================================================
# ¦ Window_EquipStatus
#==============================================================================
class Window_EquipStatus < Window_Base
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
alias refresh_KGC_EquipExtension refresh
def refresh
refresh_KGC_EquipExtension
draw_actor_ep(@actor, 120, 0, 56) if KGC::EquipExtension::USE_EP_SYSTEM
end
end
#=================================================#
#==============================================================================
# ¦ Window_Status
#==============================================================================
class Window_Status < Window_Base
if KGC::EquipExtension::SHOW_STATUS_EP
#--------------------------------------------------------------------------
# ? ???????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
alias draw_basic_info_KGC_EquipExtension draw_basic_info
def draw_basic_info(x, y)
draw_basic_info_KGC_EquipExtension(x, y)
draw_actor_ep(@actor, x + 160, y + WLH * 4)
end
end
#--------------------------------------------------------------------------
# ? ??????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
def draw_equipments(x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, WLH, Vocab::equip)
item_number = [@actor.equips.size, @actor.armor_number + 1].min
item_number.times { |i|
draw_item_name(@actor.equips[i], x + 16, y + WLH * (i + 1))
}
end
end
#=================================================#
#==============================================================================
# ¦ Window_ShopStatus
#==============================================================================
class Window_ShopStatus < Window_Base
#--------------------------------------------------------------------------
# ? ?????????????????
# actor : ????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
def draw_actor_parameter_change(actor, x, y)
return if @item.is_a?(RPG::Item)
enabled = actor.equippable?(@item)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x, y, 200, WLH, actor.name)
if @item.is_a?(RPG::Weapon)
item1 = weaker_weapon(actor)
elsif actor.two_swords_style and @item.kind == 0
item1 = nil
else
index = actor.equip_type.index(@item.kind)
item1 = (index != nil ? actor.equips[1 + index] : nil)
end
if enabled
if @item.is_a?(RPG::Weapon)
atk1 = item1 == nil ? 0 : item1.atk
atk2 = @item == nil ? 0 : @item.atk
change = atk2 - atk1
else
def1 = item1 == nil ? 0 : item1.def
def2 = @item == nil ? 0 : @item.def
change = def2 - def1
end
self.contents.draw_text(x, y, 200, WLH, sprintf("%+d", change), 2)
end
draw_item_name(item1, x, y + WLH, enabled)
end
end
#=================================================#
#==============================================================================
# ¦ Scene_Equip
#==============================================================================
class Scene_Equip < Scene_Base
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
EQUIP_TYPE_MAX = KGC::EquipExtension::EXTRA_EQUIP_KIND.size + 5
#--------------------------------------------------------------------------
# ? ?????????
# actor_index : ??????????
# equip_index : ????????
#--------------------------------------------------------------------------
alias initialize_KGC_EquipExtension initialize
def initialize(actor_index = 0, equip_index = 0)
initialize_KGC_EquipExtension(actor_index, equip_index)
unit = ($imported["LargeParty"] ?
$game_party.all_members : $game_party.members)
actor = unit[actor_index]
@equip_index = [@equip_index, actor.armor_number].min
end
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
alias create_item_windows_KGC_EquipExtension create_item_windows
def create_item_windows
create_item_windows_KGC_EquipExtension
kind = equip_kind(@equip_index)
EQUIP_TYPE_MAX.times { |i|
@item_windows[i].visible = (kind == i)
}
end
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
def update_item_windows
kind = equip_kind(@equip_window.index)
for i in 0...EQUIP_TYPE_MAX
@item_windows[i].visible = (kind == i)
@item_windows[i].update
end
@item_window = @item_windows[kind]
@item_window.simple_refresh(@equip_window.index)
end
#--------------------------------------------------------------------------
# ? ?????????
# index : ?????????
#--------------------------------------------------------------------------
def equip_kind(index)
if index == 0
return 0
else
return @actor.equip_type[index - 1] + 1
end
end
unless $imported["ExtendedEquipScene"]
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def update_status_window
if @equip_window.active
@status_window.set_new_parameters(nil, nil, nil, nil)
elsif @item_window.active
temp_actor = Marshal.load(Marshal.dump(@actor))
temp_actor.change_equip(@equip_window.index, @item_window.item, true)
new_atk = temp_actor.atk
new_def = temp_actor.def
new_spi = temp_actor.spi
new_agi = temp_actor.agi
@status_window.set_new_parameters(new_atk, new_def, new_spi, new_agi)
end
@status_window.update
end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias update_item_selection_KGC_EquipExtension update_item_selection
def update_item_selection
if Input.trigger?(Input::C)
# ????????
index = @equip_window.index
item = @item_window.item
unless item == nil ||
(@actor.equippable?(item) && @actor.ep_condition_clear?(index, item))
Sound.play_buzzer
return
end
end
update_item_selection_KGC_EquipExtension
end
end
#=================================================#
#==============================================================================
# ¦ Scene_File
#==============================================================================
class Scene_File < Scene_Base
#--------------------------------------------------------------------------
# ? ???????????
# file : ??????????????? (??????)
#--------------------------------------------------------------------------
alias read_save_data_KGC_EquipExtension read_save_data
def read_save_data(file)
read_save_data_KGC_EquipExtension(file)
KGC::Commands.restore_equip
Graphics.frame_reset
end
end
Hoffe es ist alles richtig übersetzt.
-
Würde ich machen wenn ich es besitzen würde, sorry.
Suche gerade im Internet nach einer anderen Site wo es das Script gibt.
Edit:
habe eins gefunden hoffe du meinst das Script:
===============================================================
# ? Actor Profile Information - CC_ExtendedActorInfo ? VX ?
# ? Version 1.0.0 by Claimh ?
# ? Translation by Mr. Anonymous ?
#------------------------------------------------------------------------------
# This script adds a character profile screen for extended actor information.
# This screen is called from the status screen by pressing the "C" button
# (by default). This information displayed on this screen is customized in
# this script itself below (in the Customization block).
#==============================================================================
module Chara_Review
#==============================================================================#
# ? Customization ? #
#==============================================================================#
# If you have more than 8 actors in your game, you may add additional lines
# to each of these fields.
#----------------------------------------------------------------------------
# Call Screen Input Key
#----------------------------------------------------------------------------
# This allows you to change the button/key pressed to call the extended
# actor information screen from the status screen. (Default: C)
CHENGE_KEY = Input::C
#--------------------------------------------------------------------------
# ? Customize Age
#--------------------------------------------------------------------------
CHARA_AGE = {
# Age is the first field to the right of the profile image.
# ActorID => "Age"
1 => "17",
2 => "18",
3 => "15",
4 => "16",
5 => "16"
}
#--------------------------------------------------------------------------
# ? Customize Actor's Origin
#--------------------------------------------------------------------------
CHARA_FROM = {
# "From" or Origin is the second field to the right of the profile image.
# ActorID => "Place"
1 => "Al'thon",
2 => "Embrasia",
3 => "Arbolia",
4 => "Kitra",
5 => "Lago"
}
#--------------------------------------------------------------------------
# ? Customize Height
#--------------------------------------------------------------------------
CHARA_H = {
# Height is the third field to the right of the profile image.
# ActorID => "Height"
1 => "5 Feet 6 Inches",
2 => "6 Feet 4 Inches",
3 => "6 Feet 1 Inch",
4 => "5 Feet 5 Inches",
5 => "5 Feet 8 Inches"
}
#--------------------------------------------------------------------------
# ? Customize Weight
#--------------------------------------------------------------------------
CHARA_W = {
# Weight is the fourth field to the right of the profile image.
# ActorID => "Weight"
1 => "87 Pounds",
2 => "125 Pounds",
3 => "150 Pounds",
4 => "96 Pounds",
5 => "100 pounds"
}
#--------------------------------------------------------------------------
# ? Customize Profile Information
#--------------------------------------------------------------------------
CHARA_INFO = {
# Profile Information is displayed beneath the actor's graphic file.
# ActorID => "Information Text"
1 => "Elbinez is a caring young woman who control the powers of Water. She
lives in a small fishing village along with her friend and The Elder after
the death of her Parents when she was Six years old.",
2 => "Berethir is a solum Daemon living along in a deserted church. His
early life was filed with turmiol after the murder of all his family by
an unown entity. Berethir controls the power of Fire.",
3 => "Tobryn is a creative and talented musican who controls the power of
Forest. He lives a lonely live, choosing to wander the forests and distance
himself from his royal roots. He is amoung one of the only Centaurs living
in Corazor.",
4 => "Silwest is a wild and adventurous Harpy settling in the snowy mountains
of Kitra along with Grouchuck, a petit Sky Drake. Silwest controls the
powers of wind and had tremendous magikal abilities.",
5 => "Rufus is a young and inexperienced warrior living with his friend
Elbinez in Al'thon. Rufus dosent have control over any element but is
capable of using healing charms and Enhancement charms."
}
#--------------------------------------------------------------------------
# ? Customize Face/Profile Image
#--------------------------------------------------------------------------
# Image Type Toggle
# This toggle allows to use either the default Face graphic that is set up
# in the Actor tab in the database, or a custom image of your choosing.
# true = Custom images are used.
# false = The actor's face graphic is used.
BSTUP = false
# Custom Profile Graphics ("Graphics/Face" directory)(If BSTUP = true)
BSTUP_FILE = {
# ActorID => "Profile Image" (Without image format extension)
# You may also add more images for actors after the fourth line, if needed.
1 => "actor1",
2 => "actor1",
3 => "actor1",
4 => "actor1"
}
#----------------------------------------------------------------------------
# END Customization
#----------------------------------------------------------------------------
end
#==============================================================================
# ? Window_Charactor
#------------------------------------------------------------------------------
# ? Define Window
#==============================================================================
class Window_Charactor < Window_Base
#--------------------------------------------------------------------------
# ? Initialize Profile Window
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 544, 416)
self.contents = Bitmap.new(width - 32, height - 32)
refresh(actor)
end
#--------------------------------------------------------------------------
# ? Determine BSTUP Type
#--------------------------------------------------------------------------
def refresh(actor)
self.contents.clear
return if actor.nil?
if Chara_Review::BSTUP
refresh_bstup(actor) # If BSTUP = true
else
refresh_face(actor) # If BSTUP = false
end
end
#--------------------------------------------------------------------------
# ? Draw Parameters and Profile Image (BSTUP)
#--------------------------------------------------------------------------
def refresh_bstup(actor)
draw_face_picture(Chara_Review::BSTUP_FILE[actor.id], 0, 0)
self.contents.font.color = system_color
self.contents.draw_text(280, 30, 80, WLH, "Name:")
self.contents.draw_text(280, 60, 80, WLH, "Age:")
self.contents.draw_text(280, 90, 80, WLH, "From:")
self.contents.draw_text(280, 120, 80, WLH, "Height:")
self.contents.draw_text(280, 150, 80, WLH, "Weight:")
self.contents.font.color = normal_color
draw_actor_name(actor, 380, 30)
self.contents.draw_text(380, 60, 80, WLH, Chara_Review::CHARA_AGE[actor.id])
self.contents.draw_text(380, 90, 180, WLH, Chara_Review::CHARA_FROM[actor.id])
self.contents.draw_text(380, 120 , 200, WLH, Chara_Review::CHARA_H[actor.id])
self.contents.draw_text(380, 150, 250, WLH, Chara_Review::CHARA_W[actor.id])
draw_enter_text(20, 300, 500, WLH, Chara_Review::CHARA_INFO[actor.id])
end
#--------------------------------------------------------------------------
# ? Draw Parameters and Profile Image (FACE)
#--------------------------------------------------------------------------
def refresh_face(actor)
draw_actor_face(actor, 8, 32)
self.contents.font.color = system_color
self.contents.draw_text(200, 30, 80, WLH, "Name:")
self.contents.draw_text(200, 60, 80, WLH, "Age:")
self.contents.draw_text(200, 90, 80, WLH, "From:")
self.contents.draw_text(200, 120, 80, WLH, "Height:")
self.contents.draw_text(200, 150, 80, WLH, "Weight:")
self.contents.font.color = normal_color
draw_actor_name(actor, 300, 30)
self.contents.draw_text(300, 60, 80, WLH, Chara_Review::CHARA_AGE[actor.id])
self.contents.draw_text(300, 90, 180, WLH, Chara_Review::CHARA_FROM[actor.id])
self.contents.draw_text(300, 120 , 200, WLH, Chara_Review::CHARA_H[actor.id])
self.contents.draw_text(300, 150, 250, WLH, Chara_Review::CHARA_W[actor.id])
draw_enter_text(20, 200, 500, WLH, Chara_Review::CHARA_INFO[actor.id])
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
# ? Draw Entered Text
#--------------------------------------------------------------------------
def draw_enter_text(x, y, width, height, text)
info_box = text.split(/\n/)
for i in 0...info_box.size
self.contents.draw_text( x, y+i*WLH, width, WLH, info_box)
break if (y+i*WLH) > (self.height-WLH)
end
end
#--------------------------------------------------------------------------
# ? Draw Face Graphic(Graphics/Face)
#--------------------------------------------------------------------------
def draw_face_picture(file_name, x, y)
bitmap = Cache.face(file_name)
cw = bitmap.width
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x, y, bitmap, src_rect)
end
end
#==============================================================================
# ? Scene_Charactor
#------------------------------------------------------------------------------
# ? Define Methods
#==============================================================================
class Scene_Charactor < Scene_Base
#--------------------------------------------------------------------------
# ? Initialize Actor
# actor_index : Actor ID
#--------------------------------------------------------------------------
def initialize(actor_index = 0)
@actor_index = actor_index
end
#--------------------------------------------------------------------------
# ? Create Menu Background
#--------------------------------------------------------------------------
def start
super
create_menu_background
@actor = $game_party.members[@actor_index]
@status_window = Window_Charactor.new(@actor)
end
#--------------------------------------------------------------------------
# ? Dispose Status Window
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@status_window.dispose
end
#--------------------------------------------------------------------------
# ? Return Scene
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Status.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Next Actor
#--------------------------------------------------------------------------
def next_actor
@actor_index += 1
@actor_index %= $game_party.members.size
$scene = Scene_Charactor.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Previous Actor
#--------------------------------------------------------------------------
def prev_actor
@actor_index += $game_party.members.size - 1
@actor_index %= $game_party.members.size
$scene = Scene_Charactor.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Actor Profile Screne Inputs
#--------------------------------------------------------------------------
def update
update_menu_background
@status_window.update
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::R)
Sound.play_cursor
next_actor
elsif Input.trigger?(Input::L)
Sound.play_cursor
prev_actor
end
super
end
end
#==============================================================================
# ? Scene_Status
#==============================================================================
class Scene_Status
#--------------------------------------------------------------------------
# ? Update Actor
#--------------------------------------------------------------------------
alias update_chara update
def update
if Input.trigger?(Chara_Review::CHENGE_KEY)
Sound.play_decision
$scene = Scene_Charactor.new(@actor_index)
end
update_chara
end
end
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ The original untranslated version of this script can be found here:
#http://www4.plala.or.jp/findias/codecrush/material/rgss2/menu/1-menu_chara/menu_char_top.htmll
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
Da wo ein Smiley ist (Zeile 267) gehört ein B und ) hin aber das forum ändert es zu einem Smiley. B)
Cloud crescent
-
Alles klar, trotzdem danke Cloud. Ich poste die Fehlermeldung heut abend mal damit Deity weis welchen Fehler ich mit dem anderen Skript hab das es hier gibt xD
Kvote
-
Das verstehe ich jetzt nicht, habe doch oben ein Script gepostet, dass ich gefunden habe?
Hier noch einmal:
#===============================================================
# ? Actor Profile Information - CC_ExtendedActorInfo ? VX ?
# ? Version 1.0.0 by Claimh ?
# ? Translation by Mr. Anonymous ?
#------------------------------------------------------------------------------
# This script adds a character profile screen for extended actor information.
# This screen is called from the status screen by pressing the "C" button
# (by default). This information displayed on this screen is customized in
# this script itself below (in the Customization block).
#==============================================================================
module Chara_Review
#==============================================================================#
# ? Customization ? #
#==============================================================================#
# If you have more than 8 actors in your game, you may add additional lines
# to each of these fields.
#----------------------------------------------------------------------------
# Call Screen Input Key
#----------------------------------------------------------------------------
# This allows you to change the button/key pressed to call the extended
# actor information screen from the status screen. (Default: C)
CHENGE_KEY = Input::C
#--------------------------------------------------------------------------
# ? Customize Age
#--------------------------------------------------------------------------
CHARA_AGE = {
# Age is the first field to the right of the profile image.
# ActorID => "Age"
1 => "17",
2 => "18",
3 => "15",
4 => "16",
5 => "16"
}
#--------------------------------------------------------------------------
# ? Customize Actor's Origin
#--------------------------------------------------------------------------
CHARA_FROM = {
# "From" or Origin is the second field to the right of the profile image.
# ActorID => "Place"
1 => "Al'thon",
2 => "Embrasia",
3 => "Arbolia",
4 => "Kitra",
5 => "Lago"
}
#--------------------------------------------------------------------------
# ? Customize Height
#--------------------------------------------------------------------------
CHARA_H = {
# Height is the third field to the right of the profile image.
# ActorID => "Height"
1 => "5 Feet 6 Inches",
2 => "6 Feet 4 Inches",
3 => "6 Feet 1 Inch",
4 => "5 Feet 5 Inches",
5 => "5 Feet 8 Inches"
}
#--------------------------------------------------------------------------
# ? Customize Weight
#--------------------------------------------------------------------------
CHARA_W = {
# Weight is the fourth field to the right of the profile image.
# ActorID => "Weight"
1 => "87 Pounds",
2 => "125 Pounds",
3 => "150 Pounds",
4 => "96 Pounds",
5 => "100 pounds"
}
#--------------------------------------------------------------------------
# ? Customize Profile Information
#--------------------------------------------------------------------------
CHARA_INFO = {
# Profile Information is displayed beneath the actor's graphic file.
# ActorID => "Information Text"
1 => "Elbinez is a caring young woman who control the powers of Water. She
lives in a small fishing village along with her friend and The Elder after
the death of her Parents when she was Six years old.",
2 => "Berethir is a solum Daemon living along in a deserted church. His
early life was filed with turmiol after the murder of all his family by
an unown entity. Berethir controls the power of Fire.",
3 => "Tobryn is a creative and talented musican who controls the power of
Forest. He lives a lonely live, choosing to wander the forests and distance
himself from his royal roots. He is amoung one of the only Centaurs living
in Corazor.",
4 => "Silwest is a wild and adventurous Harpy settling in the snowy mountains
of Kitra along with Grouchuck, a petit Sky Drake. Silwest controls the
powers of wind and had tremendous magikal abilities.",
5 => "Rufus is a young and inexperienced warrior living with his friend
Elbinez in Al'thon. Rufus dosent have control over any element but is
capable of using healing charms and Enhancement charms."
}
#--------------------------------------------------------------------------
# ? Customize Face/Profile Image
#--------------------------------------------------------------------------
# Image Type Toggle
# This toggle allows to use either the default Face graphic that is set up
# in the Actor tab in the database, or a custom image of your choosing.
# true = Custom images are used.
# false = The actor's face graphic is used.
BSTUP = false
# Custom Profile Graphics ("Graphics/Face" directory)(If BSTUP = true)
BSTUP_FILE = {
# ActorID => "Profile Image" (Without image format extension)
# You may also add more images for actors after the fourth line, if needed.
1 => "actor1",
2 => "actor1",
3 => "actor1",
4 => "actor1"
}
#----------------------------------------------------------------------------
# END Customization
#----------------------------------------------------------------------------
end
#==============================================================================
# ? Window_Charactor
#------------------------------------------------------------------------------
# ? Define Window
#==============================================================================
class Window_Charactor < Window_Base
#--------------------------------------------------------------------------
# ? Initialize Profile Window
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 544, 416)
self.contents = Bitmap.new(width - 32, height - 32)
refresh(actor)
end
#--------------------------------------------------------------------------
# ? Determine BSTUP Type
#--------------------------------------------------------------------------
def refresh(actor)
self.contents.clear
return if actor.nil?
if Chara_Review::BSTUP
refresh_bstup(actor) # If BSTUP = true
else
refresh_face(actor) # If BSTUP = false
end
end
#--------------------------------------------------------------------------
# ? Draw Parameters and Profile Image (BSTUP)
#--------------------------------------------------------------------------
def refresh_bstup(actor)
draw_face_picture(Chara_Review::BSTUP_FILE[actor.id], 0, 0)
self.contents.font.color = system_color
self.contents.draw_text(280, 30, 80, WLH, "Name:")
self.contents.draw_text(280, 60, 80, WLH, "Age:")
self.contents.draw_text(280, 90, 80, WLH, "From:")
self.contents.draw_text(280, 120, 80, WLH, "Height:")
self.contents.draw_text(280, 150, 80, WLH, "Weight:")
self.contents.font.color = normal_color
draw_actor_name(actor, 380, 30)
self.contents.draw_text(380, 60, 80, WLH, Chara_Review::CHARA_AGE[actor.id])
self.contents.draw_text(380, 90, 180, WLH, Chara_Review::CHARA_FROM[actor.id])
self.contents.draw_text(380, 120 , 200, WLH, Chara_Review::CHARA_H[actor.id])
self.contents.draw_text(380, 150, 250, WLH, Chara_Review::CHARA_W[actor.id])
draw_enter_text(20, 300, 500, WLH, Chara_Review::CHARA_INFO[actor.id])
end
#--------------------------------------------------------------------------
# ? Draw Parameters and Profile Image (FACE)
#--------------------------------------------------------------------------
def refresh_face(actor)
draw_actor_face(actor, 8, 32)
self.contents.font.color = system_color
self.contents.draw_text(200, 30, 80, WLH, "Name:")
self.contents.draw_text(200, 60, 80, WLH, "Age:")
self.contents.draw_text(200, 90, 80, WLH, "From:")
self.contents.draw_text(200, 120, 80, WLH, "Height:")
self.contents.draw_text(200, 150, 80, WLH, "Weight:")
self.contents.font.color = normal_color
draw_actor_name(actor, 300, 30)
self.contents.draw_text(300, 60, 80, WLH, Chara_Review::CHARA_AGE[actor.id])
self.contents.draw_text(300, 90, 180, WLH, Chara_Review::CHARA_FROM[actor.id])
self.contents.draw_text(300, 120 , 200, WLH, Chara_Review::CHARA_H[actor.id])
self.contents.draw_text(300, 150, 250, WLH, Chara_Review::CHARA_W[actor.id])
draw_enter_text(20, 200, 500, WLH, Chara_Review::CHARA_INFO[actor.id])
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
# ? Draw Entered Text
#--------------------------------------------------------------------------
def draw_enter_text(x, y, width, height, text)
info_box = text.split(/\n/)
for i in 0...info_box.size
self.contents.draw_text( x, y+i*WLH, width, WLH, info_box)
break if (y+i*WLH) > (self.height-WLH)
end
end
#--------------------------------------------------------------------------
# ? Draw Face Graphic(Graphics/Face)
#--------------------------------------------------------------------------
def draw_face_picture(file_name, x, y)
bitmap = Cache.face(file_name)
cw = bitmap.width
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x, y, bitmap, src_rect)
end
end
#==============================================================================
# ? Scene_Charactor
#------------------------------------------------------------------------------
# ? Define Methods
#==============================================================================
class Scene_Charactor < Scene_Base
#--------------------------------------------------------------------------
# ? Initialize Actor
# actor_index : Actor ID
#--------------------------------------------------------------------------
def initialize(actor_index = 0)
@actor_index = actor_index
end
#--------------------------------------------------------------------------
# ? Create Menu Background
#--------------------------------------------------------------------------
def start
super
create_menu_background
@actor = $game_party.members[@actor_index]
@status_window = Window_Charactor.new(@actor)
end
#--------------------------------------------------------------------------
# ? Dispose Status Window
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@status_window.dispose
end
#--------------------------------------------------------------------------
# ? Return Scene
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Status.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Next Actor
#--------------------------------------------------------------------------
def next_actor
@actor_index += 1
@actor_index %= $game_party.members.size
$scene = Scene_Charactor.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Previous Actor
#--------------------------------------------------------------------------
def prev_actor
@actor_index += $game_party.members.size - 1
@actor_index %= $game_party.members.size
$scene = Scene_Charactor.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Actor Profile Screne Inputs
#--------------------------------------------------------------------------
def update
update_menu_background
@status_window.update
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::R)
Sound.play_cursor
next_actor
elsif Input.trigger?(Input::L)
Sound.play_cursor
prev_actor
end
super
end
end
#==============================================================================
# ? Scene_Status
#==============================================================================
class Scene_Status
#--------------------------------------------------------------------------
# ? Update Actor
#--------------------------------------------------------------------------
alias update_chara update
def update
if Input.trigger?(Chara_Review::CHENGE_KEY)
Sound.play_decision
$scene = Scene_Charactor.new(@actor_index)
end
update_chara
end
end
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ The original untranslated version of this script can be found here:
#http://www4.plala.or.jp/findias/codecrush/material/rgss2/menu/1-menu_chara/menu_char_top.htmll
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
Da wo der Smiley ist (Zeile 267) gehört ein B und ) hin aber das forum ändert es zu einem Smiley. B)
Vermute du hast es einfach übersehen.
Cloud crescent
-
Ne das nich aber es ist jetzt da ^^ ( inet lahmt hier xD)
naja ich danke nochmal fürs posten. Wie gesagt wenns geht, oder nicht geht poste ich hier xD
Kvote
-
@ Kvote20
Hier ist noch das 2te von HBGames, dass mir besser gefällt.
Der Link zur Site funktioniert wieder.
Probiere einfach beide aus.
#===============================================================================
# *[VX]Character Biography
# Displays a biography screen for each character by pressing the C decision
# key while in the Status menu.
#-------------------------------------------------------------------------------
# Author: Obsidian
# obsidian_moonwolf@yahoo.com
# Original Author for XP: Claimh
# Orignial translation/edits to XP version: TruthfulTiger & Italianstal1ion
#===============================================================================
# Set the key to open the biography screen
CHANGE_KEY = Input::C
# Set the Characters' ages.
CHAR_AGE = ["19", "17", "20", "16"]
# Set the Characters' Homelands
CHAR_HOMELAND = ["Elmwood", "Elmwood", "Valens", "Unknown"]
# Set the Characters' Heights
CHAR_HEIGHT = ["5'10", "5'8", "6'", "5'4"]
# Set the Characters' Weights
CHAR_WEIGHT = ["160", "110", "225", "102"]
# Set the Characters' Races
CHAR_RACE = ["Human", "Human", "Human", "Elf"]
# Set the Characters' Genders
CHAR_GENDER = ["Male", "Female", "Male", "Female"]
# Set the Characters' Weapon Styles
CHAR_WEAPON = ["Swords", "Staves", "Spears", "Wands"]
#===============================================================================
# Character Descriptions
#===============================================================================
#-------------------------------------------------------------------------------
# Character 1 Description
#-------------------------------------------------------------------------------
D1 = "Insert the first line of descriptive text here."
D2 = "Insert the second line of descriptive text here."
D3 = "Insert the third line of descriptive text here."
D4 = "Insert the fourth line of descriptive text here."
D5 = "Insert the fifth line of descriptive text here."
DESC_SET1 = [D1, D2, D3, D4, D5]
#-------------------------------------------------------------------------------
# Character 2 Description
#-------------------------------------------------------------------------------
D1 = "Insert the first line of descriptive text here."
D2 = "Insert the second line of descriptive text here."
D3 = "Insert the third line of descriptive text here."
D4 = "Insert the fourth line of descriptive text here."
D5 = "Insert the fifth line of descriptive text here."
DESC_SET2 = [D1, D2, D3, D4, D5]
#-------------------------------------------------------------------------------
# Character 3 Description
#-------------------------------------------------------------------------------
D1 = "Insert the first line of descriptive text here."
D2 = "Insert the second line of descriptive text here."
D3 = "Insert the third line of descriptive text here."
D4 = "Insert the fourth line of descriptive text here."
D5 = "Insert the fifth line of descriptive text here."
DESC_SET3 = [D1, D2, D3, D4, D5]
#-------------------------------------------------------------------------------
# Character 4 Description
#-------------------------------------------------------------------------------
D1 = "Insert the first line of descriptive text here."
D2 = "Insert the second line of descriptive text here."
D3 = "Insert the third line of descriptive text here."
D4 = "Insert the fourth line of descriptive text here."
D5 = "Insert the fifth line of descriptive text here."
DESC_SET4 = [D1, D2, D3, D4, D5]
CHAR_DESCRIPTION = [DESC_SET1, DESC_SET2, DESC_SET3, DESC_SET4]
#===============================================================================
# Start Window_Character
#===============================================================================
#-------------------------------------------------------------------------------
# Initialize
#-------------------------------------------------------------------------------
class Window_Character < Window_Base
def initialize(actor)
super(0, 0, 544, 416)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
refresh
# Ends initialize
end
#-------------------------------------------------------------------------------
# Refresh
#-------------------------------------------------------------------------------
def refresh
self.contents.clear
# Draw the characters' faces
draw_actor_face(@actor, 2, 2, 96)
# Set the category name colors
self.contents.font.color.set( 150, 150, 255)
# Draw the category names
self.contents.draw_text(150, 10, 80, 32, "Name:")
self.contents.draw_text(320, 10, 100, 32, "Class:")
self.contents.draw_text(150, 50, 80, 32, "Race:")
self.contents.draw_text(150, 90, 80, 32, "Age:")
self.contents.draw_text(150, 130, 80, 32, "Height:")
self.contents.draw_text(150, 170, 80, 32, "Homeland:")
self.contents.draw_text(320, 90, 100, 32, "Weapon:")
self.contents.draw_text(320, 50, 100, 32, "Gender:")
self.contents.draw_text(320, 130, 100, 32, "Weight:")
# Sets the Info listed to normal color
self.contents.font.color = normal_color
# Draw the Info for each category
draw_actor_class(@actor, 420, 10)
draw_actor_name(@actor, 240, 10)
draw_actor_race(@actor, 240, 50)
draw_actor_age(@actor, 240, 90)
draw_actor_height(@actor, 240, 130)
draw_actor_homeland(@actor, 240, 170)
draw_actor_weapon(@actor, 420, 90)
draw_actor_gender(@actor, 420, 50)
draw_actor_weight(@actor, 420, 130)
draw_actor_description(@actor, 10, 200)
# Ends refresh
end
# Ends Window_Character
end
#===============================================================================
# Class Window_Base
#===============================================================================
class Window_Base < Window
#-------------------------------------------------------------------------------
# Defines draw_actor_age
#-------------------------------------------------------------------------------
def draw_actor_age(actor, x, y)
self.contents.draw_text(x, y, 80, 32, CHAR_AGE[actor.id-1])
end
#-------------------------------------------------------------------------------
# Defines draw_actor_homeland
#-------------------------------------------------------------------------------
def draw_actor_homeland(actor, x, y)
self.contents.draw_text(x, y, 180, 32, CHAR_HOMELAND[actor.id-1])
end
#-------------------------------------------------------------------------------
# Defines draw_actor_height
#-------------------------------------------------------------------------------
def draw_actor_height(actor, x, y)
self.contents.draw_text(x, y , 200, 32, CHAR_HEIGHT[actor.id-1])
end
#-------------------------------------------------------------------------------
# Defines draw_actor_weight
#-------------------------------------------------------------------------------
def draw_actor_weight(actor, x, y)
self.contents.draw_text(x, y, 250, 32, CHAR_WEIGHT[actor.id-1])
end
#-------------------------------------------------------------------------------
# Defines draw_actor_race
#-------------------------------------------------------------------------------
def draw_actor_race(actor, x, y)
self.contents.draw_text(x, y, 280, 32, CHAR_RACE[actor.id-1])
end
#-------------------------------------------------------------------------------
# Defines draw_actor_weapon
#-------------------------------------------------------------------------------
def draw_actor_weapon(actor, x, y)
self.contents.draw_text(x, y, 540, 32, CHAR_WEAPON[actor.id-1])
end
#-------------------------------------------------------------------------------
# Define draw_actor_gender
#-------------------------------------------------------------------------------
def draw_actor_gender(actor, x, y)
self.contents.draw_text(x, y, 600, 32, CHAR_GENDER[actor.id-1])
end
#-------------------------------------------------------------------------------
# Define draw_actor_description
#-------------------------------------------------------------------------------
def draw_actor_description(actor, x, y)
info = CHAR_DESCRIPTION[actor.id-1]
self.contents.draw_text(x, y, 600, 32, info[0])
self.contents.draw_text(x, y+40, 600, 32, info[1])
self.contents.draw_text(x, y+80, 600, 32, info[2])
self.contents.draw_text(x, y+120, 600, 32, info[3])
self.contents.draw_text(x, y+160, 600, 32, info[4])
end
end
#===============================================================================
# Scene_Character
#===============================================================================
class Scene_Character
#-------------------------------------------------------------------------------
# Initialize
#-------------------------------------------------------------------------------
def initialize(actor_index = 0, equip_index = 0)
@actor_index = actor_index
end
#-------------------------------------------------------------------------------
# Main
#-------------------------------------------------------------------------------
def main
@actor = $game_party.members[@actor_index]
@status_window = Window_Character.new(@actor)
Graphics.transition
# Begin loop
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
# Dispose window
@status_window.dispose
end
#-------------------------------------------------------------------------------
# Update
#-------------------------------------------------------------------------------
def update
# If cancel button pressed(B)
if Input.trigger?(Input::B)
# Play decision SE
Sound.play_decision
$scene = Scene_Menu.new(3)
return
end
# If Right button pressed(W)
if Input.trigger?(Input::R)
#Play decision SE
Sound.play_decision
# Swith to next actor in list
@actor_index += 1
@actor_index %= $game_party.members.size
$scene = Scene_Character.new(@actor_index)
return
end
# If Left button pressed(Q)
if Input.trigger?(Input::L)
# Play decision SE
Sound.play_decision
# Switch to previous actor in list
@actor_index += $game_party.members.size - 1
@actor_index %= $game_party.members.size
$scene = Scene_Character.new(@actor_index)
return
end
end
end # End Scene
#===============================================================================
# Scene_Status
#===============================================================================
class Scene_Status
alias update_chara update
def update
# If activation button pressed(Set at top of script)
if Input.trigger?(CHANGE_KEY)
# Play decision SE
Sound.play_decision
$scene = Scene_Character.new(@actor_index)
return
end
update_chara
end
end
Cloud
-
@ PDM
vielen dank dafür
werd mal versuchen ob ich es jetzt hin bekomme :)
-
hallo ich hab mal ne frage, also folgendes:
ich möchte das bei mir in einem kampf ein bestimmter hintergrund erscheint und das nicht überall der selbe hinter grund sondern in bestimmten ebenen verschiedene nur ich weiß nicht wie das geht. Hat jemand vllt dazu ein Skript?
Ich wäre dem sehr dankbar der mir helfen könnte...
MFG Vylf
-
@ Deity: Ich hoffe du kannst damit was anfangen ;D
Hier die Fehlermeldung
http://yfrog.com/4wprofilescriptfehlerp
und das Skript
#===============================================================
# ? Actor Profile Information - CC_ExtendedActorInfo ? VX ?
# ? Version 1.0.0 by Claimh ?
# ? Translation by Mr. Anonymous ?
#------------------------------------------------------------------------------
# This script adds a character profile screen for extended actor information.
# This screen is called from the status screen by pressing the "C" button
# (by default). This information displayed on this screen is customized in
# this script itself below (in the Customization block).
#==============================================================================
#
# Edit by KVOTE: Merke -> um das Alter über eine variable ändern zu können
# (eigene Variable aus einem Event z.B.) habe ich folgende Zeile ersetzt:
# Zeile 157 voher:
#
# self.contents.draw_text(300, 60, 80, WLH, Chara_Review::CHARA_AGE[actor.id])
# und nacher :
# self.contents.draw_text(300, 60, 80, WLH, $game_variables[deinevariablennummer])
#==============================================================================
module Chara_Review
#==============================================================================#
# ? Customization ? #
#==============================================================================#
# If you have more than 8 actors in your game, you may add additional lines
# to each of these fields.
#----------------------------------------------------------------------------
# Call Screen Input Key
#----------------------------------------------------------------------------
# This allows you to change the button/key pressed to call the extended
# actor information screen from the status screen. (Default: C)
CHENGE_KEY = Input::C
#--------------------------------------------------------------------------
# ? Customize Age
#--------------------------------------------------------------------------
CHARA_AGE = {
# Age is the first field to the right of the profile image.
# ActorID => "Age"
5 => "20",
6 => "22",
7 => "24",
8 => "16"
}
#--------------------------------------------------------------------------
# ? Customize Actor's Origin
#--------------------------------------------------------------------------
CHARA_FROM = {
# "From" or Origin is the second field to the right of the profile image.
# ActorID => "Place"
5 => "Rei",
6 => "Tsuin",
7 => "Tsuin",
8 => "Kouin"
}
#--------------------------------------------------------------------------
# ? Customize Height
#--------------------------------------------------------------------------
CHARA_H = {
# Height is the third field to the right of the profile image.
# ActorID => "Height"
5 => "1,90 Meter",
6 => "1,60 Meter",
7 => "1,75 Meter",
8 => "1,83 Meter"
}
#--------------------------------------------------------------------------
# ? Customize Weight
#--------------------------------------------------------------------------
CHARA_W = {
# Weight is the fourth field to the right of the profile image.
# ActorID => "Weight"
5 => "62 Kilo",
6 => "44 Kilo",
7 => "53 Kilo",
8 => "48 Kilo"
}
#--------------------------------------------------------------------------
# ? Customize Profile Information
#--------------------------------------------------------------------------
CHARA_INFO = {
# Profile Information is displayed beneath the actor's graphic file.
# ActorID => "Information Text"
5 => "Ryoku, is a brave strong warrior who always needs to save Kione. He is
a man with great holy powers. In time portals he gets his Jikoku Sword with slots
for the Jikoku Crystals to fit into. All the girls love Ryoku, for no real reason.",
6 => "No one knows much about him, but he knows alot about them. Because
of his weight and size he is able to move swiftly, but is also deadly with his
hands. He seems to have a connection with Munaca, only talking to and helping her.",
7 => "Munaca, is a some what shy girl with wind powers. She seems to know
the mystery guy, she is confused about him and wants to know what goes on in
his head. Her wind powers also get stronger when the people are in danger.",
8 => "Kione, is a girl with the ability to manipulate water, she also loves
the mystery guy who doesn`t even care about her. She is able to heal people,
but isn`t very strong. She always near the mystery guy... Why does she bother."
}
#--------------------------------------------------------------------------
# ? Customize Face/Profile Image
#--------------------------------------------------------------------------
# Image Type Toggle
# This toggle allows to use either the default Face graphic that is set up
# in the Actor tab in the database, or a custom image of your choosing.
# true = Custom images are used.
# false = The actor's face graphic is used.
BSTUP = false
# Custom Profile Graphics ("Graphics/Face" directory)(If BSTUP = true)
BSTUP_FILE = {
# ActorID => "Profile Image" (Without image format extension)
# You may also add more images for actors after the fourth line, if needed.
5 => "actor1",
6 => "actor1",
7 => "actor1",
8 => "actor1"
}
#----------------------------------------------------------------------------
# END Customization
#----------------------------------------------------------------------------
end
#==============================================================================
# ? Window_Charactor
#------------------------------------------------------------------------------
# ? Define Window
#==============================================================================
class Window_Charactor < Window_Base
#--------------------------------------------------------------------------
# ? Initialize Profile Window
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 544, 416)
self.contents = Bitmap.new(width - 32, height - 32)
refresh(actor)
end
#--------------------------------------------------------------------------
# ? Determine BSTUP Type
#--------------------------------------------------------------------------
def refresh(actor)
self.contents.clear
return if actor.nil?
if Chara_Review::BSTUP
refresh_bstup(actor) # If BSTUP = true
else
refresh_face(actor) # If BSTUP = false
end
end
#--------------------------------------------------------------------------
# ? Draw Parameters and Profile Image (BSTUP)
#--------------------------------------------------------------------------
def refresh_bstup(actor)
draw_face_picture(Chara_Review::BSTUP_FILE[actor.id], 0, 0)
self.contents.font.color = system_color
self.contents.draw_text(280, 30, 80, WLH, "Name:")
self.contents.draw_text(280, 60, 80, WLH, "Alter:")
self.contents.draw_text(280, 90, 80, WLH, "Herkunft:")
self.contents.draw_text(280, 120, 80, WLH, "Größe:")
self.contents.draw_text(280, 150, 80, WLH, "Gewicht:")
self.contents.font.color = normal_color
draw_actor_name(actor, 380, 30)
self.contents.draw_text(300, 60, 80, WLH, $game_variables[deinevariablennummer])
self.contents.draw_text(380, 90, 180, WLH, Chara_Review::CHARA_FROM[actor.id])
self.contents.draw_text(380, 120 , 200, WLH, Chara_Review::CHARA_H[actor.id])
self.contents.draw_text(380, 150, 250, WLH, Chara_Review::CHARA_W[actor.id])
draw_enter_text(20, 300, 500, WLH, Chara_Review::CHARA_INFO[actor.id])
end
#--------------------------------------------------------------------------
# ? Draw Parameters and Profile Image (FACE)
#--------------------------------------------------------------------------
def refresh_face(actor)
draw_actor_face(actor, 8, 32)
self.contents.font.color = system_color
self.contents.draw_text(200, 30, 80, WLH, "")
self.contents.draw_text(200, 60, 80, WLH, "Alter:")
self.contents.draw_text(200, 90, 80, WLH, "Herkunft:")
self.contents.draw_text(200, 120, 80, WLH, "Größe:")
self.contents.draw_text(200, 150, 80, WLH, "Gewicht:")
self.contents.font.color = normal_color
draw_actor_name(actor, 300, 30)
self.contents.draw_text(300, 60, 80, WLH, Chara_Review::CHARA_AGE[actor.id])
self.contents.draw_text(300, 90, 180, WLH, Chara_Review::CHARA_FROM[actor.id])
self.contents.draw_text(300, 120 , 200, WLH, Chara_Review::CHARA_H[actor.id])
self.contents.draw_text(300, 150, 250, WLH, Chara_Review::CHARA_W[actor.id])
draw_enter_text(20, 200, 500, WLH, Chara_Review::CHARA_INFO[actor.id])
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
# ? Draw Entered Text
#--------------------------------------------------------------------------
def draw_enter_text(x, y, width, height, text)
info_box = text.split(/\n/)
for i in 0...info_box.size
self.contents.draw_text( x, y+i*WLH, width, WLH, info_box)
break if (y+i*WLH) > (self.height-WLH)
end
end
#--------------------------------------------------------------------------
# ? Draw Face Graphic(Graphics/Face)
#--------------------------------------------------------------------------
def draw_face_picture(file_name, x, y)
bitmap = Cache.face(file_name)
cw = bitmap.width
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x, y, bitmap, src_rect)
end
end
#==============================================================================
# ? Scene_Charactor
#------------------------------------------------------------------------------
# ? Define Methods
#==============================================================================
class Scene_Charactor < Scene_Base
#--------------------------------------------------------------------------
# ? Initialize Actor
# actor_index : Actor ID
#--------------------------------------------------------------------------
def initialize(actor_index = 0)
@actor_index = actor_index
end
#--------------------------------------------------------------------------
# ? Create Menu Background
#--------------------------------------------------------------------------
def start
super
create_menu_background
@actor = $game_party.members[@actor_index]
@status_window = Window_Charactor.new(@actor)
end
#--------------------------------------------------------------------------
# ? Dispose Status Window
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@status_window.dispose
end
#--------------------------------------------------------------------------
# ? Return Scene
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Status.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Next Actor
#--------------------------------------------------------------------------
def next_actor
@actor_index += 1
@actor_index %= $game_party.members.size
$scene = Scene_Charactor.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Previous Actor
#--------------------------------------------------------------------------
def prev_actor
@actor_index += $game_party.members.size - 1
@actor_index %= $game_party.members.size
$scene = Scene_Charactor.new(@actor_index)
end
#--------------------------------------------------------------------------
# ? Actor Profile Screne Inputs
#--------------------------------------------------------------------------
def update
update_menu_background
@status_window.update
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::R)
Sound.play_cursor
next_actor
elsif Input.trigger?(Input::L)
Sound.play_cursor
prev_actor
end
super
end
end
#==============================================================================
# ? Scene_Status
#==============================================================================
class Scene_Status
#--------------------------------------------------------------------------
# ? Update Actor
#--------------------------------------------------------------------------
alias update_chara update
def update
if Input.trigger?(Chara_Review::CHENGE_KEY)
Sound.play_decision
$scene = Scene_Charactor.new(@actor_index)
end
update_chara
end
end
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ The original untranslated version of this script can be found here:
#http://www4.plala.or.jp/findias/codecrush/material/rgss2/menu/1-menu_chara/menu_char_top.htmll
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
mfg Kvote :)
EDIT: Der Fehler taucht auf sobald ich im Statusmenü eine Taste drücke!
EDIT 2: Okay ich hab jetzt das Skript getestet was Cloud gepostet hat, es funktioniert :D
Dennoch würde ich mich über Hilfe bei der nun von mir geposteten Version freuen ^^
-
Hi Kvote20,
bin zwar nicht Ðeity aber ich versuch
trotzdem dir zu helfen. :)
Der Fehler taucht nur auf wenn man einen
Charakter auswählt der kein Profil hat.
Die ID's fangen bei dir erst ab Actor 5 an.
5 => "20",
6 => "22",
7 => "24",
8 => "16"
Warum genau der Fehler auftritt wenn der Charakter
kein Profil hat, kann ich dir leider auch nicht sagen.
Cloud
-
@Cloud: Danke für den Hinweis aber ich glaube du beziehst dich damit auf das "Alte" Skript oder ?
denn das was du als letztes gepostet hast funktioniert einwandfrei ^^
Ich muss es nurnoch auf die Kompalibität mit meinem derzeitigen Projekt testen (da ich sehr viele Skripte verwende xD)
Aber ansonsten bin ich zufrieden ^^
Danke nochmals.
Kvote
-
Hay Kvote,
ich denke, dass Cloud Crescent recht hat, die Actor-ID ist entweder zu hoch oder zu tief und kommt in den Settings einfach nur nicht vor. ^^
Die ID kannst du dir in der Database anschauen, sprich die Zahl neben dem Namen des Actors.
Was mich eher wundert ist die Tatsache, dass die Fehlermeldung erst so spät auftaucht, denn eigentlich müsste sie schon beim Aufruf der Methode Alarm geben.
Der Fehler liegt in der Zeile text.split(\/n\), weil "text" ja bei dem Aufruf der Methode eigentlich "nil" ist und für "nil" ist keine Methode mit dem Namen "split" definiert, da "nil" ja eigentlich einfach "nichts" ist. :D
Ändere die Actor-ID's in den Settings, und der Fehler verschwindet. ;)
MfG
Deity
-
Ich meld mich auch mal wieder :D
das mit den zusätzlichen Rüstungs-slots hab ich nicht hin bekommen :( aber hab jetzt ein anderes Problem!
Ich hab das Sphärobrett von Kyoshiro eingebaut Link: http://www.rpgvx.net/index.php/topic,2363.0.html (http://www.rpgvx.net/index.php/topic,2363.0.html)
Läuft auch echt super so weit bis auf eine sache die mich noch stört! kann man in einer Bedingung auch Zahlen
Angeben? Weil sonst muss man für jede Aktivierung nur eins zahlen. Also für die die es nciht haben oder kennen.
Kann man in eine Bedingung die ein Item im Inventar abfragt auch hinzufühgen das sie bei einer bestimmten Menge
dieses Items erst los geht?
z.B. du benötigst 3 Eier 1l Milch 1 sack Mehl um einen Kuchen zu backen. Bei der Bedingung 3 Eier wie bekomm ich das hin?
Aber jetzt zurück zu meinem eigentlichen Problem.
Hab das Sphärobrett eins zu eins übernommen hab ansonsten noch im Script die Vocab eingedeutscht.
So jetzt bekomme ich immer bei Testkämpfen und wenn ich im Spiel die Skills aufrufen will diese Fehlermeldung:
Script 'Game_Actor' line102: NameError occurred.
undefined local veriable or method`add_skillacc' for
#<Game_Actor:0x2424c80>
Weiß einer wie ich gegen diesen Fehler vorgehen kann?
schon mal vielen dank
Felsendrache
-
Hay.
Für die Mengenabfragen des Inventars musst du einfach nur eine Variable der Itemanzahl zuordnen, und dann ein Conditional Branch mit einer simplen Abfrage ob die Variable größer gleich einer Zahl ist vervollständigen.
Wegen dem Script kann ich dir so ichts sagen, in line 102 steht beim standart Script nichts von add_skillacc. Liegt wahrscheinlich an einem Customscript.
MfG
Deity
-
Ok, hab das Script ausgetauscht und noch mal bearbeitet. Jetzt läufts wieder. Weiß aber nicht wo der
Fehler war.
Schon mal danke für die Hilfe wegen der Bedingungshilfe.
Aber ich kleiner blöd man komm damit nicht so ganz klar.
Aber ich versuchs mal.
Also eine Variable einbauen mit dem Itemnamen,
dann in der bedingen die Zahl angeben
und dann reißt es bei mir ab.
Was ist ein Conditional Branch?
Gibts für meine Frage eigentlich ein Tuturiel??
würde glaube einigen an dieser stelle das Haare rumpfen erleichtern ;)
Sorry wegen meinen echt blöden Fragen!
Aber ich kenn mich echt nicht gut in dieser Materie aus. Hab eine tolle idee für ein Game aber
es harpert etwas an der Umsetzung da ich mich mit denn ganzen Eventeinstellungen nicht so auskenne.
bin schon froh das ich so einiges langsam auf die Reihe bekomme. :)
MFG
Felsendrache
-
Aber ich versuchs mal.
Also eine Variable einbauen mit dem Itemnamen,
dann in der bedingen die Zahl angeben
und dann reißt es bei mir ab.
Ist nicht das was ich meinte. ^^
Was ist ein Conditional Branch?
Das ist die "Bedingung" nur eben auf Englisch.
Hier mal ein Pic wie das ganze aussehen könnte. Es ist ganz simpel aufgebaut.
(http://250kb.de/u/100319/p/xcQJmmbVDwH4.png)
MfG
Deity
-
Super Vielen vielen dank :)
Jetzt versteh ich was du meinst.
Nochmals Danke
mfg
Felsendrache
-
Ich habe ein kleines Problem. Ich möchte gerne im Menü unten ein Face anzeigen lassen, nämlich das Face von dem Charakter mit dem man läuft. Jetzt zu meinen Fragen: Dieser Charakter soll nicht in der Party sein! (so wie bei Pokemon, die Monster kämpfen, du läufst) Wie mache ich das? Und was muss ich in den SCript schreiben um ein Face anzeigen zu lassen, von jemandem der nicht in der normalen Party ist?
-
Ich denke du arbeitet mit einem Window und mit keinem normalem Sprite. Daher ist diemethode für das Zeichnen des Faces bereits geschrieben.
@window_sprite.contents.draw_face(face_name, face_index, x, y, size = 96)
Müsste es also tun.
-
Deity, vielen Dank für die schnelle Antwort. Leider kommt bei mir ein Fehler wegen "Contents". Hier ist mein Script mal.
#==============================================================================
# ** Window_MenuStatus
#------------------------------------------------------------------------------
# This window displays party member status on the menu screen.
#==============================================================================
class Window_Face < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# x : window X coordinate
# y : window Y coordinate
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 140, 132)
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@window_sprites.contents.draw_face("Evil", face_index, 96, 96, size = 96)
end
end
#--------------------------------------------------------------------------
# * Update cursor
#--------------------------------------------------------------------------
def update_cursor
if @index < 0 # No cursor
self.cursor_rect.empty
elsif @index < @item_max # Normal
self.cursor_rect.set(0, @index * 96, contents.width, 96)
elsif @index >= 100 # Self
self.cursor_rect.set(0, (@index - 100) * 96, contents.width, 96)
else # All
self.cursor_rect.set(0, 0, contents.width, @item_max * 96)
end
end
PS: Was muss ich bei file_indes angeben? DEn pfad?
-
Hehe also:
1. face_index meinst du bestimmt. Das ist die Nummer des Faces des Facesets. Es sind ja 8 vorhanden, und du musst dir deinen raussuchen.
2. Darfst du nicht einfach @window_sprite übernehmen. ^^ In deinem Fall müsste es self.contents.draw_face("Evil", face_index, 96, 96, size = 96) heißen.
MfG
Deity
-
#==============================================================================
# ** Window_MenuStatus
#------------------------------------------------------------------------------
# This window displays party member status on the menu screen.
#==============================================================================
class Window_Face < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# x : window X coordinate
# y : window Y coordinate
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 140, 132)
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.draw_face("Evil", 1, 96, 96, size = 96)
end
end
#--------------------------------------------------------------------------
# * Update cursor
#--------------------------------------------------------------------------
def update_cursor
if @index < 0 # No cursor
self.cursor_rect.empty
elsif @index < @item_max # Normal
self.cursor_rect.set(0, @index * 96, contents.width, 96)
elsif @index >= 100 # Self
self.cursor_rect.set(0, (@index - 100) * 96, contents.width, 96)
else # All
self.cursor_rect.set(0, 0, contents.width, @item_max * 96)
end
end
Stimmt das so oder war ich wieder zu blöd dafür? Weil es stürtzt wieder ab und sagt mir es liegt an diesem draw_face
-
Das einzige was mir jetzt so ins Auge springt ist diese Methode hier:
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.draw_face("Evil", 1, 96, 96, size = 96)
end
end
Das rote "end" ist zuviel.
Ausserdem fehlt ein end ganz am Ende des Scripts um die class zu schließen.
Ansonsten sieht es eig richtig aus.
-
Also mit dem End hat er kein Problem, sonst würde es ja gleich am anfang abstürtzen. Das Spiel stürtzt aber erst ab, wen ich ins Menü gehe.
-
Verdammt hab ein contents zuviel benutzt. Und doch das Script mekert bei mir rum. ^^
Hier :
#==============================================================================
# ** Window_MenuStatus
#------------------------------------------------------------------------------
# This window displays party member status on the menu screen.
#==============================================================================
class Window_Face < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# x : window X coordinate
# y : window Y coordinate
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 128, 128)
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.draw_face("Evil", 1, 0, 0, size = 96)
end
#--------------------------------------------------------------------------
# * Update cursor
#--------------------------------------------------------------------------
def update_cursor
if @index < 0 # No cursor
self.cursor_rect.empty
elsif @index < @item_max # Normal
self.cursor_rect.set(0, @index * 96, contents.width, 96)
elsif @index >= 100 # Self
self.cursor_rect.set(0, (@index - 100) * 96, contents.width, 96)
else # All
self.cursor_rect.set(0, 0, contents.width, @item_max * 96)
end
end
end
Es müsste es jetzt tun, habe nur die kleinen Fehler rausgetan sonst ist alles beim alten. Btw. du bietest dem Face nur eine Fläche von ungefähr 100x90 Pixxel, und lässt es bei 96,96 zeichnen also sieht man nur einen Punkt des ganzen Bildes. ^^ (Habs aber bischen verändert also von den Massen.)
MfG
Deity
-
DANKE!!! Das funktioniert! Vielen, vielen, vielen (mal unendlich) Dank!!!
-
kann mir jemand bei dem Monsteralbung helfen? Ich hätte es gern in Deutsch aber es ist Englisch und da ich mich mit Scripts nicht aus kenne brauch ich hilfe das da z. B nicht weaknes sonder schwäche steht.
[code]################################################################################
# Monster Album VX 4.0 #
################################################################################
# Author: El Conducter #
# Date: August/3/07 #
# Last Update: July/21/08 #
# Version: 4.0 #
# Platform: RPG Maker VX #
################################################################################
#----------------------------------------------------------------------------
# About Update: 2.0
# Alright, nearly a year after its first release I have updated this script.
# This was one of my earlier scripts, so there was a few things that could
# have been done better. I have taken care of such issues and added to it.
# It was the only script that never had an update, however it turned out to
# be one of my more popular scripts. So here is the much needed update.
#
# About Update: 3.0
# Alright, with this update my Album script will be the most comprehensive.
# bestiary I have done. Nothing is secret about your enemies now. The enemy
# attribute weaknesses are now color coded for easier readability. To make
# things easier I even used the Color Module I created for my HP Bar Script.
# It makes it easy for you to alter and add colors as you so wish. Aside
# from being able to see enemy attribute weakneses you can now also see their
# abilities, and scroll with L and R to a different monster while in the
# monster window. Rather than having all the attributes or skills crammed in
# a single window, you can now select which you would like to see from a new
# command window.
#
# About Update: 4.0
# This powerful Bestiary script has gotten even better. In addition to
# viewing enemy attributes and skills, you can now test fight the monster
# from the Album! I had to pull some clever coding tricks to make this work
# without doing something drastic or complicated, like rewriting and/or
# altering many other Classes. I proved I could pull a monster out of a hat.
# I have also added a feature that allows you to hide enemy statistics for
# certian enemies of your choosing. Perhaps Boss enemies or whatever.
#----------------------------------------------------------------------------
#----------------------------------------------------------------------------
# What it Does:
# This script basically creates a catalogue of monsters you've killed.
# You are also given a monster hunter rank based on how many
# different monsters have been defeated. The catalogue displays all
# the monsters attributes & picture, player rank, and percent of album
# completion. See above for info on updates.
#----------------------------------------------------------------------------
#----------------------------------------------------------------------------
# How it Works:
#
# Okay for version 2.0 I recreated the way a few things work, but don't worry
# the changes are for the better. I made an independant Monster_Album class
# to deal with all the album related tasks, rather than just having modded
# several other classes to share the work, like version 1.0. Because of this
# new system it gives us greater flexibility to do things. I also cleaned up
# some messy code in other classes, though there still is some that I will
# contend with in a later update.
#
# Scripts used are:
#
# Section I: Album Scene and related Windows
# - Scene_Album NOT
# - Window_Album_Right NOT
# - Window_Monster_List DONE
# - Window_Monster_Picture NOT
# - Window_Album_Command NOT
# - Window_Total DONE
#
# Section II: Extra Windows
# - Window_Base Done?
#
# Section III: Dependancies
# - Game_Troop DONE
# - Scene_Menu DONE
# - Scene_Battle DONE
#
# Section IV: Data Management
# - Scene_Title DONE
# - Scene_File DONE
#
# Section V: Modules
# - Module Color DONE
# - Module Vocab DONE
#----------------------------------------------------------------------------
#----------------------------------------------------------------------------
# How to Use This Script:
# Just copy it and paste it above Main.
#
# If you are going to use events to call the album menu, use Call Script:
# $scene = Scene_Album.new
#
# You can use an item to call the menu as well. Just make the item call a
# Common Event, and make the Common Event do the above task.
#
# You can also access the Albums hunter rank in game by using:
#
# $game_album.rank
#
# Accessing it is now a bit easier than with version 1.0. It had a dumb way
# operating. Also you now add enemies to the Album anytime in game with
# a Call Script like this:
#
# $game_album.add_enemy_killed($data_enemies[N])
#
# Where N is, put the ID of the monster you want to add.
#
# To Hide enemy stats in the album, got to Game_Album class and look for
# the @black_list array. Put the ID's of the enemies you want hidden in it.
#----------------------------------------------------------------------------
#----------------------------------------------------------------------------
# Script Conflicts and Compatability:
# This is an Advisory for those of you using multiple scripts. If you are
# using other scripts that rewrite the same classes or methods as this one,
# there may be a conflict and things will work incorrectly in unpredictable
# ways. I put all the Classes that could cause conflicts in the Utilities
# Section III.
#
# To remedy a script conflict, the pieces of the classes or methods that
# overwrite each other must be combined.
#
# Script conflicts are a major issue with many users. I get many messages
# form those having problems. Almost always it is due to script conflicts.
# Ocassionally I offer quick tips, fixes, and instructions to get them to
# work. However, as my time is limited, I can't always provide help on an
# individual basis.
#----------------------------------------------------------------------------
#----------------------------------------------------------------------------
# Comments:
# I hope my script is easy for you to use and modify. Study this
# script to learn RGSS better and become a better scriptor yourself.
#----------------------------------------------------------------------------
#==============================================================================
# Section I: Album Classes
#==============================================================================
#==============================================================================
# ** Game_Album
#------------------------------------------------------------------------------
# This class handles the Bestairy.
#==============================================================================
class Game_Album
#--------------------------------------------------------------------------
# * Constant: Add or remove enemy ID's you want to have hidden in the Album
#--------------------------------------------------------------------------
BLACK_LIST = [29, 30]
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader :seen # Array of enemies seen but not killed
attr_reader :killed # Array of enemies actually killed in battle
attr_reader :rank # String to contain rank title
attr_reader :percent # Percent of Album completion
attr_reader :test_enemy_id # ID of enemy to be tested in battle
attr_reader :black_list # Array of enemy ID's to be hidden
attr_accessor :battle_test # Whether the impending fight is album related
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
# Set seen & killed variables to blank arrays for new album
@seen = []
@killed = []
for i in 1...$data_enemies.size
@killed.push(nil)
@seen.push(nil)
end
@rank = 'none'
@percent = 0
@test_enemy_id = 0
@battle_test = false
end
#--------------------------------------------------------------------------
# * add_enemy_seen
#--------------------------------------------------------------------------
def add_enemy_seen(enemy)
# Use enemy ID - 1 for correct index placement in the array
index = enemy.id - 1
# The following replaces the nil object with the enemy at the index
@seen.insert(index, enemy)
@seen.delete_at(enemy.id)
determine_rank
end
#--------------------------------------------------------------------------
# * add_enemy_killed
#--------------------------------------------------------------------------
def add_enemy_killed(enemy)
# Use enemy ID - 1 for correct index placement in the array
index = enemy.id - 1
# The following replaces the nil object with the enemy at the index
@killed.insert(index, enemy)
@killed.delete_at(enemy.id)
determine_rank
end
#--------------------------------------------------------------------------
# * Determine party's rank title for album completion
#--------------------------------------------------------------------------
def determine_rank
# First check to see if the player has seen more enemies than killed
if @seen.nitems > @killed.nitems
# Assign rank and end rank check
@rank = 'Observer'
return
end
# Get percent of enemies killed over total amount of enemies in game
# -1 to make up for nil in $data_enemies array
@percent = ((@killed.nitems * 100) / ($data_enemies.size - 1))
# Change player rank according to percent
case @percent
when 1..25 # When up to 25%
@rank = 'Adventurer'
when 26..50 # When 26% to 50%
@rank = 'Slayer'
when 51..75 # When 51% to 75%
@rank = 'Monster Hunter'
when 76..99 # When 76% to 99%
@rank = 'Beast Master'
when 100 # When 100%
@rank = 'Perfectionist'
end
end
#--------------------------------------------------------------------------
# * has_seen_enemy? Checks if enemy is included in the @seen array
#--------------------------------------------------------------------------
def has_seen_enemy?(enemy)
return @seen.include?(enemy)
end
#--------------------------------------------------------------------------
# * has_killed_enemy? Checks if enemy is included in the @killed array
#--------------------------------------------------------------------------
def has_killed_enemy?(enemy)
return @killed.include?(enemy)
end
#--------------------------------------------------------------------------
# * enemy_blacklisted? Checks if ID is included among the enemy ID's to hide
#--------------------------------------------------------------------------
def enemy_blacklisted?(enemy_id)
return BLACK_LIST.include?(enemy_id)
end
#--------------------------------------------------------------------------
# * Simple search algorithym
# Checks all the troops for the latest one that contains the given enemy ID
#--------------------------------------------------------------------------
def soul_searcher(id)
# Set ID of enemy to be 'singled out' for battle later
@test_enemy_id = id
# Look through all the $data_troops array
for i in 1...$data_troops.size
# In current troop, look through all the members for the enemy ID
for j in 0...$data_troops.members.size
# If the enemy ID being searched is within this troop
if $data_troops.members[j].enemy_id == id
# Set this variable to that troop ID to be returned & Break the search
troop = $data_troops
break
end
end
end
return troop.id
end
#--------------------------------------------------------------------------
# * Initiates a combat
#--------------------------------------------------------------------------
def start_battle(id)
# Start battle with the troop results from soul searcher
$game_troop.setup(soul_searcher(id))
# if this battle is a album test fight, single out the enemy being tested
$game_troop.single_out_enemy(id)
# Set album battle test flag to true
@battle_test = true
# Play battle start SE
$game_temp.map_bgm = RPG::BGM.last
$game_temp.map_bgs = RPG::BGS.last
RPG::BGM.stop
RPG::BGS.stop
Sound.play_battle_start
$game_system.battle_bgm.play
$game_temp.next_scene = nil
$scene = Scene_Battle.new
end
end
#==============================================================================
# ** Scene_Album
#------------------------------------------------------------------------------
# This class handles the monster album windows.
#==============================================================================
class Scene_Album < Scene_Base
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
# Set up windows used in this scene
# Set window of monster names currently known
@monster_list_window = Window_Album_List.new
# Get monster currently selected in window list
@monster = @monster_list_window.monster
# Make window that shows current selected monster's stats
@monster_info_window = Window_Album_Right.new(@monster)
# Make info window of album completion
@total_window = Window_Total.new
# Make monster window
@monster_window = Window_Monster_Picture.new(@monster)
@monster_window.visible = false
# Make monster command window
@command_window = Window_Album_Command.new(['Elements', 'States',
'Abilities', 'Battle'])
@command_window.visible = false
@command_window.active = false
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
# Dispose of windows
@monster_info_window.dispose
@monster_list_window.dispose
@total_window.dispose
@monster_window.dispose
@command_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Update windows conditionally
# If monster list window is active: call update_list
if @monster_list_window.active
update_list
return
end
# If monster command window is active: call update_command
if @command_window.visible
update_command
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when monster list window is active)
#--------------------------------------------------------------------------
def update_list
@monster_list_window.update
# Set the variable @monster equal to the currently selected monster
@monster = @monster_list_window.monster
# Set info window's monster to the selected monster
@monster_info_window.set_new_monster(@monster)
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
Sound.play_cancel
# Switch to menu screen
@monster_list_window.active = false
$scene = Scene_Menu.new(0)
return
end
# If C button was pressed
if Input.trigger?(Input::C)
if @monster != nil
# Play decision SE
Sound.play_decision
# Activate monster window
@monster_list_window.active = false
@monster_list_window.visible = false
@monster_info_window.visible = false
@total_window.visible = false
@monster_window.visible = true
@monster_window.get_new_monster(@monster)
@monster_window.draw_enemy_elementals
@command_window.visible = true
@command_window.active = true
end
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when monster command window is active)
#--------------------------------------------------------------------------
def update_command
@command_window.update
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
Sound.play_cancel
# Go back to monster list
@monster_list_window.active = true
@monster_list_window.visible = true
@monster_window.visible = false
@monster_info_window.visible = true
@total_window.visible = true
@command_window.index = 0
@command_window.active = false
@command_window.visible = false
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Branch by command window cursor position
Sound.play_decision
# Play decision SE
case @command_window.index
when 0 # Elementals
# Draw enemy elemental attributes
@monster_window.draw_enemy_elementals
when 1 # States
# Draw enemy states info
@monster_window.draw_enemy_states
when 2 # Abilities
# Draw enemy abilitites
@monster_window.draw_enemy_actions
when 3 # Battle
# Call an album test battle process
$game_album.start_battle(@monster.id)
end
return
end
# If L button was pressed
if Input.trigger?(Input::L)
prev_monster
return
end
# If R button was pressed
if Input.trigger?(Input::R)
next_monster
return
end
end
#--------------------------------------------------------------------------
# * Next enemy
#--------------------------------------------------------------------------
def next_monster
# Don't let the index go past the enemy list
unless @monster_list_window.index == $game_album.killed.size - 1
@monster_list_window.index += 1
end
# Set the variable @monster equal to the currently selected monster
@monster = @monster_list_window.monster
# Set info window's monster to the selected monster
@monster_info_window.set_new_monster(@monster)
if @monster != nil
# Play decision SE
Sound.play_decision
# Inform Monster window of new monster and redraw stats
@monster_window.get_new_monster(@monster)
@monster_window.draw_enemy_elementals
end
end
#--------------------------------------------------------------------------
# * previous enemy
#--------------------------------------------------------------------------
def prev_monster
# Don't let the index go above the enemy list
unless @monster_list_window.index == 0
@monster_list_window.index -= 1
end
# Set the variable @monster equal to the currently selected monster
@monster = @monster_list_window.monster
# Set info window's monster to the selected monster
@monster_info_window.set_new_monster(@monster)
if @monster != nil
# Play decision SE
Sound.play_decision
# Inform Monster window of new monster and redraw stats
@monster_window.get_new_monster(@monster)
@monster_window.draw_enemy_elementals
end
end
end
#==============================================================================
# ** Window_Album_List
#------------------------------------------------------------------------------
# The list of monster names.
#==============================================================================
class Window_Album_List < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 56, 214, 360)
@column_max = 1
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# * Monster Acquisition
#--------------------------------------------------------------------------
def monster
return @data[self.index]
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
#if self.contents != nil
#self.contents.dispose
#self.contents = nil
#end
@data = []
# For every enemy in the album, a address of them to @data
for i in 0...$game_album.killed.size
@data.push($game_album.killed)
end
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
# * Draw Item
#--------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
monster = @data[index]
rect.width -= 4
draw_monster_name(monster, rect.x, rect.y)
end
end
#==============================================================================
# ** Window_Album_Right
#------------------------------------------------------------------------------
# This window shows monster attributes.
#==============================================================================
class Window_Album_Right < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(enemy)
super(214, 56, 330, 360)
self.contents = Bitmap.new(width - 32, height - 32)
@enemy = enemy
self.opacity = 0 # Increase this if you want to see the window
refresh
end
#--------------------------------------------------------------------------
# * Set parameters for monster
#--------------------------------------------------------------------------
def set_new_monster(new_monster)
if @enemy != new_monster
@enemy = new_monster
refresh
end
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
if @enemy != nil
draw_enemy_picture(@enemy, 185, 208)
draw_enemy_exp(@enemy, 4, 50)
draw_enemy_gold(@enemy, 4, 75)
draw_enemy_name(@enemy, 2, 0, normal_color)
draw_enemy_stats(@enemy, 4, 220, $game_album.enemy_blacklisted?(@enemy.id))
end
end
end
#==============================================================================
# ** Window_Monster_Total 544×416
#------------------------------------------------------------------------------
# Shows album completion.
#==============================================================================
class Window_Total < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 544, 56)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 200, 32, "Bestiary Completion :")
self.contents.draw_text(370, 0, 200, 32, "Rank :")
self.contents.font.color = normal_color
self.contents.draw_text(200, 0, 200, 32, $game_album.killed.nitems.to_s + ' / ')
self.contents.draw_text(240, 0, 200, 32, ($data_enemies.size - 1).to_s + " : ")
self.contents.draw_text(295, 0, 200, 32, $game_album.percent.to_s + "%")
self.contents.draw_text(430, 0, 200, 32, $game_album.rank)
end
end
#==============================================================================
# ** Window_Monster_Picture
#------------------------------------------------------------------------------
# This window shows a bigger picture of the monster with name.
#==============================================================================
class Window_Monster_Picture < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(enemy)
super(0, 0, 544, 370)
self.contents = Bitmap.new(width - 32, height - 32)
@enemy = enemy
refresh
end
#--------------------------------------------------------------------------
# * Set parameters for monster
#--------------------------------------------------------------------------
def get_new_monster(new_monster)
if @enemy != new_monster
@enemy = new_monster
end
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
if @enemy != nil
draw_enemy_picture2(@enemy)
draw_enemy_name(@enemy, 4, 4, system_color)
end
end
#--------------------------------------------------------------------------
# * Draws enemy's elementals chart
#--------------------------------------------------------------------------
def draw_enemy_elementals
refresh
x = 4
y = 4
# Change color and font size
self.contents.font.color = system_color
#self.contents.font.size = 20
# Draw text
#self.contents.draw_text(x, y + 32, 100, 22, "Elements:")
self.contents.font.size = 18
self.contents.draw_text(x, y + 25, 50, 22, "Absorb:")
self.contents.draw_text(x + 75, y + 25, 50, 22, "Strong:")
self.contents.draw_text(x + 150, y + 25, 50, 22, "Weak:")
self.contents.draw_text(x + 225, y + 25, 50, 22, "Poor:")
# Change color and font size
self.contents.font.color = normal_color
self.contents.font.size = 16
# unless the enemy info is hidden
unless $game_album.enemy_blacklisted?(@enemy.id)
# Draw the attributes names in position determined by attribute strength
for i in 1...@enemy.element_ranks.xsize
if @enemy.element_ranks == 6
self.contents.font.color = Colors::GREEN
self.contents.draw_text(x, 16 * i + 34, 120, 16, $data_system.elements)
end
if @enemy.element_ranks == 5
self.contents.font.color = Colors::INDIGO
self.contents.draw_text(x + 75, 16 * i + 34, 120, 16, $data_system.elements)
end
if @enemy.element_ranks == 2
self.contents.font.color = Colors::ORANGE
self.contents.draw_text(x + 150, 16 * i + 34, 120, 16, $data_system.elements)
end
if @enemy.element_ranks == 1
self.contents.font.color = Colors::RED
self.contents.draw_text(x + 225, 16 * i + 34, 120, 16, $data_system.elements)
end
end
end
end
#--------------------------------------------------------------------------
# * Draws enemy's States chart
#--------------------------------------------------------------------------
def draw_enemy_states
refresh
x = 4#300
y = 4
# Change color and font size
self.contents.font.color = system_color
#self.contents.font.size = 18
# Draw text
#self.contents.draw_text(x, y + 25, 100, 22, "States:")
self.contents.font.size = 18
self.contents.draw_text(x, y + 25, 50, 22, "Null:")
self.contents.draw_text(x + 75, y + 25, 50, 22, "Strong:")
self.contents.draw_text(x + 150, y + 25, 50, 22, "Weak:")
self.contents.draw_text(x + 225, y + 25, 50, 22, "Poor:")
# Change color and font size
self.contents.font.color = normal_color
self.contents.font.size = 16
# unless the enemy info is hidden
unless $game_album.enemy_blacklisted?(@enemy.id)
# Draw the state names in position determined by attribute strength
for i in 1...@enemy.state_ranks.xsize
if @enemy.state_ranks == 6
self.contents.font.color = Colors::BLACK
self.contents.draw_text(x, 16 * i + 34, 75, 16, $data_states.name)
end
if @enemy.state_ranks == 5
self.contents.font.color = Colors::VIOLET
self.contents.draw_text(x + 75, 16 * i + 34, 75, 16, $data_states.name)
end
if @enemy.state_ranks == 2
self.contents.font.color = Colors::YELLOW
self.contents.draw_text(x + 150, 16 * i + 34, 75, 16, $data_states.name)
end
if @enemy.state_ranks == 1
self.contents.font.color = Colors::RED
self.contents.draw_text(x + 225, 16 * i + 34, 75, 16, $data_states.name)
end
end
end
end
#--------------------------------------------------------------------------
# * Draws enemy's States chart
#--------------------------------------------------------------------------
def draw_enemy_actions
refresh
x = 4
y = 4
# Change color and font size
self.contents.font.color = system_color
self.contents.font.size = 20
# Draw text
self.contents.draw_text(x, y + 32, 100, 22, "Actions:")
# Change color and font size
self.contents.font.color = normal_color
# unless the enemy info is hidden
unless $game_album.enemy_blacklisted?(@enemy.id)
# Draw the names of the actions the enemy can perform
for i in 0...@enemy.actions.size
# If the action is not a skill
if @enemy.actions.kind == 0
# Draw text that corresponds to action basic type
case @enemy.actions.basic
when 0
self.contents.draw_text(x, 24 * i + 76, 200, 24, 'Attack')
when 1
self.contents.draw_text(x, 24 * i + 76, 200, 24, 'Defend')
when 2
self.contents.draw_text(x, 24 * i + 76, 200, 24, 'Escape')
when 3
self.contents.draw_text(x, 24 * i + 76, 200, 24, 'Do Nothing')
end
# Other wise if actions is a skill, draw the name of the skill
elsif @enemy.actions.kind = 1
ability = $data_skills[@enemy.actions.skill_id].name
self.contents.draw_text(x, 24 * i + 76, 200, 24, ability)
end
end
end
end
end
#==============================================================================
# ** Window_Album_Command
#==============================================================================
class Window_Album_Command < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# width : window width
# commands : command text string array
#--------------------------------------------------------------------------
def initialize(commands)
super(0, 360, 544, 56)
@item_max = commands.size
@commands = commands
@column_max = 4
self.contents = Bitmap.new(width - 32, height - 32)
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i, normal_color)
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
x = 4 + index * 136
self.contents.draw_text(x, 0, 160, 32, @commands[index])
end
#--------------------------------------------------------------------------
# * Disable Item
# index : item number
#--------------------------------------------------------------------------
def disable_item(index)
draw_item(index, disabled_color)
end
end
#==============================================================================
# Section II: Dependancy WIndows
#==============================================================================
#==============================================================================
# ** Window_Base
#==============================================================================
class Window_Base < Window
#
def draw_monster_name(monster, x, y, enabled = true)
self.contents.font.color = normal_color
if monster == nil
self.contents.draw_text(x+50, y, 204, 32, '????????', 0)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 204, 32, '???', 0)
else
self.contents.draw_text(x+50, y, 204, 32, monster.name, 0)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 204, 32, sprintf("%03d", monster.id.to_s), 0)
end
end
#--------------------------------------------------------------------------
# * Draws enemy's picture
#--------------------------------------------------------------------------
def draw_enemy_picture(enemy, x, y)
bitmap = Cache.battler(enemy.battler_name, enemy.battler_hue)
x2 = bitmap.width
y2 = bitmap.height
x3 = x2 / 2
y3 = y2 - 120
src_rect = Rect.new(0, 0, x2, y2)
# If enemy height is greater than 220, draw the picture lower on the screen
if bitmap.height > 220
self.contents.blt(x - x3, y - y3, bitmap, src_rect)
else
self.contents.blt(x - x3, y - y2, bitmap, src_rect)
end
end
#--------------------------------------------------------------------------
# * Draws enemy's large picture
#--------------------------------------------------------------------------
def draw_enemy_picture2(enemy)
bitmap = Cache.battler(enemy.battler_name, enemy.battler_hue)
x2 = bitmap.width
y2 = bitmap.height
x3 = 398 - bitmap.width
y3 = 398 - bitmap.height
src_rect = Rect.new(0, 0, x2, y2)
if x3 <= y3
new_rect = Rect.new(160, 10, x2 + x3, y2 + x3)
else
new_rect = Rect.new(160, 10, x2 + y3, y2 + y3)
end
self.contents.stretch_blt(new_rect, bitmap, src_rect, 100)
end
#--------------------------------------------------------------------------
# * Draws enemy's name
#--------------------------------------------------------------------------
def draw_enemy_name(enemy, x, y, color)
self.contents.font.color = color
self.contents.font.size = 24
self.contents.draw_text(x, y, 400, 32, enemy.name)
end
#--------------------------------------------------------------------------
# * Draws enemy's gold
#--------------------------------------------------------------------------
def draw_enemy_gold(enemy, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 100, 32, "$")
self.contents.font.color = normal_color
self.contents.draw_text(x + 24, y, 84, 32, enemy.gold.to_s, 2)
end
#--------------------------------------------------------------------------
# * Draws enemy's exp
#--------------------------------------------------------------------------
def draw_enemy_exp(enemy, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, "EXP")
self.contents.font.color = normal_color
self.contents.draw_text(x + 24, y, 84, 32, enemy.exp.to_s, 2)
end
#--------------------------------------------------------------------------
# * Draws enemy's statistics
#--------------------------------------------------------------------------
def draw_enemy_stats(enemy, x, y, hidden)
# Change color
self.contents.font.color = system_color
# Draw text
self.contents.draw_text(x, y, 32, 32, "HP")
self.contents.draw_text(x + 150, y, 32, 32, "SP")
self.contents.draw_text(x, y + 26, 32, 32, "Atk")
self.contents.draw_text(x + 150, y + 26, 32, 32, "Str")
self.contents.draw_text(x, y + 52, 60, 32, "Def")
self.contents.draw_text(x + 150, y + 52, 32, 32, "Mdf")
self.contents.draw_text(x, y + 78, 32, 32, "Dex")
self.contents.draw_text(x + 150, y + 78, 32, 32, "Int")
self.contents.draw_text(x, y + 104, 32, 32, "Agi")
self.contents.draw_text(x + 150, y + 104, 32, 32, "Eva")
self.contents.draw_text(x, y - 120, 125, 32, "Items Dropped :")
#self.contents.draw_text(x, y - 65, 100, 32, "Drop Rate :")
# Change color
self.contents.font.color = normal_color
# Draw stats, draw ?'s if enemy is hidden
if hidden
self.contents.draw_text(x + 40, y, 84, 32, '???', 2)
self.contents.draw_text(x + 190, y, 84, 32, '???', 2)
self.contents.draw_text(x + 40, y + 26, 84, 32, '???', 2)
self.contents.draw_text(x + 190, y + 26, 84, 32, '???', 2)
self.contents.draw_text(x + 40, y + 52, 84, 32, '???', 2)
self.contents.draw_text(x + 190, y + 52, 84, 32, '???', 2)
self.contents.draw_text(x + 40, y + 78, 84, 32, '???', 2)
self.contents.draw_text(x + 190, y + 78, 84, 32, '???', 2)
else
self.contents.draw_text(x + 40, y, 84, 32, enemy.maxhp.to_s, 2)
self.contents.draw_text(x + 190, y, 84, 32, enemy.maxmp.to_s, 2)
self.contents.draw_text(x + 40, y + 26, 84, 32, enemy.atk.to_s, 2)
self.contents.draw_text(x + 190, y + 26, 84, 32, enemy.def.to_s, 2)
self.contents.draw_text(x + 40, y + 52, 84, 32, enemy.hit.to_s, 2)
self.contents.draw_text(x + 190, y + 52, 84, 32, enemy.spi.to_s, 2)
self.contents.draw_text(x + 40, y + 78, 84, 32, enemy.agi.to_s, 2)
self.contents.draw_text(x + 190, y + 78, 84, 32, enemy.eva.to_s, 2)
end
# If enemy has an item, draw its name and icon
if enemy.drop_item1.kind == 1
draw_item_name($data_items[enemy.drop_item1.item_id], x, y - 85)
end
# If enemy has a weapon, draw its name and icon
if enemy.drop_item1.kind == 2
draw_item_name($data_weapons[enemy.drop_item1.weapon_id], x, y - 85)
#self.contents.draw_text(x + 95, y - 75, 50, 32, enemy.drop_item1.denominator.to_s + "%", 2)
end
# If enemy has a piece armor, draw its name and icon
if enemy.drop_item1.kind == 3
draw_item_name($data_armors[enemy.drop_item1.armor_id], x, y - 85)
end
# If enemy has an item, draw its name and icon
if enemy.drop_item2.kind == 1
draw_item_name($data_items[enemy.drop_item2.item_id], x, y - 50)
end
# If enemy has a weapon, draw its name and icon
if enemy.drop_item2.kind == 2
draw_item_name($data_weapons[enemy.drop_item2.weapon_id], x, y - 50)
end
# If enemy has a piece armor, draw its name and icon
if enemy.drop_item2.kind == 3
draw_item_name($data_armors[enemy.drop_item2.armor_id], x, y - 50)
end
end
end
#==============================================================================
# Section III: Dependancy Classes
#==============================================================================
#==============================================================================
# ** Game_Troop
#==============================================================================
class Game_Troop
#--------------------------------------------------------------------------
# * enemy single out algorithym
# Filters out a single enemy of the specified ID
#--------------------------------------------------------------------------
def single_out_enemy(id)
# Set variable to false.
# Later this will be set to true when the first enemy ID is found
has_been_singled = false
# Sort out array yo make it easlier to search
@enemies.sort! {|a, z| a.id <=> z.id}
# Reverse the sorted array if first index is greater than ID to be searched
if @enemies[0].id > id
@enemies.reverse!
end
# Scroll through all the enemies in the array and check the following
for each in @enemies
# Do the next check if the current enemy isn't hidden or dead
unless each.hidden or each.dead?
# Find one enemy of the specified ID, and get rid of the rest
if each.enemy.id != id or (each.enemy.id == id and has_been_singled)
each.escape
else
has_been_singled = true
end
end
end
end
#--------------------------------------------------------------------------
# * Adds defeated enemies to the Album
#--------------------------------------------------------------------------
def process_album_enemies
for each in dead_members
# If the bestairy doesn't already have this monster, then add it
if !$game_album.killed.include?(each.enemy)
$game_album.add_enemy_killed(each.enemy)
end
end
end
end
#==============================================================================
# ** Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# * Escape Processing
#--------------------------------------------------------------------------
def process_escape
@info_viewport.visible = false
@message_window.visible = true
text = sprintf(Vocab::EscapeStart, $game_party.name)
$game_message.texts.push(text)
if $game_troop.preemptive
success = true
else
success = (rand(100) < @escape_ratio)
end
Sound.play_escape
if success
wait_for_message
# Call method that collects monsters and sends them to the album
$game_troop.process_album_enemies
battle_end(1)
else
@escape_ratio += 10
$game_message.texts.push('\.' + Vocab::EscapeFailure)
wait_for_message
$game_party.clear_actions
start_main
end
end
#--------------------------------------------------------------------------
# * Victory Processing
#--------------------------------------------------------------------------
def process_victory
@info_viewport.visible = false
@message_window.visible = true
RPG::BGM.stop
$game_system.battle_end_me.play
unless $BTEST
$game_temp.map_bgm.play
$game_temp.map_bgs.play
end
# Call method that collects monsters and sends them to the album
$game_troop.process_album_enemies
if $game_album.battle_test
$game_album.battle_test = false
else
display_exp_and_gold
display_drop_items
display_level_up
end
battle_end(0)
end
end
#==============================================================================
# ** Scene_Menu
#==============================================================================
class Scene_Menu
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::album
s6 = Vocab::save
s7 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(5, false) # Disable save
end
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 5
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 5
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1,2,3 # Skill, equipment, status
start_actor_selection
when 4 # Album
$scene = Scene_Album.new
when 5 # Save
$scene = Scene_File.new(true, false, false)
when 6 # End Game
$scene = Scene_End.new
end
end
end
end
#==============================================================================
# Section IV: Data_Management
#------------------------------------------------------------------------------
# This bundle of code is just the Scene Title, Save and Load classes with some
# modified methods to handle, store, and retrieve the Bestairy data
#==============================================================================
#==============================================================================
# ** Scene_Title
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
# * Create Game Objects
#--------------------------------------------------------------------------
def create_game_objects
$game_temp = Game_Temp.new
$game_message = Game_Message.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new[
-
Es wäre hilfreich wenn du das Script hier mal im Spoiler posten würdest.
-
Du solltest das mal in [code.][/code.] packen,
sonst bleiben die smileys :D (ohne Punkte)
-
Halli Hallo :D
So nun habe ich ein ziemlich großes Problem und hoffe das sich hier jemand findet der mir zu einer Lösung verhelfen kann ^^
Worum gehts ?
Also ich benutze momentan das [desc=wobei nur wichtig ist das es ein Sideview BS ist!]Tenkentai Sideview Battlesystem 3.3[/desc] und ich würde gerne Custom Animations verwenden! Gut mein Proplem hierbei: Wenn ich jetzt eine Gepixelte eigens erstellte BA nutze sammt Held (also nicht nur die Animation sondern auch der Held der auf den Gegner zurennt und den Angriff ausführt) wird es wohl so sein das sich Animation und Held überlagern! Also der Held wird nicht während der Animation verschwinden sonder einfach seinen Angriff ausführen und das will ich nicht....also das man das sieht! Außerdem würde ich gerne "Cut-In´s" verwenden zu den Animationen aber das ist mal nebensächlich ^^ Mein Problem also, wie stelle ich das an? Wie mache ich den Charakter unsichtbar und wie weis ich wie und wo ich meine Animation setzen und pixeln soll sodass sie nicht am oberen Bildschirmrand durchgeführt wird (das ist jetz nur ein überzogenes Beispiel) ?
Ich habe mich mit einigen Leuten unterhalten doch erlichgesagt konnte mir einfach keiner eine wirklich konkrete Antwort darauf geben! Ich denke das das einige Leute beschäftigt oder sies lassen weils zu kompliziert ist! Man hat mir auch gesagt das es eventuell eine Möglichkeit giebt das per Skripteinstellung zu lösen! Wenn das möglich ist wäre ich über eine Beschreibung wie und was ich machen muss sehr dankbar da ich eigentlich kaum Ahnung hab vom Skripten!
Falls es mit einer gepixelten Überlagerung gelöst werden kann, oder duch ein Event etc. soll mir das auch recht sein :) Ich bitte euch nur wenns denn geht mir hierbei zu helfen :D
Schonmal vielen Dank fürs Grübeln xD
Antworten und IDEEN bitte per PN an mich ^^
gruß, Kvote
-
Hallöchen!
Ich hab ein kleines Problem mit dem Tileset-Script. Und zwar verwandeln sich die Tilesets
jedes mal zurück in das Standard-RTP, nachdem ein Menü geöffnet wurde (Speichermenü, Standard-Menü, Shopping-Menü).
Ich habe jetzt zwar auf jede map ein "reload"-Event eingefügt, welches nach aufrufen des Menüs das Tileset wiederherstellt, allerdings braucht dieses Event einen Moment um zu greifen und in diesem Moment sieht man die etwas chaotische Umgebung im Standard-RTP.
Ich denke, dass sich dieses Problem über ein eigenes Menü lösen lassen könnte, aber solange ich noch keines habe (ich bin mir garnicht sicher OB ich eines machen will) regt mich dieses Tileset-Gehopse doch ziemlich auf...
Ich würde mich über Lösungsvorschläge freuen, gerne auch per PN.
Lg DCircle
-
Sprichste Reinzufällig von Hell´s Tileset Reloader verwende diesen habe aber damit keine Probleme
-
Jop ich benutze Hell's TileSet Reloaded und irgendwie funktioniert das bei mir allgemein nach dem Zufallsprinzip. Manchmal lädt der das Tileset auch garnicht wenn ich das in nen parallelen prozess stecke statt in nen autorun event.
Aber mein Hauptproblem ist halt, dass das Öffnen eines Fensters sei es Menü oder Savescreen das Script rückgängig macht. Kann man da irgendwas im Skript rumdrehen, dass das nicht passiert?
Oder falls es bei dir nicht passieren sollte: Kannst du mir sagen was für Skripts du noch benutzt? Könnte es evtl. an nem anderen Skript liegen?
Benutze noch Hells Illumino, nen Alle-Tasten-Skript sowie ein Jump-Skript was die Jump-Funktion berichtigt.
-
Ich hab schon ne Weile gesucht und diverse Leute gefragt, aber keiner konnte
es genau finden oder weiß wie das Script heißt.
Ich suche das Script, das Namen von Events anzeigen lässt, wenn man sich ihm nähert,
wird der Name sichtbar, eingeblendet.
So weit ich weiß legt man den Namen als Kommentar im Event fest.
Wenn jemand weiß wie es heißt, oder mir zeigen kann wo man es bekommt
wäre ich ihm sehr dankbar.
-
Gott zum Gruße liebe Makerfreunde,
Ich habe ein kleines Problem mit einem Attribute System (http://)-Skript von RPG Revolution,
und zwar finde ich die Stellen im Skript nicht, in denen festgelegt wird, wieviele Punkte man beim Level Up erhält, und wie viele Punkte die einzelnen Attribute pro Level kosten..
Wäre nett, wenn mir wer helfen könnte (:
Gruß, Domi
-
Nächstes mal nimmst du lieber einen gültigen Link. :P
Naja wenn du das Attribute System meinst, welches Google ausgespuckt hat, findest du die benötigte Stelle in Zeile 570:
@attr_points += @level
und Zeile 580
@attr_points -= @level
Wobei in Zeile 580 der Verlust von Punkten definiert wurde.
MfG
Deity
-
Danke Deity x3
Da hab ich doch glatt vergessen, den Link reinzusetzen xD
Es ist jedenfalls richtig, So sind schonmal die Punkte beim Aufleveln geregelt!
Jetzt muss ich nurnoch schauen, wie/wo das geregelt ist mit den Upgrades (:
Gruß, Domi
//Edit: Gefunden, Problem gelöst. Blindschleiche zu verschenken.
-
hi suche nen script womit ich den titel screen über springen kann und gleich dierekt auf einer ma lande wo dann events starten können...
ich habe leider den namen vergessen des scriptes und finde den auch net hier im forum :(
bin dankbar für hilfe
-
achso... jo das kenn ich zufällig.
Das Script ist von Erzengel und du findests in Rosa Caninas Custom Title Tutorial.
Ich hoff ich konnt dir helfen Noa ^^
-
vielen dank genau das habe ich gesucht xD
ich werde am we ein kleines minigame machen ich hoffe es wird fertig....
-
Ich habe eine Frage zum Skript "Verus Tempus Proelum" von campyrcoders (http://vampyrcoders.net/ => das erste). Mit diesem Skript solle man sich Items und Skills merken bzw. benutzen können indem man die ensprechenden Tasten drückt (Q bzw. W)... Irgendwie verstehe ich nicht genau wie das funktioniert, wenn ich z.B. Q drücke kommt zwar ein Bild, wenn ich dann aber die "direcional keys" drücke um ein item auszuwählen, passiert nichts... kennt sich wer mit diesem skript aus?
-
Also, um außerhalb des Menüs die Items/SKills nutzen zu können musst du zuerst im Menü bei den Items/Skills die Dinge auswählen, die du gerne hättest, das funktioniert indem du die entsprechende Taste (Q z.B. für Items) gedrückt hälst und dann eine der Pfeiltasten drückst um den Gegenstand auf diesem 'Hotkey' zu legen.
Lg, Domin0e
-
Ich hab auch mal wieder eine Frage.
Was muss ich ändern, dass z.B. das Beenden-Auswahl-Window im Vordergrund steht, aber man das Menü im Hintergrund noch sieht?
-
Dafür gibt es 2 Möglichkeiten:
1. Du machst ein Zwischenbild, welches beim Aufruf von End mitübergeben wird, und als Hintergrund dient.
2. Du bearbeitet nicht die Scene_End sondern das Menu selbst. Sprich die FUnktion von Scene_End ins Menu packen und den Hintergrund beim Aufruf einfach bischen abdunkeln.
MfG
Deity
-
Also, um außerhalb des Menüs die Items/SKills nutzen zu können musst du zuerst im Menü bei den Items/Skills die Dinge auswählen, die du gerne hättest, das funktioniert indem du die entsprechende Taste (Q z.B. für Items) gedrückt hälst und dann eine der Pfeiltasten drückst um den Gegenstand auf diesem 'Hotkey' zu legen.
Lg, Domin0e
achso ist das... und wie löst man dann diese hotkeys aus? wenn ich dann z.b. Q drücke und die entsprechende Pfeiltaste, auf der sich ein Hotkey befindet, passiert nichts...
-
Nabend,
ich habe da ein Problem in meinem Projekt und zwar benutze ich das Requiem Action Battle System.
Der Fehler hier ist nachdem ich das Goldsäckchen eingesammmelt hab ist die stelle wo das Säckchen gewesen ist unbegehbar und das ändert sich erst nachdem ich die Map verlassen hab und dann wieder auf diese Map zurück gehe.
Wäre nett wenn man mir helfen könnte.
http://www.fotos-hochladen.net/fehlerimspielas4vdzgt.png
-
Das klingt für mich jetzt nach nem Fall von "falscher" Begehbarkeit..... vielleicht mal im Editor nachsehn ob da was falsch eingestellt ist. Weil soweit ich das in Errinerung hab, ist nach dem Tod von einem Monster n Skelett da...bin mir aber nich sicher ^^ Solltest, wenns das nicht is guggen was nach dem "kill" passiert ...könnte auch sein das das als einstellung im Script vorhanden ist (davon geh ich mal schwer aus ^^)
mfg Kvote
-
Ok ich hab mal ein wenig geschaut und konnte mit meinen Amateuraugen nichts erkennen xD.
Aber ich dachte mir das kann doch nicht sein, so habe ich dann die anderen Scripts die da noch drin waren entfernt und jetzt geht es. YAY
Muss jetzt nur mal schauen welches Script diesen fehler hervorruft.
Aber Danke das du geholfen hast.
*Edit: Liegt am Antilag
-
Da mir bisher leider keiner von meinen Helfen bei diesem Problem weiter helfen konnte, hoffe ich das mir hier jemand helfen kann, ehe ich noch verzweifle! Der Fehler hat mich schon dazu getrieben noch mal neu anzufangen, leider konnte ich ihn immer noch nicht beheben, durchs neuanfangen ist nun aber soweit alles übersichtlicher, so das ich mir fast sicher bin zu wissen wo sich er Fehler befindet, finden tue ich ihn aber nicht.
Das Problem ist, das ich nach einem bestimmten Event beim Speichern diesen Error bekomme
"Script 'Scene_File' line 214: Type Error occurred.
no marshal_dump is defined for class Sprite:Character"
Das Event sieht folgerndermaßen aus:
Seite 1 (http://img707.imageshack.us/img707/5185/seite1q.jpg)
Seite 2 (http://img683.imageshack.us/img683/1113/seite2.jpg)
Seite 3 (http://img442.imageshack.us/img442/1957/seite3.jpg)
Seite 4 (http://img204.imageshack.us/img204/9388/seite4.jpg)
wer möchte dem kann ich das Projekt auch zukommen lassen
wenn mir da jemand weiter helfen könnte wäre ich wirklich sehr dankbar, dieser Fehler lässt mir einfach keine Ruhe mehr
-
Hay koushirou,
der Fehler ist eigentlich ganz simpel.
Er taucht immer dann auf, wenn man versucht eine Variable oder eine Klasse, die ein Bitmap oder Sprite ist/beinhaltet über die "herkömmliche" Art zu speichern versucht.
Ich bin mir nicht sicher, wie es jetzt bei dir dazu kommen kann, aber zeile 214 beinhaltet $game_system also wird einer deiner Scripte ein Bitmap in dieser Klasse abspeichern und beim verlassen der Map oder der ursprünglichen Scene löscht er dieses nicht oder sonst was. ^^
Würde schauen welches Script darauf zugreift und du wirst den Fehler finden.
MfG
Deity
-
Also ich konnte den Fehler nun noch mehr eingrenzen, es liegt wohl irgend wie an der Gegnergruppe
weil wenn ich die Gruppe in dem Event gegen eine andere austausche funktioniert es komischerweise mit dem danach Speichern
was genau nun der Fehler ist weiß ich aber immer noch nicht... hab auch schon versucht die Gruppe neu zu machen
aber das hat auch nichts gebracht, das ist echt zum verzweifeln q.q
-
Also ich würde jetzt einfach mal nachschauen, ob die Sprites gelöscht werden, sobald der Kampf unterbrochen wird egal ob durch Event oder Sieg/Niederlage.
Das wirst du unter "terminate" und der Methode dispose nachschauen können.
Werden diese nicht gelöscht hast du dein Problem gefunden. ^^
MfG
Deity
-
@Deity: ich habs mir selbst auch angeguckt, das Problem ist, dass es alles disposed was zu disposen ist. Ich konnts eigentlich statt wie koushirou auf die enemy group eigentlich nur auf 2 Dinge eingrenzen: Problem mit dem Maker (Deutschpatch eventuell) und dass andere wäre ein kompatibilitätsproblem mit nem andern script, wobei ich nicht wüsste welches, da nur 2 andre scripts drin sind (mogs title script und das nms)
vlt hast du ja ne idee /=
lg Flipely
-
Das lässt sich leicht überprüfen, entfernt doh einfach mal alle anderen Scripts. Taucht der Fehler immer noch auf, liegt es nicht an den Scripten ist der Fehler behoben, wisst ihr wo ihr nun suchen müsst.
Zusätzliche Möglichkeiten wären, dass ich per Call Script oder eigene Script Bitmap/Sprites aufrufft, welche nicht disposed werden. Oder vllt liegt es auch daran, dass ihr ein Spielstand ladet in dem solch ein Bitmap erzeugt wird etc.
Ansonsten weiss ich grad auch nicht, wo man suchen müsste. ^^
MfG
Deity
-
ne ohne das Mog titelscript funkts ja einwandfrei, das NMS wird eigentlich dort frisch mitgeliefert.
Grafiken werdn alle gelöscht, hab ich schon geguckt, das Mog Script hab ich auch extra auf alle zusätzlichen Load daten erweitert, sowie das Scene_File, wobei hier keine mehr gefehlt haben, habs ja orginal ausm andern projekt übernommen und jah, ich weiß wirklich auch nicht mehr weiter /=
-
Wenn ihr wollt, könnt ihr mir das mal zusenden, ich schaue es gerne an, mehr kann ich zurzeit auch nicht anbieten. ^^
Wollte mich eh nochmal das KS anschauen weil ich eins suche oder vllt machen will. :P
MfG
Deity
-
wenn koushirou mir die erlaubnis gibt, dann send ichs dir mal zu =D
-
Hey leuts ich brauch mal eure Hilfe^^
Also es geht darum das man bei CB kein Level abfragen kann...
Deshalb hab ich mir gedanken drüber gemacht und ich will euch mal fragen ob es vlt
ein Skript gibt das, immer wenn ein Actor (nicht alle einer würde schon reichen^^)
ein Level up schafft, eine Variable (meiner wahl) um 1 erhöht wird?
brauch das (oder eine andere lösung) unbedingt für mein spiel^^
were echt super wen jemand ein Skript oder eine andere lösung hat.
Lg
Vesskin
-
Geht doch ganz einfach:
Control Variables -> Actor -> Held auswählen -> Level
Und dann in der CB die Variable überprüfen ;)
Gruß
Domin0e
-
Wenn du eine Variable dem Level setzen willst, musst du aber auch das Variable Fix Script benutzen,denn ansonsten wird es nicht klappen. ^^
MfG
Deity
-
Mist...ich war zu langsam xDD
Hier mal die Erklärung von Domine0e mit Bildern....erklärt sich von selbst ^^
(http://npshare.de/files/38d84a57/Lvl_abfrage_1.png)
(http://npshare.de/files/1313f6a5/Lvl_abfrage_2.png)
mfg, Kvote
-
danke an euch 3, klappt alles wunderbar^^ dann kann ich jetzt ja endlich weiter Makern ;)
lg
Vesskin
-
hi also ich hab da ein problem mit diesem Sideview KS:
http://www.rpgvx.net/index.php/topic,1626.0.html (http://www.rpgvx.net/index.php/topic,1626.0.html)
1. Weis ich ned was mit diesem Satz gemeint ist:
7. Ihr macht bei Status unter ID 5 das Bogen Element und stellt es bei jedem Bogen so ein(Also jeder Bogen muss dieses Element haben
den sonst wirds nicht richtig angezeigt).
Ich check das ned, was soll ich da machen? in welchen Abschnitt der Database?
ö.Ö
und 2. ich habe das mit den Status noch nicht gemacht aber wenn ich jetzt einen Battle test mache, alles von grafiken und scripts ist importiert: kommt jedenfalls der fehler das Graphik Ralph_1 nicht gefunden wurde, aber in der Demo befindet sich auch kein Ralph 1 ö.Ö
was zum Geier läuft da falsch?
-
Ich bräuchte auch mal Hilfe, und zwar möchte ich, wenn ein Char angreift, das er dabei ein Kampfgeräusch von sich gibt (wie man es eben aus RPGs kennt)
dazu habe ich dieses Skript gefunden
hier auch noch mal der Link dazu KLICK (http://www.rpg-studio.de:8181/scriptdb/de/Actors-Pain-Script.html)
<br />
<b>Notice</b>: ob_clean() [<a href='ref.outcontrol'>ref.outcontrol</a>]: failed to delete buffer. No buffer to delete. in <b>/var/www/vhosts/rpg-studio.de/httpdocs/scriptdb/1/dl.php</b> on line <b>23</b><br />
#==============================================================================
# ** Actors in Pain Script V1.5
# ActorsInPainScript.rb von SojaBird (13.06.2009)
#------------------------------------------------------------------------------
# http://www.rpg-studio.de/scriptdb/node/266
# http://www.rpg-studio.de/forum/index.php?page=Thread&threadID=30538
#==============================================================================
=begin
################################################################################
################################################################################
Actors in Pain
Autor: SojaBird
Data: 25-01-'09
Version: 1.5
################################################################################
This script overwrites:
display_hp_damage
################################################################################
For each actor, make a map in '../MyGame/Audio/SE'
In each map you can add sound effects up to 100 different.
The names of the files must be numbered, starting with zero.
Example for the actor named "Frank"
'../MyGame/Audio/SE/Frank' contains:
- 0.ogg
- 1.mp3
- 2.wav
- 3.ogg
- 4.ogg
- 5.wav
When actor Frank it's HP is damaged, it'll scream one of the 6 above files.
################################################################################
################################################################################
WARNING!!
Don?t touch below if you don?t know what you are doing!!
################################################################################
################################################################################
=end
module Sound
# New Actor Damage
def self.play_actor_damage(actor)
@actor = actor.name
@avalible = false
ary = ["ogg","mp3","wav"]
nbr = 0
for key in 0..100
ary.each do |i|
if FileTest.exist?("Audio/SE/#{@actor}/#{key}.#{i}")
nbr += 1
@file = rand(nbr)
if FileTest.exist?("Audio/SE/#{@actor}/#{@file}.#{i}")
@avalible = true
@location = "Audio/SE/#{@actor}/#{@file}.#{i}"
end #FileTest @file
end #FileTest key
end #ary each do
end #key 100
if @avalible == true
Audio.se_play(@location)
else
$data_system.sounds[12].play
end
end
end
###############################################################################
################################################################################
module Sound
# New Enemy Damage
def self.play_enemy_damage(enemy)
@enemy = enemy.name
@avalible = false
ary = ["ogg","mp3","wav"]
nbr = 0
for key in 0..100
ary.each do |i|
if FileTest.exist?("Audio/SE/#{@enemy}/#{key}.#{i}")
nbr += 1
@file = rand(nbr)
if FileTest.exist?("Audio/SE/#{@enemy}/#{@file}.#{i}")
@avalible = true
@location = "Audio/SE/#{@enemy}/#{@file}.#{i}"
end #FileTest @file
end #FileTest key
end #ary each do
end #key 100
if @avalible == true
Audio.se_play(@location)
else
$data_system.sounds[12].play
end
end
end
################################################################################
################################################################################
################################################################################
################################################################################
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# * New Show HP Damage
# target : Target
# obj : Skill or item
#--------------------------------------------------------------------------
def display_hp_damage(target, obj = nil)
if target.hp_damage == 0 # No damage
return if obj != nil and obj.damage_to_mp
return if obj != nil and obj.base_damage == 0
fmt = target.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
text = sprintf(fmt, target.name)
elsif target.absorbed # Absorb
fmt = target.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
text = sprintf(fmt, target.name, Vocab::hp, target.hp_damage)
elsif target.hp_damage > 0 # Damage
if target.actor?
text = sprintf(Vocab::ActorDamage, target.name, target.hp_damage)
Sound.play_actor_damage(target) # <<<|EDIT|>>> #
$game_troop.screen.start_shake(5, 5, 10)
else
text = sprintf(Vocab::EnemyDamage, target.name, target.hp_damage)
Sound.play_enemy_damage(target)
target.blink = true
end
else # Recovery
fmt = target.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
text = sprintf(fmt, target.name, Vocab::hp, -target.hp_damage)
Sound.play_recovery
end
@mes
Aber wenn ich das unter meine Skripte eintrage, kann ich nicht einmal das Spiel öffnen, weil sofort ein Error kommt.
Frage, gibt es auch noch ein anderes Skript dazu oder mag sich das Skript hier mal anschauen?
Kenn mich zwar nicht mit dem skripen aus, aber der Anfang erscheint mir schon so komisch. (aber selbst wenn ich die ersten Zeilen weg lasse läuft es nicht)
-
Das liegt ganz eifnach daran, dass das Script nicht komplett ist. Du hast nicht den ganzen Teil.
MfG
Deity
-
Das Skript schien wohl auf der Seite fehlerhaft gewesen zu sein, hab nun das komplette
Nun hab ich die Errors zwar nicht mehr, aber funktionieren tut es auch nicht wie es dort steht
Ich habe einen Ordner mit dem Namen des Hauptcharakters in den SE Ordner gemacht und die datei "0" genannt.
So hab ich es zumindest verstanden, oder muss man da noch mehr machen bzw was anders machen?
-
Da steht, dass man für jeden Spieler der Schaden nehmen kann, ein Ordner unter SE erstellt werden soll, desen Namen dem Namen des Helden entspricht. In diesen Ordner kopierst du alle Schadengeräuschte, die er "schreien" kann.
Die Namen der Geräusche müssen aber 0-100 sein.
Also es müssen nicht 100 sein aber können die Zahlen dazwischen sein. ^^
MfG
Deity
-
Joa, genau so hatte ich es ja gemacht q.q
Aber wenn die Geräusche kommen wenn der Charakter dmg bekommt, ist es eh das falsche Script für mich
wollte ja das der Charakter beim zu schlagen ein Geräusch von sich gibt, aber trotzdem danke!
-
Das ist jetzt natürlich ein bischen doff gelaufen.
Kein Problem, ich hoffe du findest das was du suchst. :)
MfG
Deity
-
Ich bräuchte mal Hilfe bei einem Skript, da es nicht läuft und ich nicht weiß woran es liegt
und zwar nennt es sich "Save Screen Customization" wenn ich es bei meinen Skripten einfüge, bekomme ich sofort einen Error beim Spielstart
line4 "Original Japanese Version From: RGSS2 DAIpage" es bringt auch nichts die alten Savedateien zu löschen und wenn ich es in ein ganz neues Projekt einfüge funktioniert es ebenfalls nicht, daher glaube ich das schon im Skript irgend ein Fehler ist q.q
begin
#-------------------------------------------------------------------------------
Save Screen Customization
Original Japanese Version From: RGSS2 DAIpage
English Translation By: SuperMega
#-------------------------------------------------------------------------------
Script Features:
-Alterations to the save screen with HUGE customization!
-Can be plug 'n play, but customization is something you want to look at
-You can choose one of four possible layouts:
1 = character sprites, level, HP with MP. Not recommended for a small party.
2 = characters sprite & name, level, class, HP with MP.
3 = Face Image, Name, level, class, HP with MP.
4 = Face Image & Name Face, HP · MP. Not recommended for a small party.
-You can choose to hide playtime, location, gold, etc.
-If a location contains a "#" (Or anything you choose), that location will not
be displayed on the save screen (This is what the script creator says, but this
is not the case. So I have no idea what this does...)
Note:
THIS SCRIPT IS NOT COMPATIBLE WITH OLD SAVE FILES. IF YOU INSTALL THIS SCRIPT
AFTER YOU HAVE ALREADY SAVED, YOU MUST START OVER.
Update History:
7/6 Script Released
7/7 Fixed a bug where "#" wouldn't work correctly
This script redifines:
Scene_File
Window_SaveFile
Changing this script may result in compatability errors, so do so at your
own risk...
=end
#==============================================================================
# Begin Customization
#==============================================================================
module DAI
# Maximum Save Files (If 6 or more, you will have to scroll down.)
FILE_MAX = 6
# Save File box height. (It's not really neccessary to change this.)
FILE_HEIGHT = 60
# Window Arrangement (0 = left displays files, right shows stats 1 = reversed)
FILE_ARRANGEMENT = 1
# Message Displayed if there is no file saved
FILE_NOT = "Keine Datei vorhanden"
# Display the play time?
FILE_PLAY_TIME = true
# If above is true, what term should "Play time" go by?
FILE_PLAY_TIME_NAME = "Verstrichene Spielzeit"
# Display Amount of Gold?
FILE_GOLD = true
# If above is true, what term should display before the gold amount?
FILE_GOLD_NAME = " Gold im Besitz:"
# Display Location Name?
FILE_PLACE_MAP = true
# Not exactly sure what this does, so DON'T TOUCH IT!
FILE_MAP_NAME_DE = "#"
# Display Type
# 1 = character sprites, level, HP with MP. Not recommended for a small party.
# 2 = characters sprite & name, level, class, HP with MP.
# 3 = Face Image, Name, level, class, HP with MP.
# 4 = Face Image & Name Face, HP · MP. Not recommended for a small party.
FILE_TYPE = 3
# Height of One Character in Save Window
#(Type 1 = 32-70, type 2 = 60 to 70, Type 3 = 60 to 70, Type 4 33-70)
FILE_LENGTN = 70
#--------------------------------------------------------------------------
# ? IF YOU CHOSE DISPLAY TYPE 3...
#--------------------------------------------------------------------------
# Display the class of all actors?
FILE_TYPE_C_3 = true
# Face Size Used on The Save Screen
# Please note, the greater the height, the screen gets more crowded
FILE_FACE_LENGTN_X_3 = 96 # horizontal
FILE_FACE_LENGTN_Y_3 = 68 # vertical
#--------------------------------------------------------------------------
# ?IF YOU CHOSE DISPLAY TYPE 4...
#--------------------------------------------------------------------------
# Face Size Used on The Save Screen
# Please note, the greater the height, the screen gets more crowded.
FILE_FACE_LENGTN_X_4 = 96 # horizontal
FILE_FACE_LENGTN_Y_4 = 31 # vertical
# Face Graphic Alignment (Default aligns the eyes centered)
TYPE_4_POSITION_Y = 20
end
#==============================================================================
# End Customization
#==============================================================================
#==============================================================================
# ¦ Scene_File
#------------------------------------------------------------------------------
# ??????????????????
#==============================================================================
class Scene_File
#--------------------------------------------------------------------------
# ? ???? (????)
#--------------------------------------------------------------------------
alias _exmincrsv_start start
def start
@file_max = DAI::FILE_MAX
_exmincrsv_start
wh = DAI::FILE_HEIGHT
adj = (416 - @help_window.height) % wh
@help_window.height += adj
@page_file_max = ((416 - @help_window.height) / wh).truncate
for i in 0...@file_max
window = @savefile_windows
if @index > @page_file_max - 1
if @index < @file_max - @page_file_max - 1
@top_row = @index
window.y -= @index * window.height
elsif @index >= @file_max - @page_file_max
@top_row = @file_max - @page_file_max
window.y -= (@file_max - @page_file_max) * window.height
else
@top_row = @index
window.y -= @index * window.height
end
end
window.y += adj
window.visible = (window.y >= @help_window.height and
window.y < @help_window.height + @page_file_max * window.height)
window.x = 404 if DAI::FILE_ARRANGEMENT == 1
end
if DAI::FILE_ARRANGEMENT == 0
@Save_window = Window_Dai_Save.new(140,56,make_filename(@index))
else
@Save_window = Window_Dai_Save.new(0,56,make_filename(@index))
end
end
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
alias dai_save_terminate terminate
def terminate
dai_save_terminate
@Save_window.dispose
end
#--------------------------------------------------------------------------
# ? ??????????????? (???)
#--------------------------------------------------------------------------
def create_savefile_windows
@top_row = 0
@savefile_windows = []
for i in 0...@file_max
a = 0
a = 1 if FileTest.exist?(make_filename(i))
@savefile_windows.push(Window_SaveFile.new(i, make_filename(i),a))
end
end
#--------------------------------------------------------------------------
# ? ????????? (???)
# wrap : ??????????
#--------------------------------------------------------------------------
def cursor_down(wrap)
if @index < @file_max - 1 or wrap
@index = (@index + 1) % @file_max
for i in 0...@file_max
window = @savefile_windows
if @index == 0
@top_row = 0
window.y = @help_window.height + i % @file_max * window.height
elsif @index - @top_row > @page_file_max - 1
window.y -= window.height
end
window.visible = (window.y >= @help_window.height and
window.y < @help_window.height + @page_file_max * window.height)
end
if @index - @top_row > @page_file_max - 1
@top_row += 1
end
end
filename = @savefile_windows[@index].filename
@Save_window.refresh(filename)
end
#--------------------------------------------------------------------------
# ? ????????? (???)
# wrap : ??????????
#--------------------------------------------------------------------------
def cursor_up(wrap)
if @index > 0 or wrap
@index = (@index - 1 + @file_max) % @file_max
for i in 0...@file_max
window = @savefile_windows
if @index == @file_max - 1
@top_row = @file_max - @page_file_max
window.y = @help_window.height + i % @file_max * window.height
window.y -= (@file_max - @page_file_max) * window.height
elsif @index - @top_row < 0
window.y += window.height
end
window.visible = (window.y >= @help_window.height and
window.y < @help_window.height + @page_file_max * window.height)
end
if @index - @top_row < 0
@top_row -= 1
end
end
filename = @savefile_windows[@index].filename
@Save_window.refresh(filename)
end
#--------------------------------------------------------------------------
# ? ???????????
# file : ??????????????? (??????)
#--------------------------------------------------------------------------
def write_save_data(file)
characters = []
for actor in $game_party.members
characters.push([
actor.character_name,
actor.character_index,
actor.name,
actor.level,
actor.class_id,
actor.face_name,
actor.face_index,
actor.maxhp,
actor.hp,
actor.maxmp,
actor.mp,
])
end
assistance = []
gold = $game_party.gold
map_name = $game_map.name
$game_system.save_count += 1
$game_system.version_id = $data_system.version_id
@last_bgm = RPG::BGM::last
@last_bgs = RPG::BGS::last
Marshal.dump(characters, file)
Marshal.dump(gold, file)
Marshal.dump(map_name, file)
Marshal.dump(Graphics.frame_count, file)
Marshal.dump(@last_bgm, file)
Marshal.dump(@last_bgs, file)
Marshal.dump($game_system, file)
Marshal.dump($game_message, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
end
#--------------------------------------------------------------------------
# ? ???????????
# file : ??????????????? (??????)
#--------------------------------------------------------------------------
def read_save_data(file)
characters = Marshal.load(file)
gold = Marshal.load(file)
map_name = Marshal.load(file)
Graphics.frame_count = Marshal.load(file)
@last_bgm = Marshal.load(file)
@last_bgs = Marshal.load(file)
$game_system = Marshal.load(file)
$game_message = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
if $game_system.version_id != $data_system.version_id
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
end
end
#==============================================================================
# ¦ Window_SaveFile
#------------------------------------------------------------------------------
# ???????????????????????????????????
#==============================================================================
class Window_SaveFile
#--------------------------------------------------------------------------
# ? ????????? (???)
# file_index : ?????????????? (0~3)
# filename : ?????
#--------------------------------------------------------------------------
def initialize(file_index, filename , a)
wh = DAI::FILE_HEIGHT
super(0, 56 + file_index % DAI::FILE_MAX * wh, 140, wh)
@file_index = file_index
@filename = filename
load_gamedata
refresh(a)
@selected = false
end
#--------------------------------------------------------------------------
# ? ??????(???)
#--------------------------------------------------------------------------
def refresh(a)
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.color.alpha = 128 unless a == 1
name = Vocab::File + " #{@file_index + 1}"
self.contents.draw_text(4, 0, 200, WLH, name)
@name_width = contents.text_size(name).width
end
end
#==============================================================================
# ¦ Window_Dai_Save
#------------------------------------------------------------------------------
# ???????????????????????
#==============================================================================
class Window_Dai_Save < Window_Base
#--------------------------------------------------------------------------
# ? ?????????
# x : ?????? X ??
# y : ?????? Y ??
#--------------------------------------------------------------------------
def initialize(x, y, filename)
super(x, y, 404, 360)
load_gamedata(filename)
refresh(filename)
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh(filename)
self.contents.clear
load_gamedata(filename)
unless FileTest.exist?(filename)
self.contents.draw_text(4, 150, self.width - 40, WLH, DAI::FILE_NOT, 1)
return
end
if DAI::FILE_GOLD
if DAI::FILE_PLAY_TIME
draw_party_gold(0, 280, contents.width - 4, 0)
else
draw_party_gold(0, 307, contents.width - 4, 0)
end
end
draw_playtime(0, 307, contents.width - 4, 0) if DAI::FILE_PLAY_TIME
case DAI::FILE_TYPE
when 1
draw_party_characters(16, 33)
draw_actor_hp_gauge(120, 5)
draw_actor_hp(120, 5)
draw_actor_mp_gauge(250, 5)
draw_actor_mp(250, 5)
draw_actor_level(50, 5)
when 2
draw_party_characters(16, 33)
draw_actor_name(50, 5)
draw_actor_hp_gauge(250, 5)
draw_actor_hp(250, 5)
draw_actor_mp_gauge(250, 30)
draw_actor_mp(250, 30)
draw_actor_level(50, 30)
draw_actor_class(116, 30)
when 3
draw_face(0, 0, DAI::FILE_FACE_LENGTN_X_3, DAI::FILE_FACE_LENGTN_Y_3)
if DAI::FILE_TYPE_C_3
draw_actor_level(100, 25)
draw_actor_class(168, 25)
draw_actor_name(100, 0)
else
draw_actor_level(120, 25)
draw_actor_name(120, 0)
end
draw_actor_hp_gauge(250, 0)
draw_actor_hp(250, 0)
draw_actor_mp_gauge(250, 25)
draw_actor_mp(250, 25)
when 4
draw_face_type_4(0, 0, DAI::FILE_FACE_LENGTN_X_4, DAI::FILE_FACE_LENGTN_Y_4)
draw_actor_hp_gauge(120, 5)
draw_actor_hp(120, 5)
draw_actor_mp_gauge(250, 5)
draw_actor_mp(250, 5)
end
end
#--------------------------------------------------------------------------
# ? ?????????????
# ?????????????????? (??????????) ?
#--------------------------------------------------------------------------
def load_gamedata(filename)
@time_stamp = Time.at(0)
@file_exist = FileTest.exist?(filename)
if @file_exist
file = File.open(filename, "r")
@time_stamp = file.mtime
begin
@characters = Marshal.load(file)
@gold = Marshal.load(file)
@map_name = Marshal.load(file)
@frame_count = Marshal.load(file)
@last_bgm = Marshal.load(file)
@last_bgs = Marshal.load(file)
@game_system = Marshal.load(file)
@game_message = Marshal.load(file)
@game_switches = Marshal.load(file)
@game_variables = Marshal.load(file)
@screen_dump = Marshal.load(file)
@total_sec = @frame_count / Graphics.frame_rate
rescue
@file_exist = false
ensure
file.close
end
end
end
#--------------------------------------------------------------------------
# ? ??????
# x : ??? X ??
# y : ??? Y ??
# width : ?
# align : ??
#--------------------------------------------------------------------------
def draw_party_gold(x, y, width, align)
self.contents.font.color = normal_color
self.contents.draw_text(x, y, width, WLH, DAI::FILE_GOLD_NAME + " " + @gold.to_s + " " + Vocab::gold, 2)
end
#--------------------------------------------------------------------------
# ? ??????????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
def draw_party_characters(x, y)
for i in 0...@characters.size
name = @characters
*
index = @characters[1]
draw_character(name, index, x , y + i * DAI::FILE_LENGTN)
end
end
#--------------------------------------------------------------------------
# ? HP ????? 1 ???
#--------------------------------------------------------------------------
def hp_gauge_color1
return text_color(20)
end
#--------------------------------------------------------------------------
# ? HP ????? 2 ???
#--------------------------------------------------------------------------
def hp_gauge_color2
return text_color(21)
end
#--------------------------------------------------------------------------
# ? MP ????? 1 ???
#--------------------------------------------------------------------------
def mp_gauge_color1
return text_color(22)
end
#--------------------------------------------------------------------------
# ? MP ????? 2 ???
#--------------------------------------------------------------------------
def mp_gauge_color2
return text_color(23)
end
#--------------------------------------------------------------------------
# ? HP ???????
# actor : ????
#--------------------------------------------------------------------------
def hp_color(actor)
return knockout_color if actor.hp == 0
return crisis_color if actor.hp < actor.maxhp / 4
return normal_color
end
#--------------------------------------------------------------------------
# ? HP ???
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_hp(x, y, width = 120)
h = DAI::FILE_LENGTN
for i in 0...@characters.size
maxhp = @characters[7]
hp = @characters[8]
self.contents.font.color = system_color
self.contents.draw_text(x, y + i * DAI::FILE_LENGTN, 30, WLH, Vocab::hp_a)
self.contents.font.color = normal_color if hp >= maxhp / 4
self.contents.font.color = crisis_color if hp < maxhp / 4
self.contents.font.color = knockout_color if hp == 0
xr = x + width
if width < 120
self.contents.draw_text(xr - 40, y + i * h, 40, WLH, hp, 2)
else
self.contents.draw_text(xr - 90, y + i * h, 40, WLH, hp, 2)
self.contents.font.color = normal_color
self.contents.draw_text(xr - 50, y + i * h, 10, WLH, "/", 2)
self.contents.draw_text(xr - 40, y + i * h, 40, WLH, maxhp, 2)
end
end
end
#--------------------------------------------------------------------------
# ? HP ??????
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_hp_gauge(x, y, width = 120)
for i in 0...@characters.size
h = DAI::FILE_LENGTN
gw = width * @characters[8] / @characters[7]
gc1 = hp_gauge_color1
gc2 = hp_gauge_color2
n = y + i * h
self.contents.fill_rect(x, n + WLH - 8, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x, n + WLH - 8, gw, 6, gc1, gc2)
end
end
#--------------------------------------------------------------------------
# ? MP ???
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_mp(x, y, width = 120)
for i in 0...@characters.size
maxmp = @characters[9]
mp = @characters[10]
h = DAI::FILE_LENGTN
self.contents.font.color = system_color
self.contents.draw_text(x, y + i * h, 30, WLH, Vocab::mp_a)
self.contents.font.color = normal_color if mp >= maxmp / 4
self.contents.font.color = crisis_color if mp < maxmp / 4
self.contents.font.color = knockout_color if mp == 0
xr = x + width
if width < 120
self.contents.draw_text(xr - 40, y + i * h, 40, WLH, mp, 2)
else
self.contents.draw_text(xr - 90, y + i * h, 40, WLH, mp, 2)
self.contents.font.color = normal_color
self.contents.draw_text(xr - 50, y + i * h, 10, WLH, "/", 2)
self.contents.draw_text(xr - 40, y + i * h, 40, WLH, maxmp, 2)
end
end
end
#--------------------------------------------------------------------------
# ? MP ??????
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_mp_gauge(x, y, width = 120)
h = DAI::FILE_LENGTN
for i in 0...@characters.size
if @characters[9] > 0
gw = width * @characters[10] / @characters[9]
else
gw = 0
end
gc1 = mp_gauge_color1
gc2 = mp_gauge_color2
n = y + i * h
self.contents.fill_rect(x, n + WLH - 8, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x, n + WLH - 8, gw, 6, gc1, gc2)
end
end
#--------------------------------------------------------------------------
# ? ??????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
def draw_actor_level(x, y)
h = DAI::FILE_LENGTN
for i in 0...@characters.size
self.contents.font.color = system_color
self.contents.draw_text(x, y + i * h, 32, WLH, Vocab::level_a)
self.contents.font.color = normal_color
self.contents.draw_text(x + 32, y + i * h, 24, WLH, @characters[3], 2)
end
end
#--------------------------------------------------------------------------
# ? ?????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
def draw_actor_name(x, y)
h = DAI::FILE_LENGTN
for i in 0...@characters.size
self.contents.font.color = normal_color
self.contents.font.color = knockout_color if @characters[8] == 0
self.contents.draw_text(x , y + i * h,108 , WLH, @characters[2], 0)
end
end
#--------------------------------------------------------------------------
# ? ?????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
def draw_actor_class(x, y)
h = DAI::FILE_LENGTN
for i in 0...@characters.size
id = @characters[4]
c = $data_classes[id].name
self.contents.font.color = normal_color
self.contents.draw_text(x , y + i * h,108 , WLH, c, 0)
end
end
#--------------------------------------------------------------------------
# ? ??????????
# x : ??? X ??
# y : ??? Y ??
# size_x : ?????x
# size_y : ?????y
#--------------------------------------------------------------------------
def draw_face(x, y, size_x = 96,size_y = 57)
h = DAI::FILE_LENGTN
for i in 0...@characters.size
face_name = @characters[5]
face_index = @characters[6]
bitmap = Cache.face(face_name)
rect = Rect.new(0, 0, 0, 0)
rect.x = face_index % 4 * 96 + (96 - size_x) / 2
rect.y = face_index / 4 * 96 + (96 - size_y) / 2
rect.width = size_x
rect.height = size_y
self.contents.blt(x, y + i * h, bitmap, rect)
bitmap.dispose
end
end
#--------------------------------------------------------------------------
# ? ??????????(???4??)
# x : ??? X ??
# y : ??? Y ??
# size_x : ?????x
# size_y : ?????y
#--------------------------------------------------------------------------
def draw_face_type_4(x, y, size_x = 96,size_y = 57)
h = DAI::FILE_LENGTN
for i in 0...@characters.size
face_name = @characters[5]
face_index = @characters[6]
bitmap = Cache.face(face_name)
rect = Rect.new(0, 0, 0, 0)
rect.x = face_index % 4 * 96 + (96 - size_x) / 2
rect.y = face_index / 4 * 96 + (96 - size_y - DAI::TYPE_4_POSITION_Y) / 2
rect.width = size_x
rect.height = size_y
self.contents.blt(x, y + i * h, bitmap, rect)
bitmap.dispose
end
end
#--------------------------------------------------------------------------
# ? ????????
# x : ??? X ??
# y : ??? Y ??
# width : ?
# align : ??
#--------------------------------------------------------------------------
def draw_playtime(x, y, width, align)
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
time_string = sprintf("%02d:%02d", hour, min)
self.contents.font.color = normal_color
self.contents.draw_text(x, y, width, WLH, DAI::FILE_PLAY_TIME_NAME+" " + time_string, 2)
end
end
-
Setz mal vor das begin am Anfang ein "=" Zeichen.
-
hatte ich schon versucht, aber das hats leider auch nicht gebracht q.q
-
ALso bei mir funktionierte es, nachdem ich wie PDM es schon gesgat hat, ein = vor begin gesetzt habe.
Hast du es direkt vor begin eingefügt oder neue Zeile gemacht oder ähnliches?
Es muss einfach nur
=begin
am Anfang stehen.
MfG
Deity
-
ja genau so hatte ich es
also
=begin
bekomme jetzt sobald man saven möchte den Error
line147 "window.y += adj"
-
Man waren da viele Fehler im Script. O.o
Kann es sein, dass es nicht vollständig ist oder in zwei Teile geteilt wurde oder ähnliches?
Naja habe mal alles was ich gesehen habe geändert. Versuch es aus. (*Aufschreib Save Script zu schreiben.*)
=begin
#-------------------------------------------------------------------------------
Save Screen Customization
Original Japanese Version From: RGSS2 DAIpage
English Translation By: SuperMega
#-------------------------------------------------------------------------------
Script Features:
-Alterations to the save screen with HUGE customization!
-Can be plug 'n play, but customization is something you want to look at
-You can choose one of four possible layouts:
1 = character sprites, level, HP with MP. Not recommended for a small party.
2 = characters sprite & name, level, class, HP with MP.
3 = Face Image, Name, level, class, HP with MP.
4 = Face Image & Name Face, HP · MP. Not recommended for a small party.
-You can choose to hide playtime, location, gold, etc.
-If a location contains a "#" (Or anything you choose), that location will not
be displayed on the save screen (This is what the script creator says, but this
is not the case. So I have no idea what this does...)
Note:
THIS SCRIPT IS NOT COMPATIBLE WITH OLD SAVE FILES. IF YOU INSTALL THIS SCRIPT
AFTER YOU HAVE ALREADY SAVED, YOU MUST START OVER.
Update History:
7/6 Script Released
7/7 Fixed a bug where "#" wouldn't work correctly
This script redifines:
Scene_File
Window_SaveFile
Changing this script may result in compatability errors, so do so at your
own risk...
=end
#==============================================================================
# Begin Customization
#==============================================================================
module DAI
# Maximum Save Files (If 6 or more, you will have to scroll down.)
FILE_MAX = 6
# Save File box height. (It's not really neccessary to change this.)
FILE_HEIGHT = 60
# Window Arrangement (0 = left displays files, right shows stats 1 = reversed)
FILE_ARRANGEMENT = 1
# Message Displayed if there is no file saved
FILE_NOT = "Keine Datei vorhanden"
# Display the play time?
FILE_PLAY_TIME = true
# If above is true, what term should "Play time" go by?
FILE_PLAY_TIME_NAME = "Verstrichene Spielzeit"
# Display Amount of Gold?
FILE_GOLD = true
# If above is true, what term should display before the gold amount?
FILE_GOLD_NAME = " Gold im Besitz:"
# Display Location Name?
FILE_PLACE_MAP = true
# Not exactly sure what this does, so DON'T TOUCH IT!
FILE_MAP_NAME_DE = "#"
# Display Type
# 1 = character sprites, level, HP with MP. Not recommended for a small party.
# 2 = characters sprite & name, level, class, HP with MP.
# 3 = Face Image, Name, level, class, HP with MP.
# 4 = Face Image & Name Face, HP · MP. Not recommended for a small party.
FILE_TYPE = 3
# Height of One Character in Save Window
#(Type 1 = 32-70, type 2 = 60 to 70, Type 3 = 60 to 70, Type 4 33-70)
FILE_LENGTN = 70
#--------------------------------------------------------------------------
# ? IF YOU CHOSE DISPLAY TYPE 3...
#--------------------------------------------------------------------------
# Display the class of all actors?
FILE_TYPE_C_3 = true
# Face Size Used on The Save Screen
# Please note, the greater the height, the screen gets more crowded
FILE_FACE_LENGTN_X_3 = 96 # horizontal
FILE_FACE_LENGTN_Y_3 = 68 # vertical
#--------------------------------------------------------------------------
# ?IF YOU CHOSE DISPLAY TYPE 4...
#--------------------------------------------------------------------------
# Face Size Used on The Save Screen
# Please note, the greater the height, the screen gets more crowded.
FILE_FACE_LENGTN_X_4 = 96 # horizontal
FILE_FACE_LENGTN_Y_4 = 31 # vertical
# Face Graphic Alignment (Default aligns the eyes centered)
TYPE_4_POSITION_Y = 20
end
#==============================================================================
# End Customization
#==============================================================================
#==============================================================================
# ¦ Scene_File
#------------------------------------------------------------------------------
# ??????????????????
#==============================================================================
class Scene_File
#--------------------------------------------------------------------------
# ? ???? (????)
#--------------------------------------------------------------------------
alias _exmincrsv_start start
def start
@file_max = DAI::FILE_MAX
_exmincrsv_start
wh = DAI::FILE_HEIGHT
adj = (416 - @help_window.height) % wh
@help_window.height += adj
@page_file_max = ((416 - @help_window.height) / wh).truncate
for i in 0...@file_max
window = @savefile_windows
if @index > @page_file_max - 1
if @index < @file_max - @page_file_max - 1
@top_row = @index
window.y -= @index * window.height
elsif @index >= @file_max - @page_file_max
@top_row = @file_max - @page_file_max
window.y -= (@file_max - @page_file_max) * window.height
else
@top_row = @index
window.y -= @index * window.height
end
end
for i in window
i.y += adj
i.visible = (i.y >= @help_window.height and
i.y < @help_window.height + @page_file_max * i.height)
i.x = 404 if DAI::FILE_ARRANGEMENT == 1
end
end
if DAI::FILE_ARRANGEMENT == 0
@Save_window = Window_Dai_Save.new(140,56,make_filename(@index))
else
@Save_window = Window_Dai_Save.new(0,56,make_filename(@index))
end
end
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
alias dai_save_terminate terminate
def terminate
dai_save_terminate
@Save_window.dispose
end
#--------------------------------------------------------------------------
# ? ??????????????? (???)
#--------------------------------------------------------------------------
def create_savefile_windows
@top_row = 0
@savefile_windows = []
for i in 0...@file_max
a = 0
a = 1 if FileTest.exist?(make_filename(i))
@savefile_windows.push(Window_SaveFile.new(i, make_filename(i),a))
end
end
#--------------------------------------------------------------------------
# ? ????????? (???)
# wrap : ??????????
#--------------------------------------------------------------------------
def cursor_down(wrap)
if @index < @file_max - 1 or wrap
@index = (@index + 1) % @file_max
for i in 0...@file_max
window = @savefile_windows
if @index == 0
@top_row = 0
window[@index].y = @help_window.height + i % @file_max * window[@index].height
elsif @index - @top_row > @page_file_max - 1
window[@index].y -= window[@index].height
end
window[@index].visible = (window[@index].y >= @help_window.height and
window[@index].y < @help_window.height + @page_file_max * window[@index].height)
end
if @index - @top_row > @page_file_max - 1
@top_row += 1
end
end
filename = @savefile_windows[@index].filename
@Save_window.refresh(filename)
end
#--------------------------------------------------------------------------
# ? ????????? (???)
# wrap : ??????????
#--------------------------------------------------------------------------
def cursor_up(wrap)
if @index > 0 or wrap
@index = (@index - 1 + @file_max) % @file_max
for i in 0...@file_max
window = @savefile_windows
if @index == @file_max - 1
@top_row = @file_max - @page_file_max
window[@index].y = @help_window.height + i % @file_max * window[@index].height
window[@index].y -= (@file_max - @page_file_max) * window[@index].height
elsif @index - @top_row < 0
window[@index].y += window[@index].height
end
window[@index].visible = (window[@index].y >= @help_window.height and
window[@index].y < @help_window.height + @page_file_max * window[@index].height)
end
if @index - @top_row < 0
@top_row -= 1
end
end
filename = @savefile_windows[@index].filename
@Save_window.refresh(filename)
end
#--------------------------------------------------------------------------
# ? ???????????
# file : ??????????????? (??????)
#--------------------------------------------------------------------------
def write_save_data(file)
characters = []
for actor in $game_party.members
characters.push([
actor.character_name,
actor.character_index,
actor.name,
actor.level,
actor.class_id,
actor.face_name,
actor.face_index,
actor.maxhp,
actor.hp,
actor.maxmp,
actor.mp,
])
end
assistance = []
gold = $game_party.gold
map_name = $game_map.name
$game_system.save_count += 1
$game_system.version_id = $data_system.version_id
@last_bgm = RPG::BGM::last
@last_bgs = RPG::BGS::last
Marshal.dump(characters, file)
Marshal.dump(gold, file)
Marshal.dump(map_name, file)
Marshal.dump(Graphics.frame_count, file)
Marshal.dump(@last_bgm, file)
Marshal.dump(@last_bgs, file)
Marshal.dump($game_system, file)
Marshal.dump($game_message, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
end
#--------------------------------------------------------------------------
# ? ???????????
# file : ??????????????? (??????)
#--------------------------------------------------------------------------
def read_save_data(file)
characters = Marshal.load(file)
gold = Marshal.load(file)
map_name = Marshal.load(file)
Graphics.frame_count = Marshal.load(file)
@last_bgm = Marshal.load(file)
@last_bgs = Marshal.load(file)
$game_system = Marshal.load(file)
$game_message = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
if $game_system.version_id != $data_system.version_id
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
end
end
#==============================================================================
# ¦ Window_SaveFile
#------------------------------------------------------------------------------
# ???????????????????????????????????
#==============================================================================
class Window_SaveFile
#--------------------------------------------------------------------------
# ? ????????? (???)
# file_index : ?????????????? (0~3)
# filename : ?????
#--------------------------------------------------------------------------
def initialize(file_index, filename , a)
wh = DAI::FILE_HEIGHT
super(0, 56 + file_index % DAI::FILE_MAX * wh, 140, wh)
@file_index = file_index
@filename = filename
load_gamedata
refresh(a)
@selected = false
end
#--------------------------------------------------------------------------
# ? ??????(???)
#--------------------------------------------------------------------------
def refresh(a)
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.color.alpha = 128 unless a == 1
name = Vocab::File + " #{@file_index + 1}"
self.contents.draw_text(4, 0, 200, WLH, name)
@name_width = contents.text_size(name).width
end
end
#==============================================================================
# ¦ Window_Dai_Save
#------------------------------------------------------------------------------
# ???????????????????????
#==============================================================================
class Window_Dai_Save < Window_Base
#--------------------------------------------------------------------------
# ? ?????????
# x : ?????? X ??
# y : ?????? Y ??
#--------------------------------------------------------------------------
def initialize(x, y, filename)
super(x, y, 404, 360)
load_gamedata(filename)
refresh(filename)
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh(filename)
self.contents.clear
load_gamedata(filename)
unless FileTest.exist?(filename)
self.contents.draw_text(4, 150, self.width - 40, WLH, DAI::FILE_NOT, 1)
return
end
if DAI::FILE_GOLD
if DAI::FILE_PLAY_TIME
draw_party_gold(0, 280, contents.width - 4, 0)
else
draw_party_gold(0, 307, contents.width - 4, 0)
end
end
draw_playtime(0, 307, contents.width - 4, 0) if DAI::FILE_PLAY_TIME
case DAI::FILE_TYPE
when 1
draw_party_characters(16, 33)
draw_actor_hp_gauge(120, 5)
draw_actor_hp(120, 5)
draw_actor_mp_gauge(250, 5)
draw_actor_mp(250, 5)
draw_actor_level(50, 5)
when 2
draw_party_characters(16, 33)
draw_actor_name(50, 5)
draw_actor_hp_gauge(250, 5)
draw_actor_hp(250, 5)
draw_actor_mp_gauge(250, 30)
draw_actor_mp(250, 30)
draw_actor_level(50, 30)
draw_actor_class(116, 30)
when 3
draw_face(0, 0, DAI::FILE_FACE_LENGTN_X_3, DAI::FILE_FACE_LENGTN_Y_3)
if DAI::FILE_TYPE_C_3
draw_actor_level(100, 25)
draw_actor_class(168, 25)
draw_actor_name(100, 0)
else
draw_actor_level(120, 25)
draw_actor_name(120, 0)
end
draw_actor_hp_gauge(250, 0)
draw_actor_hp(250, 0)
draw_actor_mp_gauge(250, 25)
draw_actor_mp(250, 25)
when 4
draw_face_type_4(0, 0, DAI::FILE_FACE_LENGTN_X_4, DAI::FILE_FACE_LENGTN_Y_4)
draw_actor_hp_gauge(120, 5)
draw_actor_hp(120, 5)
draw_actor_mp_gauge(250, 5)
draw_actor_mp(250, 5)
end
end
#--------------------------------------------------------------------------
# ? ?????????????
# ?????????????????? (??????????) ?
#--------------------------------------------------------------------------
def load_gamedata(filename)
@time_stamp = Time.at(0)
@file_exist = FileTest.exist?(filename)
if @file_exist
file = File.open(filename, "r")
@time_stamp = file.mtime
begin
@characters = Marshal.load(file)
@gold = Marshal.load(file)
@map_name = Marshal.load(file)
@frame_count = Marshal.load(file)
@last_bgm = Marshal.load(file)
@last_bgs = Marshal.load(file)
@game_system = Marshal.load(file)
@game_message = Marshal.load(file)
@game_switches = Marshal.load(file)
@game_variables = Marshal.load(file)
@screen_dump = Marshal.load(file)
@total_sec = @frame_count / Graphics.frame_rate
rescue
@file_exist = false
ensure
file.close
end
end
end
#--------------------------------------------------------------------------
# ? ??????
# x : ??? X ??
# y : ??? Y ??
# width : ?
# align : ??
#--------------------------------------------------------------------------
def draw_party_gold(x, y, width, align)
self.contents.font.color = normal_color
self.contents.draw_text(x, y, width, WLH, DAI::FILE_GOLD_NAME + " " + @gold.to_s + " " + Vocab::gold, 2)
end
#--------------------------------------------------------------------------
# ? ??????????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
def draw_party_characters(x, y)
for i in 0...@characters.size
name = @characters
*
index = @characters[1]
draw_character(name, index, x , y + i * DAI::FILE_LENGTN)
end
end
#--------------------------------------------------------------------------
# ? HP ????? 1 ???
#--------------------------------------------------------------------------
def hp_gauge_color1
return text_color(20)
end
#--------------------------------------------------------------------------
# ? HP ????? 2 ???
#--------------------------------------------------------------------------
def hp_gauge_color2
return text_color(21)
end
#--------------------------------------------------------------------------
# ? MP ????? 1 ???
#--------------------------------------------------------------------------
def mp_gauge_color1
return text_color(22)
end
#--------------------------------------------------------------------------
# ? MP ????? 2 ???
#--------------------------------------------------------------------------
def mp_gauge_color2
return text_color(23)
end
#--------------------------------------------------------------------------
# ? HP ???????
# actor : ????
#--------------------------------------------------------------------------
def hp_color(actor)
return knockout_color if actor.hp == 0
return crisis_color if actor.hp < actor.maxhp / 4
return normal_color
end
#--------------------------------------------------------------------------
# ? HP ???
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_hp(x, y, width = 120)
h = DAI::FILE_LENGTN
for i in 0...@characters.size
maxhp = @characters[i][7]
hp = @characters[i][8]
self.contents.font.color = system_color
self.contents.draw_text(x, y + i * DAI::FILE_LENGTN, 30, WLH, Vocab::hp_a)
self.contents.font.color = normal_color if hp >= maxhp / 4
self.contents.font.color = crisis_color if hp < maxhp / 4
self.contents.font.color = knockout_color if hp == 0
xr = x + width
if width < 120
self.contents.draw_text(xr - 40, y + i * h, 40, WLH, hp, 2)
else
self.contents.draw_text(xr - 90, y + i * h, 40, WLH, hp, 2)
self.contents.font.color = normal_color
self.contents.draw_text(xr - 50, y + i * h, 10, WLH, "/", 2)
self.contents.draw_text(xr - 40, y + i * h, 40, WLH, maxhp, 2)
end
end
end
#--------------------------------------------------------------------------
# ? HP ??????
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_hp_gauge(x, y, width = 120)
for i in 0...@characters.size
h = DAI::FILE_LENGTN
gw = width * @characters[i][8] / @characters[i][7]
gc1 = hp_gauge_color1
gc2 = hp_gauge_color2
n = y + i * h
self.contents.fill_rect(x, n + WLH - 8, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x, n + WLH - 8, gw, 6, gc1, gc2)
end
end
#--------------------------------------------------------------------------
# ? MP ???
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_mp(x, y, width = 120)
for i in 0...@characters.size
maxmp = @characters[i][9]
mp = @characters[i][10]
h = DAI::FILE_LENGTN
self.contents.font.color = system_color
self.contents.draw_text(x, y + i * h, 30, WLH, Vocab::mp_a)
self.contents.font.color = normal_color if mp >= maxmp / 4
self.contents.font.color = crisis_color if mp < maxmp / 4
self.contents.font.color = knockout_color if mp == 0
xr = x + width
if width < 120
self.contents.draw_text(xr - 40, y + i * h, 40, WLH, mp, 2)
else
self.contents.draw_text(xr - 90, y + i * h, 40, WLH, mp, 2)
self.contents.font.color = normal_color
self.contents.draw_text(xr - 50, y + i * h, 10, WLH, "/", 2)
self.contents.draw_text(xr - 40, y + i * h, 40, WLH, maxmp, 2)
end
end
end
#--------------------------------------------------------------------------
# ? MP ??????
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_mp_gauge(x, y, width = 120)
h = DAI::FILE_LENGTN
for i in 0...@characters.size
if @characters[i][9] > 0
gw = width * @characters[i][10] / @characters[i][9]
else
gw = 0
end
gc1 = mp_gauge_color1
gc2 = mp_gauge_color2
n = y + i * h
self.contents.fill_rect(x, n + WLH - 8, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x, n + WLH - 8, gw, 6, gc1, gc2)
end
end
#--------------------------------------------------------------------------
# ? ??????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
def draw_actor_level(x, y)
h = DAI::FILE_LENGTN
for i in 0...@characters.size
self.contents.font.color = system_color
self.contents.draw_text(x, y + i * h, 32, WLH, Vocab::level_a)
self.contents.font.color = normal_color
self.contents.draw_text(x + 32, y + i * h, 24, WLH, @characters[i][3], 2)
end
end
#--------------------------------------------------------------------------
# ? ?????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
def draw_actor_name(x, y)
h = DAI::FILE_LENGTN
for i in 0...@characters.size
self.contents.font.color = normal_color
self.contents.font.color = knockout_color if @characters[i][8] == 0
self.contents.draw_text(x , y + i * h,108 , WLH, @characters[i][2], 0)
end
end
#--------------------------------------------------------------------------
# ? ?????
# x : ??? X ??
# y : ??? Y ??
#--------------------------------------------------------------------------
def draw_actor_class(x, y)
h = DAI::FILE_LENGTN
for i in 0...@characters.size
id = @characters[i][4]
c = $data_classes[id].name
self.contents.font.color = normal_color
self.contents.draw_text(x , y + i * h,108 , WLH, c, 0)
end
end
#--------------------------------------------------------------------------
# ? ??????????
# x : ??? X ??
# y : ??? Y ??
# size_x : ?????x
# size_y : ?????y
#--------------------------------------------------------------------------
def draw_face(x, y, size_x = 96,size_y = 57)
h = DAI::FILE_LENGTN
for i in 0...@characters.size
face_name = @characters[i][5]
face_index = @characters[i][6]
bitmap = Cache.face(face_name)
rect = Rect.new(0, 0, 0, 0)
rect.x = face_index % 4 * 96 + (96 - size_x) / 2
rect.y = face_index / 4 * 96 + (96 - size_y) / 2
rect.width = size_x
rect.height = size_y
self.contents.blt(x, y + i * h, bitmap, rect)
bitmap.dispose
end
end
#--------------------------------------------------------------------------
# ? ??????????(???4??)
# x : ??? X ??
# y : ??? Y ??
# size_x : ?????x
# size_y : ?????y
#--------------------------------------------------------------------------
def draw_face_type_4(x, y, size_x = 96,size_y = 57)
h = DAI::FILE_LENGTN
for i in 0...@characters.size
face_name = @characters[i][5]
face_index = @characters[i][6]
bitmap = Cache.face(face_name)
rect = Rect.new(0, 0, 0, 0)
rect.x = face_index % 4 * 96 + (96 - size_x) / 2
rect.y = face_index / 4 * 96 + (96 - size_y - DAI::TYPE_4_POSITION_Y) / 2
rect.width = size_x
rect.height = size_y
self.contents.blt(x, y + i * h, bitmap, rect)
bitmap.dispose
end
end
#--------------------------------------------------------------------------
# ? ????????
# x : ??? X ??
# y : ??? Y ??
# width : ?
# align : ??
#--------------------------------------------------------------------------
def draw_playtime(x, y, width, align)
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
time_string = sprintf("%02d:%02d", hour, min)
self.contents.font.color = normal_color
self.contents.draw_text(x, y, width, WLH, DAI::FILE_PLAY_TIME_NAME+" " + time_string, 2)
end
end
class Game_Map
def name
return load_data("Data/MapInfos.rvdata")[@map_id].name
end
end
MfG
Deity
-
Deity du bist ein Lebensretter, funktioniert (bis jetzt) ohne Probleme, danke! <3
-
Kein Problem, immer wieder gern. ^^
MfG
Deity
-
edit: wah, was hat das Forum mit meinem Post gemacht x_x *noch mal versuch*
Noch eine kleine Frage, ich benutze das Neo Message System (von Woratana)
und möchte das Namenskästchen auf der rechten Seite anzeigen lassen, finde dazu aber keine Befehl
könnte ich den Befehl nun einfügen? (und wenn ja möchte jemand das für mich machen)
oder gibt es ein anderes Skript mit dem Befehl der sich aber nicht mit dem Neo Skript beißt?
Dann hätte ich noch eine Frage zum GubiD's Tactical Battle System, gibt es ein Add-on oder ähnliches dafür
damit man beispielsweise auch Skill und Victoryposen einbauen kann?
-
Ich mal wieder *hust hust* Ich habe ein optisches Problem
Ich verwende das "RPG Tankentai SBS 3.3d Kaduki Eng" Skript und möchte meine eigenen Skills erstellen
das klappt soweit auch alles ganz gut, aber jetzt habe ich das Problem, ich möchte einen Skill, der aber eher Angriff als Skill ist, z.B wie der erste Standartskill "Dauerangriff". Trage ich meinen Skill nun einfach in die Datenbank ein, habe ich das Problem das der Char rechts auf seiner Seite stehen bleibt und von dort aus seinen Skill castet, statt zu dem Monster hinzulaufen und es zu vermöbeln, was bei einem Skill der z.B Kopfnuss heißt ein bissl blöd ausschaut. FlipelyFlip hatte sich mal daran versucht und es auch relativ nah an meine Vorstellung gebracht, allerdings war der Angriff dann nicht mehr im "KadukiStil"
(http://img706.imageshack.us/img706/5503/skillllllllll.png)
Bild 1 wie es aussehen sollte, Bild 2 wie es nach Flipelys Versuch aussah.
Ich hoffe ich hab mich einigermaßen klar ausgedrückt q.q Vll mag mir ja ein Skriptprofi da mal unter die Arme greifen der vielleicht sogar gute erfahrungen auch speziell mit dem Kaduki KS hat.
-
freu dich, hier haste es
script.rvdata (http://www.mediafire.com/?wmmmmmzyo3h) <-- downloadlink
lg flip
-
Ich suche einfach eine Funktion, die mir den Betrag einer Variable in der selben Variable ausgibt.
Beispiel: Variable A: -2
--> Betrag
Variable A: +2
Wäre wirklich nett, wenn mir jemand helfen könnte. Es würde mir eine Menge Abfragerrei ersparen.
Ist das irgendwas mit function abs? Weiß ich noch aus dem Infounterricht :D
-
Ich habe auch eine Frage:
Ist es möglich die Passierbarkeit einzelner Tiles per Script zu ändern oder auszutauschen?
Wenn ja, wie?
Edit: Hab's hinbekommen.
-
habe ne frage ob jemand nen script kennt das wie eine highscore arbeitet und diese internet auf einen server hochläd und die aktuellen daten abfrägt.
im grossen und ganzen ein online highscore script
-
Halli hallo hallöle :)
Ich bin auf der suche nach einem Script ähnlich wie Pokemon.
es soll fast genauso sein wie bei Pokemon so dass man als "Trainer" Rumläuft aber man mit "Monstern" kämpft und dass man auch nur die Monster im Menü sieht.
Dann brauch ich noch ein Script mit der man die Tastenbelegung ändern kann falls es sowas gibt :)
Mfg
RPGVX Noob
Hatzu
-
Hmm soweit ich weiß gibt es ein Pokemon Kit allerdings für den XPer korregiert mich wenn ich mich irre...
Zum Zweiten müsstest du in den Script berreich was finden könnnen
-
oki danke werd mal gucken :)
Öhm...
Ich wollte mal Fragen ob es ein AKS für den RPG Maker VX gibt ich hab bei google gesucht aber nur welche für den 2k gefunden und für den RPG Maker XP...
-
Ich habe ein Problem mit meinem HUD.
Ich habe das Vampyr-HUd ein wenig verändert.
Hier mein Script:
#==============================================================================
# Vampyr HUD $game_party.members[1]
#==============================================================================
# Switch ID that show or hide the HUD
OnOff_Switch = 0
# The name of the font
Font_Name = Font.default_name
# The size of the font
Font_Size = 16
#------------------------------------------------------------------------------
#if Vampyr_Kernel.enabled?("Vampyr SBABS")
#------------------------------------------------------------------------------
Vampyr_Kernel.register("Vampyr HUD", 1.0, "09/01/2009")
#------------------------------------------------------------------------------
class Vampyr_HUD1 < Window_Base
def initialize
super(-32, -32, 224, 140)
self.opacity = 0
@actor = $game_party.members[0]
@old_hp = @actor.hp if @actor != nil
@old_mp = @actor.mp if @actor != nil
update
refresh
end
def update
return if $game_party.members.size <= 0
@actor = $game_party.members[0] if @actor != $game_party.members[0]
return unless @old_hp != @actor.hp or @old_mp != @actor.mp
@old_hp = @actor.hp
@old_mp = @actor.mp
refresh
end
def refresh
return if $game_party.members.size <= 0
self.contents.clear
draw_hpbar(@actor, 18, 14)
draw_mpbar(@actor, 18, 54)
draw_actor_graphic($game_party.members[0],95,70)
self.contents.font.name = Font_Name
self.contents.font.size = Font_Size
self.contents.draw_outlined_text(32, 24, 44, 24, Vocab::hp_a)
self.contents.draw_outlined_text(32, 64, 34, 24, Vocab::mp_a)
end
def draw_hpbar(actor, x, y)
base = Cache.system("Bars-Base")
self.contents.blt(x, y, base, base.rect)
bar = Cache.system("HP-Bar")
meter = Rect.new(0, 0, base.width * actor.hp / actor.maxhp, base.height)
self.contents.blt(x, y, bar, meter)
end
def draw_mpbar(actor, x, y)
base = Cache.system("Bars-Base")
self.contents.blt(x, y, base, base.rect)
bar = Cache.system("MP-Bar")
meter = Rect.new(0, 0, base.width * actor.mp / actor.maxmp, base.height)
self.contents.blt(x, y, bar, meter)
end
end
#------------------------------------------------------------------------------
class Scene_Map < Scene_Base
alias vampyr_hud_start start
alias vampyr_hud_update update
alias vampyr_hud_terminate terminate
def start
vampyr_hud_start
@hud_window1 = Vampyr_HUD1.new
@hud_window1.visible = false
showing_hud
end
def update
vampyr_hud_update
showing_hud
@hud_window1.update if @hud_window1.visible
end
def terminate
vampyr_hud_terminate
@hud_window1.dispose
end
def showing_hud
if OnOff_Switch <= 0 or $game_switches[OnOff_Switch]
@hud_window1.visible = true
else
@hud_window1.visible = false
end
end
end
#------------------------------------------------------------------------------
#end
Meine Frage: Wie mache ich es, dass die Base-Bar im Vordergrund und die Hp- bzw Mp-Bar im Hintergrund angezeigt wird?
-
@Hatzu
Öhm...
Ich wollte mal Fragen ob es ein AKS für den RPG Maker VX gibt ich hab bei google gesucht aber nur welche für den 2k gefunden und für den RPG Maker XP...
Für den VX gibt es auch eines müsstest du im Script bereich sogar finden können
-
Kann mir wirklich keiner helfen? Wäre nämlich sehr wichtig?
-
Habe in der SuFu nix gefunden, hier mein Problem:
Habe mit dem Script KGC_CustomMenuCommand n bizzl rumprobiert und versucht neben den KGc Scripts noch den Questlog von hellminor ins Menü zu tun, also habe ich den Skript mal umgewurschtelt, der bei diesem Costum Menü alle anderen Menüs öffnet, also sah das ganze so aus:
when 7 # Questlog
index_list[:Questlog] = commands.size
commands << $scene = Scene_Questlog.new
WEnn ich jetzt ins Menü gehe, öffent der mir direkt den Questlog, beende ich den Questlog wird wieder direkt der Questlog geöffnet, es ist also n Autostart sobald ich das Menü anmache..
-
Poste mal das Komplette Skript, vielleicht kann ich dir dann dabei helfen, weil ich es dann selber testen kann...
-
Bräuchte auch nochmal Hilfe :S.
Folgendes Script habe ich eingebunden:
#==============================================================================
# ** Scene_Movie
#------------------------------------------------------------------------------
# This class performs movies.
#==============================================================================
class Scene_Movie
def initialize(movie, length, next_scene)
@movie_name = Dir.getwd()+"\\Movies\\"+movie
@counter = length
@next_scene = next_scene
end
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
Graphics.transition
@wnd = Win32API.new('user32','FindWindowEx','%w(l,l,p,p)','L')
@temp = @wnd.call(0,0,nil,"Mayumi").to_s
@movie = Win32API.new('winmm','mciSendString','%w(p,p,l,l)','V')
@movie.call("open \""+@movie_name+"\" alias FILE style 1073741824 parent " + @temp.to_s,0,0,0)
@message = Win32API.new('user32','SendMessage','%w(l,l,l,l)','V')
@movie.call("play FILE",0,0,0)
loop do
sleep(1)
@message.call(@temp.to_i,11,0,0)
Input.update
@message.call(@temp.to_i,11,1,0)
if Input.trigger?(Input::B)
break
end
@counter = @counter - 1
if @counter == 0
break
end
end
@movie.call("close FILE",0,0,0)
$scene = @next_scene
Graphics.freeze
end
end
Funktionieren tut es soweit.
Mein Problem ist jetzt, dass nach der Ausführung des Scripts das Fenster des Spiels minimiert wird/bleibt...
Meine Frage wäre ob es entweder eine Möglichkeit gibt das mithilfe einer Änderung im Script zu verbessern oder aber
ob es eine Art Befehl gibt, die das Spielfenster wieder maximiert....
Danke für die Hilfe
-
Hi,
bin neu und noch nich so gut mit dem RPG Maker Vertraut .. naja ein bissel kann ich schon aber beim Scripten blick ich garnet durch...
Ich verstehe ja wie ich Scripts einfüge klappt auch alles suber hab schon ein kleines Spiel.. aber mich würde jetzt mal interessieren wie man sich selber einen Script erstellt!
Ich hab schon gegoogelt und was nicht alles aber ich finde nix.. wäre nett wenn mir jemand helfen könnte =)
Danke im Voraus
MFG BananenToast
-
Schau mal hier in die Tutorial Sektion^^.
Es sind nur Grundlagen aber die werden auf jedenfall helfen.
http://www.rpgvx.net/index.php/topic,5193.0.html
http://www.rpgvx.net/index.php/topic,5212.0.html
Mfg
Cyberxeroxx
-
Danke ich werds mir durchlesen...
Ich send dir dann mal post obs mir geholfen hat ;D
-
Ich habe mal wieder eine Frage:
Ich verwende das Simple-Map-Name script von HellMinor. Nun möchte ich während dem Spiel per CallScript das Hintergrundbild austauschen. Dazu habe ich den SCript ersteinmal so abgeändert:
#==============================================================================
# Simple Map-Name
#
# Version : 1.24 - 12.11.08
# Created by : hellMinor
# Do NOT redistribute without my permission
# Description : A little script to show the name of the current map
# Note : This script was originally made to cut out the additions to
# the mapname made by my Day and Night script but it works normally
# without it.
#
#==============================================================================
# F.A.Q.
#==============================================================================
# If you want a background picture for your mapnames just put a picture
# called "location_back" into the folder "Graphics/System"
#==============================================================================
# Main config
#==============================================================================
X_POSITION = 10 # Default = 10
Y_POSITION = 10 # Default = 10
DELAY = 2 # How long the Mapname is shown (in seconds)
ALIGN = 0 # Align of the Mapname(0 = left, 1 = center, 2 = right)
PICTURE_MAPNAME = "location_back"
PIC_FORMAT = "png" # Format for the Nightlight-Maps
COLOR = 255,255,255,255 # Textcolor, default is white (255,255,255,255)
$show_mapname = true # Visible ?
#==============================================================================
class Scene_Map
#==============================================================================
def update_transfer_player
return unless $game_player.transfer?
fade = (Graphics.brightness > 0)
fadeout(30) if fade
@spriteset.dispose
dispose_showname_window
$game_player.perform_transfer
$game_map.autoplay
$game_map.update
Graphics.wait(15)
@spriteset = Spriteset_Map.new
fadein(30) if fade
Input.update
create_showname_window
end
#------------------------------------------------------------------------------
def create_showname_window
@str = $game_map.name.gsub(/\[\w*\]/) {""}
@mapname = Window_MapName.new(X_POSITION,Y_POSITION,200,56,@str)
@mapname.z = 300
@delay = DELAY*60
end
#------------------------------------------------------------------------------
def dispose_showname_window
@mapname.dispose if defined?(@mapname)
end
#------------------------------------------------------------------------------
alias update_mapname_adds update
def update
update_mapname_adds
if $show_mapname == true and defined?(@mapname) and not @mapname.disposed?
@mapname.fade_in if @mapname.contents_opacity <= 255 and @delay > 0
@delay -= 1 if @mapname.contents_opacity == 255 and @delay > 0
@mapname.fade_out if @mapname.contents_opacity >= 0 and @delay == 0
end
end
#------------------------------------------------------------------------------
def update_scene_change
return if $game_player.moving? # Is player moving?
dispose_showname_window if $game_temp.next_scene != nil
case $game_temp.next_scene
when "battle"
call_battle
when "shop"
call_shop
when "name"
call_name
when "menu"
call_menu
when "save"
call_save
when "debug"
call_debug
when "gameover"
call_gameover
when "title"
call_title
else
$game_temp.next_scene = nil
end
end
end
#==============================================================================
class Window_MapName < Window_Base
#==============================================================================
def initialize(x = 0,y = 0,width = 544, height = 416, text = "")
super(x,y,width,height)
self.opacity = 0
self.contents_opacity = 0
@text = text
refresh
end
#------------------------------------------------------------------------------
def refresh
self.contents.clear
@sprite = Sprite.new()
begin
@sprite.bitmap = Bitmap.new("Graphics/System/" + PICTURE_MAPNAME)
rescue Errno::ENOENT
end
@sprite.opacity = 0
@sprite.x = X_POSITION+5
@sprite.y = Y_POSITION+5
self.contents.font.color = Color.new(COLOR[0],COLOR[1],COLOR[2],COLOR[3])
self.contents.draw_text(4, 0, self.width - 40, WLH, @text, ALIGN)
end
#------------------------------------------------------------------------------
def dispose
@sprite.dispose
super
end
#------------------------------------------------------------------------------
def fade_in
self.contents_opacity += 2
@sprite.opacity += 2
end
#------------------------------------------------------------------------------
def fade_out
self.contents_opacity -= 2
@sprite.opacity -= 2
end
#------------------------------------------------------------------------------
end
#==============================================================================
class Scene_Title < Scene_Base
#==============================================================================
alias load_database_mapname_adds load_database
def load_database
load_database_mapname_adds
$data_mapinfos = load_data("Data/MapInfos.rvdata")
for key in $data_mapinfos.keys
$data_mapinfos[key] = $data_mapinfos[key].name
end
end
end
#==============================================================================
class Game_Map
#==============================================================================
def name
$data_mapinfos[@map_id]
end
end
Nun mache ich ein Event mit folgendem Inhalt:
CallScript: PICTURE_MAPNAME = "Location2"
Teleport
Leider ändert sich das Bild aber nicht.
Wo liegt mein Fehler?
-
Wenn ich dir empfehlen darf, diese Version zu verwenden:
#==============================================================================
# Simple Map-Name
#
# Version : 1.24 - 12.11.08
# Created by : hellMinor
# Do NOT redistribute without my permission
# Description : A little script to show the name of the current map
# Note : This script was originally made to cut out the additions to
# the mapname made by my Day and Night script but it works normally
# without it.
#
#==============================================================================
# F.A.Q.
#==============================================================================
# If you want a background picture for your mapnames just put a picture
# called "location_back" into the folder "Graphics/System"
#==============================================================================
# Main config
#==============================================================================
X_POSITION = 10 # Default = 10
Y_POSITION = 10 # Default = 10
DELAY = 2 # How long the Mapname is shown (in seconds)
ALIGN = 0 # Align of the Mapname(0 = left, 1 = center, 2 = right)
PIC_FORMAT = "png" # Format for the Nightlight-Maps
COLOR = 255,255,255,255 # Textcolor, default is white (255,255,255,255)
$show_mapname = true # Visible ?
# Mit Call Script folgendes eingeben, um den Namen für die Hintergrundgrafik zu
# ändern:
#change_picture_mapname(name)
# Der Parameter name muss in Anführungszeichen gesetzt werden.
#==============================================================================
class Scene_Map
#==============================================================================
def update_transfer_player
return unless $game_player.transfer?
fade = (Graphics.brightness > 0)
fadeout(30) if fade
@spriteset.dispose
dispose_showname_window
$game_player.perform_transfer
$game_map.autoplay
$game_map.update
Graphics.wait(15)
@spriteset = Spriteset_Map.new
fadein(30) if fade
Input.update
create_showname_window
end
#------------------------------------------------------------------------------
def create_showname_window
@str = $game_map.name.gsub(/\[\w*\]/) {""}
@mapname = Window_MapName.new(X_POSITION,Y_POSITION,200,56,@str)
@mapname.z = 300
@delay = DELAY*60
end
#------------------------------------------------------------------------------
def dispose_showname_window
@mapname.dispose if defined?(@mapname)
end
#------------------------------------------------------------------------------
alias update_mapname_adds update
def update
update_mapname_adds
if $show_mapname == true and defined?(@mapname) and not @mapname.disposed?
@mapname.fade_in if @mapname.contents_opacity <= 255 and @delay > 0
@delay -= 1 if @mapname.contents_opacity == 255 and @delay > 0
@mapname.fade_out if @mapname.contents_opacity >= 0 and @delay == 0
end
end
#------------------------------------------------------------------------------
def update_scene_change
return if $game_player.moving? # Is player moving?
dispose_showname_window if $game_temp.next_scene != nil
case $game_temp.next_scene
when "battle"
call_battle
when "shop"
call_shop
when "name"
call_name
when "menu"
call_menu
when "save"
call_save
when "debug"
call_debug
when "gameover"
call_gameover
when "title"
call_title
else
$game_temp.next_scene = nil
end
end
end
#==============================================================================
class Window_MapName < Window_Base
#==============================================================================
def initialize(x = 0,y = 0,width = 544, height = 416, text = "")
super(x,y,width,height)
self.opacity = 0
self.contents_opacity = 0
@text = text
refresh
end
#------------------------------------------------------------------------------
def refresh
self.contents.clear
@sprite = Sprite.new()
begin
@sprite.bitmap = Bitmap.new("Graphics/System/#{$game_system.background_image_name}")
rescue Errno::ENOENT
end
@sprite.opacity = 0
@sprite.x = X_POSITION+5
@sprite.y = Y_POSITION+5
self.contents.font.color = Color.new(COLOR[0],COLOR[1],COLOR[2],COLOR[3])
self.contents.draw_text(4, 0, self.width - 40, WLH, @text, ALIGN)
end
#------------------------------------------------------------------------------
def dispose
@sprite.dispose
super
end
#------------------------------------------------------------------------------
def fade_in
self.contents_opacity += 2
@sprite.opacity += 2
end
#------------------------------------------------------------------------------
def fade_out
self.contents_opacity -= 2
@sprite.opacity -= 2
end
#------------------------------------------------------------------------------
end
#==============================================================================
class Scene_Title < Scene_Base
#==============================================================================
alias load_database_mapname_adds load_database
def load_database
load_database_mapname_adds
$data_mapinfos = load_data("Data/MapInfos.rvdata")
for key in $data_mapinfos.keys
$data_mapinfos[key] = $data_mapinfos[key].name
end
end
end
#==============================================================================
class Game_Map
#==============================================================================
def name
$data_mapinfos[@map_id]
end
end
class Game_System
attr_accessor :background_image_name
alias initialize_mapname_background initialize unless $@
def initialize
initialize_mapname_background
@background_image_name = "location_back"
end
end
class Game_Interpreter
def change_picture_mapname(name)
$game_system.background_image_name = name
end
end
Der Command ist in den Commaents enthalten und ist ganz simpel. Hab es jetzt nicht ausprobiert, aber es müsste funktionieren. :)
Warum es nicht funktioniert hat:
Die Konstante PICTURE_MAPNAME war an keine Klasse "gebunden" und konnte deshalb nur innerhalb dieses Scriptes aufgegriffen und verändern werden. Desweiteren würde sich der Name wieder zurücksetzen, falls man gespeichert und geladen hätte. Nun ist der Name der Grafik in einer Variable der Klasse Game_System gespeichert, die beim speichern auch den Namen der Grafik mitübernimmt.
MfG
Deity
-
Vielen Dank!!!
Es funktioniert einwandfrei.
-
hab mal wieder eine Frage unzwar ich möchte zum Kampf Noch ein Status rein machen aber ich habe kein ATG oder wo das schon drin ist
kann da einer helfen ???
schon mal danke im voraus;)
-
Gib es ein NPC Namen zeig Skript
-
Hi.
@happyman
Ich verstehe leider nicht was du genau möchtest, könntest du es genauer beschreiben?
@Sawboy
Probier doch mal folgendes aus:
http://www.rpgvx.net/index.php/topic,1130.0.html
MfG
Deity
-
Ok der hatte ich auch schon aber da spinnt mein Spiel ka wieso aber habe eine Löschung gefunden habe
Floating Event's Name benutzt
-
Deity : Bei einen charakter im Kampf sind ja so Anzeigen Attacke,Abwehr,Technik und so weiter.Ich möchte statt Technik Wasserkraft oder so und bein einem anderen charakter Feuerkraft oder so ???
-
@happyman
Geh dafür auf Database > Classes. Unten rehcts findest du dann ein Kästchen wo du ein Häckchen setzen musst. Dort kannst du die Fähigkeiten dieser Klasse bennen.
MfG
Deity
-
so ich bins wieder sry wenn ich nerve aber suche nach 8-Way Move System und ein respawnen Skript
-
THX :)
-
hi hoffe mir kann jemand nen bissel helfen,
ich brauche den call event um den lade bildschirm aufzurufen.
kann mir den kurz jemand hier posten?
-
$scene = Scene_File.new(false, false, false)
Das müsste es sein.
-
vielen vielen dank :D
ging ja sehr schnell^^
Post zusammen gefügt: August 09, 2010, 22:58:24
so ich bruehcte nochmal hilfe >.<
das gleiche nur wie kann ich das spiel per call benden?
-
Ganz einfach:
$scene = nil
-
in der Database bei den Klassen kannst du unterschiedliche Namen für die Techniken eingeben.
lg flip
-
Gib es ein Skript das mein Charakter laufen kann
-
Was meinst du damit?
Der Player kann ja mit den Pfeiltasten laufen, wenn du ihm eine Route vorschreiben willst, musst du per Event eine Bewegungsroute bestimmen, das ist auf Seite 2.
-
Wenn du damit rennen meinst: So eine Funktion ist im Maker bereits integriert (im Spiel Shift drücken).
-
ahh das ist mir neu aber das wollte ich wissen danke
-
Hey ^^
Kann mir jmd. helfen ich finde das Vampyr Net - Script von Vlad nicht :O
-
Klick mich hart (http://www.rpgrevolution.com/forums/index.php?showtopic=35062&hl=Vlad+online)
Ist der link zum thread auf rrr.
-
Wen ich dann auf Download klicke lade icih bei MSN O.o
-
Richtig. Der gute Vlad hat nämlich seine HP eingeebnet und alles auf sein Skydrive gestellt.
-
muss ich mich nu bei MSN anmelden?
-
Frage zum Vlad ABS (neueste Version): Ist es möglich dort ein Event zu erstellen, welches nicht in der Gruppe ist und alle Feinde angreift, die sich diesem Event nähern? Irgendwie bin ich mir nicht ganz sicher, ob das wirklich geht.
-
Hat sich erledigt
-
Hat sich erledigt
Bei mir noch nicht...
-
Ich habe eine Frage: Ich habe mir heute dieses Tutorial zum aliasen angeschaut: http://www.rpgrevolution.com/forums/?showtopic=13319 (http://www.rpgrevolution.com/forums/?showtopic=13319)
Nun habe ich mal versucht, eine andere Scene als Menü aufzurufen. Das habe ich so gemacht:
class Scene_Map < Scene_Base
alias change_menu_ai call_menu
def call_menu
$scene = Scene_Menu.new
$scene = AcIn::MENU_SCENE.new
end
#--------------------------------------------------------------------------
end
#--------------------------------------------------------------------------
Es funktioniert eigentlich, die andere Scene wird aufgerufen. Wenn ich aber nun die Scene verlasse (also X drücke), wird die Scene sofort wieder aufgerufen.
Was habe ich falsch gemacht?
-
Es funktioniert eigentlich, die andere Scene wird aufgerufen. Wenn ich aber nun die Scene verlasse (also X drücke), wird die Scene sofort wieder aufgerufen.
Was habe ich falsch gemacht?
Das liegt an der Art des Aufruffs vom Menu.
In update_call_menu wird überprüft, ob die Taste B gedrückt wurde, in diesem Fall wird in game_temp die Variable next_scene auf "menu" gesetzt.
Nun wird in update_scene_change geschaut, welchen Wert die Variable next_scene hat. Diese hat den Wert "menu" deshalb wird die Methode call_menu aufgerufen.
Nun kommt deine Veränderung ins Spiel.
In der originallen Methode, wird die Variable $game_temp.next_scene auf nil gesetzt, bei dir aber nicht. Du rufst einfach nur 2 Scenes auf, was übrigens auch falsch ist, da nur die letzte Scene aufgeruffen wird (Scene_Menu öffnet sich zwar kurz, wechselbt aber sofort wieder).
Nun schliesst du das Menu und der Update fängt von vorne an und die Variable $game_temp.next_scene hat immer noch den Wert "menu" deshalb wird sofort wieder call_menu aufgeruffen. Folge ist dieser kleine Fehler. ^^
Falls du die komplette Methode ändern möchtest, musst du letzendlich überschreiben und nicht aliasen. ^^ Das heisst in dem Fall war das Aliasen überflüssig, vor allem weil du die alte Methode garnicht gebraucht hast. :) Ausserdem solltest du folgedes beim aliasen verwenden: unless $@ oder unless method_defined?("neuer_methode_name"), um Stack Errors vorzubeugen.
MfG
Deity
-
Ich hätte mal wieder eine Frage >3<
Und zwar mit welchem Skript(Skripten) ich so etwas wie auf diesem Screen aufbauen kann KLICK (http://www.shrani.si/f/1Z/Vs/1o6FEFo3/enixbs.png)
Sprich, ein Sideview System, unten die Artworks der Charaktere (statt den Avataren oder nur den Namen) und oben Links oder Rechts das Menü?
Sideview KS kenn ich ja zu genüge, aber gibt es für die auch ein Add-on für Artworks?
-
Tankentai mit ein paar kleinen Modifikationen (das der Battlehud so ausguckt unten, ansonsten is der blos leicht nach rechts zusammengedrückt) + Ziifee Spin Command (Overdrive Add-On)
-
Hab jetzt zwar nur Bahnhof verstanden, aber trotzdem danke dir! q.q
Neben dem Problem habe ich noch ein anderes, ich weiß nicht mal ob so etwas möglich ist, aber das kann mir sicher irgend wer sagen, und zwar hab ich irgend wo mal ein skript gesehen, mit dem man die Person mit der man läuft wechseln kann (sprich man hat 2 Chars in der Party, Held 1 und Held 2, statt Held 1 kann man nach belieben auswählen ob man vll auch mal mit Held 2 laufen möchte) so, nun zu meiner eigentlichen Frage, kann man den Helden dann auch spezifische Fähigkeiten geben, so das man Held 1 spielt z.B sprinten kann, mit Held 2 springen u.s.w.?
-
Hi,
ja das ist sogar ziemmlich leicht.
Das ganze würde ich sogar ohne Ruby machen, naja nicht ganz. xD
Du erstellst ein Common Event, welches parallel zum Spiel läuft.
In der ersten Zeile müsstest du mit einem Call Script arbeiten und zwar folgendes einfügen:
$game_variables[id] = $game_party.members[0].id
Nun wird die Variable, die die ID id besitzt, der ID des ersten Partymitglieds gleichgesetzt. Also, ist Ralph das erste Partymitglied, so ist der Wert der Variable 1, wäre Bannet das erste Mitglied der Party, wäre der Wert 3, diese Werte entsprechen den IDs dieser Actors in der Database. ^^
(id im Call Script unbedingt mit der ID der Variable ersetzen, mit welcher du arbeiten willst.)
Nun kannst du also mit leichtigkeit abfragen, welcher Actor an erster Stelle steht.
In das Common Event, welches parallel läuft kannst du nun deine Spezialfähigkeiten packen. ^^
In den folgenden Zeilen fragst du einfach ab, welches der Partymitglieder an erster Stelle steht und fügst Effekte hinzu.
Also z.B.
ConditionalBranch Variable == 1
Sprinten: AN
else
Sprinten: AUS
end
Das kannst du nun einfach mit allen Actors aus der Database machen. ^^
Zum Actoraustausch auf der Map, kannst du ja ein Script verwenden, welches bereits geschrieben wurde, das mit Events zu gestalten wäre unnötig kompliziert.
Hier ein sehr simples von mir:
module Play_Exchange
SE_NAME = "Cursor"
end
class Game_Party
def change_first_member_l
@actors.insert(0,@actors[-1])
@actors.pop
$game_player.refresh
end
def change_first_member_r
@actors.insert(-1,@actors[0])
@actors.delete_at(0)
$game_player.refresh
end
end
class Scene_Map
alias update_player_exchange update unless $@
def update
if Input.trigger?(Input::L)
Audio.se_play("Audio/SE/#{Play_Exchange::SE_NAME}")
$game_party.change_first_member_l
elsif Input.trigger?(Input::R)
Audio.se_play("Audio/SE/#{Play_Exchange::SE_NAME}")
$game_party.change_first_member_r
end
update_player_exchange
end
end
Auf der Map durch drücken von Q/W kannst du den Player wechseln.
Hoffe konnte dir einen Anstoss in die Richtige Richtung geben. :P
MfG
Deity
-
Danke für das Skript Deity, hätte jetzt auf anhieb auch nicht das gefunden, was ich mal irgend wo gesehen hatte, klappt auch super <3
Für den Rest bin ich irgend wie zu doof, ich hab auch noch nie großartig mit Common Events und Variablen gearbeitet, daher ist es grad etwas schwer für mich da einzufinden. Wobei ich das mit dem Common Event glaub ich sogar einigermaßen verstanden hab, nur an den Variablen scheitert es dann >3<
-
Also ich habe ein einfaches Beispiel gemacht, was sehr weit ausgebaut werden kann, aber das Prinzip bleibt.
Hier erstmal das Bild zum Common Event.
http://250kb.de/u/100902/p/2ud4SxHKFN1K.png
Also als erstes wie oben schon gesgat, allerdings etwas anders geschrieben, um Fehler zu vermeiden.
Call Script:
id = $game_party.members[0].id
$game_variables[1] = id
Die Variable mit der ID 1 wird in diesem Fall der Database-ID des ersten Partymitglieds gesetzt. (In der STandart DB, Ralph = 1, Ulrika = 1, Bennet = 3 etc.)
Ändere die ID, sprich die 1 in die Variable, die die ID des Actor beinhalten soll.
Nun wird als erstes abgefragt welchen Wert diese Variable hat, dafür benutzt du einfach Conitional Branch, Variable == ID.
Die erste Abfrage ist für Ralph, deshalb wird abgefragt, ob die Variable den Wert 1 hat, ist dies der Fall, so habe ich mich zur Demonstration für eine HP-Regeneration entschieden, die jede 5 Sekunden (300 Frames) geschehen soll. Also lass ich eine Variable die Frames zählen und frag ab, ob 300 Frames vorbei sind und wenn ja regeneriere ich die HP um 10 und ressete die Variable.
Das selbe Prinzip habe ich auch nun bei der Abfrage für Ulrika verwendet, allerdings mit MP.
Bei der Abfrage ob Bennet der "spielbare" Character ist, habe ich einfach mal Zufallskämpfe erlaubt bzw. verboten.
Nach diesem Prinzip kannst du für alle Actors der Database, individuelle Fähgkeiten entwickeln, allerdings kann es natürlich verfeinert werden, da der Screen bzw. das Beispiel nur zur Demonstartion dienen soll. ^^
Hoffe es ist klarer geworden, was ich meine.
MfG
Deity
-
Vielen lieben Dank! Klappt nun super <3
brauchte nur eine ganze weile bis mir eingefallen ist das man erst einmal die Bedinung für das Common Event erfüllen sollte *hust*
Hast mir wirklich sehr weiter geholfen! '_'
-
Freut mich, dass ich dir helfen konnte. :)
MfG
Deity
-
Ich hät da mal eine Frage...
Ich hab jetzt das Script für die benutzung mehrer Tilesets für MAPS mal ausprobiert(das von hellmiror)
da bräuchte ich das Java set (das ich habe) und das "Tileset_reLoaded" ding...
habe beides...
Und dann steht da das ich das Tileset_reLoaded starten muss um wechseln zu können... aber es zeigt immer wieder die Meldung...
"Fehler!"
"Kein Projekt gefunden!"
an.
Was hab ich falsch gemacht?
Schonmal danke an die Antworten die noch kommen...
-
hast dus im Projektordner, in dem gewechselt werden soll?
-
Ja... (Was fürn Spam von mir -__-)
-
Ich habe mal ein Script versucht...
module Ray
SWITCH_ID = 20
end
class Game_Player < Game_Character
class Scene_Ray
def main
if $game_switches[Ray::SWITCH_ID] == true
$scene_Game_Character_CENTER_X = (544/ 2 - 16) * 4
$scene_Game_Character_CENTER_Y = (416/ 2 - 16) * 4
end
end
end
end
Damit soll die feste Position des Spielers verändert werden. Dafür muss der Switch 20 aktiviert sein. Doch aus einem mir unbekannten Grund funktioniert es nich -.-
Es kommt kein Error, es funktioniert einfach nur nicht -.-
Kann mir jemand helfen?
-
Ich suche nach einer Möglichkeit, statt dem normalen Speichern es so zu machen:
In einer bereits vorhandenen Savedatei sollen z.B. nur die Switches, Variablen und Gold überspeichert werden. D.h., dass alles andere in der Savedatei beibehalten werden soll.
Geht so etwas?
-
@PDM
Ja es geht. ^^
Schau dir einfach mal Scene_File an, dort müsstest du alles finden, weas du dafür benötigst.
@rayman
module Ray
SWITCH_ID = 20
end
class Game_Player < Game_Character
class Scene_Ray
def main
if $game_switches[Ray::SWITCH_ID] == true
$game_player.center_x = (544/ 2 - 16) * 4
$game_player.center_y = (416/ 2 - 16) * 4
$game_switches[Ray::SWITCH_ID] = false
end
end
end
end
Vllt klappt es ja so?
MfG
Deity
-
Hm, ich habe es so ausprobiert:
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_party, file)
So, jetzt werden aber nur diese Daten gespeichert (was ich nachvollziehen kann). Laden kann ich aber das ganze nicht. Ich habe aber keine Ahnung wie ich es mache, dass bei einem vorhandenen Savefile diese Dinge überschrieben werden und alles andere bleibt.
Ich arbeite daran schon den ganzen Tag und kriegs einfach nicht raus :(
-
Möchtest du das ganze in Save_Files haben, also in der Scene, die man ingame betreten kann, oder per Call Script?
Ich könnt versuchen da was zu schreiben. ^^
MfG
Deity
-
In der Scene wäre gut.
Wäre echt nett von dir wenn du mir helfen könntest.
-
class Scene_File
def do_save
file = @savefile_windows[@index].filename
write_save_data(file)
return_scene
end
alias write_save_data_n write_save_data unless $@
def write_save_data(file)
if FileTest.exist?(file)
fl = File.open(file,"rb")
characters = Marshal.load(fl)
Graphics.frame_count = Marshal.load(fl)
@last_bgm = Marshal.load(fl)
@last_bgs = Marshal.load(fl)
game_system = Marshal.load(fl)
game_message = Marshal.load(fl)
game_switches = Marshal.load(fl)
game_variables = Marshal.load(fl)
game_self_switches = Marshal.load(fl)
game_actors = Marshal.load(fl)
game_party = Marshal.load(fl)
game_troop = Marshal.load(fl)
game_map = Marshal.load(fl)
game_player = Marshal.load(fl)
game_party.gain_gold($game_party.gold-game_party.gold)
fl.close
file = File.open(file,"wb")
$game_system.save_count += 1
Marshal.dump(characters, file)
Marshal.dump(Graphics.frame_count, file)
Marshal.dump(@last_bgm, file)
Marshal.dump(@last_bgs, file)
Marshal.dump(game_system, file)
Marshal.dump(game_message, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump(game_self_switches, file)
Marshal.dump(game_actors, file)
Marshal.dump(game_party, file)
Marshal.dump(game_troop, file)
Marshal.dump(game_map, file)
Marshal.dump(game_player, file)
else
file = File.open(file,"wb")
write_save_data_n(file)
file.close
end
end
end
Probiers mal damit. ^^
MfG
Deity
-
Irgendwie hat das Script ein Problem mit dem Prexus-Party Manager.
-
Kenne das Script nicht, aber wenn du mir ein Link dazu gibst, könnte ich es mir mal anschauen. ^^
Wahrscheinlich werden die Freigeschalteten Einheiten in einer Variable gespeichert, die ich natürlich nicht übernehmen kann, kenn diese ja nicht. :P
MfG
Deity
-
Hier: Link (http://www.rpgmakervx.net/index.php?showtopic=1040)
Gibt es aber nicht irgendeine Möglichkeit das so (ähnlich) zu machen?
-Selected Savefile laden (egal was für Scripte benutzt werden)
-Switches, Variablen und Gold überspeichern
-Ende
Also dass die ganzen Dinge nicht geladen werden müssen, sondern einfach nur eine Art Edit im Savefile.
-
So habe ich es ja auch gemacht. ;)
Also das kommt über das Party Script:
class Scene_File
def do_save
file = @savefile_windows[@index].filename
write_save_data(file)
return_scene
end
alias write_save_data_n write_save_data unless $@
def write_save_data(file)
if FileTest.exist?(file)
fl = File.open(file,"rb")
characters = Marshal.load(fl)
Graphics.frame_count = Marshal.load(fl)
@last_bgm = Marshal.load(fl)
@last_bgs = Marshal.load(fl)
game_system = Marshal.load(fl)
game_message = Marshal.load(fl)
game_switches = Marshal.load(fl)
game_variables = Marshal.load(fl)
game_self_switches = Marshal.load(fl)
game_actors = Marshal.load(fl)
game_party = Marshal.load(fl)
game_troop = Marshal.load(fl)
game_map = Marshal.load(fl)
game_player = Marshal.load(fl)
data_actors = Marshal.load(fl)
game_party.gain_gold($game_party.gold-game_party.gold)
fl.close
file = File.open(file,"wb")
$game_system.save_count += 1
Marshal.dump(characters, file)
Marshal.dump(Graphics.frame_count, file)
Marshal.dump(@last_bgm, file)
Marshal.dump(@last_bgs, file)
Marshal.dump(game_system, file)
Marshal.dump(game_message, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump(game_self_switches, file)
Marshal.dump(game_actors, file)
Marshal.dump(game_party, file)
Marshal.dump(game_troop, file)
Marshal.dump(game_map, file)
Marshal.dump(game_player, file)
Marshal.dump(data_actors, file)
else
file = File.open(file,"wb")
write_save_data_n(file)
Marshal.dump($data_actors, file)
file.close
end
end
end
Und hier das etwas editierte Party Script:
#==============================================================================
# ** Prexus - Party Manager (v1.1c)
#------------------------------------------------------------------------------
# This is a Party Management system, created by Prexus. It allows you to
# change your party makeup, out of a reserve of characters. It also allows you
# to lock characters, making them mandatory, and make characters unavailable.
#
# See thread at RMXP.org for instructions:
# http://www.rmxp.org/forums/index.php?topic=42685.msg402326#msg402326
#
# - Changelog (v1.1c)
# * Fixed a graphical error in the party reserves window
#
# - (v1.1b)
# * Fixed a bug with the draw_item_name method, added the width parameter
# - (v1.1)
# * Added functionality to see player's equipment (press the A button)
# $data_actors[ID].found = true Tìm th?y 1 hero
# $data_actors[ID].unavailable = true Lock 1 hero
# $game_party.members[0].actor.required = true Lock Leader
# $scene = Scene_Party.new Call Menu P-Changer
#
#
#
#
#==============================================================================
module RPG
class Actor
def setup
@found = false
@unavailable = false
@required = false
end
attr_accessor :found
attr_accessor :unavailable
attr_accessor :required
end
end
class Game_Actors
attr_reader :data
alias prex_party_g_actors_initialize initialize
def initialize
prex_party_g_actors_initialize
$data_actors.each do |actor|
actor.setup if actor
@data[actor.id] = Game_Actor.new(actor.id) if actor
end
end
end
class Scene_File < Scene_Base
alias prex_party_s_file_read_save_data read_save_data
def read_save_data(file)
prex_party_s_file_read_save_data(file)
$data_actors = Marshal.load(file)
end
end
class Scene_Title < Scene_Base
alias prex_party_s_title_command_new_game command_new_game
def command_new_game
prex_party_s_title_command_new_game
$game_party.members.each {|s| s.actor.found = true if s}
end
end
class Window_Base < Window
def draw_item_name(item, x, y, enabled = true, width = 172)
if item != nil
draw_icon(item.icon_index, x, y, enabled)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x + 24, y, width, WLH, item.name)
end
end
end
class Scene_Party < Scene_Base
def start
super
create_menu_background
create_windows
end
def create_windows
@member_window = Window_CurrentMember.new
@party_window = Window_CurrentParty.new
@party_window.active = true
@selectable_window = Window_SelectMember.new
end
def update_windows
@member_window.update
@party_window.update
@selectable_window.update
if @party_window.active
@member_window.set_member(@party_window.member)
elsif @selectable_window.active
@member_window.set_member(@selectable_window.member)
end
end
def terminate
super
@member_window.dispose
@party_window.dispose
@selectable_window.dispose
end
def update
super
update_windows
update_input
end
def update_input
if Input.trigger?(Input::A)
if @member_window.mode == 1
@member_window.set_mode(0)
elsif @member_window.mode == 0
@member_window.set_mode(1)
end
end
if @party_window.active
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
member = @party_window.member
if member != nil
if member.actor.unavailable or member.actor.required
Sound.play_buzzer
return
end
end
Sound.play_decision
@party_window.active = false
@selectable_window.active = true
@selectable_window.index = 0
end
elsif @selectable_window.active
if Input.trigger?(Input::B)
Sound.play_cancel
@selectable_window.index = -1
@selectable_window.active = false
@party_window.active = true
elsif Input.trigger?(Input::C)
member = @selectable_window.member
if member != nil
if member.actor.unavailable
Sound.play_buzzer
return
end
end
Sound.play_decision
$game_party.remove_actor(@party_window.member.id) if @party_window.member != nil
$game_party.add_actor(@selectable_window.member.id) if @selectable_window.member != nil
@selectable_window.refresh
@party_window.refresh
@selectable_window.index = -1
@selectable_window.active = false
@party_window.active = true
end
end
end
end
class Window_CurrentMember < Window_Base
attr_reader :mode
def initialize(member = nil, mode = 0)
super(304, 80, 192, 256)
create_contents
@member = member
@mode = 0
refresh
end
def member
return @member
end
def set_member(member)
old_member = @member
@member = member
refresh if old_member != @member
end
def set_mode(mode)
@mode = mode if [0, 1].include?(mode)
refresh
end
def refresh
self.contents.clear
return unless @member
x, y = 0, 0
self.draw_actor_face(@member, x, y, 48)
self.draw_actor_name(@member, x + 52, y)
self.draw_actor_class(@member, x + 52, y + WLH)
self.draw_actor_level(@member, x, y + WLH*2)
case @mode
when 0
self.draw_icon(142, self.contents.width - 24, y + WLH*2)
self.contents.draw_text(x, y + WLH*2, self.contents.width - 12, WLH, 'Equip', 2)
self.draw_actor_hp(@member, x, y + WLH*3, 160)
self.draw_actor_mp(@member, x, y + WLH*4, 160)
self.draw_actor_parameter(@member, x, y + WLH*5, 0)
self.draw_actor_parameter(@member, x, y + WLH*6, 1)
self.draw_actor_parameter(@member, x, y + WLH*7, 2)
self.draw_actor_parameter(@member, x, y + WLH*8, 3)
when 1
self.draw_icon(143, self.contents.width - 24, y + WLH*2)
self.contents.draw_text(x, y + WLH*2, self.contents.width - 12, WLH, 'Stat', 2)
for i in 0...@member.equips.size
item = @member.equips[i]
self.draw_item_name(item, x, y + WLH*(3+i), true, self.contents.width - 24)
end
end
end
end
class Window_CurrentParty < Window_Selectable
def initialize
super(48, 80, 256, 64)
@item_max = 4
@column_max = @item_max
create_contents
self.index = 0
refresh
end
def member
return $game_party.members[self.index]
end
def refresh
for i in 0...@item_max
rect = item_rect(i)
self.contents.clear_rect(rect)
end
for i in 0...$game_party.members.size
rect = item_rect(i)
bitmap = Cache.character($game_party.members[i].character_name)
sign = $game_party.members[i].character_name[/^[\!\$]./]
if sign != nil and sign.include?('$')
cw = bitmap.width / 3
ch = bitmap.height / 4
else
cw = bitmap.width / 12
ch = bitmap.height / 8
end
n = $game_party.members[i].character_index
src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
if $game_party.members[i].actor.unavailable
self.contents.blt(rect.x, rect.y, bitmap, src_rect, 128)
else
self.contents.blt(rect.x, rect.y, bitmap, src_rect, 255)
end
if $game_party.members[i].actor.required
lock_bitmap = Cache.system("Locked")
self.contents.blt(rect.x + rect.width - lock_bitmap.width,
rect.y + rect.height - lock_bitmap.height,
lock_bitmap, lock_bitmap.rect)
end
end
end
def item_rect(index)
rect = Rect.new(0, 0, 0, 0)
rect.width = (contents.width + @spacing) / @column_max - @spacing
rect.height = 32
rect.x = index % @column_max * (rect.width + @spacing)
rect.y = index / @column_max * 32
return rect
end
end
class Window_SelectMember < Window_Selectable
def initialize
super(48, 144, 256, 192)
calculate_actors
@item_max = @actors.size + 1
@column_max = 4
self.index = -1
self.active = false
refresh
end
def calculate_actors
@actors = []
for a in $game_actors.data
@actors << a if a != nil and a.actor.found and !$game_party.members.include?(a)
end
end
def member
return @actors[self.index]
end
def refresh
self.contents.clear
calculate_actors
@item_max = @actors.size + 1
for i in 0...@actors.size
rect = item_rect(i)
bitmap = Cache.character(@actors[i].character_name)
sign = @actors[i].character_name[/^[\!\$]./]
if sign != nil and sign.include?('$')
cw = bitmap.width / 3
ch = bitmap.height / 4
else
cw = bitmap.width / 12
ch = bitmap.height / 8
end
n = @actors[i].character_index
src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
if @actors[i].actor.unavailable
self.contents.blt(rect.x, rect.y, bitmap, src_rect, 128)
else
self.contents.blt(rect.x, rect.y, bitmap, src_rect, 255)
end
if @actors[i].actor.required
lock_bitmap = Cache.system("Locked")
self.contents.blt(rect.x + rect.width - lock_bitmap.width,
rect.y + rect.height - lock_bitmap.height,
lock_bitmap, lock_bitmap.rect)
end
end
end
def item_rect(index)
rect = Rect.new(0, 0, 0, 0)
rect.width = (contents.width + @spacing) / @column_max - @spacing
rect.height = 32
rect.x = index % @column_max * (rect.width + @spacing)
rect.y = index / @column_max * 32
return rect
end
end
MfG
Deity
-
Danke für deine Mühe. Ich werde es ausprobieren.
-
Mein Problem steht leider noch an!:(
-
ich weis nicht genau wo ich fragen soll deshalb frag ich einfach drauf los
unzwar wollte ich wissen ob es ein weg gibt das Menü so angezeigt wird:
http://ui12.gamefaqs.com/43/gfs_99493_2_2.jpg
Wäre auch gut wenn mann ein bild oder so einfügen könnte.
Und schon mal danke im voraus.
-
Is gelöst^^
-
@happyman
Ja es gibt einen Weg: Ein Menü scripten
Wenn du willst kann ich es mal probieren
-
nur mal eine ganz kurze frage...ich kann doch bestimmt irgendwo im script das face der Message verschieben kann, also einfach nur rechtsbündig machen...
nur wo?
Merci Magualie
-
Nim einfach das Neo Message System von woratana. Damit hast du auch noch viel mehr Möglichkeiten. (z.B. Namenwindow)
Link zur Demo (http://www.mediafire.com/?2mhjjkk4mte)
-
würde von Neo Message System abraten, da es einige kleinere Bugs drin hat, ein gutes Message System wäre zum Beispiel das von Yanfly oder das von Star
Yanfly Message System (http://wiki.pockethouse.com/index.php?title=Yanfly_Engine_Melody#Custom_Message_Melody) <-- Link
Star Message System (http://www.mediafire.com/?4k46mpk6526mh6b) <-- Link
ich hätte mal ne etwas andre Frage zu Scripts^^"
Gibts nen Scriptbefehl mit dem man die Tile-ID von den Tiles A1-A5 abfragt, sowie wie Tiles B-E
lg flip
-
@FlipelyFlip
Ich versteh deine Frage nicht. was meinst du mit Tile-ID? Steh grad irgendwie auf der Leitung :)
-
naja für den Maker hat jedes einzelne Tile eine eigene ID und ich bräuchte nur den Befehl, mit dem ich jede einzelne ID bekomme, damit ich diese dann weiter verwenden kann^^"
lg flip
-
Also du meinst so:
TileA1 = 1
TileA2 = 2
...
-
nein, sondern zB. ist der erste Teil vom Wasser im Tileset A1 die ID 1, der zweite Teil davon 2, der dritte Teil 3 usw. Bis man unten ankommt, also Ende Tile A4, beginn Tile A5 is man schon bei 260 oder so, nur das Problem, habs mal so gemacht zu zählen, nur iwie stimmts nicht /=
EDIT:
habs rausgefunden, falls sonst noch jemand mal die tile-IDs braucht, er findet sie mit diesem kleinen Scriptpart:
module Flip
VAR1 = 1 # ID der Variabel für die x-Koordinate
VAR2 = 2 # ID der Variabel für die y-Koordinate
VAR3 = 3 # ID der Variabel für den Layer
VAR4 = 4 # ID der Variabel für die Map ID
end
class Scene_Tile
def main
x = $game_variables[Flip::VAR1] # übernimmt den x-Wert des zu bestimmenden Tiles
y = $game_variables[Flip::VAR2] # übernimmt den y-Wert des zu bestimmenden Tiles
i = $game_variables[Flip::VAR3] # kann nur einen Wert zwischen 0 und 2 sein
@map_id = $game_variables[Flip::VAR4] # entspricht der ID von der Map die überprüft werden soll
@map = load_data(sprintf("Data/Map%03d.rvdata", @map_id))
tile_id = @map.data[a, b, c]
p(tile_id)
$scene = Scene_Map.new # damit der p() befehl nicht dauernd wiederholt wird ;)
end
end
lg flip
-
Ich bräuchte Hilfe bei dem Advance face skript! Kann mir jemand für den ordner die Bilddatei als beispiel geben also da wo ich das face reinmachen will!
-
Hey,
wie kann man ein Skript eig. kurzzeitig deaktivieren?
Will es so machen, dass Script X deaktiviert ist, wenn Switch 1 an ist, wenn Switch 1 aber aus ist, dann ist Script X aktiviert.
Wie geht das?
-
ist je nach script unterschiedlich aber meistens reichts wenn man direkt nachm def main folgendes eingibt:
if $game_switches[1] == true
else
blablabla
end
lg flip
-
Scheint nicht zu funktionieren!
Benutze das Requiem ABS 9 - nach
ist
if $game_switches[1] == true
else
blablabla
end
= Copy & Paste oder muss ich da irgendetwas einfügen ?
PS: Im Script gibts kein Def main, wo muss ichs dann einfügen ? ^^
-
okay was willst du dort abschalten? dann kann ichs dir besser erklärn (=
und nein is nich copy-paste ;)
-
Also:
Ich will das, wenn ein bestimmer Switch an ist, der Spieler nicht mehr mit der Waffe angreifen kann... ich benutze nämlich MelekTaus' Realequip und da kann man ja die Waffe ziehen, und ich möchte halt das der Spieler wirklich nur angreifen kann wenn die Waffe gezogen ist ^.^
Die Hotkeys für Zauber und Items sowie die Schadensberechnung sollten allerdings auch bei aktiviertem Switch funktionieren.
Wenn der Switch aber wieder aus ist (heißt bei mir, wenn die Waffe gezogen wurde) soll der Spieler wieder angreifen können.
Wäre wirklich nett wenn du mir dabei helfen könntest :)
-
Hallo!
Ich habe ein Problem wenn ich ein skip title script einfüge
kommt beim simple day & night folgende fehlermeldung:
simpe day + night line 454: NoMethodError occurred
undefined methode `update' for nil:NilClass
-
Hmm füge das Skript unter main ein so das es als erstes kommt dann müsste es klappen
-
hat keiner ne lösung für mein problem ? ^^
bitte, ist wirklich dringend :)
-
Welches KS ist denn das?
Man müsste dieses ja ausprobieren. ^^
MfG
Deity
-
Ich habe ein Problem mit meinenm Menu ....
ich poste mal das Script :
[code#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
# This class performs the menu screen processing.
#==============================================================================
class Scene_Menu < Scene_Base
#--------------------------------------------------------------------------
# * Object Initialization
# menu_index : command cursor's initial position
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
create_command_window
@gold_window = Window_Gold.new(0, 360)
@status_window = Window_MenuStatus.new(160, 0)
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@command_window.dispose
@gold_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
update_menu_background
@command_window.update
@gold_window.update
@status_window.update
if @command_window.active
update_command_selection
elsif @status_window.active
update_actor_selection
end
end
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = "Questlog"
s6 = Vocab::game_end
s7 = "Special"
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, false) # Disable save
end
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 4
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1,2,3 # Skill, equipment, status
start_actor_selection
when 4 # Questlog
$scene = Scene_Questlog.new
when 5 # End Game
$scene = Scene_End.new
when 6 # Menu
$game_temp.common_event_id = 3
end
end
end
#--------------------------------------------------------------------------
# * Start Actor Selection
#--------------------------------------------------------------------------
def start_actor_selec]
Also ich möchte das Man Special anwählen kann und dann ein CE aufgerufen wird
allerdings funtzt das nicht weil wenn ich Special anwähle passiert nichts, wenn ich aber dann das Menu schließe beginnt das CE. Kann mir da Jemand helfen?
(Spechern hab ich bewusst gekickt ^^)
-
Füg mal unter $game_temp.common_event_id = 3folgendes ein:
$scene = Scene_Map.new
Dann müsste es eigentlich funktionieren.
MFG
Deity
-
http://cid-928c1ca35718a838.skydrive.live.com/self.aspx/Scripts/With%20Demo/Requiem%20ABS%209.zip
Requiem ABS 9, das benutze ich ...
Hoffe du kannst mir helfen Deity XD
-
ALso kopier einfach dieses Script unter das Requim ABS
SWITCH_ID_TO_ALLOW_ATTACK = 5
class Game_Player
def attack_with_weapon
if Input.trigger?($Requiem_ABS.attack_key1) && $game_switches[SWITCH_ID_TO_ALLOW_ATTACK]
return if !$Requiem_ABS.allow_attack_with_shield and self.actor.defending
return if self.weapon1_attack_time > 0
@attack_weapon = self.actor.equips[0]
RPG::SE.new(@attack_weapon.shot_se).play if @attack_weapon != nil and @attack_weapon.shot_se != nil
self.anime_attack = 20
self.right_attack_on = true
self.left_attack_on = false
if @attack_weapon != nil and @attack_weapon.ranged?
range_attack_right
self.weapon1_attack_time = @attack_weapon.delay
@hit_time = self.weapon1_attack_time + 15
else
normal_attack_right
self.weapon1_attack_time = self.actor.attack_speed
@hit_time = self.weapon1_attack_time + 15
end
end
if Input.press?($Requiem_ABS.attack_key2)
self.actor.defending = (self.actor.equips[1].is_a?(RPG::Armor) and $Requiem_ABS.allow_shields_graphics)
else
self.actor.defending = false
end
if Input.trigger?($Requiem_ABS.attack_key2)
return if self.weapon2_attack_time > 0
return if !$Requiem_ABS.allow_attack_with_shield and self.actor.defending
@attack_weapon_and_Shield = (self.actor.two_swords_style ? self.actor.equips[1] : self.actor.equips[0])
RPG::SE.new(@attack_weapon_and_Shield.shot_se).play if @attack_weapon_and_Shield != nil and @attack_weapon_and_Shield.shot_se != nil
self.anime_attack = 20
self.right_attack_on = false
self.left_attack_on = true
if @attack_weapon_and_Shield != nil and @attack_weapon_and_Shield.ranged?
range_attack_left
self.weapon2_attack_time = @attack_weapon_and_Shield.delay
@hit_time = self.weapon2_attack_time + 15
elsif self.actor.two_swords_style
normal_attack_left
self.weapon2_attack_time = self.actor.attack_speed
@hit_time = self.weapon1_attack_time + 15
end
end
end
end
Am Anfang kannst du dir die ID des Switches auswählen, der an sein muss, damit man mit der Waffe angreifen kann.
Ich hoffe es funktioniert so, wie du es haben wolltest. ^^
MfG
Deity
-
scheint nicht zu klappen iwi, zumindest greift er garnicht mehr an, auch wenn der switch an ist.. :(
edit:
an deinem script liegts nicht, muss jez grad bisschen rumbasteln damits funktioniert ^^
-
soo, ich bin neu hier und hab eine kleine Frage:
Ich habe ein Event auf meine Map gesetzt, bei der die Hauptfigur automatisch losläuft, sich bei der Hälfte des Weges umdreht und stehen bleibt. Nun soll aber genau dort, wo die Hauptfigur losgelaufen ist, eine andere Person auftauchen. Ich habe es schon versucht mit 2 Seiten in dem Event zu machen, allerdings funktioniert das nicht. Die Person die dann hinzu kommt, läuft von dort aus los, wo meine Hauptfigur dann steht (Hälfte des Weges).
Kann mir jemand helfen und sagen was ich falsch gemacht habe?
~Bitte den "Antworten"-Button klicken, nicht den "Neues Thema"-Button ;)
MfG, Colo
~Sorry das war ich Colo. Wollte den Beitrag direkt verschieben... du warst schneller xD
MfG Rose
-
Hey freakjasi,
Bevor ich zum Thema komme, wollte ich sagen das du hier falsch bist, also im Bereich.
Hier kommen Fragen rein die mit "Scripten" zu tun haben... Dein Problem gehört in den
"Technik" oder "Event" - Bereich.
@Topic
Also ich hab das jetzt so verstanden... Du hast ein Event und wenn der Player drüber
läuft, geht der in irgendeine Richtung, dreht sich um und dort wo er anfing loszulaufen
(Event-Standpunkt) erscheint eine andere Person. Wenn das so ist benötigst du nur
ein Event das 2 Seiten hat... Es müsste wie folgt aussehen.
1 Seite
(http://www.abload.de/img/seite1yc9g.png) (http://www.abload.de/image.php?img=seite1yc9g.png)
2 Seite
(http://www.abload.de/img/seite2cc4p.png) (http://www.abload.de/image.php?img=seite2cc4p.png)
Die "roten" Kreise im Bild zeigen wie es funktioniert, die "grünen" Kreise hingegen zeigen
wie du es machen könnest... kannst du ja individuell einstellen^^
Viel Spaß noch mit dem Maker und wilkommen im Forum ;)
~Cress
-EDIT-
Natürlich kannst du die Richtung wo dein Char hinläuft selbst bestimmen ;)
~Cress
-
--> hab den post draußen gesehen, als ich fertig mit antworten war, wars verschoben -.-
hier also meine antwort:
achja: ich habs so verstanden: spieler geht weg entlang, bleibt stehen dreht sich um. npc erscheint an der position an der spieler gestartet hat und kommt auf spieler zu (das problem, kein event auf spieler start position)
[das hier kann man sich jetzt wegdenken]
also, erstmal.... ganz ruhig man muss ja nicht ganz überstürzen und gleich ein neues thema aufmachen ....
und es auch noch fälschlicherweise als "script hilfe" kennzeichnen ...
aber egal
[/wegdenken]
du brauchst ein event auf seite 2 -> set event location -> du machst also das event das die hauptfigur loslaufen lässt bis dorthin wo die figur sich umdreht, dann sagst du "set event location -> this event -> die anfangskoordinate von dem spieler"
jetzt sagst du "set self swich A = on"
machst eine seite und setzt links ein häckchen bei der "Self swich A = on" bedingung
gibst der zweiten seite ein charakter-bild und lässt ihn loslaufen auf seite 2
wenn du denks das ist aber unübersichtlich, alles in ein event kannst du auch ein neues machen das du dann in event 1 an die spieler-start-position setzt und dan mit dem script:
key = [5, 1, 'A']
$game_self_switches[key] = true
$game_map.refresh
es gilt: key = [map-id, event-id, self-swich]
und dann eben den self swich eines zweiten events auf true setzten der zum erscheinen des events führt
-
thx Deity , du bist klasse
mfg tima
-
Also ich suche jetzt schon ewig rum und hab keine lust mehr, deshalb frage ich euch und hoffe ihr könnt mir helfen, denn ich hab wirklich keine Ahnung mehr...
Also ich suche für mein Spiel ein Script, das einfach nur ein kleines Menü öffnet.
D.h. ich will eine Box(Item) machen, wenn der Spieler die Box benutzt, soll sich diese öffnen und ihren Inhalt zeigen, dieser Inhalt sollen dann andere wichtigere Items sein.
Hoffe das war verständlich...
Merci Magualie05
-
ich hab alles durchgesucht und es in einem anderen forum nur für den xp gefunden, ich suche einen script für eine itemkiste, also so eine wo man sachen hineinpacken und wieder herausholen kann, denn alles rumzuschleppen macht keinen spass ;D
-
@Galadriela
Das hier ist das Vampyr Warehouse Script:
#==============================================================================
# Vampyr Warehouse
#==============================================================================
class Game_Party < Game_Unit
alias vampyr_warehouse_initialize initialize
attr_reader :wgold
def initialize
vampyr_warehouse_initialize
@witems = {}
@wweapons = {}
@warmors = {}
@wgold = 0
end
def witems
result = []
for i in @witems.keys.sort
result.push($data_items[i]) if @witems[i] > 0
end
for i in @wweapons.keys.sort
result.push($data_weapons[i]) if @wweapons[i] > 0
end
for i in @warmors.keys.sort
result.push($data_armors[i]) if @warmors[i] > 0
end
return result
end
def store_gold(n)
@wgold = [[@wgold + n, 0].max, 9999999].min
end
def withdraw_gold(n)
store_gold(-n)
end
def witem_number(item)
case item
when RPG::Item
number = @witems[item.id]
when RPG::Weapon
number = @wweapons[item.id]
when RPG::Armor
number = @warmors[item.id]
end
return number == nil ? 0 : number
end
def store_item(item, n)
number = witem_number(item)
case item
when RPG::Item
@witems[item.id] = [[number + n, 0].max, 99].min
when RPG::Weapon
@wweapons[item.id] = [[number + n, 0].max, 99].min
when RPG::Armor
@warmors[item.id] = [[number + n, 0].max, 99].min
end
n += number
end
def withdraw_item(item, n)
store_item(item, -n)
end
end
#------------------------------------------------------------------------------
class Window_Warehouse < Window_Selectable
def initialize(x, y, width, height)
super(x, y, width, height)
@column_max = 2
self.index = 0
refresh
end
def item
return @data[self.index]
end
def refresh
@data = []
$game_party.witems.each { |i| @data.push(i) }
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
item = @data[index]
if item != nil
number = $game_party.witem_number(item)
rect.width -= 4
draw_item_name(item, rect.x, rect.y)
self.contents.draw_text(rect, sprintf(":%2d", number), 2)
end
end
def update_help
if $scene.is_a?(Scene_VampyrWarehouse) and $scene.description_delay > 0
@help_window.set_text("Item abgeholt")
else
@help_window.set_text(item == nil ? "" : item.description)
end
end
end
#------------------------------------------------------------------------------
class Window_Item < Window_Selectable
def update_help
if $scene.is_a?(Scene_VampyrWarehouse) and $scene.description_delay > 0
@help_window.set_text("Item deponiert")
else
@help_window.set_text(item == nil ? "" : item.description)
end
end
end
#------------------------------------------------------------------------------
class Window_MyGold < Window_Base
def initialize
super(0, 0, 256, 56)
refresh
end
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(contents.rect, "#{Vocab.gold}:")
self.contents.font.color = normal_color
self.contents.draw_text(contents.rect, $game_party.gold, 2)
end
end
#------------------------------------------------------------------------------
class Window_WareGold < Window_Base
def initialize
super(0, 0, 256, 56)
refresh
end
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(contents.rect, "#{Vocab.gold} in der Bank:")
self.contents.font.color = normal_color
self.contents.draw_text(contents.rect, $game_party.wgold, 2)
end
end
#------------------------------------------------------------------------------
class Window_TypeGold < Window_Command
attr_reader :value
attr_reader :commands
def initialize
super(256, ["0", "0", "0", "0", "0", "0", "0"], 7, 0, 0)
@index = 6
end
def reset
for i in 0...@commands.size
@commands[i] = "0"
end
refresh
end
def update
super
value = @commands[@index].to_i
if Input.press?(Input::UP) and Graphics.frame_count % 7 <= 0
Sound.play_cursor
@commands[@index] = (value < 9 ? value+1 : 9).to_s
refresh
elsif Input.press?(Input::DOWN) and Graphics.frame_count % 7 <= 0
Sound.play_cursor
@commands[@index] = (value > 0 ? value-1 : 0).to_s
refresh
end
end
end
#------------------------------------------------------------------------------
class Scene_VampyrWarehouse < Scene_Base
attr_reader :description_delay
def start
super
create_menu_background
@description_delay = 0
@store_gold = false
@withdraw_gold = false
s1 = "Deponieren"
s2 = "Abholen"
s3 = "#{Vocab.gold} deponieren"
s4 = "#{Vocab.gold} abholen"
s5 = "Verlassen"
@command_window = Window_Command.new(208, [s1, s2, s3, s4, s5])
@command_window.x = (544-@command_window.width)/2
@command_window.y = (416-@command_window.height)/2
@command_window.visible = @command_window.active = true
@help_window = Window_Help.new
@help_window.visible = @help_window.active = false
@item_window = Window_Item.new(0, 56, 544, 360)
@item_window.help_window = @help_window
@item_window.visible = @item_window.active = false
@warehouse_window = Window_Warehouse.new(0, 56, 544, 360)
@warehouse_window.help_window = @help_window
@warehouse_window.visible = @warehouse_window.active = false
@typegold_window = Window_TypeGold.new
@typegold_window.x = (544-@typegold_window.width)/2
@typegold_window.y = ((416-@typegold_window.height)/2)
@typegold_window.visible = @typegold_window.active = false
@mygold_window = Window_MyGold.new
@mygold_window.visible = @mygold_window.active = false
@mygold_window.x = (544-@mygold_window.width)/2
@mygold_window.y = ((416-@mygold_window.height)/2)-56
@waregold_window = Window_WareGold.new
@waregold_window.visible = @waregold_window.active = false
@waregold_window.x = (544-@waregold_window.width)/2
@waregold_window.y = ((416-@waregold_window.height)/2)+56
end
def update
super
update_menu_background
@description_delay -= 1 if @description_delay > 0
@command_window.update
@item_window.update
@warehouse_window.update
@help_window.update
@mygold_window.update
@waregold_window.update
@typegold_window.update if @typegold_window.active
if @command_window.active
update_selection
elsif @item_window.active
update_store
elsif @warehouse_window.active
update_whitedraw
elsif @typegold_window.active and @store_gold
update_store_gold
elsif @typegold_window.active and @withdraw_gold
update_whitdraw_gold
end
end
def terminate
super
dispose_menu_background
@command_window.dispose
@item_window.dispose
@warehouse_window.dispose
@help_window.dispose
@typegold_window.dispose
@mygold_window.dispose
@waregold_window.dispose
end
def update_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
Sound.play_decision
@command_window.visible = @command_window.active = false
case @command_window.index
when 0
@item_window.visible = @item_window.active = true
@help_window.visible = @help_window.active = true
@warehouse_window.visible = @warehouse_window.active = false
when 1
@item_window.visible = @item_window.active = false
@help_window.visible = @help_window.active = true
@warehouse_window.visible = @warehouse_window.active = true
when 2
@store_gold = true
@withdraw_gold = false
@typegold_window.visible = @typegold_window.active = true
@mygold_window.visible = @mygold_window.active = true
@waregold_window.visible = @waregold_window.active = true
when 3
@store_gold = false
@withdraw_gold = true
@typegold_window.visible = @typegold_window.active = true
@mygold_window.visible = @mygold_window.active = true
@waregold_window.visible = @waregold_window.active = true
when 4
$scene = Scene_Map.new
end
end
end
def update_store
if Input.trigger?(Input::B)
Sound.play_cancel
@item_window.visible = @item_window.active = false
@help_window.visible = @help_window.active = false
@command_window.visible = @command_window.active = true
elsif Input.trigger?(Input::C)
if @item_window.item == nil
Sound.play_buzzer
elsif @item_window.item.note.include?("Nicht deponierbar")
Sound.play_buzzer
else
Sound.play_decision
$game_party.lose_item(@item_window.item, 1)
$game_party.store_item(@item_window.item, 1)
@item_window.refresh
@warehouse_window.refresh
@description_delay = 90
end
end
end
def update_whitedraw
if Input.trigger?(Input::B)
Sound.play_cancel
@warehouse_window.visible = @warehouse_window.active = false
@help_window.visible = @help_window.active = false
@command_window.visible = @command_window.active = true
elsif Input.trigger?(Input::C)
if @warehouse_window.item == nil
Sound.play_buzzer
else
Sound.play_decision
$game_party.gain_item(@warehouse_window.item, 1)
$game_party.withdraw_item(@warehouse_window.item, 1)
@item_window.refresh
@warehouse_window.refresh
@description_delay = 90
end
end
end
def update_store_gold
if Input.trigger?(Input::B)
Sound.play_cancel
@typegold_window.visible = @typegold_window.active = false
@typegold_window.reset
@mygold_window.visible = @mygold_window.active = false
@waregold_window.visible = @waregold_window.active = false
@command_window.visible = @command_window.active = true
elsif Input.trigger?(Input::C)
return if @typegold_window.commands.to_s.to_i <= 0
if $game_party.gold < @typegold_window.commands.to_s.to_i
Sound.play_buzzer
else
Sound.play_shop
$game_party.lose_gold(@typegold_window.commands.to_s.to_i)
$game_party.store_gold(@typegold_window.commands.to_s.to_i)
@mygold_window.refresh
@waregold_window.refresh
end
end
end
def update_whitdraw_gold
if Input.trigger?(Input::B)
Sound.play_cancel
@typegold_window.visible = @typegold_window.active = false
@typegold_window.reset
@mygold_window.visible = @mygold_window.active = false
@waregold_window.visible = @waregold_window.active = false
@command_window.visible = @command_window.active = true
elsif Input.trigger?(Input::C)
return if @typegold_window.commands.to_s.to_i <= 0
if $game_party.wgold < @typegold_window.commands.to_s.to_i
Sound.play_buzzer
else
Sound.play_shop
$game_party.withdraw_gold(@typegold_window.commands.to_s.to_i)
$game_party.gain_gold(@typegold_window.commands.to_s.to_i)
@mygold_window.refresh
@waregold_window.refresh
end
end
end
end
Das beinhaltet deine Funktion.
-
ich hab es eingefügt ....und nun? grübel...gibt es dafür bitte auch eine anleitung??? ;D
-------------------------------------------------------------------------------------
danke @FlipelyFlip und @PDM haut super hin ;D
-
das script rufste auf mit: $scene = Scene_VampyrWarehouse.new
lg flip
-
Wollte nur mal nachfragen ob wirklich keiner so ein Script kennt, wie ich es mir wünsche...?
Magualie
-
du willst also in nem Item nochmal n Itemmenü haben?
-
JA so meint ers aber ich wüsste da nur ein XP script aber ob das so gehen würde weiss ic hauch nicht
-
Ja so meine ich das...wär halt schön, wenn es sowas geben würde...
Mir würde es auch reichen, wenn es sich einfach nur öffnen würde, sodass man reinschauen kann, also man müsste nicht mal was mit den Items da drinnen machen können, einfach nur, dass man die Box aufmacht und sieht:"aha, das ist da und das auch und das..."
Magualie05
Magualie ist übrignes ein Mädchen...
-
willst du dann die Items normal über den change Item befehl hinzufügen?
wär eilich noch wichtig zu wissen, sonst kann ichs dir nich machen (=
lg flip
-
Also genau gesagt, habe ich vor, dass mein Hauptchara Puppen findet, die wichtig sind, deshalb sollen die nicht einfach so in der normalen Iemliste untergehen, sondern in die Puppenkiste kommen. Wenn sie die Puppen finden sollen die schon über Change Item reinkommen. Wär schön, dass, wenn sie die Puppenkiste öffnet, eine Liste von den Puppen kommt und wenn man über eine geht, dass dann daneben ein Bild von der Puppe erscheint...
Hab schon überlegt ich ob ich das mit einem Common Event mache und dann immer Bilder zeige, je nachdem, welche Puppe schon da ist und welche nicht, würden halt nur wirklich ein Haufen Bilder werden...
Merci Magualie
-
Hey ich bräuchte mal schnell eure Hilfe, undzwar suche ich den Befehl um einen Spielstand zu laden
Sprich ich habe einen Animierten Titelscreen also mit Events und Bildern und bräuchte nur den Befehl um den LAdebildschirm aufzurufen.
Wäre nett wenn mir den jmd sagen könnte
-
$scene = Scene_File.new(false, true, false)
hättest auch im Scene_File script gefunden q:
und wurde schon mal beantwortet im thread ;)
lg flip
-
Hey, hab mal ne Frage.
Ich würde gerne ein normales Window scripten (bin noch beim lernen).
Und jetzt will ich eine Auswahlliste machen in der man sachen auswählen kann (wie show choises) bei denen dann ein Script ausgeführt wird. Ein Window hätte ich schon mal. Nur statt gleich sowas zu programmieren, schaffe ich es nicht mal das das window über ESC abgebrochen wird.
Mein Script:
class Scene_FirstWin < Scene_Base
def start
first_window = Window.new()
first_window.windowskin = Bitmap.new("Graphics/System/Window")
first_window.x = 0
first_window.y = 0
first_window.width = 400
first_window.height = 100
first_window.opacity = 255
first_window.back_opacity = 150
end
end
-
naja so wie das ganze ausguckt, zeigt es dir nur die Grafik an, nich das Window selbst.
Es schneidet dir sozusagen die Grafik zu nem Window zurecht die du angibst.
am besten ist es, wenn du dir meine beiden einsteigertutorials ansiehst fürs scripten.
Was aber hier allgemein das Problem is bei deinem Script:
1.: du hast keine eigene Window-class erstellt. Du rufst das Window_Base sozusagen auf.
2.: du hast nur die start methode definiert, für eine richtige Window-Anzeige braucht es mehr
als das. Da braucht es auch ne update und dispose Methode.
3.: Da du ja ein Auswahlwindow machen willst, guck dir da einfach mal die Scene_Menu an, dort
findest du wirklich alles was du brauchst. Die Standardsachen wurden nicht zum Spaß erstellt (=
Was sonst noch eine große Hilfe beim Scripten sein kann is, die Hilfe-Funktion. Drück im Maker
einfach F1 und dann such nach dem was du brauchst, aber achtung, is alles auf englisch und
oft muss man sich durch zeug durchklicken, dass man zwar nich braucht, aber trotzdem lernt
man auch schon beim durchklicken sachen und findet interessantes zum weiter arbeiten (=
Links zu den Tutorials:
Tutorial 1 (http://www.rpgvx.net/index.php/topic,5193.0.html) <-- link
Tutorial 2 (http://www.rpgvx.net/index.php/topic,5212.msg65636.html#msg65636) <-- link
hoffe ich konnte dir helfen.
lg flip
-
Ich glaub ClixXx meinte was anderes. ^^
Und zwar möchte er das Laden direkt ohne das Menu zu betreten machen. Dafür habe ich mal ein Script geschrieben, schau einfach unter Miniscripts bei mir und zwar unter dem Begriff "On Map Load/Save".
http://www.rpgvx.net/index.php/topic,4945.0.html
MfG
Deity
-
Sooooo, also das was Flip gepostet hatte habe ich gesucht^^
Danke dafür^^
@Deity
Dein Script is auch super habs grade getestet ma kucken ob ichs verwenden werd
-
Also ich will ja nich drängeln, oder so, ne...aber ich kann halt echt leider nicht skripten...ich würd auch das für den XP mal testen, vielleicht funzt ja...
Magualie05
-
das problem ist einfach, dass ich zurzeit noch keinen richtigen Weg gefunden habe, das abzugrenzen /=
und das fürn XP is nich das was du willst, weil das fürn XP erzeugt dir ne Schatztruhe, in die du sachen rein und rausnehmen kannst,
bin aber grad dran diese etwas umzufunktioniern^^"
Aber durch Change Item Eventbefehl wirds auf jeden Fall nich funktioniern /=
lg flip
-
@ClixXx,Flipey
Dann habe ich mich geirt, sry. ^^
@Magualie05
Möchtest du wirklich ein Item, in welchem sich andere befinden, oder einfach nur die Darstellung der Puppen?
MfG
Deity
-
er möchte mit nem Item die Darstellung der Puppen haben (=
also so hab ichs verstanden
-
Danke FlipelyFlip, da hab ich wohl irgendwas falsch verstanden :/
-
Also, wenn sie die Puppen findet, dann sollen die einfach in die Puppenkiste kommen, es würde mir im Endeffeckt auch reichen, wenn man nur die Übersicht sehen könnte, welche Puppen sie schon gefunden hat...
Magualie05
-
Magualie05, probier einfahc mal folgendes aus:
http://pastebin.com/raw.php?i=3wgwCvDS
Ich habs geschrieben, ich denke, dass es das ist, was du gesucht hast.
Die Bilder der Puppen müssen in den Ordner Pictures kopiert werden und den selben Namen wie die Items ingame haben, um angezeigt zu werden.
Am Anfang des Scriptes, kannst du die Positionen und GHrößen der Fenster festlegen.
MfG
Deity
-
Hey vielen vielen Dank, Deity, das ist genauso, wie ich es mir vorgestellt hab! XDXDXDXDXD
Magualie05
Edit: Äh...Aber irgendwie ändert der mir da die Schriftarten etwas ab...kann mich aber auch damit anfreunden, wenns nich zu ändern is...
Also bei der Klasse des Charas und bei der Beschreibung der Puppe ist irgendwie "dünner" und etwas kleiner als die normale...aber wie gesag, kann ich mich auch damit anfreunden, wenn mans nich ändern kann...
-
Das liegt daran, dass der Platz begrenzt ist, aber der Text lang. Dann questscht er diesen Text zusammen. Du könntest ja die Größenverhältnisse ändern. Anonsten könnte man auch die Schriftart kleiner machen.
MFG
Deity
-
Kannst du mir vielleicht noch sagen, was ich umschreiben muss, damit das Puppenbild über dem Window mit den Puppennamen ist?
Magualie05
-
Die Größen kannst du doch alle in dem Script selbst ganz oben verändern. ALso die Koordinaten und die Größen halt, damit lässt sicht das Fenster beliebig verändern.
MfG
Deity
-
Ja...nein...ich meinte, das überschneide, im Moment ist die Liste halt "über" dem Bild...Weil, wenn ich die Liste schmaler mache, dann schreibt er mir die Anzahl der Puppe über deren Namen...Kann ich das irgendwie machen, das die Anzahl der Puppen weg ist?
Magualie05
-
http://pastebin.com/raw.php?i=YNQh3pi3
Ja probier mal das Script aus. ;)
Also das alte mit diesem ersetzen.
MfG
Deity
-
Also, ich zeig dir jetzt mal mein Problem:
(http://www.abload.de/thumb/unbenannt3w5ev.png) (http://www.abload.de/image.php?img=unbenannt3w5ev.png)
Wenn ich das Feld mi der Lsite schmaler mache, dann wird auch der Cursor so eng. Wenn ich es dann so groß mache, dass der Cursor normal ist, dann fänd ich es gu, wenn das Bold vor der Liste ist und nicht dahinter.
Ich hoffe man erkennt auf dem Bild, was ich meine.
Magualie05
PS: Ich find das Skript echt klasse, tut mir total leid, dass ich immer wieder was zu meckern hab...ehrlich...
-
Kein Problem. ;)
Dafür haben wir auch eine Lösung:
http://pastebin.com/raw.php?i=fBEfkx1v
MfG
Deity
-
Okay!
Also jetzt nochmal: VIELEN VIELEN DANK! XDXDXDXD
Es ist jetzt zu 100% genauso wie ich es mir vorgestellt hab!
Merci beaucoup Magualie05 ;)
-
kann sein das es hier schon mal stand (bin zu faul 29 seiten durchzulesen)
aber wie schaltet man einen Switch per script an?
habs so versucht.
if Input::Left
if Switch 8 = true
Switch 8 = false
Switch 10 = true
elsif Switch 10 = true
Switch 10 = false
Switch 8 = true
end
if Input::Right
if Switch 8 = true
Switch 8 = false
Switch 10 = true
elsif Switch 10 = true
Switch 10 = false
Switch 8 = true
end
(Bin noch am lernen)
-
Hi,
um einen Switch via Script auszuschalten, musst du auf die $game_switches zugreifen. Dann brauchst du die ID des Switches:
$game_switches[id] = true/false
Self Switches hingegen, benötigen mehr. Dafür musst du die ID des Events,Map ID und Switchbezeichnung benutzen. Dafür solltest du dich unter Game_SelfSwitches umschauen.
Und Inputabfragen werden von der Syntax ebenfalls anders aufgebaut.
=> if Input.trigger?(Input::LEFT)
MfG
Deity
-
ah ok. danke dir für die antwort
-
Hätt mal ne frage zu meinem script hier:
class Scene_Gilde < Scene_Base
def start
super
create_menu_background
@viewport = Viewport.new(0, 0, 544, 416)
draw_currency_value($game_variables(61), 4, 0, 120)
end
def return_scene
$scene = Scene_Menu.new(6)
end
def update
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
end
end
end
also es soll einfach ein menüpunkt sein,
bei dem ein bildschirmfüllendes fenster erscheint,
indem game variablen und text angezeigt wird,
aber irgendwie klappt das net gan :(
Post zusammen gefügt: November 13, 2010, 19:26:44
Sry für Doppelpost,
aber ist hier keiner mehr on der scripten kann?
Oder will mir nur einfach keiner helfen.
ich denke das wird jetzt kein extrem schwieriger fall sein,
und jeder der schon nur ein bisschen die regeln versteht
beim scripten kann mir sicher helfen.
brauche wirklich hilfe!
:(
-
Hallo alle zusammen^^
Ganz kurze dringende Frage:
Hat jemand zufälligerweise noch den GIF-Player von Erzengel??? und wenn ja kann ich den bitte per PM oda so bekommen? °.° BITTE BITTE BITTE!! :(
-
Hi,
in diesem Thema: NETVX (http://www.rpgvx.net/index.php?PHPSESSID=aef2fb79568f97be16ef6e0bc6eaccb9&topic=2593.0)
Wird ja das NETVX Script vorgestellt.
Was braucht man dazu damit das ganze Online läuft?
-
Ich zitiere aus dem Thread:
DU BRAUCHT EINEN ROOT SERVER UM DAS SKRIPT ZU BENUTZEN, webspace und domain
Noah3 hatte mal aber ein Tutorial darüber gemacht, frag ihn doch einfach mal, wie das genau funktioniert.
-
Ich hatte auch en Tutorial drüber da Noa3 seines gelöscht hatte
such einfach mal in der Tutorialsektion müsste auf der 2. seite sein
-
Ich würde gerne Woratanas 2 Players Engine benutzen nur finde ich das nie.
Und wenn ich das hier im forum suche und dann auf den demolink klicke komm ich nicht zum Skript ... hat jemand das skript noch unverändert?
-
Mir ist folgendes aufgefallen:
Wenn man unter "Game_Party" die maximale Anzahl der Mitglieder erhöht (z.B. auf 5), zeigen diverse Menüpunkte den 5. Spieler nicht mehr an.
Er ist zwar auswählbar, aber man sieht ihn nicht im Screen.
D.h. es fehlt ein Scroller für alle Menüpunkte, die Partymitglieder anzeigen.
Gibt es hierfür schon eine Überarbeitung, oder kann es jemand auf die Schnelle korrigieren?
Vielen Dank! :haha_zwinker:
-
Nabend Freunde (:
Ich suche ein Skript, das folgende Funktionen, die ein [desc=AddEquipmentOptions]KGC-Skript[/desc] für Ausrüstung bietet für Skills zugänglich macht. Meines Wissens gibt es sowas bei der Battle engine Melody, die ich aber nicht nutze, nicht habe und nicht weiß, ob dieses (Teil-)skript ohne die komplette Engine lauffähig ist.
#_/ <attack element ElementID>
#_/ Adds additional elements to the character's default attack.
#_/
#_/ <plus state StateID>
#_/ Adds additional status effects to the character's default attack.
Wäre super, wenn wer helfen könnte.
~Domi
Edit: Natürlich sollen diese Skills Statusänderungen hervorrufen, die das bewirken, sry falls das nicht ganz klar ist x.x
-
Eine sehr kleine Frage und zwar wie war der Scriptbefehl um das Ladenmenü zu öffnen? Hab Skip Title Script drin, dennoch muss das Game von meinem Titelbild aus wieder geladen werden ^^.
-
$scene = Scene_File.new(false, true, false)
hier bitte :3
-
der is ganz einfach (=
$scene = Scene_File.new(false,true,false)
und @Domin0e:
ich versteh deine frage nich richtig oO
-
Brauche nochmal hilfe ^^.
Wenn ich das eingebe "$scene = Scene_File.new(false, true, false)" und mein Game Laden möchte kommt ein Fehler im Requiem SBABS Basic Script.
(http://img812.imageshack.us/img812/8792/fehlerimscript.png)
-
Könntest du das Script bitte mal posten? Habs nämlich grade nicht zur Hand :haha:
-
Da ich probleme habe das Script hier reinzustellen kA warum bei mir geht das mit dem Code nicht geht hab ich es mal hochgelden.
http://www.mediafire.com/?2pqjmas7nkw6g94 (http://www.mediafire.com/?2pqjmas7nkw6g94)
-
Hay,
geh in die Zeile wo folgendes steht:
$scene.hud_window2.refresh
und änder es in:
$scene.hud_window2.refresh if !$scene.hud_window2.nil?
Das müsste das Problem beheben.
MfG
Deity
-
Also hab es umgeändert und nun kommt das :
(http://img31.imageshack.us/img31/562/neuerfehler.png)
-
Ok,
ersetz die Zeile damit:
$scene.hud_window2.refresh if $scene.is_a?(Scene_Map)
MfG
Deity
-
Ja das geht jetzt, danke Deity ^^.
-
Ich bräuchte Hilfe zu dem Nightlights Skript von Hellminor :hehe:
Ich benutze es erst seit kurzem...für das Licht funktioniert es...es sieht schön aus :haha:
allerdings, wenn ich (in paint.NET) einen Schatten platziere, dann ist der auch über dem Charakter im Game später (an manchen Stellen ist das ja normal...aber hier im Screen, da wo der Char ist
Screen:
(http://www.npshare.de/files/6bcf7089/-.-.jpg)
mach ich was falsch...oder geht das nicht anders :what:
Edit: der Shadow Remover geht iwie nicht mehr-.-
-
ich hab ein problem und zwar nutze ich das tag nacht script von onkel hell (simple day and night) ich habe alles eingestellt und es funktioniert soweit alles wunderbar bis auf ein komisches problem wenn in meiner anzeige z.b. frühling sonntag und vierte woche angezeigt wird dann sind aber (mit f9) diese switche an winter samstag und die zweite woche. :hehe: ...ich kann mir nicht erklären was ich falsch gemacht habe oder muß man damit leben?
-
mach ich was falsch...oder geht das nicht anders :what:
Edit: der Shadow Remover geht iwie nicht mehr-.-
Rat: Das Skript ist höchst gefährlich, wenn man sich nicht auskennt. Füge das Skript mal direkt unter Materials ein, also vor allen anderen Benutzer-Skripts. sonst wüsste ich auch nicht, wie dir zu helfen ist.
-
@Herendil
Füge das Skript mal direkt unter Materials ein, also vor allen anderen Benutzer-Skripts.
Das hat leider nicht funktioniert, und es war auch vorher schon als erstes...
Ich habs mal als Test unter alle anderen eingefügt...es funktioniert!! :haha:
Trotzdem danke für die Hilfe, jetzt werden meine Maps noch schöner :grimace:
-
Hallo Leute,
ich mache für mein Spiel ein Pausenmenü mit Bildern, aber im Hintergrund läuft das Spiel immer weiter. Ich suche daher nach einem Callskript, das wenn ich Pause mache ingame das dann alles wirklich Pausiert.
Ich hoffe ihr versteht was ich meine^^
MfG Atego
EDIT: Will mir keiner helfen oder wisst ihr es nicht?
-
Edit: Ok habs selber herausgefunden. unter Window_Battlestatus
Originale Message:
Wo kann ich die x und y Koordinaten für die Statussymbole im Kampfsystem verändern
Z.b Wenn man vergiftet wird, ist ja dann dieses Blubber Symbol zwischen dem Namen und der hp. Ich will diese Symbole etwas nach links verschieben.
Was und wo muss ich etwas im Skript ändern?
-
Ich bräuchte mal Hilfe bei meinem Battle HUD q.q
und zwar hab ich das Problem das HP/MP Balken nicht angezeigt wird, so wie die Nummern
(im Grunde wird nur das HUD_Actor angezeigt und sonst nichts) Grafiken sind alle vorhanden bzw die, die ich nicht brauche transparent
Hier ist das Skript das ich verwende
#==============================================================================
# ?–? Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Selectable
# Skin File name
BTSKIN_00 = "Btskin_main" # Main Skin
BTSKIN_01 = "Btskin_hp" # HP(Gauge)
BTSKIN_02 = "Btskin_mp" # MP(Gauge)
BTSKIN_04 = "Btskin_n00" # HP(Numbers)
BTSKIN_05 = "Btskin_n00" # MP(Numbers)
BTSKIN_03 = "Btskin_state" # State
# Skin coordinates[ x, y]
BTSKIN_B_XY = [-179, -17] # ?Ÿ??–??™
BTSKIN_00XY = [-35, 17] #Main Skin
BTSKIN_01XY = [-19, 25] # HP(gauge)
BTSKIN_02XY = [-15, 41] # MP(gauge)
BTSKIN_04XY = [ 24, 16] # HP(numbers)
BTSKIN_05XY = [ 28, 35] # MP(numbers)
BTSKIN_03XY = [ 23, 31] # ?‚??ƒ†?ƒ??ƒˆ?‚??‚??ƒ?
BTSKIN_06XY = [ 66, -8] # ?‚??ƒ†?ƒ??ƒˆ
# Various Settings
BTSKIN_01GS = 4 # HP Gauge Speed (Low values are fast)
BTSKIN_02GS = 6 # MP Gauge Speed(Low values are fast)
BTSKIN_04SS = 8 # HP Rolling Numbers Speed(Low values are fast)
BTSKIN_05SS = 2 # MP Rolling Numbers Speed(Low values are fast)
BTSKIN_04NS = 4 # HP Maximum Digits
BTSKIN_05NS = 4 # MP Maximum Digits
BTSKIN_06WH = [24,24] # [State Width, Height]
BTSKIN_06SC = 3 # State Icon Scroll Speed
# (Values close to 1 are fast)
# ?ƒ??ƒˆ?ƒ??‚??ƒ†?ƒ??‚??‚???™
def set_xy
@x = []
@y = []
for i in 0...$game_party.members.size
x = (i * 153) + 40
y = 3
@x[i] = x + 176#+ STRRGSS2::ST_SX
@y[i] = y + 16#+ STRRGSS2::ST_SY
end
end
# ??š?‡?‰€?“?“??
@@f = false
#--------------------------------------------------------------------------
# ?˜… ?‚??‚??ƒ??‚??‚?
#--------------------------------------------------------------------------
alias initialize_str33 initialize
def initialize(f = false)
initialize_str33
unless @@f
@f = @@f = true
else
@f = false
end
set_xy
@s_sprite = []
@s_party = []
@s_lv = []
@opacity = 255
self.contents.dispose
self.create_contents
self.back_opacity = 0
self.opacity = 0
#@column_max = $game_party.actors.size
@viewport = Viewport.new(0, 480-128, 640, 128)
@hpgw = (Cache.system(BTSKIN_01)).width
@mpgw = (Cache.system(BTSKIN_02)).width
@viewport.z = self.z - 1
@state_opacity = []
@item_max = $game_party.members.size
return unless @f
for i in 0...@item_max
draw_item(i)
end
update
end
#--------------------------------------------------------------------------
# ?—? ?ƒ??ƒ•?ƒ??ƒƒ?‚??ƒ???—
#--------------------------------------------------------------------------
def refresh
# :-)
end
#--------------------------------------------------------------------------
# ?—? ?‚??ƒ†?ƒ??ƒˆ???”?
#--------------------------------------------------------------------------
def draw_actor_state(actor)
icon = Cache.system("Iconset")
w = actor.states.size * 24
w = 24 if w < 1
bitmap = Bitmap.new(w, BTSKIN_06WH[1])
count = 0
for state in actor.states
icon_index = state.icon_index
x = 24 * count
rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
bitmap.blt(x, 0, icon, rect)
count += 1
end
return bitmap
end
#--------------------------------------------------------------------------
# ?—? ??‰??œ?ˆ?
#--------------------------------------------------------------------------
def name_bitmap(actor)
bitmap = Bitmap.new(100, 24)
bitmap.font.size = 20
bitmap.draw_text_f(-4, 40, 100, 24, actor.name)
return bitmap
end
#--------------------------------------------------------------------------
# ?—? ?‚??ƒ†?ƒ??ƒˆ?•??–?—
#--------------------------------------------------------------------------
def state_size(actor)
return actor.states.size
end
#--------------------------------------------------------------------------
# ?—? ?‚??‚??ƒ†?ƒ??œ?ˆ?
#--------------------------------------------------------------------------
def draw_item(index)
return unless @f
actor = $game_party.members[index]
#
@s_sprite[index] = []
s = @s_sprite[index]
# ?ƒ??‚??ƒ??‚??‚??ƒ?
s[0] = Sprite.new(@viewport)
s[0].bitmap = Cache.system(BTSKIN_00)
s[0].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_00XY[0]
s[0].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_00XY[1]
s[0].z = 0
# HP
s[1] = Sprite.new(@viewport)
s[1].bitmap = Cache.system(BTSKIN_01)
s[1].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_01XY[0]
s[1].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_01XY[1]
s[1].z = 4
w = s[1].bitmap.width
h = s[1].bitmap.height / 2
s[1].src_rect.set(0, 0, w, h)
s[2] = Sprite.new(@viewport)
s[2].bitmap = Cache.system(BTSKIN_01)
s[2].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_01XY[0]
s[2].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_01XY[1]
s[2].z = 3
s[2].src_rect.set(0, h, w, h)
s[11] = 96
s[6] = Sprite_strNumbers.new(@viewport, BTSKIN_04, BTSKIN_04NS)
s[6].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_04XY[0]
s[6].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_04XY[1]
s[6].z = 5
s[13] = actor.hp
s[6].update(s[13])
# MP
s[3] = Sprite.new(@viewport)
s[3].bitmap = Cache.system(BTSKIN_02)
s[3].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_02XY[0]
s[3].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_02XY[1]
s[3].z = 4
w = s[3].bitmap.width
h = s[3].bitmap.height / 2
s[3].src_rect.set(0, 0, w, h)
s[4] = Sprite.new(@viewport)
s[4].bitmap = Cache.system(BTSKIN_02)
s[4].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_02XY[0]
s[4].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_02XY[1]
s[4].z = 3
s[4].src_rect.set(0, h, w, h)
s[12] = 56
s[7] = Sprite_strNumbers.new(@viewport, BTSKIN_05, BTSKIN_05NS)
s[7].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_05XY[0]
s[7].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_05XY[1]
s[7].z = 5
s[14] = actor.mp
s[7].update(s[14])
# ?‚??ƒ†?ƒ??ƒˆ
s[5] = Viewport.new(0, 0, BTSKIN_06WH[0], BTSKIN_06WH[1])
s[5].rect.x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_06XY[0] + @viewport.rect.x
s[5].rect.y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_06XY[1] + @viewport.rect.y
s[5].z = @viewport.z + 1
s[8] = Sprite.new(@viewport)
s[8].bitmap = Cache.system(BTSKIN_03)
s[8].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_03XY[0]
s[8].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_03XY[1]
s[8].z = -2
s[9] = Plane.new(s[5])
s[9].bitmap = draw_actor_state(actor)
s[10] = state_size(actor)
# ??œ???‚??ƒ†?ƒ??‚??‚??
s[11] = ((@hpgw * (actor.hp / (actor.maxhp * 1.0))) + 1).truncate
if actor.maxmp != 0
s[12] = ((@mpgw * (actor.mp / (actor.maxmp * 1.0))) + 1).truncate
else
s[12] = 0
end
s[15] = Sprite.new(@viewport)
s[15].bitmap = name_bitmap(actor)
s[15].x = @x[index] + 4
s[15].y = @y[index] + 2
s[15].z = 255
s[1].src_rect.width = s[11]
s[2].src_rect.width = s[11]
s[3].src_rect.width = s[12]
s[4].src_rect.width = s[12]
s[6].update(s[13])
s[7].update(s[14])
# ???–?
for l in [0,1,2,3,4,8,9,15]
s[l].opacity = 0
end
for l in [6,7]
s[l].o = 0
end
# ?ƒ…??˜?†?(actor, x, y, size = 151)
@s_lv[index] = actor.level
@s_party[index] = [actor.name, actor.hp, actor.maxhp,
actor.mp, actor.maxmp, actor.states]
#
x = index * 61 - 20
y = 90
s[16] = Sprite.new
s[16].bitmap = Cache.system("HUD_" + actor.name)
s[16].x = @x[index] + 10 - 227
s[16].y = @y[index] + -4 + 215
s[16].z = 0
end
#--------------------------------------------------------------------------
# ?—? ?‚??ƒ–?‚??‚??‚??ƒˆ?–‹?”?
#--------------------------------------------------------------------------
def dispose
super
return unless @f
for i in 0...@s_sprite.size
for l in [0,1,2,3,4,8,9,15,16]
@s_sprite[i][l].bitmap.dispose
@s_sprite[i][l].dispose
end
for l in [5,6,7]
@s_sprite[i][l].dispose
end
end
@@f = false
end
#--------------------------------------------------------------------------
# ?—? ?ƒ•?ƒ??ƒ??ƒ??›??–?
#--------------------------------------------------------------------------
def update
super
return unless @f
for i in 0...@s_sprite.size
s = @s_sprite[i]
a = $game_party.members[i]
m = @s_party[i]
@state_opacity[i] = 0 if @state_opacity[i] == nil
# ??€??˜Ž??‚??ƒƒ?ƒ—
@state_opacity[i] += 8
if @opacity < 272
@opacity += 8
for l in [0,1,2,3,4,15]
s[l].opacity = @opacity
end
for l in [6,7]
s[l].o = @opacity
end
end
# ??‰??›??–?
if a.name != m[0]
s[15].bitmap.dispose
s[15].bitmap = name_bitmap(a)
m[0] = a.name
end
# HP/MP?›??–?
update_hp(s,a,m)
update_mp(s,a,m)
# ?‚??ƒ†?ƒ??ƒˆ?›??–?
if s[10] > BTSKIN_06WH[0] / 24 and (Graphics.frame_count % BTSKIN_06SC) == 0
s[9].ox += 1
end
if s[10] > 0 and @state_opacity[i] < 272
for l in [8,9]
s[l].opacity = @state_opacity[i]
end
end
if a.states != m[5]
m[5] = a.states
s[9].ox = 0
s[9].bitmap.dispose
s[9].bitmap = draw_actor_state($game_party.members[i])
s[10] = state_size($game_party.members[i])
@state_opacity[i] = 0
for l in [8,9]
s[l].opacity = @state_opacity[i]
end
end
end
end
#--------------------------------------------------------------------------
# ?—? ?ƒ•?ƒ??ƒ??ƒ??›??–? (HP)
#--------------------------------------------------------------------------
def update_hp(s,a,m)
# HP??‚‹??‚‹
if a.hp != s[13]
c = 0; c = 1 if a.hp < a.maxhp / 4; c = 2 if a.hp == 0
if s[13] > a.hp
s[13] -= BTSKIN_04SS
s[13] = a.hp if s[13] < a.hp
else
s[13] += BTSKIN_04SS
s[13] = a.hp if s[13] > a.hp
end
s[6].update(s[13], c)
end
# HP
if a.hp != m[1]
s[11] = ((@hpgw * (a.hp / (a.maxhp * 1.0))) + 1).truncate
m[1] = a.hp
end
sr = s[1].src_rect
if sr.width != s[11]
sp = BTSKIN_01GS
sr.width = (s[11] + (s[1].src_rect.width * (sp - 1))) / sp
sr.width = 2 if sr.width <= 1 and a.hp > 0
end
sr = s[2].src_rect
sp = 2
if sr.width != s[1].src_rect.width and (Graphics.frame_count % sp) == 0
if sr.width < s[1].src_rect.width
sr.width += 1
else
sr.width -= 1
end
end
sr.width = 2 if sr.width <= 1 and a.hp > 0
end
#--------------------------------------------------------------------------
# ?—? ?ƒ•?ƒ??ƒ??ƒ??›??–? (MP)
#--------------------------------------------------------------------------
def update_mp(s,a,m)
# MP??‚‹??‚‹
if a.mp != s[14]
c = 0; c = 1 if a.mp < a.maxmp / 4
if s[14] > a.mp
s[14] -= BTSKIN_05SS
s[14] = a.mp if s[14] < a.mp
else
s[14] += BTSKIN_05SS
s[14] = a.mp if s[14] > a.mp
end
s[7].update(s[14], c)
end
# MP
if a.mp != m[3]
if a.maxmp != 0
s[12] = ((@mpgw * (a.mp / (a.maxmp * 1.0))) + 1).truncate
else
s[12] = 0
end
m[3] = a.mp
end
sr = s[3].src_rect
if sr.width != s[12]
sp = BTSKIN_02GS
sr.width = (s[12] + (s[3].src_rect.width * (sp - 1))) / sp
sr.width = 2 if sr.width <= 1 and a.mp > 0
end
sr = s[4].src_rect
sp = 2
if sr.width != s[3].src_rect.width and (Graphics.frame_count % sp) == 0
if sr.width < s[3].src_rect.width
sr.width += 1
else
sr.width -= 1
end
end
sr.width = 2 if sr.width <= 1 and a.mp > 0
end
end
#==============================================================================
# ?–? Sprite_strNumber
#==============================================================================
class Sprite_strNumber < Sprite
#--------------------------------------------------------------------------
# ?—? ?‚??ƒ–?‚??‚??‚??ƒˆ?ˆ??œŸ?Œ–
#--------------------------------------------------------------------------
def initialize(v, gra, n = 0)
@n = n
super(v)
self.bitmap = Cache.system(gra)
@w = self.bitmap.width/10
@h = self.bitmap.height/3
self.src_rect = Rect.new(@n*@w, 0, @w, @h)
end
#--------------------------------------------------------------------------
# ?—? ?ƒ•?ƒ??ƒ??ƒ??›??–?
#--------------------------------------------------------------------------
def update(n = -1, c = 0)
@n = n
self.src_rect.x = @n*@w
self.src_rect.y = c*@h
end
end
#==============================================================================
# ?–? Sprite_strNumbers
#==============================================================================
class Sprite_strNumbers
attr_accessor :x
attr_accessor :y
attr_accessor :z
attr_accessor :o
#--------------------------------------------------------------------------
# ?—? ?‚??ƒ–?‚??‚??‚??ƒˆ?ˆ??œŸ?Œ–
#--------------------------------------------------------------------------
def initialize(v, gra, n = 4, s = 0)
@n = n # ??•?
@x = 0
@y = 0
@z = 0
@o = 255
@sprite = []
# ?—?–“??š
b = Cache.system(gra)
@s = b.width / 10 - s
# ?‚??ƒ—?ƒ??‚??ƒˆ?œ?ˆ?
for i in 0...n
@sprite[i] = Sprite_strNumber.new(v, gra)
end
update
end
#--------------------------------------------------------------------------
# ?—? ?ƒ•?ƒ??ƒ??ƒ??›??–?
#--------------------------------------------------------------------------
def update(v = 0, c = 0)
val = []
# ?•??€??‚’?…??ˆ—???
for i in 0...@n
if (10 ** (i)) == 0
val[i] = v % 10
else
val[i] = v / (10 ** (i)) % 10
end
end
val = val.reverse
# ?…ˆ??0?‚’?–?‚Š?™??
for i in 0...@n
if val[i] == 0 and @n != i + 1
val[i] = -1
else
break
end
end
# ?‚??ƒ—?ƒ??‚??ƒˆ?›??–?
for i in 0...@n
@sprite[i].update(val[i], c)
@sprite[i].x = @x + (i * @s)
@sprite[i].y = @y
@sprite[i].z = @z
@sprite[i].opacity = @o
end
end
#--------------------------------------------------------------------------
# ?—? ??€??˜Ž????”?
#--------------------------------------------------------------------------
def o=(val)
@o = val
for i in 0...@n
@sprite[i].opacity = @o
end
end
#--------------------------------------------------------------------------
# ?—? ?‚??ƒ–?‚??‚??‚??ƒˆ?–‹?”?
#--------------------------------------------------------------------------
def dispose
for i in 0...@sprite.size
@sprite[i].bitmap.dispose
@sprite[i].dispose
end
end
end
#==============================================================================
# ?–? Bitmap
#==============================================================================
# This script controls the shadow behind actor names for *STR33g1_Battle Status.
class Bitmap
#--------------------------------------------------------------------------
# ?—? ?–‡?—??–?‚Š??”?
#--------------------------------------------------------------------------
def draw_text_f(x, y, width, height, str, align = 0, color = Color.new(64,32,128))
shadow = self.font.shadow
b_color = self.font.color.dup
font.shadow = true
font.color = color
draw_text(x + 1, y, width, height, str, align)
draw_text(x - 1, y, width, height, str, align)
draw_text(x, y + 1, width, height, str, align)
draw_text(x, y - 1, width, height, str, align)
font.color = b_color
draw_text(x, y, width, height, str, align)
font.shadow = shadow
end
def draw_text_f_rect(r, str, align = 0, color = Color.new(64,32,128))
draw_text_f(r.x, r.y, r.width, r.height, str, align = 0, color)
end
end
Derzeit schaut das ganze so bei mir aus
(http://img715.imageshack.us/img715/6463/hud.png)
Was mich auch interessieren würde wo ich die Koordinaten des Kastens verändern kann, also nicht dem, wo die Befehle drin stehen, sondern mit dem ich unten meinen Charakter auswählen kann
-
hast du auch die grafiken für die HP & MP Balken mitkopiert? (=
-
Hat sich erledigt, danke noch mal für deine Hilfe FlipelyFlip! '3'
-
Ich wollte dieses Battlesystem verwenden
http://www.rpgmakervx.net/index.php?showtopic=9727&st=0&p=90685&#entry90685 (http://www.rpgmakervx.net/index.php?showtopic=9727&st=0&p=90685&#entry90685)
Jetzt meine Frage was muss ich hinzufügen oder umschreiben,
dass daraus ein Battlesystem mit einer Zeitlinie wird?
Der Kampf sollte weiterhin auf der Karte stattfinden und die
Charaktere dürfen sich die ganze Zeit bewegen.
Bei Ablauf der Zeit erfolgt der Angriff.
Würde mich freuen, wenn mir jemand helfen könnte.
-
Ich möchte Leviathans Frage nicht in den Schatten stellen, also zitiere ich sie hier nochmal xD.
Ich wollte dieses Battlesystem verwenden
[url]http://www.rpgmakervx.net/index.php?showtopic=9727&st=0&p=90685&#entry90685[/url] ([url]http://www.rpgmakervx.net/index.php?showtopic=9727&st=0&p=90685&#entry90685[/url])
Jetzt meine Frage was muss ich hinzufügen oder umschreiben,
dass daraus ein Battlesystem mit einer Zeitlinie wird?
Der Kampf sollte weiterhin auf der Karte stattfinden und die
Charaktere dürfen sich die ganze Zeit bewegen.
Bei Ablauf der Zeit erfolgt der Angriff.
Würde mich freuen, wenn mir jemand helfen könnte.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Meine Frage ist nur ganz kurz:
Ich möchte ein Event erstellen mit folgendem Inhalt:
Wenn ein spezifischer Window Command selektiert ist, möchte ich, dass ein dazu gehöriges Picture erscheint.
D.h. Command 1 lässt Picture 1 erscheinen, Command 2 Picture 2 usw...
Dies impliziert auch, dass das (dauerhafte) Drücken einer Taste (hoch, runter) ausgeschlossen wird; es muss auf den Commands basieren und nicht auf den Tasten und wie oft man diese betätigt.
____________________________________
-
Zu Leviathan:
Eine solche Anpassung ist sehr zeitaufwendig und ich glaube niemand macht sowas freiwillig. Ein neues System zu suchen wäre einfacher
Zu Franky:
Das ist einfach. Window_Command verfügt über die Variable "@index". Das heißt, dass du im Event abfragen kannst, ob bspw. @window_command.index == 1 ist. Den Rest solltest du schaffen^^
-
Ich komme nicht weiter, jetzt hoffe ich auf eure Hilfe.
Folgendes Problem:
Ich verwende dieses Menu-Script: http://www.rpgmakervx.net/index.php?showtopic=30069&st=0&p=277139&#entry277139 (http://www.rpgmakervx.net/index.php?showtopic=30069&st=0&p=277139&#entry277139)
Unten Rechts wird die Spielzeit angezeigt (sieht man auf dem Screen wenn man den Link anklickt)
Nun, ich will das Icon verändern und statt der Spielzeit eine Variable anzeigen lassen.
In meinem Fall Anzahl Skill-Points, aber das ist nebensächlich.
Das wars dann auch schon.
Würde mich über Hilfe rießig freuen ^_^
Das gehört nicht in VX Allgemein, sondern hierher.
~Kyo
-
ich hab da auch mal ne ganz kurze und einfache frage. ich will in bei einer condition abfragen ob gerade ein SE abgespielt wird. mit welchen befehl stelle ich das an?
big thx im vorraus :)
-
@Evil95
Da müsstest du über Events und Schalter arbeiten.
Ein Event das parallel läuft und als Bedingungen einen Schalter hat. Das Event soll die SE abspielen und sich danach wieder selber Abschalten durch [Schalter Beispiel] Aus.
-SE abspielen
-Wait 120 Frames
-[Schalter Beispiel] Aus
In nem anderen Event das parallel läuft, kannst dann die Branch machen "Wenn Schalter an, dann...;Ansonsten..." ... und eben einfügen was passieren soll...
Und eben ein Event, das den [Schalter Beispiel] aktiviert. Durch berührung oder Interaktion oder zufall... wie dus halt haben willst.
-
das geht zu 100% per rgss2...ich brauch ja nur den befehl :D
-
guck in der makerhilfe nach, blöd gesagt, aber soviel ich weiß, gibts dafür leider keinen befehl und man müsste ihn erst erstellen^^"
lg flip
-
in der hilfe habe ich schon geguckt...der befehl um SEs abzuspielen lautet Audio.se_play. ich dachte conditional branch script "Audio.se_play" würde klappen...aba da kommt nur ein fehler
"Wrong # of arguments (1 for 0)"
-
kein wunder, damit sagst du dem maker über RGSS ja auch, dass eine se abgespielt werden soll, da kannst du das schlecht abfragen^^
Aber das war mehr so gemeint, wenn in der Hilfe nen begriff drin stehn würde wie zB. Audio.se_play? dann wärs abfragbar, aber wenns nich drin is, dann gibts ebn keine direkte Möglichkeit über RGSS abzufragen ob eine gespielt wird. Sprich: man müsste es scripten (=
daher ist die eventlösung meines erachtens einfacher, als sich das zu scripten^^
lg flip
-
jut dann werd ik das wohl per event lösen müssen^^
-
kann man bei den kämpfen beim vx auch bilder einfügen? ich meine als hintergrund, so wie es bei dem xp ist? :faint:
-
ja kann man, man braucht dazu aber ein script.
dieses hier ist eigentlich sehr gut:
#===============================================================================
# Battle Backgrounds - RMVX
#===============================================================================
# Written by Synthesize
# January 20, 2008
# Version 1.00A
#===============================================================================
# * This script is untested. *
#===============================================================================
module SynBattleB
# Place your battle backgrounds in the 'Pictures' folder (Graphics/Pictures)
# Format = {map_id => Battleback Name}
Battle_background =
{
# 1 => "Canyon",
# 2 => "Cave"
}
#-----------------------------------------------------------------------------
# Create the battlefloor?
Create_battlefloor = false
#-----------------------------------------------------------------------------
# This was being requested on quite a fe forums now, so I threw a quick script
# together. It is nice and simple, and does what it is suppsoed to do. Once
# RMVX is released in English, then I will add additional features into this.
#-----------------------------------------------------------------------------
end
#-------------------------------------------------------------------------------
# Spriteset_Battle
#-------------------------------------------------------------------------------
class Spriteset_Battle
alias syn_create_battlefloor create_battlefloor
#-----------------------------------------------------------------------------
# Create Battleback
#-----------------------------------------------------------------------------
def create_battleback
image = SynBattleB::Battle_background[$game_map.map_id]
@battleback_sprite = Sprite.new(@viewport1)
@battleback_sprite.bitmap = Cache.picture(image)
end
def create_battlefloor
@battlefloor_sprite = Sprite.new(@viewport1)
syn_create_battlefloor if SynBattleB::Create_battlefloor == true
end
end
#===============================================================================
# * This script is untested *
#===============================================================================
# Version 1.00A
# January 20, 2008
# Written by Synthesize
#===============================================================================
# Battle Backgrounds - RMVX
#===============================================================================
lg flip
-
Natürlich ist das möglich, es gibt eine Menge Scripte, die dies ermöglichen. Wenn du sagst was du genau haben möchtest, dann kann ich das entsprechende posten.
Hier eine Liste mit Möglichkeiten:
- Animierte Kampfhintergründe
- Hintergründe werden im Script für jede Mal einzeln festgelegt
- Hintergründe werden im Scrpt für Areas einzeln festgelegt
- Hintergründe werden per Variable gewechselt
Sag einfach welches du haben willst, ich kann aufgrund der Länge nicht einfach alle reinstellen.^^
~Edit:
Flip war schneller...er hat das erste Script aus meiner Liste reingestellt.
-
:cry:
danke für die schnelle antwort, aber bei dem hintergrund bekomme ich immer in der zeile 36 eine fehlermeldung
außerdem möchte ich doch auf kyoshiros angebot zurückkommen :haha: und hätte gern die nr. zwei
-
@Kyo: das script is bei dir die Nr. 2 ;D
@Galadriela: du musst zuerst noch die Map-IDs und die Bildernamen definiern, welche es verwenden soll. das ganze machst du in Zeile 17 (=
lg flip
-
hmmmm, wahrscheinlich bin ich wieder zu blöd :angry:
also ich schreibe im script die map id rein und lade ein bild hoch was ich auch so nenne, trotzdem kommt der fehler noch :what:
-
du siehst doch die beiden Beispiele im Komentar, du musst es so machen, nur eben mit deinen Bildernamen (=
also zB. du hast das Picture Cave und willst es für die MapID 2 verwenden guckt das dann so aus:
2 => "Cave"
-
genauso hab ich es gemacht :(
.............................................
module SynBattleB
# Place your battle backgrounds in the 'Pictures' folder (Graphics/Pictures)
# Format = {map_id => Battleback Name}
Battle_background =
{
# 1 => "Feenberg",
# 2 => "Knusperstadt"
}
ich denke mal so aaaaaaaaaaaah ich seh es dieses zeichen # muss davor weg :haha_zwinker:
-
du musst das # zeichen vor den beiden entfernen (=
sie dürfen nicht grün sein (=
-
der fehler kommt trotzdem :cry:
jetzt heul ich gleich lach
-
wie lautet den der fehler?
-
Script "Kampfhintergrund" line 36: Syntax Error occurred
-
einmal maker schließen und neu aufmachen nachdem du das # zeichen entfernt hast, bin mir nich sicher ob das den fehler behebt, aber is ein versuch wert (=
-
:shame: leider bleibt der fehler :sad:
-
hast du auch die irgendwie sonst das script verändert?
wenn ja, dann zeig es mal bitte
verwend aber bitte den code tag dazu^^"
-
nein gar nichts :sad:
ich hab ihn so wie er war eingefügt und nur die beiden namen geändert
#===============================================================================
# Battle Backgrounds - RMVX
#===============================================================================
# Written by Synthesize
# January 20, 2008
# Version 1.00A
#===============================================================================
#<span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span> * This script is untested. *
#===============================================================================
module SynBattleB
# Place your battle backgrounds in the 'Pictures' folder (Graphics/Pictures)
# Format = {map_id => Battleback Name}
Battle_background =
{
1 => "Feenberg",
2 => "Knusperstadt"
}
#-----------------------------------------------------------------------------
# Create the battlefloor?
Create_battlefloor = true
#-----------------------------------------------------------------------------
# This was being requested on quite a fe forums now, so I threw a quick script
# together. It is nice and simple, and does what it is suppsoed to do. Once
# RMVX is released in English, then I will add additional features into this.
#-----------------------------------------------------------------------------
end
#-------------------------------------------------------------------------------
# Spriteset_Battle
#-------------------------------------------------------------------------------
class Spriteset_Battle
alias syn_create_battlefloor create_battlefloor
#-----------------------------------------------------------------------------
# Create Battleback
#-----------------------------------------------------------------------------
def create_battleback
<span style="white-space: pre;"> </span>image = SynBattleB::Battle_background[$game_map.map_id]
<span style="white-space: pre;"> </span>@battleback_sprite = Sprite.new(@viewport1)
<span style="white-space: pre;"> </span>@battleback_sprite.bitmap = Cache.picture(image)
end
def create_battlefloor
<span style="white-space: pre;"> </span>@battlefloor_sprite = Sprite.new(@viewport1)
<span style="white-space: pre;"> </span>syn_create_battlefloor if SynBattleB::Create_battlefloor == true
end
end
#===============================================================================
#<span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>* This script is untested *
#===============================================================================
# Version 1.00A
# January 20, 2008
# Written by Synthesize
#===============================================================================
# Battle Backgrounds - RMVX
#===============================================================================
-
hab das problemchen gefunden^^"
gab wohl formatierungsprobleme beim kopiern^^
lösch einfach alles raus aus dem script was in solchen Klammern ist: <>
die klammern aber bitte auch mit rauslöschen^^
dann dürfte es funktionieren (=
-
:haha_zwinker: lach ich hab mich schon gewundert was das für ein neues zeichen im script sein soll :haha:
....................................
du weißt aber schon das es so in dem script steht?????? :hehe:
................................
und wenn ich es rauslösche dann ist der kampfhintergrund wie immer :faint:
-
wundert mich irgendwie, aber werds nachher noch raus editiern (=
du musst die ID der Map bei der der hintergrund sein soll auch angeben 1 wäre die ID der Map 1 ;)
Wenns jetzt zum Beispiel Map 57 ist, dann musst du auch 57 => "imagename" angeben (=
lg flip
-
öhmm das versteh ich nicht :grimace:
meine map heißt z.b. knusperstadt und das bild dazu hab ich auch so genannt :hehe:
-
das bild könnte blöd gesagt auch Bild heißen, die Zahl am anfang steht für die ID der Map. Die findest du rechts unten in der Leiste neben dem Mapnamen und der Größe.
-
aaaaaaaaaaaaaaahhhhhhhhhhhhhhhhhh lach, na das muß einem dummen menschen (MIR) ja gesagt werden lol
...........................
wenn ich jetzt aber alles rauslösche was in diesen <> zeichen ist dann zeigt es mir das normale kampfbild :shame:
-
ich glaub du löschst die ganzen zeilen^^"
hier nochmal das script als txt form: downloadlink (http://www.mediafire.com/?u1fedquto6093ap)
lg flip
-
cooooooooooooool :haha_zwinker: :haha_zwinker: :haha_zwinker:
danke danke jetzt gehts schnauf
-
ich hab ne neue frage :angry:
ich hab mir den script good vs evil ins projekt gemacht und alles funktioniert wunderbar, außer wenn ich einen kampf beginne, dann bekomme ich eine fehlermeldung :sad: :cry: :faint:
-
ohne Fehlermeldung kann man nur schwer helfen, eventuell wäre es auch gut zu wissen was für ein KS du verwendest (=
-
http://img863.imageshack.us/i/unbenanntjg.png/ (http://img863.imageshack.us/i/unbenanntjg.png/)
.......
ich benutze das ks was im vx drin ist
----------------------
der witz ist als ich die demo gespielt habe habe ich auch eine fehlermeldung bekommen, also am original :effort:
http://img850.imageshack.us/i/ori.png/ (http://img850.imageshack.us/i/ori.png/)
das war die meldung beim original
-
zeig mal bitte dein Script, weil der Fehler iritiert mich etwas, da er nicht wirklich in Zusammenhang mit dem Script stehen könnte oO
habs grad selbst auch getestet und da gings eigentlich einwandfrei
lg flip
-
#===============================================================================
# Good VS Evil --- RMVX Version
#===============================================================================
# Written by Synthesize
# Version 1.0.1
# January 26, 2008
#===============================================================================
# * RMVX Version *
#===============================================================================
module GoodVSEvil
# The initial Alignment for actors
Alignment_initial = {1 => 2, 2 => 3, 3 => -5}
Alignment_initial.default = 0
# The names of the alignments
Alignment_names = ["Very Good", "Good", "Neutral", "Evil", "Devil Child"]
# maximum amount of points
Maximum_alignment = 1000
# Maximum amount of evil points
Maximum_evil_alignment = -1000
# Format = {value => amount to check}
Rates = {0 => 50, 1 => 25, 3 => -25, 4 => 50}
# Rates configure how many Alignment points a character needs to have
# there alignment 'upgrade'
# $alignment commands:
# $alignment.add(value, member) # Adds value of alignment
# $alignment.remove(value, member) # Removes value from member
# $alignment.checksum(amount, member) # Check value of points then return
# $alignment.checkname(member, name) # Check if the alignment level is =name
end
#-------------------------------------------------------------------------------
# Create and set alignment points
#-------------------------------------------------------------------------------
class Game_Actor < Game_Battler
attr_accessor :alignment
attr_accessor :alignment_name
alias syn_gve_setup setup
#-----------------------------------------------------------------------------
# Setup Actor Alignment
#-----------------------------------------------------------------------------
def setup(actor_id)
syn_gve_setup(actor_id)
@alignment = GoodVSEvil::Alignment_initial[actor_id]
@alignment_name = "Neutral"
end
#-----------------------------------------------------------------------------
# Return Alignment Values
#-----------------------------------------------------------------------------
def alignment_value
@alignment = GoodVSEvil::Maximum_alignment if @alignment > GoodVSEvil::Maximum_alignment
@alignment = GoodVSEvil::Maximum_evil_alignment if @alignment < GoodVSEvil::Maximum_evil_alignment
if @alignment >= GoodVSEvil::Rates[1]
@alignment_name = GoodVSEvil::Alignment_names[1]
@alignment_name = GoodVSEvil::Alignment_names[0] if @alignment > GoodVSEvil::Rates[0]
return @alignment_name
elsif @alignment <= GoodVSEvil::Rates[3]
@alignment_name = GoodVSEvil::Alignment_names[3]
@alignment_name = GoodVSEvil::Alignment_names[4] if @alignment >= GoodVSEvil::Rates[4]
return @alignment_name
else
@alignment_name = GoodVSEvil::Alignment_names[2]
return @alignment_name
end
end
end
#-------------------------------------------------------------------------------
# Window_MenuStatus add-on
#-------------------------------------------------------------------------------
class Window_Status < Window_Base
alias syn_gve_refresh refresh
def refresh
syn_gve_refresh
self.contents.font.color = system_color
self.contents.draw_text(32, 350, 120, 32, "Ansehen:")
self.contents.font.color = normal_color
self.contents.draw_text(156, 350, 120, 32, @actor.alignment_value)
end
end
#-------------------------------------------------------------------------------
# Alignment Management
#-------------------------------------------------------------------------------
class Alignment_Management
def add(value, member)
$game_party.members[member].alignment += value
end
def remove(value, member)
$game_party.members[member].alignment -= value
end
def checksum(amount, member)
if $game_party.members[member].alignment >= amount
return true
else
return false
end
end
def checkname(member, name)
if $game_party.members[member].alignment_name == name
return true
else
return false
end
end
end
#-------------------------------------------------------------------------------
# Scene_Title:: Create the Global Variable
#-------------------------------------------------------------------------------
class Scene_Title
alias syn_gve_game_object create_game_objects
def create_game_objects
syn_gve_game_object
$alignment = Alignment_Management.new
end
end
class Game_System
alias syn_system_update update
def update
$alignment = Alignment_Management.new
syn_system_update
end
end
#===============================================================================
# * This script will not work with RPG Maker XP *
#===============================================================================
# Written by Synthesize
# Version 1.0.1
# January 26, 2008
#===============================================================================
# Good VS Evil --- RMVX Version
#===============================================================================
du hast recht es weist ja auf einen fehler im cache hin, aber da dieser erst aufgetreten ist als ich diesen script reingemacht habe kann es nur daran liegen
-
Bitte schreib mal auf, welche Scripte du sonst noch verwendest neben dem Good vs Evil Script, da deine Version bei mir ebenfalls einwandfrei funktioniert.
-
hast du auch einen kampf gemacht?
....................................................
title customize
anti lage von sandgolem
game interpreter fix
simple day and night
parallaxänderung
kampfhintergrund von Synthesize
tilesetchanger von pdm
itemkiste von vampyr
monsteralbum von El Conducter
questlog von hellminor
Paragraph Formatter
Neo Message System
Good VS Evil --- RMVX Version
Alignment Management Patch
schnauf das sind bis jetzt alle :haha_zwinker:
:haha:
-
ja hab ich (=
und ich glaub ich weiß wo das Problemchen liegen könnte^^
Kann es sein, dass du in der Database nen Testkampf versucht hast? (=
-
nein, ich hab ihn direkt auf die map gemacht
-
die Map auch im BattleBackgroundscript definiert?
-
ich mach die kämpfe als event und jede map hat ihren eigenen hintergrund
-
ist mir schon klar, nur im Script Kampfhintergrund muss jede Map-ID nen eigenen Background zugewiesen bekommen, wenn das nicht der fall ist, taucht normalerweise dieser Fehler auf^^"
-
du bist der größte :haha_zwinker: :haha: ich hab noch einmal im script für die hintergründe nachgesehen und da ich eine map gelöscht hatte und eine andere so genannt hatte hat es nicht mehr gestimmt, jetzt funktioniert es danke danke ;D
-
Hey :)
Also, ich habe folgendes Problem:
Ich verwende GubiD's Tactical Battle System Verson 1.0 for VX. Die Skripte laufen ohne Probleme.
Ich wollte jetzt eine Art "Flieh-Funktion" als Skill erstellen, indem der Spieler als Skill "Fliehen" anwählen kann,
und sich dann per CE das Battle vertschüst.
Also, gesagt getan wird per CE mit "Abort Battle" auch der Kampf abgebrochen,
nur bleiben Battle-Musik und Battle-Menüs auf dem Bildschirm.
Es fehlt sowas wie ein Screen-Update, und ich hab keinen Dunst wie ich das mach.
Help me please :)
-
mach dann auch noch mal mit folgendem in nem Call Script: $game_map.need_refresh = true
lg flip
-
Hallo,
ich benötige ein kleines Fenster wo die Variable 0021 Leerzeichen "Gold" ausgegeben wird.
Das Fenster sollte so kompackt wie möglich sein und bitte mir einer Erklärung wie ich es ein- bzw. ausblenden lassen kann.
-
Hallo erstmal,
ich bin neu hier und leider noch nicht so erfahren (jungfräulich) was scripten angeht. Ich benutze den RPG maker VX und habe bereits gelesen das da ein "bug" besteht das Gegner keine Attaken Animationen abspielen. Da ich das aber recht leblos finde möchte ich gern das eben die Animationen eingespielt werden. Ich habe schon ein bisschen rum gesucht...und von einem Script gelesen.
Was ich suche oder wobei ich hilfe brauche ist:
- Ein Script das Animationen der Attaken der eigentlichen Helden darstellen kann.
- Gegner sollen also Attaken die ich in der DB Anlegen nicht nur ausführen sondern auch die Animation dazu Anzeigen.
Ich wäre euch überaus dankbar wenn mir dabei jemand helfen kann, und bitte...vergesst nicht ich bin jungfräulich was scripten angeht.
lg Radeon
-
ja hi^^
willkommen auf rpgvx.net ;)
(http://www.pix6.de/pics/thumbs/thumb_4daedc5c1e57c.png) (http://www.pix6.de/pics/4daedc5c1e57c.png.html)
Hoffe das hilft dir ;)
Wenn ich dich richtig verstanden habe, dann brauchst du ja kein Skript dafür!
Edit:
Verdammt das Bild ist zu klein hier :(
Einfach Doppelklick auf das Bild machen dann wirds ;)
-
Hy, ich bin neu und habe leider nichts dazu gefunden...
Ich will beim Title (dort wo man neues spiel etc auswählt) ein neues einsetzen aber wenn ich etwas eingebe kommt ein error( ein bild sollte beim Anhang sein...)
Meine Frage ist jetzt wie und was muss ich genau machen?
Wäre nett das in Schritten zu erklären...
Danke schon im Vorraus
MFG TwistTECK
-
Hallo TwistTECK,
das war auch das erste was ich vorhin aus jucks probiert habe. Also wie man ein Menüpunkt einführt hab ich herausgefunden. Aber dahinter steckt noch keine Funktion, soweit bin ich in Ruby nicht drin :D
Ich bin vorhin so vorgegangen, habe folgende Sachen im Script Editor geändert:
1. in Scene_Title habe ich die Continue Methode kopiert und sie halt so umgenannt wie mein Menüpunkt z.B. command_option.
2. in der create_command_window methode habe ich den Wert option hinzugefügt
s1 = Vocab::new_game
s2 = Vocab::continue
s3 = Vocab::option
s4 = Vocab::shutdown
@command_window = Window_Command.new(172, [s1, s2, s3, s4])
3. ich habe die Methode update folgend geändert
def update
super
@command_window.update
if Input.trigger?(Input::C)
case @command_window.index
when 0 #New game
command_new_game
when 1 # Continue
command_continue
when 2 # Options
command_option
when 3 # Shutdown
command_shutdown
end
end
end
4. Ich habe in der Datei Vocab, die ist unter modules, folgendes eingefügt
# Option
def self.option
return "Option"
end
Aber wie gesagt, es ist keine Funktion dahinter, da meine Methode command_option nichts enthält.
Und da ich auch noch neu im RPG Maker Bereich bin, weiß ich nicht ob das so richtig ist, aber so klappte es :haha:
-
Hi suche Hilfe Beim Takentai SBS 3.4d + ATB 1.2c und dem KGC_CustomMenuCommand
mein Problem ist das ich gern das ATB über eine Menüsteuerung ingame regeln würde...quasi das ich im Menü noch nen zusatzpunkt hätte für ATB bzw. um das Tempo und die Dynamic zu regeln.
In diesem ATB scheint das auch vorgesehen zu sein oder verstehen ich diesen menupunkt falsch?
# ++ ATB User Customization Settings
#--------------------------------------------------------------------------
# In-game dynamic ATB customization can be accessed from the player's menu.
#
ATB_CUSTOMIZE = false
# Name for ATB options.
ATB_CUSTOMIZE_NAME = "ATB Options"
# Text in Help Window at the top of ATB Options scene.
ATB_CUSTOMIZE_HELP = "Use the directional keys to select options."
# Menu name for ATB mode.
ATB_MODE_NAME = "Battle Mode"
# The three ATB modes below should be aligned properly in the editor window.
# When a number in the ATB Mode array (0~4) is set to true, the scene
# will be designated Active; false will designate Wait.
nun frage ich mich natürlich wie das ganze in das KGC_CustomMenuCommand einbetten kann, da ich persönlich absolut NULL Ahnung von cripten hab
mfg Tom
-
am besten den Anweisungen im KGC_CustomMenuComand folgen (:
Ist zwar Englisch, aber dafür sehr gut beschrieben.
Das einzige was dann ebenfalls noch wichtig wäre, ist zu wissen, wie
die Scene von dem ATB heißt ;)
Der Name wäre: Scene_ATB
lg flip
-
Halli Hallo,
Meine Frage ist : Wie mache ich das wenn ich eine ganz bestimmt musik abspielen will und das bei einem Kampf
und das nur einmal?
(Ich weiss der das liesst wird sich wohl denken so ein noob...aber ich hab schon per Event versucht und Variabeln...
ans skripten hab ich mich garnicht gewagt weil ich mich da net aus kenn ^^)
-
Hi Happyman...wie meinst das nur 1 mal? willst die Kampf BGM für einen Kampf geändert wird oder soll der Track einmal abgespielt werden im Kampf und dann nichts mehr?
-
Moin!
Hab mal ne frage bezüglich eines "Footstep Script"
Das hier:
## Step Sounds - Brew 01AUG10 (ref: Project3)
## Play a different sound with each terrain type
## You must have a file "terrain_x.ogg" in the Audio\SE folder
## Where 'x' is the terrain number. (1-7)
Was ist mit Terrain Number gemeint und wo find ich diese?
-
Hi, Onkel Tom
Ich hab das random Musik skript und ich wollt halt wisse ob man die kampfmusik für einen kampf ändern kann und die nächsten Kämpfe wieder mit normaler musik
-
@Happyman
Ich geh mal davon aus das du des für Bosskämpfe machen willst bzw. für spezielle Kämpfe die du eh über n Event stezerst...von daher würd ich die Kampf BGM via Event ändern
-
Oh man es hat geklappt, ich dank dir ^^
-
Ich hab mal ne kleine aber wichtige (jedenfalls für mich) Frage.
Ich lasse per Script in einem Window einen Text anzeigen, den ich in einer Variable festgelegt habe. Das funktioniert auch, aber wenn der Text zu lange wird, kann man einen Teil nicht mehr lesen und alles ist zusammengequetscht.
Frage:
Wie kann ich dem Script sagen, dass es automatisch ab einer gewissen Textlänge eine neue Zeile anfangen soll?
-
Kann der Maker so direkt nicht umsetzen.
Ich habe es so gemacht, dass ich den Text in Wörter gesplittet habe, dann die Wörter so lange einem leerstring ergänzt, bis dieser nicht mehr in die Zeile passt. Dann habe ich den String ausschreiben lassen, die neuen y-Koordinaten berechnet, den string auf leer gesetzt und dann das ganze von neu. :)
-
Ui, dass ist vielleicht kompliziert. Ich muss nochmal überlegen, wie ich es machen könnte.
-
Moin!
Also falls ich das richtig verstanden habe...
Ich habe sowas auch gemacht, das im Intro Texte ablaufen sollen. Über Multinachricht, macht der ja dann weiter nach 4 Zeilen oder machst eine kleine Pause zwischendurch. Meine Figur kann sich wärend den Texten normal bewegen. Da diese von alleine weiterblättern.
Meinst du das so bei dir?!
-
Ne, ich möchte in meinem Menüscript Aufträge anzeigen lassen. Wenn aber zuviel Text dabei steht, wird der abgehackt.
-
Ui, Doppelpost.
Hab mal ne Frage an die Pro-scripter:
Ist es möglich, alle Scripte aus einer oder mehreren Textdateien laden zu lassen?
Dann könnte man leicht bei den Projekten Bugfixes vornehmen.
-
klar is es möglich (:
es kommt nur drauf an welche Informationen du gezielt draus laden willst. Da hat zum Beispiel MelekTaus bei seiner Engine so ziemlich alles an scripts aus textdateien geladen (:
lg flip
-
Danke! Vesuche da grade mal ein bisschen dran rum :haha:
-
Hallo, ich benutze den VX Ace und stoße auf dieses Problem hier bei Nightlights Isolated.
Ich benutze auch sonst keinen Skript, eingefügt ist es ebenfalls in Material.
Hoffe ihr könnt mir helfen. :/
In 231 ist: alias load_database_nl_adds load_database
(http://img191.imageshack.us/img191/6826/problemomk.png)
-
Nightlights Isolated ist ein VX-Script wenn ich mich nich irre und das funkt von haus aus nicht am Ace, da die Basisscripts vom Ace und vom VX schon verschieden sind und die Scripts auch komplett unterschiedlich geschrieben wurden.
Daher müsste man das Nightlights Isolated Script auf den Ace übertragen oder aber ein anderes Script, welches für den Ace gedacht ist finden und verwenden.
lg flip
-
1 Möglichkeit kannste noch probieren...
Das Title Bild einmal als png und einmal als bmp abspeichern.
Wenns nichts bringt, dann muss das Skript an Ace angepasst werden.
-
das würde nix bringen, da es die Datenbank nicht laden kann, da die Methode die gewählt wurde nicht existiert. Würde man das nun anpassen würden immernoch etliche Methoden nichts aufrufen, bzw. nicht existieren und dadurch zu unzähligen Crashs führen bzw. wenn sie funktionieren, gibts immernoch die chance das die dann falsch ausgeführt werden /:
lg flip
-
Sind da absolute keine VX Skripte mit dem Ace kompatibel? Dachte weil ist ja fast das gleiche System.
-
nur diejenigen die komplett in sich selbst aufbauen, also keine anderen Methoden oder Klassen von Basisscripten verwenden. Diese Scripts kann man locker auf jedem Maker verwenden aber sonst von Haus aus kein einziges welches Basisscripte vom VX oder nem andren Maker editiert^^"
-
Ich will einen Animierten Titelscreen machen.
#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
# This class performs the title screen processing.
#==============================================================================
class Scene_Title < Scene_Base
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
if $BTEST # If battle test
battle_test # Start battle test
else # If normal play
super # Usual main processing
end
end
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
load_database # Load database
create_game_objects # Create game objects
end
#--------------------------------------------------------------------------
# * Execute Transition
#--------------------------------------------------------------------------
def perform_transition
Graphics.transition(20)
end
#--------------------------------------------------------------------------
# * Post-Start Processing
#--------------------------------------------------------------------------
def post_start
end
#--------------------------------------------------------------------------
# * Pre-termination Processing
#--------------------------------------------------------------------------
def pre_terminate
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
end
#--------------------------------------------------------------------------
# * Load Database
#--------------------------------------------------------------------------
def load_database
$data_actors = load_data("Data/Actors.rvdata")
$data_classes = load_data("Data/Classes.rvdata")
$data_skills = load_data("Data/Skills.rvdata")
$data_items = load_data("Data/Items.rvdata")
$data_weapons = load_data("Data/Weapons.rvdata")
$data_armors = load_data("Data/Armors.rvdata")
$data_enemies = load_data("Data/Enemies.rvdata")
$data_troops = load_data("Data/Troops.rvdata")
$data_states = load_data("Data/States.rvdata")
$data_animations = load_data("Data/Animations.rvdata")
$data_common_events = load_data("Data/CommonEvents.rvdata")
$data_system = load_data("Data/System.rvdata")
$data_areas = load_data("Data/Areas.rvdata")
end
#--------------------------------------------------------------------------
# * Load Battle Test Database
#--------------------------------------------------------------------------
def load_bt_database
$data_actors = load_data("Data/BT_Actors.rvdata")
$data_classes = load_data("Data/BT_Classes.rvdata")
$data_skills = load_data("Data/BT_Skills.rvdata")
$data_items = load_data("Data/BT_Items.rvdata")
$data_weapons = load_data("Data/BT_Weapons.rvdata")
$data_armors = load_data("Data/BT_Armors.rvdata")
$data_enemies = load_data("Data/BT_Enemies.rvdata")
$data_troops = load_data("Data/BT_Troops.rvdata")
$data_states = load_data("Data/BT_States.rvdata")
$data_animations = load_data("Data/BT_Animations.rvdata")
$data_common_events = load_data("Data/BT_CommonEvents.rvdata")
$data_system = load_data("Data/BT_System.rvdata")
end
#--------------------------------------------------------------------------
# * Create Game Objects
#--------------------------------------------------------------------------
def create_game_objects
$game_temp = Game_Temp.new
$game_message = Game_Message.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
end
#--------------------------------------------------------------------------
# * Check Player Start Location Existence
#--------------------------------------------------------------------------
def confirm_player_location
if $data_system.start_map_id == 0
print "Startpunkt wurde nicht gesetzt!"
exit
end
end
#--------------------------------------------------------------------------
# * Command: New Game
#--------------------------------------------------------------------------
def command_new_game
confirm_player_location
Sound.play_decision
$game_party.setup_starting_members # Initial party
$game_map.setup($data_system.start_map_id) # Initial map position
$game_player.moveto($data_system.start_x, $data_system.start_y)
$game_player.refresh
$scene = Scene_Map.new
RPG::BGM.fade(1500)
close_command_window
Graphics.fadeout(60)
Graphics.wait(40)
Graphics.frame_count = 0
RPG::BGM.stop
$game_map.autoplay
end
#--------------------------------------------------------------------------
# * Battle Test
#--------------------------------------------------------------------------
def battle_test
load_bt_database # Load battle test database
create_game_objects # Create game objects
Graphics.frame_count = 0 # Initialize play time
$game_party.setup_battle_test_members
$game_troop.setup($data_system.test_troop_id)
$game_troop.can_escape = true
$game_system.battle_bgm.play
snapshot_for_background
$scene = Scene_Battle.new
end
end
wenn ich dieses Script einfüge, und dann ein test play mache dann kommt nur schwarz und es bleibt auch schwarz....
-
ist deine Startmap zufällig schwarz und der Held unsichtbar/am anfang keiner drin in der Gruppe?
-
nö. der held ist sichtbar und die map is grün
-
arbeitest du am VX oder am VX Ace?
-
nur VX
-
Hallöle,
ich bräuchte mal eure Hilfe mit Woratana's multiple fog Skript.
Im Eigentlichen ist es ja ganz einfach zu bedienen, aber ich bekomme es nicht hin, dass sich der Fog der Bewegungsrichtung des Spielers anpasst.
Wenn der Fog still steht und der Spieler sich bewegt, kann man an einigen Stellen unansehnliche Kanten und Übergänge erkennen. Bei kleinen maps ist das ja noch zu kompensieren, aber wenn die map größer wird..........
Vielleicht habt ihr ja eine Idee dazu.
-
einfach das ganze per show-picture befehl anzeigen lassen und die sache hat sich oO
bisschen Transparenz einstellen usw. und man hat nahezu den selben effekt wie im script
-
So werd ich es machen. Warum kompliziert, wenn es auch einfach geht. ;)
Besten Dank FlipelyFlip
-
zur zeit arbeite ich mit dem vx ace und dabei habe ich festgestellt das einige scripte nicht mehr so funktionieren wie beim vx, z.b. gibt es bei einem alias einen fehler aus, oder bei dem rufsystem von Eugene, Hanmac (war bei der demo von klex Feel!Fine dabei) erkennt er das WLH nicht und ich weiß nicht wie ich es ersetzen kann. leider bin ich beim scripten eine echte null :what:
kann bitte einer helfen? :haha_zwinker: zur besseren übersicht setzt ich den script mal hier rein.
#======================================================================
#Status Plus V 1.0 by Eugene
#Danke an Hanmac für seine Hilfe
#Credits an : Eugene, Hanmac
#======================================================================
class Window_Status < Window_Base
#1-10 sind die IDs der Variablem im Game
Var = [89,90,91,92,93,94,95,96,97,98]
def refresh
self.contents.clear
draw_actor_name(@actor, 4, 0)
draw_actor_class(@actor, 100, 0)
draw_actor_face(@actor, 0, 32)
draw_basic_info(128, 32)
draw_parameters(32, 160)
draw_exp_info(288, 32)
draw_equipments(288, 160)
end
def draw_basic_info(x, y)
self.contents.font.color = system_color
self.contents.draw_text(240,10, 120, WLH, 'Fraktion')
self.contents.draw_text(362,10, 90, WLH, 'Gesinnung')
self.contents.draw_text(470,10, 40, WLH, 'Ruf')
self.contents.font.color = normal_color
self.contents.draw_text(230,40+5 , 120, WLH, 'Mogries :')
self.contents.draw_text(230,65+10 , 120, WLH, 'Vergessenen :')
self.contents.draw_text(230,90+15 , 120, WLH, 'Bruderschaft :')
self.contents.draw_text(230,115+20, 120, WLH, 'Syndikats :')
self.contents.draw_text(230,140+25, 120, WLH, 'Frostwölfe :')
self.contents.draw_text(230,165+30, 120, WLH, 'Zeitwächter :')
self.contents.draw_text(230,190+35, 120, WLH, 'Magister :')
self.contents.draw_text(230,215+40, 120, WLH, 'Ralphpiraten :')
self.contents.draw_text(230,240+45, 120, WLH, 'Underworld :')
self.contents.draw_text(230,265+50, 120, WLH, 'Todeskrallen :')
temp = $game_variables[Var[0]]
if temp >= 300
self.contents.font.color = text_color(11)
self.contents.draw_text(362,40+5 , 90, WLH, 'Ehfürchtig')
self.contents.draw_text(462,40+5 , 40, WLH, $game_variables[Var[0]])
elsif temp >= 200
self.contents.font.color = text_color(03)
self.contents.draw_text(362,40+5 , 90, WLH, 'Wohlwollend')
self.contents.draw_text(462,40+5 , 40, WLH, $game_variables[Var[0]])
elsif temp >= 100
self.contents.font.color = text_color(24)
self.contents.draw_text(362,40+5 , 90, WLH, 'Freundlich')
self.contents.draw_text(462,40+5 , 40, WLH, $game_variables[Var[0]])
elsif temp > -100
self.contents.font.color = text_color(17)
self.contents.draw_text(362,40+5 ,90, WLH, 'Neutral')
self.contents.draw_text(462,40+5 , 40, WLH, $game_variables[Var[0]])
elsif temp <= -100
self.contents.font.color = text_color(18)
self.contents.draw_text(362,40+5 , 90, WLH, 'Feindlich')
self.contents.draw_text(462,40+5 , 40, WLH, $game_variables[Var[0]])
end
temp1 = $game_variables[Var[1]]
if temp1 >= 300
self.contents.font.color = text_color(11)
self.contents.draw_text(362,65+10 , 90, WLH, 'Ehfürchtig')
self.contents.draw_text(462,65+10 , 40, WLH, $game_variables[Var[1]])
elsif temp1 >= 200
self.contents.font.color = text_color(03)
self.contents.draw_text(362,65+10 , 90, WLH, 'Wohlwollend')
self.contents.draw_text(462,65+10 , 40, WLH, $game_variables[Var[1]])
elsif temp1 >= 100
self.contents.font.color = text_color(24)
self.contents.draw_text(362,65+10 , 90, WLH, 'Freundlich')
self.contents.draw_text(462,65+10 , 40, WLH, $game_variables[Var[1]])
elsif temp1 > -100
self.contents.font.color = text_color(17)
self.contents.draw_text(362,65+10 ,90, WLH, 'Neutral')
self.contents.draw_text(462,65+10 , 40, WLH, $game_variables[Var[1]])
elsif temp1 <= -100
self.contents.font.color = text_color(18)
self.contents.draw_text(362,65+10 , 90, WLH, 'Feindlich')
self.contents.draw_text(462,65+10 , 40, WLH, $game_variables[Var[1]])
end
temp2 = $game_variables[Var[2]]
if temp2 >= 300
self.contents.font.color = text_color(11)
self.contents.draw_text(362,90+15 , 90, WLH, 'Ehfürchtig')
self.contents.draw_text(462,90+15 , 40, WLH, $game_variables[Var[2]])
elsif temp2 >= 200
self.contents.font.color = text_color(03)
self.contents.draw_text(362,90+15 , 90, WLH, 'Wohlwollend')
self.contents.draw_text(462,90+15 , 40, WLH, $game_variables[Var[2]])
elsif temp2 >= 100
self.contents.font.color = text_color(24)
self.contents.draw_text(362,90+15 , 90, WLH, 'Freundlich')
self.contents.draw_text(462,90+15 , 40, WLH, $game_variables[Var[2]])
elsif temp2 > -100
self.contents.font.color = text_color(17)
self.contents.draw_text(362,90+15 ,90, WLH, 'Neutral')
self.contents.draw_text(462,90+15 , 40, WLH, $game_variables[Var[2]])
elsif temp2 <= -100
self.contents.font.color = text_color(18)
self.contents.draw_text(362,90+15 , 90, WLH, 'Feindlich')
self.contents.draw_text(462,90+15 , 40, WLH, $game_variables[Var[2]])
end
temp3 = $game_variables[Var[3]]
if temp3 >= 300
self.contents.font.color = text_color(11)
self.contents.draw_text(362,115+20 , 90, WLH, 'Ehfürchtig')
self.contents.draw_text(462,115+20 , 40, WLH, $game_variables[Var[3]])
elsif temp3 >= 200
self.contents.font.color = text_color(03)
self.contents.draw_text(362,115+20 , 90, WLH, 'Wohlwollend')
self.contents.draw_text(462,115+20 , 40, WLH, $game_variables[Var[3]])
elsif temp3 >= 100
self.contents.font.color = text_color(24)
self.contents.draw_text(362,115+20 , 90, WLH, 'Freundlich')
self.contents.draw_text(462,115+20 , 40, WLH, $game_variables[Var[3]])
elsif temp3 > -100
self.contents.font.color = text_color(17)
self.contents.draw_text(362,115+20 ,90, WLH, 'Neutral')
self.contents.draw_text(462,115+20 , 40, WLH, $game_variables[Var[3]])
elsif temp3 <= -100
self.contents.font.color = text_color(18)
self.contents.draw_text(362,115+20 , 90, WLH, 'Feindlich')
self.contents.draw_text(462,115+20 , 40, WLH, $game_variables[Var[3]])
end
temp4 = $game_variables[Var[4]]
if temp4 >= 300
self.contents.font.color = text_color(11)
self.contents.draw_text(362,140+25 , 90, WLH, 'Ehfürchtig')
self.contents.draw_text(462,140+25 , 40, WLH, $game_variables[Var[4]])
elsif temp4 >= 200
self.contents.font.color = text_color(03)
self.contents.draw_text(362,140+25 , 90, WLH, 'Wohlwollend')
self.contents.draw_text(462,140+25 , 40, WLH, $game_variables[Var[4]])
elsif temp4 >= 100
self.contents.font.color = text_color(24)
self.contents.draw_text(362,140+25 , 90, WLH, 'Freundlich')
self.contents.draw_text(462,140+25 , 40, WLH, $game_variables[Var[4]])
elsif temp4 > -100
self.contents.font.color = text_color(17)
self.contents.draw_text(362,140+25 ,90, WLH, 'Neutral')
self.contents.draw_text(462,140+25 , 40, WLH, $game_variables[Var[4]])
elsif temp4<= -100
self.contents.font.color = text_color(18)
self.contents.draw_text(362,140+25 , 90, WLH, 'Feindlich')
self.contents.draw_text(462,140+25 , 40, WLH, $game_variables[Var[4]])
end
temp5 = $game_variables[Var[5]]
if temp5 >= 300
self.contents.font.color = text_color(11)
self.contents.draw_text(362,165+30 , 90, WLH, 'Ehfürchtig')
self.contents.draw_text(462,165+30 , 40, WLH, $game_variables[Var[5]])
elsif temp5 >= 200
self.contents.font.color = text_color(03)
self.contents.draw_text(362,165+30 , 90, WLH, 'Wohlwollend')
self.contents.draw_text(462,165+30 , 40, WLH, $game_variables[Var[5]])
elsif temp5 >= 100
self.contents.font.color = text_color(24)
self.contents.draw_text(362,165+30 , 90, WLH, 'Freundlich')
self.contents.draw_text(462,165+30 , 40, WLH, $game_variables[Var[5]])
elsif temp5 > -100
self.contents.font.color = text_color(17)
self.contents.draw_text(362,165+30 ,90, WLH, 'Neutral')
self.contents.draw_text(462,165+30 , 40, WLH, $game_variables[Var[5]])
elsif temp5 <= -100
self.contents.font.color = text_color(18)
self.contents.draw_text(362,165+30 , 90, WLH, 'Feindlich')
self.contents.draw_text(462,165+30 , 40, WLH, $game_variables[Var[5]])
end
temp6 = $game_variables[Var[6]]
if temp6 >= 300
self.contents.font.color = text_color(11)
self.contents.draw_text(362,190+35 , 90, WLH, 'Ehfürchtig')
self.contents.draw_text(462,190+35 , 40, WLH, $game_variables[Var[6]])
elsif temp6 >= 200
self.contents.font.color = text_color(03)
self.contents.draw_text(362,190+35 , 90, WLH, 'Wohlwollend')
self.contents.draw_text(462,190+35 , 40, WLH, $game_variables[Var[6]])
elsif temp6 >= 100
self.contents.font.color = text_color(24)
self.contents.draw_text(362,190+35 , 90, WLH, 'Freundlich')
self.contents.draw_text(462,190+35 , 40, WLH, $game_variables[Var[6]])
elsif temp6 > -100
self.contents.font.color = text_color(17)
self.contents.draw_text(362,190+35 ,90, WLH, 'Neutral')
self.contents.draw_text(462,190+35 , 40, WLH, $game_variables[Var[6]])
elsif temp6 <= -100
self.contents.font.color = text_color(18)
self.contents.draw_text(362,190+35 , 90, WLH, 'Feindlich')
self.contents.draw_text(462,190+35 , 40, WLH, $game_variables[Var[6]])
end
temp7 = $game_variables[Var[7]]
if temp7 >= 300
self.contents.font.color = text_color(11)
self.contents.draw_text(362,215+40 , 90, WLH, 'Ehfürchtig')
self.contents.draw_text(462,215+40 , 40, WLH, $game_variables[Var[7]])
elsif temp7 >= 200
self.contents.font.color = text_color(03)
self.contents.draw_text(362,215+40 , 90, WLH, 'Wohlwollend')
self.contents.draw_text(462,215+40 , 40, WLH, $game_variables[Var[7]])
elsif temp7 >= 100
self.contents.font.color = text_color(24)
self.contents.draw_text(362,215+40 , 90, WLH, 'Freundlich')
self.contents.draw_text(462,215+40 , 40, WLH, $game_variables[Var[7]])
elsif temp7 > -100
self.contents.font.color = text_color(17)
self.contents.draw_text(362,215+40 ,90, WLH, 'Neutral')
self.contents.draw_text(462,215+40 , 40, WLH, $game_variables[Var[7]])
elsif temp7 <= -100
self.contents.font.color = text_color(18)
self.contents.draw_text(362,215+40 , 90, WLH, 'Feindlich')
self.contents.draw_text(462,215+40 , 40, WLH, $game_variables[Var[7]])
end
temp8 = $game_variables[Var[8]]
if temp8 >= 300
self.contents.font.color = text_color(11)
self.contents.draw_text(362,240+45 , 90, WLH, 'Ehfürchtig')
self.contents.draw_text(462,240+45 , 40, WLH, $game_variables[Var[8]])
elsif temp8 >= 200
self.contents.font.color = text_color(03)
self.contents.draw_text(362,240+45 , 90, WLH, 'Wohlwollend')
self.contents.draw_text(462,240+45 , 40, WLH, $game_variables[Var[8]])
elsif temp8 >= 100
self.contents.font.color = text_color(24)
self.contents.draw_text(362,240+45 , 90, WLH, 'Freundlich')
self.contents.draw_text(462,240+45 , 40, WLH, $game_variables[Var[8]])
elsif temp8 > -100
self.contents.font.color = text_color(17)
self.contents.draw_text(362,240+45 ,90, WLH, 'Neutral')
self.contents.draw_text(462,240+45 , 40, WLH, $game_variables[Var[8]])
elsif temp8 <= -100
self.contents.font.color = text_color(18)
self.contents.draw_text(362,240+45 , 90, WLH, 'Feindlich')
self.contents.draw_text(462,240+45 , 40, WLH, $game_variables[Var[8]])
end
temp9 = $game_variables[Var[9]]
if temp9 >= 300
self.contents.font.color = text_color(11)
self.contents.draw_text(362,265+50 , 90, WLH, 'Ehfürchtig')
self.contents.draw_text(462,265+50 , 40, WLH, $game_variables[Var[9]])
elsif temp9 >= 200
self.contents.font.color = text_color(03)
self.contents.draw_text(362,265+50 , 90, WLH, 'Wohlwollend')
self.contents.draw_text(462,265+50 , 40, WLH, $game_variables[Var[9]])
elsif temp9 >= 100
self.contents.font.color = text_color(24)
self.contents.draw_text(362,265+50 , 90, WLH, 'Freundlich')
self.contents.draw_text(462,265+50 , 40, WLH, $game_variables[Var[9]])
elsif temp9 > -100
self.contents.font.color = text_color(17)
self.contents.draw_text(362,265+50 ,90, WLH, 'Neutral')
self.contents.draw_text(462,265+50 , 40, WLH, $game_variables[Var[9]])
elsif temp9 <= -100
self.contents.font.color = text_color(18)
self.contents.draw_text(362,265+50 , 90, WLH, 'Feindlich')
self.contents.draw_text(462,265+50 , 40, WLH, $game_variables[Var[9]])
end
draw_actor_level(@actor, x - 28, y + WLH * 0)
draw_actor_state(@actor, x- 28, y + WLH * 1)
draw_actor_hp(@actor, x- 28, y + WLH * 2)
draw_actor_mp(@actor, x- 28, y + WLH * 3)
end
def draw_exp_info(x, y)
s1 = @actor.exp_s
s2 = @actor.next_rest_exp_s
s_next = sprintf(Vocab::ExpNext, Vocab::level)
self.contents.font.color = system_color
self.contents.draw_text(40, 280, 120, WLH , Vocab::ExpTotal)
self.contents.draw_text(40, 330 ,120, WLH, s_next)
self.contents.font.color = normal_color
self.contents.draw_text(30, 305 , 120, WLH, s1, 2)
self.contents.draw_text(30, 355 , 120, WLH, s2, 2)
end
def draw_equipments(x, y)
end
end
-
öhm du weißt schon, dass im Ace die VX Scripte so gut wie gar nicht funktioniern?
zweiteres, hast du die erlaubnis von Klex, dass script zu nutzen, bzw. ist es frei zur nutzung herausgegeben worden?^^"
bezüglich des WLH fehlers füg einfach folgendes in ein extrascript rein:
class Window_Base < Window
WLH = 24
end
dürfte zumindest den Fehler beheben.
lg flipy
-
danke für deine hilfe und was deine frage angeht, ich habe ihn nicht gefragt aber da oben steht
#Status Plus V 1.0 by Eugene
#Danke an Hanmac für seine Hilfe
#Credits an : Eugene, Hanmac
und ich dachte das dann credits ausreichen, sollte ich es überhaupt fertig kriegen. :what:
.................................................................................
das mit dem whl geht jetzt, dafür hängt es sich bei zeile 277 draw_actor_state(@actor, x- 28, y + WLH * 1) auf.
ich werd es lassen, obwohl es im menü toll aussieht. :nothing_to_say:
-
aso okay, dachte wäre so ein custom script für klex gewesen, wie er manchmal hat.
liegt eben daran, dass das Script ein VX Script ist. Beim Ace wurde vieles neu definiert und umstrukturiert. Ums zum Laufen zu bringen, müsste man im Window_Base die fehlenden Methoden ergänzen.
lg flipy
-
ich habs jetzt einfach rausgenommen und noch ein wenig angepasst, ich hoffe das es trotzdem läuft, auf jeden fall sieht es schon mal gut aus.
#======================================================================
#Status Plus V 1.0 by Eugene
#Danke an Hanmac für seine Hilfe
#Credits an : Eugene, Hanmac
#======================================================================
class Window_Status
#1-10 sind die IDs der Variablem im Game
Var = [1,2,3,4,5,6]
Var = [89,90,91,92,93,94,95,96,97,98]
def refresh
self.contents.clear
draw_actor_name(@actor, 4, 0)
draw_actor_class(@actor, 100, 0)
draw_actor_face(@actor, 0, 32)
draw_basic_info(128, 32)
draw_parameters(32, 160)
draw_exp_info(288, 32)
draw_equipments(288, 160)
end
def draw_basic_info(x, y)
self.contents.font.color = text_color(3)
self.contents.draw_text(230,165, 120, WLH, 'Fraktion')
self.contents.draw_text(362,165, 90, WLH, 'Gesinnung')
self.contents.draw_text(470,165, 40, WLH, 'Ruf')
self.contents.font.color = normal_color
self.contents.draw_text(230,190+25, 120, WLH, 'Helle Obere ')
self.contents.draw_text(230,215+30, 120, WLH, 'Dunkle Obere')
self.contents.draw_text(230,240+35, 120, WLH, 'Ockas ')
self.contents.draw_text(230,265+40, 120, WLH, 'Tarilianer ')
self.contents.draw_text(230,290+45, 120, WLH, 'Mahnè ')
self.contents.draw_text(230,315+50, 120, WLH, 'Masaru ')
temp = $game_variables[Var[0]]
if temp >= 300
self.contents.font.color = text_color(11)
self.contents.draw_text(362,190+25 , 90, WLH, 'Ehfürchtig')
self.contents.draw_text(462,190+25 , 40, WLH, $game_variables[Var[0]])
elsif temp >= 200
self.contents.font.color = text_color(03)
self.contents.draw_text(362,190+25 , 90, WLH, 'Wohlwollend')
self.contents.draw_text(462,190+25 , 40, WLH, $game_variables[Var[0]])
elsif temp >= 100
self.contents.font.color = text_color(24)
self.contents.draw_text(362,190+25 , 90, WLH, 'Freundlich')
self.contents.draw_text(462,190+25 , 40, WLH, $game_variables[Var[0]])
elsif temp > -100
self.contents.font.color = text_color(17)
self.contents.draw_text(362,190+25 ,90, WLH, 'Neutral')
self.contents.draw_text(462,190+25 , 40, WLH, $game_variables[Var[0]])
elsif temp <= -100
self.contents.font.color = text_color(18)
self.contents.draw_text(362,190+25 , 90, WLH, 'Feindlich')
self.contents.draw_text(462,190+25 , 40, WLH, $game_variables[Var[0]])
end
temp1 = $game_variables[Var[1]]
if temp1 >= 300
self.contents.font.color = text_color(11)
self.contents.draw_text(362,215+30 , 90, WLH, 'Ehfürchtig')
self.contents.draw_text(462,215+30 , 40, WLH, $game_variables[Var[1]])
elsif temp1 >= 200
self.contents.font.color = text_color(03)
self.contents.draw_text(362,215+30 , 90, WLH, 'Wohlwollend')
self.contents.draw_text(462,215+30 , 40, WLH, $game_variables[Var[1]])
elsif temp1 >= 100
self.contents.font.color = text_color(24)
self.contents.draw_text(362,215+30 , 90, WLH, 'Freundlich')
self.contents.draw_text(462,215+30 , 40, WLH, $game_variables[Var[1]])
elsif temp1 > -100
self.contents.font.color = text_color(17)
self.contents.draw_text(362,215+30 ,90, WLH, 'Neutral')
self.contents.draw_text(462,215+30 , 40, WLH, $game_variables[Var[1]])
elsif temp1 <= -100
self.contents.font.color = text_color(18)
self.contents.draw_text(362,215+30 , 90, WLH, 'Feindlich')
self.contents.draw_text(462,215+30 , 40, WLH, $game_variables[Var[1]])
end
temp2 = $game_variables[Var[2]]
if temp2 >= 300
self.contents.font.color = text_color(11)
self.contents.draw_text(362,240+35 , 90, WLH, 'Ehfürchtig')
self.contents.draw_text(462,240+35 , 40, WLH, $game_variables[Var[2]])
elsif temp2 >= 200
self.contents.font.color = text_color(03)
self.contents.draw_text(362,240+35 , 90, WLH, 'Wohlwollend')
self.contents.draw_text(462,240+35 , 40, WLH, $game_variables[Var[2]])
elsif temp2 >= 100
self.contents.font.color = text_color(24)
self.contents.draw_text(362,240+35 , 90, WLH, 'Freundlich')
self.contents.draw_text(462,240+35 , 40, WLH, $game_variables[Var[2]])
elsif temp2 > -100
self.contents.font.color = text_color(17)
self.contents.draw_text(362,240+35 ,90, WLH, 'Neutral')
self.contents.draw_text(462,240+35 , 40, WLH, $game_variables[Var[2]])
elsif temp2 <= -100
self.contents.font.color = text_color(18)
self.contents.draw_text(362,240+35 , 90, WLH, 'Feindlich')
self.contents.draw_text(462,240+35 , 40, WLH, $game_variables[Var[2]])
end
temp3 = $game_variables[Var[3]]
if temp3 >= 300
self.contents.font.color = text_color(11)
self.contents.draw_text(362,265+40 , 90, WLH, 'Ehfürchtig')
self.contents.draw_text(462,265+40 , 40, WLH, $game_variables[Var[3]])
elsif temp3 >= 200
self.contents.font.color = text_color(03)
self.contents.draw_text(362,265+40 , 90, WLH, 'Wohlwollend')
self.contents.draw_text(462,265+40 , 40, WLH, $game_variables[Var[3]])
elsif temp3 >= 100
self.contents.font.color = text_color(24)
self.contents.draw_text(362,265+40 , 90, WLH, 'Freundlich')
self.contents.draw_text(462,265+40 , 40, WLH, $game_variables[Var[3]])
elsif temp3 > -100
self.contents.font.color = text_color(17)
self.contents.draw_text(362,265+40 ,90, WLH, 'Neutral')
self.contents.draw_text(462,265+40 , 40, WLH, $game_variables[Var[3]])
elsif temp3 <= -100
self.contents.font.color = text_color(18)
self.contents.draw_text(362,265+40 , 90, WLH, 'Feindlich')
self.contents.draw_text(462,265+40 , 40, WLH, $game_variables[Var[3]])
end
temp4 = $game_variables[Var[4]]
if temp4 >= 300
self.contents.font.color = text_color(11)
self.contents.draw_text(362,290+45 , 90, WLH, 'Ehfürchtig')
self.contents.draw_text(462,290+45 , 40, WLH, $game_variables[Var[4]])
elsif temp4 >= 200
self.contents.font.color = text_color(03)
self.contents.draw_text(362,290+45 , 90, WLH, 'Wohlwollend')
self.contents.draw_text(462,290+45 , 40, WLH, $game_variables[Var[4]])
elsif temp4 >= 100
self.contents.font.color = text_color(24)
self.contents.draw_text(362,290+45 , 90, WLH, 'Freundlich')
self.contents.draw_text(462,290+45 , 40, WLH, $game_variables[Var[4]])
elsif temp4 > -100
self.contents.font.color = text_color(17)
self.contents.draw_text(362,290+45 ,90, WLH, 'Neutral')
self.contents.draw_text(462,290+45 , 40, WLH, $game_variables[Var[4]])
elsif temp4<= -100
self.contents.font.color = text_color(18)
self.contents.draw_text(362,290+45 , 90, WLH, 'Feindlich')
self.contents.draw_text(462,290+45 , 40, WLH, $game_variables[Var[4]])
end
temp5 = $game_variables[Var[5]]
if temp5 >= 300
self.contents.font.color = text_color(11)
self.contents.draw_text(362,315+50 , 90, WLH, 'Ehfürchtig')
self.contents.draw_text(462,315+50 , 40, WLH, $game_variables[Var[5]])
elsif temp5 >= 200
self.contents.font.color = text_color(03)
self.contents.draw_text(362,315+50 , 90, WLH, 'Wohlwollend')
self.contents.draw_text(462,315+50 , 40, WLH, $game_variables[Var[5]])
elsif temp5 >= 100
self.contents.font.color = text_color(24)
self.contents.draw_text(362,315+50 , 90, WLH, 'Freundlich')
self.contents.draw_text(462,315+50 , 40, WLH, $game_variables[Var[5]])
elsif temp5 > -100
self.contents.font.color = text_color(17)
self.contents.draw_text(362,315+50 ,90, WLH, 'Neutral')
self.contents.draw_text(462,315+50 , 40, WLH, $game_variables[Var[5]])
elsif temp5 <= -100
self.contents.font.color = text_color(18)
self.contents.draw_text(362,315+50 , 90, WLH, 'Feindlich')
self.contents.draw_text(462,315+50 , 40, WLH, $game_variables[Var[5]])
end
def draw_equipments(x, y)
end
end
end
hmpf, ich habe alles hingekriegt, aber es funktioniert nicht, alle variablen hab ich richtig eingestellt, aber irgendwas muß ich vergessen haben. :cry: HILFE
-
Hallo ihr lieben,
ich hab folgendes Problem mit dem "Xtended Equipment" Skript.
Bei einem neuen Testpiel funktionierts, aber wenn ich den Spielstand lade und
dann ein Item ausrüsten will kommt diese Fehlermeldung:
Skript´Xtended Equipment Line 75: NoMethodError occurred.
undefined method '[]´for nil:Nil Class
Ich hab nicht viel Ahnung vom skripten,
könnt ihr mir bitte helfen.
Was muss ich ändern damit es auch nach dem speichern funktioniert?
-
gespeicherte Spielstände können nicht mehr geladen werden, wenn ein neues Script eingefügt wird.
lg flipy
-
Habe das Skript vor dem Speichern eingefügt.
-
also Script eingefügt, Testplay, gespeichert, dann ausgemacht bzw. neu gestartet und Spielstand geladen?
-
Ja genau
-
hast du eventuell irgendwelche Scripts, die die Speicherfunktion erweitern oder ähnliches?
bzw. was hast du denn sonst noch für Scripts drinnen?
-
Hab noch ein paar andere skripts, und um alle auszuschliessen hab ich grad mal nen test in einem neuen projekt gemacht nur mit dem Xtended Equipment Skript.
Und Problem bleibt.