实在用烦了游戏中自带的几个容器,装木材和花的竹篓,不同的木材和花分别要用不同的道具,而且只有几种花和木材有道具,其他的如果自己仿照去做,要生成一堆道具,再拷贝粘贴做一堆脚本,太麻烦了。所以制作了这个lua,一个道具配合一个lua,11种木材16种花全搞定。
目前支持的木材与花如下,支持扩展,但最好物品的最大堆叠数是40,这样每次正好打包10组物品,释放也是需求固定的栏位。
"印度轻木","枞","黄月木","铁杉","琵琶木","赤松","朴","杉","丝柏","梣","单木","长木","奇香木","茱萸木","月桂木","邪神之木","苹果薄荷","柠檬草","蝴蝶花","果梨","桃木","番红花","百里香","瞿麦","茴香","七叶树","魔法红萝卜"
实现的原理:
两个数组,一个存物品id,一个存名称,一一对应,打包的时候,直接把物品栏中支持打包的物品且大于等于400个的直接删除400个,同时把容器改名为“装满XXX的箱子”,释放的时候,根据名字检索物品id,直接给相应的物品400个。
打包装箱的代码节选:
-
- local naijiu=Item.GetData(ItemIndex,%道具_耐久%);
- local ArrayNum=table.maxn(itemIDArray);
- local ItemName=Item.GetData(ItemIndex,%道具_名字%);
-
-
- if ItemName=="空竹篓" then
- local haveItems=false;
- for i=1,ArrayNum do
- local itemsNum = Char.ItemNum(_meindex,itemIDArray[i]);
- local picItem
- if i <= 11 then --前11个物品为木材,后15个物品为花,区分装满的竹篓图片
- picItem = 99276
- else
- picItem = 99277
- end
- if itemsNum >= 400 then
- haveItems=true;
- Char.DelItem(_meindex,itemIDArray[i],400);
- Item.SetData(ItemIndex,%道具_名字%,"装满 "..itemNameArray[i].." 的竹篓");
- Item.SetData(ItemIndex,%道具_图%,picItem);
- NLG.SystemMessage(_meindex,"您有"..itemsNum.."个"..itemNameArray[i]..",其中400个被打包装入竹篓!");
- -- if rdonoff==true then
- -- if naijiu > 1 then
- -- Item.SetData(ItemIndex,"%道具_耐久%",naijiu-1);
- -- else
- -- Item.Kill(_meindex, ItemIndex, _itemslot);
- -- end
- -- end
- Item.UpItem(_meindex,_itemslot)
- end
- end
- if haveItems==false then
- NLG.SystemMessage(_meindex,"您没有可以打包的物品,请确保要打包装箱的物品数量在400以上!");
- end
-
- else
复制代码
anybox.zip
(1.77 KB, 下载次数: 0)
有图有真香,翠花上图片
|