本教程为原创,使用或转载请注明出自宝可饭堂社区https://bbs.pokefans.xyz/threads/51/
仅在18.1和19.1测试过,并且代码不同,请按需查看。20.1的代码请看楼下。
在教程开始之前先看效果示例,虽然有徽章检测,但仍建议给道具的NPC放在给飞翔秘传机的NPC一起或者附近。
接着来看教程,首先准备好无限之笛道具的数据写在PBS/items.txt中,XXXX为你的道具内部编号。
对于ESS18,将图标放在Graphics/Icons文件夹,并命名为itemXXXX.png,XXXX为你的道具内部编号。
对于ESS19,将图标放在Graphics/Items文件夹,并命名为EONFLUTE.png。
音效文件放在Audio/ME文件夹下
(以上文件见附件)
最后是实现代码
教程结束。
仅在18.1和19.1测试过,并且代码不同,请按需查看。20.1的代码请看楼下。
在教程开始之前先看效果示例,虽然有徽章检测,但仍建议给道具的NPC放在给飞翔秘传机的NPC一起或者附近。
接着来看教程,首先准备好无限之笛道具的数据写在PBS/items.txt中,XXXX为你的道具内部编号。
代码:
XXXX,EONFLUTE,无限之笛,无限之笛,8,0,无论身在何处,都能召唤拉帝亚斯或 拉帝欧斯飞翔的笛子。,2,0,6,
对于ESS19,将图标放在Graphics/Items文件夹,并命名为EONFLUTE.png。
音效文件放在Audio/ME文件夹下
(以上文件见附件)
最后是实现代码
在PItem_ItemEffects的末尾添加如下代码:
Ruby:
#在背包中使用
ItemHandlers::UseFromBag.add(:EONFLUTE,proc{|item|
next false if !pbCheckHiddenMoveBadge(BADGE_FOR_FLY,true)
pbMessage(_INTL("\\me[无限之笛]{1}吹响了无限之笛。\\wtnp[30]",$Trainer.name))
if !pbGetMetadata($game_map.map_id,MetadataOutdoor)
pbMessage(_INTL("似乎没有宝可梦听到笛声。"))
next 0
end
pbMessage(_INTL("宝可梦听到笛声了!"))
scene = PokemonRegionMap_Scene.new(-1,false)
screen = PokemonRegionMapScreen.new(scene)
ret = screen.pbStartFlyScreen
next 0 if !ret
$PokemonTemp.flydata=ret
pkmn = pbGenPkmn(:LATIOS,50) #拉帝欧斯
# pkmn = pbGenPkmn(:LATIAS,50) #拉帝亚斯
if !pbHiddenMoveAnimation(pkmn)
pbMessage(_INTL("{1}召唤的宝可梦使用了飞翔!",$Trainer.name))
end
pbFadeOutIn {
$game_temp.player_new_map_id = $PokemonTemp.flydata[0]
$game_temp.player_new_x = $PokemonTemp.flydata[1]
$game_temp.player_new_y = $PokemonTemp.flydata[2]
$game_temp.player_new_direction = 2
$PokemonTemp.flydata = nil
$scene.transfer_player
$game_map.autoplay
$game_map.refresh
}
pbEraseEscapePoint
next 0
})
#在野外通过快捷键使用
ItemHandlers::UseInField.add(:EONFLUTE,proc{|item|
next false if !pbCheckHiddenMoveBadge(BADGE_FOR_FLY,true)
pbMessage(_INTL("\\me[无限之笛]{1}吹响了无限之笛。\\wtnp[30]",$Trainer.name))
if !pbGetMetadata($game_map.map_id,MetadataOutdoor)
pbMessage(_INTL("似乎没有宝可梦听到笛声。"))
next false
end
pbMessage(_INTL("宝可梦听到笛声了!"))
scene = PokemonRegionMap_Scene.new(-1,false)
screen = PokemonRegionMapScreen.new(scene)
ret = screen.pbStartFlyScreen
next false if !ret
$PokemonTemp.flydata=ret
pkmn = pbGenPkmn(:LATIOS,50) #拉帝欧斯
# pkmn = pbGenPkmn(:LATIAS,50) #拉帝亚斯
if !pbHiddenMoveAnimation(pkmn)
pbMessage(_INTL("{1}召唤的宝可梦使用了飞翔!",$Trainer.name))
end
pbFadeOutIn {
$game_temp.player_new_map_id = $PokemonTemp.flydata[0]
$game_temp.player_new_x = $PokemonTemp.flydata[1]
$game_temp.player_new_y = $PokemonTemp.flydata[2]
$game_temp.player_new_direction = 2
$PokemonTemp.flydata = nil
$scene.transfer_player
$game_map.autoplay
$game_map.refresh
}
pbEraseEscapePoint
next true
})
在Item_Effects的末尾添加如下代码:
Ruby:
#在背包中使用
ItemHandlers::UseFromBag.add(:EONFLUTE,proc{|item|
next false if !pbCheckHiddenMoveBadge(Settings::BADGE_FOR_FLY,true)
pbMessage(_INTL("\\me[无限之笛]{1}吹响了无限之笛。\\wtnp[30]",$Trainer.name))
if !GameData::MapMetadata.get($game_map.map_id).outdoor_map
pbMessage(_INTL("似乎没有宝可梦听到笛声。"))
next 0
end
pbMessage(_INTL("宝可梦听到笛声了!"))
scene = PokemonRegionMap_Scene.new(-1,false)
screen = PokemonRegionMapScreen.new(scene)
ret = screen.pbStartFlyScreen
next 0 if !ret
$PokemonTemp.flydata=ret
pkmn = pbGenPkmn(:LATIOS,50) #拉帝欧斯
# pkmn = pbGenPkmn(:LATIAS,50) #拉帝亚斯
if !pbHiddenMoveAnimation(pkmn)
pbMessage(_INTL("{1}召唤的宝可梦使用了飞翔!",$Trainer.name))
end
pbFadeOutIn {
$game_temp.player_new_map_id = $PokemonTemp.flydata[0]
$game_temp.player_new_x = $PokemonTemp.flydata[1]
$game_temp.player_new_y = $PokemonTemp.flydata[2]
$game_temp.player_new_direction = 2
$PokemonTemp.flydata = nil
$scene.transfer_player
$game_map.autoplay
$game_map.refresh
}
pbEraseEscapePoint
next 0
})
#在野外通过快捷键使用
ItemHandlers::UseInField.add(:EONFLUTE,proc{|item|
next false if !pbCheckHiddenMoveBadge(Settings::BADGE_FOR_FLY,true)
pbMessage(_INTL("\\me[无限之笛]{1}吹响了无限之笛。\\wtnp[30]",$Trainer.name))
if !GameData::MapMetadata.get($game_map.map_id).outdoor_map
pbMessage(_INTL("似乎没有宝可梦听到笛声。"))
next false
end
pbMessage(_INTL("宝可梦听到笛声了!"))
scene = PokemonRegionMap_Scene.new(-1,false)
screen = PokemonRegionMapScreen.new(scene)
ret = screen.pbStartFlyScreen
next false if !ret
$PokemonTemp.flydata=ret
pkmn = pbGenPkmn(:LATIOS,50) #拉帝欧斯
# pkmn = pbGenPkmn(:LATIAS,50) #拉帝亚斯
if !pbHiddenMoveAnimation(pkmn)
pbMessage(_INTL("{1}召唤的宝可梦使用了飞翔!",$Trainer.name))
end
pbFadeOutIn {
$game_temp.player_new_map_id = $PokemonTemp.flydata[0]
$game_temp.player_new_x = $PokemonTemp.flydata[1]
$game_temp.player_new_y = $PokemonTemp.flydata[2]
$game_temp.player_new_direction = 2
$PokemonTemp.flydata = nil
$scene.transfer_player
$game_map.autoplay
$game_map.refresh
}
pbEraseEscapePoint
next true
})
附件
最后编辑: