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

Project1

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

[已经过期] 关于家具摆设的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
41
在线时间
1026 小时
注册时间
2011-9-10
帖子
1415
跳转到指定楼层
1
 楼主| 发表于 2013-2-23 23:10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我想在游戏里面开设家具铺 [ 把“贵重物品”给改成家具... ...] ,当玩家购买此家具后,可以再家里面随意摆设。
==========================
我是这样子想的:
--------------------------------------
1. 玩家在商店购买家具 [ 比如“双人床” ]

2. 回家,随意在空地上按空格 [ 我在地上设置了透明事件 ],如图:


3. 会出现选项框,如图:


4. 当玩家选择摆设后,会进入物品栏,选择要摆设的家具

5. 关键点就来了!当玩家选择了某一样家具后,你会发现所有的事件都显示了这个家具... ... [ 会死人的= = ]

===========================
事件截图:
---------------------------------------






----------------------------------------
公共事件、家具设置截图:
----------------------------------------




============================
虽然我知道是怎么回事= = ,但是我不知道要怎么弄...

并且,一屋子的事件似乎好卡= = ,所以我还是决定只有墙壁的边角可以放置家具以外,其余地方去 shi 吧~

Lv2.观梦者

梦石
0
星屑
665
在线时间
194 小时
注册时间
2012-6-1
帖子
720
2
发表于 2013-2-24 02:18:29 | 只看该作者
自由度缩小
卡在一个地方
只有那个地方可以放双人床
就不会那个卡了
死亡
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
3
发表于 2013-2-24 02:41:36 | 只看该作者
个人感想是如果东西少,事件也许可以解决,东西多,也许要依赖脚本了,用事件显示图片也挺麻烦,另外一种想法,或许天马了点,直接置换地图图块来做效果可能麻烦点,因为要计算被置换的是哪几个图块,不过这样不动用事件会不会顺畅些?
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

唯一的信徒

梦石
0
星屑
1665
在线时间
1357 小时
注册时间
2013-1-29
帖子
1637
4
发表于 2013-2-24 07:11:05 | 只看该作者
有N个难点:
1:家具位置要储存《=解决方案:用“保存事件位置脚本”
2:要设置“摆放”《=纯事件
3:设置1*2的事件《=纯事件貌似可以= =但是自己去修改脚本吧

其实VX有这个的脚本的= =

点评

我就差"指定地图"保存事件位置脚本 了...  发表于 2013-2-24 10:36
『我只是一个正在潜心修炼的渣乐师罢了』
Dear Time\(^o^)/~


假如上面的图片挂了的话麻烦各位去发个帖 @ 一下 orzFly 让他修复 deartime
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21641
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

5
发表于 2013-2-24 12:59:09 | 只看该作者
本帖最后由 喵呜喵5 于 2013-2-24 13:01 编辑

回楼上点评 @双黄连2-副本  
指定事件保存位置,要保存位置的事件名称中包含“#KEEP”就可以保存事件位置

RUBY 代码复制
  1. =begin
  2.       RGSS3
  3.       
  4.       ★ イベント座標保持 ★
  5.  
  6.       指定イベントの座標を保存することで、
  7.       マップ切り替え後のイベント座標リセットが発生しなくなります。
  8.       
  9.       ● 使い方 ●========================================================
  10.       座標を保持しておきたいイベントの名前に
  11.       「#KEEP」という文字列を含ませてください。
  12.       ====================================================================
  13.       
  14.       ● イベントコマンド ●==============================================
  15.       イベントコマンドのスクリプトからイベント座標保持のクリアを行えます。
  16.       --------------------------------------------------------------------
  17.       keep_event_clear(map_id)
  18.       --------------------------------------------------------------------
  19.       map_idにはリセット対象のマップID。
  20.       引数は省略可能で、省略時は全てのマップが対象になります。
  21.       ====================================================================
  22.       
  23.       ver1.00
  24.  
  25.       Last Update : 2011/12/18
  26.       12/18 : 新規
  27.       
  28.       ろかん   [url]http://kaisou-ryouiki.sakura.ne.jp/[/url]
  29. =end
  30.  
  31. $rsi ||= {}
  32. $rsi["イベント座標保持"] = true
  33.  
  34. class RPG::Event
  35.   def keep_position?
  36.     self.name.include?("#KEEP")
  37.   end
  38. end
  39.  
  40. class Game_System
  41.   #--------------------------------------------------------------------------
  42.   # ● 座標を保持するイベントの登録
  43.   #--------------------------------------------------------------------------
  44.   def set_keep_event_position(map_id, event)
  45.     @keep_event_position ||= {}
  46.     @keep_event_position[map_id] ||= {}
  47.     @keep_event_position[map_id][event.event.id] = [event.x, event.y, event.direction]
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 保持されているイベントの座標取得
  51.   #--------------------------------------------------------------------------
  52.   def get_keep_event_position(map_id, event_id, keep)
  53.     return nil unless @keep_event_position
  54.     return nil unless @keep_event_position[map_id]
  55.     if keep
  56.       @keep_event_position[map_id][event_id]
  57.     else
  58.       @keep_event_position[map_id].delete(event_id)
  59.       nil
  60.     end
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ● 指定マップのイベント座標の登録情報をクリア
  64.   #--------------------------------------------------------------------------
  65.   def clear_keep_position(map_id)
  66.     if @keep_event_position
  67.       if map_id.zero?
  68.         @keep_event_position.clear
  69.       elsif @keep_event_position[map_id]
  70.         @keep_event_position[map_id].clear
  71.       end
  72.     end
  73.   end
  74. end
  75.  
  76. class Game_Event < Game_Character
  77.   #--------------------------------------------------------------------------
  78.   # ● 公開インスタンス変数
  79.   #--------------------------------------------------------------------------
  80.   attr_reader   :event                 # イベント
  81.   #--------------------------------------------------------------------------
  82.   # ● オブジェクト初期化
  83.   #--------------------------------------------------------------------------
  84.   alias _revision_position initialize
  85.   def initialize(map_id, event)
  86.     @keep = event.keep_position?
  87.     get_position = get_save_position(map_id, event)
  88.     event.x = get_position[0]
  89.     event.y = get_position[1]
  90.     _revision_position(map_id, event)
  91.     @direction = get_position[2] if get_position[2]
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ● 現在座標を保持する
  95.   #--------------------------------------------------------------------------
  96.   def save_position
  97.     $game_system.set_keep_event_position(@map_id, self) if @keep
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● 保持座標を返す(保持されていないイベントの場合は初期座標を返します)
  101.   #--------------------------------------------------------------------------
  102.   def get_save_position(map_id, event)
  103.     sp = $game_system.get_keep_event_position(map_id, event.id, @keep)
  104.     sp ? sp : [event.x, event.y, nil]
  105.   end
  106. end
  107.  
  108. class Game_Map
  109.   #--------------------------------------------------------------------------
  110.   # ● セットアップ
  111.   #--------------------------------------------------------------------------
  112.   alias _keep_event_setup setup
  113.   def setup(map_id)
  114.     save_event_position
  115.     _keep_event_setup(map_id)
  116.   end
  117.   #--------------------------------------------------------------------------
  118.   # ● イベント座標の保持
  119.   #--------------------------------------------------------------------------
  120.   def save_event_position
  121.     @events.each_value{|event| event.save_position}
  122.   end
  123. end
  124.  
  125. class Game_Interpreter
  126.   #--------------------------------------------------------------------------
  127.   # ● 保持しているイベント座標のクリア
  128.   #--------------------------------------------------------------------------
  129.   def keep_event_clear(map_id = 0)
  130.     $game_system.clear_keep_position(map_id)
  131.   end
  132. end

点评

好厉害...其实捏,我的思路是坐标+设定事件位置+记录外貌,不过记录外貌用了较多事件,所以...自由度和样式都不能提高...有木有记录事件外貌的方法  发表于 2013-3-1 13:40
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-18 23:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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