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

Project1

 找回密码
 注册会员
搜索
楼主: 浪使者
打印 上一主题 下一主题

[RMVX发布] 猜拳系统、钓鱼系统、符文系统、银行系统以及迷你地图

 关闭 [复制链接]

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

11
发表于 2008-9-12 06:33:29 | 只看该作者
问题是,如何标记关键字?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
41 小时
注册时间
2008-3-5
帖子
2072
12
发表于 2008-9-12 18:40:30 | 只看该作者
恩,精灵都出新的了,偶屏蔽~~~
你它囧一字母君谁记得……
当时那把剑离我的喉咙只有0.01工分。可是一柱香之后,这个女主人会深深的爱上我,虽然本人平生说了无数的谎话,可是这句最有效:“你应该这么做,我也应该死。
曾经有一取ID的机会放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。你的剑在我的咽喉上割下去吧!不用再犹豫了!如果上天能够给我一个再来一次的机会,我绝对会取个汉字君。如果非要给这ID加点修饰的话,我希望是……红色加粗……

回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

13
发表于 2008-9-13 02:22:30 | 只看该作者
精灵继续更新脚本。

  1. #===============================================================
  2. # ● [VX] ◦迷你地图 ◦ □
  3. # * 无须图片的迷你地图脚本,浪使者倾情汉化 *
  4. #--------------------------------------------------------------
  5. # ◦ by Woratana [原作者]
  6. # ◦ 用于 RPG Maker VX  
  7. # ◦ 最近更新: 09/06/2008
  8. # ◦ 版本: 1.0 Beta
  9. #--------------------------------------------------------------
  10. # ◦ 特别感谢: KGC 的 XP 迷你地图脚本,
  11. # 没有他的迷你地图脚本,这个就不会被做出来.
  12. # 精灵使者更新:请在注释的第一行写入关键字,关键字可以在下面添加。
  13. #--------------------------------------------------------------

  14. module MiniMap
  15.   #===========================================================================
  16.   # [START]迷你地图脚本设置部分 地图名前+[NOMAP] 不显示
  17.   #---------------------------------------------------------------------------
  18.   SWITCH_NO_MINIMAP = 10 #  打开这个开关的话就不显示迷你地图
  19.    
  20.   MAP_RECT = [410, 20, 100, 100] # 迷你地图的大小和位置
  21.   # [X, Y, Width, Height]
  22.   # 你可以用调用脚本的方法任意改变他:
  23.   # $game_system.minimap = [X, Y, Width, Height]

  24.   MAP_Z = 0 # 迷你地图的Z轴
  25.   # 增加这个数值,如果迷你地图显示在某些物体下面的话(被覆盖)。

  26.   GRID_SIZE = 8 # 引导大小,建议数值大于3.
  27.   
  28.   MINIMAP_BORDER_COLOR = Color.new(0, 0, 255, 160) # 色彩设定
  29.   # Color.new(Red, Green, Blue, Opacity)
  30.   MINIMAP_BORDER_SIZE = 2
  31.   
  32.   FOREGROUND_COLOR = Color.new(224, 224, 255, 160) # 可通过物颜色
  33.   BACKGROUND_COLOR = Color.new(0, 0, 0, 160) # 不可通过物颜色

  34.   USE_OUTLINE_PLAYER = true # 是否描绘的角色?
  35.   PLAYER_OUTLINE_COLOR = Color.new(0, 0, 0, 192) # 角色颜色
  36.   USE_OUTLINE_EVENT = true # 是否描绘特殊事件?(如商人、敌人NPC等)
  37.   EVENT_OUTLINE_COLOR = Color.new(255, 255, 255, 192) # 特殊事件颜色
  38.   
  39.   PLAYER_COLOR = Color.new(255, 0, 0, 192) # 角色颜色设定
  40.   #---------------------------------------------------------------------------

  41.   OBJECT_COLOR = {} # 不要改变或删除这一行!
  42.   #===============================================================
  43.   # * 设置关键字和颜色
  44.   #---------------------------------------------------------------
  45.   # ** 例如:
  46.   # OBJECT_COLOR['keyword'] = Color.new(Red, Green, Blue, Opacity)
  47.   #-------------------------------------------------------------
  48.   # * 'keyword': 你想放到公共事件里来显示的颜色
  49.   # ** 标记: 'keyword' 是很关键的!
  50.   # * Color.new(...): 你需要的颜色
  51.   # 你可输入 0 - 255 的可选色彩范围 (Red, Green, Blue, Opacity)
  52.   #-------------------------------------------------------------
  53.   OBJECT_COLOR['npc'] = Color.new(30,144,255,160)
  54.   OBJECT_COLOR['treasure'] = Color.new(0,255,255,160)
  55.   OBJECT_COLOR['enemy'] = Color.new(139,35,35,160)
  56.   OBJECT_COLOR['merchant'] = Color.new(255,255,0,160)
  57.   OBJECT_COLOR['teleport'] = Color.new(255,128,0,160)
  58.   OBJECT_COLOR['door'] = Color.new(0,255,128,160)
  59.   
  60.   
  61.   #===========================================================================
  62.   # * [说明] 标签:
  63.   #---------------------------------------------------------------------------
  64.   # 改变这些关闭迷你地图 & 或设置显示迷你地图~
  65.   # TAG_EVENT的关键字和OBJECT_COLOR关键字要对应。
  66.   #-----------------------------------------------------------------------
  67.   TAG_NO_MINIMAP = '[NOMAP]'
  68.   TAG_EVENT = ["npc","enemy","treasure","merchant","teleport","door"]
  69.   #---------------------------------------------------------------------------

  70.   #---------------------------------------------------------------------------
  71.   # [END] 迷你地图脚本设置部分
  72.   #===========================================================================
  73.   
  74.   def self.refresh
  75.     if $scene.is_a?(Scene_Map)
  76.       $scene.spriteset.minimap.refresh
  77.     end
  78.   end
  79.   
  80.   def self.update_object
  81.     if $scene.is_a?(Scene_Map)
  82.       $scene.spriteset.minimap.update_object_list
  83.     end
  84.   end
  85. end

  86. #==============================================================================
  87. # ■ RPG::MapInfo
  88. #==============================================================================
  89. class RPG::MapInfo
  90.   def name
  91.     return @name.gsub(/\[.*\]/) { }
  92.   end

  93.   def original_name
  94.     return @name
  95.   end

  96.   def show_minimap?
  97.     return [email protected]?(MiniMap::TAG_NO_MINIMAP)
  98.   end
  99. end
  100. #==============================================================================
  101. # ■ Game_System
  102. #==============================================================================
  103. class Game_System
  104.   attr_accessor :minimap
  105.   alias wora_minimap_gamsys_ini initialize
  106.   
  107.   def initialize
  108.     wora_minimap_gamsys_ini
  109.     @minimap = MiniMap::MAP_RECT
  110.   end
  111.   
  112.   def show_minimap
  113.     return !$game_switches[MiniMap::SWITCH_NO_MINIMAP]
  114.   end
  115. end
  116. #==============================================================================
  117. # ■ Game_Map
  118. #==============================================================================
  119. class Game_Map
  120.   alias wora_minimap_gammap_setup setup
  121.   def setup(map_id)
  122.     wora_minimap_gammap_setup(map_id)
  123.     @db_info = load_data('Data/MapInfos.rvdata') if @db_info.nil?
  124.     @map_info = @db_info[map_id]
  125.   end
  126.   
  127.   def show_minimap?
  128.     return @map_info.show_minimap?
  129.   end
  130. end
  131. #==============================================================================
  132. # ■ Game_Event
  133. #==============================================================================
  134. class Game_Event < Game_Character
  135.   def mm_comment?(comment, return_comment = false )
  136.     if [email protected]?
  137.       for i in [email protected] - 1
  138.         next if @list[i].code != 108
  139.         if comment.include?(@list[i].parameters[0])
  140.           return @list[i].parameters[0] if return_comment
  141.           return true
  142.         end
  143.       end
  144.     end
  145.     return '' if return_comment
  146.     return false
  147.   end
  148. end

  149. #==============================================================================
  150. # ■ Game_MiniMap
  151. #------------------------------------------------------------------------------
  152. class Game_MiniMap
  153.   def initialize(tilemap)
  154.     @tilemap = tilemap
  155.     refresh
  156.   end

  157.   def dispose
  158.     @border.bitmap.dispose
  159.     @border.dispose
  160.     @map_sprite.bitmap.dispose
  161.     @map_sprite.dispose
  162.     @object_sprite.bitmap.dispose
  163.     @object_sprite.dispose
  164.     @position_sprite.bitmap.dispose
  165.     @position_sprite.dispose
  166.   end

  167.   def visible
  168.     return @map_sprite.visible
  169.   end

  170.   def visible=(value)
  171.     @map_sprite.visible = value
  172.     @object_sprite.visible = value
  173.     @position_sprite.visible = value
  174.     @border.visible = value
  175.   end

  176.   def refresh
  177.     @mmr = $game_system.minimap
  178.     map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3])
  179.     grid_size = [MiniMap::GRID_SIZE, 1].max

  180.     @x = 0
  181.     @y = 0
  182.     @size = [map_rect.width / grid_size, map_rect.height / grid_size]

  183.     @border = Sprite.new
  184.     @border.x = map_rect.x - MiniMap::MINIMAP_BORDER_SIZE
  185.     @border.y = map_rect.y - MiniMap::MINIMAP_BORDER_SIZE
  186.     b_width = map_rect.width + (MiniMap::MINIMAP_BORDER_SIZE * 2)
  187.     b_height = map_rect.height + (MiniMap::MINIMAP_BORDER_SIZE * 2)
  188.     @border.bitmap = Bitmap.new(b_width, b_height)
  189.     @border.bitmap.fill_rect(@border.bitmap.rect, MiniMap::MINIMAP_BORDER_COLOR)
  190.     @border.bitmap.clear_rect(MiniMap::MINIMAP_BORDER_SIZE, MiniMap::MINIMAP_BORDER_SIZE,
  191.     @border.bitmap.width - (MiniMap::MINIMAP_BORDER_SIZE * 2),
  192.     @border.bitmap.height - (MiniMap::MINIMAP_BORDER_SIZE * 2))
  193.    
  194.     @map_sprite = Sprite.new
  195.     @map_sprite.x = map_rect.x
  196.     @map_sprite.y = map_rect.y
  197.     @map_sprite.z = MiniMap::MAP_Z
  198.     bitmap_width = $game_map.width * grid_size + map_rect.width
  199.     bitmap_height = $game_map.height * grid_size + map_rect.height
  200.     @map_sprite.bitmap = Bitmap.new(bitmap_width, bitmap_height)
  201.     @map_sprite.src_rect = map_rect

  202.     @object_sprite = Sprite.new
  203.     @object_sprite.x = map_rect.x
  204.     @object_sprite.y = map_rect.y
  205.     @object_sprite.z = MiniMap::MAP_Z + 1
  206.     @object_sprite.bitmap = Bitmap.new(bitmap_width, bitmap_height)
  207.     @object_sprite.src_rect = map_rect

  208.     @position_sprite = Sprite_Base.new
  209.     @position_sprite.x = map_rect.x + @size[0] / 2 * grid_size
  210.     @position_sprite.y = map_rect.y + @size[1] / 2 * grid_size
  211.     @position_sprite.z = MiniMap::MAP_Z + 2
  212.    
  213.     bitmap = Bitmap.new(grid_size, grid_size)
  214.     # Player's Outline
  215.     if MiniMap::USE_OUTLINE_PLAYER and MiniMap::GRID_SIZE >= 3
  216.       bitmap.fill_rect(bitmap.rect, MiniMap::PLAYER_OUTLINE_COLOR)
  217.       brect = Rect.new(bitmap.rect.x + 1, bitmap.rect.y + 1, bitmap.rect.width - 2,
  218.         bitmap.rect.height - 2)
  219.       bitmap.clear_rect(brect)
  220.     else
  221.       brect = bitmap.rect
  222.     end
  223.    
  224.     bitmap.fill_rect(brect, MiniMap::PLAYER_COLOR)
  225.     @position_sprite.bitmap = bitmap

  226.     draw_map
  227.     update_object_list
  228.     draw_object
  229.     update_position
  230.   end

  231.   def draw_map
  232.     bitmap = @map_sprite.bitmap
  233.     bitmap.fill_rect(bitmap.rect, MiniMap::BACKGROUND_COLOR)
  234.     map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3])
  235.     grid_size = [MiniMap::GRID_SIZE, 1].max
  236.    
  237.     $game_map.width.times do |i|
  238.       $game_map.height.times do |j|
  239.         if !$game_map.passable?(i, j)
  240.           next
  241.         end
  242.         rect = Rect.new(map_rect.width / 2 + grid_size * i,
  243.           map_rect.height / 2 + grid_size * j,
  244.           grid_size, grid_size)
  245.         if grid_size >= 3
  246.           if !$game_map.passable?(i, j)
  247.             rect.height -= 1
  248.             rect.x += 1
  249.             rect.width -= 1
  250.             rect.width -= 1
  251.             rect.y += 1
  252.             rect.height -= 1
  253.           end
  254.         end
  255.         bitmap.fill_rect(rect, MiniMap::FOREGROUND_COLOR)
  256.       end
  257.     end
  258.   end

  259.     def update_object_list
  260.     @object_list = {}
  261.     $game_map.events.values.each do |e|
  262.       comment = e.mm_comment?(MiniMap::TAG_EVENT, true)
  263.       if comment != ''
  264.         #type = comment.gsub(/#{MiniMap::TAG_EVENT}/){}.gsub(/\s+/){}
  265.         type = comment
  266.         @object_list[type] = [] if @object_list[type].nil?
  267.         @object_list[type] << e
  268.       end
  269.     end
  270.   end

  271.   def draw_object
  272.     bitmap = @object_sprite.bitmap
  273.     bitmap.clear
  274.     map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3])
  275.     grid_size = [MiniMap::GRID_SIZE, 1].max
  276.     rect = Rect.new(0, 0, grid_size, grid_size)
  277.     mw = map_rect.width / 2
  278.     mh = map_rect.height / 2

  279.     @object_list.each do |key, events|
  280.       color = MiniMap::OBJECT_COLOR[key]
  281.       next if events.nil? or color.nil?
  282.       events.each do |obj|
  283.         #if !obj.character_name.empty?
  284.           rect.x = mw + obj.real_x * grid_size / 256
  285.           rect.y = mh + obj.real_y * grid_size / 256
  286.           # Event's Outline
  287.           if MiniMap::USE_OUTLINE_EVENT and MiniMap::GRID_SIZE >= 3
  288.             bitmap.fill_rect(rect, MiniMap::EVENT_OUTLINE_COLOR)
  289.             brect = Rect.new(rect.x + 1, rect.y + 1, rect.width - 2,
  290.             rect.height - 2)
  291.             bitmap.clear_rect(brect)
  292.           else
  293.             brect = bitmap.rect
  294.           end
  295.           bitmap.fill_rect(brect, color)
  296.         #end
  297.       end
  298.     end
  299.   end

  300.   def update
  301.     if @mmr != $game_system.minimap
  302.       dispose
  303.       refresh
  304.     end
  305.     update_object_list
  306.     draw_object
  307.     update_position
  308.     if @map_sprite.visible
  309.       @map_sprite.update
  310.       @object_sprite.update
  311.       @position_sprite.update
  312.     end
  313.   end

  314.   def update_position
  315.     map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3])
  316.     grid_size = [MiniMap::GRID_SIZE, 1].max
  317.     sx = $game_player.real_x * grid_size / 256
  318.     sy = $game_player.real_y * grid_size / 256
  319.     @map_sprite.src_rect.x = sx
  320.     @map_sprite.src_rect.y = sy
  321.     @object_sprite.src_rect.x = sx
  322.     @object_sprite.src_rect.y = sy
  323.   end
  324. end
  325. #==============================================================================
  326. # ■ Spriteset_Map
  327. #------------------------------------------------------------------------------
  328. class Spriteset_Map
  329.   attr_reader :minimap
  330.   alias wora_minimap_sprsetmap_ini initialize
  331.   alias wora_minimap_sprsetmap_dis dispose
  332.   alias wora_minimap_sprsetmap_upd update
  333.   
  334.   def initialize
  335.     wora_minimap_sprsetmap_ini
  336.     if $game_map.show_minimap?
  337.       @minimap = Game_MiniMap.new(@tilemap)
  338.       $game_system.show_minimap = true if $game_system.show_minimap.nil?
  339.       @minimap.visible = $game_system.show_minimap
  340.     end
  341.   end
  342.   
  343.   def dispose
  344.     @minimap.dispose if [email protected]?
  345.     wora_minimap_sprsetmap_dis
  346.   end

  347.   def update
  348.     if [email protected]?
  349.       if $game_system.show_minimap
  350.         @minimap.visible = true
  351.         @minimap.update_object_list
  352.         @minimap.update
  353.       else
  354.         @minimap.visible = false
  355.       end
  356.     end
  357.     wora_minimap_sprsetmap_upd
  358.   end
  359. end
  360. #==============================================================================
  361. # ■ Scene_Map
  362. #------------------------------------------------------------------------------
  363. class Scene_Map < Scene_Base
  364.   attr_reader :spriteset
  365. end
复制代码

更新:
稍微扩大了地图的大小。
更新了:可以用非行走图的图块显示事件(例如传送等)
新添关键字teleport(传送点) 和door(门)
再度更新:
修正了VX事件更新完毕以后没有及时刷新的问题。
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

14
发表于 2008-9-13 02:28:57 | 只看该作者
话说这个是高级缩略图吧,
很有价值……{/hx}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-6-16
帖子
113
15
 楼主| 发表于 2008-9-13 04:34:51 | 只看该作者
以下引用精灵使者于2008-9-11 22:33:29的发言:

问题是,如何标记关键字?


Orz~
原作是有标记的,但不在脚本里面,另外写,在人物事件编辑的第一行 分类插入以下脚本

标记:MMEV merchant     (标识商人)
标记:MMEV npc          (标识一般的NPC)
标记:MMEV enemy        (标识敌人)

真不好意思,当时发帖疏忽漏掉了。。

PS: 感谢 精灵使者 的更新脚本!~
流浪猎人 最新进展: 人物设定:11% 场景界面:3% 剧情构思:11% 物品装备技能:21% 怪物设定:15% 下载地址: http://www.tq27.cn/game/流浪猎人0251.exe 发布游戏:0.251版本
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

16
发表于 2008-9-13 06:28:24 | 只看该作者
我更新的那个只要在第一行注释里写关键词就可以了
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-9-12
帖子
953
17
发表于 2008-9-13 19:07:53 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

18
发表于 2008-9-13 20:09:59 | 只看该作者
9月9日继续修正脚本,修正一下事件更改后没有及时刷新的错误等等。
这样就完美了。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

19
发表于 2008-9-13 22:34:39 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

20
发表于 2008-9-14 06:03:17 | 只看该作者
以下引用沉影不器于2008-9-13 14:34:39的发言:

有没有不同长相的标志?不一定只有颜色差别...精灵使者继续更新吧

长相的标志……是不是需要修改图片啊……这个似乎不需要素材
你如果想那样的话可以试着把这个东西VX化一下吧。
http://rpg.blue/web/htm/news294.htm
我似乎最远只能做到这里了……还是脚本白痴一个
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-22 10:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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