Войти на сайт
×
ТЕМА: (XP) ARK Quest Book
(XP) ARK Quest Book 14 года 6 мес. назад #32242
|
Доброго всем времени суток. Хочу представить один из моих пока еще не публиковавшихся скриптов, а точнее скрипт создающий книгу заданий.
Название: ARK Quest Book Автор: Arykray Версия: 1.0.2 от 09.05.10 (Вполне работаспособная, просто не реализованы все задумки.) Дата: 12.09.09 Скриншоты: Демо: Выложу чуть позже! Ну что ж приступим. Первый скрипт Module_Quest - это в своем роде база всех заданий. ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] module QUEST
#--------------------------------------------------------------------------
# Используется жирный шрифт Verdana размером 14 пиксселей
# В одной строке описания должно быть не более 76 символов.
# Переход на следующую строку в редакторе переносит текст на новую строку в игре.
#--------------------------------------------------------------------------
Quest = (1..50).map{Array.new(5)}
Quest[0] = [0, "Руда для кузнеца", "Кузнец Гред", "Кузница",
"Кузнец попросил вас принести ему немного руды. Сам он недавно сильно
повредил ногу и опасается, что у него может просто не хватить сил.
Руду можно найти в шахте недалеко от деревни.",
"Принести три куска руды"]
Quest[1] = [2, "Доспехи новобранцам", "Капитан стражи", "Сторожевая башня",
"Кузнец уже давно должен был изготовить новые доспехи для новобранцев.
но от него не поступает никаких вестей. Капитан стражи попросил меня
капитан стражи попросил меня поговорить с кузнецом, и при необходимости
помочь.",
"Поговорите с кузнецом"]
Quest[2] = [3,"Помощь бандиту","Воришка Лю","Укрытие вора",
"Воришка Лю попросил вас выкрасть из офиса шерифа ордер на его арест
В замен он обещал поделится половиной награбленного состояния",
"Выкрасть ордер на арест"]
Quest[3] = [2,"Арест","Шериф","Офис",
"Шериф попросил вас оказать ему помощь в аресте воришки Лю
которы скрывается где-то по близости.",
"Прикрыть шерифа"]
Quest[4] = [0,"Имя","Заказчик","Локация","Описание","Требования"]
end Скрипт Scene_Quest - Объеденяет в себе 4 класса: Window_QuestConmmand, Window_Quest, Window_QuestHelp и Scene_Quest ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] #==============================================================================
# :: Window_QuestCommand
#==============================================================================
class Window_QuestCommand < Window_Selectable
#--------------------------------------------------------------------------
# : Инициализация Объектов
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
@item_max = 4
@column_max = 4
s1 = "Активные"
s2 = "Выполненые"
s3 = "Проваленные"
s4 = "Все"
@commands = [s1, s2, s3, s4]
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# : Обновление
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
# : Рисование Объектов
#--------------------------------------------------------------------------
def draw_item(index)
self.contents.draw_text(16, 0, 128, 32, @commands[0])
self.contents.draw_text(176, 0, 128, 32, @commands[1])
self.contents.draw_text(336, 0, 128, 32, @commands[2])
self.contents.draw_text(496, 0, 128, 32, @commands[3])
end
end
#==============================================================================
# :: Window_Quest
#==============================================================================
class Window_Quest < Window_Selectable
#--------------------------------------------------------------------------
# : Инициализация Объектов
#--------------------------------------------------------------------------
def initialize
super(0, 64, 640, 208)
refresh(4)
self.index = 0
end
#--------------------------------------------------------------------------
# : Получение Заданий
#--------------------------------------------------------------------------
def quest
return @data[self.index]
end
#--------------------------------------------------------------------------
# : Обновление
# qst : число от 0 до 4
#--------------------------------------------------------------------------
def refresh(qst)
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
case qst
when 0
for i in 0...$quest.size
if $quest[i].include?(1)
$quest[i][6] = "Активно"
@data.push($quest[i])
self.index = 0
end
end
when 1
for i in 0...$quest.size
if $quest[i].include?(2)
$quest[i][6] = "Выполнено"
@data.push($quest[i])
self.index = 0
end
end
when 2
for i in 0...$quest.size
if $quest[i].include?(3)
$quest[i][6] = "Провалено"
@data.push($quest[i])
self.index = 0
end
end
when 3
for i in 0...$quest.size
if $quest[i].include?(1)
$quest[i][6] = "Активно"
@data.push($quest[i])
self.index = 0
end
if $quest[i].include?(2)
$quest[i][6] = "Выполнено"
@data.push($quest[i])
self.index = 0
end
if $quest[i].include?(3)
$quest[i][6] = "Провалено"
@data.push($quest[i])
self.index = 0
end
end
when 4
self.index = 0
end
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# : Рисование элемента
#--------------------------------------------------------------------------
def draw_item(index)
quest = @data[index]
y = 4 + 32 * index
self.contents.font.color = normal_color
self.contents.draw_text(4, y, 640, 32, quest[1].to_s)
end
#--------------------------------------------------------------------------
# : Обновление Текста Помощи
#--------------------------------------------------------------------------
def update_help
@help_window.set_customer(self.quest == nil ? "" : self.quest[2].to_s)
@help_window.set_location(self.quest == nil ? "" : self.quest[3].to_s)
@help_window.set_description(self.quest == nil ? "" : self.quest[4].to_s)
@help_window.set_requirement(self.quest == nil ? "" : self.quest[5].to_s)
@help_window.set_status(self.quest == nil ? "" : self.quest[6].to_s)
end
end
#==============================================================================
# :: Window_QuestHelp
#==============================================================================
class Window_QuestHelp < Window_Base
#--------------------------------------------------------------------------
# : Инициализация Объектов
#--------------------------------------------------------------------------
def initialize
super(0, 272, 640, 208)
self.contents = Bitmap.new(width - 32, height - 32)
end
#--------------------------------------------------------------------------
# : Выводить Заказчика
#--------------------------------------------------------------------------
def set_customer(text)
self.contents.clear
self.contents.font.color = normal_color
if text != ""
self.contents.draw_text(0, 0, 100, 32, "Заказчик")
self.contents.draw_text(100, 0, 230, 32, text)
end
self.visible = true
end
#--------------------------------------------------------------------------
# : Выводить Локацию
#--------------------------------------------------------------------------
def set_location(text)
self.contents.font.color = normal_color
if text != ""
self.contents.draw_text(320, 0, 100, 32, "Локация")
self.contents.draw_text(420, 0, 220, 32, text)
end
self.visible = true
end
#--------------------------------------------------------------------------
# : Выводить Описание
#--------------------------------------------------------------------------
def set_description(text)
if text != ""
info = text.split(/\n/)
for i in 0...info.size
text = info[i].dup
self.contents.font.color = normal_color
self.contents.draw_text(0, 32 + i * 16 , 640, 32, text)
end
end
self.visible = true
end
#--------------------------------------------------------------------------
# : Выводить требования
#--------------------------------------------------------------------------
def set_requirement(text)
self.contents.font.color = normal_color
if text != ""
self.contents.draw_text(0, 144, 100, 32, "Требование")
self.contents.draw_text(100, 144, 540, 32, text)
end
self.visible = true
end
#--------------------------------------------------------------------------
# : Выводить Статус
#--------------------------------------------------------------------------
def set_status(text)
if text != ""
self.contents.draw_text(320, 144, 100, 32, "Статус")
if text == "Активно"
self.contents.draw_text(420, 144, 540, 32, text)
elsif text == "Выполнено"
self.contents.draw_text(420, 144, 540, 32, text)
elsif text == "Провалено"
self.contents.draw_text(420, 144, 540, 32, text)
end
end
self.visible = true
end
def draw_error(text)
self.contents.clear
self.contents.font.color = normal_color
self.contents.draw_text(0, 0, 640, 32, text)
end
end
#==============================================================================
# : Scene_Quest
#==============================================================================
class Scene_Quest
#--------------------------------------------------------------------------
# : Основаная обработка
#--------------------------------------------------------------------------
def main
@help_window = Window_QuestHelp.new
@command_window = Window_QuestCommand.new
@quest_window = Window_Quest.new
@quest_window.help_window = @help_window
@help_window.contents.clear
@command_window.active = true
@quest_window.active = false
@quest_window.index = -1
@spriteset = Spriteset_Map.new
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@command_window.dispose
@quest_window.dispose
@help_window.dispose
@spriteset.dispose
end
#--------------------------------------------------------------------------
# : Обновление Кадров
#--------------------------------------------------------------------------
def update
@command_window.update
@quest_window.update
@help_window.update
if @command_window.active
update_command
return
end
if @quest_window.active
update_quest
return
end
end
#--------------------------------------------------------------------------
# : Обновление Комманд
#--------------------------------------------------------------------------
def update_command
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(4)
return
end
if Input.trigger?(Input::C)
@quest_window.active = true
@command_window.active = false
case @command_window.index
when 0
@quest_window.refresh(0)
if @quest_window.index != 0
$game_system.se_play($data_system.buzzer_se)
update_help("У вас нет Активных задании!")
@quest_window.active = false
@command_window.active = true
else
$game_system.se_play($data_system.decision_se)
end
when 1
@quest_window.refresh(1)
if @quest_window.index != 0
$game_system.se_play($data_system.buzzer_se)
update_help("У вас нет Выполненых задании!")
@quest_window.active = false
@command_window.active = true
else
$game_system.se_play($data_system.decision_se)
end
when 2
@quest_window.refresh(2)
if @quest_window.index != 0
$game_system.se_play($data_system.buzzer_se)
update_help("У вас нет Проваленных задании!")
@quest_window.active = false
@command_window.active = true
else
$game_system.se_play($data_system.decision_se)
end
when 3
@quest_window.refresh(3)
if @quest_window.index != 0
$game_system.se_play($data_system.buzzer_se)
update_help("У вас нет ни одного задания!")
@quest_window.active = false
@command_window.active = true
else
$game_system.se_play($data_system.decision_se)
end
end
return
end
end
#--------------------------------------------------------------------------
# : Обновление Заданий
#--------------------------------------------------------------------------
def update_quest
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@quest_window.refresh(4)
@help_window.contents.clear
@quest_window.help_window.contents.clear
@quest_window.active = false
@quest_window.index = -1
@command_window.active = true
end
end
#--------------------------------------------------------------------------
# : Обновление Текста Помощи
#--------------------------------------------------------------------------
def update_help(text)
@help_window.draw_error(text)
end
end Скрипт Window_Add-on включает в себя дополнение некоторых базовых окон. В скрипт вошли классы: Window_Gold, Window_PlayTime, Game_Map, Window_Location ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] #==============================================================================
# :: Window_Gold
#==============================================================================
class Window_Gold < Window_Base
#--------------------------------------------------------------------------
def initialize
super(0, 0, 160, 72)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 120, 24, "Золото", 0)
self.contents.font.color = normal_color
self.contents.font.bold = true
self.contents.draw_text(4, 16, 120, 24, $game_party.gold.to_s, 2)
end
end
#==============================================================================
# :: Window_PlayTime
#==============================================================================
class Window_PlayTime < Window_Base
#--------------------------------------------------------------------------
def initialize
super(0, 0, 160, 80)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 120, 32, "Play Time")
@total_sec = Graphics.frame_count / Graphics.frame_rate
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.font.color = normal_color
self.contents.draw_text(4, 32, 120, 16, text, 2)
end
#--------------------------------------------------------------------------
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end
#==============================================================================
# :: Game_Map
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
attr_reader :map_id
#--------------------------------------------------------------------------
def map_name
$map_name = load_data("Data/MapInfos.rxdata")
$map_name[@map_id].name
end
end
#==============================================================================
# :: Window_Location
#==============================================================================
class Window_Location < Window_Base
#--------------------------------------------------------------------------
def initialize
super(0, 0, 160, 72)
self.contents = Bitmap.new(width - 32, height - 32)
if $locations == 0
self.visible = false
end
refresh
end
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 100, 24, "Локация")
self.contents.font.color = normal_color
self.contents.font.bold = true
self.contents.draw_text(4, 16, 120, 24, $game_map.map_name.to_s, 2)
end
#--------------------------------------------------------------------------
end Скрипт Scene_Add-on включает в себя дополнение некоторых базовых сцен. В скрипт вошли классы: Scene_Title, Scene_Menu, Scene_Save, Scene_Load ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] #==============================================================================
# :: Scene_Title
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
# : Основаная обработка
#--------------------------------------------------------------------------
def main
if $BTEST
battle_test
return
end
$data_actors = load_data("Data/Actors.rxdata")
$data_classes = load_data("Data/Classes.rxdata")
$data_skills = load_data("Data/Skills.rxdata")
$data_items = load_data("Data/Items.rxdata")
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
$data_enemies = load_data("Data/Enemies.rxdata")
$data_troops = load_data("Data/Troops.rxdata")
$data_states = load_data("Data/States.rxdata")
$data_animations = load_data("Data/Animations.rxdata")
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
$quest = QUEST::Quest
$game_system = Game_System.new
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.title($data_system.title_name)
s1 = "Новая игра"
s2 = "Загрузить"
s3 = "Выйти"
@command_window = Window_Command.new(192, [s1, s2, s3])
@command_window.back_opacity = 160
@command_window.x = 320 - @command_window.width / 2
@command_window.y = 288
@continue_enabled = false
for i in 0..3
if FileTest.exist?("Save#{i+1}.rxdata")
@continue_enabled = true
end
end
if @continue_enabled
@command_window.index = 1
else
@command_window.disable_item(1)
end
$game_system.bgm_play($data_system.title_bgm)
Audio.me_stop
Audio.bgs_stop
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@command_window.dispose
@sprite.bitmap.dispose
@sprite.dispose
end
#--------------------------------------------------------------------------
# : Обновление Кадров
#--------------------------------------------------------------------------
def update
@command_window.update
if Input.trigger?(Input::C)
case @command_window.index
when 0
command_new_game
when 1
command_continue
when 2
command_shutdown
end
end
end
end
#==============================================================================
# :: Scene_Menu
#==============================================================================
class Scene_Menu
#--------------------------------------------------------------------------
# : Инициализация объектов
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# : Основаная обработка
#--------------------------------------------------------------------------
def main
s1 = "Инвентарь"
s2 = "Навыки"
s3 = "Экипировка"
s4 = "Статус"
s5 = "Задания"
s6 = "Сохраниения"
s7 = "Покинуть игру"
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
@command_window.index = @menu_index
if $game_party.actors.size == 0
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
@command_window.disable_item(3)
end
if $game_system.save_disabled
@command_window.disable_item(4)
end
@playtime_window = Window_PlayTime.new
@playtime_window.x = 0
@playtime_window.y = 256
@steps_window = Window_Location.new
@steps_window.x = 0
@steps_window.y = 336
@gold_window = Window_Gold.new
@gold_window.x = 0
@gold_window.y = 408
@status_window = Window_MenuStatus.new
@status_window.x = 160
@status_window.y = 0
@spriteset = Spriteset_Map.new
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@command_window.dispose
@playtime_window.dispose
@steps_window.dispose
@gold_window.dispose
@status_window.dispose
@spriteset.dispose
end
#--------------------------------------------------------------------------
# : Обновление Кадров
#--------------------------------------------------------------------------
def update
@command_window.update
@playtime_window.update
@steps_window.update
@gold_window.update
@status_window.update
if @command_window.active
update_command
return
end
if @status_window.active
update_status
return
end
end
#--------------------------------------------------------------------------
# : Обновление Кадров (когда окно комманд активно)
#--------------------------------------------------------------------------
def update_command
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
if Input.trigger?(Input::C)
if $game_party.actors.size == 0 and @command_window.index < 4
$game_system.se_play($data_system.buzzer_se)
return
end
case @command_window.index
when 0
$game_system.se_play($data_system.decision_se)
$scene = Scene_Item.new
when 1
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 2
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 3
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 4
$game_system.se_play($data_system.decision_se)
$scene = Scene_Quest.new
when 5
if $game_system.save_disabled
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
$scene = Scene_Save.new
when 6
$game_system.se_play($data_system.decision_se)
$scene = Scene_End.new
end
return
end
end
end
#==============================================================================
# :: Scene_Save
#==============================================================================
class Scene_Save < Scene_File
#--------------------------------------------------------------------------
# : Запись данных сохранения
#--------------------------------------------------------------------------
def write_save_data(file)
characters = []
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
characters.push([actor.character_name, actor.character_hue])
end
Marshal.dump(characters, file)
Marshal.dump(Graphics.frame_count, file)
$game_system.save_count += 1
$game_system.magic_number = $data_system.magic_number
Marshal.dump($game_system, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_screen, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
Marshal.dump($quest, file)
end
end
#==============================================================================
# :: Scene_Load
#==============================================================================
class Scene_Load < Scene_File
#--------------------------------------------------------------------------
# : Чтение данных сохранения
#--------------------------------------------------------------------------
def read_save_data(file)
characters = Marshal.load(file)
Graphics.frame_count = Marshal.load(file)
$game_system = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_screen = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
$quest = Marshal.load(file)
if $game_system.magic_number != $data_system.magic_number
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
$game_party.refresh
end
end И последний скрипт Font - содержит рекомендуемые настройки шрифта: ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] Font.default_size = 14
Font.default_name = "Verdana"
Font.default_bold = true Синтаксис задания: Quest = [status, name, customer, location, description, requirement] где i - порядковый номер задания. status - управляющая переменная которая может принимать числовые значения: 0 - задание не получено; 1 - задание активно; 2 - задание выполнено; 3 - задание провалено, 4 - отключает отображение задания. name - Название задания. customer - Заказчик, существо которое дало задание. location - Локация, место в котором было получено задание. description - Описание задания. requirement - Требования для выполнения. Управления скриптами происходит следующим образом: В ивентах на последней вкладке выбираем Script в открывшемся окне пишем комманды на подобие этой: $quest[0][0] = 1 - это означает, что ключу status задания с идентификатором 0 будет присвоено значение 1 (активно). $quest[1][5] = "Помогите кузнецу" - изменит требование второго задания с "Поговорите с кузнецом" на "Помогите кузнецу". Чтобы локация задания получила необходимое значение можно испольховать следующую конструкцию: $quest[0][3]=$game_map.map_name.to_s - это означает что локация нулевого задания примет имя текущей карты. |
Последнее редактирование: 14 года 6 мес. назад от Arykray.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: caveman
|
(XP) ARK Quest Book 14 года 6 мес. назад #32247
|
На первый взгляд выглядит не плохо, но я обязательно найду баги.
1. Константы? нельзя создавать задания динамически? 2. array[j] как-то не привычно, array[i,j] - намного привычней и читабельний offtop в опере не удобно |
Последнее редактирование: 14 года 6 мес. назад от dark32.
Администратор запретил публиковать записи гостям.
|
(XP) ARK Quest Book 14 года 6 мес. назад #32248
|
Если я правильно понял... задания можно создавать на лету в событиях добавляем код $quest[n] = [1, "Название задания", "Заказчик", "Локация", "Описание", "Требования"]
где n - номер задания (если задание с таким номером уже существует оно будет заменено). 2. array[j] как-то не привычно, array[i,j] - намного привычней и читабельний это многомерный массив где i номер эллемента массива заданий, j номер эллемента массива описания задания. Попробуй к примеру в каком либо событии вставить код print $quest[2] |
Администратор запретил публиковать записи гостям.
|
(XP) ARK Quest Book 14 года 6 мес. назад #32249
|
1.ясно. ты динамически их изменяешь, но не создаёшь
Например я хочу создать задание, не зная номера последнего задания, как мне это сделать. (не обязательные задания, которые могут браться в любой момент) 2. привык на многих других языках видеть array[i,j,k, и т.д.] для многомерных массивов. Это дело вкуса. Предлагаю хранить данные заданий в текстовом файле, вне скрипта. Так проще будет их редактировать. И предлагаю переименовать глобалку $quest в $game_quest, просто для красоты, а то $game_system, game_switches, game_variables, $game_self_switches и вдруг $quest Радует, не используешь Хеш. |
Последнее редактирование: 14 года 6 мес. назад от dark32.
Администратор запретил публиковать записи гостям.
|
(XP) ARK Quest Book 14 года 6 мес. назад #32250
|
Я уже думал о том, чтобы хранить задания в файле *.rxdata но туда возможно поместить только данные введенные непосредственно в модуль заданий. Созданные на лету туда не сохраняются(((
Я похоже не дописал мысль... Если я правильно понял... задания можно создавать на лету в событиях добавляем код $quest[n] = [1, "Название задания", "Заказчик", "Локация", "Описание", "Требования"] где n - номер задания (если задание с таким номером уже существует оно будет заменено). А если такого номера заданий нет то будет создано новое задание. Проблема в том, что если игрок, не наткнется на событие задание никогда не создастся. |
Последнее редактирование: 14 года 6 мес. назад от Arykray.
Администратор запретил публиковать записи гостям.
|
(XP) ARK Quest Book 14 года 6 мес. назад #32251
|
Вот, и в списке заданий будет пустое место на его место. Или я ошибаюсь?
Я же предлагаю создать новый тип данных(Class), который будет состоять из нужных тебе строк и динамически они (строки) будут изменятся, после каждого изменения сохранять в файл, при загрузки - загружать из файла. Можно не создавать новый файk, а пихать всё в сохранёнку. Class в отличаи от Module может менятся. |
Последнее редактирование: 14 года 6 мес. назад от dark32.
Администратор запретил публиковать записи гостям.
|
(XP) ARK Quest Book 10 года 10 мес. назад #66640
|
Скрипт работает!!!
|
Администратор запретил публиковать записи гостям.
|
(XP) ARK Quest Book 10 года 10 мес. назад #66998
|
Благодарочка.
Пробежав по нету, сходу ничего приличней для XP не нашел, подкручу под себя немного, а автора, конечно же впишу в титрах или как еще. |
Администратор запретил публиковать записи гостям.
|
Модераторы: NeKotZima
Время создания страницы: 0.450 секунд