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

Project1

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

[已经解决] 请教一个关于商店界面的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
109
在线时间
65 小时
注册时间
2012-9-28
帖子
99
跳转到指定楼层
1
发表于 2013-6-8 14:21:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 kittyblain 于 2013-6-8 14:22 编辑

最近在做游戏中的商业部分,设置了和npc杀价的功能,想请教一下,怎么让商店界面只能“卖出”特定的几种道具?

  比如说某个npc只收购恢复剂,其他的东西不收,猫想让他的卖出界面只显示恢复剂一种东西。。。。。

Lv3.寻梦者

Assassin-K

梦石
0
星屑
3598
在线时间
2281 小时
注册时间
2012-5-23
帖子
4065

贵宾

2
发表于 2013-6-9 00:26:32 | 只看该作者
爱偷懒的洛子,以前是这样做的:

在显示对话后加上选项
A.购买——商店可以勾选【只允许购买】
B.出售——显示对话:我只收购恢复剂,你有多少?我10G/瓶收了。
然后【数值输入处理】,分歧判断成功之后,扣除相应的物品,获得对应的金钱。
C.闲聊——用作任务提示、帮助玩家了解世界什么的

这种事件对LZ应该不难吧……

◆ROZONE◆
>洛子又要去流浪地球了……
>如果你看到我在线,又没动静,那只能说明我在挂机……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
109
在线时间
65 小时
注册时间
2012-9-28
帖子
99
3
 楼主| 发表于 2013-6-10 13:56:37 | 只看该作者
Mic_洛洛 发表于 2013-6-9 00:26
爱偷懒的洛子,以前是这样做的:

在显示对话后加上选项

呃- - 猫目前的确是这么做的,不过收购的部分是稍显麻烦的,因为如果是收复数物品(比如铁匠大叔收购所有的铁器),那么就得把设定的每一样铁器都做一次变量运算了。。。。

猫的意思是,有没有办法直接使用系统的交易界面来达成这个收购特定物品的功能呢- - ?
回复 支持 反对

使用道具 举报

Lv2.观梦者 (暗夜天使)

梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
帖子
2309

贵宾

4
发表于 2013-6-10 18:28:07 | 只看该作者
本帖最后由 Sion 于 2013-6-10 18:29 编辑
kittyblain 发表于 2013-6-10 13:56
呃- - 猫目前的确是这么做的,不过收购的部分是稍显麻烦的,因为如果是收复数物品(比如铁匠大叔收购所有 ...



  1. # 使用方法
  2. # 在商店命令的上方加入注释
  3. # item 1 2 3 4..... 表示只有1 2 3 4 物品可以出售
  4. # weapon 代表武器, armor 代表防具
  5. # 例子:
  6. # item 1 5 10 2 4
  7. # weapon  4, 5, 6, 7
  8. # armor 13|14|15|16
  9. # 中间隔开就行。

  10. class Game_Interpreter
  11.   
  12.   def command_302
  13.     return if $game_party.in_battle
  14.     sell_lists = []
  15.     index = @index - 1
  16.     while @list[index].code == 108 || @list[index].code == 408
  17.       sell_lists.push(@list[index])
  18.       index -= 1
  19.     end
  20.     goods = [@params]
  21.     while next_event_code == 605
  22.       @index += 1
  23.       goods.push(@list[@index].parameters)
  24.     end
  25.     SceneManager.call(Scene_Shop)
  26.     SceneManager.scene.prepare(goods, @params[4], sell_lists)
  27.     Fiber.yield
  28.   end
  29. end


  30. class Scene_Shop < Scene_MenuBase
  31.   
  32.   def prepare(goods, purchase_only, lists)
  33.     @goods = goods
  34.     @purchase_only = purchase_only
  35.     setup_sell(lists)
  36.   end
  37.   def setup_sell(lists)
  38.     @sell_list = {}
  39.     lists.each {|list| setup_sell_list(list.parameters[0])}
  40.   end
  41.   def setup_sell_list(texts)
  42.     if texts.include?('item')
  43.       @sell_list[:item] = texts.scan(/\d+/)
  44.     elsif texts.include?('weapon')
  45.       @sell_list[:weapon] = texts.scan(/\d+/)
  46.     elsif texts.include?('armor')
  47.       @sell_list[:armor] = texts.scan(/\d+/)
  48.     end
  49.   end
  50.   
  51.   def create_sell_window
  52.     wy = @category_window.y + @category_window.height
  53.     wh = Graphics.height - wy
  54.     @sell_window = Window_ShopSell.new(0, wy, Graphics.width, wh, @sell_list)
  55.     @sell_window.viewport = @viewport
  56.     @sell_window.help_window = @help_window
  57.     @sell_window.hide
  58.     @sell_window.set_handler(:ok,     method(:on_sell_ok))
  59.     @sell_window.set_handler(:cancel, method(:on_sell_cancel))
  60.     @category_window.item_window = @sell_window
  61.   end
  62. end


  63. class Window_ShopSell < Window_ItemList

  64.   def initialize(x, y, width, height, sell_list)
  65.     super(x, y, width, height)
  66.     @sell_list = sell_list
  67.   end
  68.   
  69.   def include?(item)
  70.     case @category
  71.     when :item
  72.       item.is_a?(RPG::Item) && item_list_include?(item) && !item.key_item?
  73.     when :weapon
  74.       item.is_a?(RPG::Weapon) && weapon_list_include?(item)
  75.     when :armor
  76.       item.is_a?(RPG::Armor) && armor_list_include?(item)
  77.     when :key_item
  78.       item.is_a?(RPG::Item) && item.key_item?
  79.     else
  80.       false
  81.     end
  82.   end
  83.   
  84.   def item_list_include?(item)
  85.     @sell_list[:item] ? @sell_list[:item].include?(item.id.to_s) : true
  86.   end
  87.   def weapon_list_include?(item)
  88.     @sell_list[:weapon] ? @sell_list[:weapon].include?(item.id.to_s) : true
  89.   end
  90.   def armor_list_include?(item)
  91.     @sell_list[:armor] ? @sell_list[:armor].include?(item.id.to_s) : true
  92.   end
  93. end
复制代码

评分

参与人数 1星屑 +123 收起 理由
Mic_洛洛 + 123 感谢支援!

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
109
在线时间
65 小时
注册时间
2012-9-28
帖子
99
5
 楼主| 发表于 2013-6-11 18:04:04 | 只看该作者
Sion 发表于 2013-6-10 18:28

谢谢~~~~~~~~~~~~~~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-18 17:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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