Правила раздела:
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.

Ошибка скрипта rpg maker VX

Проект месяца 1 место Ветеран Проект месяца 3 место Победитель конкурса Проект месяца 2 место 2 место Оратор Разработчик Поддержка Фонда
Больше
9 года 4 нед. назад - 9 года 4 нед. назад #97416 от Kouta555
Значит дело такое, я изменил всю стандартную систему скриптов мейкера, но нахимичил немного хуже, чем нужно.
ТО есть что-то удалил, что-то заменил, что-то добавил.
Теперь большая часть команд завязана на скриптах и все работает так как мне надо, но дело в том, что я удалил программу вывода картинки из папки picture. То есть стандартная система не работает,

из Game_Interpreter я удалил несколько пунктов а именно
Code:
#-------------------------------------------------------------------------- # * Show Picture #-------------------------------------------------------------------------- def command_231 if @params[3] == 0 # Direct designation x = @params[4] y = @params[5] else # Designation with variables x = $game_variables[@params[4]] y = $game_variables[@params[5]] end screen.pictures[@params[0]].show(@params[1], @params[2], x, y, @params[6], @params[7], @params[8], @params[9]) return true end #-------------------------------------------------------------------------- # * Move Picture #-------------------------------------------------------------------------- def command_232 if @params[3] == 0 # Direct designation x = @params[4] y = @params[5] else # Designation with variables x = $game_variables[@params[4]] y = $game_variables[@params[5]] end screen.pictures[@params[0]].move(@params[2], x, y, @params[6], @params[7], @params[8], @params[9], @params[10]) @wait_count = @params[10] if @params[11] return true end #-------------------------------------------------------------------------- # * Rotate Picture #-------------------------------------------------------------------------- def command_233 screen.pictures[@params[0]].rotate(@params[1]) return true end #-------------------------------------------------------------------------- # * Tint Picture #-------------------------------------------------------------------------- def command_234 screen.pictures[@params[0]].start_tone_change(@params[1], @params[2]) @wait_count = @params[2] if @params[3] return true end #-------------------------------------------------------------------------- # * Erase Picture #-------------------------------------------------------------------------- def command_235 screen.pictures[@params[0]].erase return true end

Конечно же после этого, вывода картинок я не добьюсь, но когда я снова поместил этот код на его законное место, вывод картинки параллельным процессом нихт арбайтен, а когда персонаж касается эвента в котором стоит эта команда
игра выдаёт ошибку

Script 'Game_Interpreter' line 472: NoMethodError occurred.

undefined method `pictures' for #<Game_Screen:0x9ee52c8>

ссылается оно на эту screen.pictures[@params[0]].show(@params[1], @params[2], строку.
В коде выше она находится в разделе Show pictures.






такие дела :unsure:
Последнее редактирование: 9 года 4 нед. назад пользователем Kouta555.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место 3 место Готв Победитель Сбитой кодировки Программист JavaScript 2 место Сбитая кодировка Писатель 3 место 2 место 3 место Организатор конкурсов
Больше
9 года 4 нед. назад #97418 от Cerberus
А что было сделано в разделе Game_Screen? Ссылается-то указанная строчка именно туда.

Жуть болотная, на лапках, в тапках и с пулемётом...
Спасибо сказали: Amphilohiy

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Ветеран Проект месяца 3 место Победитель конкурса Проект месяца 2 место 2 место Оратор Разработчик Поддержка Фонда
Больше
9 года 4 нед. назад #97420 от Kouta555
Code:
class Game_Screen attr_reader :brightness attr_reader :tone attr_reader :flash_color attr_reader :shake_owner attr_reader :shake_x attr_reader :shake_y attr_reader :weather_type attr_reader :weather_max attr_reader :fog_bitmap attr_reader :fog_opacity attr_reader :fog_x_speed attr_reader :fog_y_speed def initialize clear end def clear @brightness = 255 @fadeout_duration = 0 @fadein_duration = 0 @tone = Tone.new(0, 0, 0, 0) @tone_target = Tone.new(0, 0, 0, 0) @tone_duration = 0 @flash_color = Color.new(0, 0, 0, 0) @flash_duration = 0 clear_shake @weather_type = 0 @weather_max = 0.0 @weather_type_target = 0 @weather_max_target = 0.0 @weather_duration = 0 @fog_bitmap = nil @fog_opacity = 0 @fog_x_speed = 0.0 @fog_y_speed = 0.0 end def clear_shake @shake_owner = nil @shake_power = 0 @shake_speed = 0 @shake_duration = 0 @shake_direction = 1 @shake_x = 0 @shake_y = 0 @shake_power_random = false @shake_speed_random = false @shake_direction_random = false end def clear_flash @flash_duration = 0 @flash_color = Color.new(0, 0, 0, 0) end def clear_fog @fog_bitmap = nil @fog_opacity = 0 @fog_x_speed = 0.0 @fog_y_speed = 0.0 end def start_fadeout(duration) @fadeout_duration = duration @fadein_duration = 0 end def start_fadein(duration) @fadein_duration = duration @fadeout_duration = 0 end def black_screen @brightness = 0 @fadein_duration = 0 @fadeout_duration = 0 end def start_tone_change(tone, duration) @tone_target = tone.clone @tone_duration = duration if @tone_duration == 0 @tone = @tone_target.clone end end def start_flash(color, duration) @flash_color = color.clone @flash_duration = duration end def start_shake(args) # power, speed, duration, direction, owner return if @shake_duration > args[2] clear_shake @shake_owner = args[4] @shake_duration = args[2] if args[0] == 0 @shake_power = rand(9) + 1 @shake_power_random = true else @shake_power = args[0] @shake_power_random = false end if args[1] == 0 @shake_speed = rand(9) + 1 @shake_speed_random = true else @shake_speed = args[1] @shake_speed_random = false end if args[3] == 0 @shake_direction_random = true else if @shake_direction != args[3] and @shake_direction != (10 - args[3]) @shake_direction = args[3] @shake_x = 0 @shake_y = 0 end @shake_direction_random = false end end def weather(type, power, duration) @weather_type_target = type if @weather_type_target != 0 @weather_type = @weather_type_target end if @weather_type_target == 0 @weather_max_target = 0.0 else @weather_max_target = (power + 1) * 8.0 end @weather_duration = duration if @weather_duration == 0 @weather_type = @weather_type_target @weather_max = @weather_max_target end end def save_fog(bitmap, opacity, x_speed, y_speed) @fog_bitmap = bitmap @fog_opacity = opacity @fog_x_speed = x_speed @fog_y_speed = y_speed end def update update_fadeout update_fadein update_tone update_flash update_shake update_weather end def update_fadeout if @fadeout_duration >= 1 d = @fadeout_duration @brightness = (@brightness * (d - 1)) / d @fadeout_duration -= 1 end end def update_fadein if @fadein_duration >= 1 d = @fadein_duration @brightness = (@brightness * (d - 1) + 255) / d @fadein_duration -= 1 end end def update_tone if @tone_duration >= 1 d = @tone_duration @tone.red = (@tone.red * (d - 1) + @tone_target.red) / d @tone.green = (@tone.green * (d - 1) + @tone_target.green) / d @tone.blue = (@tone.blue * (d - 1) + @tone_target.blue) / d @tone.gray = (@tone.gray * (d - 1) + @tone_target.gray) / d @tone_duration -= 1 end end def update_flash if @flash_duration > 0 d = @flash_duration @flash_color.alpha = @flash_color.alpha * (d - 1) / d @flash_duration -= 1 end end def update_shake if @shake_duration != 0 or @shake_x != 0 or @shake_y != 0 return if $game_temp.stop_time_count > 0 delta = (@shake_power * @shake_speed) / 10.0 if @shake_x.abs < delta and @shake_y.abs < delta if @shake_power_random == true @shake_power = rand(9) + 1 end if @shake_speed_random == true @shake_speed = rand(9) + 1 end if @shake_direction_random == true @shake_direction = rand(8) + 1 @shake_direction += 1 if @shake_direction > 4 end delta = (@shake_power * @shake_speed) / 10.0 @shake_x = 0 @shake_y = 0 end if @shake_x.abs > @shake_power * 2 or @shake_y.abs > @shake_power * 2 @shake_direction = 10 - @shake_direction end if @shake_duration > 0 @shake_duration -= 1 end if @shake_duration == 0 and @shake_x.abs <= delta and @shake_y.abs <= delta @shake_x = 0 @shake_y = 0 else @shake_x += delta if @shake_direction % 3 == 0 @shake_x -= delta if (@shake_direction + 2) % 3 == 0 @shake_y += delta if @shake_direction < 4 @shake_y -= delta if @shake_direction > 6 end end end def update_weather if @weather_duration >= 1 d = @weather_duration @weather_max = (@weather_max * (d - 1) + @weather_max_target) / d @weather_duration -= 1 if @weather_duration == 0 @weather_type = @weather_type_target end end end end

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby 2 место Готв Победитель Сбитой кодировки Учитель Оратор
Больше
9 года 4 нед. назад - 9 года 4 нед. назад #97422 от Amphilohiy
Ты же не думал что я смогу пройти мимо такого поста не пумничав?
Во первых - довольно часто дают совет изначальные скрипты не трогать, а вонсить изменение отдельными скриптами. Так у тебя всегда под боком будет оргиниал, и любые изменения можно откатить простым комментированием.
Во вторых - Керберус тебе уже дал наводку, что соль в классе Game_Screen, как впрочем и сама ошибка
undefined method `pictures' for #<Game_Screen:0x9ee52c8>
Суть - есть экземпляр класса Game_Screen в переменной screen, у которого ты пытаешься вызвать метод pictures, которого нет
В третьих - ты скинул код, в котором такого метода у класса Game_Screen нет.

Ну, истоки более менее ясны - нет ни метода, ни переменной хотя бы отдаленно напоминающей нужную. Что сказать - надо прописывать всю логику картинок. Однако с учетом того что тут все наверчено буквально в исходниках, то сложно прогнозировать как все это фиксить не наступив на мину. Код интепретатора, кстати, совпадает с эйсовским, а вот Game_Screen не очень. Ты их точно не намешиваешь? Простого VX у меня и в помине нет.

Вообще прикольная тема, снести половину оригинальных скриптов, а потом их еще восстанавливать. Нет, ну серьезно, чем тебе эти команды интерпретатора помешали? Ну загрузились бы, то что они болтаются без дела много ресурсов не жрет, только инструкция валяется в оперативке, но это копейки. Зачем сносить оригинал то?

Такие дела :unsure:

Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.
Последнее редактирование: 9 года 4 нед. назад пользователем Amphilohiy.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Ветеран Проект месяца 3 место Победитель конкурса Проект месяца 2 место 2 место Оратор Разработчик Поддержка Фонда
Больше
9 года 3 нед. назад #97423 от Kouta555
тогда можно -ли сделать отдельно скрипт для вывода картинок на экран, не через команду меню, а просто используя скрипт?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby 2 место Готв Победитель Сбитой кодировки Учитель Оратор
Больше
9 года 3 нед. назад #97424 от Amphilohiy
Можно, но тут есть подвох... Врятли кто-то возьмет писать скрипт на фитчу, которая уже есть в мейкере. Почему бы тебе не вернуть кусок Game_Screen с картинками? Особенно учитывая, что тебе по сути придется инстанцировать внутри Game_Screen класс Game_Picture и вернуть пару методов.

Или же сделать эдакий глобальный Game_Pictures и уже все действия мутить самому вызовом скриптов, методы ты можешь подглядеть в классе Game_Picture.

Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Ветеран Проект месяца 3 место Победитель конкурса Проект месяца 2 место 2 место Оратор Разработчик Поддержка Фонда
Больше
9 года 3 нед. назад #97425 от Kouta555
Вернуть я его не могу, потому что это нарушит процесс работы, основной системы.
Как раз эдакий глобальный гейм пикчер подойдёт.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
9 года 3 нед. назад #97426 от Paranoid
Я конечно извиняюсь, но зачем было городить такие огороды, если можно было просто отдельные скрипты мутить? Мне чисто из интереса.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Ветеран Проект месяца 3 место Победитель конкурса Проект месяца 2 место 2 место Оратор Разработчик Поддержка Фонда
Больше
9 года 3 нед. назад #97428 от Kouta555

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.098 секунд
Работает на Kunena форум