Project1

标题: 如何实现买了东西自动使用 [打印本页]

作者: 越前リョーマ    时间: 2008-7-1 06:22
标题: 如何实现买了东西自动使用
类似饭店,
买了东西以后就自动使用,当然,这要在商店前加一句脚本才生效。 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 牛肉面    时间: 2008-7-1 06:36
公共事件:并行处理
条件分歧
拥有物品XX
就丢失物品XX
加上效果

完成。
作者: superufo    时间: 2008-7-1 08:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: Infrared    时间: 2008-7-1 08:41
提示: 作者被禁止或删除 内容自动屏蔽
作者: superufo    时间: 2008-7-1 08:51
提示: 作者被禁止或删除 内容自动屏蔽
作者: Infrared    时间: 2008-7-1 09:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: 暴风の龙    时间: 2008-7-1 12:30
zhao ge di fang fan yi ba

找个地方翻译吧。


……啥?
作者: 越前リョーマ    时间: 2008-7-1 20:06
以下引用暴风の龙于2008-7-1 4:30:41的发言:


zhao ge di fang fan yi ba

找个地方翻译吧。


……啥?

……|||

小幽的火星语……
作者: 越前リョーマ    时间: 2008-7-2 03:15
话说这个什么时候解决呢……
作者: 越前リョーマ    时间: 2008-7-2 21:26
我来自顶了……
作者: 诡异の猫    时间: 2008-7-2 21:28
上面的几位不是已经给你答案了吗- -
作者: 越前リョーマ    时间: 2008-7-2 22:23
以下引用Infrared于2008-7-1 0:41:02的发言:

$game_party.actors[0].item_effect($game_party.actors[0], $data_items[物id])
$game_party.lose_item($data_items[物id], -1)

?

这个么?
不是太明白怎么用。
作者: 诡异の猫    时间: 2008-7-2 22:25
$game_party.actors[0].item_effect($game_party.actors[0], $data_items[物id])
$game_party.lose_item($data_items[物id], -1)


$game_party.actors[0]代表1號角色
2號角色則是$game_party.actors[1]

例如$game_party.actors[0].item_effect($game_party.actors[0], $data_items[1])
就是1號角色受到1號物品作用效果
也就是使用了1號物品..
使用后當然就要减少物品咯.
$game_party.lose_item($data_items[1], -1)
這句就是1號物品數量-1

事件中插這2句脚本就對了
作者: 越前リョーマ    时间: 2008-7-2 22:32
问题是我怎么知道玩家买了什么……
作者: 诡异の猫    时间: 2008-7-2 22:43
$a = $game_party.items
商店处理
b = $game_party.items - $a
a = $game_party.members[0]
for i in b
a.item_effect(a,i)
$game_party.lose_item(i,1)
end [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 诡异の猫    时间: 2008-7-2 22:57
- -呼..好了.
一次性购买的物品种类不是问题.
只是每样物品一次只能消耗一个.
正在考虑解决方法.
作者: 越前リョーマ    时间: 2008-7-2 23:07
以下引用诡异の猫于2008-7-2 14:57:37的发言:

- -呼..好了.
一次性购买的物品种类不是问题.
只是每样物品一次只能消耗一个.
正在考虑解决方法.

话说要是玩家买了很多个也只使用一个不是………………
作者: 诡异の猫    时间: 2008-7-3 01:38
那个框框都写不下了..
给你个脚本插如Main之前吧.
  1. # 使用说明 (在事件中按以下操作)
  2. # 插入脚本:$game_party.get_old_items
  3. # 商店处理
  4. # 插入脚本:$game_party.auto_use_items
  5. # By 诡异の猫 (有错误请论坛短信联系)

  6. class Game_Party < Game_Unit
  7.   # 获得当前物品数组
  8.   def get_old_items
  9.     @oi = $game_party.items
  10.   end
  11.   
  12.   # 自动使用物品
  13.   def auto_use_items
  14.     a = $game_party.items
  15.     for i in 0...a.size
  16.       b = $game_party.item_number(@oi[i])
  17.       c = $game_party.item_number(a[i])
  18.       if b != c
  19.         x = c - b
  20.         for j in 0...x
  21.           $game_party.members[0].item_effect($game_party.members[0],a[i])
  22.         end
  23.         $game_party.lose_item(a[i],x)
  24.       end
  25.     end
  26.   end
  27. end
复制代码

作者: 越前リョーマ    时间: 2008-7-3 01:45
话说购买完东西后一出商店就报错……
作者: 诡异の猫    时间: 2008-7-3 02:07
我测试了没问题啊- -
但是又发现了一个问题.
错误信息给出来
作者: 越前リョーマ    时间: 2008-7-3 02:10
以下引用诡异の猫于2008-7-2 18:07:29的发言:

我测试了没问题啊- -
但是又发现了一个问题.
错误信息给出来

如果买一个的话就没有错误信息了……
奇怪……突然又没错误信息了……本来还什么GAME什么的错误的……

不过话说这样的话直接是对第一个人使用了……
作者: 诡异の猫    时间: 2008-7-3 02:11
估计你方法名打错了- -
难道你还想指定对谁使用- -
作者: 诡异の猫    时间: 2008-7-3 02:23
  1. # 使用说明(在事件中按一下操作)
  2. # 插入脚本:$game_party.get_items_num
  3. # 商店处理
  4. # 插入脚本:$game_party.auto_use_items

  5. class Game_Party < Game_Unit
  6.   # 获得当前物品数量数组
  7.   def get_items_num
  8.     @oin = []
  9.     for i in $game_party.items
  10.       @oin.push($game_party.item_number(i))
  11.     end
  12.   end
  13.   
  14.   # 自动使用物品
  15.   def auto_use_items
  16.     a = $game_party.items
  17.     for i in 0...a.size
  18.       b = $game_party.item_number(a[i])
  19.       c = @oin[i]
  20.       if c == nil
  21.         c = 0
  22.       end
  23.       if b != c
  24.         x = b - c
  25.         for j in 0...x
  26.           $game_party.members[0].item_effect($game_party.members[0],a[i])
  27.         end
  28.         $game_party.lose_item(a[i],x)
  29.       end
  30.     end
  31.   end
  32. end
复制代码

刚那个有一点漏洞.
用这个吧
作者: 越前リョーマ    时间: 2008-7-3 02:30
话说如果这个物品有恢复效果,
是不是如果HP和MP满的时候就不会使用了………|||
作者: 诡异の猫    时间: 2008-7-3 02:37
依旧使用
作者: 越前リョーマ    时间: 2008-7-3 02:41
以下引用诡异の猫于2008-7-2 18:37:41的发言:

依旧使用


[本贴由作者于 2008-7-2 18:37:53 最后编辑]

那为什么没有效果啊……
我用了一个给物品增加一个给人物增加经验的脚本,但是这个就是当作经验食品在饭店卖的。结果自动使用后经验似乎只有第一次加了。
作者: 诡异の猫    时间: 2008-7-3 02:46
我测试了不会啊.
作者: 越前リョーマ    时间: 2008-7-3 02:54
以下引用诡异の猫于2008-7-2 18:46:02的发言:

我测试了不会啊.

多买几次……
经验是这个脚本:
  1. module RPG
  2.   class Item < UsableItem
  3.     def name
  4.       name = @name.split(/,/)[0]
  5.       return name != nil ? name : ''
  6.     end
  7.     def i_iexp
  8.       i_iexp = @name.split(/,/)[1]
  9.       return i_iexp != nil ? i_iexp.to_i : 0
  10.     end
  11.   end
  12. end
  13. #==============================================================================
  14. # ■ Game_Battler
  15. #------------------------------------------------------------------------------
  16. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  17. # 超级类来使用。
  18. #==============================================================================

  19. class Game_Battler
  20.   #--------------------------------------------------------------------------
  21.   # ● 发动物品效果
  22.   #     user : 物品使用者
  23.   #     item : 物品
  24.   #--------------------------------------------------------------------------
  25.   def item_effect(user, item)
  26.     clear_action_results
  27.     unless item_effective?(user, item)
  28.       @skipped = true
  29.       return
  30.     end
  31.     if rand(100) >= calc_hit(user, item)          # 计算命中率
  32.       @missed = true
  33.       return
  34.     end
  35.     if rand(100) < calc_eva(user, item)           # 计算闪躲率
  36.       @evaded = true
  37.       return
  38.     end
  39.     hp_recovery = calc_hp_recovery(user, item)    # 计算体力回复量
  40.     mp_recovery = calc_mp_recovery(user, item)    # 计算魔力回复量
  41.     make_obj_damage_value(user, item)             # 计算伤害
  42.     @hp_damage -= hp_recovery                     # 体力伤害减去回复量
  43.     @mp_damage -= mp_recovery                     # 魔力伤害减去回复量
  44.     make_obj_absorb_effect(user, item)            # 计算吸收效果
  45.     execute_damage(user)                          # 伤害效果
  46.     item_growth_effect(user, item)                # 能力值提升效果
  47.     if item.physical_attack and @hp_damage == 0   # 判断是否物理伤害
  48.       return                                    
  49.     end
  50.     apply_state_changes(item)                     # 增减状态
  51.     gain_exp = item.i_iexp
  52.     #self.exp += gain_exp
  53.     user.change_exp(user.exp+gain_exp,true)
  54.    
  55.   end
  56. end
复制代码

物品名后加“,经验数值”……
作者: 诡异の猫    时间: 2008-7-3 04:20
哦..对..
hp满了item_effective?是false的..
所以hp满了物品没作用效果.
作者: 越前リョーマ    时间: 2008-7-3 04:21
以下引用诡异の猫于2008-7-2 20:20:25的发言:

哦..对..
hp满了item_effective?是false的..
所以hp满了物品没作用效果.

那么怎么办……||
作者: 诡异の猫    时间: 2008-7-3 04:28
只要把Game_Battler脚本里第911行
tester.calc_hp_recovery(user, item) > 0 改成>= 0
912行tester.hp < tester.maxhp 改成 <=
914.915行同理 即可.
作者: 做游戏的新手    时间: 2008-7-15 02:43
以下引用superufo于2008-7-1 0:51:44的发言:

璇濊?鏄?笉鏄??鍒ゆ柇鑳藉惁鍙?互浣跨敤鈥?hao ge di fang fan yi ba...

机密解读:
话说是不是要判断能否可以使用




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1