查看: 2117|回复: 2

[已经解决] 怎么做可以随机丢掉背包内一半的物品

[复制链接]
梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

发表于 2016-4-7 13:44:22 | 显示全部楼层 |阅读模式

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

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

×
想做角色死亡后就损失掉背包一半的物品和一半的金钱。

钱做好了。

物品感觉挺麻烦的。

身上穿着的不丢。
背包里的随机丢掉一半,背包里的不管武器防具物品都一样。

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

梦石
0
星屑
9716
在线时间
2775 小时
注册时间
2008-9-5
回帖
3458

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

发表于 2016-4-7 14:59:00 | 显示全部楼层
采集了背包所有物品数量的一半然后逐个随机减掉一半……
不知道算法是不是对的……有坑再说……
使用方法是在事件里用【脚本】输入:
  1. $game_party.lost_half_items
复制代码
代码放在【Game_Party】下面
  1. class Game_Party
  2.   
  3.   def lost_half_items
  4.     list_all = [@items, @weapons, @armors]
  5.     half_num = 0
  6.     list_all.each do |list|
  7.       list.values.each do |l|
  8.         half_num += l
  9.       end
  10.     end
  11.     half_num /= 2
  12.     return if half_num == 0
  13.     while half_num > 0
  14.       list = list_all[rand(3)]
  15.       next if list.size <= 0
  16.       rand_id = list.keys[rand(list.keys.size)]
  17.       if list[rand_id] > 1
  18.         lose_num = list[rand_id] / 2
  19.         list[rand_id] -= lose_num
  20.         half_num -= lose_num
  21.       else
  22.         list.delete(rand_id)
  23.         half_num -= 1
  24.       end
  25.     end
  26.   end
  27. end
复制代码

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

 楼主| 发表于 2016-4-7 20:48:02 | 显示全部楼层
cinderelmini 发表于 2016-4-7 14:59
采集了背包所有物品数量的一半然后逐个随机减掉一半……
不知道算法是不是对的……有坑再说……
使用方法是 ...

我把你写的这个改了下。结果数量变成了小数点


1.png

[pre lang="ruby"]class Game_Party
  
  def lost_half_items
    list_all = [@items, @weapons, @armors]
    half_num = 0
    list_all.each do |list|
      list.values.each do |l|
        half_num += l
      end
    end
    return if half_num == 0
    while half_num > 0
      list = list_all[rand(3)]
      next if list.size <= 0
      rand_items_id = @items.keys[rand(@items.keys.size)]
      rand_weapons_id = @weapons.keys[rand(@weapons.keys.size)]
      rand_armors_id = @armors.keys[rand(@armors.keys.size)]

      
      if @items[rand_items_id] > 1
        lose_num = @items[rand_items_id]
        rand_item_number = rand($game_party.item_number(lose_num))
        @items[rand_items_id] -= rand_item_number.abs
        half_num -= 1
      else
        @items.delete(rand_items_id)
        half_num -= 1
      end
      
      
            if @weapons[rand_weapons_id] > 1
        lose_num = @weapons[rand_weapons_id]
        rand_item_number = rand($game_party.item_number(lose_num))
        @weapons[rand_weapons_id] -= rand_item_number.abs
        half_num -= 1
      else
        @items.delete(rand_items_id)
        half_num -= 1
      end

      
      
            if @armors[rand_armors_id] > 1
        lose_num = @armors[rand_armors_id]
        rand_item_number = rand($game_party.item_number(lose_num))
        @armors[rand_armors_id] -= rand_item_number.abs
        half_num -= 1
      else
        @items.delete(rand_items_id)
        half_num -= 1
      end

    end
  end
end[/pre]

点评

事实上意义是一样的……嘛……不解释了…………照着乃能理解的方式肝~  发表于 2016-4-8 13:18
这样更随机一些  发表于 2016-4-7 22:50
为啥这样改,窝上面那样写一句包含了武器防具→_→  发表于 2016-4-7 21:22
我傻了,ABS是绝对值  发表于 2016-4-7 21:18
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部