用ABLUA写一个清除宠物的功能 - 神奇石器发布网
石器时代发布网 - 神奇石器旗下石器私服技术交流网 - 业务联系QQ:420004208

用ABLUA写一个清除宠物的功能

  • 内容
  • 相关

其实还是利用了NetLoopFunction()函数来做功能,这个函数在石器时代里利用率还是蛮高的,能做的功能也挺多,这个宠物清除比端里自带的效果要好用多了,自带的清除功能必须要玩家重新登陆,如果做登陆清除的话,玩家不下线,宠物就永远不消失。又或者是需要存放到宠物店里才能清除。而用NetLoopFunction()每分钟来循环检查并删除,1分钟后只要是定义过宠物ID的宠物都会被清除,这样好用多了。

代码如下:

function NetLoopFunction()
	--每分钟开始检查
	--检查全部玩家索引
    for i = 0, char.getPlayerMaxNum() - 1 do
		--检查玩家索引是否存在
		if char.check(i) == 1 then
			--0~4位宠物栏位置,代码里是从0开始算起,并非从1
			for j=0,4 do
				--定义petindex这个变量为宠物索引,因为循环5次也就是获取5个宠物栏的全部索引
				petindex = char.getCharPet(i, j)
				--检查宠物栏的宠物是否存在
				if char.check(petindex) == 1 then
					--开始循环下方data()函数内的宠物ID
				    for k = 1, table.getn(nopet) do
						--如果宠物ID等于下方定义的任意一个ID
				        if char.getInt(petindex, "宠ID") == nopet[k] then
							--清除所定义的宠物ID
					        char.DelPet(i, petindex)
				        end
					end
				end
		    end
	    end
	end
	
end

function data()
	--宠物ID,可无限扩展,主要这里是enemybase1.txt里的ID
	nopet = {777,918,933,1140}
end

function main()
    data()
end

从代码里可以很直观的看出来,是用的语句也不多,却实现了一个很有用的功能,注意宠物ID一定要是enemybase1.txt里的ID,当然这个ID在enemy1.txt里也存在,为了避免出错,还是尽量打开enemybase1.txt来查看ID

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

本文链接:用ABLUA写一个清除宠物的功能 - https://www.sa60.com/post-274.html

本文标签:

用ABLUA写一个清除宠物的功能