- Сообщений: 1597
- Спасибо получено: 1522
Demyi Jump
Скрыть
Больше
9 года 10 мес. назад - 6 года 2 дн. назад #92526
от Демий
Автор: Демий
Описание:
Делал чисто под свои прихоти скрипт, но коли он вышел почти полноценным, решил выложить тут. Авось кому пригодится, или критики наедут.
Отличается от найденных мной скриптов тем, что тут персонаж прыгает на месте, если не может прыгнуть дальше.
Измените строку: "stat = 0", что бы изменить дальность прыжка. Через $game_actors[1].def - можно привязать её к параметру.
Сслыка на демо: тык.
Демий создал тему: Demyi Jump
Demyi Jump
Автор: Демий
Описание:
Делал чисто под свои прихоти скрипт, но коли он вышел почти полноценным, решил выложить тут. Авось кому пригодится, или критики наедут.
Отличается от найденных мной скриптов тем, что тут персонаж прыгает на месте, если не может прыгнуть дальше.
Измените строку: "stat = 0", что бы изменить дальность прыжка. Через $game_actors[1].def - можно привязать её к параметру.
код
Code:
=begin
Этот скрипт позволяет игроку совершать прыжок на определённое расстояние.
На данный момент прыжок учитывает регионы(любой регион считается непроходимым), край карты и наличие ивентов.
Возможно когда-нибудь сделаю ещё и проверку на разные регионы.
Измените строку: "stat = 0", что бы изменить дальность прыжка. Через $game_actors[1].def - можно привязать её к параметру.
=end
class De_Jumps
def start
@actor = $game_actors[1]
@orig_g = @actor.character_name #автоматически сохраняет обычную графику перса.
@orig_i = @actor.character_index
@a = "Actor4" #Эта строка отвечает за файл графики спрайта в прыжке. 0 - отлкючить.
@b = 1 #Сюда пишется айди спрайта в прыжке, помните, что отчёт начинатся с нуля.
@but = :C #кнопка отвечающая за прыжок, указывается как и в проверке условия у ивента.
@se = "Jump1" #укажите название файла звука, который проигрывается при прыжке. 0 = отключить.
@vol = 70 #укажите громкость звука.
end
def chek
start if @actor == nil
graph if @a != 0
jump if Input.press?(@but) && !$game_player.jumping?
end
def graph
z = [@actor.character_name,@actor.character_index]
if $game_player.jumping?
a = @a
b = @b
end
if $game_player.stopping? || $game_player.moving?
a = @orig_g
b = @orig_i
end
d = [a,b]
if z != d
@actor.set_graphic(a, b, a, 0)
$game_player.refresh
end
end
def jump
Audio.se_play('Audio/SE/' + @se, @vol, 100) if @se != 0
i = 0
x = $game_player.x
y = $game_player.y
stat = 0 #Строка отвечающая за дальность прыжка.
space = [1] #массив заполняется 0 и 1, в зависимости от проходимости тайлов.
case $game_player.direction
when 2
while i != stat
i += 1
if $game_map.event_id_xy(x, y+i) == 0 && y+i < $game_map.height && $game_map.region_id(x, y+i) == 0 #строка вышла длинная, но я не нашёл другого пути проверить сразу на три условия.
space.push 1 #собственно, пишем 1 - если клетка проходима.
else
space.push 0 #и 0, если нет.
end
end
i = space.rindex(1) #присваем i индекс последнего в массиве элемента, со значением "1".
$game_player.jump(0, i)
when 4
while i != -stat #не нашёл варианта сравнить числа по модулю.
i -= 1
if $game_map.event_id_xy(x+i, y) == 0 && x+i >= 0 && $game_map.region_id(x+i, y) == 0
space.push 1
else
space.push 0
end
end
i = -space.rindex(1) #прыгаем в отрицательную сторону же
$game_player.jump(i, 0)
when 6
while i != stat
i += 1
if $game_map.event_id_xy(x+i, y) == 0 && x+i < $game_map.width && $game_map.region_id(x+i, y) == 0
space.push 1
else
space.push 0
end
end
i = space.rindex(1)
$game_player.jump(i, 0)
when 8
while i != -stat
i -= 1
if $game_map.event_id_xy(x, y+i) == 0 && y-i >= 0 && $game_map.region_id(x, y+i) == 0
space.push 1
else
space.push 0
end
end
i = -space.rindex(1)
$game_player.jump(0, i)
end
end
end
$dj = De_Jumps.new
class Scene_Map < Scene_Base
alias re_update_scene update_scene
def update_scene
re_update_scene
update_jump_player unless scene_changing?
end
def update_jump_player
$dj.chek
end
end
Сслыка на демо: тык.
Последнее редактирование: 6 года 2 дн. назад пользователем Демий.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Скрыть
Больше
- Сообщений: 1597
- Спасибо получено: 1522
6 года 2 дн. назад - 6 года 2 дн. назад #116796
от Демий
Демий ответил в теме Demyi Jump
Внезапно, обновил скрипт для собственных нужд. Ну и за одно сюда скину.
Собственно, добавил:
1) Звук при прыжке;
2) Возможность смены графики персонажа в прыжке;
3) Привязка прыжка к кнопке на клаве.
P.S. Хотел сделать возможность воспроизводить анимацию в прыжке, но прыжок уж очень глубоко зарыт.
Собственно, добавил:
1) Звук при прыжке;
2) Возможность смены графики персонажа в прыжке;
3) Привязка прыжка к кнопке на клаве.
P.S. Хотел сделать возможность воспроизводить анимацию в прыжке, но прыжок уж очень глубоко зарыт.
Последнее редактирование: 6 года 2 дн. назад пользователем Демий.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
4 года 3 мес. назад #126295
от Switch
Switch ответил в теме Demyi Jump
Прошу прощение за вопрос(теме уже больше семи лет),но я так и не понял как переназначить кнопку прыжка. Изначально в вашем коде она стоит на пробеле( что еще кнопка взаимодействия в самой игре , так что это немного неудобно)
Не могли бы вы объяснить как поменять кнопку на другую пожалуйста?
Не могли бы вы объяснить как поменять кнопку на другую пожалуйста?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Скрыть
Больше
- Сообщений: 1597
- Спасибо получено: 1522
4 года 3 мес. назад #126296
от Демий
Демий ответил в теме Demyi Jump
Достаточно изменить значение переменной "@but", например, написать @but = :a. Единственное, что важно помнить, что скрипт использует кнопки контроллера, а не клавиатуры как и проверка условий в ивенте.
Спасибо сказали: Switch
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
4 года 3 мес. назад #126299
от Switch
Switch ответил в теме Demyi Jump
Спасибо, разобрался
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Время создания страницы: 0.104 секунд
