-
Beschreibung
ich hab mir mal für meine zwecke ein kleines questlogbuch geschrieben , is jetz nich sonderlich aufwendig aber erfüllt gut seinen zweck denk ich ma
Last Update : v1.3a - 03.06.09
changelog
-----------------------------------------------------------------------------------
v1.3
-----------------------------------------------------------------------------------
bilder-bug bei verschlüsselten projekten gefixed
-----------------------------------------------------------------------------------
v1.2
-----------------------------------------------------------------------------------
quest-status wurde hinzufügt
es kann jetz optional ein quest status mit angegeben werden
dieser quest status kann mit $questlog.getQuestState abgefragt werden
wird kein status mit angegeben wird er automatisch auf leer gesetzt
-----------------------------------------------------------------------------------
v1.12
-----------------------------------------------------------------------------------
speicherbug und questmap bug gefixed
-----------------------------------------------------------------------------------
v1.0
-----------------------------------------------------------------------------------
ein kleiner versionssprung, also nicht wundern, will damit nur zeigen
dass das script keineswegs beta status oder so etwas hat
besserer schreib iterator
der fehler bei den umlauten wurde behoben und nun ist es auch möglich
bilder zu den quests anzeigen zu lassen,
wie das geht steht in der FAQ
-----------------------------------------------------------------------------------
v0.1.1
-----------------------------------------------------------------------------------
kleiner bugfix und man kann jetz die schriftgröße des quest fensters
über SIZE_VAR einstellen
-----------------------------------------------------------------------------------
v0.1
-----------------------------------------------------------------------------------
erster public release
Screenshots
(http://img137.imageshack.us/img137/6527/questlog1lb8.png)
(http://img177.imageshack.us/img177/807/questlog2sb2.png)
Anleitung
Wie immer gibts nich viel zu erklären
#==============================================================================
# F.A.Q.
#==============================================================================
# Der Globale Questlogname ist $questlog
# Um das Questlog vom Menu zu öffnen einfach $scene = Scene_Questlog.new ausführen
# Um das Questlog von einem Event zu öffnen $scene = Scene_Questlog.new(false) ausführen
#
# Um eine Quest zu erstellen kann man dieses Template benutzen :
# $questlog.addQuest("Unique ID","Quest Titel","Quest Beschreibung")
#
# Um eine Questbeschreibung zu updaten kann man dieses Template benutzen :
# $questlog.updateQuest("unique ID","Quest Description")
#
# Um eine Quest zu den abgeschlossenen Quests zu schieben kann man dieses Template benutzen :
# $questlog.completeQuest("Unique ID")
#
# Um eine Quest aus den aktiven Quests zu löschen kann man dieses Template benutzen :
# $questlog.deleteQuest("Unique ID")
#
# Du kannst den aktuell Quest-Status abfragen mit diesem Template :
# $questlog.getQuestState("Unique ID")
# Das kann eventuell nützlich sein in einem Conditional Branch damit ein Event
# nur bei einem bestimmten Quest-Status auslöst
#
# Wenn ihr eine Questkarte hinzufügen wollt, erstellt einen order namens
# Questmaps in eurem Graphics Verzeichnis. Der Name der Questkarte muss
# dem Questnamen im Spiel entsprechen. Seit auch sicher dass das richtige
# Format in der MAP_FORMAT gewählt wurde.
# Die Questkarten sollten eine gräße vom 265*200 pixel haben.
# z.B. : Wenn du eine Quest names QuestXYZ hast muss das bild im Questmaps
# Verzeichnis QuestXYZ.png heißen wenn png das format ist
#==============================================================================
# Setup
#==============================================================================
QUESTLOGNAME = "Questlog" # Questlog Menü name
QUEST_MENU_ITEM_1 = "Active Quests" # Active Quest name
QUEST_MENU_ITEM_2 = "Completed Quests" # Completed Quest name
SIZE_VAR = 20 # Schriftgröße
MAP_FORMAT = "png" # Quest-Map format/endung
Script v1.3a
#==============================================================================
# Simple Quest-Log
#
# Version : 1.3a - 04.04.08
# Created by : hellMinor
# Do NOT redistribute without my permission
# Description : A simple script for a Quest-Log
#
#==============================================================================
#==============================================================================
# F.A.Q.
#==============================================================================
# The Global Questlog-Name is $questlog
# To open the Questlog from the menu just do $scene = Scene_Questlog.new
# To open the Questlog from an event $scene = Scene_Questlog.new(false)
#
# To add a quest make a new call script with this Template :
# $questlog.addQuest("Unique ID","Quest Title","Quest Description","State")
#
# To update a Quest description make a new call script with this Template :
# $questlog.updateQuest("unique ID","Quest Description","State")
#
# To move a Quest to Completed Quests make new call script with this Template :
# $questlog.completeQuest("Unique ID")
#
# To delete a Quest from the Active-Questlog make a call script with this
# Template :
# $questlog.deleteQuest("Unique ID")
#
# You can get the current state of a Quest with this Template :
# $questlog.getQuestState("Unique ID")
# This may be useful in a conditional branch if you want to react with a
# special Quest-State
#
# If u want to add a Questmap, create a folder named Questmaps in your
# Graphics folder. The name of the Questmap must be the same as the Quest
# in the Game. Be sure that you set the correct MAP_FORMAT.
# A Quest-Map should have a size of 265*200 px !
# I.E. : If your Quest is named QuestYXZ , the picture in the Questmap folder
# has to be QuestYXZ.png if your map is a .png
#==============================================================================
# Setup
#==============================================================================
QUESTLOGNAME = "Questlog" # Questlog Menu name
QUEST_MENU_ITEM_1 = "Active Quests" # Active Quest name
QUEST_MENU_ITEM_2 = "Completed Quests" # Completed Quest name
SIZE_VAR = 20 # Character Size
MAP_FORMAT = "png" # Quest-Map Ending
#==============================================================================
class Questlog
#==============================================================================
def addQuest(id,header,description,state = "")
$activelog << [id,header,description,state]
end
#------------------------------------------------------------------------------
def updateQuest(id,description,state = "")
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$activelog[i][2] = description
$activelog[i][3] = state
break
end
end
end
#------------------------------------------------------------------------------
def completeQuest(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$completedlog << $activelog[i]
$activelog.delete_at(i)
break
end
end
end
#------------------------------------------------------------------------------
def deleteQuest(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$activelog.delete_at(i)
break
end
end
end
#------------------------------------------------------------------------------
def getQuestState(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
return $activelog[i][3]
break
end
end
end
end
#==============================================================================
class Scene_Questlog < Scene_Base
#==============================================================================
def initialize(from_menu = true)
@from_menu = from_menu
end
def start
super
create_menu_background
@help_window = Window_Help.new
@help_window.set_text(QUESTLOGNAME,1)
s1 = QUEST_MENU_ITEM_1
s2 = QUEST_MENU_ITEM_2
@select_window = Window_Command.new(544,[s1,s2],2,1)
@select_window.y = 55
@select_window.active = true
end
#------------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@help_window.dispose
@select_window.dispose
end
#------------------------------------------------------------------------------
def kill_questwindows
@quest_window.dispose
end
#------------------------------------------------------------------------------
def return_scene
if @from_menu
$scene = Scene_Menu.new
else
$scene = Scene_Map.new
end
end
#------------------------------------------------------------------------------
def update
super
update_menu_background
@help_window.update
if @select_window.active
@select_window.update
update_select_selection
elsif @quest_window.active
@quest_window.update
update_quest_selection
end
end
#------------------------------------------------------------------------------
def update_select_selection
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
case @select_window.index
when 0
$oldlog = false
@quest_window = Window_Quest.new(0,110,272,(24*11)+42)
@select_window.active = false
@quest_window.active = true
when 1
$oldlog = true
@quest_window = Window_Quest.new(0,110,272,(24*11)+42)
@select_window.active = false
@quest_window.active = true
end
end
end
#------------------------------------------------------------------------------
def update_quest_selection
if Input.trigger?(Input::B)
Sound.play_cancel
kill_questwindows
@select_window.active = true
end
end
end
#==============================================================================
class Scene_Title < Scene_Base
#==============================================================================
alias create_game_objects_additions create_game_objects
def create_game_objects
create_game_objects_additions
$questlog = Questlog.new
$activelog = Array.new
$completedlog = Array.new
end
end
#==============================================================================
class Window_Help < Window_Base
#==============================================================================
def initialize(x = 0,y = 0, width = 544, height = WLH+32)
super(x, y, width, height)
end
end
#==============================================================================
class Window_Description < Window_Base
#==============================================================================
def initialize(x = 0,y = 0, width = 544, height = WLH+32)
super(x, y, width, height)
@text = nil
@contents_x = 0
@contents_y = 0
@line_count = 0 # Line count drawn up until now
update
end
#------------------------------------------------------------------------------
def new_line
@contents_x = 0
@contents_y += WLH
@line_count += 1
@line_show_fast = false
end
#------------------------------------------------------------------------------
def finish_message
@text = nil
@line_count = 0
@contents_x = 0
@contents_y = 0
end
#------------------------------------------------------------------------------
def write_text(str)
if str != nil || str != ""
create_contents
update_msg(str)
end
end
#------------------------------------------------------------------------------
def update_msg(str)
str.each_line{|str2|iterator(str2)}
finish_message
end
#------------------------------------------------------------------------------
def iterator(str2)
contents.font.size = SIZE_VAR
contents.draw_text(@contents_x, @contents_y, str2.size*40, WLH, str2.delete("\n"))
c_width = contents.text_size(str2).width
@contents_x += c_width
new_line
end
end
#==============================================================================
class Window_Quest < Window_Selectable
#==============================================================================
def initialize(x, y, width, height)
super(x, y, width, height)
@column_max = 1
self.index = 0
@quest_helper = Window_Description.new(271,110,273,(24*11)+42)
refresh
end
#------------------------------------------------------------------------------
def refresh
@data = []
if !$oldlog
for i in (0..$activelog.size-1)
@data.push($activelog[i])
end
else
for i in (0..$completedlog.size-1)
@data.push($completedlog[i])
end
end
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#------------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
item = @data[index][1]
if item != nil
rect.width -= 4
self.contents.draw_text(rect.x, rect.y, 172, WLH, item)
end
end
#------------------------------------------------------------------------------
alias update_addition update
def update
update_addition
update_description(@index)
update_selection
end
#------------------------------------------------------------------------------
def update_selection
if Input.trigger?(Input::B)
Sound.play_cancel
@quest_helper.dispose
if @quest_map != nil
@quest_map_bitmap.bitmap.dispose
@quest_map_bitmap.dispose
@quest_map.dispose
@quest_map_viewport.dispose
@quest_map = nil
end
end
end
#------------------------------------------------------------------------------
def update_description(id)
if defined?(@data[id][2])
@quest_helper.write_text(@data[id][2])
if @quest_map == nil
if Cache.questmaps(@data[id][1]).is_a?(Bitmap)
self.height /= 3
@quest_map = Window_Description.new(0,210,272,(24*7)+38)
@quest_map_bitmap = Sprite.new
@quest_map_viewport = Viewport.new(3,213,268,(24*7)+35)
@quest_map_bitmap.viewport = @quest_map_viewport
@quest_map_bitmap.bitmap = Cache.questmaps(@data[id][1])
@quest_map_bitmap.viewport.z = 150
end
else
if Cache.questmaps(@data[id][1]).is_a?(Bitmap)
@quest_map_bitmap.bitmap = Cache.questmaps(@data[id][1])
else
self.height *= 3
@quest_map_bitmap.bitmap.dispose
@quest_map_bitmap.dispose
@quest_map.dispose
@quest_map_viewport.dispose
@quest_map = nil
end
end
end
end
end
#==============================================================================
class Scene_File < Scene_Base
#==============================================================================
alias write_save_data_adds write_save_data
def write_save_data(file)
write_save_data_adds(file)
Marshal.dump($activelog, file)
Marshal.dump($completedlog, file)
Marshal.dump($questlog, file)
end
alias read_save_data_adds read_save_data
def read_save_data(file)
read_save_data_adds(file)
$activelog = Marshal.load(file)
$completedlog = Marshal.load(file)
$questlog = Marshal.load(file)
end
end
#==============================================================================
module Cache
#==============================================================================
def self.questmaps(filename)
begin
load_bitmap("Graphics/Questmaps/", filename)
rescue
return nil
end
end
end
Script v1.2
#==============================================================================
# Simple Quest-Log
#
# Version : 1.2 - 02.04.08
# Created by : hellMinor
# Do NOT redistribute without my permission
# Description : A simple script for a Quest-Log
#
#==============================================================================
#==============================================================================
# F.A.Q.
#==============================================================================
# The Global Questlog-Name is $questlog
# To open the Questlog from the menu just do $scene = Scene_Questlog.new
# To open the Questlog from an event $scene = Scene_Questlog.new(false)
#
# To add a quest make a new call script with this Template :
# $questlog.addQuest("Unique ID","Quest Title","Quest Description","State")
#
# To update a Quest description make a new call script with this Template :
# $questlog.updateQuest("unique ID","Quest Description","State")
#
# To move a Quest to Completed Quests make new call script with this Template :
# $questlog.completeQuest("Unique ID")
#
# To delete a Quest from the Active-Questlog make a call script with this
# Template :
# $questlog.deleteQuest("Unique ID")
#
# You can get the current state of a Quest with this Template :
# $questlog.getQuestState("Unique ID")
# This may be useful in a conditional branch if you want to react with a
# special Quest-State
#
# If u want to add a Questmap, create a folder named Questmaps in your
# Graphics folder. The name of the Questmap must be the same as the Quest
# in the Game. Be sure that you set the correct MAP_FORMAT.
# A Quest-Map should have a size of 265*200 px !
# I.E. : If your Quest is named QuestYXZ , the picture in the Questmap folder
# has to be QuestYXZ.png if your map is a .png
#==============================================================================
# Setup
#==============================================================================
QUESTLOGNAME = "Questlog" # Questlog Menu name
QUEST_MENU_ITEM_1 = "Active Quests" # Active Quest name
QUEST_MENU_ITEM_2 = "Completed Quests" # Completed Quest name
SIZE_VAR = 20 # Character Size
MAP_FORMAT = "png" # Quest-Map Ending
#==============================================================================
class Questlog
#==============================================================================
def addQuest(id,header,description,state = "")
$activelog << [id,header,description,state]
end
#------------------------------------------------------------------------------
def updateQuest(id,description,state = "")
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$activelog[i][2] = description
$activelog[i][3] = state
break
end
end
end
#------------------------------------------------------------------------------
def completeQuest(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$completedlog << $activelog[i]
$activelog.delete_at(i)
break
end
end
end
#------------------------------------------------------------------------------
def deleteQuest(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$activelog.delete_at(i)
break
end
end
end
#------------------------------------------------------------------------------
def getQuestState(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
return $activelog[i][3]
break
end
end
end
end
#==============================================================================
class Scene_Questlog < Scene_Base
#==============================================================================
def initialize(from_menu = true)
@from_menu = from_menu
end
def start
super
create_menu_background
@help_window = Window_Help.new
@help_window.set_text(QUESTLOGNAME,1)
s1 = QUEST_MENU_ITEM_1
s2 = QUEST_MENU_ITEM_2
@select_window = Window_Command.new(544,[s1,s2],2,1)
@select_window.y = 55
@select_window.active = true
end
#------------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@help_window.dispose
@select_window.dispose
end
#------------------------------------------------------------------------------
def kill_questwindows
@quest_window.dispose
end
#------------------------------------------------------------------------------
def return_scene
if @from_menu
$scene = Scene_Menu.new
else
$scene = Scene_Map.new
end
end
#------------------------------------------------------------------------------
def update
super
update_menu_background
@help_window.update
if @select_window.active
@select_window.update
update_select_selection
elsif @quest_window.active
@quest_window.update
update_quest_selection
end
end
#------------------------------------------------------------------------------
def update_select_selection
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
case @select_window.index
when 0
$oldlog = false
@quest_window = Window_Quest.new(0,110,272,(24*11)+42)
@select_window.active = false
@quest_window.active = true
when 1
$oldlog = true
@quest_window = Window_Quest.new(0,110,272,(24*11)+42)
@select_window.active = false
@quest_window.active = true
end
end
end
#------------------------------------------------------------------------------
def update_quest_selection
if Input.trigger?(Input::B)
Sound.play_cancel
kill_questwindows
@select_window.active = true
end
end
end
#==============================================================================
class Scene_Title < Scene_Base
#==============================================================================
alias create_game_objects_additions create_game_objects
def create_game_objects
create_game_objects_additions
$questlog = Questlog.new
$activelog = Array.new
$completedlog = Array.new
end
end
#==============================================================================
class Window_Help < Window_Base
#==============================================================================
def initialize(x = 0,y = 0, width = 544, height = WLH+32)
super(x, y, width, height)
end
end
#==============================================================================
class Window_Description < Window_Base
#==============================================================================
def initialize(x = 0,y = 0, width = 544, height = WLH+32)
super(x, y, width, height)
@text = nil
@contents_x = 0
@contents_y = 0
@line_count = 0 # Line count drawn up until now
update
end
#------------------------------------------------------------------------------
def new_line
@contents_x = 0
@contents_y += WLH
@line_count += 1
@line_show_fast = false
end
#------------------------------------------------------------------------------
def finish_message
@text = nil
@line_count = 0
@contents_x = 0
@contents_y = 0
end
#------------------------------------------------------------------------------
def write_text(str)
if str != nil || str != ""
create_contents
update_msg(str)
end
end
#------------------------------------------------------------------------------
def update_msg(str)
str.each_line{|str2|iterator(str2)}
finish_message
end
#------------------------------------------------------------------------------
def iterator(str2)
contents.font.size = SIZE_VAR
contents.draw_text(@contents_x, @contents_y, str2.size*40, WLH, str2.delete("\n"))
c_width = contents.text_size(str2).width
@contents_x += c_width
new_line
end
end
#==============================================================================
class Window_Quest < Window_Selectable
#==============================================================================
def initialize(x, y, width, height)
super(x, y, width, height)
@column_max = 1
self.index = 0
@quest_helper = Window_Description.new(271,110,273,(24*11)+42)
refresh
end
#------------------------------------------------------------------------------
def refresh
@data = []
if !$oldlog
for i in (0..$activelog.size-1)
@data.push($activelog[i])
end
else
for i in (0..$completedlog.size-1)
@data.push($completedlog[i])
end
end
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#------------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
item = @data[index][1]
if item != nil
rect.width -= 4
self.contents.draw_text(rect.x, rect.y, 172, WLH, item)
end
end
#------------------------------------------------------------------------------
alias update_addition update
def update
update_addition
update_description(@index)
update_selection
end
#------------------------------------------------------------------------------
def update_selection
if Input.trigger?(Input::B)
Sound.play_cancel
@quest_helper.dispose
if @quest_map != nil
@quest_map_bitmap.bitmap.dispose
@quest_map_bitmap.dispose
@quest_map.dispose
@quest_map_viewport.dispose
@quest_map = nil
end
end
end
#------------------------------------------------------------------------------
def update_description(id)
if defined?(@data[id][2])
@quest_helper.write_text(@data[id][2])
if @quest_map == nil
if File.exist?("Graphics/Questmaps/"+@data[id][1]+"."+MAP_FORMAT)
self.height /= 3
@quest_map = Window_Description.new(0,210,272,(24*7)+38)
@quest_map_bitmap = Sprite.new
@quest_map_viewport = Viewport.new(3,213,268,(24*7)+35)
@quest_map_bitmap.viewport = @quest_map_viewport
@quest_map_bitmap.bitmap = Cache.questmaps(@data[id][1])
@quest_map_bitmap.viewport.z = 150
end
else
if File.exist?("Graphics/Questmaps/"+@data[id][1]+"."+MAP_FORMAT)
@quest_map_bitmap.bitmap = Cache.questmaps(@data[id][1])
else
self.height *= 3
@quest_map_bitmap.bitmap.dispose
@quest_map_bitmap.dispose
@quest_map.dispose
@quest_map_viewport.dispose
@quest_map = nil
end
end
end
end
end
#==============================================================================
class Scene_File < Scene_Base
#==============================================================================
alias write_save_data_adds write_save_data
def write_save_data(file)
write_save_data_adds(file)
Marshal.dump($activelog, file)
Marshal.dump($completedlog, file)
Marshal.dump($questlog, file)
end
alias read_save_data_adds read_save_data
def read_save_data(file)
read_save_data_adds(file)
$activelog = Marshal.load(file)
$completedlog = Marshal.load(file)
$questlog = Marshal.load(file)
end
end
#==============================================================================
module Cache
#==============================================================================
def self.questmaps(filename)
load_bitmap("Graphics/Questmaps/", filename)
end
end
Script v1.12
#==============================================================================
# Simple Quest-Log
#
# Version : 1.12 - 26.04.08
# Created by : hellMinor
# Do NOT redistribute without my permission
# Description : A simple script for a Quest-Log
#
#==============================================================================
#==============================================================================
# F.A.Q.
#==============================================================================
# The Global Questlog-Name is $questlog
# To open the Questlog from the menu just do $scene = Scene_Questlog.new
# To open the Questlog from an event $scene = Scene_Questlog.new(false)
#
# To add a quest make a new call script with this Template :
# $questlog.addQuest("Unique ID","Quest Title","Quest Description")
#
# To update a Quest description make a new call script with this Template :
# $questlog.updateQuest("unique ID","Quest Description")
#
# To move a Quest to Completed Quests make new call script with this Template :
# $questlog.completeQuest("Unique ID")
#
# To delete a Quest from the Active-Questlog make a call script with this
# Template :
# $questlog.deleteQuest("Unique ID")
#
# If u want to add a Questmap, create a folder named Questmaps in your
# Graphics folder. The name of the Questmap must be the same as the Quest
# in the Game. Be sure that you set the correct MAP_FORMAT.
# A Quest-Map should have a size of 265*200 px !
# I.E. : If your Quest is named QuestYXZ , the picture in the Questmap folder
# has to be QuestYXZ.png if your map is a .png
#==============================================================================
# Setup
#==============================================================================
QUESTLOGNAME = "Questlog" # Questlog Menu name
QUEST_MENU_ITEM_1 = "Active Quests" # Active Quest name
QUEST_MENU_ITEM_2 = "Completed Quests" # Completed Quest name
SIZE_VAR = 20 # Character Size
MAP_FORMAT = "png" # Quest-Map Ending
#==============================================================================
class Questlog
#==============================================================================
#------------------------------------------------------------------------------
def addQuest(id,header,description)
$activelog << [id,header,description]
end
#------------------------------------------------------------------------------
def updateQuest(id,description)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$activelog[i][2] = description
break
end
end
end
#------------------------------------------------------------------------------
def completeQuest(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$completedlog << $activelog[i]
$activelog.delete_at(i)
break
end
end
end
#------------------------------------------------------------------------------
def deleteQuest(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$activelog.delete_at(i)
break
end
end
end
end
#==============================================================================
class Scene_Questlog < Scene_Base
#==============================================================================
def initialize(from_menu = true)
@from_menu = from_menu
end
def start
super
create_menu_background
@help_window = Window_Help.new
@help_window.set_text(QUESTLOGNAME,1)
s1 = QUEST_MENU_ITEM_1
s2 = QUEST_MENU_ITEM_2
@select_window = Window_Command.new(544,[s1,s2],2,1)
@select_window.y = 55
@select_window.active = true
end
#------------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@help_window.dispose
@select_window.dispose
end
#------------------------------------------------------------------------------
def kill_questwindows
@quest_window.dispose
end
#------------------------------------------------------------------------------
def return_scene
if @from_menu
$scene = Scene_Menu.new
else
$scene = Scene_Map.new
end
end
#------------------------------------------------------------------------------
def update
super
update_menu_background
@help_window.update
if @select_window.active
@select_window.update
update_select_selection
elsif @quest_window.active
@quest_window.update
update_quest_selection
end
end
#------------------------------------------------------------------------------
def update_select_selection
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
case @select_window.index
when 0
$oldlog = false
@quest_window = Window_Quest.new(0,110,272,(24*11)+42)
@select_window.active = false
@quest_window.active = true
when 1
$oldlog = true
@quest_window = Window_Quest.new(0,110,272,(24*11)+42)
@select_window.active = false
@quest_window.active = true
end
end
end
#------------------------------------------------------------------------------
def update_quest_selection
if Input.trigger?(Input::B)
Sound.play_cancel
kill_questwindows
@select_window.active = true
end
end
end
#==============================================================================
class Scene_Title < Scene_Base
#==============================================================================
alias create_game_objects_additions create_game_objects
def create_game_objects
create_game_objects_additions
$questlog = Questlog.new
$activelog = Array.new
$completedlog = Array.new
end
end
#==============================================================================
class Window_Help < Window_Base
#==============================================================================
def initialize(x = 0,y = 0, width = 544, height = WLH+32)
super(x, y, width, height)
end
end
#==============================================================================
class Window_Description < Window_Base
#==============================================================================
def initialize(x = 0,y = 0, width = 544, height = WLH+32)
super(x, y, width, height)
@text = nil
@contents_x = 0
@contents_y = 0
@line_count = 0 # Line count drawn up until now
update
end
#------------------------------------------------------------------------------
def new_line
@contents_x = 0
@contents_y += WLH
@line_count += 1
@line_show_fast = false
end
#------------------------------------------------------------------------------
def finish_message
@text = nil
@line_count = 0
@contents_x = 0
@contents_y = 0
end
#------------------------------------------------------------------------------
def write_text(str)
if str != nil || str != ""
create_contents
update_msg(str)
end
end
#------------------------------------------------------------------------------
def update_msg(str)
str.each_line{|str2|iterator(str2)}
finish_message
end
#------------------------------------------------------------------------------
def iterator(str2)
contents.font.size = SIZE_VAR
contents.draw_text(@contents_x, @contents_y, str2.size*40, WLH, str2.delete("\n"))
c_width = contents.text_size(str2).width
@contents_x += c_width
new_line
end
end
#==============================================================================
class Window_Quest < Window_Selectable
#==============================================================================
def initialize(x, y, width, height)
super(x, y, width, height)
@column_max = 1
self.index = 0
@quest_helper = Window_Description.new(271,110,273,(24*11)+42)
refresh
end
#------------------------------------------------------------------------------
def refresh
@data = []
if !$oldlog
for i in (0..$activelog.size-1)
@data.push($activelog[i])
end
else
for i in (0..$completedlog.size-1)
@data.push($completedlog[i])
end
end
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#------------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
item = @data[index][1]
if item != nil
rect.width -= 4
self.contents.draw_text(rect.x, rect.y, 172, WLH, item)
end
end
#------------------------------------------------------------------------------
alias update_addition update
def update
update_addition
update_description(@index)
update_selection
end
#------------------------------------------------------------------------------
def update_selection
if Input.trigger?(Input::B)
Sound.play_cancel
@quest_helper.dispose
if @quest_map != nil
@quest_map_bitmap.bitmap.dispose
@quest_map_bitmap.dispose
@quest_map.dispose
@quest_map_viewport.dispose
@quest_map = nil
end
end
end
#------------------------------------------------------------------------------
def update_description(id)
if defined?(@data[id][2])
@quest_helper.write_text(@data[id][2])
if @quest_map == nil
if File.exist?("Graphics/Questmaps/"+@data[id][1]+"."+MAP_FORMAT)
self.height /= 3
@quest_map = Window_Description.new(0,210,272,(24*7)+38)
@quest_map_bitmap = Sprite.new
@quest_map_viewport = Viewport.new(3,213,268,(24*7)+35)
@quest_map_bitmap.viewport = @quest_map_viewport
@quest_map_bitmap.bitmap = Cache.questmaps(@data[id][1])
@quest_map_bitmap.viewport.z = 150
end
else
if File.exist?("Graphics/Questmaps/"+@data[id][1]+"."+MAP_FORMAT)
@quest_map_bitmap.bitmap = Cache.questmaps(@data[id][1])
else
self.height *= 3
@quest_map_bitmap.bitmap.dispose
@quest_map_bitmap.dispose
@quest_map.dispose
@quest_map_viewport.dispose
@quest_map = nil
end
end
end
end
end
#==============================================================================
class Scene_File < Scene_Base
#==============================================================================
alias write_save_data_adds write_save_data
def write_save_data(file)
write_save_data_adds(file)
Marshal.dump($activelog, file)
Marshal.dump($completedlog, file)
end
alias read_save_data_adds read_save_data
def read_save_data(file)
read_save_data_adds(file)
$activelog = Marshal.load(file)
$completedlog = Marshal.load(file)
end
end
#==============================================================================
module Cache
#==============================================================================
def self.questmaps(filename)
load_bitmap("Graphics/Questmaps/", filename)
end
end
Beispiel um das Questlog zum Menü zu adden
Scene_Menu von Evil95
#==============================================================================
# ** Scene_Menu_for_Simple_Questlog_by_Evil95
#------------------------------------------------------------------------------
# This class performs the menu screen processing.
#==============================================================================
class Scene_Menu < Scene_Base
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s7 = "Questlog"
s5 = Vocab::save
s6 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s7, s5, s6])
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, false) # Disable save
end
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 4
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1,2,3 # Skill, equipment, status
start_actor_selection
when 5 # Save
$scene = Scene_File.new(true, false, false)
when 6 # End Game
$scene = Scene_End.new
when 4
$scene = Scene_Questlog.new
end
end
end
end
class Scene_File < Scene_Base
def return_scene
if @from_title
$scene = Scene_Title.new
elsif @from_event
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(5)
end
end
end
class Scene_End < Scene_Base
def return_scene
$scene = Scene_Menu.new(6)
end
end
class Scene_Questlog < Scene_Base
def return_scene
if @from_menu
$scene = Scene_Menu.new(4)
else
$scene = Scene_Map.new
end
end
end
-
Hab schon eins gesucht =)
Mal schauen ob iche s verwenden werde ;)
BIG THX!
-
Na das sieht doch schon richtig nett aus hM, schlicht, aber erfüllt seinen Zweck.
Ist es auch möglich, eine Anzeige von Pictures reinzubringen, die möglicherweise als Hilfestellung für einen Quest dienen?
-
wow, ich glaub, dass ich es benutzen werde, echt cool.
-
Das sieht echt cool aus, werde es mal ausprobieren und wens mir gefällt werde es das wohl auch benutzen :)
Nice Work excl.gif\" style=\"vertical-align:middle\" emoid=\":excl:\" border=\"0\" alt=\"excl.gif\" /]
-
sehr schön endlich hab ich ne verwendung für das über flüßige 'status' im menu hoffendlich klappt das mit den überschreiben
edit: hat geklappt! ich freue mich so! danke hM
edit vom edit: ich habe das verbesserte menu also wo man exp und so auf der hauptseite sieht.
-
Herendil, könntest du mir vielleicht erklären wie ich das "Status" Menü überschreiben kann? Wäre echt nett von dir, bin nämlich ein Vollblut-Noob in Sachen Scripts! :lol:
-
könnt noch den code adden um das direkt ins menü zu pappen bzw ein tut schreiben wie man custom menu commands setzt wenns paar brauchen
@dainreth : wie meinst du das genau mit den pictures? zb ne landkarte wo gezeigt wird wo man hin muss? theoretisch schon, könnt ich bissl umbauen dann könnt ich noch ein kleines window fürn pic adden
-
Er meint es wohl so:
(http://img19.imageshack.us/img19/1485/questlog6nk.png)
Jedoch wenn du damit anfängst es einzubauen, will jeder ein Feature (z.B. die Textbefehle \v[n] benützen in der Beschreibung oder Icons wie auf dem Bild vor dem Titel der Quest) und dann ist es ja nicht mehr simpel? Heißt jetzt aber nicht, dass ich was dagegen habe, würde mich sogar sehr darüber freuen :)
-
Also ich wäre dir auf jedenfall sehr dankbar wenn du den code adden bzw. Tuts schreiben würdest! :)
-
Habn problemm...
Script "Quest menü" line 243: NoMethodError occurred.
undefined method size for nil:NilClass
sagte ich das ich RGSS noob bin ^^
-
hast du vllt irgendwas drin was an der scene_title rumbaut?
-
Jup thx, das war das problemm, funktioniert einwandfrei :)
Habs jetzt rausgenommen wollte ich eh früher oder später
-
man kann schon am scene_title rumbauen , ich initialisier nur zusätzlich zu den variablen im spiel halt noch 3 für das questlog , die wurden dann halt nich initialisiert und deshalb kannte der den befehl net, sollte aber eigentlich mit dem meisten kompaktibel sein da ich nur ein alias gesetzt hab
btw : oben findet man jetz den code wo man das im menü direkt hinzufügen kann
-
@dainreth : wie meinst du das genau mit den pictures? zb ne landkarte wo gezeigt wird wo man hin muss? theoretisch schon, könnt ich bissl umbauen dann könnt ich noch ein kleines window fürn pic adden
Jop, genau sowas meine ich. Im Questlog von Cäsar (siehe EE Post) ist zwar ein Bild drinnen, aber irgendwie hat es mir nie gefallen, dass sich dieses im Beschreibungsfenster befindet. Das Bildfenster müsste auch nicht allzu groß sein..nur so eine Idee, falls du vielleicht mal Zeit hast :)
-
ich könnt nochn optionales picwindow einbauen wenn ich das fenster wo die quests stehen auf 5 anzeigbare quests, also mehr als 5 und man muss scrollen , kürze , dann hab ich noch platz für mehr,
hm mal schauen
-
Ich will ja nicht nerven, aber ich habe jetzt das Script, welches das Questmenü im "normalen" Menü anzeigen soll, eingefügt doch bei mir ist immer noch alles wie beim alten, also sprich, der Menüpunkt "Status" ist immer noch vorhanden! Was mache ich nur falsch?!?!?!?!? sad.gif\" style=\"vertical-align:middle\" emoid=\":(\" border=\"0\" alt=\"sad.gif\" /]
-
Also der Menüpunkt "Status" bleibt erhalten. Jedoch wird vor ihn ein neuer Punkt "Questlog" angezeigt, wenn du das Skript in Materials bzw. unter den ganzen Scenes und über Main eingefügt hast und auch kein anderes Menüskript verwendest.
-
Nice work :)
I like the way you use to draw text, in def update_msg(str)
I've some question from it though, what is this means by?
(i, i-i+1)
I means, if i-i, it's equal 0. So i-i+1 will always equal 1.
I think it's better to use just 1 instead of i-i :)
However, I'm not sure about the slice syntax. So maybe I'm wrong :P
-
no youre right,
well, i dont realy know why i wrote this but just 1 will do the same
i got a realy hard time with this slice thing, the first method i made which sliced my string into pieces deleted the whole string in my questarray instead of the string ,
i dont know why cause in this method ill never used that variable, so i was happy that the second one worked so fine and since there are no real windows which can keep up multiple lines this was the only method i found out
-
I see :)thanks for the answer.
Nice script btw.
-
Eine Frage habe ich noch, wie kann ich das linke Fenster (Name des Quests) kleiner machen um damit die Questbeschreibung größer anzeigen zu können? In welcher Zeile muss ich da was ändern?
-
AUch eine frage die ähnlich ist ^^
In wecher zeile muss ich die Größe der schrift ändern für das rechte Fenster ?
Beitrag Nr.100 :)
-
@boii : kleiner machst du das quest_window links in zeile 133 und zeile 138
die größe des rechten fenster is in 242
@angelos : das mit der schriftgröße hab ich eingebaut aber noch nich hoch geladen , kannst dann direkt über eine variable die oben steht die schriftgröße einstellen , musst nur kurz noch gedulden bis ich den rest drin hab den ich einbauen wollte
-
Bei mir kommt eine Fehlermeldung bei Zeile 53 wenn ich folgendes mache:
Quest "1" annehmen
Quest "2" annehmen
Quest "1" abgeben
also immer wenn ich mehrere quest hab und ein der ersten abgeben will!!
-
der fehler tritt auf wenn quest 1 oder 2 abgeben will , warum der auftritt weiss ich grad nich, wenn ich die werte ausgebe sind die richtig, hab aber trotzdem ne lösung , sollte funktionieren und die schleifen optimieren
ich lads gleich hoch , also die v.1.1
edit : is oben , man kann jetz auch die schriftgröße ändern
-
Ok funktioniert alles danke happy.gif\" style=\"vertical-align:middle\" emoid=\"^_^\" border=\"0\" alt=\"happy.gif\" /]
-
hi,
erstmal großes Lob, endlich ma nen Quest Log was auf anhieb geht:D
jetzt kommt aber ne Frage bzw. ne Anregung:
Wenn ich in den Namen des Quests ü,ä,ö,ß etc. benutzte geht das
wenn ich allerdings in die Beschreibung eines Quests ü,ä,ö,ß etc. benutzen will geht das nich.
weißt du woran das liegt? bzw. hast du ne möglichkeit wie man das ändern kann das es auch da angezeigt wird?
-
ein kleiner versionssprung, also nicht wundern, will damit nur zeigen
dass das script keineswegs beta status oder so etwas hat
der fehler bei den umlauten wurde behoben und nun ist es auch möglich
bilder zu den quests anzeigen zu lassen,
dazu braucht ihr nur einen order namens questmaps in graphics erstellen
und ein bild das so heist wie die quest im spiel dort hinein zu tun
das bild wird dann automatisch angezeigt
-
Cool vorallem das mit dem Bilder einfügen. Werde es mir heute nachmittag mal testen ^^
-
Schön, dass die neue Bildfunktion eingebaut ist, gefällt mir sehr gut! Auch schön, dass du's geschafft hast, dass in 'nem eigenen Fenster anzuzeigen, herzlichen Dank!
-
Absolut genial! Das ist wohl das Script, welches ich am dringendsten benötigte! Und das tolle Extra mit den Pics toppt das ganze noch! Vielen vielen Dank! Du bist mein Hel(l)d! xD
LG, Mclovin
-
voll geiles script. werde ich 100%ig nutzen aba wie kann ich machen, dass man das Questlog von der Map aus mit ner Taste zb: F5 öffnet? währe cool wenn vorher ne condition kommt, die überprüft ob man es aufrufen kann/darf.
-
was soll das bringen ?
wenn man eine karte zu ner quest hat warum sollte man sie generell nich anzeigen? versteh jetz nich ganz was das bringen soll
-
was genau muss ich machen, damit ich im menü den questlog anwählen kann?
-
is egal. ich habs hinbekommen wie ichs wollte :D.
-
Hi,
echt super script ^^
Nun komme ich mal zu meinem Problem. Wen man das Game speichert und dann den spielstand läd dann ist das questbook leer. Und das stört mich doch ein wenig. Wäre echt Prima wen es möglich wäre das Questbook mit abzuspeichern.
Problem 2: Das Questpic verschwindet meist mit 2-4 sek verzögerung oder gar nicht, weiß jetzt nicht ob das nur bei mir so ist.
Falls jemand die selben probleme hat oder eben nicht kann er ja mal antworten ^^
Gruß,
Dustinthewind91.
-
danke für die info dust
beide bugs hab ich mit version 1.12 gefixed
-
Hi,
das ist Super !
Du machst ne menge super Scripts was mich echt begeistert.
Zwar haben manche noch einige fehler doch die behebst du ja auch sehr schnell.
Respekt und Großes Lob.
Gruß,
Fresh Dustin
-
danke :)
das problem is meistens das man die eigenen fehler selbst nicht sieht, ich teste zwar immer aber ich hab irgendwo schon gesagt ich sollte meine scripte wohl mal beta testen lassen^^
-
Hi,
die eigenen fehler zu finden ist immer schwer da andere leute auch ganz andere sachen damit anstellen ^^
zu dem betatestern: ja das wäre vlt. net schlecht ^^
Ich würde das sogar gerne tun, ich hab oft zeit und könnte dann ein bissl rumexperimentieren.
Falls du Intresse hast kannste ja einfach neue scripts per pm schicken und ich probier dann ein bissl rum.
Gruß,
Dustinthewind91
-
so kleine umfrage^^
ich bau grad so eine art status mit ein,
dann könnt ich per event abfragen ob ein quest einen bestimmten status hat
nun wollt ich fragen ob ihr lieber nen integer als status haben wollt oder lieber nen string,
der vorteil des integers is das ihr bei updatequest den status nicht angeben müsst sondern intern dann direkt erhöht werden kann , zb , queststatus beginnt immer bei 0, dann macht ihr updatequest , ändert aber nur die questbeschreibung, der questatus würde automatisch auf 1 springen weil geupdatet habt,
ihr braucht dann eure alten events auch nicht ändern da sie immernoch funktionieren würde
bei nem string müsstet ihr denn status immer mit angeben könnt dann aber sowas wie "wartend" oder "schlafend" reinbauen was wiederum bei ner abfrage leichter zu identifizieren ist als 1,2 oder 3
hier müsstet ihr eure events auch updaten weil ihr den status ja mit angeben müsst
also was darfs sein?
-
Ich weiss jetzt gerade nicht was du mit (wartend) oder (schlafend) meinst kann sein weil es ja gerade spät ist ^^
Aber bevor ich entscheide will ich wissen für/gegen was ich mich entscheide ;)
-
wartend bzw schlafend beschreibt einfach nur einen string , da kann auch mupfelgrumpf stehen,
das soll ja nen questatus beschreiben falls ne quest mehrere teile hat zb , die beschreibung kannste updaten und dann dazu noch den questatus, nehm ich strings muss ich se updaten , nehm ich nen integer , also ne zahl kann ichs auch automatisch um 1 hochsetzen für jedes update der beschreibung
wollt nur wisssen ob lieber eine zahl abgefragt wird im event oder ein string
-
Ich wäre für strings, erleichtert auch die Übersicht usw.
-
Ich kapier das Script nicht ;_; bei mir will nix funzen xD'
kann mir jemand eine Demo machen oder eine Step4Step erklärung xD'
Wäre super lieb^^
-
was genau funktioniert denn nich?
-
Ich habs eingefügt aber weder der "Link" im Menü noch sonst ist was da, also es zeigt im Endeffekt null komma Josef an als hätte ich das Script nicht eingefügt xD'
-
das script fügt sich selbst im menü auch garnich ein, dafür is das ja auch nich zuständig^^
bissl weiter drunter is ein script welches das questlog ans menü anfügt aber das steht da auch drüber
-
Ja das weiss ich schon XD'
aber bei mir geht es trotzdem nicht ;_;'
Ich mach da irgendwas falsch weiss aber nich was XD
-
in meinem game wo ich meine scripte teste hab ich das add questlog to menu, danach das simple questlog und da gehts einwandfrei
natürlich aber beide über main
-
Hmm...
schade...
bei mir stimmt da irgendwas nicht, vllt nicht kompatibel mit den KCG scripten...
Naja ich suche mir eine andere Möglichkeit^^ trotzdem danke!
-
hab jetz ne neue version v1.2 , diese version hat jetz auch den quest status , dieser kann mit $questlog.getQuestState einfach abgefragt werden zb in einem conditional branch bestimmte events nur bei einem bestimmten quest status etwas tun zu lassen wie zb verschiedene text messages rausgeben
danke an soulstormer für die idee
@tally : eigentlich sollte das einwandfrei funktionieren solang du keine error meldung kriegst
has du irgendein script welches dir das menü verändert?
-
Hm nein, hab nur das Skill Script drinne, und dann bekomm ich ein Mnü Befehl dazu eben "Skills"
(unter "ende" >_> voll hässlich)
Aber schon ok^^ ~
So dringend brauch ich es nicht xD
Trotzdem danke ^-^
-
ja genau dieses script ändert doch dann was am menü
das is der grund warum du es nicht siehst
gibt mir das script mal ebend dann editier ich dir das um,
wo willste questlog und wo skills hin haben?
-
Ich hoffe das passt so^^
Menü:
Item
Skills
Technik
Ausrüstung
Status
Questlog
Speichern
Ende
Script:
[code]#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ ? Equipment Skills System - KGC_EquipLearnSkill ? VX ?
#_/ ? Last Update: 2008/02/10 ?
#_/ ? Translation by Mr. Anonymous ?
#_/-----------------------------------------------------------------------------
#_/ This script allows you to assign skills that can be "learned" by equipping
#_/ designated equipment. Everytime the party defeats an enemy, they recieve
#_/ TP (Training Points) that go toward mastering a skill. Once a skill is
#_/ mastered (with the default setting of NEED_FULL_AP = true), that skill is
#_/ learned. This system is much like the one in Final Fantasy Tactics Advance.
#_/=============================================================================
#_/ ? Instructions For Usage ?
#_/ To make use of these functions, you must insert the desired tag into the
#_/ "Notes" box located in the specified section of the database.
#_/ <learnskill> is for equipment, <needTP> is for Skills, and <TP> for enemies.
#_/ For example, you want the Club to supply the Dual Attack skill and be
#_/ mastered at 20 TP. You would locate the Club in the weapons tab of the
#_/ database and insert <learnskill 1>. Then, you'd locate Dual Attack in
#_/ the Skills tab of the database and insert <needTP 20>. Simple, effective.
#_/
#_/ Key: n = Number
#_/ SkillID = The ID number of the desired skill in the skills database
#_/ Amount = The desired amount of TP.
#_/
#_/ <learnskill SkillID>
#_/ Assigns the given skill to the designated equipment for the actor to use.
#_/
#_/ <needTP Amount>
#_/ Assigns a specified amount of TP the actor must aquire in order to master
#_/ the skill.
#_/ <TP Amount>
#_/ Assigns a specified amount of TP earned from defeating the enemy.
#_/
#_/
#_/ ? Script Commands ?
#_/ These commands are used in "Script" function in the third page of event
#_/ commands under "Advanced".
#_/
#_/ * gain_actor_ap(ActorID, AP Amount, show)
#_/ Allows you to give an actor a specified amount of AP.
#_/ "Show" is a toggle. If set to true, if the skill is mastered, it will
#_/ display the "Skill Mastered" screen. (Ex. gain_actor_ap (1, 50, true))
#_/
#_/ * change_actor_ap(ActorID, SkillID, AP Amount)
#_/ Allows you to modify the amount of AP a specified skill has.
#_/ (Ex. change_actor_ap (1, 3, 100)
#_/
#_/ * call_ap_viewer(index: ActorID)
#_/ This calls the AP Viewer screen. If you exclude (index:), the first
#_/ actor in the index is automatically called.
#_/ Note: To use this properly, Ex. call_ap_viewer(index: 2) would pull up
#_/ the AP Viewer screen for the second actor.
#_/
#_/ [Further, please see "Equipment Exclusion" and "Skills Exclusion" located]
#_/ [near the bottom of the Customize block for more control. ]
#_/
#_/=============================================================================
#_/ Installation: Install above KCG_SkillCPSystem, if you use that script.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
$data_system = load_data("Data/System.rvdata") if $data_system == nil
#==============================================================================#
# ? Customization ? #
#==============================================================================#
module KGC
module EquipLearnSkill
# Note: To avoid confusion with the KCG_DistributeParameter script, I use TP
# (Training Point) as the default abbreviation. KGC uses AP.
# ? AP Name ?
# This allows you to change the abbreviation of AP.
VOCAB_AP = "TP"
# ? AP Default Value ?
# This allows you to change the default value of AP gained by an enemy when
# not manually specified using the <TP n> tag.
DEFAULT_AP = 1
# ? Skill Use Mastery ?
# This toggle allows you to change whether a skill is usable when AP hasn't
# been maxed out.
# true = Skill cannot be used until the skill has been mastered.
# false = Skills are usable regardless of AP amount, however, when the item
# that provides that skill is unequipped, the skill is removed.
NEED_FULL_AP = false
# ? AP Result Screen Aquisition Display ?
# The allows you to change the AP aquired message for battle results.
# %s : aquired AP amount
VOCAB_RESULT_OBTAIN_AP = "bekommt %s #{VOCAB_AP}!"
# ? Display message when skill is mastered on results screen
# (beginning of message).
# %s : Actor Name
VOCAB_RESULT_MASTER_SKILL = "%s's"
# ? Display message when skill mastered on results screen.
# (ending of message)
# %s : Name of mastered skill
VOCAB_RESULT_MASTER_SKILL_NAME = "%s wurde erlernt!"
# ? Command Menu ?
# This toggle adds the "AP Viewer" (Training Skills) selection to the main
# command menu.
USE_MENU_AP_VIEWER_COMMAND = true
# ? Text of the Equip Skills selection on the main command window.
# Could also be written: VOCAB_MENU_AP_VIEWER = "#{VOCAB_AP} Skills"
VOCAB_MENU_AP_VIEWER = "Skills"
# ? AP Viewer Screen ?
# Mastered AP skills column display.
VOCAB_MASTER_SKILL = " - MASTER - "
# This toggle shows/hides skills that have 0 AP.
# This also evidently affects the skill's usability, though untested.
# true = show
# false = Hide
SHOW_ZERO_AP_SKILL = false
# This toggle allows you to hide the name of a skill if the skill has 0 AP.
# true = mask the skill name
# false = unmask the skill name
MASK_ZERO_AP_SKILL_NAME = true
# This allows you to change the text of a 0 AP masked skill.
# (When MASK_ZERO_AP_SKILL_NAME = true)
ZERO_AP_NAME_MASK = "Unmöglich"
# This toggle allows you to mask the text displayed in the "Help" (topmost)
# window of a skill that has 0 AP.
# true = mask the skill's help text
# false = display the text normally
HIDE_ZERO_AP_SKILL_HELP = true
# This allows you to change the text displayed in the "Help" (topmost) window
# of a skill that has 0 AP. (When HIDE_ZERO_AP_SKILL_HELP = true)
ZERO_AP_SKILL_HELP = "Der Skill ist unmöglich."
# ? Equipment Exclusion ?
# The following lines make it possible for a specified actor to not gain
# skills granted by certain Weapons and Armors.
# The subscript of the array (The [] brackets) cooresponds to the Actor ID.
EXCLUDE_WEAPONS = [] # Weapons
EXCLUDE_ARMORS = [] # Armor
# Example:
# ActorID:1 WeaponID:50 and 70
# EXCLUDE_WEAPONS[1] = [50, 70]
# Ralph cannot aquire the skills given by the weapon of WeaponID 50 and 70.
# ? Skills Exclusion ?
# The following line makes it possible for a specified actor to not gain
# certain skills provided by any equipment that may normally grant them.
# The subscript of the array (The [] brackets) cooresponds to the Actor ID.
EXCLUDE_SKILLS = []
# Example:
# ActorID:1 SkillID:30
# EXCLUDE_SKILLS[1] = [30]
# Ralph cannot aquire the skill in SkillID 30 granted by any equipped goods.
# ? Call AP Viewer from the Skills Window ?
# This allows you to change what key/button is pressed on the skills window
# to shift to the AP Viewer window.
# When set to nil, this is disabled. ( CALL_EQUIPSKILLKEY = Input::nil )
# Note: Currently this only works with KGC_CategorizeSkill
# I'll revise this later so you may do so without that script.
# I also need to add a couple more methods to this anyhow.
CALL_APVIEWERKEY = Input::Z
# ? Call Skills Window from the AP Viewer ?
# This allows you to change what key/button is pressed on the AP Viewer
# to shift to the skills window.
# When set to nil, this is disabled. ( CALL_SKILLSKEY = Input::nil )
CALL_SKILLSKEY = Input::Y
end
end
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
# Unless you know what you're doing, it's best not to alter anything beyond #
# this point, as this only affects the tags used for "Notes" in database. #
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
# Whatever word(s) are after the separator ( | ) in the following lines are
# what are used to determine what is searched for in the "Notes" section.
$imported = {} if $imported == nil
$imported["EquipLearnSkill"] = true
module KGC::EquipLearnSkill
# Regular Expressions Defined
module Regexp
# Base Item Module
module BaseItem
# Learn Skill tag string
LEARN_SKILL = /<(?:LEARN_SKILL|learnskill)[ ]*(\d+(?:[ ]*,[ ]*\d+)*)>/i
end
# Base Skill Module
module Skill
# Need AP tag string
NEED_AP = /<(?:NEED_AP|needTP)[ ]*(\d+)>/i
end
# Base Enemy Module
module Enemy
# AP given tag string
AP = /<TP[ ]*(\d+)>/i
end
end
end
#==============================================================================
# ? KGC::Commands
#==============================================================================
module KGC::Commands
module_function
#--------------------------------------------------------------------------
# ? AP ???
# actor_id : ???? ID
# ap : ?? AP
# show : ?????????
#--------------------------------------------------------------------------
def gain_actor_ap(actor_id, ap, show = false)
$game_actors[actor_id].gain_ap(ap, show)
end
#--------------------------------------------------------------------------
# ? AP ???
# actor_id : ???? ID
# skill_id : ??? ID
# ap : AP
#--------------------------------------------------------------------------
def change_actor_ap(actor_id, skill_id, ap)
skill = $data_skills[skill_id]
return if skill == nil
$game_actors[actor_id].change_ap(skill, ap)
end
#--------------------------------------------------------------------------
# ? AP ?????????
# actor_index : ??????????
#--------------------------------------------------------------------------
def call_ap_viewer(actor_index = 0)
return if $game_temp.in_battle
$game_temp.next_scene = :ap_viewer
$game_temp.next_scene_actor_index = actor_index
end
end
class Game_Interpreter
include KGC::Commands
end
#==============================================================================
# ¦ Vocab
#==============================================================================
module Vocab
# ?????????
ObtainAP = KGC::EquipLearnSkill::VOCAB_RESULT_OBTAIN_AP
ResultFullAPSkill = KGC::EquipLearnSkill::VOCAB_RESULT_MASTER_SKILL
ResultFullAPSkillName = KGC::EquipLearnSkill::VOCAB_RESULT_MASTER_SKILL_NAME
# AP
def self.ap
return KGC::EquipLearnSkill::VOCAB_AP
end
# ?????????
def self.full_ap_skill
return KGC::EquipLearnSkill::VOCAB_MASTER_SKILL
end
# AP ????
def self.ap_viewer
return KGC::EquipLearnSkill::VOCAB_MENU_AP_VIEWER
end
end
#==============================================================================
# ¦ RPG::BaseItem
#==============================================================================
class RPG::BaseItem
#--------------------------------------------------------------------------
# ? ???????????????
#--------------------------------------------------------------------------
def create_equip_learn_skill_cache
@__learn_skills = []
self.note.split(/[\r\n]+/).each { |line|
case line
when KGC::EquipLearnSkill::Regexp::BaseItem::LEARN_SKILL # ?????
$1.scan(/\d+/).each { |num|
skill_id = num.to_i
# ????????????????
@__learn_skills << skill_id if $data_skills[skill_id] != nil
}
end
}
end
#--------------------------------------------------------------------------
# ? ??????? ID ???
#--------------------------------------------------------------------------
def learn_skills
create_equip_learn_skill_cache if @__learn_skills == nil
return @__learn_skills
end
end
#==============================================================================
# ¦ RPG::Skill
#==============================================================================
class RPG::Skill < RPG::UsableItem
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
@@__masked_name =
KGC::EquipLearnSkill::ZERO_AP_NAME_MASK # ????
@@__expand_masked_name = false # ???????????
if @@__expand_masked_name != nil
@@__expand_masked_name = (@@__masked_name.scan(/./).size == 1)
end
#--------------------------------------------------------------------------
# ? ???????????????
#--------------------------------------------------------------------------
def create_equip_learn_skill_cache
@__need_ap = 0
self.note.split(/[\r\n]+/).each { |line|
case line
when KGC::EquipLearnSkill::Regexp::Skill::NEED_AP # ?? AP
@__need_ap = $1.to_i
end
}
end
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
def masked_name
if KGC::EquipLearnSkill::MASK_ZERO_AP_SKILL_NAME
if @@__expand_masked_name
# ???????????
return @@__masked_name * self.name.scan(/./).size
else
return @@__masked_name
end
else
return self.name
end
end
#--------------------------------------------------------------------------
# ? ?????? AP
#--------------------------------------------------------------------------
def need_ap
create_equip_learn_skill_cache if @__need_ap == nil
return @__need_ap
end
end
#==============================================================================
# ¦ RPG::Enemy
#==============================================================================
class RPG::Enemy
#--------------------------------------------------------------------------
# ? ???????????????
#--------------------------------------------------------------------------
def create_equip_learn_skill_cache
@__ap = KGC::EquipLearnSkill::DEFAULT_AP
self.note.split(/[\r\n]+/).each { |line|
case line
when KGC::EquipLearnSkill::Regexp::Enemy::AP # ?? AP
@__ap = $1.to_i
end
}
end
#--------------------------------------------------------------------------
# ? ?? AP
#--------------------------------------------------------------------------
def ap
create_equip_learn_skill_cache if @__ap == nil
return @__ap
end
end
#==============================================================================
# ¦ Game_Temp
#==============================================================================
unless $imported["CustomMenuCommand"]
class Game_Temp
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_accessor :next_scene_actor_index # ????????????????
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias initialize_KGC_EquipLearnSkill initialize
def initialize
initialize_KGC_EquipLearnSkill
@next_scene_actor_index = 0
end
end
end
#==============================================================================
# ¦ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ? ??????
# actor_id : ???? ID
#--------------------------------------------------------------------------
alias setup_KGC_EquipLearnSkill setup
def setup(actor_id)
setup_KGC_EquipLearnSkill(actor_id)
@skill_ap = []
end
#--------------------------------------------------------------------------
# ? ?????? AP ??
# skill_id : ??? ID
#--------------------------------------------------------------------------
def skill_ap(skill_id)
@skill_ap = [] if @skill_ap == nil
return (@skill_ap[skill_id] != nil ? @skill_ap[skill_id] : 0)
end
#--------------------------------------------------------------------------
# ? AP ??
# skill : ???
# ap : ??? AP
#--------------------------------------------------------------------------
def change_ap(skill, ap)
@skill_ap = [] if @skill_ap == nil
@skill_ap[skill.id] = [[ap, skill.need_ap].min, 0].max
end
#--------------------------------------------------------------------------
# ? ????????????
# new_skills : ???????????????
#--------------------------------------------------------------------------
def display_full_ap_skills(new_skills)
$game_message.new_page
text = sprintf(Vocab::ResultFullAPSkill, name)
$game_message.texts.push(text)
new_skills.each { |skill|
text = sprintf(Vocab::ResultFullAPSkillName, skill.name)
$game_message.texts.push(text)
}
end
#--------------------------------------------------------------------------
# ? AP ??
# ap : AP ????
# show : ????????????
#--------------------------------------------------------------------------
def gain_ap(ap, show)
last_full_ap_skills = full_ap_skills
# ???????????????? AP ???
equipment_skills(true).each { |skill|
change_ap(skill, skill_ap(skill.id) + ap)
}
# ????????????
if show && last_full_ap_skills != full_ap_skills
display_full_ap_skills(full_ap_skills - last_full_ap_skills)
end
end
#--------------------------------------------------------------------------
# ? ??????????????
#--------------------------------------------------------------------------
alias skills_KGC_EquipLearnSkill skills
def skills
result = skills_KGC_EquipLearnSkill
# ???? AP ???????????
additional_skills = equipment_skills | full_ap_skills
return (result | additional_skills).sort! { |a, b| a.id <=> b.id }
end
#--------------------------------------------------------------------------
# ? ???????????
# all : ?????????????
#--------------------------------------------------------------------------
def equipment_skills(all = false)
result = []
equips.compact.each { |item|
next if exclude_learnable_equipment?(item) # ????????
item.learn_skills.each { |i|
skill = $data_skills[i]
next if exclude_equipment_skill?(skill) # ?????????
if !all && KGC::EquipLearnSkill::NEED_FULL_AP # ??????
next unless ap_full?(skill) # ???????
end
result << skill
}
}
return result
end
#--------------------------------------------------------------------------
# ? ???????????
# item : ????
#--------------------------------------------------------------------------
def exclude_learnable_equipment?(item)
case item
when RPG::Weapon # ??
# ?????????????
if KGC::EquipLearnSkill::EXCLUDE_WEAPONS[id] != nil &&
KGC::EquipLearnSkill::EXCLUDE_WEAPONS[id].include?(item.id)
return true
end
when RPG::Armor # ??
# ?????????????
if KGC::EquipLearnSkill::EXCLUDE_ARMORS[id] != nil &&
KGC::EquipLearnSkill::EXCLUDE_ARMORS[id].include?(item.id)
return true
end
else # ?????
return true
end
return false
end
#--------------------------------------------------------------------------
# ? ???????????????
# skill : ???
#--------------------------------------------------------------------------
def exclude_equipment_skill?(skill)
# ????????????
if KGC::EquipLearnSkill::EXCLUDE_SKILLS[id] != nil &&
KGC::EquipLearnSkill::EXCLUDE_SKILLS[id].include?(skill.id)
return true
end
return false
end
#--------------------------------------------------------------------------
# ? AP ???????????
#--------------------------------------------------------------------------
def full_ap_skills
result = []
(1...$data_skills.size).each { |i|
skill = $data_skills[i]
result << skill if ap_full?(skill) && !exclude_equipment_skill?(skill)
}
return result
end
#--------------------------------------------------------------------------
# ? AP ???????????
#--------------------------------------------------------------------------
def can_gain_ap_skills
result = []
equips.compact.each { |item|
next if exclude_learnable_equipment?(item) # ????????
item.learn_skills.each { |i|
skill = $data_skills[i]
next if exclude_equipment_skill?(skill) # ?????????
result << skill
}
}
return (result - full_ap_skills) # ???????????
end
#--------------------------------------------------------------------------
# ? AP ??????
# skill : ???
#--------------------------------------------------------------------------
def ap_full?(skill)
return false if skill == nil # ?????????
return false if skill.need_ap == 0 # ?? AP ? 0
return false if @skills.include?(skill.id) # ????
return (skill_ap(skill.id) >= skill.need_ap)
end
#--------------------------------------------------------------------------
# ? ??????????
# skill : ???
#--------------------------------------------------------------------------
def skill_can_use?(skill)
return super
end
end
#==============================================================================
# ¦ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ? AP ???
#--------------------------------------------------------------------------
def ap
return enemy.ap
end
end
#==============================================================================
# ¦ Game_Troop
#==============================================================================
class Game_Troop < Game_Unit
#--------------------------------------------------------------------------
# ? AP ?????
#--------------------------------------------------------------------------
def ap_total
ap = 0
for enemy in dead_members
ap += enemy.ap unless enemy.hidden
end
return ap
end
end
#==============================================================================
# ¦ Window_Command
#==============================================================================
class Window_Command < Window_Selectable
unless method_defined?(:add_command)
#--------------------------------------------------------------------------
# ? ???????
# ?????????
#--------------------------------------------------------------------------
def add_command(command)
@commands << command
@item_max = @commands.size
item_index = @item_max - 1
refresh_command
draw_item(item_index)
return item_index
end
#--------------------------------------------------------------------------
# ? ???????????
#--------------------------------------------------------------------------
def refresh_command
buf = self.contents.clone
self.height = [self.height, row_max * WLH + 32].max
create_contents
self.contents.blt(0, 0, buf, buf.rect)
buf.dispose
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def insert_command(index, command)
@commands.insert(index, command)
@item_max = @commands.size
refresh_command
refresh
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def remove_command(command)
@commands.delete(command)
@item_max = @commands.size
refresh
end
end
end
#==============================================================================
# ? Window_APViewer
#------------------------------------------------------------------------------
# AP ?????????????????????
#==============================================================================
class Window_APViewer < Window_Selectable
#--------------------------------------------------------------------------
# ? ?????????
# x : ?????? X ??
# y : ?????? Y ??
# width : ???????
# height : ????????
# actor : ????
#--------------------------------------------------------------------------
def initialize(x, y, width, height, actor)
super(x, y, width, height)
@actor = actor
@can_gain_ap_skills = []
self.index = 0
refresh
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def skill
return @data[self.index]
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
@data = []
@can_gain_ap_skills = @actor.can_gain_ap_skills
equipment_skills = @actor.equipment_skills(true)
(1...$data_skills.size).each { |i|
skill = $data_skills[i]
next if skill.need_ap == 0
unless KGC::EquipLearnSkill::SHOW_ZERO_AP_SKILL
# AP ? 0 ???????????????????
if @actor.skill_ap(skill.id) == 0 && !equipment_skills.include?(skill)
next
end
end
@data.push(skill)
}
@item_max = @data.size
create_contents
@item_max.times { |i| draw_item(i) }
end
#--------------------------------------------------------------------------
# ? ?????
# index : ????
#--------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
skill = @data[index]
if skill != nil
rect.width -= 4
draw_item_name(skill, rect.x, rect.y, enable?(skill))
if @actor.ap_full?(skill) || @actor.skill_learn?(skill)
# ????
text = Vocab.full_ap_skill
else
# AP ???
text = sprintf("%s %4d/%4d",
Vocab.ap, @actor.skill_ap(skill.id), skill.need_ap)
end
# AP ???
self.contents.font.color = normal_color
self.contents.draw_text(rect, text, 2)
end
end
#--------------------------------------------------------------------------
# ? ?????????????????
# skill : ???
#--------------------------------------------------------------------------
def enable?(skill)
return true if @actor.skill_learn?(skill) # ????
return true if @actor.ap_full?(skill) # ????
return true if @can_gain_ap_skills.include?(skill) # AP ????
return false
end
#--------------------------------------------------------------------------
# ? ??????????????????
# skill : ???
#--------------------------------------------------------------------------
def no_mask?(skill)
return true if @actor.skill_learn?(skill) # ????
return true if @actor.skill_ap(skill.id) > 0 # AP ? 1 ??
return true if @can_gain_ap_skills.include?(skill) # AP ????
return false
end
#--------------------------------------------------------------------------
# ? ????????
# item : ???? (????????????)
# x : ??? X ??
# y : ??? Y ??
# enabled : ??????false ?????????
#--------------------------------------------------------------------------
def draw_item_name(item, x, y, enabled = true)
draw_icon(item.icon_index, x, y, enabled)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x + 24, y, 172, WLH,
no_mask?(item) ? item.name : item.masked_name)
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
super
return unless self.active
if Input.repeat?(Input::RIGHT)
cursor_pagedown
elsif Input.repeat?(Input::LEFT)
cursor_pageup
end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def update_help
if KGC::EquipLearnSkill::HIDE_ZERO_AP_SKILL_HELP && !no_mask?(skill)
@help_window.set_text(KGC::EquipLearnSkill::ZERO_AP_SKILL_HELP)
else
@help_window.set_text(skill == nil ? "" : skill.description)
end
end
end
#==============================================================================
# ¦ Scene_Map
#==============================================================================
class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias update_scene_change_KGC_EquipLearnSkill update_scene_change
def update_scene_change
return if $game_player.moving? # ??????????
if $game_temp.next_scene == :ap_viewer
call_ap_viewer
return
end
update_scene_change_KGC_EquipLearnSkill
end
#--------------------------------------------------------------------------
# ? AP ??????????
#--------------------------------------------------------------------------
def call_ap_viewer
$game_temp.next_scene = nil
$scene = Scene_APViewer.new($game_temp.next_scene_actor_index,
0, Scene_APViewer::HOST_MAP)
end
end
#==============================================================================
# ¦ Scene_Menu
#==============================================================================
class Scene_Menu < Scene_Base
if KGC::EquipLearnSkill::USE_MENU_AP_VIEWER_COMMAND
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
alias create_command_window_KGC_EquipLearnSkill create_command_window
def create_command_window
create_command_window_KGC_EquipLearnSkill
return if $imported["CustomMenuCommand"]
@__command_ap_viewer_index = @command_window.add_command(Vocab.ap_viewer)
if @command_window.oy > 0
@command_window.oy -= Window_Base::WLH
end
@command_window.index = @menu_index
end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias update_command_selection_KGC_EquipLearnSkill update_command_selection
def update_command_selection
call_ap_viewer_flag = false
if Input.trigger?(Input::C)
case @command_window.index
when @__command_ap_viewer_index # AP ????
call_ap_viewer_flag = true
end
end
# AP ???????
if call_ap_viewer_flag
if $game_party.members.size == 0
Sound.play_buzzer
return
end
Sound.play_decision
start_actor_selection
return
end
update_command_selection_KGC_EquipLearnSkill
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias update_actor_selection_KGC_EquipLearnSkill update_actor_selection
def update_actor_selection
if Input.trigger?(Input::C)
$game_party.last_actor_index = @status_window.index
Sound.play_decision
case @command_window.index
when @__command_ap_viewer_index # AP ????
$scene = Scene_APViewer.new(@status_window.index,
@__command_ap_viewer_index, Scene_APViewer::HOST_MENU)
return
end
end
update_actor_selection_KGC_EquipLearnSkill
end
end
#==============================================================================
# ? Scene_APViewer
#------------------------------------------------------------------------------
# AP ????????????????
#==============================================================================
class Scene_APViewer < Scene_Base
HOST_MENU = 0
HOST_MAP = 1
#-----------------------------------------------
-
wie wäre es mit einem Eventbefehl der die Aktiven Quests öffnet? Und am besten auch noch auf die neue Quest zeigt. :P
-
boah typisch KGC nur kraut und rüben ,jetz weiss ic hwieder warum ich kgc net mag
also wenn beide laufen sollen kannste das kgc dingen unter meinen beiden machen, dann haste zumindest schonma beide im menü
@soulstorm : was meinst du damit?
-
$scene = Scene_Questlog.new(false)
Damit öffnet man doch den Questlog, ich möchte aber z.B. Aktive und Abgeschlossene Quests anzeigen lassen, am besten noch eine bestimmte Quest. (Eben die Quest die ich gerade bekomme oder abschließe.)
mit (true) passiert im übrigen das gleiche wie mit false oder ganz ohne^^
-
achso , also sobald man per event irgendwie add, update oder complete macht soll ein fenster kommen mit entsprechender quest und der aktion oder sowas
das true und false dient nur zur bestimmung der scene aus der man kommt
-
achso , also sobald man per event irgendwie add, update oder complete macht soll ein fenster kommen mit entsprechender quest und der aktion oder sowas
das true und false dient nur zur bestimmung der scene aus der man kommt
Jo genau so, allerdings sollte das an und abschaltbar sein, in dem call.
Eigentlich reicht ein Call Script welches die jeweiligen Fenster aufruft schon.
$scene = Scene_Questlog.new(false) = normales fenster
$scene = Scene_Questlog.new(false).active = Aktive Quests Fenster
$scene = Scene_Questlog.new(false).complete = Abgeschlossene Quests Fenster
-
Also, entweder bin ich zu blöd oder kA ^^
folgendes Problem:
Habe den Code eingefügt
Habe im Szene-menü alles so erändert wie auf der ersten Seite beschrieben
Jetzt habe ich folgendes Problem:
Der Beenden Button ist völlig verschwunden
Der STatus Knopf funktioniert nicht mehr. Man klickt auf Status dann kann man den chara auswählen und dann passiert nichts mehr.
-
kann nich sagen was du da falsch editiert hast da ichs net sehe^^
auf der ersten seite is noch ein zweites script was eine einbindung des questlogs ins menü zeigt
die änderungen die ich vorgenommen hatte , hatte ich mit |||||| markiert
-
Hallo Leute habe ein bisschen Rumgegetüftel und dann habe ich bemerkt das im Skript ein bisschen was durcheinander war... Habe das gerade hingebogen.
Also der Skript muss so aussehen, sonst geht das nicht richtig.
Das ist einmal das Scene Menu was man ersetzen muss:
#==============================================================================
# ¦ Scene_Menu
#------------------------------------------------------------------------------
# ??????????????????
#==============================================================================
class Scene_Menu < Scene_Base
#--------------------------------------------------------------------------
# ? ?????????
# menu_index : ?????????????
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
def start
super
create_menu_background
create_command_window
@gold_window = Window_Gold.new(0, 360)
@status_window = Window_MenuStatus.new(160, 0)
end
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@command_window.dispose
@gold_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
super
update_menu_background
@command_window.update
@gold_window.update
@status_window.update
if @command_window.active
update_command_selection
elsif @status_window.active
update_actor_selection
end
end
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = QUESTLOGNAME
s5 = Vocab::save
s6 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
@command_window.index = @menu_index
if $game_party.members.size == 0 # ??????? 0 ????
@command_window.draw_item(0, false) # ????????
@command_window.draw_item(1, false) # ???????
@command_window.draw_item(2, false) # ??????
@command_window.draw_item(3, false) # ?????????
@command_window.draw_item(4, false) # Disable status
end
if $game_system.save_disabled # ????????
@command_window.draw_item(5, false) # Disable save
end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 4
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # ????
$scene = Scene_Item.new
when 1,2 # Skill, equipment, QUESTLOGNAME
start_actor_selection
when 4 # ???
$scene = Scene_File.new(true, false, false)
when 5 # ?????
$scene = Scene_End.new
when 3
$scene = Scene_Questlog.new
end
end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def start_actor_selection
@command_window.active = false
@status_window.active = true
if $game_party.last_actor_index < @status_window.item_max
@status_window.index = $game_party.last_actor_index
else
@status_window.index = 0
end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def end_actor_selection
@command_window.active = true
@status_window.active = false
@status_window.index = -1
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def update_actor_selection
if Input.trigger?(Input::B)
Sound.play_cancel
end_actor_selection
elsif Input.trigger?(Input::C)
$game_party.last_actor_index = @status_window.index
Sound.play_decision
case @command_window.index
when 1 # ???
$scene = Scene_Skill.new(@status_window.index)
when 2 # ??
$scene = Scene_Equip.new(@status_window.index)
when 3 # ?????
$scene = Scene_Status.new(@status_window.index)
end
end
end
end
Und hier der Questlog Skript den man ersetzen muss:
#==============================================================================
# Simple Quest-Log
#
# Version : 1.2 - 02.04.08
# Created by : hellMinor
# Do NOT redistribute without my permission
# Description : A simple script for a Quest-Log
#
#==============================================================================
#==============================================================================
# F.A.Q.
#==============================================================================
# The Global Questlog-Name is $questlog
# To open the Questlog from the menu just do $scene = Scene_Questlog.new
# To open the Questlog from an event $scene = Scene_Questlog.new(false)
#
# To add a quest make a new call script with this Template :
# $questlog.addQuest("Unique ID","Quest Title","Quest Description","State")
#
# To update a Quest description make a new call script with this Template :
# $questlog.updateQuest("unique ID","Quest Description","State")
#
# To move a Quest to Completed Quests make new call script with this Template :
# $questlog.completeQuest("Unique ID")
#
# To delete a Quest from the Active-Questlog make a call script with this
# Template :
# $questlog.deleteQuest("Unique ID")
#
# You can get the current state of a Quest with this Template :
# $questlog.getQuestState("Unique ID")
# This may be useful in a conditional branch if you want to react with a
# special Quest-State
#
# If u want to add a Questmap, create a folder named Questmaps in your
# Graphics folder. The name of the Questmap must be the same as the Quest
# in the Game. Be sure that you set the correct MAP_FORMAT.
# A Quest-Map should have a size of 265*200 px !
# I.E. : If your Quest is named QuestYXZ , the picture in the Questmap folder
# has to be QuestYXZ.png if your map is a .png
#==============================================================================
# Setup
#==============================================================================
QUESTLOGNAME = "Questlog" # Questlog Menu name
QUEST_MENU_ITEM_1 = "Aktive Quests" # Active Quest name
QUEST_MENU_ITEM_2 = "Fertige Quests" # Completed Quest name
SIZE_VAR = 20 # Character Size
MAP_FORMAT = "png" # Quest-Map Ending
#==============================================================================
class Questlog
#==============================================================================
def addQuest(id,header,description,state = "")
$activelog << [id,header,description,state]
end
#------------------------------------------------------------------------------
def updateQuest(id,description,state = "")
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$activelog[i][2] = description
$activelog[i][3] = state
break
end
end
end
#------------------------------------------------------------------------------
def completeQuest(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$completedlog << $activelog[i]
$activelog.delete_at(i)
break
end
end
end
#------------------------------------------------------------------------------
def deleteQuest(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$activelog.delete_at(i)
break
end
end
end
#------------------------------------------------------------------------------
def getQuestState(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
return $activelog[i][3]
break
end
end
end
end
#==============================================================================
class Scene_Questlog < Scene_Base
#==============================================================================
def initialize(from_menu = true)
@from_menu = from_menu
end
def start
super
create_menu_background
@help_window = Window_Help.new
@help_window.set_text(QUESTLOGNAME,1)
s1 = QUEST_MENU_ITEM_1
s2 = QUEST_MENU_ITEM_2
@select_window = Window_Command.new(544,[s1,s2],2,1)
@select_window.y = 55
@select_window.active = true
end
#------------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@help_window.dispose
@select_window.dispose
end
#------------------------------------------------------------------------------
def kill_questwindows
@quest_window.dispose
end
#------------------------------------------------------------------------------
def return_scene
if @from_menu
$scene = Scene_Menu.new
else
$scene = Scene_Map.new
end
end
#------------------------------------------------------------------------------
def update
super
update_menu_background
@help_window.update
if @select_window.active
@select_window.update
update_select_selection
elsif @quest_window.active
@quest_window.update
update_quest_selection
end
end
#------------------------------------------------------------------------------
def update_select_selection
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
case @select_window.index
when 0
$oldlog = false
@quest_window = Window_Quest.new(0,110,272,(24*11)+42)
@select_window.active = false
@quest_window.active = true
when 1
$oldlog = true
@quest_window = Window_Quest.new(0,110,272,(24*11)+42)
@select_window.active = false
@quest_window.active = true
end
end
end
#------------------------------------------------------------------------------
def update_quest_selection
if Input.trigger?(Input::B)
Sound.play_cancel
kill_questwindows
@select_window.active = true
end
end
end
#==============================================================================
class Scene_Title < Scene_Base
#==============================================================================
alias create_game_objects_additions create_game_objects
def create_game_objects
create_game_objects_additions
$questlog = Questlog.new
$activelog = Array.new
$completedlog = Array.new
end
end
#==============================================================================
class Window_Help < Window_Base
#==============================================================================
def initialize(x = 0,y = 0, width = 544, height = WLH+32)
super(x, y, width, height)
end
end
#==============================================================================
class Window_Description < Window_Base
#==============================================================================
def initialize(x = 0,y = 0, width = 544, height = WLH+32)
super(x, y, width, height)
@text = nil
@contents_x = 0
@contents_y = 0
@line_count = 0 # Line count drawn up until now
update
end
#------------------------------------------------------------------------------
def new_line
@contents_x = 0
@contents_y += WLH
@line_count += 1
@line_show_fast = false
end
#------------------------------------------------------------------------------
def finish_message
@text = nil
@line_count = 0
@contents_x = 0
@contents_y = 0
end
#------------------------------------------------------------------------------
def write_text(str)
if str != nil || str != ""
create_contents
update_msg(str)
end
end
#------------------------------------------------------------------------------
def update_msg(str)
str.each_line{|str2|iterator(str2)}
finish_message
end
#------------------------------------------------------------------------------
def iterator(str2)
contents.font.size = SIZE_VAR
contents.draw_text(@contents_x, @contents_y, str2.size*40, WLH, str2.delete("\n"))
c_width = contents.text_size(str2).width
@contents_x += c_width
new_line
end
end
#==============================================================================
class Window_Quest < Window_Selectable
#==============================================================================
def initialize(x, y, width, height)
super(x, y, width, height)
@column_max = 1
self.index = 0
@quest_helper = Window_Description.new(271,110,273,(24*11)+42)
refresh
end
#------------------------------------------------------------------------------
def refresh
@data = []
if !$oldlog
for i in (0..$activelog.size-1)
@data.push($activelog[i])
end
else
for i in (0..$completedlog.size-1)
@data.push($completedlog[i])
end
end
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#------------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
item = @data[index][1]
if item != nil
rect.width -= 4
self.contents.draw_text(rect.x, rect.y, 172, WLH, item)
end
end
#------------------------------------------------------------------------------
alias update_addition update
def update
update_addition
update_description(@index)
update_selection
end
#------------------------------------------------------------------------------
def update_selection
if Input.trigger?(Input::B)
Sound.play_cancel
@quest_helper.dispose
if @quest_map != nil
@quest_map_bitmap.bitmap.dispose
@quest_map_bitmap.dispose
@quest_map.dispose
@quest_map_viewport.dispose
@quest_map = nil
end
end
end
#------------------------------------------------------------------------------
def update_description(id)
if defined?(@data[id][2])
@quest_helper.write_text(@data[id][2])
if @quest_map == nil
if File.exist?("Graphics/Questmaps/"+@data[id][1]+"."+MAP_FORMAT)
self.height /= 3
@quest_map = Window_Description.new(0,210,272,(24*7)+38)
@quest_map_bitmap = Sprite.new
@quest_map_viewport = Viewport.new(3,213,268,(24*7)+35)
@quest_map_bitmap.viewport = @quest_map_viewport
@quest_map_bitmap.bitmap = Cache.questmaps(@data[id][1])
@quest_map_bitmap.viewport.z = 150
end
else
if File.exist?("Graphics/Questmaps/"+@data[id][1]+"."+MAP_FORMAT)
@quest_map_bitmap.bitmap = Cache.questmaps(@data[id][1])
else
self.height *= 3
@quest_map_bitmap.bitmap.dispose
@quest_map_bitmap.dispose
@quest_map.dispose
@quest_map_viewport.dispose
@quest_map = nil
end
end
end
end
end
#==============================================================================
class Scene_File < Scene_Base
#==============================================================================
alias write_save_data_adds write_save_data
def write_save_data(file)
write_save_data_adds(file)
Marshal.dump($activelog, file)
Marshal.dump($completedlog, file)
Marshal.dump($questlog, file)
end
alias read_save_data_adds read_save_data
def read_save_data(file)
read_save_data_adds(file)
$activelog = Marshal.load(file)
$completedlog = Marshal.load(file)
$questlog = Marshal.load(file)
end
end
#==============================================================================
module Cache
#==============================================================================
def self.questmaps(filename)
load_bitmap("Graphics/Questmaps/", filename)
end
end
-
Hallo Leute habe ein bisschen Rumgegetüftel und dann habe ich bemerkt das im Skript ein bisschen was durcheinander war... Habe das gerade hingebogen.
Also der Skript muss so aussehen, sonst geht das nicht richtig.
Das ist einmal das Scene Menu was man ändern musste:
#==============================================================================
# ¦ Scene_Menu
#------------------------------------------------------------------------------
# ??????????????????
#==============================================================================
class Scene_Menu < Scene_Base
#--------------------------------------------------------------------------
# ? ?????????
# menu_index : ?????????????
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
def start
super
create_menu_background
create_command_window
@gold_window = Window_Gold.new(0, 360)
@status_window = Window_MenuStatus.new(160, 0)
end
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@command_window.dispose
@gold_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
super
update_menu_background
@command_window.update
@gold_window.update
@status_window.update
if @command_window.active
update_command_selection
elsif @status_window.active
update_actor_selection
end
end
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = QUESTLOGNAME
s5 = Vocab::save
s6 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
@command_window.index = @menu_index
if $game_party.members.size == 0 # ??????? 0 ????
@command_window.draw_item(0, false) # ????????
@command_window.draw_item(1, false) # ???????
@command_window.draw_item(2, false) # ??????
@command_window.draw_item(3, false) # ?????????
@command_window.draw_item(4, false) # Disable status
end
if $game_system.save_disabled # ????????
@command_window.draw_item(5, false) # Disable save
end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::cool.gif\" style=\"vertical-align:middle\" emoid=\"B)\" border=\"0\" alt=\"cool.gif\" /]
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 4
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # ????
$scene = Scene_Item.new
when 1,2 # Skill, equipment, QUESTLOGNAME
start_actor_selection
when 4 # ???
$scene = Scene_File.new(true, false, false)
when 5 # ?????
$scene = Scene_End.new
when 3
$scene = Scene_Questlog.new
end
end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def start_actor_selection
@command_window.active = false
@status_window.active = true
if $game_party.last_actor_index < @status_window.item_max
@status_window.index = $game_party.last_actor_index
else
@status_window.index = 0
end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def end_actor_selection
@command_window.active = true
@status_window.active = false
@status_window.index = -1
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def update_actor_selection
if Input.trigger?(Input::cool.gif\" style=\"vertical-align:middle\" emoid=\"B)\" border=\"0\" alt=\"cool.gif\" /]
Sound.play_cancel
end_actor_selection
elsif Input.trigger?(Input::C)
$game_party.last_actor_index = @status_window.index
Sound.play_decision
case @command_window.index
when 1 # ???
$scene = Scene_Skill.new(@status_window.index)
when 2 # ??
$scene = Scene_Equip.new(@status_window.index)
when 3 # ?????
$scene = Scene_Status.new(@status_window.index)
end
end
end
end
So und hier der andere Skript:
#==============================================================================
# Simple Quest-Log
#
# Version : 1.2 - 02.04.08
# Created by : hellMinor
# Do NOT redistribute without my permission
# Description : A simple script for a Quest-Log
#
#==============================================================================
#==============================================================================
# F.A.Q.
#==============================================================================
# The Global Questlog-Name is $questlog
# To open the Questlog from the menu just do $scene = Scene_Questlog.new
# To open the Questlog from an event $scene = Scene_Questlog.new(false)
#
# To add a quest make a new call script with this Template :
# $questlog.addQuest("Unique ID","Quest Title","Quest Description","State")
#
# To update a Quest description make a new call script with this Template :
# $questlog.updateQuest("unique ID","Quest Description","State")
#
# To move a Quest to Completed Quests make new call script with this Template :
# $questlog.completeQuest("Unique ID")
#
# To delete a Quest from the Active-Questlog make a call script with this
# Template :
# $questlog.deleteQuest("Unique ID")
#
# You can get the current state of a Quest with this Template :
# $questlog.getQuestState("Unique ID")
# This may be useful in a conditional branch if you want to react with a
# special Quest-State
#
# If u want to add a Questmap, create a folder named Questmaps in your
# Graphics folder. The name of the Questmap must be the same as the Quest
# in the Game. Be sure that you set the correct MAP_FORMAT.
# A Quest-Map should have a size of 265*200 px !
# I.E. : If your Quest is named QuestYXZ , the picture in the Questmap folder
# has to be QuestYXZ.png if your map is a .png
#==============================================================================
# Setup
#==============================================================================
QUESTLOGNAME = "Questlog" # Questlog Menu name
QUEST_MENU_ITEM_1 = "Aktive Quests" # Active Quest name
QUEST_MENU_ITEM_2 = "Fertige Quests" # Completed Quest name
SIZE_VAR = 20 # Character Size
MAP_FORMAT = "png" # Quest-Map Ending
#==============================================================================
class Questlog
#==============================================================================
def addQuest(id,header,description,state = "")
$activelog << [id,header,description,state]
end
#------------------------------------------------------------------------------
def updateQuest(id,description,state = "")
for i in 0..$activelog.size-1
if $activelog[0] == id
$activelog[2] = description
$activelog[3] = state
break
end
end
end
#------------------------------------------------------------------------------
def completeQuest(id)
for i in 0..$activelog.size-1
if $activelog[0] == id
$completedlog << $activelog
$activelog.delete_at(i)
break
end
end
end
#------------------------------------------------------------------------------
def deleteQuest(id)
for i in 0..$activelog.size-1
if $activelog[0] == id
$activelog.delete_at(i)
break
end
end
end
#------------------------------------------------------------------------------
def getQuestState(id)
for i in 0..$activelog.size-1
if $activelog[0] == id
return $activelog[3]
break
end
end
end
end
#==============================================================================
class Scene_Questlog < Scene_Base
#==============================================================================
def initialize(from_menu = true)
@from_menu = from_menu
end
def start
super
create_menu_background
@help_window = Window_Help.new
@help_window.set_text(QUESTLOGNAME,1)
s1 = QUEST_MENU_ITEM_1
s2 = QUEST_MENU_ITEM_2
@select_window = Window_Command.new(544,[s1,s2],2,1)
@select_window.y = 55
@select_window.active = true
end
#------------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@help_window.dispose
@select_window.dispose
end
#------------------------------------------------------------------------------
def kill_questwindows
@quest_window.dispose
end
#------------------------------------------------------------------------------
def return_scene
if @from_menu
$scene = Scene_Menu.new
else
$scene = Scene_Map.new
end
end
#------------------------------------------------------------------------------
def update
super
update_menu_background
@help_window.update
if @select_window.active
@select_window.update
update_select_selection
elsif @quest_window.active
@quest_window.update
update_quest_selection
end
end
#------------------------------------------------------------------------------
def update_select_selection
if Input.trigger?(Input::cool.gif\" style=\"vertical-align:middle\" emoid=\"B)\" border=\"0\" alt=\"cool.gif\" /]
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
case @select_window.index
when 0
$oldlog = false
@quest_window = Window_Quest.new(0,110,272,(24*11)+42)
@select_window.active = false
@quest_window.active = true
when 1
$oldlog = true
@quest_window = Window_Quest.new(0,110,272,(24*11)+42)
@select_window.active = false
@quest_window.active = true
end
end
end
#------------------------------------------------------------------------------
def update_quest_selection
if Input.trigger?(Input::cool.gif\" style=\"vertical-align:middle\" emoid=\"B)\" border=\"0\" alt=\"cool.gif\" /]
Sound.play_cancel
kill_questwindows
@select_window.active = true
end
end
end
#==============================================================================
class Scene_Title < Scene_Base
#==============================================================================
alias create_game_objects_additions create_game_objects
def create_game_objects
create_game_objects_additions
$questlog = Questlog.new
$activelog = Array.new
$completedlog = Array.new
end
end
#==============================================================================
class Window_Help < Window_Base
#==============================================================================
def initialize(x = 0,y = 0, width = 544, height = WLH+32)
super(x, y, width, height)
end
end
#==============================================================================
class Window_Description < Window_Base
#==============================================================================
def initialize(x = 0,y = 0, width = 544, height = WLH+32)
super(x, y, width, height)
@text = nil
@contents_x = 0
@contents_y = 0
@line_count = 0 # Line count drawn up until now
update
end
#------------------------------------------------------------------------------
def new_line
@contents_x = 0
@contents_y += WLH
@line_count += 1
@line_show_fast = false
end
#------------------------------------------------------------------------------
def finish_message
@text = nil
@line_count = 0
@contents_x = 0
@contents_y = 0
end
#------------------------------------------------------------------------------
def write_text(str)
if str != nil || str != ""
create_contents
update_msg(str)
end
end
#------------------------------------------------------------------------------
def update_msg(str)
str.each_line{|str2|iterator(str2)}
finish_message
end
#------------------------------------------------------------------------------
def iterator(str2)
contents.font.size = SIZE_VAR
contents.draw_text(@contents_x, @contents_y, str2.size*40, WLH, str2.delete("\n"))
c_width = contents.text_size(str2).width
@contents_x += c_width
new_line
end
end
#==============================================================================
class Window_Quest < Window_Selectable
#==============================================================================
def initialize(x, y, width, height)
super(x, y, width, height)
@column_max = 1
self.index = 0
@quest_helper = Window_Description.new(271,110,273,(24*11)+42)
refresh
end
#------------------------------------------------------------------------------
def refresh
@data = []
if !$oldlog
for i in (0..$activelog.size-1)
@data.push($activelog)
end
else
for i in (0..$completedlog.size-1)
@data.push($completedlog)
end
end
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#------------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
item = @data[index][1]
if item != nil
rect.width -= 4
self.contents.draw_text(rect.x, rect.y, 172, WLH, item)
end
end
#------------------------------------------------------------------------------
alias update_addition update
def update
update_addition
update_description(@index)
update_selection
end
#------------------------------------------------------------------------------
def update_selection
if Input.trigger?(Input::cool.gif\" style=\"vertical-align:middle\" emoid=\"B)\" border=\"0\" alt=\"cool.gif\" /]
Sound.play_cancel
@quest_helper.dispose
if @quest_map != nil
@quest_map_bitmap.bitmap.dispose
@quest_map_bitmap.dispose
@quest_map.dispose
@quest_map_viewport.dispose
@quest_map = nil
end
end
end
#------------------------------------------------------------------------------
def update_description(id)
if defined?(@data[id][2])
@quest_helper.write_text(@data[id][2])
if @quest_map == nil
if File.exist?("Graphics/Questmaps/"+@data[id][1]+"."+MAP_FORMAT)
self.height /= 3
@quest_map = Window_Description.new(0,210,272,(24*7)+38)
@quest_map_bitmap = Sprite.new
@quest_map_viewport = Viewport.new(3,213,268,(24*7)+35)
@quest_map_bitmap.viewport = @quest_map_viewport
@quest_map_bitmap.bitmap = Cache.questmaps(@data[id][1])
@quest_map_bitmap.viewport.z = 150
end
else
if File.exist?("Graphics/Questmaps/"+@data[id][1]+"."+MAP_FORMAT)
@quest_map_bitmap.bitmap = Cache.questmaps(@data[id][1])
else
self.height *= 3
@quest_map_bitmap.bitmap.dispose
@quest_map_bitmap.dispose
@quest_map.dispose
@quest_map_viewport.dispose
@quest_map = nil
end
end
end
end
end
#==============================================================================
class Scene_File < Scene_Base
#==============================================================================
alias write_save_data_adds write_save_data
def write_save_data(file)
write_save_data_adds(file)
Marshal.dump($activelog, file)
Marshal.dump($completedlog, file)
Marshal.dump($questlog, file)
end
alias read_save_data_adds read_save_data
def read_save_data(file)
read_save_data_adds(file)
$activelog = Marshal.load(file)
$completedlog = Marshal.load(file)
$questlog = Marshal.load(file)
end
end
#==============================================================================
module Cache
#==============================================================================
def self.questmaps(filename)
load_bitmap("Graphics/Questmaps/", filename)
end
end
So beide datein einfach einfügen!
Wäre schön wenn du die stellen mal markieren könntest bzw. kurz erläutern.
UNd die SKripte sind ja gar ned ordentlich strukuriert Oo alles linksbündig
-
was für änderungen ? das questlog script is das selbe und das scnene menu beinhaltet viel zu viel dinge die nich geändert wurden, dh kann man die rausstreichen , bei der scene_menu hab ich nur die änderungen in 30sek vorgenommen die man brauchte damits ins menü passt
-
Ja nur weil bei ein paar Leuten und auch bei mir ein Fehler auftrat, dass beenden weg war und speichern irgend was anderes war. Ich habe das jetzt ein bisschen umgebaut und so geht das bei mir und auch bei anderen Leuten.
Ansonsten ist der Skript Richtig geil den du da gebaut hast.
-
Danke für deinen Skript^^. Es passt perfekt in mein Game rein und bietet abwechslung happy.gif\" style=\"vertical-align:middle\" emoid=\"^_^\" border=\"0\" alt=\"happy.gif\" /] .
Ich werde jetzt mal die Quests (bei mir: Aufträge) einfügen^^.
Bis dann!
-
Schönes und einfaches Questlog. Gefällt mir und ich habe es auch schon in mein Projekt eingebaut. :)
-
ich habe es auch in mein game aufgenommen, bis mir etwas aufgefallen ist.
Die Quest bei mir ist:
Töte alle menschen
du hast 0 von 14 Menschen getötet
das problem ist, dass man die menschen in beliebeiger reihenfolge töten, und somit das updatequest unbrauchbar ist...
könntest du das vielleicht so ändern, dass man da auch variablen einfügen kann?
achja und ausserdem ist bei mir der quest name etwas länger, und deshalb ist bei einem der wörter ein viereck vor, dass da nich weggeht...
-
bei mir gehts net sad.gif\" style=\"vertical-align:middle\" emoid=\":(\" border=\"0\" alt=\"sad.gif\" /]
-
also variablen kann man eignetlich da rein schreiben o_O habs grad nochma getestet und da gings
zudem kasten, der sollte eigentlich nichts mit nem langem namen zu tun haben aber woher der jetz genau kommt kann ich grad nich sagen, hast du den japanischen maker?
-
also variablen kann man eignetlich da rein schreiben o_O habs grad nochma getestet und da gings
zudem kasten, der sollte eigentlich nichts mit nem langem namen zu tun haben aber woher der jetz genau kommt kann ich grad nich sagen, hast du den japanischen maker?
Ich habe den Englischen Maker. Wenn ich ein event mache und dann ein scriptschnippsel aufrufe, dann kommen automatisch zeilenumbrüche in das script bei der darstellung. wenn die zeilenumbrüche im titel oder der beschreibung einer quest stehen, dann werden diese später als quadrat dargestellt.
beim namen einer quest ist es egal, dann denkt man sich halt einen kürzeren aus ^^ Nur bei der Beschreibung könnte das etwas störend sein.
Ich probier noch ein bisschen rum und versuche ein screen zu posten wenn ich dran denke XD
-
@kenshin : was geht bei dir nich?
@raptor : also diese zeilenümbruche wegen dem kleinen script fenster kann man umgehen
$questlog.addQuest("2","Quest 2",
"Beispiel Questbeschreibung
von Quest 2 - Variable 1= "+
$game_variables[1].to_s+"
ich bin auch eine Quest")
das müsste 3 zeilen ergeben und halt den inhalt der variable 1
du kanns strings mit + verketten
-
wo muss ich diesen texblock den du gerade gepostet hast einfügen?
-
den kannst einfach in ein event mit call script packen
-
achso ok^^
wo habt ihr eigentlich ruby gelernt?
ich will das auch können^^
ic kann nur die programmiersprace von meine TI-Voyage 200 taschenrechner^^
-
@kenshin : was geht bei dir nich?
@raptor : also diese zeilenümbruche wegen dem kleinen script fenster kann man umgehen
$questlog.addQuest("2","Quest 2",
"Beispiel Questbeschreibung
von Quest 2 - Variable 1= "+
$game_variables[1].to_s+"
ich bin auch eine Quest")
das müsste 3 zeilen ergeben und halt den inhalt der variable 1
du kanns strings mit + verketten
ah danke ^^
stimmt eigentlich XD daran hätt ich denken können.
Aber danke ^^ das hilft auf jeden Fall weiter happy.gif\" style=\"vertical-align:middle\" emoid=\"^_^\" border=\"0\" alt=\"happy.gif\" /]
-
@kenshin : was geht bei dir nich?
@raptor : also diese zeilenümbruche wegen dem kleinen script fenster kann man umgehen
$questlog.addQuest("2","Quest 2",
"Beispiel Questbeschreibung
von Quest 2 - Variable 1= "+
$game_variables[1].to_s+"
ich bin auch eine Quest")
das müsste 3 zeilen ergeben und halt den inhalt der variable 1
du kanns strings mit + verketten
krieg immer Erro....sad.gif\" style=\"vertical-align:middle\" emoid=\":(\" border=\"0\" alt=\"sad.gif\" /] und wenn kein Error dann habe ich das menu net für die Quests sad.gif\" style=\"vertical-align:middle\" emoid=\":(\" border=\"0\" alt=\"sad.gif\" /] unso weida...-.-
-
krieg immer Erro....sad.gif\" style=\"vertical-align:middle\" emoid=\":(\" border=\"0\" alt=\"sad.gif\" /] und wenn kein Error dann habe ich das menu net für die Quests sad.gif\" style=\"vertical-align:middle\" emoid=\":(\" border=\"0\" alt=\"sad.gif\" /] unso weida...-.-
Welche Errormeldung kriegst du denn?
Hast du denn schon die Modifiation gemacht damit das Questmenü aufgelistet wird im Menü? Wenn nicht, da gibts hier irgendwo eine Anleitung XD
Hast du andere Skripts laufen die evt das questlog beeinflussen könnten?
-
krieg immer Erro....sad.gif\" style=\"vertical-align:middle\" emoid=\":(\" border=\"0\" alt=\"sad.gif\" /] und wenn kein Error dann habe ich das menu net für die Quests sad.gif\" style=\"vertical-align:middle\" emoid=\":(\" border=\"0\" alt=\"sad.gif\" /] unso weida...-.-
Welche Errormeldung kriegst du denn?
Hast du denn schon die Modifiation gemacht damit das Questmenü aufgelistet wird im Menü? Wenn nicht, da gibts hier irgendwo eine Anleitung XD
Hast du andere Skripts laufen die evt das questlog beeinflussen könnten?
habe das Level Up Window Skript^^
-
Hi,
könnte jemand mal das komplette ohne fehler funktionierende script nun
mal posten bei so vielen beiträgen verliert man die übersicht leicht ich blick
hier nämlich nichtmehr durch. sad.gif\" style=\"vertical-align:middle\" emoid=\":(\" border=\"0\" alt=\"sad.gif\" /]
Also das Questlog script welches funst please... happy.gif\" style=\"vertical-align:middle\" emoid=\"^_^\" border=\"0\" alt=\"happy.gif\" /]
-
wie wärs mit seite 1
-
wie wärs mit seite 1
Ja sorry habs jetz hin bekommen.
-
könnte bitte jemand eine Demo machen. Ich bin einfach zu blöd das Skript zu verwenden.
MfG
-
Ich auch^^
Zumindest weis ich nicht wie ich das Script in mein Menu reinbekomme.
Die Anwendung erscheint mir simpel und logisch :)
-
Ich hab das erscheinen per Common Event und einem Tagebuch gemacht ^^. Ich schaffs aber irgendwie nicht Quests reinzutun. Wäre wirklich super wenn es einfach ne Demo mit dÉrklärungen gebe.
MfG
-
Hab mich nun endlich mal mein schon weit vorangeschrittenes Projekt mit dem Script zu belegen, was nicht leicht war, was allerdings nicht am Script lag, sondern eher daran, das ich alle Questgeber suchen musste und die jenigen wo sie endeten, dauerte eine Weile, aber es hat sich gelohnt.
Hab bisher keine Probleme mit dem Script und bin auch erstaunt das es so leicht funktioniert =).
@ Prince: Wenn du eine Quest einfügen willst, dann gehst du bei den Eventcommands auf Seite 3, ganz unten Links steht Script einfügen.
da packst du dann das: $questlog.addQuest("Unique ID","Quest Titel","Quest Beschreibung") herein.
z.B. $questlog.addQuest("1","Such eine Million Kräuter","Sammel im WoW Universum 1 Million sinnlose Kräuter")
das erste was in anführungszeichen steht ist die Quest ID, das e2 der Titel der Quest und das e3 die Beschreibung.
Wenn du eine Quest als abgeschlossen haben willst dann machst du einfach:
z.B. $questlog.completeQuest("1")
So wird die Quest mit der ID 1 in den abgeschlossenen Bereich geschoben, ist nun aber auch noch in dem "Aktiven Quests" Bereich enthalten, wenn du da die Quest raushaben willst dann gibst du:
z.B. $questlog.deleteQuest("1")
ein, damit ist dann die Quest aus dem "Aktiven Quests" Bereich verschwunden. Die letzten beiden DInge kannst du in einem Script Call Event ausführen
so z.B. $questlog.completeQuest("1")
$questlog.deleteQuest("1")
Ich hoffe ich konnte dir helfen.
MfG Afeni
-
Okay.
Ich gehöre zu der ganz dummen Spezies Mensch.^^
Ich habe jetzt eine geschlagene Stunde immer und immer wieder alle Kommentare in diesen
5 Seiten Forum durchgelesen um mein Problem zu lösen.
Die Eintragung des Scriptes ins Menü.
Du schriebst einmal, dass es weiter unten stehen soll (wo weiter unten?) und das es da drüber seteht (was steht da drüber?)
Tut mir leid das ich nerve und eine Frage stelle, welche Programmiersprachen-Menschen schon lange
als gelöst betrachten. Aber ich rall das nicht ^^
Ich erbitte gaaanz dringend Hilfe weil ein Questlog ist einfach mal was super wichtiges
für mein Game...
Ich danke ^^
Sk!p
-
Sk!p füge dieses script über Main ABER UNTER dem Questlog ein:
#==============================================================================
# ** Scene_Menu_for_Simple_Questlog_by_Evil95
#------------------------------------------------------------------------------
# This class performs the menu screen processing.
#==============================================================================
class Scene_Menu < Scene_Base
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s7 = "Questlog"
s5 = Vocab::save
s6 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s7, s5, s6])
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, false) # Disable save
end
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 4
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1,2,3 # Skill, equipment, status
start_actor_selection
when 5 # Save
$scene = Scene_File.new(true, false, false)
when 6 # End Game
$scene = Scene_End.new
when 4
$scene = Scene_Questlog.new
end
end
end
end
class Scene_File < Scene_Base
def return_scene
if @from_title
$scene = Scene_Title.new
elsif @from_event
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(5)
end
end
end
class Scene_End < Scene_Base
def return_scene
$scene = Scene_Menu.new(6)
end
end
class Scene_Questlog < Scene_Base
def return_scene
if @from_menu
$scene = Scene_Menu.new(4)
else
$scene = Scene_Map.new
end
end
end
so sollte es bei dir unter Scripts aussehen:
...
Simple_Questlog
Scene_Menu_by_Evil95
? Main Process
Main
-
und wenn evil jetz noch die unnötigen sachen rausstreichen tust passts^^
also du konntest das script zum menü einfügen nicht finden weils net da is,
das war ursprünglich ganz unten im ersten post aber bei der foren umstellung is am thread wohl was verloren gegangen
-
so hellMinor...ick hoffe es entspricht jetzt deinen vorstellungen^^
#==============================================================================
# ** Scene_Menu_for_Simple_Questlog_by_Evil95
#------------------------------------------------------------------------------
# This class performs the menu screen processing.
#==============================================================================
class Scene_Menu < Scene_Base
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s7 = "Questlog"
s5 = Vocab::save
s6 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s7, s5, s6])
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, false) # Disable save
end
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 4
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1,2,3 # Skill, equipment, status
start_actor_selection
when 5 # Save
$scene = Scene_File.new(true, false, false)
when 6 # End Game
$scene = Scene_End.new
when 4
$scene = Scene_Questlog.new
end
end
end
end
class Scene_File < Scene_Base
def return_scene
if @from_title
$scene = Scene_Title.new
elsif @from_event
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(5)
end
end
end
class Scene_End < Scene_Base
def return_scene
$scene = Scene_Menu.new(6)
end
end
class Scene_Questlog < Scene_Base
def return_scene
if @from_menu
$scene = Scene_Menu.new(4)
else
$scene = Scene_Map.new
end
end
end
PS: das in meinem vorherigen Post, habe ich ebenfalls durch dieses ersetzt^^...is also egal ob ihr dieses hier oder das da ohen nehmt xD
-
habs zum ersten post dazu editiert
-
Danke hell du hast mein Selbstvertrauen wieder gestärkt-
Etwas was nicht da ist nicht zu finden ist nicht SO eine Schande xD
Alles klar ich danke euch beiden. Dann kann ich meine Simulation
endlich vorrantreiben.
Ich bedanke und verabschiede mich.
Sk!p
-
@Sk!p: Püh ick werd nich ma namentlich erwähnt... :'(
Edit: @hellMinor: wieso hast du Zeile 2 meines Scripts geändert? xD Dort steht quasi die Credits drin...das kann man nicht einfach entfernen^^
-
hä was? ich hab das einfach aus deiner spoilerbox kopiert
das haste wahrscheinlich nachträglich reineditiert
-
Hey,
Großes THX.Das kann ich gut gebrauchen! Simple aber einfach cool!
mfg Ryuuzaki
-
@Sk!p: Püh ick werd nich ma namentlich erwähnt... :'(
Ich sagte doch 'Danke euch beiden' ^^
Das mit dem 'Es war nie da' kam von Hell und das meinte ich mit aufbauend.
Aber wenn du etwas für dein Selbstwertgefühl tun möchtest bitte:
Einen besonderen Dank an Evil. Immerhin kam von diesem Helfer der erste Antwort-Post zu meiner Frage.
Und diesem Post verdanke ich, dass meine Dummheit besiegt wurde und ich nun endlich
das Questlog von Hell benutzen kann. <So xD
Ich nerve nur ungern nochmal (Ja ich weiß ich bin nervig und dazu stehe ich)
Ich hab mir in den Skript FAQ durchgelesen wie man ein Bild in ins Questfenster einfügt.
Ich hab brav unter den Graphics einen Ordner namens Questmaps erstelt und ein Bild mit dem Namen 'Mantel' im Format 265x200 px eingefügt.
(Der Quest dieht zum Test und man soll einfach in sein Haus und seinen Mantel aus einer Truhe holen)
Der Quest an sich funktioniert einwandfrei. Er wird per Autorun erteilt, ins Logbuch eingetragen, man geht ins Haus, nimmt ihn aus der Truhe,
die Beschreibung wird auf 'Mantel gefunden' geupdatet und in die Completed Quests überschrieben.
Nur das Problem ist das Bild wird nicht angezeigt. Ich hatte schon den verdacht das der Questname auch die ID sein könnte, aber da die ID
und der Questname ein und das selbe sind, nämlich einfach 'Mantel' müsste das eine wie das andere ja auf das Bild mit dem gleichen
Namen zugreifen. Aber es passiert einfach nichts.
Mache ich irgendwas falsch?
(Im Skript ist das png-Format voreingestellt, und ich habe nichts verändert und das Bild auch als .Png gespeichert)
Sk!p
-
danke Sk!p...fühl mich gleich viel besser :)
zu deiner frage:
wenn die Quest Mantel heißt, dann muss:
das bild im Ordner "Graphics/Questmaps" sein. schau mal nach ob der ordnername korrekt geschrieben is und ob es wirklich ne png datei ist.
@hellMinor: ja das kann sein^^ aber egal. dank dir, dass du es "repariert" hast :)
-
Alles Korrekt.
Der Ordner heißt 'Questmaps', die Datei 'Mantel.png'.
Ich hab versucht die Datei groß und klein zu schreiben. Ich habe versucht den
Ordnernamen groß und klein zu schreiben aber irgendwie will das
Skript nicht auf das Bild zugreifen. Ich verstehe das nicht.
Sk!p
-
@Sk!p: Also bei läuft das eigendlich. Ich hab auch erst gedacht, die Maps gehen nicht, aber das lag daran dass ich sie übersehen hab. Wenn das nicht bei dir der Fall ist, kann ich dir nicht weiter helfen. Sry.
-
Wie kann man denn ne 265x200 px Map im Questlog übersehen`? xD
Sk!p
-
lade dein game einfach ma hoch..und dann gucke ick ma wo der fehler is. :)
-
Gib mal bitte ne Seite wo ich das Hochladen kann.
HAb mich nie um Dateien gekümmert. Lade eigentlich nur Bilder Hoch.^^
EDIT:
Okay ich hab hier noch ein paar Sachen festgestellt dir mir sehr spanisch sind.
Besagter 'Questmaps' Ordner in 'Graphics' besteht und ist leer. Sagt mir das supertolle (shice)Vista
zumindest.
Wenn ich allerdins mit verschiedenen Grafikprogrammen diesen Ordner als Speicherziel
angebe, erscheinen darin Bilder, welche ich gespeichert habe. Also die Testbilder für die Quests.
Aber im Ordner ansich scheinen sie nicht zu sein.
Langsam frage ich mich was mit dem Blöden Pc hier los ist x.x*
Naja egal auf jeden Fall sind die Bilder, auf die vom Skript aus zugegriffen werden soll nachträglich
vom Desktop in besagten Ordner verschoben (Dann wird es darin auch angezeigt, nicht jedoch die darin gespeicherten)
PhotoFiltre und GIMP finden in dem Ordner Dateien. Vista nicht, genau so wie das Skript.
Ich habe nachgesehn, der Ordner ist weder schreibgeschützt, noch sind die Dateien darin versteckt oder ausgeblendet.
Und Paint lässt mich darin erst gar nicht speichern, ich bräuchte die Zustimmung des Admins (Also von mir)
Was zur Hälle stimmt da nicht? =(
Sk!p
-
Wenn die UAC dich frägt, dann ist dein Ordner an einer Stelle, an der er woanders besser aufgehoben ist. Verschieb den Projektordner auf 'n Desktop, Eigene Dateien, ... und probier's dann noch mal aus.
-
Okay Ich hab den Fehler gefunden.
Meine Fresse bin ich hohl... x.x
Der Questmaps Ordner war die Ganze Zeit im Graphics Ordner des RTP's und nicht in dem
Des Projektes. Wenn Dummheit n Fahrrad antreiben würde müsste ich Bergauf echt bremsen... ne ne ne
Okay das Bild ist jetzt im Questmaps-Ordner Unter Graphics im Projekte-Verzwichnisses des Games.
Und wird Trotzdem nicht angezeit :'( was soll der Mist denn.
Jedenfall macht der Ordner jetzt keine Faxen mehr...
EDIT:
Hab mir das komplitte Skript nochmal eingefügt. Irgendwo war da n dummer Fehler drinn.
Es läuft. Ich bin Glücklich. Es ist toll. Danke für all eure Hilfe x)
Es ist immer schön wenn man auf verständnissvolle Leute troifft, auch wenn man total dämliche
Sachen macht ^^
Sk!p
-
@Sk!p Das mit dem Übersehen war so, das der Hintergrund nun dunkel ist und ich zum Test, wo die Questmap angezeigt wird nur mal ne schwarze Map gemacht hab, hat sie sich kaum vom Hintergrund abgehoben, deshalb hab ich sie übersehen. Super das du den Fehler doch noch gefunden hast!
mfg Ryuuzaki
-
Ach so okay das ist natürlich ne Möglichkeite
n Bild zu übersehen ^^
Alles klar so ich werde mich dann munter ans Questen begeben...
Sk!p
-
Kann es sein, dass wenn man das speichern verbietet man doch noch speichern kann aber nicht mehr auf die Quests zugreifen kann? Sollte nochmal untersucht werden!
mfg Ryuuzaki
-
Naja ich meine der Questlog wird ja als Eintrag ins Menü gepackt. das berücksichtigt natürlich dass der eintrag
'Speichern' da ist.
Wenne den jetzt rausnimmst, oder verbietest, dann fehlt ein Eintrag und alles wird verschoben.. entweder nach oben oder unten
oder der Questlog wird einfach anstelle des Speicherpunktes genommen...
Ich glaube nicht, dass man daran was ändern kann.
Sk!p
-
Doch kann man, habs hinbekommen. Man muss nur eingeben, welche Schaltfläche verbietet werden soll, normalerweise die Nummer 4 oder so, man muss das blos um eins erhöhen.
mfg Ryuuzaki
-
Autsch <.< VERBOTEN!
Ja Okay gut das du es 'hinbekommt' hast oO xD
Sk!p
-
Hi ich muss erstmal vorweg loswerden wie genial dieses Questlog ist. Dafür ein riesen dickes danke schön an hellMinor.
Nun hab ich aber leider auch ein problem und zwar will ich ne quest mit ne variable laufen lassen. Soll son typisches sammel quest werden.
Dieser Code hier steht ja bereits hier im Thread:
$questlog.addQuest("2","Quest 2",
"Beispiel Questbeschreibung
von Quest 2 - Variable 1= "+
$game_variables[1].to_s+"
ich bin auch eine Quest")
Dazu ne Frage die variables[1] wird wohl die abgefragte Variable sein oder? Habe bei mir jetzt einfach mal ne Variable erställt mit namen Kräuter. Ist die #0010...
der quest code sieht bei mir so aus:
$questlog.addQuest("2","Kräuter",
"Ich soll Kräuter für die
Wache am Eingang des
Schreins sammeln!
"+ $game_variables[10].to_s+"/10 gefunden")
Im questlog steht die quest jetzt mit 0/10
Wenn ich jetzt so nen Kraut aufhebe (ist nen Item) müsste im Questlog 1/10 stehen... aber wie muss die Variable dazu ausehen?
Bin für jede Hilfe dankbar
greetz Vega
PS: Sry bin nicht so der "Held" mit variablen^^
-
Hey Ho ... Vorweg ich bin eig ein N00b was Variablen angeht
Aber wenn du die Variable nicht erhöhst wenn du ein
Item einsammelst kann der Questlog das doch nicht wissen oder?^^
Also eig nur die Questvariable +1 setzen.. und das für jedes Krat was
du so findest.
Wenn irgendjemand der mehr davon versteht jetzt diesen Beitrag sieht und merkt
das ich gequirlte Kacke labere, bitte macht mich drauf
aufmerksam xD
EDIT: Ich habe ebenfalls noch ein kleines Problem. Wenn der Questnahme aus zwei Worten besteht, erscheint vor
dem 2. Wort dieser komische quadratische Kasten. Kann man das irgendwie beheben? Weil mit diesem Kasten kann
man niemals ne Questmap dazu erstellen weil der ja kA was definiert.
Und ausserdem sieht es nicht schön aus ^^
Sk!p
-
Also Skip erstmal danke für die antwort. Nun es ist so eingestellt das wenn ich das item finde die questvariable also die 0010:Kräuter +1 bekommt setze ich halt beim event mit rein... wenn ich nun nen event mache das mir ein npc 10gold gibt wenn ich ihm nen kraut gebe funktioniert das auch (per bedingung wenn kräuter 0 hat gehts net^^ wird halt abgefragt =<1) nur im questlog ändert sich leider garnichts...
Zu deinem Problem:
Das habe ich auch das ist wenn der questname im scriptfenster in die 2.te zeile übergeht... wäre schön wenn da auch einer helfen könnte^^
Vega
-
Ich werde HellMonor mal eine Pm schreiben zu deinem Problem.
Würde das nämlich auch gern wissen.
Weißt du wie ich das mit dem Zeitenumbruch beheben kann?
Den kompletten Questnamen einfach in eine seperate Zeile schreiben?
Das sollte doch dann eigentlich funktionieren wenn es das ist was du sagst.
Irgendwo in diesem Threat stand auch mal die Frage im raum, ob er in sein
Skript jetzt Strings oder Integer einbauen soll um genau dein Problem zu
lösen und das Questfenster zu updaten.
Allerdings glaube ich, dass das Ergebnis dieser Frage nie öffentlich gepostet wurde.
So weiß ich dann natürlich auch nicht wie man das jetzt genau machen soll.
Naja ich schreibe dann ma die Pm weil Hell grad irgendwie nichts
mehr von sich sehen lässt in seinem Skript Threat^^
Sk!p
-
Wenn du den kompletten Questnamen in ne seperate Zeile schreibst ändert das in der hinsicht nur das dieses viereck dann vorm questnamen steht^^
Das du wegen dem anderen Problem Hell anschreibst ist ne gute idee^^
Vega
-
Hm... Ja okay das war jetzt eigentlich nicht Ziel des Ganzen.
Ich wollte das das ding GANZ verschwindet und nicht, dass es sich verschiebt.
Weil so oder so sieht es dumm aus und ich kann meine Questmap zu
diesen Quests machen, weil das Quadrat etwas beschreibt was ich nicht kenne,
und dementsprechend nicht in den Namen der Questmap setzen kann...
Doffe sache alles hier irgendwie =/
Hell Pls Help!^^
Sk!p
-
Ich würde gern auch son Questbuch haben problem bin noch ein nooop der erst seitna
woche hirmit abeitet sich aber besser damit auskennt als er dachte
das heist ioch weis nicht wie das funkt skrip erstellen un son zeug.
-
@ Gimlykiller das ist recht einfach... du öffnest den RPG Maker VX ... dann klickst du auf das blatt mit dem stift^^ dort im Skript editor scrollste rechts nach ganz unten... Über Main Process
machste nen feld fertig mit namen Questlog dort fügste folgenden code ein...
#==============================================================================
# Simple Quest-Log
#
# Version : 1.2 - 02.04.08
# Created by : hellMinor
# Do NOT redistribute without my permission
# Description : A simple script for a Quest-Log
#
#==============================================================================
#==============================================================================
# F.A.Q.
#==============================================================================
# The Global Questlog-Name is $questlog
# To open the Questlog from the menu just do $scene = Scene_Questlog.new
# To open the Questlog from an event $scene = Scene_Questlog.new(false)
#
# To add a quest make a new call script with this Template :
# $questlog.addQuest("Unique ID","Quest Title","Quest Description","State")
#
# To update a Quest description make a new call script with this Template :
# $questlog.updateQuest("unique ID","Quest Description","State")
#
# To move a Quest to Completed Quests make new call script with this Template :
# $questlog.completeQuest("Unique ID")
#
# To delete a Quest from the Active-Questlog make a call script with this
# Template :
# $questlog.deleteQuest("Unique ID")
#
# You can get the current state of a Quest with this Template :
# $questlog.getQuestState("Unique ID")
# This may be useful in a conditional branch if you want to react with a
# special Quest-State
#
# If u want to add a Questmap, create a folder named Questmaps in your
# Graphics folder. The name of the Questmap must be the same as the Quest
# in the Game. Be sure that you set the correct MAP_FORMAT.
# A Quest-Map should have a size of 265*200 px !
# I.E. : If your Quest is named QuestYXZ , the picture in the Questmap folder
# has to be QuestYXZ.png if your map is a .png
#==============================================================================
# Setup
#==============================================================================
QUESTLOGNAME = "Questlog" # Questlog Menu name
QUEST_MENU_ITEM_1 = "Active Quests" # Active Quest name
QUEST_MENU_ITEM_2 = "Completed Quests" # Completed Quest name
SIZE_VAR = 20 # Character Size
MAP_FORMAT = "png" # Quest-Map Ending
#==============================================================================
class Questlog
#==============================================================================
def addQuest(id,header,description,state = "")
$activelog << [id,header,description,state]
end
#------------------------------------------------------------------------------
def updateQuest(id,description,state = "")
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$activelog[i][2] = description
$activelog[i][3] = state
break
end
end
end
#------------------------------------------------------------------------------
def completeQuest(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$completedlog << $activelog[i]
$activelog.delete_at(i)
break
end
end
end
#------------------------------------------------------------------------------
def deleteQuest(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$activelog.delete_at(i)
break
end
end
end
#------------------------------------------------------------------------------
def getQuestState(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
return $activelog[i][3]
break
end
end
end
end
#==============================================================================
class Scene_Questlog < Scene_Base
#==============================================================================
def initialize(from_menu = true)
@from_menu = from_menu
end
def start
super
create_menu_background
@help_window = Window_Help.new
@help_window.set_text(QUESTLOGNAME,1)
s1 = QUEST_MENU_ITEM_1
s2 = QUEST_MENU_ITEM_2
@select_window = Window_Command.new(544,[s1,s2],2,1)
@select_window.y = 55
@select_window.active = true
end
#------------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@help_window.dispose
@select_window.dispose
end
#------------------------------------------------------------------------------
def kill_questwindows
@quest_window.dispose
end
#------------------------------------------------------------------------------
def return_scene
if @from_menu
$scene = Scene_Menu.new
else
$scene = Scene_Map.new
end
end
#------------------------------------------------------------------------------
def update
super
update_menu_background
@help_window.update
if @select_window.active
@select_window.update
update_select_selection
elsif @quest_window.active
@quest_window.update
update_quest_selection
end
end
#------------------------------------------------------------------------------
def update_select_selection
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
case @select_window.index
when 0
$oldlog = false
@quest_window = Window_Quest.new(0,110,272,(24*11)+42)
@select_window.active = false
@quest_window.active = true
when 1
$oldlog = true
@quest_window = Window_Quest.new(0,110,272,(24*11)+42)
@select_window.active = false
@quest_window.active = true
end
end
end
#------------------------------------------------------------------------------
def update_quest_selection
if Input.trigger?(Input::B)
Sound.play_cancel
kill_questwindows
@select_window.active = true
end
end
end
#==============================================================================
class Scene_Title < Scene_Base
#==============================================================================
alias create_game_objects_additions create_game_objects
def create_game_objects
create_game_objects_additions
$questlog = Questlog.new
$activelog = Array.new
$completedlog = Array.new
end
end
#==============================================================================
class Window_Help < Window_Base
#==============================================================================
def initialize(x = 0,y = 0, width = 544, height = WLH+32)
super(x, y, width, height)
end
end
#==============================================================================
class Window_Description < Window_Base
#==============================================================================
def initialize(x = 0,y = 0, width = 544, height = WLH+32)
super(x, y, width, height)
@text = nil
@contents_x = 0
@contents_y = 0
@line_count = 0 # Line count drawn up until now
update
end
#------------------------------------------------------------------------------
def new_line
@contents_x = 0
@contents_y += WLH
@line_count += 1
@line_show_fast = false
end
#------------------------------------------------------------------------------
def finish_message
@text = nil
@line_count = 0
@contents_x = 0
@contents_y = 0
end
#------------------------------------------------------------------------------
def write_text(str)
if str != nil || str != ""
create_contents
update_msg(str)
end
end
#------------------------------------------------------------------------------
def update_msg(str)
str.each_line{|str2|iterator(str2)}
finish_message
end
#------------------------------------------------------------------------------
def iterator(str2)
contents.font.size = SIZE_VAR
contents.draw_text(@contents_x, @contents_y, str2.size*40, WLH, str2.delete("\n"))
c_width = contents.text_size(str2).width
@contents_x += c_width
new_line
end
end
#==============================================================================
class Window_Quest < Window_Selectable
#==============================================================================
def initialize(x, y, width, height)
super(x, y, width, height)
@column_max = 1
self.index = 0
@quest_helper = Window_Description.new(271,110,273,(24*11)+42)
refresh
end
#------------------------------------------------------------------------------
def refresh
@data = []
if !$oldlog
for i in (0..$activelog.size-1)
@data.push($activelog[i])
end
else
for i in (0..$completedlog.size-1)
@data.push($completedlog[i])
end
end
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#------------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
item = @data[index][1]
if item != nil
rect.width -= 4
self.contents.draw_text(rect.x, rect.y, 172, WLH, item)
end
end
#------------------------------------------------------------------------------
alias update_addition update
def update
update_addition
update_description(@index)
update_selection
end
#------------------------------------------------------------------------------
def update_selection
if Input.trigger?(Input::B)
Sound.play_cancel
@quest_helper.dispose
if @quest_map != nil
@quest_map_bitmap.bitmap.dispose
@quest_map_bitmap.dispose
@quest_map.dispose
@quest_map_viewport.dispose
@quest_map = nil
end
end
end
#------------------------------------------------------------------------------
def update_description(id)
if defined?(@data[id][2])
@quest_helper.write_text(@data[id][2])
if @quest_map == nil
if File.exist?("Graphics/Questmaps/"+@data[id][1]+"."+MAP_FORMAT)
self.height /= 3
@quest_map = Window_Description.new(0,210,272,(24*7)+38)
@quest_map_bitmap = Sprite.new
@quest_map_viewport = Viewport.new(3,213,268,(24*7)+35)
@quest_map_bitmap.viewport = @quest_map_viewport
@quest_map_bitmap.bitmap = Cache.questmaps(@data[id][1])
@quest_map_bitmap.viewport.z = 150
end
else
if File.exist?("Graphics/Questmaps/"+@data[id][1]+"."+MAP_FORMAT)
@quest_map_bitmap.bitmap = Cache.questmaps(@data[id][1])
else
self.height *= 3
@quest_map_bitmap.bitmap.dispose
@quest_map_bitmap.dispose
@quest_map.dispose
@quest_map_viewport.dispose
@quest_map = nil
end
end
end
end
end
#==============================================================================
class Scene_File < Scene_Base
#==============================================================================
alias write_save_data_adds write_save_data
def write_save_data(file)
write_save_data_adds(file)
Marshal.dump($activelog, file)
Marshal.dump($completedlog, file)
Marshal.dump($questlog, file)
end
alias read_save_data_adds read_save_data
def read_save_data(file)
read_save_data_adds(file)
$activelog = Marshal.load(file)
$completedlog = Marshal.load(file)
$questlog = Marshal.load(file)
end
end
#==============================================================================
module Cache
#==============================================================================
def self.questmaps(filename)
load_bitmap("Graphics/Questmaps/", filename)
end
end
da drüber machste dann net feld mit namen Questlog Menü Eintrag und fügst folgenden code ein
#==============================================================================
# ** Scene_Menu_for_Simple_Questlog_by_Evil95
#------------------------------------------------------------------------------
# This class performs the menu screen processing.
#==============================================================================
class Scene_Menu < Scene_Base
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s7 = "Questlog"
s5 = Vocab::save
s6 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s7, s5, s6])
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, false) # Disable save
end
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 4
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1,2,3 # Skill, equipment, status
start_actor_selection
when 5 # Save
$scene = Scene_File.new(true, false, false)
when 6 # End Game
$scene = Scene_End.new
when 4
$scene = Scene_Questlog.new
end
end
end
end
class Scene_File < Scene_Base
def return_scene
if @from_title
$scene = Scene_Title.new
elsif @from_event
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(5)
end
end
end
class Scene_End < Scene_Base
def return_scene
$scene = Scene_Menu.new(6)
end
end
class Scene_Questlog < Scene_Base
def return_scene
if @from_menu
$scene = Scene_Menu.new(4)
else
$scene = Scene_Map.new
end
end
end
Hoffe doch ich konnte dir helfen^^
-
Das funkt nicht wenn ich im Menü dan auf Questlog gehe kommt
nur schwarzer bildschir un nichts funkt mehr richtig kann
dan nur noch denn test beänden
-
Un man müste mir dan auch mal rklären wie man überhaupt Quest dan dia einfügt
-
Also bei mir funzt es und ich habs genau so gemacht... zum thema quest einfügen.... angenommen npc 1 (nen dorfbewohner) will das du zu npc2 (dem dorfbauern Gehst...)gehst... dann machste nen event für npc 1... erstmal damit er überhaupt da ist... dann gehste in dem event teil rechts doppelklick und dort auf auf seite 3... Da dann Script ausführen...
Da schreibste nun folgendes zum quest eintragen rein
$questlog.addQuest("Unique ID","Quest Titel","Quest Beschreibung")
Wobei das du Unique ID durch z.B. 1 ersetzt Quest Titel ersetzt du durch den Namen wie deine Quest heißen soll und Questbeschreibung durch eben die beschreibung dazu hier mal ein kleines bsp. für oben genannte quest...
$questlog.addQuest("1","Der Dorfbauer","Ich soll zu Bauer Meier gehen.")
Das Meier kann natürlich durch nen anderen Namen ersetzt werden...
Als 2.tes erstellste nen event für den Bauern oder auch NPC 2... dort wieder zum scripteditor und folgendes einfügen
Wenn die Quest da enden soll:
$questlog.completeQuest("Unique ID")
oder wie in unserem Beispiel:
$questlog.completeQuest("1")
Wenn die Quesst da nur geupdatet werden soll weil z.B. der Bauer sagt du sollst die Rüben auf seinem Feld ernten dann so:
$questlog.updateQuest("unique ID","Quest Description")
oder wie in unserem Beispiel:
$questlog.updateQuest("1","Der Bauer will das ich für ihn seine Rüben ernte.")
Hoffe ich konnte dir damit weiterhelfen... und wegen deinem problem... mach mal den scripteditor auf und mach per druck taste auf deiner tastatur nen screenshot... diesen in paint einfügen als .jpg speichern und auf nen imagehoster wie z.B. http://www.imagebanana.com/ (http://www.imagebanana.com/) hochladen und den link dazu hier rein... wenn du willst kannste mich auch per icq adden dann gucken wir mal zusammen ob wir das net hinkriegen^^
greetz Vega
-
Funkt nicht kommt immer ne fehler meldung wenn ich zum opa gehe der das sagt ich soll zur schule gehen
-
So Jungs.. ma ganz nebenbei...
Doppeltposts bite bleiben lassen sonst bekommt man Stress mit den Mod's hier ^^
Zum zweiten, wenne grad erst mit dem Maker angefangen hast würde ich mich nicht direwkt in die Skript Sektion stürzen.
Fang an erst mal richtig zu mappen... Lerne mit Variablen, Switches CE's und ätlichem umzugehn.
Ohne Grundlagen wirste das nie so hinbekommen. Man kann dir jetzt viel erklären wie du was richtig machen kannst
aber wenn du keine Ahnung hast was du jetzt genau machst weil du die Grundlagen nicht verstehst
dann bringt das auch nichts.
Ich würde dir erst mal ein paar Tut's vorschlagen, welche du hier auf der Seite findest.
Oder mal einen blick in das FE-Book zu werfen.
Damit hast du schon direkt einige Fragen beantwortet und müsstest nicht wegen jeder Kleiningkweit
Hilfe erbitten, weil du dann selbst eine Lösung für die meisten Sachen entwickeln kannst.
So nun zu deiner Anfrage, weil du warscheinlich eh nicht auf meinen Rat hören wirst und das Questlog Skript so
oder so in dein Game ballern wirst.
1) Skript von der ersten Seite kopieren und unter ''Matierials'' Einfügen.
2) Das Menü-Skript (ebenfalls auf der ersten Seite) ebenfalls unter Materials unter dem QuestLog einfügen
Nun sollte der Eintrag Questlogs in deinem Menü erscheinen. In verschiedenen Reihen des Skriptes kannst du
die englischen Bezeichnungen eindeutschen oder so umschreiben, wie du sie brauchst.
3) In der Skript-internen FAQ steht, wie du ein Quest erstellst. Da kannst du eigentlich nur den Schritten folgen.
Aber dar ich nicht weißt, wie gut du des englischen mächtig bist gebe ich dir eine klei9ne Zusammenfassung.
-----------------------------------------------------------------------------------------------------------
1) Du erstellst ein Event auf der Karte, von wo aus der Quest gestartet werden soll
2) Im Eventfenster startest du ein neues Event - 3. Seite - Ganz unten - Skript einfügen.
3) Nun gibst du einen Befehl ein, welcher vom Skript ausgeführt werden soll.
> Eine Quest beschreiben und ausführen:
$questlog.addQuest("ID der Quest", "Name der Quest", "Beschreibung der Quest")
>Beispiel:
$questlog.addQuest("1", "Geschenke", "Suche Eine Rose, welche du als Geschenk überreichen kannst")
Die Anführungszeichen sind extrem wichtig, und auch die Kommastzung, sonst erkennt das Skript die Definition nicht an.
>Eine Quest Updaten:
$questlog.updateQuest("ID der Quest", "Update")
>Beispiel:
$questlog.updateQuest("1", "Jetzt brauchst du noch eine Tulpe")
Updates sind dazu geeignet, die Beschreibung einer Quest neu anzupassen oder zu zeigen das sie nun erledigt ist.
>Eine Quest Beenden:
$questlog.completeQuest("ID der Quest")
Dieser Befehl verschiebt die Quest in die ''Completed Quests''
>Eine Quest Löschen:
$questlog.deleteQuest("ID der Quest")
Dieser Befehl löscht die Quest komplett aus dem Questlog.
So ich hoffe, dass du mit dieser Erklärung etwas anfangen kannst. Beiw eiteren Fragen einfach ma in die Skript interne FAQ schaun.
Steht eigentlich auch alles drinn. Hell hat sich schon Mühe gemacht sein Skript verständlich zu machen.
Sk!p
-
Klapt jetzt doch ich hab nur das Questlog falsh eingefükt
-
nein^^
sowas kommt schonmal vor nach ner flasche scotch und ner nachricht ich soll in den thread gucken
also was is hier los^^
@hM: Hab mir mal erlaubt deinen Beitrag zu löschen, da du mir nichts abgegeben hast =)
Außerdem wäre es bei solchen Beiträgen angebracht auf Moderator informieren (oder es selbst machen) zu klicken und nicht einen Beitrag zu verfassen, oder Jungs?
~EE
-
Keiner weiß wie du so auf Moderatoren Rufe reagierst, wenn du ne Flasche Scotsch intus hast^^
Das wollen wir auch gar nicht so im Detail wissen.
Mich hat das was gesucked, weil irgendwie das We mehrere unter 'Scotsch' durch das Forum gewandelt sind ^^
Aber naha Alk beiseite. Die pm war meine. Und ging um gesagte Probleme weiter oben und es
wäre nett, wenn du eine kleinigkeit dazu sagen könntest^^
Sk!p
-
keine ahnung warum der die quest nich wirlich updated wenn ne variable drin is
wenn man direkt nen updatequest macht mit der gleichen questbeschreibung wie mein erstellen wird der text geupdated
-
Also Eine Variable erstellen mit dem Namen des Quests.
Dann das Quest Updaten und die Variable +1 setzen?
Sry ich habe GAR keine Ahung von Variablen xD
kA wie ich solche Grundlagen übersprungen habe ^^
Sk!p
-
na
nachdem die variable erhöht würde machste einfach direkt ein updateQuest
mit der gleichen beschreibung, dann wird die variable auch neu reingeschrieben
$questlog.addQuest("2","Quest 2",
"Beispiel Questbeschreibung
von Quest 2 - "+$game_variables[1].to_s)
dann wird irgendwann die variable 1 verändert,
und dann kann man direkt update machen
$questlog.updateQuest("2",
"Beispiel Questbeschreibung
von Quest 2 - "+$game_variables[1].to_s")
die questbeschreibung is genau die selbe wie beim erstellen aber die variable wird neu eingelesen
-
Super thx funktioniert einwandfrei^^
-
Ah wunderbar jetzt kann ich endlich nen Quest machen, in dem die Blumen nicht
inna bestimmten Reihenfolge gesammelt werden müssen, damit das funzt xD
Oder auch nicht. Erstens mal ist da ein " zu viel. der macht andauernd nen Error wenn man es testhalber so einfügt ^^
Dann blicke ich jetzt gar nicht mehr durch.
Ich dachte da steht jetzt 0/10 oder sowas aber das will er bei mir irgendwie nicht.
Auch das mit den Variablen hochsätzen läuft nit.
Ich bin ein Variablen N00b somebody pls help me =(
Sk!p
-
Beispiel um das Questlog zum Menü zu adden
Scene_Menu von Evil95
#==============================================================================
# ** Scene_Menu_for_Simple_Questlog_by_Evil95
#------------------------------------------------------------------------------
# This class performs the menu screen processing.
#==============================================================================
class Scene_Menu < Scene_Base
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s7 = "Questlog"
s5 = Vocab::save
s6 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s7, s5, s6])
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, false) # Disable save
end
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 4
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1,2,3 # Skill, equipment, status
start_actor_selection
when 5 # Save
$scene = Scene_File.new(true, false, false)
when 6 # End Game
$scene = Scene_End.new
when 4
$scene = Scene_Questlog.new
end
end
end
end
class Scene_File < Scene_Base
def return_scene
if @from_title
$scene = Scene_Title.new
elsif @from_event
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(5)
end
end
end
class Scene_End < Scene_Base
def return_scene
$scene = Scene_Menu.new(6)
end
end
class Scene_Questlog < Scene_Base
def return_scene
if @from_menu
$scene = Scene_Menu.new(4)
else
$scene = Scene_Map.new
end
end
end
wenn ihr diesen skript benutzt, wird wenn ihr das speichern deaktiviert, das questlog deaktiviert!
um das zu ändern müsst ihr folgendes verändern:
in zeile 13:
s5 = Vocab::save
zu
s7 = Vocab::save
in zeile 12:
s7 = "Questlog"
zu
s5 = "Questlog"
in zeile 48:
when 5 # Save
zu
when 4 # Save
in zeile 52:
when 4
zu
when 5
dann geht das auch wieder mit den speichern deaktivieren
ich hoffe das war hilfreich^^
edit: wer zu faul ist kann sich den skript auch gleich so ziehen
Skript ohne Speicherbug
#==============================================================================
# ** Scene_Menu_for_Simple_Questlog_by_Evil95
#------------------------------------------------------------------------------
# This class performs the menu screen processing.
#==============================================================================
class Scene_Menu < Scene_Base
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s7 = Vocab::save
s5 = "Questlog"
s6 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s7, s5, s6])
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, false) # Disable save
end
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 4
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1,2,3 # Skill, equipment, status
start_actor_selection
when 4 # Save
$scene = Scene_File.new(true, false, false)
when 6 # End Game
$scene = Scene_End.new
when 5
$scene = Scene_Questlog.new
end
end
end
end
class Scene_File < Scene_Base
def return_scene
if @from_title
$scene = Scene_Title.new
elsif @from_event
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(5)
end
end
end
class Scene_End < Scene_Base
def return_scene
$scene = Scene_Menu.new(6)
end
end
class Scene_Questlog < Scene_Base
def return_scene
if @from_menu
$scene = Scene_Menu.new(4)
else
$scene = Scene_Map.new
end
end
end
-
Ich habe da en problem, und zwar:
wenn ich den Namen eingebe, kommt bei dem zweiten Wort immer so ein Biereck.
Kann man das irgenwie wegmachen?
-
Ich würde auch mal gerne wissen, ob man Variablen anzeigen lassen kann?
z.B.
Quest: Sammle 5 Wolfsleder
Und dann das im Questlog immer steht:
Wolfsleder: \v[0004]/5.
Ob es eine andere Lösung gibt oder ob das der Scriptersteller integrieren kann, weil so geht es im Moment leider nicht.
-
Ich würde auch mal gerne wissen, ob man Variablen anzeigen lassen kann?
z.B.
Quest: Sammle 5 Wolfsleder
Und dann das im Questlog immer steht:
Wolfsleder: \v[0004]/5.
Ob es eine andere Lösung gibt oder ob das der Scriptersteller integrieren kann, weil so geht es im Moment leider nicht.
versuch mal mit so einem common event
ich hab nur bis 3 gemacht, aber egal
also, wenn der switch an ist, wird die variable überprüft. ist sie 1, wird die wolfsledersammeln quest geupdatet, sodass angezeigt wird, dass du schon 1 wolfsleder hast
[gelöscht weil älter als 180 Tage]
-
versuch mal mit so einem common event
ich hab nur bis 3 gemacht, aber egal
also, wenn der switch an ist, wird die variable überprüft. ist sie 1, wird die wolfsledersammeln quest geupdatet, sodass angezeigt wird, dass du schon 1 wolfsleder hast
Danke :)
Werd ich so verwenden, vielen Dank :D
-
Halo, ich habe Fehler mit dem Questlog.
Immer wenn ich ins Questlog reinkomme und dann auf Aktive Quests gehe kommt immer eine Fehlermeldung und das Game stürtzt ab. Das gleiche ist wenn ich ein neuen Quest erstelle, immer nach dem Gespräch beim NPC stürtzt das game ab. Kann mir einer helfen?
-
Kannst du mal den Eventcode Posten?
`Vllt machst du im Eingabe Skript etwas falsch?
Oder das eingefügte Skript hat einen Fehler.
Ging es vorher schon oder war dieser Fehler von Anfang
An vorhanden?
Sk!p
-
Es ging früher mal, aber HellMinor hat ja was behoben mit den Quest pics und seitdem geht das nicht.
Wie gesagt es ist auch wenn ich ohne Quests auf active Quests gehe, dann kommt die meldung auch.
-
Schonmal einfach den Code neu eingefügt? Vllt hast du eine Zeile nicht
mitkopiert, oder du hast ein Zeichen vergessen.
Etwas in der Art. Das hatte ich bei meinem Ersten versuch auch.
Oder Das Skript zum Menü eintrag wurde durch die Änderung
mit der Verbesserung am Skript unwirksam oder Fehlerhaft...
Versuche es mal neu einzufügen (in einem Jungfreulichen Projekt)
und schau ob es geht.
Vllt hast du aber auch mit ein wenig glück noch eine ältere
Version des Skriptes auf dem Rechner, die du nehmenh könntest...
Sk!p
-
Hallo Leute,
Also mein Problem ist es, dass ich gerne in mein Spiel ein
Ruf - System einführen würde. Das heißt für so und soviel
Ruf bei der Fraktion passiert das und das. Ruf kann man
durch Monsterkloppen etc bekommen, ihr wisst was ich meine.
Da ich gerne das System als 3te Seite in das Questlog mit einbauen würde,
habe ich 2 Fragen.
1) wie mache ich eine 3te seite (glaube wurde schon weiter vorne mal beantwortet aber trotzdem)
2) Da ich alles mit Variablen mache (1mal Monsterkillen +1 Variable "Die Vergessenen")
wollte ich fragen, wie ich die Variablenzahl im Questlog abfragen kann.
Denn wenn ich einen Q erstelle
$questlog.addQuest("8","Die Vergessenen","Euer Ruf beträgt \v[3] ","Aktive")
Wird im Q-log nicht die Variablenzahl abgefragt sondern es steht da "Euer Ruf beträgt [](Kasten) [3]"
Wäre nett, wenn mir da wer weiterhelfen könnte!
Grüße Klex
-
WoW Lässt Grüßen.. ot..
-
Joa du hast es erfasst xD
Die Idee klau ich von wow aber ich finde
bei einem größeren Spiel (mein ziel sind 50 stunden playtime)
Ist so ein Rufsystem ne feine Sache :D
-
Und es Streckt das Spiel Gerne mal um 2-10 stunden :D wenn mans bischne schwer macht^^
-
zeig mal dein ruf system
PS: du müsstest jedesmal den Text des Quest updaten wenn sich eine zahl ändert
automatisch geht das nicht
-
Ok genau das wollte ich eigendlich nur wissen.
Dass das nicht automatisch geht. Das System ist wie
ich schon Sagte eingendlich Simple
set Variable "Die Vergessenen" 0
für jedes Monster das du killst add Variable "Die Vergessenen" 1
Jede Quest die du erfüllst add Variable "Die Vergessenen" 5
Wenn Variable "Die Vergessenen" = 12 dann kann man sich Schwert X, Y beim Händler der Vergessenen kaufen.
Und deswegen wollte ich einfach irgendwo irgendwas haben, wo der
momentane Ruf (der momentane wert der Variable "Die Vergessenen") angezeigt wird.
Wäre halt schön gewesen, wenn man das auf eine 3te Seite im Questlog quetschen könnte
mit einer Quest, die den Wert der Variable "Die Vergessenen" abfrägt und anzeigt!
-
Schonmal einfach den Code neu eingefügt? Vllt hast du eine Zeile nicht
mitkopiert, oder du hast ein Zeichen vergessen.
Etwas in der Art. Das hatte ich bei meinem Ersten versuch auch.
Oder Das Skript zum Menü eintrag wurde durch die Änderung
mit der Verbesserung am Skript unwirksam oder Fehlerhaft...
Versuche es mal neu einzufügen (in einem Jungfreulichen Projekt)
und schau ob es geht.
Vllt hast du aber auch mit ein wenig glück noch eine ältere
Version des Skriptes auf dem Rechner, die du nehmenh könntest...
Sk!p
Ich hab das schon gemacht... es läuft einfach nicht. Auserdem hab ich das nicht im Menu sonder öffne das mit F5. Es klappt ja es zu öffnen, aber wenn ich dann auf Active Quests gehe stürtzt es ab.
-
Stürzt das ganze Spiel ab, oder bekommst du nur einen
Skript Error?
Naja ist ja eigentlich egal, wenn was am Autragsskripting falsch wäre, würde der
Fehler schon auftreten, wenn du den Quest in die Active's kopiert
bekommst.
Ich kann dir zum verrecken nicht sagen woran es liegt, hatte ja selbst einige
Probleme mit dem Skript, aber als ich es neu einfügte,waren
die Fehler behoben.
Vllt ma ne Pm an hM schicken und anfragen.
Sk!p
-
Naja danke Skip, der Fehler kommt auch, wenn ich mit der Person spreche die den Quest gibt. Aber ich schau mich nach nem anderem Skript um...
*edit*
Da steht noch nichtmal in welcher line oder so, nur: Syntax error while running Skript.
Mehr steht da nicht.
-
Hast du das mal probiert in einem neuen Projekt
das Skript einzufügen und zu versuchen ob das so funktioniert?
Wenn das geht, kollidiert es vllt mit irgendetwas in deinem
Spiel...
Sk!p
-
Syntax error while running Script - weist auf nen fehler innem call script code
-
Jo, hab ich gemerkt. Ich hab das Call-Skript also verbessert. Jetzt kommt fast die gleiche Fehlermeldung, die etwas von addquest sagt. (Auch wieder ohne Zeile.) Im neuem Projekt klappt alles wunderbar.
*edit*
(http://img246.imageshack.us/img246/9066/16549283sl1.png) (http://imageshack.us)
(http://img246.imageshack.us/img246/16549283sl1.png/1/w800.png) (http://g.imageshack.us/img246/16549283sl1.png/1/)
-
Das sagt dir, dass du in in dem CallSkript, welcher den
Autrag erteilt und in die Running Quests haut einen Fehler gemacht hast.
Ein Zeichen was nicht erkannt wird, ein Zeichen was du vergessen hast.
Oder einfach eine Ressozurce genommen, mit der das Skript nichts
anfangen kann...
Sk!p
-
Nein der Fehler kam daher, dass er den Befehl addQuest nicht kannte, wie man auf dem Pic sehen kann. Ich hab mir dann mal angeguckt, welches meiner Skripte alles auch auf Scene_title zugreift. Wie ich gesehen hab, war es MOG Title Miria. Also hab ich den Scenetitle Teil vom Questlog darein editiert. Es hat danach alles wunderbar geklappt. Aber ich hab nach einer besseren Lösung gesucht. Und dann hat mir Hellminor erklärt, wie ich das am besten Löse. Das ist ganz simpel:
Einfach das Questlog unter das Titelskript packen!
-
LoL
Ah alles klar. Auch nicht schlecht ^^
Warum schwer wenns auch einfach gehen kann.
Naja wenns denn jetzt klappt. Dann Herzlichen Glückwunsch.
Dann kannste ja endlich damit weiter machen mit dem du mal
vor einiger Zeit angefangen hast ^^
Sk!p
-
Ich bin noch ein sagen wir blutiger N00b beim RPGVX daher kommt hier eine sehr dumme Frage:
Mit welcher Taste öffnet man den Skript?
MFG,
Twonky
-
Du musst ihn in dein Menü einfügen.
Beispiel um das Questlog zum Menü zu adden
Scene_Menu von Evil95
#==============================================================================
# ** Scene_Menu_for_Simple_Questlog_by_Evil95
#------------------------------------------------------------------------------
# This class performs the menu screen processing.
#==============================================================================
class Scene_Menu < Scene_Base
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s7 = "Questlog"
s5 = Vocab::save
s6 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s7, s5, s6])
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, false) # Disable save
end
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 4
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1,2,3 # Skill, equipment, status
start_actor_selection
when 5 # Save
$scene = Scene_File.new(true, false, false)
when 6 # End Game
$scene = Scene_End.new
when 4
$scene = Scene_Questlog.new
end
end
end
end
class Scene_File < Scene_Base
def return_scene
if @from_title
$scene = Scene_Title.new
elsif @from_event
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(5)
end
end
end
class Scene_End < Scene_Base
def return_scene
$scene = Scene_Menu.new(6)
end
end
class Scene_Questlog < Scene_Base
def return_scene
if @from_menu
$scene = Scene_Menu.new(4)
else
$scene = Scene_Map.new
end
end
end
Wenn du das richtig gemacht hast kannst du ihn einfach vom Menü aus öffnen
Grüße Klex
-
Oder du machst ein Commonevent, in dem du die Bedingung: Taste X gedrückt machst(X ist irgenteine Taste). Dann musse ins Common Event das Skript mit nem Befehl aufrufen. Ich mach mal kurz ein Screen.
R= W(Auf der Tastatur)
L= Q(Auf der Tastatur)
*edit*
(http://img167.imageshack.us/img167/8544/questup7.png) (http://imageshack.us)
(http://img167.imageshack.us/img167/questup7.png/1/w800.png) (http://g.imageshack.us/img167/questup7.png/1/)
-
Okay das habe ich jetzt...
folgendes Problem:
Jetzt kommt immer eine Meldung und das Spiel hört von selbst auf!
-
Was den für ne Fehlermeldung?
-
Ich lege dir ans Herz den Threat vorher schon einmal
auf diesen Fehler abzusuchen.
Ja ich weiß das ist nervig aber mittlerweile haben wir
fast semtliche Fehlermeldungen die es geben 'kann' durch
und mittlerweilse steht auch zu jeder dieser Meldungen eine
Lösung parat.
sk!p
-
Wenn ich dann Q drücke (Das ist die Taste die ich eingestellt habe)
kommt dann immer diese Meldung:
NameErrot occurred while running script.
unitialized constant Game_Interpreter::Scene_Questlog
und danach schließt sich das Spiel
Trotzdem cooles Questsystem wenn´s funktionieren würde bei mir^^
MFG,
Twonky
-
Das ist löblich, und auf diesem Weg füge ich
noch hinzu, dass du bitte keine Doppelposts machst.
Es soll da n Admin geben (habe ich gehört) der darauf,
sehr gereizt reagiert. Zurecht.
Gott erschuf die 'Edit' Funktion.
Sk!p
-
OK,
ich habe mir jetzt mal alles durchgelesen und keinen Beitrag gefunden der ansatzweise auf meinem zustimmt...
also,
wer mir helfen kann schickt mir bitte eine PM oder schreibt hier ins Forum.
Ich bedanke mich für jede (brauchbare) Antwort
Danke im Vorraus ;-)
MFG,
Twonky
-
Genau dieser Fehler kam bei mir mal. Was hast du alles sonst noch für Skripts? Wo hast du das eingefügt?
Bei mir lag es an einem Titel Skript.
-
Hey ist es möglich als Spieler die Quests zu löschen? wenn man die zb nicht mehr machen will? falls nicht das wäre super super n1 wenn das wer adden könnte ...
greetz end
-
1. Da es den Befehl gibt einen Qest zu löschen und man ihn
auch irgendwann löschen muss kann man das natürlich tun.
Wie und auf welche Weise, ist nicht vorgeschrieben.
2. Irgendwer addet das? Das Script ist von hellMinor.
Wenn er an ihm keine Änderung vornimmt tut es keiner.
Sk!p
punkt 3 war unnötig ~ hell
-
1. mir ist klar das man das quest mit einem befehl löschen kann aber nur mit id und nur wenn ich das irgendwo reingemacht hab aber der spieler selbst kann nicht quests löschen
2.Könnt auch jemand anders nen menü eintrag schicken womit löschen möglich ist..
greetz end
punkt 3 war unnötig ~ hell
-
@twonky : gib mal den eventcode , könnte sein das du ein $ vergessen hast
@effect : ich frag mich grad welchen sinn es hat eine quest vom spieler löschen zu lassen o_O wenn man eine quest nich machen will macht man sie einfach nich O_o
-
Naja kommt drauf an wieviel quests in einem spiel vorkommen wenns 100 + sind beendet man sicher nicht alle quests.. und dann hat man irgendwann einen überfüllten questlog
-
Ich habe es jetzt ich habe v.1.12 jetzt gemacht jetzt funktioniert es juhu^^
Okay jetzt kommt hier eine ganz doofe Frage:
Wie kann man Quests damit erstellen?
D.N.S
Bitte nutze die Edditier Funktion und vermeide Doppelposts.
-
Ich sage es dir nicht noch einmal Twonky.
Wenn du nicht aufhörst hier die Doppelposts aneinander
zu reihen wirst du gemeldet!
@ hM
Es hat wohl eher so den Effekt, das man eine Quest abbrechen kann, wenn man
keine Lust mehr hat sie fortzusetzen oder zu Ende zu führen, weil sie
mittlerweile vllt überflüssig ist.
Mich speziell würde es nerven das ganze spiel lang ne abgebrochene Quest
die ich nicht machen will im Log rumhöngen zu haben ;)
Sk!p
-
genau so meine ich wie skip es gesagt hat.
greetz end
-
ich muss das ganze ding ma neu machen wenn ich zeit hab
-
Wie kann man denn jetzt neue Quests machen????
-
Wer lesen kann ist klar im Vorteil.
Im Skript steht eine FAQ, und die ist nicht da weil sie schön aussieht.
Lese sie und du wirst die Antwort auf deine Frage finden...
Sk!p
-
Wenn ich ein Quest adde stürzt das Spiel an der Stelle ab, "syntaxerror while running script"...
habs auch mal in einem jungfräulichen, neuen Projekt versucht, aber da kommt das gleiche.
Bin ich denn blöde?
Habs auch mit verschiedenen Kommasetzungen versucht, einmal so wie's direkt im Script steht, und dann einmal so, wie's hier irgendwo im Thread stand... nüschte...
Hilfe, Hilfe.
-
Wie hast du das geaddet? Zeig mal bitte ein Screen.
Hast du irgentwelche anderen Skripts?
Hast du das über Main eingefügt unter den Standartskripts?
Hast du für jeden Quest auch ein Bild gemacht?
mfg. eugene
-
Ich hab hier mal ein Sample: http://rapidshare.com/files/172776996/Questlogtest.zip.html (http://rapidshare.com/files/172776996/Questlogtest.zip.html)
Das komische ist, wenn ich den Callscript kopiere und einfüge, klappt es. Aber sobald ich die Beschreibung ändere, kommt der Error .__. Name und ID kann ich ändern, nur Beschreibung nicht.
Wie gesagt, jungfräuliches Testspiel ohne andere Scripts. Und Bilder für Quests hab ich nicht gemacht, aber müsste auch ohne klappen, weil tut es ja so lange ich nicht die Beschreibung ändere :D
-
Hab den Fehler gefunden. Nach $questlog.addQuest muss direkt die Klammer kommen, ohne Leerzeichen.
mfg. eugene
-
Eh, wie kommt da denn ein Leerzeichen hin, wenn ichs so kopiert habe, wie es im Script steht? Macht der das automatisch, wenn man das nochmal editiert? Vielen Dank ^^
-
Ich hab echt keine Ahnung, aber es scheint jetzt zu klappen. Da bin ich froh.
mfg. eugene
-
wo muss ich den skript einbauen (bei main villeicht), und wie kann ich questsaktivieren, also das jemand die quests gibt?
-
Du fügst das Skript über Main ein, so wie jedes andere Skript.
# Um eine Quest zu erstellen kann man dieses Template benutzen :
# $questlog.addQuest("Unique ID","Quest Titel","Quest Beschreibung")
Das setzt du in das Event rein.
Also. du wählst unter Eventbefehl Skript aus und schreibst das rein:
$questlog.addQuest("Unique ID","Quest Titel","Quest Beschreibung")
Unique ID ist die ID des Quests
Quest Titel ist der Titel
Quest Beschreibung ist die Beschreibung des Quests
mfg. eugene
-
Mal eine ganz blöde Frage: Wie bekomme ich es hin, dass nach Leerzeichen in den Questnamen kein eckiges Kästchen (als Schriftzeichen) erscheint?
-
kann jemand vill. noch ein html reader energi einbauen? damit man z.b. bilder und icons so wie auf dem Bild einfügen kann.
(http://img455.imageshack.us/img455/3807/questlogv22hl.png)
ps eine script vorlage hätte ich was das html betrifft nur ist das für den xp und somit ungeeignet. ich weiss auch nicht wie umbauen geschweige denn nachher in den queslog reinstellen.
http://www.rpg-studio.de/forum/index.php?page=Attachment&attachmentID=2882&h=7616a44fdc7b07e2a8e2d8046750d229482560a0 (http://www.rpg-studio.de/forum/index.php?page=Attachment&attachmentID=2882&h=7616a44fdc7b07e2a8e2d8046750d229482560a0)
-
Bilder sind doch schon im Script integriert.
Die FAQ ist dein Freund.
Sk!p
-
ich weiss aber ich möchte es nicht unten links sondern ober der Questbeschreibung. Weiss nicht wie ändern im script.
und ausserdem möchte ich icons im titel anzeigen lassen
-
Hi,
habe das Script eingebaut. Klappt soweit sehr gut.
Dankeschön.
Gruß, Markus.
-
Hi
hätte nun eine Frage.
Ich habe folgende Quest gescriptet:
$questlog.addQuest("1","Der verlorene Ring","Der
Ehering von meinem
Vater ist irgendwo
im Haus verloren
gegangen. Ich habe
mich bereit erklärt,
ihn zu suchen.","0")
Wie kann ich nun praktisch dafür sorgen, dass ein anderes Event den Status "0" ausliest und dann (wenn dem so ist), die Quest updatet. Mit Bedingungen? Wenn ja, wie soll die aussehen.
-
conditional branch , seite 4 -> script
$questlog.getQuestState("Unique ID") == 0
-
Dankesehr für die Antwort. ;)
-
gibt es eigendlich jetzt ne erweiterung zu diesem Questlog?
-
bugfix für das bilder fehler is jetz drinne
-
Ich habe einen Fehler gefunden und zwar wird bei Version 1.3 die Questbeschreibung nicht mehr angezeigt. Bei Version 1.2 funktioniert es, kann aber auch nur bei mir so sein.
Habe den Fehler gefunden.
Hoffe es stört Onkel Hell nicht das ich in seinem Quelltext Rumeditiere:
In Zeile 309 unter if defined?(@data[id][2])
muss @quest_helper.write_text(@data[id][2]) stehen.
Danach hat es bei mir super funktioniert.
-
fixed
-
War ich zu spät.
Übrigens Super Script!
-
Hallo
Ich bin neu hier und habe mal ein Frage.
ZUerst, ich habe das was ich wissen will schon als Frage gefunden aber irgendwie keine Antwort darauf.
Folgendes.
Ich habe ein Quest erstellt, es wird angenommen und in die Questliste erstellt. Das Klappt schonmal sehr gut.
Nun findet der Held das gesucht und will die Quest abgeben, dann kommt folgender Fehler.
(http://rapidshare.com/files/250673124/001.JPG)
Wenn ich dann reinschauen in den Skript springt er gleich an die Stelle und da steht dann: actor = $game_actors[@parameters[1]]
Nun weiß ich nicht weiter.
Ich hoffe man kann mir eine Antwort geben, die auch dumme verstehen denn ich bin in solchen sachen eigendlich ein Noob.
Vielen dank im Vorraus.
-
Nun findet der Held das gesucht und will die Quest abgeben, dann kommt folgender Fehler.
Ich weis nicht, ob ich der Einzige bin aber ich werde aus dem Satz nicht schlau. Vielleicht kannst du es genauer erklären und den Befehl den du benutzt posten. So könnte die wesentlich besser geholfen werden.
MfG
Deity
-
Ich glaube er meint: "Nun findet der Held das Gesuchte und will die Quest abgeben, aber dann kommt folgender Fehler!"
Also normal solltest du bei dem gewünschten Questgeber (Npc) einfach den Befehl $questlog.completeQuest("Unique ID") (Unique ID = ID deines Quests) eingeben und das Quest sollte unter "Complete Quests" aufgeführt werden. Belohnung der Quest kannst du ja dann im Event einfach einstellen.
Was anderes kann ich mir unter deinem Problem nicht vorstellen.
MfG RaZZoR
-
Fehlermeldung:
Script 'Quest-Log' line 351: EOFError occured - End of File reached
(da wo der Pfeil ist)
#==============================================================================
class Scene_File < Scene_Base
#==============================================================================
alias write_save_data_adds write_save_data
def write_save_data(file)
write_save_data_adds(file)
Marshal.dump($activelog, file)
Marshal.dump($completedlog, file)
Marshal.dump($questlog, file)
end
alias read_save_data_adds read_save_data
def read_save_data(file)
read_save_data_adds(file)
-> $activelog = Marshal.load(file)
$completedlog = Marshal.load(file)
$questlog = Marshal.load(file)
end
end
Was muss getan werden, damit es läuft?
-
@Vorposter: hast du versucht etwas zu laden, was du nicht mit dem qeust gespeichert hast?
-
Noch mal von Anfang an:
-Ich habe das Script in mein Projekt eingefügt
Wenn ich das Questlog aufrufen will (Menü) soll ich ja diesen Befehl nutzen:
$scene = Scene_Questlog.new
Der muss in Common Events? Oder wo hin muss das?
-Ich habe noch keine Quests geaddet, da ja so wie so noch nichts funktioniert.
Aber wenn ich eine Quest adden will, muss ich ja folgenden Befehl in das Event mit der Quest schreiben:
$questlog.addQuest("Unique ID","Quest Title","Quest Description","State")
Genaus so wie es da steht, nur eben anstatt Unique ID => Name des Events und Quest Title usw... ist ja klar.
Das heisst: Ich habe bis jetzt nur das Script eingefügt, sonst noch gar nichts.
So, das waren erst mal die 2 Fragen.
Zum Schluss noch:
Der Fehler den ich hier reingeschrieben habe:
Liegt es daran, dass ich noch keine Quests eingefügt habe für das Questlog?
Oder, dass ich den Aufruf-Befehl an die falsche Stelle geschrieben habe?
Oder etwas ganz anderes?
-
Du musst diesen Befehl zum "Questlogrufen" auch in einem Event per "Call Script..." auf dem dritten reiter eingeben.
Du kannst es also über eine Parallele abfrage machen und eine Taste bestimmen, die man drücken muss um das Questlog zu rufen, du kannst auch in jedem raum ein event setzten, das man anlabern kann um das questlog zu rufen (sehr unschön) oder du kannst ein CE machen, dass dann durch ein Item aktiviert wird.
MfG
-
Du musst diesen Befehl zum "Questlogrufen" auch in einem Event per "Call Script..." auf dem dritten reiter eingeben.
Du kannst es also über eine Parallele abfrage machen und eine Taste bestimmen, die man drücken muss um das Questlog zu rufen, du kannst auch in jedem raum ein event setzten, das man anlabern kann um das questlog zu rufen (sehr unschön) oder du kannst ein CE machen, dass dann durch ein Item aktiviert wird.
MfG
Ok, danke ich probier es nochmal.
Hoffentlich kommt die Fehlermeldung nicht mehr.
Post zusammen gefügt: September 30, 2009, 17:12:58
Der Fehler kommt nicht mehr, weil ich zu erst einen neuen Spielstand machen musste... Naja, wie auch immer.
Habe es hinbekommen, dass das Questlog durch ein Item aufgerufen wird.
Aber, wie das mit einem Tastenbefehl geht, habe ich nicht ganz verstanden, bzw. ob/wie man eine Extra-Auswahlfunktion im Menü einbauen kann.
-
Aähm ich hab mit dem Questlog auch ein Problem:
Ich hab in mein Graphik´s ordner einen neuen Ordner namens Questmaps erstellt und mein Bild (256*200 pixel) dort rein getann es heißt auch wie mein Quest und trotzdem zeigt mir mein Questlog das Bild nicht an! Was kann ich da machen?
und noch ne Frage : Wie kann ich den Quest log deutsch machen? so das da Abgeschlossene Quest´s Steht und nich completQuest´s
entschuldigung wegen dem offtopic aber ich wusste nich wo ich das hin schreiben sollte
und ein neues Thema wollte ich nicht eröffnene
mfg
Tima
-
Zeile 44-46 ist für dich interssant, da du dort die Begriffe ändern kannst.
Was allerdings dein Problem mit den Bildern angeht kann ich dir leider nicht helfen.. :(
Gruß,
Domin0e
-
Aähm ich hab mit dem Questlog auch ein Problem:
Ich hab in mein Graphik´s ordner einen neuen Ordner namens Questmaps erstellt und mein Bild (256*200 pixel) dort rein getann es heißt auch wie mein Quest und trotzdem zeigt mir mein Questlog das Bild nicht an! Was kann ich da machen?
und noch ne Frage : Wie kann ich den Quest log deutsch machen? so das da Abgeschlossene Quest´s Steht und nich completQuest´s
entschuldigung wegen dem offtopic aber ich wusste nich wo ich das hin schreiben sollte
und ein neues Thema wollte ich nicht eröffnene
mfg
Tima
Bei den Bildern musst du darauf achten, dass der Name im Questmaps-Ordner nur der Name der Quest ist!
Z.B.: Heisst die Quest "Hilfe" => im Ordner heisst es dann auch "Hilfe" (ohne.png), dann muss es gehen!
Hatte das Problem auch xD.
-
Geht Trotzdem nicht . das hab ich alles schon probiert ...
-
Geht Trotzdem nicht . das hab ich alles schon probiert ...
Ist das Format im Skript png? Keine Ahnung, was da sonst schief laufen könnte.
-
Habe ein Problem. Hab den Script eingefügt aber es kommt immer diese Fehlermeldung beim Starten des Spiels:
Script 'Quest' line 369: SyntaxError occurred.
Kann mich bitte jemand helfen?
-
Also zuallererstmal sehen deine Beiträge eher nach Post-Hunting aus als nach echten Fragen, dann ist es nicht einfach zu sagen was für ein Problem du hast, aber du scheinst dich mit Skripten nicht wirklich auszukennen, und bevor du wie wild jetzt überall rumpostest schreibe deine Fragen ins Technikforum unter SKRIPTE da haben wir einen Bereich der extra für Fragen zu Skripten ist :)
Am besten machst du screens von deinen Fehlermeldungen und postest sie mit dann können wir dir eher helfen!
Kvote
-
Sry bin hier neu im Forum und kenn mich hier noch nicht so gut aus
Aber danke für deine Antwort.
Dumme Frage aber wie setz man hier eig. ein Bild rein? >.<
-
Wenn deine Meldung kommt drückst du "Druck", fügst das in paint ein und lädst das bild bei einen Host hoch (z.b. : http://www.pic-upload.de/ (http://www.pic-upload.de/) ) und dann zeigst du das mit (http://) !
Post zusammen gefügt: März 27, 2010, 16:48:57
Wenn deine Meldung kommt drückst du "Druck", fügst das in paint ein und lädst das bild bei einen Host hoch (z.b. : [url]http://www.pic-upload.de/[/url] ([url]http://www.pic-upload.de/[/url]) ) und dann zeigst du das mit (http://) !
(Oder du knipst das Skriptteil eben ab !)
-
Ok danke D3nn!
Also diese Fehlermeldung kommt dann immer:
http://www.pic-upload.de/view-5088817/Unbenannt.jpg.html (http://www.pic-upload.de/view-5088817/Unbenannt.jpg.html)
-
Schick mal am besten den Skript (der bei dir wohl 'Quest' heißt!)
Und du hast mich etwas falsch beschrieben xD
-
Das ist der Questlog Script 1.3a
-
Den ganzen bitte nicht nur den Namen
-
Hier ist der Script:
#==============================================================================
# Simple Quest-Log
#
# Version : 1.3a - 04.04.08
# Created by : hellMinor
# Do NOT redistribute without my permission
# Description : A simple script for a Quest-Log
#
#==============================================================================
#==============================================================================
# F.A.Q.
#==============================================================================
# The Global Questlog-Name is $questlog
# To open the Questlog from the menu just do $scene = Scene_Questlog.new
# To open the Questlog from an event $scene = Scene_Questlog.new(false)
#
# To add a quest make a new call script with this Template :
# $questlog.addQuest("Unique ID","Quest Title","Quest Description","State")
#
# To update a Quest description make a new call script with this Template :
# $questlog.updateQuest("unique ID","Quest Description","State")
#
# To move a Quest to Completed Quests make new call script with this Template :
# $questlog.completeQuest("Unique ID")
#
# To delete a Quest from the Active-Questlog make a call script with this
# Template :
# $questlog.deleteQuest("Unique ID")
#
# You can get the current state of a Quest with this Template :
# $questlog.getQuestState("Unique ID")
# This may be useful in a conditional branch if you want to react with a
# special Quest-State
#
# If u want to add a Questmap, create a folder named Questmaps in your
# Graphics folder. The name of the Questmap must be the same as the Quest
# in the Game. Be sure that you set the correct MAP_FORMAT.
# A Quest-Map should have a size of 265*200 px !
# I.E. : If your Quest is named QuestYXZ , the picture in the Questmap folder
# has to be QuestYXZ.png if your map is a .png
#==============================================================================
# Setup
#==============================================================================
QUESTLOGNAME = "Questlog" # Questlog Menu name
QUEST_MENU_ITEM_1 = "Active Quests" # Active Quest name
QUEST_MENU_ITEM_2 = "Completed Quests" # Completed Quest name
SIZE_VAR = 20 # Character Size
MAP_FORMAT = "png" # Quest-Map Ending
#==============================================================================
class Questlog
#==============================================================================
def addQuest(id,header,description,state = "")
$activelog << [id,header,description,state]
end
#------------------------------------------------------------------------------
def updateQuest(id,description,state = "")
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$activelog[i][2] = description
$activelog[i][3] = state
break
end
end
end
#------------------------------------------------------------------------------
def completeQuest(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$completedlog << $activelog[i]
$activelog.delete_at(i)
break
end
end
end
#------------------------------------------------------------------------------
def deleteQuest(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$activelog.delete_at(i)
break
end
end
end
#------------------------------------------------------------------------------
def getQuestState(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
return $activelog[i][3]
break
end
end
end
end
#==============================================================================
class Scene_Questlog < Scene_Base
#==============================================================================
def initialize(from_menu = true)
@from_menu = from_menu
end
def start
super
create_menu_background
@help_window = Window_Help.new
@help_window.set_text(QUESTLOGNAME,1)
s1 = QUEST_MENU_ITEM_1
s2 = QUEST_MENU_ITEM_2
@select_window = Window_Command.new(544,[s1,s2],2,1)
@select_window.y = 55
@select_window.active = true
end
#------------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@help_window.dispose
@select_window.dispose
end
#------------------------------------------------------------------------------
def kill_questwindows
@quest_window.dispose
end
#------------------------------------------------------------------------------
def return_scene
if @from_menu
$scene = Scene_Menu.new
else
$scene = Scene_Map.new
end
end
#------------------------------------------------------------------------------
def update
super
update_menu_background
@help_window.update
if @select_window.active
@select_window.update
update_select_selection
elsif @quest_window.active
@quest_window.update
update_quest_selection
end
end
#------------------------------------------------------------------------------
def update_select_selection
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
case @select_window.index
when 0
$oldlog = false
@quest_window = Window_Quest.new(0,110,272,(24*11)+42)
@select_window.active = false
@quest_window.active = true
when 1
$oldlog = true
@quest_window = Window_Quest.new(0,110,272,(24*11)+42)
@select_window.active = false
@quest_window.active = true
end
end
end
#------------------------------------------------------------------------------
def update_quest_selection
if Input.trigger?(Input::B)
Sound.play_cancel
kill_questwindows
@select_window.active = true
end
end
end
#==============================================================================
class Scene_Title < Scene_Base
#==============================================================================
alias create_game_objects_additions create_game_objects
def create_game_objects
create_game_objects_additions
$questlog = Questlog.new
$activelog = Array.new
$completedlog = Array.new
end
end
#==============================================================================
class Window_Help < Window_Base
#==============================================================================
def initialize(x = 0,y = 0, width = 544, height = WLH+32)
super(x, y, width, height)
end
end
#==============================================================================
class Window_Description < Window_Base
#==============================================================================
def initialize(x = 0,y = 0, width = 544, height = WLH+32)
super(x, y, width, height)
@text = nil
@contents_x = 0
@contents_y = 0
@line_count = 0 # Line count drawn up until now
update
end
#------------------------------------------------------------------------------
def new_line
@contents_x = 0
@contents_y += WLH
@line_count += 1
@line_show_fast = false
end
#------------------------------------------------------------------------------
def finish_message
@text = nil
@line_count = 0
@contents_x = 0
@contents_y = 0
end
#------------------------------------------------------------------------------
def write_text(str)
if str != nil || str != ""
create_contents
update_msg(str)
end
end
#------------------------------------------------------------------------------
def update_msg(str)
str.each_line{|str2|iterator(str2)}
finish_message
end
#------------------------------------------------------------------------------
def iterator(str2)
contents.font.size = SIZE_VAR
contents.draw_text(@contents_x, @contents_y, str2.size*40, WLH, str2.delete("\n"))
c_width = contents.text_size(str2).width
@contents_x += c_width
new_line
end
end
#==============================================================================
class Window_Quest < Window_Selectable
#==============================================================================
def initialize(x, y, width, height)
super(x, y, width, height)
@column_max = 1
self.index = 0
@quest_helper = Window_Description.new(271,110,273,(24*11)+42)
refresh
end
#------------------------------------------------------------------------------
def refresh
@data = []
if !$oldlog
for i in (0..$activelog.size-1)
@data.push($activelog[i])
end
else
for i in (0..$completedlog.size-1)
@data.push($completedlog[i])
end
end
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#------------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
item = @data[index][1]
if item != nil
rect.width -= 4
self.contents.draw_text(rect.x, rect.y, 172, WLH, item)
end
end
#------------------------------------------------------------------------------
alias update_addition update
def update
update_addition
update_description(@index)
update_selection
end
#------------------------------------------------------------------------------
def update_selection
if Input.trigger?(Input::B)
Sound.play_cancel
@quest_helper.dispose
if @quest_map != nil
@quest_map_bitmap.bitmap.dispose
@quest_map_bitmap.dispose
@quest_map.dispose
@quest_map_viewport.dispose
@quest_map = nil
end
end
end
#------------------------------------------------------------------------------
def update_description(id)
if defined?(@data[id][2])
@quest_helper.write_text(@data[id][2])
if @quest_map == nil
if Cache.questmaps(@data[id][1]).is_a?(Bitmap)
self.height /= 3
@quest_map = Window_Description.new(0,210,272,(24*7)+38)
@quest_map_bitmap = Sprite.new
@quest_map_viewport = Viewport.new(3,213,268,(24*7)+35)
@quest_map_bitmap.viewport = @quest_map_viewport
@quest_map_bitmap.bitmap = Cache.questmaps(@data[id][1])
@quest_map_bitmap.viewport.z = 150
end
else
if Cache.questmaps(@data[id][1]).is_a?(Bitmap)
@quest_map_bitmap.bitmap = Cache.questmaps(@data[id][1])
else
self.height *= 3
@quest_map_bitmap.bitmap.dispose
@quest_map_bitmap.dispose
@quest_map.dispose
@quest_map_viewport.dispose
@quest_map = nil
end
end
end
end
end
#==============================================================================
class Scene_File < Scene_Base
#==============================================================================
alias write_save_data_adds write_save_data
def write_save_data(file)
write_save_data_adds(file)
Marshal.dump($activelog, file)
Marshal.dump($completedlog, file)
Marshal.dump($questlog, file)
end
alias read_save_data_adds read_save_data
def read_save_data(file)
read_save_data_adds(file)
$activelog = Marshal.load(file)
$completedlog = Marshal.load(file)
$questlog = Marshal.load(file)
end
end
#==============================================================================
module Cache
#==============================================================================
def self.questmaps(filename)
begin
load_bitmap("Graphics/Questmaps/", filename)
rescue
return nil
end
end
end
-
Ich klär mal auf.
Hell hat ausversehen beim Kopieren des Scripts ein end zuviel erwischt. Am Ende des Script war also eine Leerzeile und ein "end" zuviel, mit dem das Script nichts anfangen konte.
Mir ist das gestern Nahct aufgefallen als bei Kvote der selbe Fehler erschienen ist, also habe ich es in Hells Beitrag editiert.
Heute hast du aber in deinem letzten Beitrag wahrscheinlich nicht das Script aus deinem Editor genommen, sondern das von der ersten Seite welche von mir gestern nach editiert wurde. ^^
Nimm genau das Script was auf der ersten Seite ist oder das was du heute gepostet hast und der Fehler wird nicht mehr auftreten.
MfG
Deity
-
Ah danke jetzt funtzt =)
Kann ich aber irgenwie einstellen dass das Questlog im Menü angezeigt wird?
-
Ebenfalls auf der 1. Seite nachzulesen. Weiter im 1. Post von Hell ist eine Möglichkeit gegeben.
MfG
Deity
-
Ah danke habs übersehen
-
öhmmmm, ich wollte einen extra ordner für die bilder erstellen, aber wie geht das? im materialmanager kann man keinen extra ordner erstellen
-
Hmm dort sollst du es auch net mach sondern im Projekt Ordner
(http://imagesload.net/img/Grafik1.png)
-
oooohhhhhh lach, na auf die idee muß man erst mal kommen ;DDDD danke danke
-
Wieso geht das Script bei mir nicht? Ich habe das Genommen, wo eigentlich das mit dem "end" gefixxt wurde. Es geht aber immer noch nicht.
Mit einem "end" hinzu oder weg.
Hier mein Code, den ich von vorne genommen habe:
#==============================================================================
# Simple Quest-Log
#
# Version : 1.3a - 04.04.08
# Created by : hellMinor
# Do NOT redistribute without my permission
# Description : A simple script for a Quest-Log
#
#==============================================================================
#==============================================================================
# F.A.Q.
#==============================================================================
# The Global Questlog-Name is $questlog
# To open the Questlog from the menu just do $scene = Scene_Questlog.new
# To open the Questlog from an event $scene = Scene_Questlog.new(false)
#
# To add a quest make a new call script with this Template :
# $questlog.addQuest("Unique ID","Quest Title","Quest Description","State")
#
# To update a Quest description make a new call script with this Template :
# $questlog.updateQuest("unique ID","Quest Description","State")
#
# To move a Quest to Completed Quests make new call script with this Template :
# $questlog.completeQuest("Unique ID")
#
# To delete a Quest from the Active-Questlog make a call script with this
# Template :
# $questlog.deleteQuest("Unique ID")
#
# You can get the current state of a Quest with this Template :
# $questlog.getQuestState("Unique ID")
# This may be useful in a conditional branch if you want to react with a
# special Quest-State
#
# If u want to add a Questmap, create a folder named Questmaps in your
# Graphics folder. The name of the Questmap must be the same as the Quest
# in the Game. Be sure that you set the correct MAP_FORMAT.
# A Quest-Map should have a size of 265*200 px !
# I.E. : If your Quest is named QuestYXZ , the picture in the Questmap folder
# has to be QuestYXZ.png if your map is a .png
#==============================================================================
# Setup
#==============================================================================
QUESTLOGNAME = "Questlog" # Questlog Menu name
QUEST_MENU_ITEM_1 = "Active Quests" # Active Quest name
QUEST_MENU_ITEM_2 = "Completed Quests" # Completed Quest name
SIZE_VAR = 20 # Character Size
MAP_FORMAT = "png" # Quest-Map Ending
#==============================================================================
class Questlog
#==============================================================================
def addQuest(id,header,description,state = "")
$activelog << [id,header,description,state]
end
#------------------------------------------------------------------------------
def updateQuest(id,description,state = "")
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$activelog[i][2] = description
$activelog[i][3] = state
break
end
end
end
#------------------------------------------------------------------------------
def completeQuest(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$completedlog << $activelog[i]
$activelog.delete_at(i)
break
end
end
end
#------------------------------------------------------------------------------
def deleteQuest(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
$activelog.delete_at(i)
break
end
end
end
#------------------------------------------------------------------------------
def getQuestState(id)
for i in 0..$activelog.size-1
if $activelog[i][0] == id
return $activelog[i][3]
break
end
end
end
end
#==============================================================================
class Scene_Questlog < Scene_Base
#==============================================================================
def initialize(from_menu = true)
@from_menu = from_menu
end
def start
super
create_menu_background
@help_window = Window_Help.new
@help_window.set_text(QUESTLOGNAME,1)
s1 = QUEST_MENU_ITEM_1
s2 = QUEST_MENU_ITEM_2
@select_window = Window_Command.new(544,[s1,s2],2,1)
@select_window.y = 55
@select_window.active = true
end
#------------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@help_window.dispose
@select_window.dispose
end
#------------------------------------------------------------------------------
def kill_questwindows
@quest_window.dispose
end
#------------------------------------------------------------------------------
def return_scene
if @from_menu
$scene = Scene_Menu.new
else
$scene = Scene_Map.new
end
end
#------------------------------------------------------------------------------
def update
super
update_menu_background
@help_window.update
if @select_window.active
@select_window.update
update_select_selection
elsif @quest_window.active
@quest_window.update
update_quest_selection
end
end
#------------------------------------------------------------------------------
def update_select_selection
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
case @select_window.index
when 0
$oldlog = false
@quest_window = Window_Quest.new(0,110,272,(24*11)+42)
@select_window.active = false
@quest_window.active = true
when 1
$oldlog = true
@quest_window = Window_Quest.new(0,110,272,(24*11)+42)
@select_window.active = false
@quest_window.active = true
end
end
end
#------------------------------------------------------------------------------
def update_quest_selection
if Input.trigger?(Input::B)
Sound.play_cancel
kill_questwindows
@select_window.active = true
end
end
end
#==============================================================================
class Scene_Title < Scene_Base
#==============================================================================
alias create_game_objects_additions create_game_objects
def create_game_objects
create_game_objects_additions
$questlog = Questlog.new
$activelog = Array.new
$completedlog = Array.new
end
end
#==============================================================================
class Window_Help < Window_Base
#==============================================================================
def initialize(x = 0,y = 0, width = 544, height = WLH+32)
super(x, y, width, height)
end
end
#==============================================================================
class Window_Description < Window_Base
#==============================================================================
def initialize(x = 0,y = 0, width = 544, height = WLH+32)
super(x, y, width, height)
@text = nil
@contents_x = 0
@contents_y = 0
@line_count = 0 # Line count drawn up until now
update
end
#------------------------------------------------------------------------------
def new_line
@contents_x = 0
@contents_y += WLH
@line_count += 1
@line_show_fast = false
end
#------------------------------------------------------------------------------
def finish_message
@text = nil
@line_count = 0
@contents_x = 0
@contents_y = 0
end
#------------------------------------------------------------------------------
def write_text(str)
if str != nil || str != ""
create_contents
update_msg(str)
end
end
#------------------------------------------------------------------------------
def update_msg(str)
str.each_line{|str2|iterator(str2)}
finish_message
end
#------------------------------------------------------------------------------
def iterator(str2)
contents.font.size = SIZE_VAR
contents.draw_text(@contents_x, @contents_y, str2.size*40, WLH, str2.delete("\n"))
c_width = contents.text_size(str2).width
@contents_x += c_width
new_line
end
end
#==============================================================================
class Window_Quest < Window_Selectable
#==============================================================================
def initialize(x, y, width, height)
super(x, y, width, height)
@column_max = 1
self.index = 0
@quest_helper = Window_Description.new(271,110,273,(24*11)+42)
refresh
end
#------------------------------------------------------------------------------
def refresh
@data = []
if !$oldlog
for i in (0..$activelog.size-1)
@data.push($activelog[i])
end
else
for i in (0..$completedlog.size-1)
@data.push($completedlog[i])
end
end
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#------------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
item = @data[index][1]
if item != nil
rect.width -= 4
self.contents.draw_text(rect.x, rect.y, 172, WLH, item)
end
end
#------------------------------------------------------------------------------
alias update_addition update
def update
update_addition
update_description(@index)
update_selection
end
#------------------------------------------------------------------------------
def update_selection
if Input.trigger?(Input::B)
Sound.play_cancel
@quest_helper.dispose
if @quest_map != nil
@quest_map_bitmap.bitmap.dispose
@quest_map_bitmap.dispose
@quest_map.dispose
@quest_map_viewport.dispose
@quest_map = nil
end
end
end
#------------------------------------------------------------------------------
def update_description(id)
if defined?(@data[id][2])
@quest_helper.write_text(@data[id][2])
if @quest_map == nil
if Cache.questmaps(@data[id][1]).is_a?(Bitmap)
self.height /= 3
@quest_map = Window_Description.new(0,210,272,(24*7)+38)
@quest_map_bitmap = Sprite.new
@quest_map_viewport = Viewport.new(3,213,268,(24*7)+35)
@quest_map_bitmap.viewport = @quest_map_viewport
@quest_map_bitmap.bitmap = Cache.questmaps(@data[id][1])
@quest_map_bitmap.viewport.z = 150
end
else
if Cache.questmaps(@data[id][1]).is_a?(Bitmap)
@quest_map_bitmap.bitmap = Cache.questmaps(@data[id][1])
else
self.height *= 3
@quest_map_bitmap.bitmap.dispose
@quest_map_bitmap.dispose
@quest_map.dispose
@quest_map_viewport.dispose
@quest_map = nil
end
end
end
end
end
#==============================================================================
class Scene_File < Scene_Base
#==============================================================================
alias write_save_data_adds write_save_data
def write_save_data(file)
write_save_data_adds(file)
Marshal.dump($activelog, file)
Marshal.dump($completedlog, file)
Marshal.dump($questlog, file)
end
alias read_save_data_adds read_save_data
def read_save_data(file)
read_save_data_adds(file)
$activelog = Marshal.load(file)
$completedlog = Marshal.load(file)
$questlog = Marshal.load(file)
end
end
#==============================================================================
module Cache
#==============================================================================
def self.questmaps(filename)
begin
load_bitmap("Graphics/Questmaps/", filename)
rescue
return nil
end
end
end
-
Fehlermeldung wäre hilfreich~
-
Ich habe ein Problem mit dem Questlog Script.
Ich weiß das die Frage schonmal gestellt wurde, aber ich habe es irgendwie nicht verstanden.
Wie kann ich das Questmenü aufrufen?
Tut mir Leid, aber ich kenne mich nicht aus :(
-
# The Global Questlog-Name is $questlog
# To open the Questlog from the menu just do $scene = Scene_Questlog.new
# To open the Questlog from an event $scene = Scene_Questlog.new(false)
Wenn du den Questlog per Event aufrufst musst du bei den Event Commands auf Seite 3 unter Advanced "Script..." benutzen.
-
# The Global Questlog-Name is $questlog
# To open the Questlog from the menu just do $scene = Scene_Questlog.new
# To open the Questlog from an event $scene = Scene_Questlog.new(false)
Wenn du den Questlog per Event aufrufst musst du bei den Event Commands auf Seite 3 unter Advanced "Script..." benutzen.
Bei Common Events oder wo?
-
Wenn du den Questlog über ein Item aufrufst dann in den Common Events, ja. Ansonsten in dem Event, welches den Questlog aufruft.
-
Nein, ich will das man jetzt Q drückt und dann das Questfenster erscheint.
Geht das nicht?
-
Doch dafür musst du ein Common Event mit parallelem Prozess haben.
Dort machst du eine Abfrage, ob die Taste Q(L) gerückt wurde und wenn dies der Fall ist, führst du den Call Script aus.
Ein Waitbefehl könnte vor unnötigen Aufwand schützen.
MfG
Deity
-
Frisst das aber nicht an der Leistung des Spiels? Wäre es per Script nicht besser, wenn es schon eingebaut wäre?
-
Doch dafür musst du ein Common Event mit parallelem Prozess haben.
Dort machst du eine Abfrage, ob die Taste Q(L) gerückt wurde und wenn dies der Fall ist, führst du den Call Script aus.
Ein Waitbefehl könnte vor unnötigen Aufwand schützen.
MfG
Deity
Was muss den da für ein Switch hin?
EDIT: Vielen Dank nun funktioniert es endlich :D
-
Hey Leute... Ich habe ein kleines großes Problem mit dem Questlog, will ich es per button starten klappt alles soweit, will ich allerdings das Questlog ins Menü einbauen gehts nicht.
So stell ich es beispielsweise über Speichern und geh ins Game und geh aufs Questlog öffnet sich die Save Scene ... bei den anderen ist es das selbst =/
Das einzige das funktionierte ist an 1. Stelle ..
Habe auch bereits die vorgschlagene Lösung von Seite 1 probiert- da erhalte ich sobald ich ins Menü will direkt einen schwarzen Bildschirm und das wars ^^
Hoffe ihr könnt mir helfen :D
EDIT: hat sich erledigt -.- war zu blöd :D
-
Leute vieleicht könnt ihr mir helfen bei simpel qeuslog wenn ich eine beschrebung schreibe also ändere läuft der script net alles wunder paar titel und so aber ändere ich die bschreibung bums script läuft nicht