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

Project1

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

[原创发布] 【RMXP】仿卫星地图大地图【懒人莫用】

[复制链接]

Lv2.观梦者 (暗夜天使)

万兽

梦石
0
星屑
597
在线时间
2271 小时
注册时间
2006-11-4
帖子
4868

贵宾

跳转到指定楼层
 楼主| 发表于 2013-3-6 01:15:34 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 弗雷德 于 2013-5-25 12:56 编辑

功能其实很简单,就是一个大地图类,脚本还不到200行。但是要配合美工才能有比较好的效果,所以说懒人勿用。

地图需要自己绘制,小地图也是,地名也是,聚焦坐标需要自己计算……总之懒人勿用

效果大概就是:玩家按左右移动竖线,按上下移动横线,当纵贯线的交点坐标与最近的圆点距离在X值之内时,会自动聚焦,

按下确定键进行场所移动。设置方法在脚本都有写。










下面是俺游戏中的效果,总之美化靠自己:懒人勿用




下载地址:戳这里

提取码:znle

俺很少发布技术,因为俺的东西都需要美工的配合,而且都不是插件类。

最后:懒人勿用!

点评

帮你改了一个版本看看  发表于 2013-3-8 22:07
话说有点像游戏王TF系列的效果,大赞。另外……那个酒池肉林亮了……  发表于 2013-3-7 09:05
能用站內附件上傳不?迅雷我動不了啊...TUT  发表于 2013-3-6 21:31
格斗类3D游戏 比如虐杀原型之类的 倒是经常看到这类地图功能 但是RM这样的2D RPG很少见这种功能呢~  发表于 2013-3-6 20:21
以前只看到只显示大地图,没有角色位置标注的  发表于 2013-3-6 13:01

评分

参与人数 11星屑 +301 收起 理由
牛肉面 + 100 熊叔威武啊!
【凌】 + 4 精品文章
aaalbx + 12 有种Psycho Pass的感觉……
国猪eu + 7 很霸气的脚本
y610407721 + 12 这个用来做解密游戏不错也~
紫英晓狼1130 + 6 18400
wingzeroplus + 12 精品文章
月下耶鲁夫 + 66 必须塞糖
kefafa + 20 正好想要,瞌睡遇见了枕头~
芯☆淡茹水 + 12 精品文章

查看全部评分

Lv3.寻梦者

梦石
0
星屑
2692
在线时间
295 小时
注册时间
2016-5-18
帖子
35
22
发表于 2018-5-10 15:25:50 | 只看该作者
链接坑了
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
504
在线时间
43 小时
注册时间
2018-2-19
帖子
66
21
发表于 2018-2-21 20:30:14 | 只看该作者
不错,感谢楼主分享。
梦想是谁创造的,梦想是自己创造的。站起来吧。
                      梦想由我们自己来创造。
  无论未来有多么困难,在下都会尽全力走下去。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
504
在线时间
43 小时
注册时间
2018-2-19
帖子
66
20
发表于 2018-2-20 22:02:40 | 只看该作者
感觉真不错,谢谢楼主分享。
梦想是谁创造的,梦想是自己创造的。站起来吧。
                      梦想由我们自己来创造。
  无论未来有多么困难,在下都会尽全力走下去。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2065
在线时间
164 小时
注册时间
2014-6-21
帖子
120
19
发表于 2018-2-7 10:09:48 | 只看该作者
宇治松千夜 发表于 2018-2-3 12:19
代码来自《晴空狂想曲》,作者:阻激夹域
增设了多张大地图的功能~ ...

这个怎么调用呢

点评

有范例就好了 有点没弄懂  发表于 2018-2-8 08:21
以及,请勿挖坟。可以单开贴子讨论和提问,有这段脚本的前辈还是不少的。  发表于 2018-2-7 17:39
68行, case $game_variables[451],进入的大地图是由变量451决定的,在进入大地图的事件里设定好变量就好,220-256行同理;128行调用的是地图名字美化相关  发表于 2018-2-7 17:35
#TAGMAP[1] = [400,139,14,4,8],后面,第三、四个数字是【你设定的点能够去到的地图】中的坐标,第五个数字是朝向,2上4左6右8下  发表于 2018-2-7 17:30
11至54行都是示例。注释可能比较难懂,#TAGMAP[1] = [400,139,14,4,8],这里前两个数字是【你要设定的点】在大地图的x坐标和y坐标,大地图填满是640*480  发表于 2018-2-7 17:28
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
586
在线时间
53 小时
注册时间
2018-1-5
帖子
20
18
发表于 2018-2-3 12:19:08 | 只看该作者


  1. ALLMAP = 224 #记录已开启地图的变量的ID。
  2. OPENMAP = 225 #记录已开启地图的变量的ID。
  3. FR  = 20 #聚焦半径,当交叉点的坐标离地图目标距离在20个像素以内时,会自动移动靠近。
  4. module SATEMAP
  5.   #定义目标地图,举例:
  6.   #TAGMAP[1] = [400,139,14,4,8]
  7.   #1表示地图ID,400和139表示点在大地图上的坐标,14和4表示场所移动后的坐标。8是朝向。
  8.   #也就是说,当横轴与纵轴的交叉点坐标为400,139时,玩家按下确定键,角色就会面朝上移动到
  9.   #1号地图坐标为14,4的地点。
  10.   TAGMAP = []
  11.   TAGMAP[11] = [298,23,6,6,2]#森林,面朝右
  12.   TAGMAP[14] = [393,160,13,11,2]#山村,面朝右
  13.   TAGMAP[17] = [318,248,21,5,2]#沉默,面朝上
  14.   TAGMAP[20] = [318,195,54,15,4]#沉默,面朝上
  15.   TAGMAP[24] = [521,463,28,24,4]
  16.   TAGMAP[26] = [466,385,10,58,8]
  17.   TAGMAP[27] = [523,225,1,36,6]
  18.   TAGMAP[30] = [589,347,22,30,6]
  19.   TAGMAP[32] = [541,351,12,24,8]
  20.   TAGMAP[36] = [184,196,28,33,8]
  21.     TAGMAP[33] = [12,334,4,17,8]
  22.     TAGMAP[37] = [216,323,45,9,8]
  23.     TAGMAP[44] = [242,349,5,8,2]
  24.     TAGMAP[39] = [352,322,6,9,8]
  25.   PLACEMAP=[]
  26.   PLACEMAP[11] = [298,23]#森林,面朝右
  27.   PLACEMAP[12] = [219,67]#森林,面朝右
  28.   PLACEMAP[13] = [440,55]#森林,面朝右
  29.   PLACEMAP[14] = [393,160]#山村,面朝右
  30.   PLACEMAP[15] = [497,174]#森林,面朝右
  31.   PLACEMAP[16] = [316,186]#森林,面朝右
  32.   PLACEMAP[17] = [318,248]#沉默,面朝上
  33.   PLACEMAP[18] = [287,363]#沉默,面朝上
  34.   PLACEMAP[19] = [237,451]#沉默,面朝上
  35.   PLACEMAP[20] = [318,195]#沉默,面朝上
  36.   PLACEMAP[24] = [521,463]
  37.   PLACEMAP[25] = [393,428]
  38.   PLACEMAP[26] = [466,385]
  39.   PLACEMAP[27] = [523,225]
  40.   PLACEMAP[28] = [484,138]
  41.   PLACEMAP[29] = [593,45]
  42.   PLACEMAP[30] = [589,347]
  43.   PLACEMAP[32] = [541,351]
  44.   PLACEMAP[33] = [12,334]
  45.   PLACEMAP[34] = [39,385]
  46.   PLACEMAP[36] = [184,196]
  47.   PLACEMAP[37] = [216,323]
  48.   PLACEMAP[44] = [242,349]
  49.   PLACEMAP[39] = [352,322]
  50.   PLACEMAP[41] = [173,316]
  51.   PLACEMAP[38] = [284,322]
  52.   PLACEMAP[42] = [394,316]
  53.   PLACEMAP[40] = [484,324]
  54.   PLACEMAP[43] = [484,316]
  55. end
  56. #==============================================================================
  57. # ■ Scene_Satellite
  58. #------------------------------------------------------------------------------
  59. #  处理卫星地图画面
  60. #==============================================================================
  61. class Scene_Satellite
  62.   #--------------------------------------------------------------------------
  63.   # ● 初始化对像
  64.   #--------------------------------------------------------------------------
  65.   def initialize
  66.     @tagmap=SATEMAP::TAGMAP
  67.     @placemap=SATEMAP::PLACEMAP
  68.     case $game_variables[451]
  69.     when -1
  70.     @tagmap[11] = [365,306,6,6,2]
  71.     @tagmap[24] = [478,121,28,24,4]
  72.     @tagmap[36] = [184,196,28,33,8]
  73.     @placemap[11] = [365,306]
  74.     @placemap[24] = [478,121]
  75.     @placemap[36] = [184,196]
  76.     when 0
  77.     @tagmap[11] = [298,23,6,6,2]
  78.     @placemap[11] = [298,23]
  79.     when 1
  80.     @tagmap[24] = [521,463,28,24,4]
  81.     @placemap[24] = [521,463]
  82.     when 2
  83.   @tagmap[36] = [61,470,28,33,8]
  84.     @placemap[36] = [61,470]
  85.     end
  86.     @allmap_id = $game_variables[ALLMAP]
  87.     @focus = 0
  88.     @map_id = $game_map.map_id
  89.     @tag_lock = false
  90.     $mapdamage_obj.clear if $mapdamage_obj != nil && !$mapdamage_obj.canvas[1].disposed?
  91.     $mapchest_obj.clear if $mapchest_obj != nil && !$mapchest_obj.canvas[1].disposed?
  92.     $mapplayerbuff_obj.clear if $mapplayerbuff_obj != nil
  93.     end
  94.   #--------------------------------------------------------------------------
  95.   # ● 主处理
  96.   #--------------------------------------------------------------------------
  97.   def main
  98.     # 创建背景
  99.     @back = Sprite.new
  100.     case $game_variables[451]
  101.     when -1
  102.     @back.bitmap = Bitmap.new("Graphics/Systems/世界地图")
  103.     when 0
  104.     @back.bitmap = Bitmap.new("Graphics/Systems/地下水路")
  105.     when 1
  106.     @back.bitmap = Bitmap.new("Graphics/Systems/落岩崖")
  107.     when 2
  108.     @back.bitmap = Bitmap.new("Graphics/Systems/列车")
  109.     end
  110.     # 创建X轴
  111.     @mm_x = Sprite.new
  112.     @mm_x.bitmap = Bitmap.new("Graphics/Systems/mm_x")
  113.     @mm_x.y = 0
  114.     @mm_x.y = @placemap[@map_id][1] if @placemap[@map_id]!=nil
  115.     # 创建Y轴
  116.     @mm_y = Sprite.new
  117.     @mm_y.bitmap = Bitmap.new("Graphics/Systems/mm_y")
  118.     @mm_y.x = 0
  119.     @mm_y.x = @placemap[@map_id][0] if @placemap[@map_id]!=nil
  120.     # 创建地点缩略图
  121.     @mm_icon = Sprite.new
  122.     @mm_icon.bitmap = Bitmap.new("Graphics/Systems/Icon/"+@map_id.to_s) if @tagmap[@map_id]!=nil
  123.     @mm_icon.x = 0
  124.     @mm_icon.y = 144
  125.     # 创建地名
  126.     @mm_name = Sprite.new
  127.     if $game_variables[451]==-1
  128.     @mm_name.bitmap = Bitmap.new("Graphics/Systems/mapname/"+@map_id.to_s) if @tagmap[@map_id]!=nil
  129.     else
  130.     @mm_name.bitmap = Bitmap.new("Graphics/Systems/Name/"+@map_id.to_s) if @tagmap[@map_id]!=nil
  131.     end
  132.     @mm_name.x = 0
  133.     @mm_name.y = 320
  134. if $game_variables[451]==-1
  135.     @mm_icon.x = 32
  136.     @mm_icon.y = 224
  137.     @mm_name.x = 32
  138.     @mm_name.y = 416
  139. elsif $game_variables[451]==1
  140.     @mm_icon.x = 32
  141.     @mm_icon.y = 112
  142.     @mm_name.x = 32
  143.     @mm_name.y = 304
  144. elsif $game_variables[451]==2
  145.     @mm_icon.x = 224
  146.     @mm_icon.y = 64
  147.     @mm_name.x = 72
  148.     @mm_name.y = 32
  149.   end
  150.      # 执行过度
  151.     Graphics.transition(30, "Graphics/Transitions/019-Whorl01" )
  152.     # 主循环
  153.     loop do
  154.       # 刷新游戏画面
  155.       Graphics.update
  156.       # 刷新输入信息
  157.       Input.update
  158.       # 刷新画面
  159.       update
  160.       # 如果画面切换就中断循环
  161.       if $scene != self
  162.         break
  163.       end
  164.     end
  165.     # 装备过渡
  166.     Graphics.freeze
  167.     # 释放窗口
  168.     @back.dispose
  169.     @mm_x.dispose
  170.     @mm_y.dispose
  171.     @mm_name.dispose
  172.     @mm_icon.dispose
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # ● 刷新画面
  176.   #--------------------------------------------------------------------------
  177.   def update
  178.     @mm_icon.bitmap = Bitmap.new("Graphics/Systems/Icon/"+@map_id.to_s) if @tagmap[@map_id]!=nil
  179.     if $game_variables[451]==-1
  180.     @mm_name.bitmap = Bitmap.new("Graphics/Systems/mapname/"+@map_id.to_s) if @tagmap[@map_id]!=nil
  181.     else
  182.     @mm_name.bitmap = Bitmap.new("Graphics/Systems/Name/"+@map_id.to_s) if @tagmap[@map_id]!=nil
  183.     end
  184.     disjudge
  185.     # 按下 X 键的情况下
  186.     if Input.trigger?(Input::B)
  187.       # 演奏取消 SE
  188.      $game_system.se_play($data_system.cancel_se)
  189.      $scene = Scene_Map.new
  190.       return
  191.     end
  192.     #值可以随便定,但是要比校正范围小一定的值。
  193.     if Input.press?(Input::LEFT)   
  194.       if @mm_y.x>0
  195.       @mm_y.x -= 3
  196.       end
  197.      end
  198.     if Input.press?(Input::RIGHT)
  199.      if @mm_y.x<640
  200.       @mm_y.x += 3
  201.       end
  202.      end
  203.     if Input.press?(Input::UP)
  204.       if @mm_x.y>0
  205.       @mm_x.y -= 3
  206.      end
  207.     end
  208.     if Input.press?(Input::DOWN)
  209.       if @mm_x.y<480
  210.       @mm_x.y += 3
  211.       end
  212.     end
  213.     if Input.trigger?(Input::C)
  214.       if @tag_lock && $game_variables[OPENMAP].include?(@map_id)
  215.       $game_system.se_play($data_system.decision_se)
  216.       $game_screen.start_tone_change(Tone.new(-255,-255,-255,0), 0)
  217.       $scene = Scene_Map.new
  218.       $game_temp.player_transferring = true
  219.       case @map_id
  220.       when 11
  221.       $game_variables[2]="地下水路 上层"
  222.       $game_variables[451]=0
  223.       $game_switches[200]=true
  224.       $game_variables[198]=96
  225.       when 14
  226.       $game_variables[2]="地下水路 中层"
  227.       when 17
  228.       $game_variables[2]="地下水路 下层"
  229.       when 20
  230.       $game_variables[2]="马德莱镇"
  231.       $game_variables[451]=-2
  232.       $game_switches[200]=false
  233.       $game_variables[198]=72
  234.       when 24
  235.       $game_variables[2]="落岩崖 崖口"
  236.       $game_variables[451]=1
  237.       $game_switches[200]=true
  238.       $game_variables[198]=64
  239.       when 26,30
  240.       $game_variables[2]="落岩崖 兽道"
  241.       when 27
  242.       $game_variables[2]="落岩崖 崩落道"
  243.       when 32
  244.       $game_variables[2]="咸鱼金字塔"
  245.       when 36
  246.       $game_variables[2]="没有人在的站台"
  247.       $game_variables[451]=2
  248.       $game_switches[200]=true
  249.       $game_variables[198]=64
  250.       when 33,37
  251.       $game_variables[2]="魔导列车 后车厢"
  252.       when 39
  253.       $game_variables[2]="魔导列车 前车厢"
  254.       when 44
  255.       $game_variables[2]="法影之地"
  256.       end
  257.       $game_temp.player_new_map_id = @map_id
  258.       $game_temp.player_new_x=@tagmap[@map_id][2]
  259.       $game_temp.player_new_y=@tagmap[@map_id][3]
  260.       $game_temp.player_new_direction = @tagmap[@map_id][4]  
  261.       $game_screen.start_tone_change(Tone.new(0,0,0,0), 10)
  262.     else
  263.       $game_system.se_play($data_system.buzzer_se)
  264.     end
  265.     end
  266.   end
  267.   #--------------------------------------------------------------------------
  268.   # ● 实时判断
  269.   #--------------------------------------------------------------------------
  270.   def disjudge
  271.     for i in @allmap_id
  272.       ax = @tagmap[i][0]
  273.       ay = @tagmap[i][1]
  274.       x = @mm_y.x
  275.       y = @mm_x.y
  276.       f = FR**2
  277.       dis = (x-ax)**2 + (y-ay)**2
  278.       #自动校正范围,默认16个像素,根据大地图来定。
  279.       if dis <= f
  280.         if x> ax
  281.           @mm_y.x-=1
  282.         elsif x< ax
  283.           @mm_y.x+=1
  284.         end
  285.         if y> ay
  286.           @mm_x.y-=1
  287.         elsif y< ay
  288.           @mm_x.y+=1
  289.         end
  290.         @map_id = i
  291.       end
  292.       if @tagmap[@map_id]!=nil
  293.       dis2 = (x-@tagmap[@map_id][0])**2 + (y-@tagmap[@map_id][1])**2  
  294.       if dis2 < f
  295.         @tag_lock = true
  296.       else
  297.         @tag_lock = false
  298.       end
  299.       end
  300.     end
  301.   end
  302. end
复制代码


代码来自《晴空狂想曲》,作者:阻激夹域
增设了多张大地图的功能~
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2065
在线时间
164 小时
注册时间
2014-6-21
帖子
120
17
发表于 2018-2-2 08:41:12 | 只看该作者
链接已挂
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
250 小时
注册时间
2011-12-18
帖子
59
16
发表于 2014-7-7 00:40:35 | 只看该作者
本帖最后由 鱼剑浆糊 于 2014-7-7 00:43 编辑

请问如何设置某张地图只有某个事件之后才能在大地图中进入?比如说游戏一开始的时候不能在大地图中进入魔王城,但是游戏结尾让你去魔王城打败魔王,这时大地图才开放进入魔王城的选项
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
461 小时
注册时间
2008-11-19
帖子
607
15
发表于 2014-4-20 10:41:45 | 只看该作者
本帖最后由 sai90306 于 2014-4-20 10:43 编辑

求救!!把腳本加入GTBS系統後(也有將範例中的地圖一併複製過去)報錯了....
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
19 小时
注册时间
2013-12-26
帖子
10
14
发表于 2014-2-10 15:08:17 | 只看该作者
懒人勿用!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
33
在线时间
85 小时
注册时间
2009-7-19
帖子
21

开拓者

13
发表于 2013-8-26 01:05:17 | 只看该作者
楼主请问怎么设置大地图有好几张呢 到了第二张大地图 就使用第二张的地图?在脚本里要怎么改?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 04:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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