石器技术教程

石器私服手游代码中的画图和画文字接口

 这几天看了下175石器时代手游客户端的LUA后,发现sa和sp库的StockDispBuffer和StockFontBuffer比传统的接口多出两个参数 第一个参数是要执行的函数名,第二个参数是执行该函数的索引。只需要额外定义个函数再利用接口调用函数执行即可,就不需要win.getMouseLeftCrick(),win.getHitDispNo(),win.getHit...

石器时代1.82版石器时代修改光镜守护

在石器时代1.82版中石器时代里光镜守护都是三次效果,修改magic.txt可以达到改变次数的效果。但问题是我需平时战斗中三次效果,PK中只需要一次该怎么办?起因是在神奇石器时代1.82时,玩家会觉得加光镜守护后三次在PK中很乏味,打起来也很累,但平时挂机中三次又很有效果,于是修改服务端源码来实现,非常简单。打开battle_magic.c文件,找到intMAGIC_MagicDef_Battl...

石器时代服务端里gmsvjt预申请的内存最大约为2GB

在石器时代私服里gmsvjt预申请的内存最大约为2GB,当gmsvjt运行到一段时间后,内存会慢慢消耗,当达到70%以上的时候在gmsv下会提示警告!当超过90%以上时则需要注意了,再运行后会出现gmsvjt停止运行并断开。在服务端里有个GM命令是查看预申请的剩余内存,命令:[gmshowMem]目前市面上大部分的gmsvjt预申请内存在启动gmsvjt后剩余内存为约为35%,理论上在没有大量不...

在LINUX系统下安装Lua的扩展库LuaSocket

 在石器时代里让LUA脚本直接访问http并获取网页的内容,通过获取网页内容可以写出全自动获取各种比赛结果等的LUA。只是嫌麻烦懒得写,先把安装方法记录一下,百度一下,安装方法随处可见。一、下载、安装1.1下载    文件名:luasocket-2.0.2.tar.gz     ...

用ABLUA给石器增加货币

 石器里用LUA来写增加货币的GM命令非常方便,虽说老的GM命令里也有,但用LUA来写却可以增加各种货币,就不需要在服务端源码里添加了。代码如下:function addpoint(charaindex, data)--货币类型,对应pointname里的货币名称local type = other.getString(da...

石器sa_8001.exe的HOOK技术

 在很多反汇编里都会用到HOOK技术,在石器时代里,早期没有源码的情况下,大神们便利用HOOK技术对石器的登陆器sa_8001.exe进行HOOK来达到增加新功能和新外观,最具有代表性的就是32色下运行和分离补丁。对于石器的HOOK,通常是在sa_8001.exe加载一个DLL文件,这个DLL文件就是HOOK这个sa_8001.exe里的函数所用到的文件。 下面大致说下,其...

用LUA设置石器服务端CF文件的命令

在石器里修改配置文件一般是修改好setup.cf后再丢到服务器gmsv文件夹下后使用重读命令[gmreloadlua]这里使用ablua写的gm命令,来实现针对setup.cf中某一项进行修改代码如下:function config(charaindex, data)--这个服务端ablua里自带的接口,是针对setup.cf里的配置内容进行修改--data这个参...

石器LUA脚本NPC重叠事件讲解

今天给大家讲解的是石器时代里LUA中的重叠事件,顾名思义,就是当玩家和NPC碰触重叠了产生的事件。在重叠事件里,一般是用作于和NPC对战或者得到/丢失某个道具等。下面我将以两组LUA脚本代码讲述重叠事件的效果。代码一:--NPC重叠事件(NPC索引, 玩家索引)function Overlap(meindex, toindex)--怪物队列数组设置战斗的宠物...

石器服务端NPC循环事件Loop讲解

 在石器时代LUA以往的教学里,循环事件我都是利用了NetLoopFunction来讲解案例等,NetLoopFunction是针对全局来循环,咱们可以理解为整个石器时代游戏系统的循环,他不需要任何索引进行循环,但有个不便之处就是这个内置的循环是按照分钟来进行计算。也就是每分钟才执行一次,但有时候我们需要精确到秒的时候,比如咱们需要一个按秒倒计时的功能,这个NetLoopFunctio...

让石器的LUA支持中文变量名的第二方法

大部分石器时代的代码里都采用的LUA5.1,并不支持中文的变量,我们通过修改LUA代码可以实现中文变量名,在我的老端里早已修改成中文变量也把接口追加了中文名,中文是为了方便记忆(毕竟英文单词太长又是大小写就很难记的嘛,哈哈)很早之前已经讲过让LUA支持中文变量名的方法,这里把第一种重新说明下,下面会教大家第二种方法。修改代码如下:方法一:找到llex.c文件,打开后,大概在420-432行进行...