设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3636|回复: 10
打印 上一主题 下一主题

[已经解决] 请问这个传送脚本怎么使用啊?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
70 小时
注册时间
2010-10-16
帖子
36
跳转到指定楼层
1
发表于 2013-9-22 21:48:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================

# 自定义内容解释:
# TOWNS[编号]=["地名,可以随便写",开关编号,[传送去的地图id,传送去的地图x,
#              传送去的地图y],角色朝向]
#
# 编号请按照0、1、2、3……顺序往下排布
# 当编号的开关打开的时候,才可以选择这个传送地点
# 角色朝向,2为下,4为左,6为右,8为上,具体可以参考自己数字小键盘的方向和数字关系
# 如果是其他方向请自己改。
#
# 需要制作脚本,请点击66rpg.com最底部的QQ交谈
#
# 使用方法:在需要传送的传送门、传送石、传送羽毛、传送旅店一类的地方使用公共事件:
#           呼叫脚本:$scene = Scene_Teleport.new
#
# 制作者:柳柳
#==============================================================================
TOWNS=[]
TOWNS[0]=["古德城堡东门",1,[1,2,3],2]
TOWNS[1]=["古德城堡西门",2,[1,2,5],4]
TOWNS[2]=["修道院门口",3,[3,3,6],4]
TOWNS[3]=["女神遗迹南口",4,[4,2,6],4]
TOWNS[4]=["圣天城骑士团练兵场",5,[5,2,6],4]
TOWNS[5]=["许愿之塔",6,[6,9,6],4]
#==============================================================================
# ■ Window_Teleport
#------------------------------------------------------------------------------
#  处理传送的窗口
#==============================================================================
class Window_Teleport < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    super(640,640,64,64)
    self.contents = Bitmap.new(width, height)
    self.opacity = 180
    get_towns
    draw_towns
    @column_max = 1
  end
  #--------------------------------------------------------------------------
  # ● 获取可到达的城镇和窗口大小
  #--------------------------------------------------------------------------
  def get_towns
    @carol3_towns = []
    @width_temp = 0
    @cont_use = false
    for town in TOWNS
      if $game_switches[town[1]]==true
        @carol3_towns.push(town)
        if contents.text_size(town[0]).width >= @width_temp
          @width_temp = contents.text_size(town[0]).width
        end
      end
    end
    @item_max = @carol3_towns.size
    if @item_max == 0
      @carol3_towns[0] = ["没有可以传送的地方",1,[1,1,1]]
      @width_temp = contents.text_size(@carol3_towns[0][0]).width
      @item_max = 1
      @cont_use = true
    end
    self.width = [@width_temp+32,480].min
    self.height = [(@item_max+1)*32,360].min
    self.x = (640-self.width)/2
    self.y = (480-self.height)/2
    self.contents = Bitmap.new(width-32,row_max*32)
  end
  #--------------------------------------------------------------------------
  # ● 描绘城镇名称
  #--------------------------------------------------------------------------
  def draw_towns
    for i in 0...@carol3_towns.size
      self.contents.draw_text(0,i*32,@width_temp,32,@carol3_towns[0],1)
    end
  end
  #--------------------------------------------------------------------------
  # ● 返回的内容
  #========================================================================
  # ● 地图编号
  #--------------------------------------------------------------------------
  def map_id
    return @carol3_towns[self.index][2][0]
  end
  #--------------------------------------------------------------------------
  # ● 地图x坐标
  #--------------------------------------------------------------------------
  def map_x
    return @carol3_towns[self.index][2][1]
  end      
  #--------------------------------------------------------------------------
  # ● 地图y坐标
  #--------------------------------------------------------------------------
  def map_y
    return @carol3_towns[self.index][2][2]
  end
  #--------------------------------------------------------------------------
  # ● 角色朝向
  #--------------------------------------------------------------------------
  def map_direction
    return @carol3_towns[self.index][2][3]
  end
  #--------------------------------------------------------------------------
  # ● 判断是否一个城市都没有
  #--------------------------------------------------------------------------
  def cant_use?
    return @cont_use
  end
end
#==============================================================================
# ■ Scene_Teleport
#------------------------------------------------------------------------------
#  处理传送执行的类
#==============================================================================
class Scene_Teleport
  #--------------------------------------------------------------------------
  # ● 主处理
  #--------------------------------------------------------------------------
  def main
    $game_system.se_play($data_system.decision_se)
    @carol3_trans_white = false
    @carol3_map_sprite = Spriteset_Map.new
    @carol3_teleport_window = Window_Teleport.new
    if @carol3_teleport_window.cant_use?
      @carol3_teleport_window.index = -1
    else
      @carol3_teleport_window.index = 0
    end
    @carol3_teleport_window.active = true
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      carol3_update
      if $scene != self
        break
      end
    end   
    if @carol3_trans_white==true
      @carol3_white_sprite = Sprite.new
      @carol3_white_sprite.bitmap = Bitmap.new(640,480)
      @carol3_white_sprite.opacity = 0
      @carol3_white_sprite.bitmap.fill_rect(0, 0, 640, 480, Color.new(255,255,255,255))
      for i in 0..20
        @carol3_white_sprite.opacity += 15
        @carol3_teleport_window.opacity -= 12
        @carol3_teleport_window.contents_opacity -= 12
        Graphics.update
      end
      Graphics.freeze
      Graphics.transition(0)
      Graphics.update
      @carol3_map_sprite.dispose
      $game_map.setup($game_temp.player_new_map_id)
      $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
      $game_player.turn_down
      $game_player.straighten
      $game_map.autoplay      
      Graphics.frame_reset
      for i in 0..20
        @carol3_white_sprite.opacity -= 15
        Graphics.update
      end
      @carol3_white_sprite.dispose
      @carol3_teleport_window.dispose
      Graphics.freeze
    else
      Graphics.freeze
      @carol3_teleport_window.dispose
      @carol3_map_sprite.dispose
    end   
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def carol3_update
    @carol3_teleport_window.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
    if Input.trigger?(Input::C)
      if @carol3_teleport_window.index == -1
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Map.new
        return
      else        
        $game_temp.player_new_map_id = @carol3_teleport_window.map_id
        $game_temp.player_new_x = @carol3_teleport_window.map_x
        $game_temp.player_new_y = @carol3_teleport_window.map_y
        $game_temp.player_new_direction = @carol3_teleport_window.map_direction
        $game_temp.player_transferring = true
        $game_temp.transition_processing = true
        $game_temp.transition_name = ""
        $scene = Scene_Map.new
        @carol3_trans_white = true
        Audio.se_play("Audio/SE/" + "018-Teleport01",100,100)
        return
      end
    end   
  end
end

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================


点评

楼主还需根据楼下的回复内容对脚本进行相应的修改  发表于 2013-9-23 23:38

Lv3.寻梦者

梦石
0
星屑
2749
在线时间
2630 小时
注册时间
2013-1-16
帖子
5657

贵宾

2
发表于 2013-9-22 22:09:25 | 只看该作者
复制完后插入在main之前
(Created by @喵kano)


施工现场:hotege.github.io
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
70 小时
注册时间
2010-10-16
帖子
36
3
 楼主| 发表于 2013-9-22 22:19:28 | 只看该作者
myownroc 发表于 2013-9-22 22:09
复制完后插入在main之前

不是 我的意思是怎么触发他的使用条件 怎么调用这个脚本!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2749
在线时间
2630 小时
注册时间
2013-1-16
帖子
5657

贵宾

4
发表于 2013-9-22 22:45:43 | 只看该作者
本帖最后由 myownroc 于 2013-9-23 00:07 编辑

事件中用脚本 $scene = Scene_Teleport.new 脚本中就是这么写的

@guoyq1988   能不能把出错的截图发上来?

点评

2333俺还以为是俺那个卫星地图……  发表于 2013-9-22 23:48
版主正解,不过我用了会出错。。。self.contents.draw_text(0,i*32,@width_temp,32,@carol3_towns[0],1)这句。。  发表于 2013-9-22 23:43
(Created by @喵kano)


施工现场:hotege.github.io
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
439 小时
注册时间
2013-3-2
帖子
710
5
发表于 2013-9-23 13:57:08 | 只看该作者
@myownroc

脚本设置那里我也设置了,地图也新建了,公共事件也有
还是出错








   
【RMXP共享】50个脚本整合的系统
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2749
在线时间
2630 小时
注册时间
2013-1-16
帖子
5657

贵宾

6
发表于 2013-9-23 15:47:34 | 只看该作者
本帖最后由 myownroc 于 2013-9-23 16:09 编辑

把self.contents.draw_text(0,i*32,@ width_temp,32,@carol3_towns[0],1) 改为 self.contents.draw_text(0,i*32,@ width_temp,32,@carol3_towns[0],1) 试试看 感觉这个脚本有点瑕疵。。。
@guoyq1988
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
439 小时
注册时间
2013-3-2
帖子
710
7
发表于 2013-9-23 21:41:40 | 只看该作者
myownroc 发表于 2013-9-23 15:47
把self.contents.draw_text(0,i*32,@ width_temp,32,@carol3_towns[0],1) 改为 self.contents.draw_text(0, ...




改完变这样了。。。

   
【RMXP共享】50个脚本整合的系统
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
439 小时
注册时间
2013-3-2
帖子
710
8
发表于 2013-9-23 22:28:29 | 只看该作者



最后的修改可以了

不过怎么变成是我在问问题而不是楼主在问。。。。

评分

参与人数 1星屑 +100 收起 理由
myownroc + 100 感谢帮忙测试

查看全部评分


   
【RMXP共享】50个脚本整合的系统
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
70 小时
注册时间
2010-10-16
帖子
36
9
 楼主| 发表于 2013-9-24 03:35:04 | 只看该作者
guoyq1988 发表于 2013-9-23 22:28
最后的修改可以了

不过怎么变成是我在问问题而不是楼主在问。。。。 ...

呵呵 其实我觉得还是用事件比较好一点  虽然有点麻烦
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
439 小时
注册时间
2013-3-2
帖子
710
10
发表于 2013-9-24 12:33:22 | 只看该作者
ldy5297213 发表于 2013-9-24 03:35
呵呵 其实我觉得还是用事件比较好一点  虽然有点麻烦

其实脚本和事件都各有千秋
如果只是要传送几个而已用事件就可以了
像以前冒险岛那样的回城卷,一张只能对应一个太麻烦了
(我的游戏已经弄了好几个这样的东西了,看到这个脚本,感觉那些东西可以删了
虽然XP可以分歧和变量传送,但感觉还是有点麻烦
这个脚本真心不错
可以设置很多传送点
可以在地图设置个NPC来开启记录点
以后就能传送了
也可以做出像问道的八卦令的效果
(这是我一直想要的效果)

另外也谢谢楼主提供了这个脚本
让我意外的得到想要的东西,谢谢

   
【RMXP共享】50个脚本整合的系统
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-28 06:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表