Seivoth - Czw 01 Paź, 2009 13:57 Temat postu: BestiariuszWitam!
Swego czasu znalazłem na jednej z japońskich stron skrypt który dodaje bestiariusz do głównego menu!
Wklejamy skrypt nad main.
Skrypt włączamy:
Kod:
$scene = Scene_MonsterBook.new
Screen:
Spoiler:
Kod:
#=========================================================
# ~ Bestiariusz ~
# Data publikacji: 20.07.2009
# Autor: ?
# Poprawki: SeIVoth [se4oth@o2.pl]
# Zapraszamy na stronę Ultima Forum - http://www.ultimateam.pl
# =========================================================
# Instalacja: Umieść ten skrypt nad Main w Edytorze Skryptu.
# =========================================================
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Game_Temp
attr_accessor :enemy_book_data
alias temp_enemy_book_data_initialize initialize
def initialize
temp_enemy_book_data_initialize
@enemy_book_data = Data_MonsterBook.new
end
end
class Game_Party
attr_accessor :enemy_info
#--------------------------------------------------------------------------
alias book_info_initialize initialize
def initialize
book_info_initialize
@enemy_info = {}
end
#--------------------------------------------------------------------------
def add_enemy_info(enemy_id, type = 0)
case type
when 0
if @enemy_info[enemy_id] == 2
return false
end
@enemy_info[enemy_id] = 1
when 1
@enemy_info[enemy_id] = 2
when -1
@enemy_info[enemy_id] = 0
end
end
#--------------------------------------------------------------------------
def enemy_book_max
return $game_temp.enemy_book_data.id_data.size - 1
end
#--------------------------------------------------------------------------
def enemy_book_now
now_enemy_info = @enemy_info.keys
no_add = $game_temp.enemy_book_data.no_add_element
new_enemy_info = []
for i in now_enemy_info
enemy = $data_enemies[i]
next if enemy.name == ""
if enemy.element_ranks[no_add] == 1
next
end
new_enemy_info.push(enemy.id)
end
return new_enemy_info.size
end
#--------------------------------------------------------------------------
def enemy_book_complete_percentage
e_max = enemy_book_max.to_f
e_now = enemy_book_now.to_f
comp = e_now / e_max * 100
return comp.truncate
end
end
class Interpreter
def enemy_book_max
return $game_party.enemy_book_max
end
def enemy_book_now
return $game_party.enemy_book_now
end
def enemy_book_comp
return $game_party.enemy_book_complete_percentage
end
end
class Scene_Battle
alias add_enemy_info_start_phase5 start_phase5
def start_phase5
for enemy in $game_troop.enemies
unless enemy.hidden
$game_party.add_enemy_info(enemy.id, 0)
end
end
add_enemy_info_start_phase5
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
def draw_enemy_drop_item(enemy, x, y)
self.contents.font.color = normal_color
self.contents.font.bold = true
treasures = []
if enemy.item_id > 0
treasures.push($data_items[enemy.item_id])
end
if enemy.weapon_id > 0
treasures.push($data_weapons[enemy.weapon_id])
end
if enemy.armor_id > 0
treasures.push($data_armors[enemy.armor_id])
end
if treasures.size > 0
item = treasures[0]
bitmap = RPG::Cache.icon(item.icon_name)
opacity = 255
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
name = treasures[0].name
else
self.contents.font.color = disabled_color
name = "No Item"
end
self.contents.draw_text(x+28, y, 212, 32, name)
end
#--------------------------------------------------------------------------
def refresh
self.contents.font.color = normal_color
self.contents.font.bold = true
end
def draw_enemy_book_id(enemy, x, y)
self.contents.font.color = normal_color
id = $game_temp.enemy_book_data.id_data.index(enemy.id)
self.contents.draw_text(x, y, 32, 32, id.to_s)
end
#--------------------------------------------------------------------------
def draw_enemy_name(enemy, x, y)
self.contents.font.color = normal_color
self.contents.font.bold = true
self.contents.draw_text(x, y, 152, 32, enemy.name)
end
#--------------------------------------------------------------------------
def draw_enemy_graphic(enemy, x, y, opacity = 255)
bitmap = RPG::Cache.battler(enemy.battler_name, enemy.battler_hue)
cw = bitmap.width
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
x = x + (cw / 2 - x) if cw / 2 > x
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect, opacity)
end
#--------------------------------------------------------------------------
def draw_enemy_exp(enemy, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, "EXP")
self.contents.font.color = normal_color
self.contents.font.bold = true
self.contents.draw_text(x + 120, y, 36, 32, enemy.exp.to_s, 2)
end
#--------------------------------------------------------------------------
def draw_enemy_gold(enemy, x, y)
self.contents.font.bold = true
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, $data_system.words.gold)
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y, 36, 32, enemy.gold.to_s, 2)
end
end
class Game_Enemy_Book < Game_Enemy
#--------------------------------------------------------------------------
def initialize(enemy_id)
super(2, 1)
@enemy_id = enemy_id
enemy = $data_enemies[@enemy_id]
@battler_name = enemy.battler_name
@battler_hue = enemy.battler_hue
@hp = maxhp
@sp = maxsp
end
end
class Data_MonsterBook
attr_reader :id_data
#--------------------------------------------------------------------------
def initialize
@id_data = enemy_book_id_set
end
#--------------------------------------------------------------------------
def no_add_element
no_add = 0
for i in 1...$data_system.elements.size
if $data_system.elements[i] =~ /図鑑登録無効/
no_add = i
break
end
end
return no_add
end
#--------------------------------------------------------------------------
def enemy_book_id_set
data = [0]
no_add = no_add_element
for i in 1...$data_enemies.size
enemy = $data_enemies[i]
next if enemy.name == ""
if enemy.element_ranks[no_add] == 1
next
end
data.push(enemy.id)
end
return data
end
end
class Window_MonsterBook < Window_Selectable
attr_reader :data
#--------------------------------------------------------------------------
def initialize(index=0)
super(0, 64, 640, 416)
@column_max = 2
@book_data = $game_temp.enemy_book_data
@data = @book_data.id_data.dup
@data.shift
#@data.sort!
@item_max = @data.size
self.index = 0
refresh if @item_max > 0
end
#--------------------------------------------------------------------------
def data_set
data = $game_party.enemy_info.keys
data.sort!
newdata = []
for i in data
next if $game_party.enemy_info[i] == 0
if book_id(i) != nil
newdata.push(i)
end
end
return newdata
end
#--------------------------------------------------------------------------
def show?(id)
if $game_party.enemy_info[id] == 0 or $game_party.enemy_info[id] == nil
return false
else
return true
end
end
#--------------------------------------------------------------------------
def book_id(id)
return @book_data.index(id)
end
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
self.contents = Bitmap.new(width - 32, row_max * 32)
if @item_max > 0
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
def draw_item(index)
enemy = $data_enemies[@data[index]]
return if enemy == nil
x = 4 + index % 2 * (288 + 32)
y = index / 2 * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.font.bold = true
self.contents.font.color = normal_color
draw_enemy_book_id(enemy, x, y)
if show?(enemy.id)
self.contents.draw_text(x + 28+16, y, 212, 32, enemy.name, 0)
else
self.contents.draw_text(x + 28+16, y, 212, 32, "---", 0)
return
end
if analyze?(@data[index])
self.contents.font.color = text_color(3)
self.contents.draw_text(x + 256, y, 24, 32, "?", 2)
end
end
#--------------------------------------------------------------------------
def analyze?(enemy_id)
if $game_party.enemy_info[enemy_id] == 2
return true
else
return false
end
end
end
class Scene_MonsterBook
include Enemy_Book_Config
#--------------------------------------------------------------------------
def refresh
self.contents.font.color = normal_color
self.contents.font.bold = true
end
def main
$game_temp.enemy_book_data = Data_MonsterBook.new
@title_window = Window_Base.new(0, 0, 640, 64)
@title_window.contents = Bitmap.new(640 - 32, 64 - 32)
@title_window.contents.font.bold = true
@title_window.contents.draw_text(4, 0, 320, 32, "Bestiariusz", 0)
if SHOW_COMPLETE_TYPE != 0
case SHOW_COMPLETE_TYPE
when 1
e_now = $game_party.enemy_book_now
e_max = $game_party.enemy_book_max
text = e_now.to_s + "/" + e_max.to_s
when 2
comp = $game_party.enemy_book_complete_percentage
text = comp.to_s + "%"
when 3
def refresh
self.contents.font.color = normal_color
self.contents.font.bold = true
end
e_now = $game_party.enemy_book_now
e_max = $game_party.enemy_book_max
comp = $game_party.enemy_book_complete_percentage
text = e_now.to_s + "/" + e_max.to_s + " " + comp.to_s + "%"
end
if text != nil
@title_window.contents.draw_text(320, 0, 288, 32, text, 2)
end
end
@main_window = Window_MonsterBook.new
@main_window.active = true
@info_window = Window_MonsterBook_Info.new
@info_window.z = 110
@info_window.visible = false
@info_window.active = false
@visible_index = 0
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@main_window.dispose
@info_window.dispose
@title_window.dispose
end
#--------------------------------------------------------------------------
def update
@main_window.update
@info_window.update
if @info_window.active
update_info
return
end
if @main_window.active
update_main
return
end
end
#--------------------------------------------------------------------------
def update_main
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
if Input.trigger?(Input::C)
if @main_window.item == nil or @main_window.show?(@main_window.item) == false
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
@main_window.active = false
@info_window.active = true
@info_window.visible = true
@visible_index = @main_window.index
@info_window.refresh(@main_window.item)
return
end
end
#--------------------------------------------------------------------------
def update_info
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@main_window.active = true
@info_window.active = false
@info_window.visible = false
return
end
if Input.trigger?(Input::C)
#$game_system.se_play($data_system.decision_se)
return
end
if Input.trigger?(Input::L)
$game_system.se_play($data_system.decision_se)
loop_end = false
while loop_end == false
if @visible_index != 0
@visible_index -= 1
else
@visible_index = @main_window.data.size - 1
end
loop_end = true if @main_window.show?(@main_window.data[@visible_index])
end
id = @main_window.data[@visible_index]
@info_window.refresh(id)
return
end
if Input.trigger?(Input::R)
$game_system.se_play($data_system.decision_se)
loop_end = false
while loop_end == false
if @visible_index != @main_window.data.size - 1
@visible_index += 1
else
@visible_index = 0
end
loop_end = true if @main_window.show?(@main_window.data[@visible_index])
end
id = @main_window.data[@visible_index]
@info_window.refresh(id)
return
end
end
end
# --------------------------------- KONIEC SKRYPTU -------------------------------------------
# www.ultimateam.pl
Mam nadzieję że komuś się przysłuży.
PozdrawiamGreed - Pon 05 Paź, 2009 17:20 Super sprawa, szkoda że nie ma tu takiego skryptu do VXadek16 - Sro 30 Gru, 2009 18:09 mam jedno pytanko zacząłem od niedawna tworzyć grę i co do wywoływania skryptów za bardzo nie rozumiem wklejam skrypt wszystko działa gra się odpala można grać i jest wszystko ok tylko że zmiana nie jest widoczna czy ktoś mógł by mi wytłumaczyć jak go wywołać ,Proszę o jak najszybszą odpowiedź i pozdrawiam wszystkich uczestników forum Ayene - Sro 30 Gru, 2009 18:22 Poniższe odwołanie umieść w poleceniu Script / Skrypt, które znajduje się na 3 stronie edycji zdarzeń.
Kod:
$scene = Scene_MonsterBook.new
patrz screenshot:
Spoiler:
adek16 - Sro 30 Gru, 2009 18:28 dzięki tylko mogłabyś jeszcze raz wkleić oryginalny skopiowany skrypt bez tego początek skryptu i tak dalej z góry dziękuję Malian - Sro 30 Gru, 2009 20:13 Pomocy jak włączam beztiurasz i z niego wychodzę robi mi się błąd na temat Ring menu co zrobić?Ayene - Sro 30 Gru, 2009 21:18
malian napisał/a:
Pomocy jak włączam beztiurasz i z niego wychodzę robi mi się błąd na temat Ring menu co zrobić?
Podmień skrypt z pierwszego posta. Wniosłam odpowiednie poprawki - tak i się przynajmniej wydaje
adek16 napisał/a:
dzięki tylko mogłabyś jeszcze raz wkleić oryginalny skopiowany skrypt bez tego początek skryptu i tak dalej z góry dziękuję
Nie za bardzo rozumiem? A w czym przeszkadzają?adek16 - Czw 31 Gru, 2009 09:21 no a mogę skrypt wkleić z tym początkiem i tak dalej
?Ayene - Czw 31 Gru, 2009 15:19 Cały skrypt, który znajduje się po rozwinięciu spoilera, można bezpiecznie umieścić w swoim projekcie.adek16 - Czw 31 Gru, 2009 15:39 ok zaraz zobacze czy działa
[ Dodano: Czw 31 Gru, 2009 15:41 ]
thx wszystko ładni chodzi Czeliosss - Nie 10 Sty, 2010 20:21 A można coś zrobić, żeby na ring menu on był?Ayene - Nie 10 Sty, 2010 20:29 A z którego Ring Menu korzystasz? Tego który jest zamieszczony na forum? Można zmodyfikować nieco skrypt i dodać Bestiariusz.Czeliosss - Pon 11 Sty, 2010 21:08 Już mam bo napisałaś w innym temacie.MaTe - Pią 22 Sty, 2010 19:54 Gdy włączam Bestariusza wszystko jest OK, ale gdy wybiorę potwora, wyskakuje taki blad i gra się wyłącza:
Wiecie może co z tym zrobić?? A i autora Bestiariusza, jeśli to możliwe prosiłbym o zrobienie, aby potwor dodawal sie jak sie go zobaczy, a nie koniecznie pokona, bo robię gre Pokemon i to by się przydalo. Z góry bardzo dziękuje za pomoc w Probelmie lub Problemach.Ayene - Pią 22 Sty, 2010 20:10 Mam kilka pytań: Błąd się pojawia, gdy 'wybierzesz potwora'? Ale podczas walki? Jakiego Maker'a używasz: polskiego czy angielskiego?
Jeśli chodzi o autora, to jest on nieznany. Skryptu nie warto przerabiać, jeśli Tobie nie będzie działać MaTe - Pią 22 Sty, 2010 20:12
Cytat:
Mam kilka pytań: Błąd się pojawia, gdy 'wybierzesz potwora'? Ale podczas walki? Jakiego Maker'a używasz: polskiego czy angielskiego?
Gdy wybiore potwora( wtedy keidy ma się pojawić okienko z jego statystykami) , podczas walki i podczas bycia na mapie, zawsze (mam nowe ptwory jak coś, nie podstawowe. Makera Polskiego.Ayene - Pią 22 Sty, 2010 20:22 Ciężko w takim razie stwierdzić. Albo skrypt wchodzi w kolizję z innymi skryptami, albo po prostu nie chodzi na polskim RPG Maker'ze. Ostatni powód jest bardzo prawdopodobny... dzisiaj już miałam sytuację, w której skrypt działał na angielskiej wersji, a na polskiej - nie.MaTe - Pią 22 Sty, 2010 20:58 Ayene, czy moglbys podac mi co masz w skrypcie Game_Enemy w linijce 19 ??
[ Dodano: Pon 25 Sty, 2010 21:41 ]
A czy ma ktoś RPG Maker XP z rpgmaker.pl i dzial mu ten skrypt ?pw115 - Pią 19 Lut, 2010 14:50 Sorry ze freeshuje temat ale (głupie pytanie) nie wiem jak się dodaje potwory do tego bestiariuszaAyene - Pią 19 Lut, 2010 15:57 pw115, info o potworze pojawia się automatycznie po jego pokonaniu Nic nie trzeba więcej robić.pw115 - Pią 19 Lut, 2010 16:04 AAAAA....
A jak zrobić żeby zrobiły się tylko wybrane potwory np. BossyAyene - Pią 19 Lut, 2010 18:27 Zrobiłam coś takiego... sprawdź, czy o to Tobie chodziło.
Spoiler:
Kod:
#=========================================================
# ~ Bestiariusz ~
# Data publikacji: 20.07.2009
# Autor: ?
# Poprawki: SeIVoth [se4oth@o2.pl]
# Zapraszamy na stronę Ultima Forum - http://www.ultimateam.pl
# =========================================================
# Instalacja: Umieść ten skrypt nad Main w Edytorze Skryptu.
# =========================================================
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
module Enemy_Book_Config
DROP_ITEM_NEED_ANALYZE = false
EVA_NAME = "Evasion"
SHOW_COMPLETE_TYPE = 3
UKRYJ_BESTIE = [1, 2, 3] # <- ID bestii, których dane mają nie wyświetlać
end
class Game_Temp
attr_accessor :enemy_book_data
alias temp_enemy_book_data_initialize initialize
def initialize
temp_enemy_book_data_initialize
@enemy_book_data = Data_MonsterBook.new
end
end
class Game_Party
attr_accessor :enemy_info
#--------------------------------------------------------------------------
alias book_info_initialize initialize
def initialize
book_info_initialize
@enemy_info = {}
end
#--------------------------------------------------------------------------
def add_enemy_info(enemy_id, type = 0)
case type
when 0
if @enemy_info[enemy_id] == 2
return false
end
@enemy_info[enemy_id] = 1
when 1
@enemy_info[enemy_id] = 2
when -1
@enemy_info[enemy_id] = 0
end
end
#--------------------------------------------------------------------------
def enemy_book_max
return $game_temp.enemy_book_data.id_data.size - 1 - Enemy_Book_Config::UKRYJ_BESTIE.size
end
#--------------------------------------------------------------------------
def enemy_book_now
now_enemy_info = @enemy_info.keys
no_add = $game_temp.enemy_book_data.no_add_element
new_enemy_info = []
for i in now_enemy_info
enemy = $data_enemies[i]
next if enemy.name == "" or Enemy_Book_Config::UKRYJ_BESTIE.include?(i)
if enemy.element_ranks[no_add] == 1
next
end
new_enemy_info.push(enemy.id)
end
return new_enemy_info.size
end
#--------------------------------------------------------------------------
def enemy_book_complete_percentage
e_max = enemy_book_max.to_f
e_now = enemy_book_now.to_f
comp = e_now / e_max * 100
return comp.truncate
end
end
class Interpreter
def enemy_book_max
return $game_party.enemy_book_max
end
def enemy_book_now
return $game_party.enemy_book_now
end
def enemy_book_comp
return $game_party.enemy_book_complete_percentage
end
end
class Scene_Battle
alias add_enemy_info_start_phase5 start_phase5
def start_phase5
for enemy in $game_troop.enemies
unless enemy.hidden
$game_party.add_enemy_info(enemy.id, 0)
end
end
add_enemy_info_start_phase5
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
def draw_enemy_drop_item(enemy, x, y)
self.contents.font.color = normal_color
self.contents.font.bold = true
treasures = []
if enemy.item_id > 0
treasures.push($data_items[enemy.item_id])
end
if enemy.weapon_id > 0
treasures.push($data_weapons[enemy.weapon_id])
end
if enemy.armor_id > 0
treasures.push($data_armors[enemy.armor_id])
end
if treasures.size > 0
item = treasures[0]
bitmap = RPG::Cache.icon(item.icon_name)
opacity = 255
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
name = treasures[0].name
else
self.contents.font.color = disabled_color
name = "No Item"
end
self.contents.draw_text(x+28, y, 212, 32, name)
end
#--------------------------------------------------------------------------
def refresh
self.contents.font.color = normal_color
self.contents.font.bold = true
end
def draw_enemy_book_id(enemy, x, y)
self.contents.font.color = normal_color
id = $game_temp.enemy_book_data.id_data.index(enemy.id)
self.contents.draw_text(x, y, 32, 32, id.to_s)
end
#--------------------------------------------------------------------------
def draw_enemy_name(enemy, x, y)
self.contents.font.color = normal_color
self.contents.font.bold = true
self.contents.draw_text(x, y, 152, 32, enemy.name)
end
#--------------------------------------------------------------------------
def draw_enemy_graphic(enemy, x, y, opacity = 255)
bitmap = RPG::Cache.battler(enemy.battler_name, enemy.battler_hue)
cw = bitmap.width
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
x = x + (cw / 2 - x) if cw / 2 > x
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect, opacity)
end
#--------------------------------------------------------------------------
def draw_enemy_exp(enemy, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, "EXP")
self.contents.font.color = normal_color
self.contents.font.bold = true
self.contents.draw_text(x + 120, y, 36, 32, enemy.exp.to_s, 2)
end
#--------------------------------------------------------------------------
def draw_enemy_gold(enemy, x, y)
self.contents.font.bold = true
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, $data_system.words.gold)
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y, 36, 32, enemy.gold.to_s, 2)
end
end
class Game_Enemy_Book < Game_Enemy
#--------------------------------------------------------------------------
def initialize(enemy_id)
super(2, 1)
@enemy_id = enemy_id
enemy = $data_enemies[@enemy_id]
@battler_name = enemy.battler_name
@battler_hue = enemy.battler_hue
@hp = maxhp
@sp = maxsp
end
end
class Data_MonsterBook
attr_reader :id_data
#--------------------------------------------------------------------------
def initialize
@id_data = enemy_book_id_set
end
#--------------------------------------------------------------------------
def no_add_element
no_add = 0
for i in 1...$data_system.elements.size
if $data_system.elements[i] =~ /図鑑登録無効/
no_add = i
break
end
end
return no_add
end
#--------------------------------------------------------------------------
def enemy_book_id_set
data = [0]
no_add = no_add_element
for i in 1...$data_enemies.size
enemy = $data_enemies[i]
next if enemy.name == ""
if enemy.element_ranks[no_add] == 1
next
end
data.push(enemy.id)
end
return data
end
end
class Window_MonsterBook < Window_Selectable
attr_reader :data
#--------------------------------------------------------------------------
def initialize(index=0)
super(0, 64, 640, 416)
@column_max = 2
@book_data = $game_temp.enemy_book_data
@data = @book_data.id_data.dup
@data.shift
#@data.sort!
@item_max = @data.size
self.index = 0
refresh if @item_max > 0
end
#--------------------------------------------------------------------------
def data_set
data = $game_party.enemy_info.keys
data.sort!
newdata = []
for i in data
next if $game_party.enemy_info[i] == 0
if book_id(i) != nil
newdata.push(i)
end
end
return newdata
end
#--------------------------------------------------------------------------
def show?(id)
if $game_party.enemy_info[id] == 0 or $game_party.enemy_info[id] == nil or Enemy_Book_Config::UKRYJ_BESTIE.include?(id)
return false
else
return true
end
end
#--------------------------------------------------------------------------
def book_id(id)
return @book_data.index(id)
end
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
self.contents = Bitmap.new(width - 32, row_max * 32)
if @item_max > 0
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
def draw_item(index)
enemy = $data_enemies[@data[index]]
return if enemy == nil
x = 4 + index % 2 * (288 + 32)
y = index / 2 * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.font.bold = true
self.contents.font.color = normal_color
draw_enemy_book_id(enemy, x, y)
if Enemy_Book_Config::UKRYJ_BESTIE.include?(enemy.id)
self.contents.draw_text(x + 28+16, y, 212, 32, "---", 0)
elsif show?(enemy.id)
self.contents.draw_text(x + 28+16, y, 212, 32, enemy.name, 0)
else
self.contents.draw_text(x + 28+16, y, 212, 32, "---", 0)
return
end
if analyze?(@data[index])
self.contents.font.color = text_color(3)
self.contents.draw_text(x + 256, y, 24, 32, "?", 2)
end
end
#--------------------------------------------------------------------------
def analyze?(enemy_id)
if $game_party.enemy_info[enemy_id] == 2
return true
else
return false
end
end
end
class Scene_MonsterBook
include Enemy_Book_Config
#--------------------------------------------------------------------------
def refresh
self.contents.font.color = normal_color
self.contents.font.bold = true
end
def main
$game_temp.enemy_book_data = Data_MonsterBook.new
@title_window = Window_Base.new(0, 0, 640, 64)
@title_window.contents = Bitmap.new(640 - 32, 64 - 32)
@title_window.contents.font.bold = true
@title_window.contents.draw_text(4, 0, 320, 32, "Bestiariusz", 0)
if SHOW_COMPLETE_TYPE != 0
case SHOW_COMPLETE_TYPE
when 1
e_now = $game_party.enemy_book_now
e_max = $game_party.enemy_book_max
text = e_now.to_s + "/" + e_max.to_s
when 2
comp = $game_party.enemy_book_complete_percentage
text = comp.to_s + "%"
when 3
def refresh
self.contents.font.color = normal_color
self.contents.font.bold = true
end
e_now = $game_party.enemy_book_now
e_max = $game_party.enemy_book_max
comp = $game_party.enemy_book_complete_percentage
text = e_now.to_s + "/" + e_max.to_s + " " + comp.to_s + "%"
end
if text != nil
@title_window.contents.draw_text(320, 0, 288, 32, text, 2)
end
end
@main_window = Window_MonsterBook.new
@main_window.active = true
@info_window = Window_MonsterBook_Info.new
@info_window.z = 110
@info_window.visible = false
@info_window.active = false
@visible_index = 0
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@main_window.dispose
@info_window.dispose
@title_window.dispose
end
#--------------------------------------------------------------------------
def update
@main_window.update
@info_window.update
if @info_window.active
update_info
return
end
if @main_window.active
update_main
return
end
end
#--------------------------------------------------------------------------
def update_main
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
if Input.trigger?(Input::C)
if @main_window.item == nil or @main_window.show?(@main_window.item) == false
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
@main_window.active = false
@info_window.active = true
@info_window.visible = true
@visible_index = @main_window.index
@info_window.refresh(@main_window.item)
return
end
end
#--------------------------------------------------------------------------
def update_info
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@main_window.active = true
@info_window.active = false
@info_window.visible = false
return
end
if Input.trigger?(Input::C)
#$game_system.se_play($data_system.decision_se)
return
end
if Input.trigger?(Input::L)
$game_system.se_play($data_system.decision_se)
loop_end = false
while loop_end == false
if @visible_index != 0
@visible_index -= 1
else
@visible_index = @main_window.data.size - 1
end
loop_end = true if @main_window.show?(@main_window.data[@visible_index])
end
id = @main_window.data[@visible_index]
@info_window.refresh(id)
return
end
if Input.trigger?(Input::R)
$game_system.se_play($data_system.decision_se)
loop_end = false
while loop_end == false
if @visible_index != @main_window.data.size - 1
@visible_index += 1
else
@visible_index = 0
end
loop_end = true if @main_window.show?(@main_window.data[@visible_index])
end
id = @main_window.data[@visible_index]
@info_window.refresh(id)
return
end
end
end
# --------------------------------- KONIEC SKRYPTU -------------------------------------------
# www.ultimateam.pl
Konfiguruj tę linijkę:
Kod:
UKRYJ_BESTIE = [1, 2, 3] # <- ID bestii, których dane mają nie
pw115 - Pią 19 Lut, 2010 18:33 Tak!!! Dzięki jesteś wielkaFlanagan - Nie 02 Maj, 2010 19:00 Mam pytanie jak zrobić że po wduszeniu np. przycisku np. ''W,, włącza się bestriariusz???pw115 - Nie 02 Maj, 2010 19:14 W równoległych zdarzeniach robisz: (proces równoległy)
warunek : przycisk ...(ten twój) jest naciśnięty
(wywołaj skrypt) $scene = Scene_MonsterBook.newFixed - Nie 02 Maj, 2010 19:22 Możesz też dać w "Scene_Map":
Po:
Kod:
loop do
Daj:
Kod:
if Input.trigger?(Input::F5)
$scene = Scene_MonsterBook.new
end
Np. Klawisz "F5".
Pzdrsitax5 - Wto 08 Cze, 2010 17:36 A gdzie wkleić kod żeby włączyć skrypt?Czeliosss - Wto 08 Cze, 2010 17:38 3 zakładka opcja Script.
Pzdr.Bulooo - Sro 30 Cze, 2010 18:55 Mi wyskakuje coś takiego
Ayene - Czw 01 Lip, 2010 07:17 Bulooo, w którym momencie wyskakuje ten błąd? Wygląda na to, że nie może przyporządkować definicji, gdy klasa jest pusta - w tym przypadku jest to info o potworach.Bulooo - Czw 01 Lip, 2010 07:38 wyskakuję zaraz jak otwieram bestiariusz
nie wiem czy to nie przez abs mr mo.
błąd pisze że jest na 58 linijce
Czyli
Cytat:
now_enemy_info = @enemy_info.keys
Ayene - Czw 01 Lip, 2010 09:13 Do skryptu z Bestiariuszem dodaj fragment:
U mnie działa. Mam nadzieję, że u Ciebie też będzie. Tylko musisz sprawdzić, czy działa, nie korzystając z zapisu. Zacznij od początku.Bulooo - Czw 01 Lip, 2010 12:09 A gdzie mam w bestiariuszu dodać to
Bulooo - Czw 01 Lip, 2010 13:32 Włączyło się okno.
Zabiłem ducha.
I miałem go tam w 3 rubryce.
kliknełem na niego i pokazał się błąd w 19 linijce Game_Enemy
Ayene - Czw 01 Lip, 2010 17:56 A wkleiłeś ten fragment podany powyżej:
Niemniej jednak wysłałam Tobie poprawiony projekt na PW.pageon - Pon 05 Lip, 2010 08:51 Ayene a mogła byś wysłać mi skrypt cały przerobiony do skryptu blizzard abs bo gdy zabijam potwora to nie mam nic w info o nim a chciałbym miećIzaya - Czw 15 Lip, 2010 08:43 Na prawdę Super skrypt.
Bestiariusz Fajnie wygląda tylko
po lewej stronie tak Pusto
Ale to drobnostka...
Pozdrawiam R.I.P. - Czw 15 Lip, 2010 19:23 Fajny skrypcik nadaje się gdy ktoś robi np. grę z Pokemon , Super że ktoś to wrzucił.Bulooo - Sob 17 Lip, 2010 17:52
Spoiler:
Mam ABS mr mo's
Wyskakuję mi kiedy atakuję potwora i do walki dołącza się rycerz i mi próbuje pomóc i atakuję bestię.
42 linijka
Cytat:
if @enemy_info[enemy_id] == 2
Flanagan - Sob 17 Lip, 2010 17:55 prawdopodobnie skrypty nie współgrają ze sobąBulooo - Sob 17 Lip, 2010 18:12 a gadasz że nie współpracują.
Współpracują bo zalicza mi potworki jak je zabije.
Tylko jak ktoś mi pomaga zabić potworka się pokazuję błąd.
Raz już mi to Ayene przerobiła
Tylko teraz dopiero pokazał się błądMaTe - Nie 18 Lip, 2010 15:32 Ayene czy mogłabyś mi też wysłać poprawiony projekt na PW, bo mam to samo co Bulooo. Z góry bardzo dziękuję.
[ Dodano: Sro 21 Lip, 2010 14:48 ]
Ok już mi działa, ale teraz mam inny problem, robię grę pokemon. Więc najpierw pokazuje się trener, a potem przekształcam go na pokemona. I tu sie pojawia problem, gdy walka się zaczyna trener wygląda jak podstawowy duch z RPT, jednak jeśli nie używam Bestiariusz wszystko jest OK.
[ Dodano: Pią 30 Lip, 2010 17:11 ]
A czy mógłby ktoś może przerobyć ten skrypt:
Cytat:
#===============================================================================
#--------# Fantasy Bestiary #--------------------------------------------
#--------# version 1.0 #--------------------------------------------
#--------# by Thieffer and Dante #--------------------------------------------
#--------# 10.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.
#===============================================================================
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.
#===============================================================================
# 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
Aby było można zrobić potowry, które się nie wyświetlaja?
[ Dodano: Pią 30 Lip, 2010 17:53 ]
BUMP!!!!!!!!!topola - Pią 01 Paź, 2010 13:43 jak próbuję otworzyć bestariusz to wyskakuje mi to
screen
da sie cos z tym zrobic?Ayene - Pią 01 Paź, 2010 16:19 topola, co to za skrypt o nazwie "batt"? Sprawdź linijkę 76 może coś niepotrzebnie tam wpisałeś... albo spróbuj usunąć skrypt i odpalić grę.Czeliosss - Sob 09 Paź, 2010 10:18 Załatw sobie angielską wersję. Polska ma błędy w skryptach i nie tylko. Na Polskim możesz się dopiero uczyć robić gry bez skryptów itp. Natomiast jak chcesz zrobić poważniejszy projekt musisz mieć angielską.Konrader97 - Sob 09 Paź, 2010 10:29 Tyle że ja już zaczółem robić grę, ale dobra zna ktoś stronkę z downloadem??Czeliosss - Sob 09 Paź, 2010 15:48 http://www.ultimateam.pl/viewtopic.php?t=2448
Tutaj masz.
Jak chcesz skopiować bazę danych i mapy to skopiuj plik DataKonrader97 - Pon 11 Paź, 2010 12:10 Dzięki Mam już wszystkie mapy i skrypty, ale musiałem trochę pokombinować, lecz bestariusz niedziała wogóle test gry się nie włącza.
Ps. Mam cracka shiwt - Pon 11 Paź, 2010 13:19 A można wiedzieć jakie poprawki wprowadziłeś do skryptu ?Konrader97 - Pon 11 Paź, 2010 15:18 Dobra sprawdziłem i jest inny problem, korzystam z wersji angielskiej z krakiem i nizależ nie jaką mapę i czy ze skryptami, gdy probuje włączyć test to niedziała, niema erroru tylko wyskakuje okienko i nagle znika.Ayene - Wto 12 Paź, 2010 07:21 Konrader97, najprawdopodobniej nie masz bibliotek RGSS. Sprawdź wersję RM albo po prostu wklej wszystkie do folderu z grą http://www.ultimateam.pl/viewtopic.php?t=2026Konrader97 - Wto 12 Paź, 2010 19:06 Dzięki za wszystko teraz wszysko działa szobal1 - Sob 13 Lis, 2010 10:24 A czy nie lepiej zrobić własny bestariusz?? wystarczy mieć ikonkę jakiejś książki i pobawić się typowymi zdarzeniami. Czy to takie trudne ???Ayene - Sob 13 Lis, 2010 10:31 Oczywiście, większość rzeczy można zrobić za pomocą zdarzeń i odpowiedniej grafiki. Nie dadzą one jednak takiego efektu, jak skrypty. Jestem zdecydowaną zwolenniczką skryptów... a bestiariusz... cóż po niewielkich przeróbkach i dodatkach w postaci symulacji walk, może być całkiem profesjonalny Cloudziuszek - Nie 12 Gru, 2010 17:18 No cóż. Powiem tak. Mam dosyć spory problem, gdyż zacząłem robić już własnego RPG. Gdy zauważyłem że można mieć bestiariusz to prawie się posikałem z radości. W każdym razie. Problem polega na tym, że gdy pokonam jakiegoś przeciwnika (Duch) to potem w bestiariuszu jest cały niebieski ekran. Owszem jak kliknę na jedno z miejsc gdzie POWINIEN być ten przeciwnik to on się pojawia lecz bez statystyk. Co tu mam zrobić?
Ups. Zrobiłem to co napisałaś tamtemu Panu przede mną. W każdym razie... Dzięki za pomoc! Genialny temat. <3Nemma12 - Pią 11 Lut, 2011 07:18 Mam pytanie jak wchodze w gre po dodaniu skryptu to wtedy wyskakuje ze blond mam w 26 linijce " Systemtrack error
pomorze ktos??
Mam polskiego rpg makerAyene - Pią 11 Lut, 2011 10:58 Na forum nie wspieramy piractwa, przez co nie stanowimy grupy wsparcia dla osób korzystających z polskiego RM. Zainstaluj sobie próbną wersję angielską lub wykup licencję. Pozdrawiam.Shlizer - Pią 11 Lut, 2011 13:29
Nemma12 napisał/a:
Mam pytanie jak wchodze w gre po dodaniu skryptu to wtedy wyskakuje ze blond mam w 26 linijce " Systemtrack error
pomorze ktos??
Mam polskiego rpg maker
Ja w swoich linijkach nie mam żadnego koloru blond.. dziwne.
No i ja jestem z pomorza, ale nie wiem co to ma do tematu.
Swoją drogą - po co Ci program w polskiej wersji językowej? Nie lepiej wybrać wersję języka, którą znasz i umiesz się posługiwać zamiast męczyć się w nieznanym Ci języku?Nemma12 - Pią 11 Lut, 2011 16:56 ten pl jest tylko tymczasowo chce zrobić grę i potem eng możne kupieLordVitas - Sob 05 Lis, 2011 13:58 Mam pewien problem z tym skryptem.
Niby wszystko działa. Ale jak spotka się potwora a potem wejdzie w bestiariusz
to nie ma napisów. A jak się wejdzie w danego potwora to jest tylko
battlers. Da się to jakoś naprawić?
Pozdro! Vitas!Ayene - Sob 05 Lis, 2011 17:03 A jakiego masz 'mejkera'? Polskiego czy angielskiego? LordVitas - Sob 05 Lis, 2011 17:28 Polskiego. Ale już rozumiem w czym problem. Ściągam właśnie angielskiego.PaayJer - Sob 05 Lis, 2011 18:04 @UP
No wątpie, że to jest problemem...
A w ogóle ściągasz rozumiem wersję DEMO?tracersgta - Sob 05 Lis, 2011 18:22 Nie ma wersji Demo, jest tylko wersja Trial, no i piracka, którą zapewne ściąga...Pepczak - Nie 18 Gru, 2011 14:10 Temat postu: klawisza ja mam pytanie, czy da się zrobić tak zeby bestiariusz włączał się gdy naciśniemy jakiś klawisz?tracersgta - Nie 18 Gru, 2011 14:34 Jasne! W równoległych zdarzeniach Roki132 - Pią 13 Kwi, 2012 16:59 Cześć, mam problem. Chciałbym użyć tego skryptu, ale nie działa mi do końca.
Napisy się pokazują, wszystko ok, tylko że jak pokonam przeciwnika, to mi się nie odblokowuje. Kiedyś znalazłem skrypt walki:
Custom Battle System (CTB) by Charlie Lee
http://www.rpgrevolution....?showtopic=8220
Mógłby mi ktoś przerobić ten skrypt, by współgrał właśnie z tym do walki?Ayene - Pią 13 Kwi, 2012 20:55 Roki132, zauważ, że w temacie do którego podałeś link, nie ma downloadu. Postaraj się jakoś udostępnić skrypt, bo bez tego nie wniesie się odpowiednich poprawek.Roki132 - Pią 13 Kwi, 2012 22:20 Proszę, zamieszam tutaj obecny projekt.
http://www.wrzuc.to/usRd1FpYL.wt
I tak jeszcze przy okazji się spytam, jak zwiększyć liczbę slotów w skryptach?
Żeby było można więcej skryptów wgrać.Tracker009 - Sob 14 Kwi, 2012 11:11 Klikasz ppm na puste miejsce i Insert ta pierwsza opcja ;)Ayene - Sob 14 Kwi, 2012 14:52 Roki132, żeby skrypt Tobie działał w skrypcie 'CTB by Charlie - Scene_Battle' znajdź:
Kod:
def start_phase5 # [modified by Charlie]
po tym dodaj:
Kod:
for enemy in $game_troop.enemies
unless enemy.hidden
$game_party.add_enemy_info(enemy.id, 0)
end
end
Następnie w skrypcie na 'Scene_MonsterBook' znajdź:
Kod:
draw_enemy_graphic(enemy, 96, 240+48+64, 200)
zamień ją na:
Kod:
draw_enemy_graphic(enemy, 96, 48+64, 200)
Następnie znajdź fragment:
Kod:
cw = bitmap.width
ch = bitmap.height
zamień na:
Kod:
cw = bitmap.width / 4
ch = bitmap.height / 11
Następnie znajdź:
Kod:
super(2, 1)
zamień na:
Kod:
super(1, 0)
Roki132 - Sob 14 Kwi, 2012 16:38 Bardzo dziękuję, działa.bluemike - Nie 05 Sie, 2012 17:59 Mam prośbę, czy ktoś mógłby edytować tak ten skrypt ,aby działał z tym systemem walki?
http://members.jcom.home....pt/rtab_107.txt
A, i jeszcze pytanie czy da się sprawdzić ile potworków zostało juz odblokowanych?
Chciałem zrobić taki Bonus po odblokowaniu 80%.
Jak coś skrypt działał mi dobrze ze standardowym systemem walki ,jeśli nie będzie się dało to najwyżej odpuszczę sobie ten "Bonus" i bestariusz.The Big Master - Sob 12 Sty, 2013 14:23 Siemka mam Ring Menu również twojego autorstwa, i chciałbym dodac tam ten Monster Book, ale nie wiem jak :C próbowałem na własną ręke ale mało co kojarzę ruby i mi prawie rozdupcyło projekt naszczęście mam kopie zapasowe ;) mógłbyś mi powiedzieć jak umieścić Bestariusz w RING MENU ??
Otworzyłem Bestariusz w nowym projekcie i nie było napisów ale sam sobie dałem z tym rade i poprawiłem tak by działały ale mam znów inny problem gdyż pojawiają się wszystkie napisy z wyjątkiem:"Bestariusz" ale bez tego też można żyć ;D