Древо навыков (Skill Tree System) v 2.02
Версия: 2.02 Финальная Версия
Демо: Версия 2.02
Скрипт:
Древо навыков 2.02
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- strelokhalfer
-
- Не в сети
- Живу я здесь
-
- Знатный грамотей
- Сообщений: 1640
- Спасибо получено: 1080
Списком?
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Сообщений: 1247
- Спасибо получено: 412
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- peter8031983
-
- Не в сети
- Давно я тут
-
- Добро-вещь относительная.
А вообще да.
Скрипты Сабзиро печальны в плане графической части.
А без графона вряд ли будут пользоваться популярностью.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- strelokhalfer
-
- Не в сети
- Живу я здесь
-
- Знатный грамотей
- Сообщений: 1640
- Спасибо получено: 1080
Ничего, разовьёт ещё.
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Subzeroy пишет: Система изучения навыков в виде древа.
Версия: 0.1 alpha
В версии 0.1 alpha нет, как такового, древа навыков. Здесь лишь присутствует изучение навыков за уровни персонажа.
Особенности:
За каждый уровень персонаж получает очки навыков, на которые он может изучить их (количество очков навыков настраивается) Сами по себе навыки за уровни не даются, как в обычной версии мейкера Краткая информация о персонаже в окне (сворачивается и разворачивается кнопкой D) Переключение персонажей кнопками (Q и W - страница вверх/вниз)
Скриншоты:
ВНИМАНИЕ: Спойлер!
Вложение не найдено
Скрипт:
ВНИМАНИЕ: Спойлер!Code:=begin ############################################################################### # # # Дерево навыков # # # ############################################################################### Автор: Денис Кузнецов (http://vk.com/id8137201) Версия: 0.1 alpha Релиз от: 24.06.15 Инструкция: show_skill_tree - вызовите скрипт, чтобы выучить навыки =end module Skill_Tree_System_Settings # Количество очков, которые даются за новый уровень NEW_LEVEL_SKILL_POINT = 1 # ниже не трогать :) end # module Skill_Tree_System class Game_Skill_Tree < Scene_Base def start super @player_window_minimize = true # статус окна о персонаже (свернуто) @actor = $game_party.menu_actor # текущий персонаж create_all_window end def create_all_window create_skill_point_window create_player_window create_skill_tree_window end def create_skill_point_window @create_skill_point_window = Skill_Point_Window.new end def create_player_window @create_player_window = Skill_Tree_Player_Window.new end def create_skill_tree_window @create_skill_tree_window = Skill_Tree_Command_Window.new @create_skill_tree_window.set_handler(:cancel, method(:return_scene)) @create_skill_tree_window.set_handler(:pagedown, method(:next_actor)) @create_skill_tree_window.set_handler(:pageup, method(:prev_actor)) $data_skills.each do |index| next if index.nil? next if index.id < 3 @create_skill_tree_window.set_handler(index.name.to_sym, method(:learn_skill)) end end def learn_skill index = @create_skill_tree_window.index if @actor.skill_point > 0 @actor.learn_skill(index + 3) # + 3 потому что (0 - не существует, 1 - атака, 2 - защита) @actor.skill_point -= 1 end @create_skill_point_window.draw_info @create_skill_tree_window.refresh @create_skill_tree_window.activate @create_skill_tree_window.select(index) end def next_actor @actor = $game_party.menu_actor_next @create_skill_tree_window.activate actor_change end def prev_actor @actor = $game_party.menu_actor_prev @create_skill_tree_window.activate actor_change end def actor_change @create_skill_point_window.actor = @actor @create_player_window.actor = @actor @create_skill_tree_window.actor = @actor end def play_animation if @player_window_minimize # если сворачиваем окно персонажа return if -@create_player_window.y == @create_player_window.height - 48 if -@create_player_window.y < @create_player_window.height - 48 @create_player_window.y -= 8 end @create_player_window.y = -(@create_player_window.height - 48) if -@create_player_window.y > @create_player_window.height - 48 else # разворачиваем окно персонажа return if @create_player_window.y == 0 if @create_player_window.y < 0 @create_player_window.y += 8 end @create_player_window.y = 0 if @create_player_window.y > 0 end end def update super if Input.trigger?(:Z) @player_window_minimize = !@player_window_minimize @create_player_window.minimized = @player_window_minimize end play_animation end end # class Game_Skill_Tree < Scene_Base class Skill_Point_Window < Window_Base def initialize super(0, 0, 192, 48) @actor = $game_party.menu_actor draw_info end def actor=(actor) @actor = actor draw_info end def draw_info contents.clear draw_text(0, 0, contents_width, contents_height, "Свободные очки: " + @actor.skill_point.to_s, 1) end def update end end # class Skill_Point_Window < Window_Base class Skill_Tree_Player_Window < Window_Base def initialize super(192, -(144 - 48), Graphics.width - 192, 144) # y - чтобы сразу было свернуто self.z = 1000 # поверх всех окон @actor = $game_party.menu_actor @minimized = true # свернуто draw_all_info end def actor=(actor) @actor = actor draw_all_info end def minimized=(minimized) @minimized = minimized draw_all_info end def draw_all_info contents.clear if @minimized draw_text(0, 48, contents_width, contents_height, "Информация о персонаже", 1) else draw_actor_face(@actor, 0, 0) draw_actor_simple_status(@actor, 108, line_height / 2) end end # отличается от Window_Base, что class, hp, mp имеют +88, а не +120 def draw_actor_simple_status(actor, x, y) draw_actor_name(actor, x, y) draw_actor_level(actor, x, y + line_height * 1) draw_actor_icons(actor, x, y + line_height * 2) draw_actor_class(actor, x + 88, y) draw_actor_hp(actor, x + 88, y + line_height * 1) draw_actor_mp(actor, x + 88, y + line_height * 2) end # отличается от Window_Base, что text имеет +40, а не +32 def draw_actor_level(actor, x, y) change_color(system_color) draw_text(x, y, 32, line_height, Vocab::level_a) change_color(normal_color) draw_text(x + 40, y, 24, line_height, actor.level, 2) end def update end end # class Skill_Tree_Player_Window < Window_Base class Skill_Tree_Command_Window < Window_Command def initialize @actor = $game_party.menu_actor super(0, 48) end def window_width Graphics.width end def window_height Graphics.height - 48 end def actor=(actor) @actor = actor refresh end def make_command_list $data_skills.each do |index| next if index.nil? next if index.id < 3 # не включать навыки атаки и защиты name = $data_system.skill_types[index.stype_id] if @actor.skill_learn?(index) add_command(index.name + " (" + name + ") (Изучено)" , index.name.to_sym, false) else add_command(index.name + " (" + name + ")" , index.name.to_sym, true) end end end end # class Skill_Tree_Command_Window < Window_Command class Game_Actor < Game_Battler attr_accessor :skill_point alias denis_kyznetsov_skill_tree_system_game_actor_setup setup def setup(actor_id) denis_kyznetsov_skill_tree_system_game_actor_setup(actor_id) @skill_point = @level - 1 end def level_up @level += 1 @skill_point += Skill_Tree_System_Settings::NEW_LEVEL_SKILL_POINT end end # class Game_Actor < Game_Battler class Game_Interpreter def show_skill_tree SceneManager.call(Game_Skill_Tree) end end # class Game_Interpreter
Принимаются разные пожелания и советы
Денис, очень нужный скрипт, молодец. У меня есть один вопрос, можно ли изобразить в окне кол-во очков для изучения навыка?
(см. пример):
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Что нового:
Скриншоты
Скрипт
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
-Навыки, которые можно учить будут привязаны к классу или к актору? И при смене класса у персонажа сменится набор навыков для изучения? И что будет с уже изученными навыками?
-Планируется ли графическая составляющая и визуальное отображение умений?
-Планируется ли несколько деревьев скилов для одного класса, или хотя бы возможность прокручивать экран вниз (чтобы не умещать все на одном экране)?
Если это будет так, то будет готов просто идеальный скрипт для меня, который я с удовольствием буду использовать.
В любом случае буду с интересом наблюдат за развитием скрипта и его функциями.
Удачи!
"Люди, Ангелы, Демоны... Есть ли между ними разница? Я не согласен с теми, кто утверждает, что Демоны - это абсолютное зло. Бывают Люди, гораздо хуже Демонов.И бывают Демоны куда более великодушные, чем Ангелы. Важно не то, кто ты, а то, кем ты хочешь быть..."
- Найн, Высший Демон -
Dark Arts - The Wings of Angel
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Что нового:
Если у класса персонажа указан(ы) конкретный тип навыков, которые он может изучить, то навыки, не соответствующие этому типу, будут исключены из списка (если у навыка указан тип "Нет", то он будет включен в список - навыки, которые могут изучать все классы).
Если у класса персонажа не указан(ы) типы навыков, то он может изучать любые типы навыков.
Чтобы добавить какому-то навыку зависимость от определенного класса, то надо прописать в его заметках следующее
skill_tree_skill_class = N
N - индекс класса в базе данных
Если у навыка нет определенного класса, то этот навык смогут учить все персонажи.
Что планируется
- Фильтрация навыков, если ведется база данных с использованием заглавий (---Магия для Воина--- и т.п.)
- Отображение навыков по категориям (Все (все вместе), Класс (для класса персонажа), остальное (без класса)
- Подправить окно информации о навыках
- Мультиклассовые навыки
- Зависимости навыков от N других навыков
- Графическое представление навыков в виде древа
Внимание! На данный момент не предусмотрен контроль зависимостей навыков (если вы указали навыку 3, что нужен навык 4, а навыку 4, что нужен 3, то вы не сможете выучить эти навыки)
Скрипт:
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Персонаж будет оставаться тем же, просто будет возможность учить новые навыки с сохранением старых (или их улучшением).
Проблема с тем скриптом, что я планировал использовать, заключается в том, что там все навыки, которые можно учить, привязаны к персонажу и не зависят от класса. И мне пришлось бы заменять одного персонажа на другого, такого же, но с другими навыками. А это создало бы проблемы.
"Люди, Ангелы, Демоны... Есть ли между ними разница? Я не согласен с теми, кто утверждает, что Демоны - это абсолютное зло. Бывают Люди, гораздо хуже Демонов.И бывают Демоны куда более великодушные, чем Ангелы. Важно не то, кто ты, а то, кем ты хочешь быть..."
- Найн, Высший Демон -
Dark Arts - The Wings of Angel
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Либо сделать так: сначала прописать навыкам мультиклассовость, а после смены класса, вашим продвинутым классам прописать только этот единственный класс. Таким образом, новый класс будет включать старые и новые навыки
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- strelokhalfer
-
- Не в сети
- Живу я здесь
-
- Знатный грамотей
- Сообщений: 1640
- Спасибо получено: 1080
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Кстати, если использовать этот скрипт, то добавлять новые навыки эвентами станет нельзя, так? И нужно будет делать это через call script? То же и с удалением навыков из памяти персонажа?
"Люди, Ангелы, Демоны... Есть ли между ними разница? Я не согласен с теми, кто утверждает, что Демоны - это абсолютное зло. Бывают Люди, гораздо хуже Демонов.И бывают Демоны куда более великодушные, чем Ангелы. Важно не то, кто ты, а то, кем ты хочешь быть..."
- Найн, Высший Демон -
Dark Arts - The Wings of Angel
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Сообщений: 1247
- Спасибо получено: 412
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
