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

Project1

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

[已经解决] 【3VIP】如何实现让买掉的东西消失

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
65
在线时间
107 小时
注册时间
2009-7-5
帖子
513
跳转到指定楼层
1
发表于 2011-8-31 11:42:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lxdsh2009 于 2011-8-31 11:42 编辑

比如商店中出售A、B、C三件物品,买了A后,再进入商店,就没有A这样商品了。
求脚本解法,事件用条件分歧写了一大串,无效。

点评

还没更改吗囧....  发表于 2011-9-1 15:21
紧急通知,之前写的脚本疏忽了一个逻辑问题,现在已经修复,沙发已经编辑,请速速更换,看到请回点评  发表于 2011-8-31 19:39
人只有临死前才会发觉自己只不过是头野兽。
回合制战棋 延长的灰烬 → http://rpg.blue/thread-236963-1-2.html

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
39755
在线时间
7487 小时
注册时间
2009-7-6
帖子
13484

开拓者贵宾

2
发表于 2011-8-31 12:58:30 | 只看该作者
本帖最后由 fux2 于 2011-9-1 15:20 编辑

修正问题:
   1.判断忽略空值问题
   2.优化判断方法,提高效率
   3.可以在存档中保存和读取.(之前的档案会失效)


  1. class Scene_Shop < Scene_Base
  2.   def update_buy_selection
  3.     @status_window.item = @buy_window.item
  4.     if Input.trigger?(Input::B)
  5.       Sound.play_cancel
  6.       @command_window.active = true
  7.       @dummy_window.visible = true
  8.       @buy_window.active = false
  9.       @buy_window.visible = false
  10.       @status_window.visible = false
  11.       @status_window.item = nil
  12.       @help_window.set_text("")
  13.       return
  14.     end
  15.     if Input.trigger?(Input::C)
  16.       @item = @buy_window.item
  17.       number = $game_party.item_number(@item)
  18.       if @item == nil or @item.price > $game_party.gold or number == 99
  19.         Sound.play_buzzer
  20.       else
  21.         Sound.play_decision
  22.         if $buy_rec[$game_map.map_id]
  23.           if $buy_rec[$game_map.map_id][$curevent]
  24.             $buy_rec[$game_map.map_id][$curevent] << [@item.type,@item.id]
  25.           else
  26.             $buy_rec[$game_map.map_id][$curevent] = [[@item.type,@item.id]]
  27.           end
  28.         else
  29.           $buy_rec[$game_map.map_id] = {$curevent=>[[@item.type,@item.id]]}
  30.         end
  31.         max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  32.         max = [max, 99 - number].min
  33.         @buy_window.active = false
  34.         @buy_window.visible = false
  35.         @number_window.set(@item, max, @item.price)
  36.         @number_window.active = true
  37.         @number_window.visible = true
  38.       end
  39.     end
  40.   end
  41. end

  42. class Game_Player < Game_Character
  43.   def check_event_trigger_there(triggers)
  44.     return false if $game_map.interpreter.running?
  45.     result = false
  46.     front_x = $game_map.x_with_direction(@x, @direction)
  47.     front_y = $game_map.y_with_direction(@y, @direction)
  48.     for event in $game_map.events_xy(front_x, front_y)
  49.       if triggers.include?(event.trigger) and event.priority_type == 1
  50.         event.start
  51.         $curevent = event.event.id
  52.         result = true
  53.       end
  54.     end
  55.     if result == false and $game_map.counter?(front_x, front_y)
  56.       front_x = $game_map.x_with_direction(front_x, @direction)
  57.       front_y = $game_map.y_with_direction(front_y, @direction)
  58.       for event in $game_map.events_xy(front_x, front_y)
  59.         if triggers.include?(event.trigger) and event.priority_type == 1
  60.           event.start
  61.           result = true
  62.         end
  63.       end
  64.     end
  65.     return result
  66.   end
  67. end

  68. class Window_ShopBuy < Window_Selectable
  69.   def refresh
  70.     @data = []
  71.     @shop_goods.each{|goods_item|
  72.       case goods_item[0]
  73.       when 0
  74.         item = $data_items[goods_item[1]]
  75.       when 1
  76.         item = $data_weapons[goods_item[1]]
  77.       when 2
  78.         item = $data_armors[goods_item[1]]
  79.       end
  80.       next if $buy_rec[$game_map.map_id] && $buy_rec[$game_map.map_id][$curevent] && $buy_rec[$game_map.map_id][$curevent].include?([item.type,item.id])
  81.       if item != nil
  82.         @data.push(item)
  83.       end
  84.     }
  85.     @item_max = @data.size
  86.     create_contents
  87.     for i in 0...@item_max
  88.       draw_item(i)
  89.     end
  90.   end
  91. end

  92. class Scene_Title < Scene_Base
  93.   alias:cng:command_new_game
  94.   define_method(:command_new_game){$buy_rec = {};cng}
  95. end

  96. class Scene_File < Scene_Base
  97.   alias:wsd:write_save_data
  98.   def write_save_data(file)
  99.     wsd(file)
  100.     Marshal.dump($buy_rec,file)
  101.   end
  102.   alias:rsd:read_save_data
  103.   def read_save_data(file)
  104.     rsd(file)
  105.     $buy_rec = Marshal.load(file)
  106.   end
  107. end
复制代码
[acfun]http://ftp.66rpg.com/user/fux2/myzone.html[/acfun]

点评

是不是可以做真实商店了  发表于 2011-9-1 09:25
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-2 07:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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