RPGVX.net
RPG-Maker VX => VX Skripte [Fertiger Code] => Thema gestartet von: MelekTaus am Juli 08, 2009, 22:21:53
-
MelekTaus' CustomStates
Beschreibung
Mithilfe dieses Scriptes ist es möglich einer Waffe/Rüstung einen Mindest-State zuzuweisen.
Zum Beispiel: Eine Waffe benötigt 8 Stärke um sie ausrüsten zu können (Gothic-Kenner wissen wo von ich rede ;))
Man kann bis zu 4 States definieren, die dann im Status-Fenster eines Party-Members angezeigt wird.
Ebenfalls kann man einen Wert definieren, wie viele State-Punkte man pro Level-Up vergeben möchte.
Eine Anleitung steht im Kopf des Scripts.
#==============================================================================
# MelekTaus' CustomStates
# Version: 0.9b
#------------------------------------------------------------------------------
# Anleitung
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Um den erforderlichen State einer Waffe/Rüstung festzulegen trage folgendes
# in den Notes ein: <state1 X> (X => erforderlicher State)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Um einen State eines Characters festzulegen oder abzurufen verwende folgendes:
# actor(X).state1 = Y --> State1 von Actor X (ID aus der Datenbank) => Y
# member(X).state1 = Y --> State1 von Member X (Index aus der Gruppe) => Y
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# state2, state3 und state4 wendet man genauso an wie state1
#==============================================================================
module MelekTaus
#--------------------------------------------------------------------------
module CustomStates
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
USE_STATES = 2 # Wieviele States willst du benutzen?
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NAME_STATE_1 = "Stärke" # Name des ersten States
NAME_STATE_2 = "Geschicklichkeit" # Name des zweiten States
NAME_STATE_3 = "" # Name des dritten States
NAME_STATE_4 = "" # Name des vierten States
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LEVEL_UP_STATES = 4 # Wieviele States willst du beim Level-Up vergeben?
WARNING_ACCEPT_TEXT = "(Drücke eine Taste um fortzufahren...)"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
end
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
attr_accessor :state1
attr_accessor :state2
attr_accessor :state3
attr_accessor :state4
#--------------------------------------------------------------------------
alias melektaus_minreq_game_player_initialize initialize
def initialize
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
melektaus_minreq_game_player_initialize
@state1 = 0
@state2 = 0
@state3 = 0
@state4 = 0
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
end
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
attr_accessor :custom_states
#--------------------------------------------------------------------------
alias melektaus_minreq_game_actor_initialize initialize
def initialize(actor_id)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
melektaus_minreq_game_actor_initialize(actor_id)
@custom_states = 0
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
alias melektaus_minreq_game_actor_level_up level_up
def level_up
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
melektaus_minreq_game_actor_level_up
@custom_states += MelekTaus::CustomStates::LEVEL_UP_STATES
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
end
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
def actor(id)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
return $game_actors[id]
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
def member(index)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
return $game_party.members[index]
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
end
#==============================================================================
class Window_MinReq_Warning < Window_Base
#--------------------------------------------------------------------------
def initialize(text)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
height = 52
for i in 0...text.size
height += 20 unless text[i] == ""
end
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
super(72, 172, 460, height)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
y = -20
for i in 0...text.size
unless text[i] == ""
self.contents.draw_text(0, y += 20, 428, 20, text[i], 1)
end
end
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
text = MelekTaus::CustomStates::WARNING_ACCEPT_TEXT
self.contents.font.size -= 4
self.contents.draw_text(0, y += 20, 428, 16, text, 1)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin
Graphics.update
Input.update
end until Input.trigger?(Input::C) or Input.trigger?(Input::B)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
dispose
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
end
#==============================================================================
class Window_MinReq_LevelUp_Info < Window_Base
#--------------------------------------------------------------------------
def initialize(actor_id)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
super(80, 20, 382, 144)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@actor_id = actor_id
states = 0
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
def states
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
return @states
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
def states=(value)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@states = value
refresh
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
def refresh
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
self.contents.clear
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
actor = $game_actors[@actor_id]
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
self.draw_actor_face(actor, 2, 2, 92)
self.draw_actor_name(actor, 104, 12)
self.draw_actor_class(actor, 224, 12)
self.draw_actor_level(actor, 104, 36)
self.draw_actor_state(actor, 104, 60)
self.draw_actor_hp(actor, 224, 36)
self.draw_actor_mp(actor, 224, 60)
self.contents.draw_text(104, 84, 246, 24, "Übrig: " + states.to_s)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
end
#==============================================================================
class Window_MinReq_LevelUp_State < Window_Selectable
#--------------------------------------------------------------------------
def initialize(actor_id)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
super(80, 164, 382, 216)
self.index = 0
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@actor_id = actor_id
@item_max = MelekTaus::CustomStates::USE_STATES
refresh
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
def refresh
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
self.contents.clear
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
actor = $game_actors[@actor_id]
state1 = MelekTaus::CustomStates::NAME_STATE_1
state2 = MelekTaus::CustomStates::NAME_STATE_2
state3 = MelekTaus::CustomStates::NAME_STATE_3
state4 = MelekTaus::CustomStates::NAME_STATE_4
x = MelekTaus::CustomStates::USE_STATES
draw_item(0, state1 + " (" + actor.state1.to_s + ")")
draw_item(1, state2 + " (" + actor.state2.to_s + ")") if x > 1
draw_item(2, state3 + " (" + actor.state3.to_s + ")") if x > 2
draw_item(3, state4 + " (" + actor.state4.to_s + ")") if x > 3
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
def draw_item(index, text)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
rect = item_rect(index)
rect.x += 4
rect.width -= 8
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
self.contents.clear_rect(rect)
self.contents.draw_text(rect, text)
self.contents.draw_text(rect, "+ 1", 2)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
end
#==============================================================================
class Window_Status < Window_Base
#--------------------------------------------------------------------------
alias melektaus_minreq_window_status_refresh refresh
def refresh
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
melektaus_minreq_window_status_refresh
draw_custom_states(32, 270)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
def draw_custom_states(x, y)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
for i in 0...MelekTaus::CustomStates::USE_STATES
draw_actor_custom_state(@actor, x, y + WLH * i, i)
end
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
def draw_actor_custom_state(actor, x, y, type)
case type
when 0
state_name = MelekTaus::CustomStates::NAME_STATE_1
state_value = actor.state1
when 1
state_name = MelekTaus::CustomStates::NAME_STATE_2
state_value = actor.state2
when 2
state_name = MelekTaus::CustomStates::NAME_STATE_3
state_value = actor.state3
when 3
state_name = MelekTaus::CustomStates::NAME_STATE_4
state_value = actor.state4
end
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, WLH, state_name)
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y, 36, WLH, state_value, 2)
end
#--------------------------------------------------------------------------
end
#==============================================================================
class Scene_Equip < Scene_Base
#--------------------------------------------------------------------------
def get_state(id, item)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
return 0 if item == nil
array = item.note.split("<state#{id} ")
return 0 if array.size < 2
return array[1].split(" >")[0].to_i
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
def update_item_selection
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
if Input.trigger?(Input::B)
Sound.play_cancel
@equip_window.active = true
@item_window.active = false
@item_window.index = -1
elsif Input.trigger?(Input::C)
text = []
for i in 0...MelekTaus::CustomStates::USE_STATES
text.push("")
end
name = [MelekTaus::CustomStates::NAME_STATE_1]
name.push(MelekTaus::CustomStates::NAME_STATE_2)
name.push(MelekTaus::CustomStates::NAME_STATE_3)
name.push(MelekTaus::CustomStates::NAME_STATE_4)
actor_state = [@actor.state1,@actor.state2,@actor.state3,@actor.state4]
warning = false
for i in 0...text.size
state = get_state(i + 1, @item_window.item)
if actor_state[i] < state
text[i] += "Erforderliche #{name[i]}: " + state.to_s
text[i] += " (Zurzeit: " + actor_state[0].to_s + ")"
warning = true
end
end
if warning
Sound.play_buzzer
Window_MinReq_Warning.new(text)
return
end
Sound.play_equip
@actor.change_equip(@equip_window.index, @item_window.item)
@equip_window.active = true
@item_window.active = false
@item_window.index = -1
@equip_window.refresh
for item_window in @item_windows
item_window.refresh
end
end
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
end
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
alias melektaus_minreq_game_map_update update
def update
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
melektaus_minreq_game_map_update
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
for i in 0...$game_party.members.size
if $game_party.members[i].custom_states > 0
$scene = Scene_MinReq_LevelUp.new($game_party.members[i].id)
return
end
end
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
end
#==============================================================================
class Scene_MinReq_LevelUp < Scene_Base
#--------------------------------------------------------------------------
def initialize(actor_id)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@actor_id = actor_id
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
def start
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
super
create_menu_background
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@w_actor = Window_MinReq_LevelUp_Info.new(@actor_id)
@w_actor.states = $game_actors[@actor_id].custom_states
@w_state = Window_MinReq_LevelUp_State.new(@actor_id)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
def update
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
super
update_menu_background
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@w_actor.update
@w_state.update
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
if Input.trigger?(Input::C)
Sound.play_decision
case @w_state.index
when 0; $game_actors[@actor_id].state1 += 1
when 1; $game_actors[@actor_id].state2 += 1
when 2; $game_actors[@actor_id].state3 += 1
when 3; $game_actors[@actor_id].state4 += 1
end
@w_actor.states -= 1
@w_state.refresh
$game_actors[@actor_id].custom_states = @w_actor.states
$scene = Scene_Map.new if @w_actor.states == 0
end
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
def terminate
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
super
dispose_menu_background
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@w_actor.dispose
@w_state.dispose
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
end
#--------------------------------------------------------------------------
end
#==============================================================================
Schlussworte
Wie immer hoffe ich, dass dieses Script irgendwie brauchbar ist^^
Also dann...
Viel Freude damit und ein fröhliches Testen ;)
-
Also DAS find ich ja mal richtig brauchbar. Sowas hab ich schon irgendwie gesucht. Ich werds garantiert benutzen.
die idee ist echt klasse.
-
Oh man, MelekTaus...
...jetzt mal ehrlich! Du bist echt hammer. In Kürze soviele gute Skripte rauszuhauen...
Hab es noch nicht getestet, da ich im Moment selbst kaum an etwas makere, aber sobald ich wieder intensiv mit dem Maker arbeite, werd ich auf jeden Fall 1-2 deiner Skripte benutzen.
Sie sind alle einfach zu verstehen, äußerst nützlich, leicht einzubauen und darum erste Sahne.
So, musste dich jetzt einfach mal loben! ^^ Damit du auch ja nicht damit aufhörst uns mit weiterem zu versorgen. xD
Weiter so!
MfG RaZZoR
-
Deine Skripte sind echt der Hamma ^^
Für mein momentanes werde ich es warscheinlich nicht benutzen(weil es bei mir einfach keine weiteren Rüstungen bzw Waffen gibt, sondern die alten einfach aufgemotzt werden) aber hilfreich ist es auf jeden Fall
MfG Prince
-
Einfach nur genial^^
Werde es auf jeden fall benutzen.
Hoffe du bringst uns noch weiter so tolle Scripte :D
-
Tja ich kann mich den anderen nur anschließen..
Danke nochmal, dass du meine Script-Anfrage so toll umgesetzt hast!
Wird anderen Makern auch sicher zugute kommen :)
Lg michel
-
Oha!
Sowas hab ich eig. schon überall gesucht
aber nirgends was gutes gefunden.
Ganz ehrlich? Du bist genial xD
Nice.
Ich denk ich werds sogar nutzen.
(Auch wenn ich ein Schmide-Script nutzen will... Aber das kann man evtl.
Kombinieren *_*)
Thx!
-
Hallo MelekTaus!
Die ältere Version, wo man in den notes <stärke 3> eingeben musste, hat funktioniert, aber die neue mit <state1 3> geht bei mir irgendwie nicht.
Ich weiß nicht, ob ich bei den Notes etwas falsch eingebe oder dein Script sich nicht mit meinen anderen verträgt.
Also beim LevelUp erscheint das Fenster mit den States, die ich erhöhen kann. Aber wenn ich eine Waffe ausrüsten will, die zB mehr Stärke benötigt als ich habe, dann kann ich den Actor trotzdem damit ausrüsten, als gäbe es dieses Script gar nicht :(
Hab nen Screenshot gemacht von meinen Notes und den Scripts:
http://img3.imagebanana.com/view/jxujtgnz/Screenshot.bmp.png
Lg michel
-
Sry, war ein Schlampigkeitsfehler ^^"
Jetzt stimmts wieder ;)
MfG, MelekTaus
-
:D perfekt!
Das Script ist voll geil!
Thx & lg
michel
-
mir is aufgefallen
wenn man mehrere charakter hat die gleichzeitig aufleveln
kann man nur beim letzten die Statpunkte verteilen
ansonsten super script ^^
-
Fixed^^
Falls man jetzt auch mehrere Level auf einmal aufsteigen sollte, funktioniert es ebenfalls reibungslos ;)
MfG, MelekTaus
-
Echt guter Script! Gute Idee muss man schon sagen.
-
Klasse !
Kann man nun nach dem fixen wirklich gut gebrauchen !
-
Habe eine Frage und zwar kann man auch damit einstellen das man z.b. wenn man den state1 (Stärke) auf 8 hat ein bestimmtes neues Skill erlernt?
Antwort wäre nett
-
nein kann man nicht soweit mir bekannt ist, denn dieses Skript beeinflusst lediglich den Mindestwert eines States den du festgelegt hast, der dann benötigt wird um eine Waffe oder Rüstung zu tragen.
Skills können hierbei nicht beeinflusst werden.
Kvote
-
Habe eine Frage und zwar kann man auch damit einstellen das man z.b. wenn man den state1 (Stärke) auf 8 hat ein bestimmtes neues Skill erlernt?
Antwort wäre nett
MelekTaus ist seit Monaten nicht mehr im Forum gewesen und hat sich auch so nicht mehr gemeldet, dementsprechend wird vom ihm wohl keine Antwort kommen.
Da müsstest du dich wohl an einen unserer anderen Scripter wenden, etwa Deity oder Onkel Hell.
MkG
Kyoshiro
-
Dafür braucht man kein Script, in der Beschreibung steht eigentlich alles was man für das Skill erlernen durch States braucht. ^^
Als Beispiel nehmen wir mal an, dass der erste Spieler also Ralph 8 Stärke haben muss um ein Skill zu erlernen.
Dafür braucht man nur ein Common Event mit parallelem Prozess, der folgende Abfrage über den Conditional Branch (3. Seite) macht:
Conditional Branch: actor(1).state1 >= 8
Wenn ja lernt Ralph den Skill ansonsten geschieht einfach nichts.
Schon hast du so ein SKillsystem fertig. :)
MfG
Deity
-
Danke für die Antwort.
Aber wie meinst du das?
soll ich bei Datenbank ein Common Event erstellen (auf Seite 11) mit parallelen Prozess und dort Sript ausführen
Conditional Branch: actor(1).state1 >= 8
Oder meinst du damit das ich bei den Skill bei den Notizen unten rechts actor(1).state1 >= 8 schreiben soll? oder wie soll ich das machen?
Könntest du das bitte ganz ausführlich erklären wwäre nett versteh nämmlich davon noch nicht Sehr viel.
Post zusammen gefügt: März 28, 2010, 21:54:32
Aso weiß jetzt wie das geht hab mir deine Erklärung mehrmals durchgelesen und bin dann aufs richtige Ergebnis gekommen.
Man sollte wohl doch lieber erst gut lesen bevor man die nächste Frage stellt^^
Vielen dank Ðeity