用ABLUA写一个包裹道具 - 神奇石器时代技术研究交流
神奇石器技术研究交流网 - 业务联系QQ:420004208

用ABLUA写一个包裹道具

  • 内容
  • 相关

1、老规矩,先创建个LUA的空文本,就叫additem.lua

2、创建道具执行函数,就写additem

3、整个LUA代码我就贴出来了,转载请附上SA60神奇石器发布站

--为了方便写了一个检查道具栏是否为满的函数,这个函数记下,在写其他LUA的时候也可以使用到的。
function checkEmptItemNum(charaindex)
	EmptyItemNum = 0
	for i = 9, 23 do
		if char.getItemIndex(charaindex, i) == -1 then
			EmptyItemNum = EmptyItemNum + 1
		end
	end
	return EmptyItemNum
end

--声明道具执行函数(道具索引, 使用者索引, 物品作用对象索引, 道具栏位置)
function additem(itemindex, charaindex, toindex, haveitemindex)
	--获取道具字段内容
	local data = item.getChar(itemindex, "字段")
	--分割字符串,取得第一个|前的内容,这里定义成包裹内的总道具数量
	local num = other.atoi(other.getString(data, "|", 1))
	--这里就是调用上面那个检查道具栏是否满的函数,做下判断,如果道具栏要小于包裹内的物品数则提示返回
	if checkEmptItemNum(charaindex) < num then
		char.TalkToCli(charaindex, -1, "请空出"..num.."格道具栏。", "红色")
		return
	end
	--当物品最大数为1的时候
	if num == 1 then
		--分割字符串,取得第二个|前的内容,这里定义成道具ID
		local itemid = other.atoi(other.getString(data, "|", 2))
		--如果道具ID大于1
	    if itemid > -1 then
			--则给予物品
		    npc.AddItem(charaindex, itemid)
	    end
	--当物品最大数大于1的时候
	elseif num > 1 then
	    --从1开始循环到道具最大数
	    for i=1, num do
			--按照循环开始取第i+1个|的内容,并定义成道具ID
            local itemid = other.atoi(other.getString(data, "|", i+1))
			--循环给予道具
			npc.AddItem(charaindex, itemid)
	    end
	end
	--删除包裹道具
	char.DelItem(charaindex, haveitemindex)
end

--这个不用我神奇的牧羊人说了,主函数内注册道具的功能字段以及调用函数名
function main()
	item.addLUAListFunction( "ITEM_ADDITEM", "additem", "")
end
4、道具代码如下:

智慧果包裹,智慧果包裹,装有10个智慧果的包裹,10|21000|21000|21000|21000|21000|21000|21000|21000|21000|21000|,,,,,,,ITEM_ADDITEM,,,,,,20851,24312,0,16,2,0,0,-1,,,,,,,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,0,0,,,,,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,1,1,0,0,,0,,,,,,,,

版权声明:若无特殊注明,本文皆为《sa60》原创,转载请保留文章出处。

本文链接:用ABLUA写一个包裹道具 - http://sa60.com/post-218.html

本文标签:

用ABLUA写一个包裹道具