RPGVX.net
RPG-Maker VX => VX Skripte [Fertiger Code] => Thema gestartet von: Phi am Januar 10, 2010, 01:15:45
-
ne anfrage im technikforum, naja
wenn man drüber nachdenkt ganz nützlich
natürlich über main einfügen
MAX = 10000
class Game_Party < Game_Unit
def gain_item(item, n, include_equip = false)
number = item_number(item)
case item
when RPG::Item
@items[item.id] = [[number + n, 0].max, MAX].min
when RPG::Weapon
@weapons[item.id] = [[number + n, 0].max, MAX].min
when RPG::Armor
@armors[item.id] = [[number + n, 0].max, MAX].min
end
n += number
if include_equip and n < 0
for actor in members
while n < 0 and actor.equips.include?(item)
actor.discard_equip(item)
n += 1
end
end
end
end
end
-
Spitze :) danke
-
ja ist wirklich ncht schlecht aber den kgc_database breaker find ich besser und da kann man mehr einstellen :)
-
du darfst den Limitbreaker ruhig besser finden weil man da ja mehr einstellen kann, nur eine Funktion fehlt ihm.
Nämlich die Maximale Itemzahl zu ändern.
-
sry habe das falsch im gedächtnis gehabt,
KGC_Limit Break hieß es xD
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ ? Unlimit Parameters - KGC_LimitBreak ? VX ?
#_/ ? Last update : 2008/01/09
#_/ ? Written by TOMY
#_/ ? Translation by Touchfuzzy
#_/ ? KGC Site:
#_/ ? http://ytomy.sakura.ne.jp/
#_/-----------------------------------------------------------------------------
#_/ Installation: Because this script overwrites many classes(given its nature)
#_/ it must be inserted as at top of all other custom scripts.
#_/=============================================================================
#_/ This script allows you to go beyond the game's set limit of levels, stats
#_/ various parameters of enemies, money in hand, and possessed items.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#==============================================================================#
# ? Customization ? #
#==============================================================================#
module KGC
module LimitBreak
# 0. Levels 1-99 are determined normally, all levels after 99 are determined
# by the equation used in PARAMETER_CALC_EXP.
# 1. The stats listed in the database are only used as variables in the
# following equations:
# ax^2 + bx + c
# a = What is set in the Database as the level 1 score of the
# corresponding stat.
# b = What is set in the Database as the level 2 score of the
# corresponding stat.
# c = What is set in the Database as the level 3 score of the
# corresponding stat.
# x = characters current level.
# 2. The stats listed in the database are only used as variables in the
# following equations:
# bx + c
# b = What is set in the Database as the level 2 score of the
# corresponding stat.
# c = What is set in the Database as the level 3 score of the
# corresponding stat.
# x = characters current level.
PARAMETER_CALC_METHOD = 1
# The following is the equation used for level 100 up if you are using
# PARAMETER_CALC_METHOD = 0. The following uses the difference between the
# stat at level 98 and level 99 at level 100 and each level afterwords.
PARAMETER_CALC_EXP = "(param[99] - param[98]) * (level - 99)"
# CHARACTER MAX LEVELS
ACTOR_FINAL_LEVEL = [] # ? DO NOT REMOVE.
# Put in the level max you wish for individual characters here
# ACTOR_FINAL_LEVEL[actor ID] = max level
# ? This sets the max level of Actor 1 to 999
ACTOR_FINAL_LEVEL[1] = 9999
# This sets the max for any character who is not specifically set in the
# above section.
ACTOR_FINAL_LEVEL_DEFAULT = 9999
# This sets the max amount of experience a character can earn.
ACTOR_EXP_LIMIT = 99999999
# This sets the Max HP a character can gain.
ACTOR_MAXHP_LIMIT = 999999
# This sets the Max MP a character can gain.
ACTOR_MAXMP_LIMIT = 999999
# This sets the max a character gain in Attack, Defense, Spirit, and Agility.
ACTOR_PARAMETER_LIMIT = 999999
# This sets the Max HP an enemy can have.
ENEMY_MAXHP_LIMIT = 9999999
# This sets the Max MP an enemy can have.
ENEMY_MAXMP_LIMIT = 9999999
# This sets the max an enemy can have in Attack, Defense, Spirit, and Agility
ENEMY_PARAMETER_LIMIT = 999999
# Since you cannot put stats higher than the old maxes in the database this
# allows you to increase the numbers written in the database.
# Each as written as a percentage so if you wanted to multiply Max HP by 10
# then you would enter ENEMY_MAXHP_RATE = 1000
ENEMY_MAXHP_RATE = 100 # MaxHP
ENEMY_MAXMP_RATE = 100 # MaxMP
ENEMY_ATK_RATE = 100 # Attack
ENEMY_DEF_RATE = 100 # Defense
ENEMY_SPI_RATE = 100 # Spirit
ENEMY_AGI_RATE = 100 # Agility
# This sets the Max gold a character can have.
GOLD_LIMIT = 99999999
# This sets the Max number of items of the same kind a character can carry
ITEM_NUMBER_LIMIT = 99999
module_function
# The following lets you set specific stats of enemies individually.
def set_enemy_parameters
# Examples
# Enemy ID:10 Set MaxHP to 2000000
# $data_enemies[10].maxhp = 2000000
# Enemy ID:16 Set Attack to 5000
# $data_enemies[16].atk = 5000
# Enemy ID:20 Multiply current Defense by 2
# $data_enemies[20].def *= 2
end
end
end
#------------------------------------------------------------------------------#
$imported = {} if $imported == nil
$imported["LimitBreak"] = true
module KGC::LimitBreak
# Regular Expression Module.
module Regexp
# Base Item Module
module BaseItem
# Number Limit tag string
NUMBER_LIMIT = /^<(?:NUMBER_LIMIT|numberlimit)[ ]*(\d+)>/i
end
end
module_function
#--------------------------------------------------------------------------
# ? Enemy's ability correction is applied.
#--------------------------------------------------------------------------
def revise_enemy_parameters
(1...$data_enemies.size).each { |i|
enemy = $data_enemies[i]
enemy.maxhp = enemy.maxhp * ENEMY_MAXHP_RATE / 100
enemy.maxmp = enemy.maxmp * ENEMY_MAXMP_RATE / 100
enemy.atk = enemy.atk * ENEMY_ATK_RATE / 100
enemy.def = enemy.def * ENEMY_DEF_RATE / 100
enemy.spi = enemy.spi * ENEMY_SPI_RATE / 100
enemy.agi = enemy.agi * ENEMY_AGI_RATE / 100
}
end
end
#==============================================================================
# ¦ RPG::BaseItem
#==============================================================================
class RPG::BaseItem
#--------------------------------------------------------------------------
# ? Generate Cache: limit Break
#--------------------------------------------------------------------------
def create_limit_break_cache
@__number_limit = KGC::LimitBreak::ITEM_NUMBER_LIMIT
@note.split(/[\r\n]+/).each { |line|
if line =~ KGC::LimitBreak::Regexp::BaseItem::NUMBER_LIMIT
# ?????
@__number_limit = $1.to_i
end
}
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def number_limit
create_limit_break_cache if @__number_limit == nil
return @__number_limit
end
end
#==================================End Class===================================#
#==============================================================================
# ¦ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ? MaxHP ??????
#--------------------------------------------------------------------------
def maxhp_limit
return KGC::LimitBreak::ENEMY_MAXHP_LIMIT
end
#--------------------------------------------------------------------------
# ? MaxMP ??????
#--------------------------------------------------------------------------
def maxmp_limit
return KGC::LimitBreak::ENEMY_MAXMP_LIMIT
end
#--------------------------------------------------------------------------
# ? MaxMP ???
#--------------------------------------------------------------------------
def maxmp
return [[base_maxmp + @maxmp_plus, 0].max, maxmp_limit].min
end
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def parameter_limit
return KGC::LimitBreak::ENEMY_PARAMETER_LIMIT
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def atk
n = [base_atk + @atk_plus, 1].max
states.each { |state| n *= state.atk_rate / 100.0 }
n = [[Integer(n), 1].max, parameter_limit].min
return n
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def def
n = [base_def + @def_plus, 1].max
states.each { |state| n *= state.def_rate / 100.0 }
n = [[Integer(n), 1].max, parameter_limit].min
return n
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def spi
n = [base_spi + @spi_plus, 1].max
states.each { |state| n *= state.spi_rate / 100.0 }
n = [[Integer(n), 1].max, parameter_limit].min
return n
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def agi
n = [base_agi + @agi_plus, 1].max
states.each { |state| n *= state.agi_rate / 100.0 }
n = [[Integer(n), 1].max, parameter_limit].min
return n
end
#--------------------------------------------------------------------------
# ? MaxHP ???
# new_maxhp : ??? MaxHP
#--------------------------------------------------------------------------
def maxhp=(new_maxhp)
@maxhp_plus += new_maxhp - self.maxhp
@maxhp_plus = [[@maxhp_plus, -maxhp_limit].max, maxhp_limit].min
@hp = [@hp, self.maxhp].min
end
#--------------------------------------------------------------------------
# ? MaxMP ???
# new_maxmp : ??? MaxMP
#--------------------------------------------------------------------------
def maxmp=(new_maxmp)
@maxmp_plus += new_maxmp - self.maxmp
@maxmp_plus = [[@maxmp_plus, -maxmp_limit].max, maxmp_limit].min
@mp = [@mp, self.maxmp].min
end
#--------------------------------------------------------------------------
# ? ??????
# new_atk : ??????
#--------------------------------------------------------------------------
def atk=(new_atk)
@atk_plus += new_atk - self.atk
@atk_plus = [[@atk_plus, -parameter_limit].max, parameter_limit].min
end
#--------------------------------------------------------------------------
# ? ??????
# new_def : ??????
#--------------------------------------------------------------------------
def def=(new_def)
@def_plus += new_def - self.def
@def_plus = [[@def_plus, -parameter_limit].max, parameter_limit].min
end
#--------------------------------------------------------------------------
# ? ??????
# new_spi : ??????
#--------------------------------------------------------------------------
def spi=(new_spi)
@spi_plus += new_spi - self.spi
@spi_plus = [[@spi_plus, -parameter_limit].max, parameter_limit].min
end
#--------------------------------------------------------------------------
# ? ??????
# agi : ??????
#--------------------------------------------------------------------------
def agi=(new_agi)
@agi_plus += new_agi - self.agi
@agi_plus = [[@agi_plus, -parameter_limit].max, parameter_limit].min
end
end
#==================================End Class===================================#
#==============================================================================
# ¦ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def make_exp_list
@exp_list = Array.new(final_level + 2)
@exp_list[1] = @exp_list[final_level + 1] = 0
m = actor.exp_basis
n = 0.75 + actor.exp_inflation / 200.0
(2..final_level).each { |i|
@exp_list[i] = @exp_list[i-1] + Integer(m)
m *= 1 + n
n *= 0.9
}
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def final_level
n = KGC::LimitBreak::ACTOR_FINAL_LEVEL[self.id]
return (n != nil ? n : KGC::LimitBreak::ACTOR_FINAL_LEVEL_DEFAULT)
end
#--------------------------------------------------------------------------
# ? MaxHP ??????
#--------------------------------------------------------------------------
def maxhp_limit
return KGC::LimitBreak::ACTOR_MAXHP_LIMIT
end
#--------------------------------------------------------------------------
# ? MaxMP ??????
#--------------------------------------------------------------------------
def maxmp_limit
return KGC::LimitBreak::ACTOR_MAXMP_LIMIT
end
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def parameter_limit
return KGC::LimitBreak::ACTOR_PARAMETER_LIMIT
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def exp_limit
return KGC::LimitBreak::ACTOR_EXP_LIMIT
end
#--------------------------------------------------------------------------
# ? ??????
# exp : ??????
# show : ???????????
#--------------------------------------------------------------------------
def change_exp(exp, show)
last_level = @level
last_skills = skills
@exp = [[exp, exp_limit].min, 0].max
while @exp >= @exp_list[@level+1] && @exp_list[@level+1] > 0
level_up
end
while @exp < @exp_list[@level]
level_down
end
@hp = [@hp, maxhp].min
@mp = [@mp, maxmp].min
if show && @level > last_level
display_level_up(skills - last_skills)
end
end
#--------------------------------------------------------------------------
# ? ??????
# level : ??????
# show : ???????????
#--------------------------------------------------------------------------
def change_level(level, show)
level = [[level, final_level].min, 1].max
change_exp(@exp_list[level], show)
end
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
def base_parameter(type)
case KGC::LimitBreak::PARAMETER_CALC_METHOD
when 0 # ????
if @level >= 100
calc_text = KGC::LimitBreak::PARAMETER_CALC_EXP.dup
calc_text.gsub!(/level/i) { "@level" }
calc_text.gsub!(/param\[(\d+)\]/i) {
"actor.parameters[type, #{$1.to_i}]"
}
return actor.parameters[type, 99] + eval(calc_text)
end
when 1 # ????
a = actor.parameters[type, 1]
b = actor.parameters[type, 2]
c = actor.parameters[type, 3]
return ((a * @level + b) * @level + c)
when 2 # ????
b = actor.parameters[type, 2]
c = actor.parameters[type, 3]
return (b * @level + c)
end
return actor.parameters[type, @level]
end
#--------------------------------------------------------------------------
# ? ?? MaxHP ???
#--------------------------------------------------------------------------
def base_maxhp
return base_parameter(0)
end
#--------------------------------------------------------------------------
# ? ?? MaxMP ???
#--------------------------------------------------------------------------
def base_maxmp
return base_parameter(1)
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def base_atk
n = base_parameter(2)
equips.compact.each { |item| n += item.atk }
return n
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def base_def
n = base_parameter(3)
equips.compact.each { |item| n += item.def }
return n
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def base_spi
n = base_parameter(4)
equips.compact.each { |item| n += item.spi }
return n
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def base_agi
n = base_parameter(5)
equips.compact.each { |item| n += item.agi }
return n
end
end
#==================================End Class===================================#
#==============================================================================
# ¦ Game_Party
#==============================================================================
class Game_Party < Game_Unit
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def gold_limit
return KGC::LimitBreak::GOLD_LIMIT
end
#--------------------------------------------------------------------------
# ? ??????? (??)
# n : ??
#--------------------------------------------------------------------------
def gain_gold(n)
@gold = [[@gold + n, 0].max, gold_limit].min
end
#--------------------------------------------------------------------------
# ? ??????? (??)
# item : ????
# n : ??
# include_equip : ???????
#--------------------------------------------------------------------------
def gain_item(item, n, include_equip = false)
number = item_number(item)
case item
when RPG::Item
@items[item.id] = [[number + n, 0].max, item.number_limit].min
when RPG::Weapon
@weapons[item.id] = [[number + n, 0].max, item.number_limit].min
when RPG::Armor
@armors[item.id] = [[number + n, 0].max, item.number_limit].min
end
n += number
if include_equip && n < 0
members.each { |actor|
while n < 0 && actor.equips.include?(item)
actor.discard_equip(item)
n += 1
end
}
end
end
end
#==================================End Class===================================#
#==============================================================================
# ¦ Window_ShopBuy
#==============================================================================
class Window_ShopBuy < Window_Selectable
#--------------------------------------------------------------------------
# ? ?????
# index : ????
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
number = $game_party.item_number(item)
enabled = (item.price <= $game_party.gold && number < item.number_limit)
rect = item_rect(index)
self.contents.clear_rect(rect)
draw_item_name(item, rect.x, rect.y, enabled)
rect.width -= 4
self.contents.draw_text(rect, item.price, 2)
end
end
#==================================End Class===================================#
#==============================================================================
# ¦ Scene_Title
#==============================================================================
class Scene_Title < Scene_Base
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
alias load_database_KGC_LimitBreak load_database
def load_database
load_database_KGC_LimitBreak
set_enemy_parameters
end
#--------------------------------------------------------------------------
# ? ????????????????
#--------------------------------------------------------------------------
alias load_bt_database_KGC_LimitBreak load_bt_database
def load_bt_database
load_bt_database_KGC_LimitBreak
set_enemy_parameters
end
#--------------------------------------------------------------------------
# ? ???????????
#--------------------------------------------------------------------------
def set_enemy_parameters
KGC::LimitBreak.revise_enemy_parameters
KGC::LimitBreak.set_enemy_parameters
end
end
#==================================End Class===================================#
#==============================================================================
# ¦ Scene_File
#==============================================================================
class Scene_File < Scene_Base
#--------------------------------------------------------------------------
# ? ???????????
# file : ??????????????? (??????)
#--------------------------------------------------------------------------
alias read_save_data_KGC_LimitBreak read_save_data
def read_save_data(file)
read_save_data_KGC_LimitBreak(file)
(1...$data_actors.size).each { |i|
actor = $game_actors[i]
actor.make_exp_list
# ?????????
if actor.level > actor.final_level
while actor.level > actor.final_level
actor.level_down
end
# ???? HP ????????????????
actor.change_level(actor.final_level, false)
end
}
end
end
#==================================End Class===================================#
#==============================================================================
# ¦ Scene_Shop
#==============================================================================
class Scene_Shop < Scene_Base
#--------------------------------------------------------------------------
# ? ???????????
#--------------------------------------------------------------------------
def update_buy_selection
@status_window.item = @buy_window.item
if Input.trigger?(Input::B)
Sound.play_cancel
@command_window.active = true
@dummy_window.visible = true
@buy_window.active = false
@buy_window.visible = false
@status_window.visible = false
@status_window.item = nil
@help_window.set_text("")
return
end
if Input.trigger?(Input::C)
@item = @buy_window.item
number = $game_party.item_number(@item)
if @item == nil || @item.price > $game_party.gold ||
number == @item.number_limit
Sound.play_buzzer
else
Sound.play_decision
max = (@item.price == 0 ?
@item.number_limit : $game_party.gold / @item.price)
max = [max, @item.number_limit - number].min
@buy_window.active = false
@buy_window.visible = false
@number_window.set(@item, max, @item.price)
@number_window.active = true
@number_window.visible = true
end
end
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/special_system&tech=limit_break
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
credit:
Written by TOMY
Translation by Touchfuzzy
KGC
-
auch wenn du den Falschen Namen genannt hast wusste ich bei "Database breaker" was du meintest und nein
mit dem Script kann man zwar mehr als 999 verschiedene Items, also die Maximala Anzahl an Items haben aber von allem nur 99 Stück
der Limitbreaker ändert den Wert der im Vorhinein geladen wird.
Mein Script greift auf Game_Party zu und ändert die Maximale Itemzahl von 99 auf einen gewünschten Wert. So kann man immer noch 999 verschidene Items haben aber von allen 10.000 Stück
die beiden Scripte haben nichts gemeinsam wenn du sie dir mal kurz ansiehst
-
Ich glaube hier liegt ein Missverständniss vor.
Limit Breaker : Maximale Anzahl VERSCHIEDENER Items erhöhen usw.
Phi´s Script : Maximale Anzahl von Items INGAME, also das du z.B. 10000 Poitons haben kannst.
@Phi schon so richtig oder?
-
OK tut mr vielmals leid :(
habe ich dann anscheind wirklich sehr dolle falsch verstanden :(
-
@Derexor
stimmt so ^^
@Noa
kein Problem
ich hab ja keine Beschreibung beigelegt gehabt
sollte ich demnächst machen
-
Wo genau muss ich denn den Skriptcode einfügen?? hab des beim Scripteditor ganz unten bei Main eingefügt.Aber des ist dann immer noch so das es die maximale Anzahl eines Items 99 beträgt. kann mit jemand helfen?
-
Hi und Willkommen,
leider muss das Script genau nicht unter Main eingefügt werden. ^^
Füg es unter "Materials" ein und es wird klappen.
MfG
Deity
-
Der Skript ist gut.
Nunja kann jetzt zwar über 99 von ein selben item haben aber des ist immer noch so dass ich ab 99 von selber Item
nicht mehr davon im Shop kaufen kann. Kann man das irgenwie umstellen? Antwort wäre nett^^
-
Geh in Scene_Shop zur Zeile 143.
if @item == nil or @item.price > $game_party.gold or number == 99
Ausserdem zu den Zeilen 147 und 148.
max = @item.price == 0 ? 99 : $game_party.gold / @item.price
max = [max, 99 - number].min
Nun musst du nur noch die 99 in die Maximale Itemanzahl umändern.
Als nächstes musst du in Window_ShopBuy Script.
Gehe hier zur Zeile 56
enabled = (item.price <= $game_party.gold and number < 99)
und ersetze nun die 99 mit der tatsächlichen Maximalen Itemanzahl.
MfG
Deity
-
thx Ðeity für die Antwort aber ist jetzt bloß irgendwie so dass wenn ich 99 hab nichts mehr von diesen Item im Shop kaufen kann aber ab 100 kann ich
des im Shop kaufen aber bloß immer 1 naja bin eigentlich trotzdem zufrieden also danke für die Antwort^^
-
Kein Problöemm, aber du hast wahrscheinlich eine der 99 ausgelassen. Vergleiche es nochmal mit meinem Post, und dann sollte es gehen.
MfG
Deity
-
Hab nochmal genau nachgeschauen aber hab die alle 99 durch meine max Itemanzahl ersetzt und ist immer noch so wie oben beschrieben^^
-
ich hoffe das das jezt nich necro-posting ist aber ich habe da noch eine Frage:
man kann ja auch einstellen dasbestimmte Items so und so oft getragen werden können und bestimmte andere wieder so und so oft, wie würde das mit Item ID 001 und zB 20 davon tragbar aussehen?
-
bei mir kommt da immer ein fehler, beim vorletzten end :(