石器技术文章 第4页

石器ABLUA在NetLoopFunction()写一个清除宠物的功能

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

用ABLUA的说话函数写个修复装备的命令

石器时代一直存在装备损坏这一说,到了高版本,装备就会显示耐久度的百分比了,在石器时代私服里总是找NPC很麻烦,为了方便玩家,直接用LUA做成命令,让玩家随时随地可以修复装备。代码如下:function CharTalkFunction( charaindex, message, color)local field = ot...

人物和怪等级差衰减升级经验解析

在石器时代里都知道人物或宠物在打怪的的时候,随着自己等级的上升,再打等级低的怪物经验就慢慢变少,最后就没经验了。咱们通过源码可以看下定义的等级差,位置在battle.c文件下的BATTLE_AddExpItem函数通过搜索:#defineEXPGET_MAXLEVEL5#defineEXPGET_DIV15可以知道,第一个为获得正常经验最大等级差为5,而下面这个为分割参数,加入到获得经...

用ABLUA写了一个类似原地石的道具

模仿石器时代里恶魔宝石(原地石),这个道具比原地石要高级一些,可以自定义怪物ID,无论在任何地图下都可以遇到定义的怪物,并且没有使用次数限制,这个LUA主要是运用了循环事件和怪物数组和随机数,注释我就不给了,请自行研究,这应该是我第一次直接贴出这么多代码。这LUA还没有测试过,有问题请自己解决,学习还得靠自己。function Loop(meindex)if char.F...

用ABLUA写一个MYSQL查询函数

现在使用了mysql语句来写石器或者魔力等ablua脚本已经非常普及了,操作起来非常方便,可以直接从mysql取值进行各种玩法。下面就写一个查询函数给大家参考:function getPoint(cdkey)--sql的定义就为标准的MYSQL操作语句--这句话的意思是从CSAlogin表进行搜索Name字段为指定的账号返回VipPoint和PayPoint的数值loc...

Lua循环结构while循环和for循环的区别

下面我用简单的例子来让大家看看这两个循环的区别。while语法结构:while循环条件do   循环体end--1.输出1到100    index = 1    while index <= 100 do      print(index)      index ...

石器用ABLUA检查宠物和道具满的函数

 在我们参考石器的ablua脚本中,一般会看到checkEmptItemNum(charaindex)和checkEmptPetNum(charaindex)这两个函数,下面我就来讲解下这个函数以及用法。代码如下:function checkEmptItemNum(charaindex)--初始化空道具栏数量的变量EmptyItemNum = ...

石器ABLUA陪练BUG

 这个陪练BUG目前为止是在我以前的石器时代旧代码里遇到过,会出现这样一个有趣的BUG。当人物召唤出一个没有骑宠和战宠的陪练假人时,不知道什么缘故,会让召唤出来的陪练假人宠物栏第一个位置包含有人物索引0(正常情况下应该为-1)。这样就导致当解散陪练假人的时候,会删除人物索引为0,也就是第一个登陆服务器人的索引。从而造成回档或者人物数据消失。一直没有发现问题所在,测试过其他的代码都是正常...

石器时代服务端源代码里增加自动踢出1001卡号功能

 在任何石器时代的服务器里或多或少都会出现卡1001或者卡在游戏上的情况,往往卡住了就得使用GM命令进行1001踢出命令,实在太麻烦了,加上在lua里没有接口,还是果断在代码里增加这个功能。如果想要方便的话,完全可以直接加个接口后在NetLoopFunction()函数下增加该功能。作者神奇石器在这里讲述的代码:1、打开net.c这个文件2、搜索下列字符//SyuADD定时读取A...