Eokati (VX ACE)
JackCL пишет: Немного поиграл, впечатления и спойлеры под катом.
ВНИМАНИЕ: Спойлер!
- "широкоэкранный" мейкер - приятное разнообразие;
- глазастые спрайты Kaduki конечно милейшие, жаль их используют в проектах куда меньше, чем они того заслуживают, хорошо, что здесь они есть;
- карты милые за счет мягкого освещения придающего очень симпатичные оттенки привычным тайлам, но по части маппинга мне показалось пустоватые и местами небрежные: деревья растущие на скалах, например;
- зачем Томи по(д)садили в камеру к его бывшему капитану, когда рядом есть свободные?
- диалоги очень смешные - особенно про сис... "Гваааааах!"многочисленные ошибки превращают речь персонажей в забавный акцент, так что я смеялся, боюсь, даже там где автор рассчитывал на пафос, ну там про то как какой-то страшный чувак сжигал деревни, чтобы найти вора;
- мне кажется получилась одна из самых уморительных пародий на (темное?) героическое фэнтези, в которые я играл в последнее время;
- карту мира надо конечно переделать;
- начальник сверхсекретной тюрма в три этажа вниз (таких в мире больше нет!) почему-то сделан обычным мейкеровским чаром - нехорошо так;
- с диалоговыми окнами ерунда какая-то - то над головами персонажей зачем-то, то текст отформатирован так, что едва доходит до середины окна, то вылазит за его правую границу...;
- использовать чаров Kaduki в боевке с баттлерами - это практически преступление против хорошего вкуса;
- некоторое время никак не мог понять как зажечь факел, оказалось, подойти к телу охранника нужно обязательно снизу, иначе капитан не берет палку;
- в комнате с пентаграммами я окончательно застрял - две любые пентаграммы открывают первый замок, но никакие другие не открывают второй; я ненавижу подобные "головоломки" в играх, особенно когда не видно ни одной подсказки;
- на всякий случай попытался сохраниться в комнате с пентаграммами на чем игра зависла сама, подвесила мне комп и после примерно трехминутного размышления (я уже отчаялся нажимать всякие контрл+альт_дел) захлопнулась так и не сохранившись, но хоть перезагружаться не пришлось и на том спасибо.
Как итог: очень забавная пародийная комедия, к сожалению, на данном этапе сделанная очень неряшливо. Кроме того мои искреннее лично огорчение вызывает упор на диалоги/сюжет/новелла при практически полном отсутствии rpg/квест. Дайте игроку свободу действий, пожалуйста, не надо все время показывать ему кино, перемежая сценки номинальной передачей управления игроку, которая осуществляется только для того чтобы включить следующую сценку.
-спасибо. долго искал как сделать.
-с рисованием у меня плохо, а ртп фейсы мне не понраву.
-мапинг исправлю.
-а они будут заняты, потом (к следующей демке
-слаб я в русском, но буду исправляться.
-а она готова только процентов на 5 (я собираюсь ее нарисовать вручную, это не персов рисовать, как-то справлюсь)
-кадуки не нарисовал его, пришлось самому делать (к выходу новой демки сделаю лучше)
-здесь проблема со скриптом... ищу как исправить.
-головоломка
-повис комп из-за игры? черт, прости. У других та же проблема после сохранения?
Она и правда неряшливая (что может сделать тот, кто в мире мейкера всего 3 месяца).
Буду исправляться, большое спасибо.
Делай так, как подсказывает сердце, а об остальном пускай заботятся другие.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
кстати да, если сделать из этого пародию, то может забавно получиться
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Dethrone пишет: -головоломка
здесь нужно нажать на 2 правильные пентаграми
Так неочевидно вообще, подсказок нет, тупой перебор бесит, да и он неочевиден, ведь какая-то одна пентаграмма замок не открывает, а открывает любая пара, поэтому я и искал вторую пару/последовательность на второй замок.
Не знаю на кого здесь рассчитано и где логика.
Dethrone пишет: -повис комп из-за игры? черт, прости. У других та же проблема после сохранения?
Возможно это был единичный глюк (у мейкера бывают глюки), я проверю получится ли повторить.
yuryol пишет: вспоминается двухчасовой сериал "пуля в рожу", в котором пафосные фразы были произнесены с немецким акцентом, что добавляло дополнительную порцию юмора.
Тут даже получается не столько акцент сколько колоритный местный диалект/говорок. Если над ним поработать как следует исправив орфографические ошибки, но оставив методичное искаженное употребление ряда слов и некоторые придуманные синонимы, то выйдет очень ярко.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
JackCL пишет:
Dethrone пишет: -головоломка
здесь нужно нажать на 2 правильные пентаграми
Так неочевидно вообще, подсказок нет, тупой перебор бесит, да и он неочевиден, ведь какая-то одна пентаграмма замок не открывает, а открывает любая пара, поэтому я и искал вторую пару/последовательность на второй замок.
Не знаю на кого здесь рассчитано и где логика.
Dethrone пишет: -повис комп из-за игры? черт, прости. У других та же проблема после сохранения?
Возможно это был единичный глюк (у мейкера бывают глюки), я проверю получится ли повторить.
yuryol пишет: вспоминается двухчасовой сериал "пуля в рожу", в котором пафосные фразы были произнесены с немецким акцентом, что добавляло дополнительную порцию юмора.
Тут даже получается не столько акцент сколько колоритный местный диалект/говорок. Если над ним поработать как следует исправив орфографические ошибки, но оставив методичное искаженное употребление ряда слов и некоторые придуманные синонимы, то выйдет очень ярко.
-замок любая пара не откроет (только определённая), а смысл подсказок не вижу(головоломка не тяжелая вовсе).
-пожалуйста.
-не, буду исправляться и выведу игру с "пародийной фентези" на "фентези".
Делай так, как подсказывает сердце, а об остальном пускай заботятся другие.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Dethrone пишет: -замок любая пара не откроет (только определённая), а смысл подсказок не вижу(головоломка не тяжелая вовсе).
Я еще раз объясню все-таки, может ты поймешь в чем ошибка:
1. Любая пентаграмма которая нажимается первой не производит никакого эффекта.
2. Любая пентаграмма которая нажимается второй (при любой включенной первой) открывает первый замок.
3. Вывод игрока: если первый замок открывается парой пентаграмм, то второй замок также должен открываться парой пентаграмм, итого надо задействовать четыре пентаграммы.
4. Нет никакой возможности догадаться логически что ОБА замка открываются ОДНОВРЕМЕННО определенной парой пентаграмм.
Если ты не видишь здесь проблемы, то дальше объяснять не вижу смысла.
Переборной (но не более интересной) эта загадка была бы если бы первый замок открывался первой нужной пентаграммой, второй - второй нужной. Сейчас она не имеет никакого смысла вообще кроме мучений "повключаю что-нибудь наудачу пока не повезет".
Dethrone пишет: -не, буду исправляться и выведу игру с "пародийной фентези" на "фентези".
Мне кажется это очень зряшное решение, серьезного фэнтези с такими персонажами и диалогами не получится, а диалект с "е" в начале слов вместо "э", предлогом "с" вместо "из" и проглатываемыми гласными в окончаниях слов получился бы очень оригинальный и в выгодную сторону отличающий проект от прочих лексически однообразных до зевоты "фэнтези" понимаш?
ps. Бедный Тили-как-его-там. Его взаправду так просто слили и забыли? Даже Роза не обратила внимания, что посылала трех героев, а вернулись только двое. Сволочи неблагодарные! Надеюсь, что забавный любитель грудей жив и вернется в полной версии.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
JackCL пишет:
Dethrone пишет: -замок любая пара не откроет (только определённая), а смысл подсказок не вижу(головоломка не тяжелая вовсе).
Я еще раз объясню все-таки, может ты поймешь в чем ошибка:
1. Любая пентаграмма которая нажимается первой не производит никакого эффекта.
2. Любая пентаграмма которая нажимается второй (при любой включенной первой) открывает первый замок.
3. Вывод игрока: если первый замок открывается парой пентаграмм, то второй замок также должен открываться парой пентаграмм, итого надо задействовать четыре пентаграммы.
4. Нет никакой возможности догадаться логически что ОБА замка открываются ОДНОВРЕМЕННО определенной парой пентаграмм.
Если ты не видишь здесь проблемы, то дальше объяснять не вижу смысла.
Переборной (но не более интересной) эта загадка была бы если бы первый замок открывался первой нужной пентаграммой, второй - второй нужной. Сейчас она не имеет никакого смысла вообще кроме мучений "повключаю что-нибудь наудачу пока не повезет".
Dethrone пишет: -не, буду исправляться и выведу игру с "пародийной фентези" на "фентези".
Мне кажется это очень зряшное решение, серьезного фэнтези с такими персонажами и диалогами не получится, а диалект с "е" в начале слов вместо "э", предлогом "с" вместо "из" и проглатываемыми гласными в окончаниях слов получился бы очень оригинальный и в выгодную сторону отличающий проект от прочих лексически однообразных до зевоты "фэнтези" понимаш?Но дело хозяйское, конечно, твой проект, тебе решать.
ps. Бедный Тили-как-его-там. Его взаправду так просто слили и забыли? Даже Роза не обратила внимания, что посылала трех героев, а вернулись только двое. Сволочи неблагодарные! Надеюсь, что забавный любитель грудей жив и вернется в полной версии.
-ошибку понял (прости, первый раз подобным занимаюсь) исправлю.
-"серьезного фэнтези" я и не планировал (комедия как-никак), "пародия", вот что мне не нравится.
-Тилия вернется!
Убрал цитату под кат. На будущее - если она настолько длинная, лучше или опустить её, или привести не целиком, или хотя бы так же спрятать. Cerberus
Делай так, как подсказывает сердце, а об остальном пускай заботятся другие.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пентаграммы прошел, методом "тыка" .

Момент с дыркой и досками не понял. Только что они сигали через огромные пропасти, а тут через ямку не могут перепрыгнуть.

Сражения как будто для галочки. Все с одного удара.
Хиро не хочет выходить через черный ход, а хочет через парадный, только какая разница если этот момент все равно не показан, как они вышли.
Ну и да, парня забыли забрать.
PS. Ну прям все отчетливей ноги One Piece`a проглядывают. Сила, которую сдерживает яд скорпионов или наручники из скорпионов.
Мастера ...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Lipton пишет: Сражения как будто для галочки. Все с одного удара.
Я вознадеялся что ето прост заглушки, а в полной версии будет боевка сайд-вью с кадуки в полный рост.
ps. Поигрался с сохранением/загрузкой, кажется скрипт слишком тяжелый. Чтобы у меня он работал пусть и с задержкой с полминуты нужно закрыть все остальные приложения (браузер, ps и т.п.) иначе может зависнуть и захлопнуть мейкер без сохранения. Ну комп слабенький это понятно с одной стороны, с другой не помню чтобы в каких-либо мейкерских играх была такая проблема.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Lipton пишет: Прошел. Ну ни чего так. Забавно.
Пентаграммы прошел, методом "тыка" .
Момент с дыркой и досками не понял. Только что они сигали через огромные пропасти, а тут через ямку не могут перепрыгнуть.
Сражения как будто для галочки. Все с одного удара.
Хиро не хочет выходить через черный ход, а хочет через парадный, только какая разница если этот момент все равно не показан, как они вышли.
Ну и да, парня забыли забрать.
PS. Ну прям все отчетливей ноги One Piece`a проглядывают. Сила, которую сдерживает яд скорпионов или наручники из скорпионов.Мастера ...
-Головоломку исправлю.
-Хм~~~м. А ведь и правда... Черт, непорядок. Исправлю!
-Сражения и вправду пока для галочки (система боев пока не готова) потому и с одного удара.
-Знаю. Сцена с кражой корабля будет присутствовать (потом...).
-Парня не забыли (думают что мертв и не хотят проверять точно ли мертв). Сделаю что бы было очевидно.
Вопросы:
1. Когда ивенти (например бабочки) не находятся в зоне видимости, они перестают двигаться или застывают на
краю экрана. Что делать?
2.
Lipton пишет:
Сражения как будто для галочки. Все с одного удара.
Я вознадеялся что ето прост заглушки, а в полной версии будет боевка сайд-вью с кадуки в полный рост.
Можешь поподробнее?
3.
ps. Поигрался с сохранением/загрузкой, кажется скрипт слишком тяжелый. Чтобы у меня он работал пусть и с задержкой с полминуты нужно закрыть все остальные приложения (браузер, ps и т.п.) иначе может зависнуть и захлопнуть мейкер без сохранения. Ну комп слабенький это понятно с одной стороны, с другой не помню чтобы в каких-либо мейкерских играх была такая проблема.
Как уменьшить вес? Я в скриптах плаваю слабо. Могу скинуть можно ли что-то подправить.
4. Проблема в сообщениях когда поле создается больше чем нужно.
Вот скрипт:
#
# ¥ Yami Engine Ace - Pop Message
# -- Last Updated: 2012.06.07
# -- Level: Normal
# -- Requires: n/a
#
#==============================================================================
$imported = {} if $imported.nil?
$imported["YSE-PopMessage"] = true
#==============================================================================
# ¥ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.06.07 - Fixed Compatible: YEA - Ace Message System.
# 2012.05.11 - Fixed Message Position.
# - Remove Requirement: YSE - Fix Events Order.
# 2012.05.07 - Fixed Face position.
# - Added Requirement: YSE - Fix Events Order.
# 2012.04.06 - You can change Bubble Tag filename.
# 2012.03.28 - Fixed Default Message Position and Sizes.
# 2012.03.27 - Fixed Default Message.
# 2012.03.27 - Added Bubble Tag.
# 2012.03.25 - Fixed Escape Message.
# 2012.03.24 - Fixed Battle Message.
# 2012.03.24 - Rewrote script.
#
#==============================================================================
# ¥ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ¥ Materials/‘fÞ but above ¥ Main. Remember to save.
#
#
# Message Window text Codes - These go inside of your message window.
#
# Position: Effect:
# \bm[x] - Sets Message Window position to event x. *Note
# \cbm - Cancel bubble message.
#
# *Note: Set to 0 to sets position to Game Player.
#
#==============================================================================
# ¥ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
#
#==============================================================================
module YSE
module POP_MESSAGE
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Visual Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
LIMIT = { # Start.
:limit_width => 0, # Set to 0 to disable limit.
:limit_line => 6, # Set to 0 to disable limit.
} # End.
POSITION = { # Start.
:x_buffer => 0,
:y_buffer => -36,
:face_x_buffer => 8,
:face_y_buffer => 24,
:tag_y_buffer => -6,
:name_x_buffer => 112, # Require YEA - Message System.
} # End.
EFFECT = { # Start.
:fade_face => true,
:move_face => true,
:use_bubble_tag => true,
:bubble_tag_name => "BubbleTag",
} # End.
end
end
#==============================================================================
# ¥ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================
#==============================================================================
# ¡ Spriteset_Map
#==============================================================================
class Spriteset_Map
#
# public instance variables
#
attr_accessor :character_sprites
end # Spriteset_Map
#==============================================================================
# ¡ Window_Message_Face
#==============================================================================
class Window_Message_Face < Window_Base
#
# initialize
#
def initialize
super(0, 0, 120, 120)
self.opacity = 0
@face_name = ""
@face_index = 0
@move_x = 0
close
end
#
# message_window=
#
def message_window=(window)
@message_window = window
end
#
# set_face
#
def set_face
contents.clear
return unless @message_window
if !$game_message.face_name.empty?
draw_face($game_message.face_name, $game_message.face_index, 0, 0)
set_position
show_face
else
hide_face
end
end
#
# set_position
#
def set_position
return unless @message_window
self.x = @message_window.x
self.y = @message_window.y - 96
self.x += YSE::POP_MESSAGE::POSITION[:face_x_buffer]
self.y += YSE::POP_MESSAGE::POSITION[:face_y_buffer]
self.y += (@message_window.real_lines - 1) * 24
self.z = @message_window.z + 1
if (@face_name != $game_message.face_name || @face_index != $game_message.face_index)
if YSE::POP_MESSAGE::EFFECT[:move_face]
@move_x = 30
self.x -= 30
end
@face_name = $game_message.face_name
@face_index = $game_message.face_index
self.contents_opacity = 0 if YSE::POP_MESSAGE::EFFECT[:fade_face]
end
end
#
# show_face
#
def show_face
open
end
#
# hide_face
#
def hide_face
contents.clear
close
end
#
# update
#
def update
super
self.contents_opacity += 15 if self.contents_opacity < 255
unless @move_x <= 0
self.x += 2
@move_x -= 2
end
end
end # Sprite_Message_Face
#==============================================================================
# ¡ Window_Message
#==============================================================================
class Window_Message < Window_Base
#
# new method: face_window=
#
def face_window=(window)
@face_window = window
end
#
# new method: bubble_tag=
#
def bubble_tag=(sprite)
@bubble_tag = sprite
end
#
# new method: message_escape_characters_pop_message
#
def message_escape_characters_pop_message(result)
result.gsub!(/\eBM\[(\d+)\]/i) { event_pop_message_setup($1.to_i, false) }
result.gsub!(/\eBMF\[(\d+)\]/i) { event_pop_message_setup($1.to_i, true) }
result.gsub!(/\eCBM/i) { event_pop_message_setup(nil, false) }
result
end
#
# alias method: convert_escape_characters
#
alias yse_convert_escape_characters_pm convert_escape_characters
def convert_escape_characters(text)
result = yse_convert_escape_characters_pm(text)
result = message_escape_characters_pop_message(result)
result
end
#
# new method: event_pop_message_setup
#
def event_pop_message_setup(event_id, follower = false)
if follower && $game_player.followers[event_id].nil?
@event_pop_id = nil
@event_pop_follower = false
return ""
end
@event_pop_follower = follower
@event_pop_id = event_id
return ""
end
#
# new method: set_face_position
#
def set_face_position
return unless SceneManager.scene_is?(Scene_Map)
return unless @event_pop_id
return unless @face_window
contents.clear
@face_window.set_face
return unless $imported["YEA-MessageSystem"]
return if @face_window.close?
#@name_window.x = self.x + YSE::POP_MESSAGE::POSITION[:face_x_buffer] + YSE::POP_MESSAGE::POSITION[:name_x_buffer] if (@name_position == 1 || @name_position == 2)
end
#
# alias method: new_page
#
alias window_message_new_page_pm_yse new_page
def new_page(text, pos)
window_message_new_page_pm_yse(text, pos)
set_face_position
end
#
# alias method: close
#
alias pop_message_close close
def close
pop_message_close
return unless SceneManager.scene_is?(Scene_Map)
return unless @event_pop_id
@event_pop_id = nil
@event_pop_follower = false
@face_window.hide_face
return unless YSE::POP_MESSAGE::EFFECT[:use_bubble_tag]
@bubble_tag.visible = false if @bubble_tag
end
#
# alias method: open_and_wait
#
alias pop_message_open_and_wait open_and_wait
def open_and_wait
pop_message_open_and_wait
return unless YSE::POP_MESSAGE::EFFECT[:use_bubble_tag]
@bubble_tag.visible = true if @event_pop_id && @bubble_tag
end
#
# alias method: process_all_text
#
alias pop_message_process_all_text process_all_text
def process_all_text
@event_pop_id = nil
convert_escape_characters($game_message.all_text)
update_placement
adjust_pop_message($game_message.all_text)
pop_message_process_all_text
end
#
# alias method: update_placement
#
alias event_pop_message_update_placement update_placement
def update_placement
if SceneManager.scene_is?(Scene_Map)
if @event_pop_id.nil?
fix_default_message
event_pop_message_update_placement
elsif @event_pop_id == 0
character = $game_player
self.y = character.screen_y - self.height + YSE::POP_MESSAGE::POSITION[:y_buffer]
self.x = character.screen_x - self.width / 2 + YSE::POP_MESSAGE::POSITION[:x_buffer]
fix_position_bubble(character)
set_bubble_tag(character)
elsif @event_pop_id > 0
hash = @event_pop_follower ? $game_player.followers : $game_map.events
character = hash[@event_pop_id]
self.y = character.screen_y - self.height + YSE::POP_MESSAGE::POSITION[:y_buffer]
self.x = character.screen_x - self.width / 2 + YSE::POP_MESSAGE::POSITION[:x_buffer]
fix_position_bubble(character)
set_bubble_tag(character)
end
else
event_pop_message_update_placement
end
end
#
# new method: fix_default_message
#
def fix_default_message
self.width = window_width
self.height = window_height
self.x = 0
@face_window.hide_face if @face_window
create_contents
return unless YSE::POP_MESSAGE::EFFECT[:use_bubble_tag]
@bubble_tag.visible = false if @bubble_tag
end
#
# new method: fix_position_bubble
#
def fix_position_bubble(character)
end_x = self.x + self.width
end_y = self.y + self.height
self.x = 0 if self.x < 0
self.y = character.screen_y if self.y < 0
self.x = Graphics.width - self.width if end_x > Graphics.width
self.y = Graphics.height - self.height if end_y > Graphics.height
end
#
# new method: set_bubble_tag
#
def set_bubble_tag(character)
return unless YSE::POP_MESSAGE::EFFECT[:use_bubble_tag]
return unless @bubble_tag
up = self.y == character.screen_y
self.y += up ? @bubble_tag.height / 2 : -@bubble_tag.height / 2
@bubble_tag.x = character.screen_x - @bubble_tag.width / 2
if up
@bubble_tag.src_rect.set(0, @bubble_tag.height, @bubble_tag.width, @bubble_tag.height)
@bubble_tag.y = self.y - @bubble_tag.height - YSE::POP_MESSAGE::POSITION[:tag_y_buffer]
else
@bubble_tag.src_rect.set(0, 0, @bubble_tag.width, @bubble_tag.height)
@bubble_tag.y = self.y + self.height + YSE::POP_MESSAGE::POSITION[:tag_y_buffer]
end
end
#
# new method: cal_number_line
#
def cal_number_line(text)
result = 0
text.each_line { result += 1 }
return result
end
#
# new method: cal_width_line
#
def cal_width_line(text)
result = 0
text.each_line { |line|
result = text_size(line).width if result < text_size(line).width
}
return result
end
#
# alias method: adjust_message_window_size
#
if $imported["YEA-MessageSystem"]
alias yse_pop_message_adjust_message_window_size adjust_message_window_size
def adjust_message_window_size
start_name_window if @event_pop_id
return if @event_pop_id
yse_pop_message_adjust_message_window_size
end
end
#
# new method: adjust_pop_message
#
def adjust_pop_message(text = " ")
return unless SceneManager.scene_is?(Scene_Map)
unless @event_pop_id
if $imported["YEA-MessageSystem"]
#adjust_message_window_size
end
return
end
n_line = cal_number_line(text)
n_line = YSE::POP_MESSAGE::LIMIT[:limit_line] if YSE::POP_MESSAGE::LIMIT[:limit_line] > 0 && cal_number_line(text) > YSE::POP_MESSAGE::LIMIT[:limit_line]
@real_lines = n_line
self.height = fitting_height(n_line)
self.width = cal_width_line(text) + 24
self.width += new_line_x
if self.width > YSE::POP_MESSAGE::LIMIT[:limit_width] && YSE::POP_MESSAGE::LIMIT[:limit_width] > 0
self.width = YSE::POP_MESSAGE::LIMIT[:limit_width]
end
create_contents
update_placement
end
#
# overwrite method: new_line_x
#
def new_line_x
if $game_message.face_name.empty?
return 0
else
result = YSE::POP_MESSAGE::POSITION[:face_x_buffer]
p_x = $imported["YEA-MessageSystem"] ? YEA::MESSAGE::FACE_INDENT_X : 112
result += p_x
return result
end
end
#
# new method: real_lines
#
def real_lines
@real_lines
end
end # Window_Message
#==============================================================================
# ¡ Scene_Map
#==============================================================================
class Scene_Map < Scene_Base
#
# alias method: create_message_window
#
alias yse_pm_create_message_window create_message_window
def create_message_window
yse_pm_create_message_window
@face_window = Window_Message_Face.new
@face_window.message_window = @message_window
if YSE::POP_MESSAGE::EFFECT[:use_bubble_tag]
@bubble_tag_sprite = Sprite.new
@bubble_tag_sprite.visible = false
@bubble_tag_sprite.bitmap = Cache.system(YSE::POP_MESSAGE::EFFECT[:bubble_tag_name])
@bubble_tag_sprite.src_rect.set(0, 0, @bubble_tag_sprite.width, @bubble_tag_sprite.height / 2)
@message_window.bubble_tag = @bubble_tag_sprite
end
@message_window.face_window = @face_window
end
#
# alias method: dispose_spriteset
#
alias pop_message_dispose_spriteset dispose_spriteset
def dispose_spriteset
pop_message_dispose_spriteset
return unless @bubble_tag_sprite
@bubble_tag_sprite.dispose
end
end # Scene_Map
#==============================================================================
#
# ¥ End of File
#
#==============================================================================
Можно исправить?
Делай так, как подсказывает сердце, а об остальном пускай заботятся другие.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
К тому моменту постараюсь закончить движок и двигаться по сюжету.
Делай так, как подсказывает сердце, а об остальном пускай заботятся другие.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- MaltonTheWarrior
-
- Не в сети
- Давно я тут
-
- Любопытненький
- Сообщений: 328
- Спасибо получено: 341
Хочу сказать, что очень понравился полноэкранный режим, расширяющий видимость. Это здорово.
И освещение очень здорово сделано, могу предположить, что это Khaas скрипт, так ли это?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
MaltonTheWarrior пишет: В саму игру не играл (пока), лишь ознакомился с темой.
Хочу сказать, что очень понравился полноэкранный режим, расширяющий видимость. Это здорово.
И освещение очень здорово сделано, могу предположить, что это Khaas скрипт, так ли это?
Нету там Кхаса. Тут используется Yami Engine Ace - Overlay Mapping. Свет накладывается картинкой.
При таком кол-ве точек освещения и повышенном разрешении Кхас давал бы ощутимый лаг, особенно если включить динамический фанарь.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Принято в задания, добавил в очередь .
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Спасибо, но уже не нужно. Покопался и сделал сам (где-то за 2 часа). Все работает супер. Но все равно спасибо.DeadElf79 пишет: О, снова этот скрипт! Надо бы запилить раз и навсегда исправление к нему для utf-8 кодировки.
Принято в задания, добавил в очередь .
Делай так, как подсказывает сердце, а об остальном пускай заботятся другие.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Совершенно верноНету там Кхаса. Тут используется Yami Engine Ace - Overlay Mapping. Свет накладывается картинкой.
При таком кол-ве точек освещения и повышенном разрешении Кхас давал бы ощутимый лаг, особенно если включить динамический фанарь.
Делай так, как подсказывает сердце, а об остальном пускай заботятся другие.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Неужели у нас на Светлой появился еще один скриптёр?))
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
DeadElf79 пишет: О, скинь сюда, если не сложно))
Неужели у нас на Светлой появился еще один скриптёр?))
Будет супер если ты его подправишь.
$imported = {} if $imported.nil?
$imported["YES-PopMessage"] = true
# Код: Эффект:
# \bm[x] - Собственно сообщение. Вместо "x" ставим ID ивента.
# 0 для героя.
# \cbm - Отмена. Сообщения становятся базовыми.
# \cbt[name] - Назначение "пузыря?".
module YES
module POP_MESSAGE
#===========================================================================
# - Limit Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# The following below will adjust the limit options for pop message.
#===========================================================================
LIMIT_SETTING = { # Start.
:width => 0, # Set to 0 to disable limitation.
:lines => 4, # Set to 0 to disable limitation.
} # End.
#===========================================================================
# - Effect Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# The following below will adjust the effect options for pop message.
#===========================================================================
EFFECT_SETTING = { # Start.
:default_face => false,# Use default face draw.
# Effects for non-default face draw.
:face_fade => true, # Makes face to be fading when start message.
:face_move => true, # Makes face to be moving in when start message.
# Bubble tag settings.
:bubble_tag => true, # Enables bubble tag for pop message.
:bubble_name => "BubbleTag", # Put bubble tag image into
# Graphics/System
:bubble_offset_y => -6,
} # End.
end
end
#==============================================================================
# ¥ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================
#==============================================================================
# ¡ Window_MessageFace
#==============================================================================
class Window_MessageFace < Window_Base
#
# initialize
#
def initialize
super(0, 0, 120, 120)
self.opacity = 0
self.contents_opacity = 0
self.close
@move_x = 0
end
#
# draw_content_face
#
def draw_content_face
if $game_message.face_name.empty?
hide_face
else
self.y = - self.height
contents.clear
draw_face($game_message.face_name, $game_message.face_index, 0, 0)
end
end
#
# fade_time
#
def fade_time
17
end
#
# move_time
#
def move_time
17
end
#
# move_rate
#
def move_rate
2
end
#
# show_face
#
def show_face
return if $game_message.face_name.empty?
self.open
#---
if (YES::POP_MESSAGE::EFFECT_SETTING[:face_fade] ||
YES::POP_MESSAGE::EFFECT_SETTING[:face_move])
self.openness = 255
end
#---
if YES::POP_MESSAGE::EFFECT_SETTING[:face_fade]
self.contents_opacity = 0
else
self.contents_opacity = 255
end
#---
if YES::POP_MESSAGE::EFFECT_SETTING[:face_move]
@move_x = move_time * move_rate
self.x -= @move_x
end
end
#
# hide_face
#
def hide_face
close
end
#
# update
#
def update
super
#---
self.contents_opacity += 255.0 / fade_time
#---
if @move_x > 0
rate = [move_rate, @move_x].min
@move_x -= rate
self.x += rate
end
end
end # Window_MessageFace
#==============================================================================
# ¡ Window_Message
#==============================================================================
class Window_Message < Window_Base
#
# new method: pop_message_initialize
#
def pop_message_initialize(text)
if text =~ /\\BM\[(\d+)\]/i
setup_pop_message($1.to_i)
end
if text =~ /\\CBM/i
cancel_pop_message
end
if text =~ /\\CBT\[(.*)\]/i
create_bubble_sprite($1)
@bubble_sprite.opacity = 255
end
end
#
# new method: process_pop_message
#
def process_pop_message(text)
text.gsub!(/\eCBT\[(.*)\]/i) { "" }
text.gsub!(/\eBM\[(\d+)\]/i) { "" }
text.gsub!(/\eCBM/i) { "" }
text
end
#
# alias method: convert_escape_characters
#
alias yes_pm_convert_escape_characters convert_escape_characters
def convert_escape_characters(text)
result = yes_pm_convert_escape_characters(text)
result = process_pop_message(result)
result
end
#
# new method: setup_pop_message
#
def setup_pop_message(id)
create_bubble_sprite
adjust_window_size
adjust_window_position(id)
@bubble_sprite.opacity = 255
end
#
# new method: create_bubble_sprite
#
def create_bubble_sprite(filename = nil)
return unless YES::POP_MESSAGE::EFFECT_SETTING[:bubble_tag]
filename = YES::POP_MESSAGE::EFFECT_SETTING[:bubble_name] unless filename
bitmap = Cache.system(filename)
@bubble_sprite ||= Sprite.new
@bubble_sprite.z = self.z
@bubble_sprite.opacity = 0
@bubble_sprite.bitmap = bitmap
@bubble_sprite.src_rect.set(0, 0, bitmap.width, bitmap.height / 2)
end
#
# new method: adjust_window_position
#
def adjust_window_position(id)
hash = $game_map.events
character = id <= 0 ? $game_player : hash[id]
#---
bitmap = Cache.character(character.character_name)
sign = character.character_name[/^[\!\$]./]
if sign && sign.include?('$')
ch = bitmap.height / 4
else
ch = bitmap.height / 8
end
#---
self.x = character.screen_x - self.width / 2
self.y = character.screen_y - self.height - ch
if @bubble_sprite
@bubble_sprite.x = character.screen_x - @bubble_sprite.width / 2
@bubble_sprite.y = self.y + self.height
@bubble_sprite.y += YES::POP_MESSAGE::EFFECT_SETTING[:bubble_offset_y]
end
#---
end_x = self.x + self.width
self.x = 0 if self.x < 0
self.x = Graphics.width - self.width if end_x > Graphics.width
if self.y < 0
self.y = character.screen_y
if @bubble_sprite
@bubble_sprite.y = self.y - @bubble_sprite.height
@bubble_sprite.y -= YES::POP_MESSAGE::EFFECT_SETTING[:bubble_offset_y]
@bubble_sprite.src_rect.set(0, @bubble_sprite.height,
@bubble_sprite.width, @bubble_sprite.height)
end
end
end
#
# new method: adjust_window_size
#
def adjust_window_size
text = convert_escape_characters($game_message.all_text)
#---
width = cal_width_line(text) + standard_padding * 2
width = width + new_line_x
if YES::POP_MESSAGE::LIMIT_SETTING[:width] > 0
width = [YES::POP_MESSAGE::LIMIT_SETTING[:width], width]
end
#---
lines = cal_number_line(text)
if YES::POP_MESSAGE::LIMIT_SETTING[:lines] > 0
lines = [YES::POP_MESSAGE::LIMIT_SETTING[:lines], lines].min
end
if YES::POP_MESSAGE::EFFECT_SETTING[:default_face]
unless $game_message.face_name.empty?
lines = [4, lines].max
end
end
#---
self.width = width
self.height = fitting_height(lines)
create_contents
end
#
# new method: cal_number_line
#
def cal_number_line(text)
result = 0
text.each_line { result += 1 }
return result
end
#
# new method: cal_width_line
#
def cal_width_line(text)
result = 0
text.each_line { |line|
result = text_size(line).width if result < text_size(line).width
}
return result
end
#
# new method: cancel_pop_message
#
def cancel_pop_message
update_placement
reset_size
create_bubble_sprite
end
#
# new method: reset_size
#
def reset_size
self.width = window_width
self.height = window_height
update_padding
create_contents
end
#
# alias method: draw_face
#
alias yes_pop_message_draw_face draw_face
def draw_face(face_name, face_index, x, y, enabled = true)
return unless YES::POP_MESSAGE::EFFECT_SETTING[:default_face]
yes_pop_message_draw_face(face_name, face_index, x, y, enabled)
end
#
# alias method: update_placement
#
alias yes_pop_message_update_placement update_placement
def update_placement
yes_pop_message_update_placement
self.x = 0
end
#
# alias method: process_all_text
#
alias yes_pop_message_process_all_text process_all_text
def process_all_text
pop_message_initialize($game_message.all_text)
yes_pop_message_process_all_text
end
#
# alias method: open_and_wait
#
alias yes_pop_message_open_and_wait open_and_wait
def open_and_wait
yes_pop_message_open_and_wait
@face_window ||= Window_MessageFace.new
@face_window.draw_content_face
@face_window.x = self.x + 8
@face_window.y += self.y + self.height
@face_window.show_face
end
#
# alias method: close_and_wait
#
alias yes_pop_message_close_and_wait close_and_wait
def close_and_wait
@face_window.hide_face
@bubble_sprite.opacity = 0 if @bubble_sprite
yes_pop_message_close_and_wait
cancel_pop_message
end
#
# alias method: update
#
alias yes_pop_message_update update
def update
yes_pop_message_update
if @face_window
@face_window.update
@face_window.z = self.z
end
if @bubble_sprite
@bubble_sprite.update
@bubble_sprite.z = self.z
end
end
def adjust_message_window_size
start_name_window
end
end # Window_Message
#==============================================================================
# ¡ Window_NameMessage
#==============================================================================
if $imported["YEA-MessageSystem"]
class Window_NameMessage < Window_Base
#
# set_x_position
#
alias yes_pm_set_x_position set_x_position
def set_x_position(x_position)
yes_pm_set_x_position(x_position)
self.x += @message_window.new_line_x if x_position == 1
self.z = @message_window.z
end
end # Window_NameMessage
end
И скриптёром меня сложно назвать. (всего 3 месяца за мейкером как-никак)
Делай так, как подсказывает сердце, а об остальном пускай заботятся другие.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Сегодня буду бухать а уже завтра займусь игрой.
Делай так, как подсказывает сердце, а об остальном пускай заботятся другие.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Жуть болотная, на лапках, в тапках и с пулемётом...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
