Shadi
Preferowany:
Ranga RM:
Dołączył: 07 Lut 2010 Posty: 51
|
Wysłany: Nie 26 Sie, 2012 20:40
|
|
Prośba o edycję bestiariusza
|
Witajcie. Mam prośbę o edycję bestiariusza Fantasy Bestiary. Chodzi mi o zaledwie małą drobnostkę. Otóż, chciałbym żeby nie było na liście bestiariusza widać potworów, które mają numery w bazie danych 494 i wyższe. Chodzi o to, że chce tam ustawić potwory które będą miały inne ataki i statystyki niż te wcześniejsze, ale będą tego samego gatunku. A nie chcę żeby w bestiariuszu gatunek się powtarzał.
Z góry dziękuję za pomoc. Skrypt tutaj:
Kod: |
#===============================================================================
#--------# Fantasy Bestiary #--------------------------------------------
#--------# version 1.1 #--------------------------------------------
#--------# by Thieffer and Dante #--------------------------------------------
#--------# 14.07.2010 #--------------------------------------------
#===============================================================================
#===============================================================================
#--------# INFO #--------------------------------------------
#===============================================================================
# Wklej skrypt nad Main.
# Do prawidłowego działania potrzebna jest czcionka używana przez skrypt (standardowo Galileo Font)
# Bestiariusz wywołuje się komendą:
# $scene = Scene_Fantasy_Bestiary.new
# Po każdej wygranej bitwie, w bestiariuszu pojawia się nowo poznany potwór.
# Możesz również ręcznie dodać poznanego potwora. Użyj komendy:
# $game_party.add_known_enemy(id)
# gdzie zamiast id wpisz numer ID potwora z bazy danych.
#===============================================================================
#===============================================================================
#--------# CHANGELOG #--------------------------------------------
#===============================================================================
# ** version 1.0 (10.07.2010)
# - publikacja skryptu
# ** version 1.1 (14.07.2010)
# - dodano wyświetlanie: złota, doświadczenia oraz przedmiotu, jakie można
# zdobyć po zabiciu przeciwnika
# - dodano możliwość wyboru akcji po wyjściu z bestiariusza (na mapę lub do menu)
#===============================================================================
module Fantasy_Bestiary
DATA_BESTIARY = {
#===============================================================================
#--------# OPISY POTWORÓW #--------------------------------------------
#===============================================================================
# Schemat tworzenia opisów:
# ID_Potwora => [1 linijka opisu, 2 linijka opisu, 3 linijka opisu]
# Każdy z takich elementów musi być odzielony przecinkiem.
# W opisie potwora możesz użyć od 1 do 3 linjek tekstu.
# Jeśli nie stworzysz opisu potwora, to w bestiariuszu pozostanie puste miejsce.
#===============================================================================
}
#===============================================================================
#--------# CONFIG #--------------------------------------------
#===============================================================================
# Nazwa czcionki
FONT_NAME = "Trebuchet MS"
# Kolor czcionki komend, nagłówka
FONT_COLOR = Color.new(230, 230, 150, 255)
# Kolor czcionki statystyk
FONT_COLOR2 = Color.new(255, 255, 255, 255)
# Kolor czcionki liczby znanych potworów
FONT_COLOR3 = Color.new(255, 255, 255, 150)
# Rozmiar czcionki
FONT_SIZE = 18
# Nieprzezroczystość okienek (0-255)
OPACITY = 200
# Nieprzezroczystość obrazku tła (0-255)
BACKGROUND_OPACITY = 150
# Tekst nagłówka
HEADING_TEXT = "Pokedex"
# Rozmiar czcionki nagłówka
HEADING_FONT_SIZE = 30
# Grafika windowskina
WINDOWSKIN_GRAPHIC = "Windowskin4"
#===============================================================================
# Fantasy_Bestiary::Window_Command
#===============================================================================
class Window_Command < Window_Selectable
def initialize(width, commands)
super(32, 104, width, commands.size * 32 + 32)
@item_max = commands.size
@commands = commands
self.contents = Bitmap.new(width - 32, @item_max * 32)
self.opacity = Fantasy_Bestiary::OPACITY
self.windowskin = RPG::Cache.windowskin(Fantasy_Bestiary::WINDOWSKIN_GRAPHIC)
refresh
self.index = 0
end
def refresh
self.contents.clear
self.contents.font.name = Fantasy_Bestiary::FONT_NAME
for i in 0...@item_max
c = Fantasy_Bestiary::FONT_COLOR
draw_item(i, c)
end
end
def draw_item(index, color)
self.contents.font.color = color
rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.draw_text(rect, @commands[index])
end
def disable_item(index)
draw_item(index, disabled_color)
end
end
#===============================================================================
# Fantasy_Bestiary::Window_Heading
#===============================================================================
class Window_Heading < Window_Base
def initialize
super(32, 32, 576, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.opacity = Fantasy_Bestiary::OPACITY
self.windowskin = RPG::Cache.windowskin(Fantasy_Bestiary::WINDOWSKIN_GRAPHIC)
refresh
end
def refresh
self.contents.clear
self.contents.font.name = Fantasy_Bestiary::FONT_NAME
self.contents.font.color = Fantasy_Bestiary::FONT_COLOR
self.contents.font.size = Fantasy_Bestiary::HEADING_FONT_SIZE
self.contents.draw_text(0, 0, 544, 32, Fantasy_Bestiary::HEADING_TEXT, 1)
# Liczba poznanych potworów
self.contents.font.size = Fantasy_Bestiary::FONT_SIZE
self.contents.font.color = Fantasy_Bestiary::FONT_COLOR3
text = $game_party.number_of_known_enemies.to_s + " / " + ($data_enemies.size-1).to_s
self.contents.draw_text(484, 10, 60, 32, text, 2)
end
end
#===============================================================================
# Fantasy_Bestiary::Window_Enemy_Description
#===============================================================================
class Window_Enemy_Description < Window_Base
attr_accessor :enemy_id
def initialize
super(240, 104, 368, 344)
self.contents = Bitmap.new(width - 32, height - 32)
self.opacity = Fantasy_Bestiary::OPACITY
self.windowskin = RPG::Cache.windowskin(Fantasy_Bestiary::WINDOWSKIN_GRAPHIC)
if $game_party.number_of_known_enemies == 0
@enemy_id = -1
else
@enemy_id = $game_party.known_enemies[0].id
end
refresh
end
def refresh
self.contents.clear
self.contents.font.name = Fantasy_Bestiary::FONT_NAME
self.contents.font.size = Fantasy_Bestiary::FONT_SIZE
if @enemy_id >=0
enemy = $data_enemies[@enemy_id]
draw_enemy_battler(enemy)
y=0
# HP
self.contents.font.color = Fantasy_Bestiary::FONT_COLOR
self.contents.draw_text(165,y,171,20,"HP: ")
self.contents.font.color = Fantasy_Bestiary::FONT_COLOR2
self.contents.draw_text(195,y,141,20,enemy.maxhp.to_s)
y+=20
# SP
self.contents.font.color = Fantasy_Bestiary::FONT_COLOR
self.contents.draw_text(165,y,171,20,"SP: ")
self.contents.font.color = Fantasy_Bestiary::FONT_COLOR2
self.contents.draw_text(195,y,141,20,enemy.maxsp.to_s)
y+=20
# Atk
self.contents.font.color = Fantasy_Bestiary::FONT_COLOR
self.contents.draw_text(165,y,171,20,"Atak: ")
self.contents.font.color = Fantasy_Bestiary::FONT_COLOR2
self.contents.draw_text(205,y,131,20,enemy.maxhp.to_s)
y+=20
# PDEF
self.contents.font.color = Fantasy_Bestiary::FONT_COLOR
self.contents.draw_text(165,y,171,20,"Obrona fizyczna: ")
self.contents.font.color = Fantasy_Bestiary::FONT_COLOR2
self.contents.draw_text(282,y,54,20,enemy.pdef.to_s)
y+=20
# MDEF
self.contents.font.color = Fantasy_Bestiary::FONT_COLOR
self.contents.draw_text(165,y,171,20,"Obrona magiczna: ")
self.contents.font.color = Fantasy_Bestiary::FONT_COLOR2
self.contents.draw_text(287,y,49,20,enemy.mdef.to_s)
y+=20
# Do zdobycia
self.contents.font.color = Fantasy_Bestiary::FONT_COLOR
self.contents.draw_text(165,y,171,20,"Do zdobycia: ")
self.contents.font.color = Fantasy_Bestiary::FONT_COLOR2
y+=20
self.contents.draw_text(180,y,156,20,enemy.exp.to_s + " EXP")
y+=20
self.contents.draw_text(180,y,156,20,enemy.gold.to_s + " " + $data_system.words.gold)
y+=20
if enemy.item_id > 0
item = $data_items[enemy.item_id]
elsif enemy.weapon_id > 0
item = $data_weapons[enemy.weapon_id]
elsif enemy.armor_id > 0
item = $data_armors[enemy.armor_id]
end
if item != nil
self.contents.blt(180,y,RPG::Cache.icon(item.icon_name),Rect.new(0,0,32,32))
self.contents.draw_text(205,y,131,26,item.name)
end
# Opis
if Fantasy_Bestiary::DATA_BESTIARY[@enemy_id] != nil
self.contents.font.color = Fantasy_Bestiary::FONT_COLOR
self.contents.draw_text(20,205,100,20,"Opis: ")
self.contents.font.color = Fantasy_Bestiary::FONT_COLOR2
for i in 0..Fantasy_Bestiary::DATA_BESTIARY[@enemy_id].size-1
self.contents.draw_text(0,225+25*i,336,20,Fantasy_Bestiary::DATA_BESTIARY[@enemy_id][i])
end
end
end
end
def draw_enemy_battler(enemy)
# skalowanie grafiki battlera
bitmap=Bitmap.new("Graphics/Battlers/"+enemy.battler_name)
w=bitmap.width
h=bitmap.height
if w/150.0 >= h/200.0
skala = w/150.0
else
skala = h/200.0
end
new_w = w/skala
new_h = h/skala
self.contents.stretch_blt(Rect.new(0,0,new_w,new_h), RPG::Cache.battler(enemy.battler_name,0), Rect.new(0,0,w,h))
end
end
end
#===============================================================================
# Game_Party
#===============================================================================
class Game_Party
alias fantasy_bestiary_initialize initialize
def initialize
@known_enemies = []
fantasy_bestiary_initialize
end
def add_known_enemy(id)
@known_enemies << $data_enemies[id] if not @known_enemies.include?($data_enemies[id])
end
def number_of_known_enemies
return @known_enemies.size
end
def known_enemies
return @known_enemies
end
end
#===============================================================================
# Scene_Battle
#===============================================================================
class Scene_Battle
alias fantasy_bestiary_start_phase5 start_phase5
def start_phase5
for enemy in $game_troop.enemies
unless enemy.hidden
$game_party.add_known_enemy(enemy.id)
end
end
fantasy_bestiary_start_phase5
end
end
#===============================================================================
# Scene_Fantasy_Bestiary
#===============================================================================
class Scene_Fantasy_Bestiary
def main
names = []
@id_array = []
for i in 0..$game_party.number_of_known_enemies-1
names << $game_party.known_enemies[i].name
@id_array << $game_party.known_enemies[i].id
end
names << "Brak" if names.size == 0
@id_array << -1 if @id_array.size == 0
@cmd_window = Fantasy_Bestiary::Window_Command.new(200,names)
@cmd_window.height = 344
@heading_window = Fantasy_Bestiary::Window_Heading.new
@description_window = Fantasy_Bestiary::Window_Enemy_Description.new
@spriteset = Spriteset_Map.new
@tlo = Sprite.new
@tlo.bitmap = RPG::Cache.picture("fantasy_background")
@tlo.opacity = Fantasy_Bestiary::BACKGROUND_OPACITY
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@spriteset.dispose
@cmd_window.dispose
@heading_window.dispose
@tlo.dispose
@description_window.dispose
end
def update
@spriteset.update
@cmd_window.update
if @cmd_window.active
update_command
end
end
def update_command
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
@description_window.enemy_id = @id_array[@cmd_window.index]
@description_window.refresh
end
end
end
|
|
|