можно, поищи у галва скрипт, у него вроде есть
можно, поищи у галва скрипт, у него вроде есть
доброе.
сижу и матюкаюсь в попытке написать скрипт под фонарик. уже вроде написал, все робит, открыл меню, мать его, крит. делаю по другому, не робит апдейт спрайта фонарика.
с психу удалил самописку из проекта, но суть такова:
вывожу спрайт через Spriteset_Map
создаю
@flashlight = Sprite.new(@viewport1)
далее настройки спрайта (нахожу центр спрайта, прозрачность, наложение, зед), но саму картинку не задаю
в апдейт пихаю уже картинку, которая имеет название
filename = "flashlight"
filename += $гаме_плеер.директион.ту_с
задаю координаты в апдейте
@flashlight.(x,y) = $гаме_плеер.скрин_(х,у)
работает, рад, вышел в меню, крит, открыл дебаг, крит
кто может помочь с подобным фонариком?
Спойлер ps: я дико извнияюсь за такое убогое описание, но горит.:
Скорее всего забываешь уничтожать свой спрайт. Используй @flashlight.dispose в методе dispose. Также советую в update добавить условие изменения картинки, а то игрок может не двигаться, а картинка постоянно будет заново создаваться.
диспоз был, вечерком еще раз напишу что было, может на свежую голову я правильно напишу, ежели, скину сюда.
upd:
вроде так было
при открытие любой сцены с последующим выходом обратно в игру выдает ошибку строки 35, что-то bitmap=PHP код:
module HB
FLASHLIGHT = 1
BATTARY = 2
F_SWITCH = 90
end
class Spriteset_Map
alias hb_create_flashlight initialize
def initialize
hb_create_flashlight
create_flashlight
end
def create_flashlight
@flashlight = Sprite.new(@viewport1)
@flashlight.opacity = 200
@flashlight.blend_type = 1
@flashlight.z = 297
@flashlight.ox = 150 / 2
@flashlight.oy = 150 / 2
end
alias hb_update_flashlight update
def update
hb_update_flashlight
update_flashlight
end
def update_flashlight
if $game_switches[HB::F_SWITCH]
if $game_party.has_item?($data_items[HB::FLASHLIGHT])
filename = "flashlight_"
filename += $game_player.direction.to_s
@flashlight.bitmap = Cache.system(filename) rescue nil
@flashlight.x = $game_player.screen_x
@flashlight.y = $game_player.screen_y - 16
end
end
end
alias hb_dispose_flashlight dispose
def dispose
hb_dispose_flashlight
dispose_flashlight
end
def dispose_flashlight
@flashlight.dispose
end
end
если нужно, могу еще и графику прикрепить для теста
дальше хочу допилить вкл/выкл по клавише и использование батареек, но это уже другая история
главное пока с этим разобраться
Последний раз редактировалось HopeBree; 12.10.2015 в 17:32.
на каком моменте вылетает ошибка ?
Попробуй что-нибудь в этом роде:
Спойлер Код:
Последний раз редактировалось DK; 12.10.2015 в 20:05.
во, теперь отлично
вылетало обычно после выхода из меню, сцен дебаг и тому подобное, главное из каких то сцен выйти обратно на сцен мап
осталось реализовать батарейки и кнопку вкл/выкл :3
ps: $game_ специально пропустил, чтоб глупо не копипастил?
Последний раз редактировалось HopeBree; 12.10.2015 в 20:48.
а вот еще такой момент дефолтные значения фонаря выставил как выключены
в апдейт добавил следующие
захожу в меню, выхожу, значение визибл принимает исходное значение фолсеКод:if Keys.trigger?(Keys::F) && @flashlight.visible = true Audio.se_play("Audio/SE/" + HB::ONOFFSE, 70, 100) @flashlight.visible = false elsif Keys.trigger?(Keys::F) && @flashlight.visible = false Audio.se_play("Audio/SE/" + HB::ONOFFSE, 70, 100) @flashlight.visible = true end
В условии вместо = пишется ==.
Keys.trigger?
Вроде бы Input.trigger?
Конечно, так как при входе в меню это другая сцена, а при смене сцены сначала диспозятся все спрайты, а когда возвращаешся обратно они создаются заново. Тебе нужно где-то в другом месте хранить состояние фонарика, по которому оно будет восстанавливаться. Например создать переменную в $game_map. Он создается единожды и сохраняется в сейвы.
И да не заметил =) Subzeroy прав, у тебя присваивается, а не сравнивается.
Последний раз редактировалось Lipton; 13.10.2015 в 09:47.
Эту тему просматривают: 7 (пользователей: 0 , гостей: 7)
Социальные закладки