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

Project1

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

[已经解决] 关于利用指令马修改选项内容?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
171 小时
注册时间
2010-10-23
帖子
30
跳转到指定楼层
1
发表于 2011-1-27 13:39:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 andyss129 于 2011-1-28 00:45 编辑

请问事件中如何改写选项的名称?

我制作了一个传送的水晶但是必须要到新城镇才会开启选项

我利用条件分歧+选项来实现

一开始玩家对话会显示  1.无 2.无 3.无
玩家到新城镇再对话     1.某城镇2.无3.无

请问有办法利用指令码存取修改选项内容嘛??

Lv1.梦旅人

梦石
0
星屑
50
在线时间
120 小时
注册时间
2010-11-19
帖子
160
2
发表于 2011-1-27 16:53:23 | 只看该作者
回复 andyss129 的帖子

如果只是传送事件
利用脚本吧
  1. #==============================================================================
  2. # 易用型传送点系统 by 沉影不器
  3. #------------------------------------------------------------------------------
  4. # 功能描述: ① 传送点上按确定键即激活传送点,各个已激活的传送点之间可相互传送.
  5. #           ② 指向当前所在地图的选项不传送; 要求金钱的地图,钱不够不传送.
  6. #           ③ 为节省位置,折成两列显示.
  7. #------------------------------------------------------------------------------
  8. # 使用说明: ① 复制脚本插入到main之前
  9. #           ② 传送点的事件脚本中写 $scene = Scene_Way_points.new(@event_id)
  10. #           ③ 给每张有传送点的地图取个像样的名称
  11. #           ④ 要求金钱的地图,在名称后添加",金钱数"(不包括引号),详见范例
  12. #           ⑤ 参数设定在脚本第17-22行
  13. #==============================================================================
  14. # 参数设定
  15. #==============================================================================
  16. module WP
  17.   WP_WIDTH = 200          # 单列地图选项的宽度(共两列)
  18.   WP_MAX = 5              # 传送窗体显示的传送点数
  19.   WP_ANIMATION = 40       # 传送时显示的动画 id
  20.   WP_HIDE_WINDOW = true   # 传送时隐藏窗体
  21.   WP_ICON = 153           # 地图选项的图标 id
  22.   # 您也可以为每个地图设置单独图标
  23.   SELF_ICON = false       # 打开此开关将描绘Icons文件夹下与地图名相同的图标
  24. end

  25. #==============================================================================
  26. # ■ Game_System
  27. #==============================================================================
  28. class Game_System
  29.   #--------------------------------------------------------------------------
  30.   # ● 定义实例变量
  31.   #--------------------------------------------------------------------------
  32.   attr_accessor :way_points        # 传送点选项
  33.   #--------------------------------------------------------------------------
  34.   # ● 初始化对象
  35.   #--------------------------------------------------------------------------
  36.   alias ini initialize
  37.   def initialize
  38.     ini;@way_points = []
  39.   end
  40. end

  41. #==============================================================================
  42. # □ Window_WP_Help
  43. #==============================================================================
  44. class Window_WP_Help < Window_Base
  45.   #--------------------------------------------------------------------------
  46.   # ○ 初始化对像
  47.   #--------------------------------------------------------------------------
  48.   def initialize(x, y)
  49.     super(x, y, WP::WP_WIDTH * 2, 80)
  50.     self.opacity  = 192
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ○ 设置文本
  54.   #     text1  : 地图名
  55.   #     text2  : 金钱数
  56.   #--------------------------------------------------------------------------
  57.   def set_text(text1, text2)
  58.     if text1 != @text1 or text2 != @text2
  59.       @text1 = text1
  60.       @text2 = text2
  61.       # 再描绘文本
  62.       self.contents.clear
  63.       self.contents.font.color = system_color
  64.       self.contents.draw_text(4, 0, self.width - 40, WLH, text1 + "传送点")
  65.       self.contents.font.color = normal_color
  66.       if text2 == 0
  67.         text2 = "免费传送"
  68.       else
  69.         text2 = "花费 " + text2.to_s + Vocab::gold
  70.       end
  71.       self.contents.draw_text(4, WLH, self.width - 40, WLH, text2, 2)
  72.     end
  73.     self.visible = true
  74.   end
  75. end

  76. #==============================================================================
  77. # □ Window_Way_Points
  78. #==============================================================================
  79. class Window_Way_Points < Window_Selectable
  80.   #--------------------------------------------------------------------------
  81.   # ○ 初始化
  82.   #     event_id  : 事件 id
  83.   #--------------------------------------------------------------------------
  84.   def initialize(event_id)
  85.     # 设定部分
  86.     setup($game_map.map_id, event_id)
  87.     @item_max = $game_system.way_points.size
  88.     # 计算 super 参数
  89.     width = WP::WP_WIDTH * 2
  90.     if WP::WP_MAX >= @item_max
  91.       height = (@item_max+1)/2*WLH
  92.     else
  93.       height = (WP::WP_MAX+1)/2*WLH
  94.     end
  95.     x = Graphics.width/2 - width/2
  96.     y = Graphics.height/2 - height/2 + 40
  97.     super(x, y, width, height + 32)
  98.     @column_max = 2
  99.     # 指定光标于当前地图选项
  100.     self.index = now_index($game_map.map_id)
  101.     self.opacity  = 192
  102.     refresh
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ○ 设定部分
  106.   #     map_id    : 地图 id
  107.   #     event_id  : 事件 id
  108.   #--------------------------------------------------------------------------
  109.   def setup(map_id, event_id)
  110.     # 获取地图信息
  111.     mapinfos = load_data("Data/MapInfos.rvdata")
  112.     # 地图名
  113.     map_name = mapinfos[map_id].name.split(/,/)[0]
  114.     # 传送费用(放空时为0)
  115.     cost = mapinfos[map_id].name.split(/,/)[1].to_i.abs
  116.     # way_points 结构
  117.     result = [map_id, event_id, map_name, cost]
  118.     # 不重复时添加点
  119.     unless $game_system.way_points.include? result
  120.       $game_system.way_points << result
  121.     end
  122.   end
  123.   #--------------------------------------------------------------------------
  124.   # ○ 获取当前地图选项 index
  125.   #     map_id    : 地图 id
  126.   #--------------------------------------------------------------------------
  127.   def now_index(map_id)
  128.     for i in 0...$game_system.way_points.size
  129.       if $game_system.way_points[i][0] == map_id
  130.         return i
  131.       end
  132.     end
  133.     # 默认值为 0
  134.     return 0
  135.   end
  136.   #--------------------------------------------------------------------------
  137.   # ○ 是否能传送
  138.   #     index     : 选项编号
  139.   #--------------------------------------------------------------------------
  140.   def transportable?(index)
  141.     # 未开启任何传送点时为假
  142.     return false if $game_system.way_points.empty?
  143.     map_id = $game_system.way_points[index][0]
  144.     cost = $game_system.way_points[index][3]
  145.     # 不是当前地图,且足够金钱时为真
  146.     return (map_id != $game_map.map_id and cost <= $game_party.gold)
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   # ○ 刷新
  150.   #--------------------------------------------------------------------------
  151.   def refresh
  152.     @item_max = $game_system.way_points.size
  153.     create_contents
  154.     for i in 0...@item_max
  155.       draw_item(i)
  156.     end
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ○ 描绘项目
  160.   #     index : 项目编号
  161.   #--------------------------------------------------------------------------
  162.   def draw_item(index)
  163.     rect = item_rect(index)
  164.     self.contents.clear_rect(rect)
  165.     way_point = $game_system.way_points[index]
  166.     if way_point != nil
  167.       rect.width -= 4
  168.       enabled = transportable?(index)
  169.       draw_map_name(way_point[2], rect.x, rect.y, enabled)
  170.     end
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # ○ 描绘地图名
  174.   #     map_name     : 地图名
  175.   #     x            : 描绘目标 X 坐标
  176.   #     y            : 描绘目标 Y 坐标
  177.   #     enabled      : 有效标志。false 为描绘为半透明
  178.   #--------------------------------------------------------------------------
  179.   def draw_map_name(map_name, x, y, enabled = true)
  180.     if map_name != ""
  181.       if WP::SELF_ICON
  182.         # 地图名做图标文件名
  183.         draw_self_icon(map_name, x, y, enabled)
  184.       else
  185.         # 默认图标
  186.         draw_icon(WP::WP_ICON, x, y, enabled)
  187.       end
  188.       self.contents.font.color = normal_color
  189.       self.contents.font.color.alpha = enabled ? 255 : 128
  190.       self.contents.draw_text(x + 24, y, 172, WLH, map_name)
  191.     end
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ○ 描绘指定名图标
  195.   #     file_name  : 图标文件名
  196.   #     x          : 描绘目标 X 坐标
  197.   #     y          : 描绘目标 Y 坐标
  198.   #     enabled    : 有效标志。false 为半透明显示
  199.   #--------------------------------------------------------------------------
  200.   def draw_self_icon(file_name, x, y, enabled = true)
  201.     bitmap = Cache.load_bitmap("Graphics/Icons/", file_name)
  202.     rect = Rect.new(0, 0, 24, 24)
  203.     self.contents.blt(x, y, bitmap, rect, enabled ? 255 : 128)
  204.   end
  205.   #--------------------------------------------------------------------------
  206.   # ○ 获取当前项
  207.   #--------------------------------------------------------------------------
  208.   def item
  209.     return $game_system.way_points[self.index]
  210.   end
  211.   #--------------------------------------------------------------------------
  212.   # ○ 刷新帮助文本
  213.   #--------------------------------------------------------------------------
  214.   def update_help
  215.     # 地图名称
  216.     text1 = $game_system.way_points[self.index][2]
  217.     # 费用
  218.     text2 = $game_system.way_points[self.index][3]
  219.     @help_window.set_text(text1,text2)
  220.   end
  221. end

  222. #==============================================================================
  223. # □ Scene_Way_Point
  224. #==============================================================================
  225. class Scene_Way_Point < Scene_Base
  226.   #--------------------------------------------------------------------------
  227.   # ○ 初始化对像
  228.   #     event_id   : 当前事件 id
  229.   #--------------------------------------------------------------------------
  230.   def initialize(event_id)
  231.     @event_id = event_id
  232.   end
  233.   #--------------------------------------------------------------------------
  234.   # ○ 开始处理
  235.   #--------------------------------------------------------------------------
  236.   def start
  237.     ##create_menu_background
  238.     # 为了显示动画
  239.     @map_sprite = Spriteset_Map.new
  240.     @way_points_window = Window_Way_Points.new(@event_id)
  241.     x = @way_points_window.x
  242.     y = @way_points_window.y - 80
  243.     @help_window = Window_WP_Help.new(x, y)
  244.     @way_points_window.help_window = @help_window
  245.   end
  246.   #--------------------------------------------------------------------------
  247.   # ○ 更新画面
  248.   #--------------------------------------------------------------------------
  249.   def update
  250.     # 刷新窗口
  251.     @help_window.update
  252.     @way_points_window.update
  253.     # 按下取消键的情况下
  254.     if Input.trigger?(Input::B)
  255.       Sound.play_cancel
  256.       $scene = Scene_Map.new
  257.       return
  258.     end
  259.     # 按下确定键的情况下
  260.     if Input.trigger?(Input::C)
  261.       index = @way_points_window.index
  262.       # 排除无法传送的情况
  263.       unless @way_points_window.transportable?(index)
  264.         Sound.play_buzzer
  265.       else
  266.          
  267.         # 传送
  268.         map_id = @way_points_window.item[0]
  269.         trans(map_id)
  270.         # 扣钱
  271.         $game_party.gain_gold(-$game_system.way_points[index][3])
  272.         
  273.       
  274.         # 动画(Iselia雪的方法)
  275.         $game_player.animation_id = WP::WP_ANIMATION
  276.         # vx不同于xp的动画刷新计算
  277.         duration = $data_animations[WP::WP_ANIMATION].frame_max * 4 + 1
  278.         duration.times do
  279.           Graphics.update
  280.           @map_sprite.update
  281.          
  282.         end
  283.         $scene = Scene_Map.new
  284.         
  285.       
  286.         return
  287.       end
  288.     end
  289.   end
  290.   #--------------------------------------------------------------------------
  291.   # ○ 结束处理
  292.   #--------------------------------------------------------------------------
  293.   def terminate
  294.     ##dispose_menu_background
  295.     @map_sprite.dispose
  296.     @way_points_window.dispose
  297.     @help_window.dispose
  298.   end
  299.   #--------------------------------------------------------------------------
  300.   # ○ 取得传送点坐标
  301.   #     map_id : 地图编号
  302.   #--------------------------------------------------------------------------
  303.   def way_point_xy(map_id)
  304.     new_map = load_data(sprintf("Data/Map%03d.rvdata", map_id))
  305.     index = @way_points_window.index
  306.     event_id = $game_system.way_points[index][1].to_i
  307.     return [new_map.events[event_id].x,new_map.events[event_id].y]
  308.   end
  309.   #--------------------------------------------------------------------------
  310.   # ○ 传送
  311.   #     map_id : 地图编号
  312.   #--------------------------------------------------------------------------
  313.   def trans(map_id)
  314.     # 设定窗体可视性
  315.     @way_points_window.visible = @help_window.visible = !WP::WP_HIDE_WINDOW
  316.     event_xy = way_point_xy(map_id)
  317.     # 无法取得坐标,或移动中
  318.     unless event_xy == nil or $game_player.transfer?
  319.       $game_player.reserve_transfer(map_id, event_xy[0], event_xy[1], 0)
  320.     end
  321.   end
  322. end
复制代码
在水晶那边编制事件
放入$scene=Scene_Way_Point.new(@event_id)

就可以了

点评

感谢但是还是希望用纯事件  发表于 2011-1-28 01:20
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
189 小时
注册时间
2009-12-15
帖子
343
3
发表于 2011-1-27 22:43:45 | 只看该作者
其实不需要脚本,只要在新城镇进入的必经之中处加入事件,令开关X打开,然后在水晶处加入条件分歧,甚至新开一页,在开关X打开时出现新选项就可以了

点评

这样的游戏就少了自由度吧~就看楼主做的是什么类型的咯~剧情向的话就用这个吧^^  发表于 2011-1-28 18:55
这想法不错 学习了!!  发表于 2011-1-28 00:44

评分

参与人数 1星屑 +2 收起 理由
andyss129 + 2

查看全部评分

第二部游戏 《求职大作战》http://rpg.blue/thread-165630-1-1.html
第一部游戏 《天宇传奇》http://rpg.blue/thread-140339-1-1.html
柳柳新人/进阶教程,视频全集 http://rpg.blue/thread-164472-1-1.html
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-12 13:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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