cgmsv引擎论坛

 找回密码
 注册/Sign up
搜索
查看: 3109|回复: 1

[LUA] 扔掉只能装轻木或黄月的背篓,这个箱子能装任意伐木产品

[复制链接]

Rank: 1

发表于 2021-5-19 12:09:16 | 显示全部楼层 |阅读模式
实在用烦了游戏中自带的几个容器,装木材和花的竹篓,不同的木材和花分别要用不同的道具,而且只有几种花和木材有道具,其他的如果自己仿照去做,要生成一堆道具,再拷贝粘贴做一堆脚本,太麻烦了。所以制作了这个lua,一个道具配合一个lua,11种木材16种花全搞定。

目前支持的木材与花如下,支持扩展,但最好物品的最大堆叠数是40,这样每次正好打包10组物品,释放也是需求固定的栏位。

"印度轻木","枞","黄月木","铁杉","琵琶木","赤松","朴","杉","丝柏","梣","单木","长木","奇香木","茱萸木","月桂木","邪神之木","苹果薄荷","柠檬草","蝴蝶花","果梨","桃木","番红花","百里香","瞿麦","茴香","七叶树","魔法红萝卜"

实现的原理:
两个数组,一个存物品id,一个存名称,一一对应,打包的时候,直接把物品栏中支持打包的物品且大于等于400个的直接删除400个,同时把容器改名为“装满XXX的箱子”,释放的时候,根据名字检索物品id,直接给相应的物品400个。

打包装箱的代码节选:

  1.         local naijiu=Item.GetData(ItemIndex,%道具_耐久%);
  2.         local ArrayNum=table.maxn(itemIDArray);
  3.         local ItemName=Item.GetData(ItemIndex,%道具_名字%);
  4.         if ItemName=="空竹篓" then
  5.                 local haveItems=false;
  6.                 for i=1,ArrayNum do
  7.                         local itemsNum = Char.ItemNum(_meindex,itemIDArray[i]);
  8.                         local picItem
  9.                         if i <= 11 then                --前11个物品为木材,后15个物品为花,区分装满的竹篓图片
  10.                         picItem = 99276
  11.                         else
  12.                         picItem = 99277
  13.                         end
  14.                         if itemsNum >= 400 then
  15.                                 haveItems=true;
  16.                                 Char.DelItem(_meindex,itemIDArray[i],400);
  17.                                 Item.SetData(ItemIndex,%道具_名字%,"装满 "..itemNameArray[i].." 的竹篓");
  18.                                 Item.SetData(ItemIndex,%道具_图%,picItem);
  19.                                 NLG.SystemMessage(_meindex,"您有"..itemsNum.."个"..itemNameArray[i]..",其中400个被打包装入竹篓!");
  20.                                         -- if rdonoff==true then
  21.                                                 -- if naijiu > 1 then
  22.                                                         -- Item.SetData(ItemIndex,"%道具_耐久%",naijiu-1);
  23.                                                 -- else
  24.                                                         -- Item.Kill(_meindex, ItemIndex, _itemslot);
  25.                                                 -- end
  26.                                         -- end
  27.                         Item.UpItem(_meindex,_itemslot)
  28.                         end
  29.                 end
  30.                 if haveItems==false then
  31.                         NLG.SystemMessage(_meindex,"您没有可以打包的物品,请确保要打包装箱的物品数量在400以上!");
  32.                 end
  33.        
  34.         else
复制代码

anybox.zip (1.77 KB, 下载次数: 0)


有图有真香,翠花上图片
微信截图_20210519105426.jpg

微信截图_20210519112000.jpg

微信截图_20210519115737.jpg

微信截图_20210519120137.jpg

Rank: 1

发表于 2021-5-23 12:20:29 | 显示全部楼层
感觉很厉害的样子
您需要登录后才可以回帖 登录 | 注册/Sign up

本版积分规则

手机版|cgmsv引擎论坛

GMT+8, 2024-11-21 21:47 , Processed in 0.148915 second(s), 10 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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