本教程为原创,使用或转载请注明出自宝可饭堂社区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
})
	附件
			
				最后编辑: